Глава 2 Введение в язык программирования Pascal
____________________________________________________________________
program fun_4; {оператор цикла с параметром for...to} {$mode objfpc}{$H+}
uses
CRT, FileUtil; var
x, y: integer; begin
for x:=-10 to 10 do begin
if x > 0 then y:=sqr(x) + 1
else
if x= 0 then y:= 0
else y:=sqr(x)-1;
writeln('x= ', x, ' y= ', y); end;
writeln(UTF8ToConsole('Нажмите любую клавишу')); readkey;
end.
2.1.23.4. Второй вариант оператора цикла с параметром
Оператор цикла с параметром может быть записан и в таком виде:
for переменная:= выражение 1 downto выражение 2 do оператор;
В этом варианте параметр цикла (переменная) после каждого повторения не увеличивается, а уменьшается на 1. Значение выражения 1 больше или равно
(на практике всегда больше) значения выражения 2.
121
2.1 Основные элементы языка
____________________________________________________________________
Оператор цикла заканчивается как только параметр цикла станет меньше
выражения 2.
Пример:
program fun_5; {оператор цикла с параметром for...downto} {$mode objfpc}{$H+}
uses
CRT, FileUtil;
var
x, y: integer;
begin
for x:= 10 downto - 10 do begin
if x > 0 then
y:=sqr(x) + 1
else
if x = 0 then
y:= 0
else
y:= sqr(x) - 1;
writeln('x= ', x, ' y= ', y);
end;
writeln(UTF8ToConsole('Нажмите любую клавишу')); readkey;
end.
|
10 |
Пример: Вычислить S |
x, |
|
x 1 |
program summa_1; {Вариант 1 используется оператор цикла for}
{$mode objfpc}{$H+}
122
Глава 2 Введение в язык программирования Pascal
____________________________________________________________________
uses
CRT, FileUtil; var
x, s: integer; begin
s:= 0; // в этой переменной накапливается сумма for x:= 1 to 10 do
s:= s + x;
writeln('x= ', x, UTF8ToConsole(' сумма s= '), s); writeln(UTF8ToConsole('Нажмите любую клавишу')); readkey;
end.
program summa_2;{Вариант 2 используется оператор цикла while…do} {$mode objfpc}{$H+}
uses
CRT, FileUtil; var
x, s: integer; begin
s:= 0; // в этой переменной накапливается сумма x:= 1;
while x <= 10 do begin
s:= s + x; x:= x + 1;
end;
writeln('x= ', x, UTF8ToConsole(' сумма s= '), s); writeln(UTF8ToConsole('Нажмите любую клавишу')); readkey;
123
2.1 Основные элементы языка
____________________________________________________________________
end.
Как мы видим, при использовании оператора for запись цикла становится короче. Поэтому, если заранее точно известно число повторений цикла или его можно вычислить перед выполнением цикла, то предпочтительней использо-
вать цикл for.
2.1.24 Оператор выбора case
Для программирования разветвлений в алгоритме чаще всего используется условный оператор if…then или if…then…else. Однако если путей выбора много, то запись алгоритма с помощью условного оператора становится гро-
моздкой и труднообозримой. В таких случаях намного удобнее использовать оператор выбора case. Этот оператор имеет следующий синтаксис:
case <выражение> of
значение 1: оператор 1;
значение 2: оператор 2;
………………………………………
значение n: оператор n;
else
оператор;
end;
В этой конструкции операторы могут быть составными, <выражение>
должно быть порядкового типа, т.е. integer, char, boolean, перечислимого или интервального типа. Более подробно о типах данных мы поговорим в 3.2.
Тип <значение> должен совпадать с типом <выражение>, может быть одно или несколько, разделенных запятыми, а также может представлять собой не-
который диапазон значений. Вся конструкция должна завершаться ключевым словом end.
Ветвь else вместе с оператором может отсутствовать.
124
Глава 2 Введение в язык программирования Pascal
____________________________________________________________________
Оператор работает следующим образом:
1.вычисляется значение <выражения>.
2.выполняется оператор, метка которого <значение> совпадает со значе-
нием <выражение>.
3. Если ни одно<значение> не совпадает со значением <выражение>, вы-
полняется оператор после else.
Рассмотрим применение оператора выбора case на примере создания меню в консольных приложениях.
Пример.
program case_menu; |
|
{$mode objfpc}{$H+} |
|
uses |
|
CRT, FileUtil; |
|
var |
|
choose: integer; |
|
begin |
|
{Формирование меню} |
|
writeln(UTF8ToConsole('Выберите нужный режим работы |
:')); |
writeln(UTF8ToConsole('Создание файла |
1')); |
writeln(UTF8ToConsole('Вывод содержимого файла |
2')); |
writeln(UTF8ToConsole('Поиск записей по заданным полям |
3')); |
writeln(UTF8ToConsole('Добавление записей в файл |
4')); |
writeln(UTF8ToConsole('Удаление записей из файла |
5')); |
writeln(UTF8ToConsole('Корректировка записей в файле |
6')); |
writeln(UTF8ToConsole('Выход из программы |
7')); |
repeat |
|
125