Реферат: Паскаль. Отладка программ
begin
x:=1;y:=1;
repeat
if(5*x-3*y)>1theny:=y+1;
if (5 * x - 3 * у) < 1 then х := х + 1 until(5*x-3*y)=1;
writeln('x= ',x, 'y=',y) end.
В результате на экране получим х=2у=3.
Пример. С помощью цикла repeat...until можно организовать процедуру ввода данных с защитой программы от завершения при ошибочном наборе. Если тип данных не соответствует инициализируемой при стандартном вводе переменной (например, требуется ввести целое число, а набрано дробное), то возникает ошибка в выполнении программы, и мы должны снова запускать программу, и, естественно, повторить набор. Чтобы защититься от последствий таких ошибок, можно использовать собственную процедуру ввода. Такая процедура должна отключить автоматическую проверку правильности ввода и проводить ее самостоятельно, причем при ошибке требовать повторного набора. Отключение проверки правильности ввода производится директивой компилятора {$!-} (Input/Output checking в окне настройки опций компилятора). После каждого действия по вводу-выводу специальная функция lOResult возвращает целое значение, соответствующее ошибкам ввода-вывода. Правильной работе ввода-вывода соответствует нулевое значение, возвращаемое этой функцией. Надежный ввод целого числа i выполняет фрагмент программы:
{$!-} {отключение проверки ввода-вывода} repeat
Write ('Введите i = '); {вывод на экран предложения для ввода}
ReadLn (i) {ввод целого числа}
until lOResult = 0; {lOResult — функция, равная 0, если нет ошибки} {$!+} {восстановление проверки ввода-вывода}
По крайней мере один раз вводится число; если при вводе была сделана ошибка, условие lOResult = 0 имеет значение false, и ввод будет повторяться до тех пор, пока он не будет сделан правильно.
Операторы Break и Continue
В последних версиях языка Borland Pascal введены два новых оператора, Break и Continue, применяемые внутри циклов. Они расширяют возможности использования циклов и улучшают структуру программ. В процессе выполнения тела цикла до его завершения могут возникнуть дополнительные условия, требующие завершения цикла. В этом случае цикл может быть прекращен оператором Break.
Пример. Игра с ЭВМ в кости. Условия игры. Компьютер выдает себе или Вам случайные числа от 1 до 6. Задача — набрать максимальную сумму очков. Набравший больше 21 очка проигрывает, в любой момент один из игроков может отказаться от набора очков (спасовать).
Program Bones;
Const MaxSum = 1; {максимальное число очков}
var SumYour, {сумма очков игрока}
SumComp, {сумма очков компьютера}
count: byte; {очередные выпавшие очки}
reply: string; {ответ на запрос ЭВМ}
begin
SumYour := 0;
SumComp:=12; {начальное количество очков}
Randomize; {установка датчика случайных чисел}
repeat {начало общего цикла, организующего игру}
write ('Бросить кость для Вас? (у/n)');
repeat {Начало цикла для ввода корректного ответа} readln(reply) {ввод ответа}