- •Тема 2.2. Основные понятия языка программирования высокого уровня Free Pascal
- •Системы программирования
- •Интегрированная среда разработки FreePascal
- •Введение в язык Паскаль Характеристика языка программирования Паскаль
- •Основные понятия технологии программирования
- •Алфавит языка Паскаль
- •Структура программы на Паскале
- •Типы данных
- •Стандартные типы данных
- •Структуры данных
- •Строковый тип
- •Структурированные переменные
- •Представление основных структур программирования на языке Паскаль Операции и выражения
- •Арифметические операции и выражения
- •Логические операции
- •Оператор присваивания
- •Составной оператор
- •Условный оператор
- •Процедура write
- •Процедура ввода
- •Оператор выбора
- •Операторы повторений
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с параметром
- •Метки и операторы перехода
- •Работа с массивами
- •Операции над строками
- •Функция Length
- •Функция Upcase
- •Функция Сopy
- •Функция Pos
- •Процедуры Insert и Delete
- •Процедура Str
- •Процедура val
- •Практические примеры работы со строковыми данными
- •Оператор присоединения with
- •Процедуры и функции Паскаля
- •Формальные и фактические параметры
- •Типизированные константы
- •Interface
- •Implementation
- •Interface
- •Interface
- •Implementation
- •Файловый тип данных Типизированные файлы
- •Текстовые файлы
Оператор цикла с параметром
Структура оператора:
FOR <парам. цикла> := <нач. знач.> TO <кон. знач.> DO <оператор>
FOR, TO, DO – зарезервированные слова (для, до, выполнить).
<парам. цикла> – параметр цикла (переменная типа integer);
<нач. знач.>– начальное значение (выражение типа integer);
<кон. знач.>– конечное значение (выражение типа integer);
<оператор> – произвольный оператор.
Предполагается, что в выражения <нач. знач.> и <кон. знач.> не входит параметр цикла.
Например,
for i:= 1 to n do s := s + i* i* i
Читается это так: для i от 1 до n выполнить s := s + i3.
При выполнении оператора FOR сначала вычисляется выражение, задающее значение параметру цикла, затем это значение присваивается параметру цикла.
После этого следует:
1) проверка условия <парам. цикла> <= <конеч. знач.>;
если условие выполняется, то перейти к пункту 2, иначе к пункту 4;
2) выполнение оператора <оператор>;
3) наращивание переменной <парам. цикла> на единицу и переход к пункту 1;
4) завершение работы.
Задача. Написать программу расчета среднего роста курсантов в группе.
Схема алгоритма приведена на рис. 1.13, 1.14. Запишем программу.
program task; {Расчет среднего роста курсантов в группе.}
var n,i: integer; s,r: real;
begin
readln(n);
s := 0;
for i :=1 to n do
begin
readln(r);
s := s+r
end;
s := s/n;
write(‘Средний рост =‘,s)
end.
В этой программе: n – количество курсантов в группе; i – номер текущего курсанта; r – рост текущего курсанта; s – переменная, в которой накапливается сумма, а затем в эту же переменную записывается средний рост курсантов, рассчитанный как среднее арифметическое. Эти переменные описаны в программе: i и n как целые, а s и r как вещественные. В программе используется оператор цикла с параметром, так как заранее известно количество повторений. В цикле должны выполняться два оператора, поэтому следует использовать составной оператор begin – end.
Шаг наращивания параметра цикла строго постоянен и равен (+1). Существует другая форма оператора FOR, где шаг (–1).
FOR <парам. цикла> := <нач. знач.>DOWNTO <кон. знач.> DO <оператор>
Задача. Вычислить сумму гармонического ряда h = 1 + 1/2 + 1/3 + ... + 1/n.
Решение этой задачи уже было рассмотрено с использованием операторов while и repeat. Разработаем программу, используя оператор FOR.
Для изображения схемы алгоритма воспользуемся блоком “модификация” (рис. 6).

Рис. 6. Пример блок-схемы алгоритма
Программа.
program task;
var i,n: integer; h: real;
begin
readln(n);
h := 0
for i := n downto 1 do
h := h + 1/i;
writeln(h)
end.
В этой программе в цикле выполняется лишь один оператор, в связи с этим составной оператор опущен.
