Программирование на языке Паскаль Оператор Цикла

Содержание

Слайд 2

Оператор:

переменная

:=

выражение

while

выражение

do

repeat

выражение

until

оператор

for

имя переменной

to

:=

оператор

do

Оператор присваивания

Цикл с
предусловием

Цикл с
постусловием

Цикл со
счетчиком

оператор

выражение

downto

выражение

Оператор: переменная := выражение while выражение do repeat выражение until оператор for

Слайд 3

Цикл со счетчиком

for <переменная> := <начальное значение> to
<конечное значение> do begin

Цикл со счетчиком for := to do begin {тело цикла} end; Увеличение
{тело цикла}
end;

Увеличение переменной на 1:

for <переменная> := <начальное значение> downto
<конечное значение> do begin
{тело цикла}
end;

Уменьшение переменной на 1:

Слайд 4

Цикл со счетчиком

Особенности:
переменная цикла может быть только целой (integer)
шаг изменения переменной цикла

Цикл со счетчиком Особенности: переменная цикла может быть только целой (integer) шаг
всегда равен 1 (to) или -1 (downto)
если в теле цикла только один оператор, слова begin и end можно не писать:
если конечное значение меньше начального, цикл (to) не выполняется ни разу (проверка условия в начале цикла, цикл с предусловием)

for i:=1 to 8 do
writeln('Привет');

Слайд 5

Цикл со счетчиком

Особенности:
в теле цикла не разрешается изменять переменную цикла (почему?)
при изменении

Цикл со счетчиком Особенности: в теле цикла не разрешается изменять переменную цикла
начального и конечного значения внутри цикла количество шагов не изменится:

n := 8;
for i:=1 to n do begin
writeln('Привет');
n := n + 1;
end;

нет зацикливания

Слайд 6

Цикл с переменной

Особенности:
после выполнения цикла во многих системах устанавливается первое значение переменной

Цикл с переменной Особенности: после выполнения цикла во многих системах устанавливается первое
цикла, при котором нарушено условие:

for i:=1 to 8 do
writeln('Привет');
writeln('i=', i);

for i:=8 downto 1 do
writeln('Привет');
writeln('i=', i);

i=9

i=0

НЕ ДОКУМЕНТИРОВАНО

Слайд 7

Сколько раз выполняется цикл?

a := 1;
for i:=1 to 3 do a :=

Сколько раз выполняется цикл? a := 1; for i:=1 to 3 do
a+1;

a = 4

a := 1;
for i:=3 to 1 do a := a+1;

a = 1

a := 1;
for i:=1 downto 3 do a := a+1;

a = 1

a := 1;
for i:=3 downto 1 do a := a+1;

a = 4

Слайд 8

Как изменить шаг?

Задача. Вывести на экран квадраты и кубы нечётных целых чисел

Как изменить шаг? Задача. Вывести на экран квадраты и кубы нечётных целых
от 1 до 9.
Особенность: переменная цикла должна увеличиваться на 2.
Проблема: в Паскале шаг может быть 1 или -1.
Решение:
...
for i:=1 to 9 do begin
if ??? then begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
end;
...

i mod 2 = 1

выполняется только для нечетных i

Слайд 9

Как изменить шаг? – II

Идея: Надо вывести всего 5 чисел, переменная k

Как изменить шаг? – II Идея: Надо вывести всего 5 чисел, переменная
изменяется от 1 до 5. Начальное значение i равно 1, с каждым шагом цикла i увеличивается на 2.
Решение:
...
???
for k:=1 to 5 do begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
???
end;
...

i := i + 2;

i := 1;

Слайд 10

Как изменить шаг? – III

Идея: Надо вывести всего 5 чисел, переменная k

Как изменить шаг? – III Идея: Надо вывести всего 5 чисел, переменная
изменяется от 1 до 5. Зная k, надо рассчитать i.
Решение:
...
for k:=1 to 5 do begin
???
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
...

i := 2*k – 1;

i = 2k-1

Слайд 11

Задания

"4": Ввести a и b и вывести квадраты и кубы чисел от

Задания "4": Ввести a и b и вывести квадраты и кубы чисел
a до b.
Пример:
Введите границы интервала:
4 6
4 16 64
5 25 125
6 36 216
"5": Вывести квадраты и кубы 10 чисел следующей последовательности: 1, 2, 4, 7, 11, 16, …
Пример:
1 1 1
2 4 8
4 16 64
...
46 2116 97336

Слайд 12

Программирование на языке Паскаль

Циклы с условием

Программирование на языке Паскаль Циклы с условием

Слайд 13

Цикл с неизвестным числом шагов

Пример: Отпилить полено от бревна. Сколько раз надо

Цикл с неизвестным числом шагов Пример: Отпилить полено от бревна. Сколько раз
сделать движения пилой?
Задача: Ввести целое число (<2000000) и определить число цифр в нем.
Идея решения: Отсекаем последовательно последнюю цифру, увеличиваем счетчик.
Проблема: Неизвестно, сколько шагов надо сделать.
Решение: Надо остановиться, когда n = 0, т.е. надо делать "пока n <> 0".

Слайд 14

Алгоритм

начало

count

конец

нет

да

n <> 0?

count := 0;

count := count + 1;
n := n

Алгоритм начало count конец нет да n 0? count := 0; count
div 10;

обнулить счетчик цифр

ввод n

выполнять "пока n <> 0"

Слайд 15

Программа

program qq;
var n, count: integer;
begin
writeln('Введите целое число');
read(n);
count := 0;

Программа program qq; var n, count: integer; begin writeln('Введите целое число'); read(n);
while n <> 0 do begin
count := count + 1;
n := n div 10;
end;
writeln('В числе ', n, ' нашли ',
count, ' цифр');
end.

, n1: integer;

n1 := n;

n1,

выполнять "пока n <> 0"

Слайд 16

Цикл с условием

while <условие> do begin
{тело цикла}
end;

Особенности:
можно использовать сложные

Цикл с условием while do begin {тело цикла} end; Особенности: можно использовать
условия:
если в теле цикла только один оператор, слова begin и end можно не писать:

while (a {тело цикла}
end;

while a < b do
a := a + 1;

Слайд 17

Цикл с условием

Особенности:
условие пересчитывается каждый раз при входе в цикл
если условие на

Цикл с условием Особенности: условие пересчитывается каждый раз при входе в цикл
входе в цикл ложно, цикл не выполняется ни разу
если условие никогда не станет ложным, программа зацикливается

a := 4; b := 6;
while a > b do
a := a – b;

a := 4; b := 6;
while a < b do
d := a + b;

Слайд 18

Сколько раз выполняется цикл?

a := 4; b := 6;
while a < b

Сколько раз выполняется цикл? a := 4; b := 6; while a
do a := a + 1;

2 раза
a = 6

a := 4; b := 6;
while a < b do a := a + b;

1 раз
a = 10

a := 4; b := 6;
while a > b do a := a + 1;

0 раз
a = 4

a := 4; b := 6;
while a < b do b := a - b;

1 раз
b = -2

a := 4; b := 6;
while a < b do a := a - 1;

зацикливание

Слайд 19

Замена for на while и наоборот

for i:=1 to 10 do begin
{тело

Замена for на while и наоборот for i:=1 to 10 do begin
цикла}
end;

i := 1;
while i <= 10 do begin
{тело цикла}
i := i + 1;
end;

for i:=a downto b do
begin
{тело цикла}
end;

i := a;
while i >= b do begin
{тело цикла}
i := i - 1;
end;

Замена while на for возможна только тогда, когда можно заранее рассчитать число шагов цикла.

Замена цикла for на while возможна всегда.

Слайд 20

Задания

"4": Ввести целое число и найти сумму его цифр.
Пример:
Введите целое число:
1234
Сумма

Задания "4": Ввести целое число и найти сумму его цифр. Пример: Введите
цифр числа 1234 равна 10.
"5": Ввести целое число и определить, верно ли, что в его записи есть две одинаковые цифры.
Пример:
Введите целое число: Введите целое число:
1234 1224
Нет. Да.

Слайд 21

Последовательности

Примеры:
1, 2, 3, 4, 5, …
1, 2, 4, 7, 11, 16, …
1,

Последовательности Примеры: 1, 2, 3, 4, 5, … 1, 2, 4, 7,
2, 4, 8, 16, 32, …

an = n

a1 = 1, an+1 = an+1

a1 = 1, an+1 = an + n

an = 2n-1

a1 = 1, an+1 = 2an

b1 = 1, bn+1 = bn+1

c1 = 2, cn+1 = 2cn

Слайд 22

Последовательности

Задача: найти сумму всех элементов последовательности,
которые по модулю больше 0,001:

Последовательности Задача: найти сумму всех элементов последовательности, которые по модулю больше 0,001:

Элемент последовательности (начиная с №2):

b := b+1;

c := 2*c;

z := -z;

Слайд 23

Алгоритм

начало

S

конец

нет

да

|a| > 0.001?

S := S + a;

S := 0; b := 1;

Алгоритм начало S конец нет да |a| > 0.001? S := S
c := 2; z := -1; a := 1;

начальные значения

a := z*b/c;
b := b + 1; c := 2*c; z := -z;

первый элемент

новый элемент

изменение

Слайд 24

Программа

program qq;
var b, c, z: integer;
S, a: real;
begin
S := 0;

Программа program qq; var b, c, z: integer; S, a: real; begin
z := -1;
b := 1; c := 2; a := 1;
while abs(a) > 0.001 do begin
S := S + a;
a := z * b / c;
z := - z;
b := b + 1;
c := c * 2;
end;
writeln('S =', S:10:3);
end.

переход к следующему слагаемому

начальные значения

увеличение суммы

расчет элемента последовательности

Слайд 25

Задания

"4": Найти сумму элементов последовательности с точностью 0,001:
Ответ:
S = 1.157
"5": Найти сумму

Задания "4": Найти сумму элементов последовательности с точностью 0,001: Ответ: S =
элементов последовательности с точностью 0,001:
Ответ:
S = 1.220

Слайд 26

Цикл с постусловием

Задача: Ввести целое положительное число (<2000000) и определить число цифр

Цикл с постусловием Задача: Ввести целое положительное число ( Проблема: Как не
в нем.
Проблема: Как не дать ввести отрицательное число или ноль?
Решение: Если вводится неверное число, вернуться назад к вводу данных (цикл!).
Особенность: Один раз тело цикла надо сделать в любом случае => проверку условия цикла надо делать в конце цикла (цикл с постусловием).

Цикл с постусловием – это цикл, в котором проверка условия выполняется в конце цикла.

Слайд 27

Цикл с постусловием: алгоритм

начало

конец

да

нет

n > 0?

тело цикла

условие ВЫХОДА

блок "типовой процесс"

ввод n

основной

Цикл с постусловием: алгоритм начало конец да нет n > 0? тело
алгоритм

Слайд 28

Программа

program qq;
var n: integer;
begin
repeat
writeln('Введите положительное число');
read(n);
until n >

Программа program qq; var n: integer; begin repeat writeln('Введите положительное число'); read(n);
0;
... { основной алгоритм }
end.

until n > 0;

условие ВЫХОДА

Особенности:
тело цикла всегда выполняется хотя бы один раз
после слова until ("до тех пор, пока не…") ставится условие ВЫХОДА из цикла

Имя файла: Программирование-на-языке-Паскаль-Оператор-Цикла.pptx
Количество просмотров: 154
Количество скачиваний: 0