
- •Конспект лекций
- •Тема 1. Программные средства пк. Основы алгоритмизации задач.
- •Тема 2. Программирование на базовом процедурно-ориентированном алгоритмическом зыке. Классификация операторов алгоритмического языка. Оператор присваивания. Операторы управления. (2 часа)
- •Тема 3. Описание линейных и разветвляющихся структур алгоритмов. Программирование разветвляющихся структур.(1 часа)
- •Тема 4. Организация выполнения программ на пк. Структуры данных: массивы. Множества. Записи. (2 часа)
- •Тема 5. Организация алгоритмов циклической структуры. Алгоритмическое описание вложенных циклических структур. (1 часа)
- •Оператор цикла с параметром
- •Оператор цикла с постусловием
- •Примеры бесконечных циклов
- •Тема 6. Программирование ввода-вывода массивов. Строковые данные. Библиотека стандартных подпрограмм. (1 часа)
- •Тема 7. Подпрограммы, их классификация. (1 часа)
- •Параметры-значения
- •Тема 8. Алгоритмы поиска и сортировки. (1 часа)
- •Тема 9. Программирование в среде delphi. (1 часа)
- •Тема 10. Работа с файлами. Различные типы файлов.
- •Тема 11. Динамические структуры данных. Указатели. Работа с очередями и стеком. (2 часа)
- •Добавление в конец списка
- •Рекурсивная процедура добавления элемента в список
- •Включение в список
- •Рекурсивная процедура удаления элемента из списка
- •Тема 12. Машинная графика.Примеры программ с различной структурной организацией. (1 часа)
- •Литература
Тема 5. Организация алгоритмов циклической структуры. Алгоритмическое описание вложенных циклических структур. (1 часа)
План лекции 7:
Циклические структуры с заданным числом повторений.
Итерационные циклы.
Вложенные циклические структуры
Оператор цикла с параметром
Операторы цикла с параметром используются, когда число повторений цикла может быть определено перед его началом. Циклы с параметром позволяют задать автоматическое изменение значения некоторой переменной и использование этого значения в последовательных итерациях.
Оператора цикла определяет:
диапазон изменения значений управляющей переменной и, одновременно, число повторений оператора, содержащегося в теле цикла;
направление изменения значения переменной (возрастание или убывание);
собственно действия, выполняемые на каждой итерации (оператор тела цикла).
<оператор цикла с параметром>::=
for <переменная> := <диапазон> do <оператор>
<диапазон>::=
<выражение> <направление> <выражение>
<направление>::= to | downto
На использование управляющей переменной (параметра) налагаются следующие ограничения:
1. Управляющая переменная должна иметь дискретный тип (целый, символьный, булевский, перечислимый).
2. Начальные и конечные значения диапазона должны иметь тот же тип, что и параметр.
3. В теле цикла запрещается явное изменение значения управляющей переменной (например, оператором присваивания).
4. После завершения оператора значение параметра становится неопределенным.
Семантику данного оператора цикла можно представить следующим образом. Оператор
for V := Expr1 to Expr2 do Body;
эквивалентен оператору:
begin
Temp1:=Expr1;
Temp2:=Expr2;
if Temp1 <= Temp2 then
begin
V:=Temp1;
Body;
while V <> Temp2 do
begin
V:=succ(V);
Body
end
end
end
Примеры:
{y=x^n}
y:=1;
for i:=1 to n do y:=y*x;
{печать латинского алфавита с конца}
for c:='z' downto 'a' do write(c);
while <логическое выражение> do | заголовок цикла
<оператор> | тело цикла
Оператор цикла с предусловием.
Тело цикла повторяется, пока истинно предусловие.
Примеры:
{s=сумма целых чисел от 1 до n}
s:=0;i:=1;
while i<=n do
begin
s:=s+i;
i:=i+1
end
{x1=наибольший общий делитель x и y}
x1:=x;y1:=y;
while x1<>y1 do
if x1>y1 then x1:=x1-y1
else y1:=y1-x1;
{Для данного M>0 требуется найти наименьшее целое число k>=0, такое что 3^k > M}
y:=1;k:=0;
while y<=M do
begin
k:=k+1;
y:=y*3;
end;
Оператор цикла с постусловием
Число повторений заранее неизвестно, но известно условие, при выполнении которого цикл должен завершиться.
repeat {<оператор>} until <логическое выражение>
Цикл с постусловием всегда выполняется, по крайней мере, один раз!
Пример. Вычислить наименьшее n, для которого y=1+1/2+1/3+...+1/n 5.
y:=0;n:=0;
repeat
n:=n+1;
y:=y+1/n;
until y>=5;