- •Тема 2.2. Основные понятия языка программирования высокого уровня Free Pascal
- •Системы программирования
- •Интегрированная среда разработки FreePascal
- •Введение в язык Паскаль Характеристика языка программирования Паскаль
- •Основные понятия технологии программирования
- •Алфавит языка Паскаль
- •Структура программы на Паскале
- •Типы данных
- •Стандартные типы данных
- •Структуры данных
- •Строковый тип
- •Структурированные переменные
- •Представление основных структур программирования на языке Паскаль Операции и выражения
- •Арифметические операции и выражения
- •Логические операции
- •Оператор присваивания
- •Составной оператор
- •Условный оператор
- •Процедура write
- •Процедура ввода
- •Оператор выбора
- •Операторы повторений
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с параметром
- •Метки и операторы перехода
- •Работа с массивами
- •Операции над строками
- •Функция Length
- •Функция Upcase
- •Функция Сopy
- •Функция Pos
- •Процедуры Insert и Delete
- •Процедура Str
- •Процедура val
- •Практические примеры работы со строковыми данными
- •Оператор присоединения with
- •Процедуры и функции Паскаля
- •Формальные и фактические параметры
- •Типизированные константы
- •Interface
- •Implementation
- •Interface
- •Interface
- •Implementation
- •Файловый тип данных Типизированные файлы
- •Текстовые файлы
Операторы повторений
В языке Паскаль имеются три различных оператора, с помощью которых можно запрограммировать повторяющиеся фрагменты программ. Операторы повторения (циклы) предусматривают выполнение некоторых операторов несколько раз. Если число повторений известно заранее (до начала повторений), то в такой ситуации лучше воспользоваться оператором цикла с параметром. В других случаях следует использовать операторы цикла с предусловием и постусловием.
Оператор цикла с предусловием
Структура оператора:
WHILE <условие> DO <оператор>.
WHILE, DO – зарезервированные слова (пока выполняется условие, делать);
<условие> – выражение логического типа;
<оператор> – произвольный оператор.
Если выражение <условие> имеет значение true, то выполняется <оператор>, после чего вычисление выражения <условие> и его проверка повторяются. Если <условие> имеет значение false, оператор while прекращает свою работу.
Если в цикле необходимо выполнить несколько операторов, то используется составной оператор.
Задача . Пусть даны числа a, b (a >1) . Получить все члены бесконечной последовательности a, a2, a3, ... меньшие числа b (рис. 3).

Рис. 3. Пример блок-схемы алгоритма
program task7;
var a, b, c : real;
begin
readln(a, b);
c := a;
while c < b do
begin
writeln(c);
c := c*a
end
end.
При выполнении этой программы переменная споследовательно принимает значения a, a2, a3, ... Изменение значенияспроисходит до тех пор, пока оно не станет больше или равно значению b. Если a > b, то не будет выведено ни одного члена последовательности.
Задача. Вычислить сумму гармонического ряда h = 1 + 1/2 + 1/3 + ... + 1/n.
Суммирование начинаем с n-ого члена. Первое слагаемое 1/n. В цикле n уменьшается на единицу: n = n – 1. Суммирование h = h + 1/n производится в цикле до тех пор, пока n >0 (рис. 5.3).

Рис. 4. Пример блок-схемы алгоритма
program task;
var n: integer; h: real;
begin
readln(n);
h := 0;
while n > 0 do
begin
h := h + 1/n; n := n – 1
end;
write(‘n = ‘,n,’ h = ‘,h)
end.
Оператор цикла с постусловием
Структура оператора:
REPEAT <тело цикла> UNTIL <условие>.
R
EPEAT,
UNTIL – зарезервированные слова (повторять
до тех пор пока не будет выполнено
условие);
<тело цикла> – произвольная последовательность операторов;
<условие> – выражение логического типа.
Тело цикла выполняется хотя бы один раз, после чего вычисляется выражение <условие>: если его значение есть false, операторы тела цикла повторяются, в противном случае оператор REPEAT ... UNTIL завершает работу.
Задача. Напишем программу для предыдущей задачи с использованием оператора цикла с постусловием (рис. 5).
Рис. 5.
program task;
var n: integer; h: real;
begin
readln(n);
h := 0;
repeat
h := h + 1/n; n := n – 1
until n = 0;
write(‘n = ‘,n,’ h = ‘,h)
end.
