Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы алгоритмизации и программирования на языке Паскаль

..pdf
Скачиваний:
11
Добавлен:
15.11.2022
Размер:
2.96 Mб
Скачать

Здесь после оператора 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.