- Главная
- Информатика
- Операторы циклов
Содержание
- 2. Алгоритм, в котором есть последовательность операций (группа инструкций), которая должна быть выполнена несколько раз, называется циклическим,
- 3. Мы приведем только метод обработки нажатия клавиши «Старт»: procedure TForm1.Button1Click(Sender: TObject); // Обработчик нажатия кнопки var
- 4. Оператор цикла For Этот оператор в общем случае имеет вид For пер.цикла:= нач.знач. кон.знач. Do оператор
- 5. Правила использования оператора For: 1. Если начальное значение переменной цикла больше конечного, то цикл не выполняется
- 6. Эта часть программы теперь будет выглядеть следующим образом: h:=(b-a)/10; // Расчет шага по x x:=a; //
- 7. Оператор цикла Repeat Он имеет вид Repeat тело цикла Until логическое выражение; Выполнение цикла будет повторяться
- 8. Давайте в предыдущем примере оформим внешний цикл по x с помощью оператора Repeat: h:=(b-a)/10; // Расчет
- 9. Оператор цикла While Он имеет вид While логическое выражение Do оператор1; Пока логическое выражение принимает значение
- 11. Скачать презентацию
Слайд 2Алгоритм, в котором есть последовательность операций (группа инструкций), которая должна быть выполнена несколько
Алгоритм, в котором есть последовательность операций (группа инструкций), которая должна быть выполнена несколько
Хотя циклы можно легко организовывать с помощью оператора if, в Delphi есть три специальных оператора для организации циклов. Но вначале рассмотрим, как можно организовать цикл с помощью оператора if, например для задачи из раздела 3.1.
Слайд 3Мы приведем только метод обработки нажатия клавиши «Старт»:
procedure TForm1.Button1Click(Sender: TObject);
// Обработчик
Мы приведем только метод обработки нажатия клавиши «Старт»:
procedure TForm1.Button1Click(Sender: TObject);
// Обработчик
var x,y,h:extended;n,i,j:integer;// Определение внутренних переменных
Label M1;
begin
a:=strtofloat(edit1.Text); // Перевод строк в вещественное значение
b:=strtofloat(edit2.Text);
n:=strtoint(edit3.Text); // Перевод строки в целое значение
j:=strtoint(edit4.Text);
h:=(b-a)/10; // Расчет шага по x
x:=a; // Подготовка цикла по x
M1:y:=0; // Подготовка цикла по i
i:=1;
M2:if i<>j then y:=y+sin(i*x)/(i-j); // Расчет суммы
i:=i+1; // Наращивание переменной цикла i
if i<=n then goto M2; // Проверка окончания цикла по i
// Вывод результатов
Memo1.lines.Add(’x=’+floattostr(x)+’ y=’+floattostr(y));
x:=x+h; // Наращивание переменной цикла по x
if x<=b then goto M1; // Проверка окончания цикла по x
end;
Как видно из этого примера, можно легко организовывать циклы с помощью оператора if, однако нам пришлось использовать две метки M1 и M2, что говорит о плохом стиле программирования.
Слайд 4Оператор цикла For
Этот оператор в общем случае имеет вид
For пер.цикла:= нач.знач.
Оператор цикла For
Этот оператор в общем случае имеет вид
For пер.цикла:= нач.знач.
Его следует понимать следующим образом. Для переменной цикла от начального значения до конечного значения выполнять оператор1. В фигурных скобках показаны два варианта наращивания переменной цикла: To – соответствует шагу увеличения 1, а Downto – шагу -1. Переменная цикла, начальное и конечное значения обязательно должны быть целыми величинами. Переменная цикла должна быть внутренней переменной подпрограммы.
Слайд 5Правила использования оператора For:
1. Если начальное значение переменной цикла больше конечного, то
Правила использования оператора For:
1. Если начальное значение переменной цикла больше конечного, то
2. Циклы можно вкладывать друг в друга, но не пересекать.
3. Можно передавать управление из цикла вовне его, но извне передать управление внутрь цикла нельзя.
4. Можно передать управление из цикла вовне его с последующим входом в этот же цикл.
5. Внутри цикла нельзя самим изменять значения переменной цикла.
6. После окончания цикла переменная цикла становится не определенной и ее значение уже нельзя использовать.
7. Если внутри цикла встречается оператор Break, то происходит принудительный выход из этого цикла.
8. Если внутри цикла встречается оператор Continue, то происходит переход к следующей итерации цикла. Рассмотрим предыдущий пример программы, только внутренний цикл оформим с помощь оператора For.
Слайд 6Эта часть программы теперь будет выглядеть следующим образом:
h:=(b-a)/10; // Расчет шага по
Эта часть программы теперь будет выглядеть следующим образом:
h:=(b-a)/10; // Расчет шага по
x:=a; // Подготовка цикла по x
M1:y:=0; // Подготовка цикла по i
For i:=1 to n Do if i<>j then y:=y+sin(i*x)/(i-j); // Расчет суммы
// Вывод результатов
Memo1.lines.Add(’x=’+floattostr(x)+’ y=’+floattostr(y));
x:=x+h; // Наращивание переменной цикла по x
if x<=b then goto M1; // Проверка окончания цикла по x
Как видим, число операторов программы уменьшилось на 3 и нет необходимости в метке M2.
Слайд 7Оператор цикла Repeat
Он имеет вид
Repeat тело цикла Until логическое выражение;
Выполнение
Оператор цикла Repeat
Он имеет вид
Repeat тело цикла Until логическое выражение;
Выполнение
Слайд 8Давайте в предыдущем примере оформим внешний цикл по x с помощью оператора Repeat:
Давайте в предыдущем примере оформим внешний цикл по x с помощью оператора Repeat:
h:=(b-a)/10; // Расчет шага по x
x:=a; // Подготовка цикла по x
Repeat
y:=0; // Подготовка цикла по i
For i:=1 to n Do if i<>j then y:=y+sin(i*x)/(i-j); // Расчет суммы
// Вывод результатов
Memo1.lines.Add(’x=’+floattostr(x)+’ y=’+floattostr(y));
x:=x+h; // Наращивание переменной цикла по x
Until x>b; // Проверка окончания цикла по x
Until x>b; // Проверка окончания цикла по x
Программа еще более упростилась и исчезла метка M1. В данном случае переменной цикла является x и она же входит в логическое выражение, определяющее условие выхода из цикла. В этом цикле переменная цикла может иметь любой тип в отличие от цикла For, где она должна иметь только целый тип.
Слайд 9Оператор цикла While
Он имеет вид
While логическое выражение Do оператор1;
Пока логическое
Оператор цикла While
Он имеет вид
While логическое выражение Do оператор1;
Пока логическое