
Вопрос 57
Цикл с предусловием
Оператор цикла с предусловием (или цикла-«до») имеет следующий синтаксис:
while условие do
begin
оператор_1;
оператор_2;
……….
оператор_n;
end;
На естественном языке оператор цикла с предусловием можно сформулировать следующим образом: «до тех пор, пока условие остается истинным, выполнять операторы тела цикла».
При практическом использовании данного типа цикла следует учитывать следующие особенности:
Число итераций цикла с предусловием неизвестно изначально и определяется в ходе работы программы.
До выполнения тела цикла условие проверяется как минимум один раз. Если условие изначально имеет значение false, тело цикла не выполнится ни разу.
Выражение условия может содержать (и, обычно, содержит) значение некоторой переменной. Изменять ее значение в теле цикла допускается. Более того, без подобного изменения вся конструкция цикла с предусловием теряет смысл. Например, если в качестве условия указано i>25, то при задании начального значения i:=100 и наличия в теле цикла оператора i : =i-1;, тело цикла выполнится ровно 76 раз.
Если условие всегда остается истинным (например, 1>0), то цикл будет выполняться бесконечно.
Если ошибочно поставить символ ; (точка с запятой) после зарезервированного слова do, то транслятор не выдаст ошибки, но результаты работы оператора цикла будут некорректны.
Пример:
Найти наибольший общий делитель (НОД) двух натуральных чисел A и B.
program evklid;
var
a,b:integer;
begin
write('Введите число A = '); readln(a);
write('Введите число B = '); readln(b);
while a<>b do
begin
if a>b then
a:=a-b
else
b:=b-a
end;
write('НОД = ',a)
end.
Цикл с постусловием
Оператор цикла с постусловием (или цикла-«пока») имеет следующий синтаксис:
repeat
оператор_1;
оператор_2;
……..
оператор_n;
until условие;
На естественном языке оператор цикла с постусловием можно сформулиро-
вать следующим образом: «выполнять тело цикла, пока условие ложно».
При практическом использовании данного типа цикла следует учитывать следующие особенности:
Число итераций цикла с постусловием неизвестно изначально и определяется в ходе работы программы.
Тело цикла выполнится как минимум один раз.
Если условие всегда имеет логическое значение false, например, l<0, цикл будет выполняться бесконечно.
Выражение условие может содержать (и обычно содержит) значение некоторой переменной. Изменять ее значение в теле цикла допускается.
Пример:
Вводить в переменную x числа, пока их сумма не будет больше 100.
Program p1;
Var s,x:Integer;
Begin
S:=0;
REPEAT
WRITE ('Введите x');
READLN (X);
S:=S+X;
UNTIL S>100;
WRITE ('S=',S);
End.
Вопрос 58
Константа — неизменяемая в процессе исполнения программы величина. Все константы должны быть указаны в разделе описаний после зарезервированного слова Const. В зависимости от того, указан ли тип константы явно или нет, все константы делятся на нетипизированные и типизированные.
Объявление нетипизированных констант имеет синтаксис имя_константы = значение;
Они характеризуются тем, что тип их данных не указывается явно, а автоматически определяется транслятором из указанного значения.
Объявление типизированных констант имеет синтаксис
имя константы : тип = значение;
Типизированные константы фактически являются переменными с статическим классом памяти. То есть такими, которые получают описанное для них значение только один раз в начале выполнения программы а при каждом новом входе в процедуру (функцию), где они объявлены заново не инициализируются и сохраняют свое значение, полученное к время предыдущего вызова процедуры (функции).
В качестве констант могут выступать целые, вещественные и шестнадцатеричные числа, логические значения, символы, текстовые строки и множества.
В зависимости от используемого транслятора различия между типизированными и нетипизированными константами могут быть более существенными. Типизированные константы могут изменять свои значения в ходе исполнения программы и даже могут быть использованы в левой части оператора присваивания, фактически представляя собой инициализированные переменные с начальным значением и типом. В PascalABC.NET изменять значения типизированных констант в программе нельзя.
В PascalABC.NET имеется ряд изначально определенных констант. Примерами могут служить константы
Pi=3.1415926535897 93 и Е=2.718281828459045