Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Высокоуровневые методы информатики и программир...docx
Скачиваний:
25
Добавлен:
12.11.2019
Размер:
6.53 Mб
Скачать

Пример анализа односимвольного ответа пользователя:

Var Otvet : Char //объявление переменной с символом ответа пользователя

... Case Otvet Of //анализ возможных вариантов ответа пользователя

‘y’,’Y’,’д’,’Д’ : PrYes; //положительный ответ ‑ выполнение прогр. PrYes

‘n’,’N’,’н’,’Н’ : PrNo; //отрицательный ответ ‑ выполнение прогр. PrNo

Else ShowMessage(‘Ошибочный ответ!’); //запрещенный символ

1.4.8. Операторы цикла

Можно досрочно выйти из любого цикла, используя оператор Break, и досрочно перейти к следующему повторению цикла, используя про­це­ду­­ру Continue.

1.4.8.1. Счетный цикл For

For <счетчик>:=<начальное значение>{To|Downto}<конечное значение>

Do <оператор>;

<счетчик> ‑ числовая переменная, которая автоматически увеличивается (или уменьшается на единицу, если указано DOWNTO) после выполнения оператора с начального значения до конечного значения.

Допускается вложенность цикла.

Пример процедуры вывода простых чисел:

Procedure TForm1.Button1Click(Sender: TObject); //заголовок процедуры

Var i,j: integer; prostoe:Boolean; //объявление переменных

Begin // начало раздела операторов

For i:=3 to 100 Do // внешний цикл просмотра всех чисел от 3 до 100

Begin prostoe:=True; // начало тела внешнего цикла

For j:=2 to i‑1 Do //начало внутреннего цикла подбора делителей числа i

If i mod j=0 then Begin prostoe:=False; Break; End; //составное число i

If prostoe then Label1.Caption:=Label1.Caption+IntToStr(i)+','; // простое i

End //окончание внешнего цикла

End //окончание процедуры

1.4.8.2. Цикл Repeat ‑ Until

Repeat <операторы тела цикла> Until <условие типа пока не>;

После выполнения операторов тела цикла проверяется условие, и если оно истинно, то цикл заканчивается, иначе ‑ цикл повторяется.

Пример. Подсчитать сумму ряда 1+1/2+1/3+...1/n с точностью до 0.0001 (пока не 1/n<0.0001).

Procedure TForm1.Button1Click(Sender: TObject); //заголовок процедуры

Var i:integer; s:real; Const e=0.0001; //объявление переменных и константы

Begin s:=0; i:=0; Repeat i:=i+1; s:=s+1/i Until (1/i)<e; //цикл суммирования

Label1.caption:=FloatToStr(s) End; //вывод суммы и окончание процедуры

1.4.8.3. Цикл While

While <условие> Do <оператор>;

Если условие истинно, то выполняется оператор.

Пример. Найти минимальное слагаемое к единице, изменяющее ее (машинный эпсилон - погрешность в вычислениях).

Procedure TForm1.Button1Click(Sender: TObject); //заголовок процедуры

Var e: real; //объявление переменной

Begin e:=1;While e/2+1>1 do e:=e/2; //цикл определения погрешности

Label1.caption:=FloatToStr(e) end; //вывод погрешности в метку Label1

1.4.9. Оператор присоединения имени ‑ With

Оператор используется для сокращения записи при обращении к полям записей, к свойствам и методам объектов и имеет вид:

With <список имен записей или объектов через запятую> Do <оператор>;

Допускается вложенность операторов With.

Запись вида: With A Do ... With B Do ... With C ...

эквивалентна записи: With A, B, C Do ...

В операторе после Do можно не уточнять ссылки для полей, свойств и методов записей и объектов, соответственно, указанных после With.

Пример обращения к полям Fam и Gr записи Sotrudnik. Вместо операторов Sotrudnik.Fam:=’Иванов’; Sotrudnik.Gr:=1970; можно записать:

With Sotrudnik Do Begin Fam:=’Иванов’; Gr:=1970; End;