Операторы repeat и while являются взаимозаменяемыми: repeat S until В эквивалентен S; while not В do S; a while В do S равносилен if В then repeat S until not B.
При работе с клавиатурой часто бывают полезными фрагменты программ, отвечающие за задержку выполнения программы до нажатия любой клавиши клавиатуры и за очистку буфера ввода. В обоих случаях используется функция KeyPressed из модуля CRT. Данная функция принимает значение true, если в буфере ввода имеется какой-либо символ (т.е. была нажата клавиша клавиатуры) и false в противном случае.
Фрагмент программы, отвечающий за очистку буфера ввода имеет вид:
while KeyPressed do
С := ReadKey;,
а фрагмент "ждать нажатой клавиши" выглядит как:
repeat
until
KeyPressed;.
При использовании операторов цикла repeat и while нужно достаточно осторожно использовать в выражении В вещественные переменные. Это связано с тем, что вещественные числа в ПК представляются неточно, и, кроме того, арифметические операции над вещественными числами выполняются как над приближенными, т.е. результат округляется по правилу, принятому в ПК.
Поэтому такие операторы, как
while Y<> Z do <вычисление Z > <вычисление Z>;
repeat <вычисление Z > <вычисление Z > until Y = Z;
где Y, Z: real, Y- определено заранее, скорее всего приведут к
"зацикливанию" программы.