Реферат: Турбо Паскаль 7.0

b =FALSE

c =TRUE

a =TRUE

b =TRUE

с =TRUE

Программа состоит из одного сложного оператора for a := false to true do, в который вложены последовательно еще два оператора for и оператор if. Часть then последнего содержит сложный оператор, состоящий из трех простых операторов, охваченных программными скобками begin и end.

Циклы с логическими условиями

Введенный в предыдущей главе оператор цикла for обеспечивает выполне­ние цикла заданное количество раз, однако часто циклические действия за­канчиваются по условию, то есть выполняются до достижения определен­ного результата. В Паскале есть два таких оператора цикла, отличающиеся тем, что в одном из них условие проверяется в начале цикла (while...do), а в другом — в конце цикла (repeat...until).

Оператор while.. do

Оператор цикла while (пока, в то время как) имеет вид:

While<логическое выражение> do<тело цикла>;

Цикл While обеспечивает выполнение тела цикла, следующего за сло­вом do до тех пор, пока условие имеет значение true (истина). В качестве те­ла цикла может использоваться простой или сложный оператор. Условие проверяется перед началом каждого выполнения тела цикла, поэтому, если до первого выполнения цикла условие имеет значение false (ложь), опера­тор не выполняется ни одного раза (рис. 5.2).

Пример. Необходимо преобразовать значение угла в градусах к стандарт­ному диапазону ±180° путем исключения полных оборотов окружности ±360°. Эта процедура может быть выполнена с помощью оператора цикла

While abs(Angle) > 180 do

if Angle > 0 then Angle := Angle — 360

else Angle := Angle + 360;

Оператор while в начале цикла проверяет, превышает ли угол по абсо­лютному значению 180 градусов. Если это не справедливо, тело цикла не вы­полняется. Если угол больше допустимого, начинается выполнение цикла.

Цикл состоит из оператора if. Допустим, угол равен —700. Тогда условие An­gle > 0 в операторе if имеет значение false, при этом выполняется часть else оператора if, и угол получит значение —340. Снова происходит проверка условия выполнения цикла, и цикл выполняется второй раз, после чего угол равен 20. При третьей проверке условия выполнения цикла он заканчивает­ся, поскольку условие его выполнения Abs(20)>180 приняло значение false.

Оператор repeat... until...

Оператор цикла repeat... until... (повторять до тех пор, пока) имеет вид Repeat <тело цикла> until -<логическое выражение>;

Принципиальное отличие оператора repeat...until от оператора while...do в том, что проверка условия производится не перед началом выполнения оператора, а в его конце, когда решается вопрос, повторить ли еще раз дей­ствия. Поэтому тело этого цикла всегда выполняется по крайней мере один раз (рис. 5.3). Это важное отличие: приведенный для цикла while... do при­мер реализовать с оператором цикла repeat... until невозможно без дополни­тельных проверок и усложнений.

Второе отличие от оператора while...do — в логике завершения цикла. Цикл оператора repeat...until выполняется до тех пор, пока не станет истинным логическое выражение, следующее за словом until. Таким образом, использование логического выражения здесь имеет противоположный опе­ратору while...do смысл. Здесь при истинности логического выражения (условия) цикл прекращается, а у оператора while...do при истинности ло­гического выражения цикл продолжается.

Третье отличие в том, что оператор repeat...until имеет две части:

начальную и завершающую, которые охватывают группу операторов, со­ставляющих тело цикла. Оператор while...do не имеет завершающей части и требует для организации тела цикла из нескольких операторов програм­мных скобок begin-end. Для оператора repeat...until таких скобок не требу­ется — их роль выполняют составные части оператора.

Пример. Найти методом подбора целочисленное решение Диофантова уравнения 5x-3y=1. В качестве первой пробы берутся единичные значения. Далее, если 5x-3y>1, то у увеличивается на 1, если 5x-3y<1, то на 1 увеличивается х.

Program Diophant;

var х, у: byte;

begin

x:=1;y:=1;

repeat

if(5*x-3*y)>1theny:=y+1;

К-во Просмотров: 337
Бесплатно скачать Реферат: Турбо Паскаль 7.0