
книги / Основы алгоритмизации и программирования на языке Паскаль
..pdfЗдесь после оператора GoTo будет выполняться опера тор с меткой 45. Оператор, следующий за GoTo, тоже дол жен быть отмечен меткой, иначе к этому участку програм мы не будет доступа.
Оператор GoTo полезно использовать для прекращения выполнения программы, когда встречаются функции Ln х
при х<=0, Vx при х<0 или 1/х при х=0. Например:
Label 100;
I f х<—0 then GoTo 100 else A:=A+Ln(x);
100: A:=A+Sqr(x);
Пример 4.4. Организовать диалог пользователя и ПК о продолжении (прекращении) счета.
Program Demolf; Label 55;
Var t, z: real; Priznak: char;
Begin
55: Writelnf*введите t=:’); Readln (t); z:=Sin(t);
Writeln (t:6:2, z:8:3); Write((Продолжить счет? (Y/N)’); Readln (Priznak);
I f (Priznak=’y ’) or (Priznak=’Y’) then GoTo 55; Writeln(‘Конец счета’);
End.
Контрольные вопросы и задания
1.Какие операции определены над переменными бу левского типа?
2.Каковы отличия оператора выбора Case от операто ра условия ip.
3.Оператор безусловного перехода GoTo, его назна чение и особенности применения.
4.Записать приведенные ниже высказывания в виде выражений отношения:
-значение А не принадлежит интервалу (0, 3);
-значение А принадлежит отрезку [-2, 0];
-значение А принадлежит одному из отрезков [-2, -1], [0,5];
-точка М с координатами (х, у) лежит на границе или
вне круга радиусом 2 с центром в начале координат.
Лекция 5
Организация циклических процессов
Если в программе возникает необходимость неодно кратно выполнить некоторую группу операторов, то ис пользуются операторы цикла (повтора). В Паскале суще ствует три вида операторов цикла:
1.Оператор цикла с предварительным условием (с предусловием) While.
2.Оператор цикла с последующим условием (с посту словием) Repeat.
3.Счетный оператор For.
Они используются для организации циклов различного типа. Выражение, управляющее повторениями, должно иметь булевский тип.
Циклический алгоритм - это алгоритм, в котором од на и та же последовательность действий (тело цикла) по вторяется неоднократно с различными значениями пере менной, называемой параметром цикла.
5.1. Оператор цикла с предварительным условием (с предусловием) While
Оператор While (пока) используется, когда заранее не известно количество повторов тела цикла. Его называют оператором цикла с предусловием, потому что проверка
условия выполнения тела цикла производится в самом начале оператора.
Формат оператора:
While <условие> do <оператор>;
где условие - булевское выражение, условие продолжения или окончания повторений; оператор - тело цикла, может быть как простым, так и составным оператором.
Работа оператора:
Перед каждым выполнением тела цикла вычисляется значение выражения <условие>.
Если <условие>=7Уие, то выполняется <оператор> и снова вычисляется значение выражения <условие>.
Если <условие>=/чг/.уе, то происходит выход из цикла, управление передается следующему за While оператору.
Пример 5.1. Вычислить сумму десяти вводимых с кла виатуры чисел.
Введем обозначения:
А - идентификатор вводимого числа; / - счетчик, иначе говоря, номер вводимого числа и од
новременно параметр цикла;
Sum —сумма вводимых чисел.
Составим блок-схему задачи:
Программа имеет вид
Program DemoWhile;
Var A, i, Sum: integer;
Begin
i:=l; {счетчик}
Sum:—0;
While (i<=10) do
Begin
Write(‘введи’, i:2,’-e число:’);
Readln (A);
Sum:=Sum+A;
/:= i+1;
End;
Writeln(‘Сумма= ’, Sum:5);
End.
Изменение переменной цикла i на единицу (т.е. /:= i+1) в языке можно записать и с помощью оператора inc(i).
Пример 5.2. Вычислить значения функции у = х2 - 4 в равноудаленных точках отрезка [-2, 5] (рис. 5.1).
Такая задача называется задачей табулирования функции на заданном отрезке [а, Ъ].
Равноудаленные точки х/ (/= 0,1,..,и) называются узла ми, а расстояние между ними - шагом табулирования h =
где п - количество разбивок.
| -A-j
ч/
Узлы
Рис. 5.1
Блок-схема для этого примера похожа на блок-схему примера 5.1, поэтому запишем только программу, исполь зуя оператор цикла While:
Program DemoTab;
Const n=10; |
{количество разбивок} |
Var a, b, x, y, h: real; |
|
Begin |
|
Readlnfa, b); |
{ввод отрезка табулирования} |
h:=(b-a)/n; |
{шаг табулирования } |
х:=а; |
|
—►While(x<=b) do |
|
Begin |
тело цикла |
y:=sqr(x)-4 ; |
Writeln (x:5:2, y:8:3); x:=x+h;
— End;
End.
5.2. Оператор цикла с последующим условием (с постусловием) Repeat
Оператор цикла с постусловием Repeat похож на опе ратор цикла с предусловием While, но условие вычисляется и проверяется после выполнения операторов тела цикла.
Формат оператора:
Repeat
<оператор 1>;
<оператор N> Until <условие>;
где условие - выражение булевского типа; Repeat, Until - зарезервированные слова (повторять до тех пор, пока не выполнится условие).
Работа оператора начинается с выполнения тела цикла. Затем вычисляется значение выражения <условие>, а далее возможны два варианта:
1. Если <условие> -False, то тело цикла выполняется еще раз, а затем снова вычисляется выражение <условие>.
2. Если <условие>=Тгие, то осуществляется выход из цикла. Особенности оператора Repeat:
-оператор выполняется, по крайней мере, один раз;
-в отличие от оператора с предусловием While выход из цикла с постусловием осуществляется при истинности выражения <условие>;
-число операторов в теле цикла произвольно, и роль операторных скобок выполняют зарезервированные слова
Repeat, Until.
Пример 5.3. Вычислить сумму четных чисел от 0 до
100, т.е. Sum= 2+4+6+.... |
+100. |
|
Введем обозначения: к - счетчик и одновременно па |
||
раметр цикла. |
|
|
Блок-схема: |
Программа имеет вид |
|
|
Program |
DemoRepeat; |
|
Var к, Sum: integer; |
|
|
Begin |
|
|
Sum:-0; |
|
|
k:=0; |
|
|
Repeat; |
|
|
Sum:=Sum+k; |
|
|
k:=k+2; |
|
|
Until |
(k>=102); |
|
Writeln(‘CyMMa=’, Sum:5); |
|
|
End. |
|
5.3. Счетный оператор For
Счетный оператор цикла For используется, когда зара нее известно количество повторений тела цикла.
Формат оператора:
For i: = in То ik Do <onepamop>;
где For...To ...Do - заголовок цикла; оператор - тело цик ла, простой или составной оператор; i - параметр цикла (всегда целого типа - integer); in, ik - начальное и конечное значения параметра цикла, могут быть константами, ариф метическими выражениями целочисленного типа (integer).
Оператор For обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цикла от начального (in) до конечного (ik).
Работа оператора:
Параметру цикла присваивается начальное значение (i:=in). Затем циклически повторяются следующие действия.
1.Если i > ik, то оператор For завершает свою работу
иуправление передается на следующий за For оператор.
2.Если / < ik, то выполняется тело цикла (<оператор>).
3.Параметр цикла получает приращение с шагом h=1, т.е. /:=/+1, далее происходит переход на п. 1 (на проверку продолжения или окончания цикла).
Пример 5.4. Вывести на экран таблицу перевода из градусов по шкале Цельсия (С) в градусы по Фаренгейту
(F) для значений от 10° до 30° с шагом Г Перевод осу ществляется по формуле F = 01,8 + 32.