2. Циклы .. это что?
Цикл - это многократно повторяющаяся
последовательность команд, которая для
удобства программиста структурируется и
выполняется по определенным правилам.
Как уже было сказано, запись фрагмента кода
программы в виде цикла никак не облегчает
задачу компилятору (и, соответственно,
компьютеру) и применяется программистами
исключительно из-за их лени.
Существует два основных типа: безусловный и
условный циклы. Условный, в свою очередь,
имеет подтипы.
3. Три основных цикла
Цикл повторения с параметром Цикл повторяется, пока параметр цикла
(безусловный) i не перейдет через свое конечное
значение m. Каждый раз к параметру
For i:=n To m Do begin цикла i добавляется 1 и происходит
тело цикла; проверка.
end; Цикл повторяется m-n+1 раз
Цикл "Пока" (условный) Пока выполняется условие,
выполняется тело цикла.
While(условие) do begin Чтобы цикл не был бесконечным,
тело цикла; переменная, входящая в условие,
end; должна изменяться в теле цикла
Тело цикла выполняется до тех пор,
Цикл "До" (условный)
пока не выполнится условие.
Repeat Чтобы цикл не был бесконечным,
тело цикла; переменная, входящая в условие,
Until(условие); должна изменяться в теле цикла
4. Иллюстрация к циклам
Представьте бочку для воды объемом 20 ведер. Вам
предлагают ее наполнить. Можно:
● Тупо принести и вылить 20 ведер воды
(цикл For). А вдруг бочка наполовину
заполнена? Что делать, воду утаптывать?
● Пойти вначале посмотреть, насколько
заполнена бочка и носить воду, пока она не станет
полной (цикл While)
● Но нас же не зря попросили бочку наполнить! По
пути берем ведро с водой, выливаем в бочку и
только потом смотрим, нужно ли пойти еще раз
(цикл Repeat-Until)
Что Вы выберете?
5. Цикл повторения с параметром
for i:=n to m do begin
команда 1; команда 2;
..
end;
Пример: запись в 20 строк Memo случайных чисел,
значения которых в диапазоне 1-12
for i:=0 to 19 do begin
a:=random(12)+1;
Memo1.Lines.Add(IntToStr(a));
end;
6. Цикл "Пока"
i:=n;
While(i<=m) do begin
команда1; команда2;
..
i+=1;
end
Команды 1 и 2 выполняются, пока i не
перейдет через m. За изменением i вынужден
следить программист.
Важно: разные способы записи счетчика:
k:=k+3; inc(k,3); k+=3;
7. Цикл "До"
i:=n;
repeat
команда1; команда2;
..
i+=1;
until (i=m);
Проверка в конце цикла, поэтому его тело
выполнится как минимум один раз. За
изменением i, как и договаривались, следит
программист. Это мой любимый цикл.
8. Проект "Журнал"
Создать проект с тремя
Memo, в одну из которых
можно вносить фамилии
учеников, а в две других
вносятся номера по
порядку и
сгенерированные
случайные оценки
от 1 до 12.
После заполнения оценками можно вычислить
среднюю оценку по всем ученикам.
9. Кнопка "Оценки"
var
mark, i:Integer;
begin
Memo2.Clear; Memo3.Clear;
for i:=0 to Memo1.Lines.Count-1 do begin
mark:=random(12)+1;
Memo2.Lines.Add(IntToStr(mark));
Memo3.Lines.Add(IntToStr(i+1));
end;
end;
10. Кнопка "Средняя"
var
i,mark,summa,max:integer;
srednee:real;
begin
summa:=0;
for i:=0 to Memo2.Lines.Count-1 do begin
mark:=StrToInt(Memo2.Lines[i]);
summa:=summa+mark;
end;
srednee:=summa/(Memo2.Lines.Count);
Edit1.Text:=FloatToStr(srednee);
end;
11. Событие OnCreate и прочее
begin
Randomize;
Memo3.ReadOnly:=true;
end;
Не забудьте сделать кнопки "Сброс" и
"Выход"
12. Задание
1. Создайте проект "журнал", добавив три колоки
оценок и создав 4 колонку, в которую будут
выводиться средние оценки по каждому
ученику
2. Создайте тест на 6 вопросов разных типов для
раздела информатики - программирование
a. По 2 каждого типа: один из многих, многие из
многих, точный ответ.
b. Вес каждого вопроса должен быть различен, но
общая оценка - 12 баллов
c. Вопросы для теста желательно иллюстрировать
рисунками.