
- •Лекция №9 Тема «Операторы цикла в Паскале»
- •9.1. Операторы циклов в Паскале
- •9.2. Цикл for
- •9.3. Цикл while
- •9.4. Цикл repeat
- •Тема «Операторы goto, break, continue и прекращения программы»
- •9.5. Оператор безусловного перехода goto
- •9.6. Операторы break и continue
- •9.7. Принудительное прекращение программы
- •Программа "Угадай число"
- •Возведение числа в степень
- •Вывод на экран таблицы ascii
- •Вычисление суммы ряда чисел
9.7. Принудительное прекращение программы
Обычно программа завершает свою работу по достижении последнего оператора (т.е. при выходе на оператор end с точкой). Если возникает необходимость прекратить выполнение программы где-либо внутри нее, то можно воспользоваться процедурой halt, которая вызывается как отдельный оператор. Эту процедуру можно вызвать, задав в круглых скобках параметр в виде целого неотрицательного числа от 0 до 255. Это значение возвращается в операционную систему в виде кода ошибки (ERRORLEVEL) и может быть проанализирована DOS в случае запуска данной программы из командного файла. Отсутствие параметра в процедуре halt соответствует значению параметра 0 (нормальное завершение программы).
Второй процедурой, с помощью которой можно прекратить выполнение программы, является процедура без параметров exit при ее размещении в исполнимой части программы (а не в теле подпрограммы). Чаще эта процедура применяется для выхода из подпрограммы без прекращения выполнения вызывающей программы.
Программа "Угадай число"
Задача:
Отгадать целое число, которое "загадал" компьютер в определенном диапазоне.
Описание переменных:
a – число, "загаданное" компьютером;
b – очередное число, вводимое пользователем.
Алгоритм решения задачи:
Программа генерирует псевдослучайное число, которое записывается в переменную a.
Пока число a не совпадет с числом b, пользователю будет предлагаться ввести очередное число. При этом, если b > a, то на экран будет выдаваться сообщение "Много". Иначе будет проверяться условие b < a. При его положительном значении появится сообщение "Мало", иначе сообщение "Угадал".
Не трудно понять, что если b не больше и не меньше a, то значит оно равно a. В таком случае логическое выражение при while вернет false, и цикл прервется.
Программа на языке Паскаль:
var
a,b: integer;
begin
randomize;
a := random(100);
while a <> b do begin
write('Введи число: ');
readln(b);
if b > a then
writeln('Много')
else
if b < a then
writeln('Мало')
else
writeln('Угадал');
end;
readln
end.
Примечания:
Угадать число всегда можно не более чем через 6-7 попыток, если делить каждый оставшийся диапазон пополам.
Возведение числа в степень
Алгоритм решения задачи:
Чтобы возвести число в степень, его надо умножить само на себя количество раз, равное показателю степени. Т.е. возведение числа n в степень d будет выглядеть так:
nd = n1 * n2 * n3 * … * nd, где индексы внизу просто указывают очередное по счету n.
Если d равно нулю, то, какое бы число не стояло в основании степени, результат всегда будет равен единице:
n0 = 1.
Если показатель степени отрицателен (d < 0), то результат определяется такой формулой:
nd = 1 / (n1 * n2 * n3 * … * nd).
В примере программы на языке Паскаль количество итераций (повторений) цикла while равно модулю показателю степени числа (переменная deg).
Если deg равно нулю, то цикл while не выполнится ни разу, т.к. начальное значение переменной i равно нулю, а 0 < 0 ложное утверждение. В результате переменная res будет содержать значение 1.
Если показатель степени был отрицательным числом, то нужно в последствие разделить единицу на значение переменной res.
Программа на языке Паскаль:
var
num, deg: integer;
res: real;
i: byte;
begin
write ('Число: '); readln (num);
write ('Степень: '); readln (deg);
res := 1;
i := 0;
while i < abs(deg) do begin
res := res * num;
i := i + 1
end;
if deg < 0 then
res := 1 / res;
writeln (res:10:5);
readln
end.