Обработка потока данных. Цикл с параметром

Содержание

Слайд 2

Обработка потока данных

var x, sum: integer;
...
sum:= 0;
read(x); { ввести первое число }
while

Обработка потока данных var x, sum: integer; ... sum:= 0; read(x); {
x<>0 do begin
sum:= sum + x;
read(x); { ввести следующее }
end;
write('Сумма ', sum);

Слайд 3

Задачи

«A»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём.

Задачи «A»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается
Определить, сколько получено чисел, которые делятся на 3.
«B»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Определить, сколько получено двузначных чисел, которые заканчиваются на 3.
«C»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Найти максимальное из введённых чётных чисел.

Слайд 4

Цикл с параметром

program qq;
var i: integer;
begin
for i:=1 to 5 do
writeln('Привет');

Цикл с параметром program qq; var i: integer; begin for i:=1 to

end.

«Для всех i от 1 до 5
делай …»

for i:=1 to 5 do

Если в цикле более одного оператора:

for i:=1 to 5 do begin
write('Привет');
writeln(', Вася!');
end;

begin

end;

Слайд 5

Циклы

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

Циклы Задача. Вывести на экран квадраты и кубы целых чисел от 1
8 (от a до b).
Особенность: одинаковые действия выполняются 8 раз.

i := 1; { очередное число }
i2 := i*i; { его квадрат }
i3 := i2*i; { куб }
writeln(i:4, i2:4, i3:4);
i := 2;
...

Слайд 6

Алгоритм

начало

i, i2, i3

конец

нет

да

i <= 8?

i := 1;

i := i + 1;

i2 :=

Алгоритм начало i, i2, i3 конец нет да i i := 1;
i * i;
i3 := i2 * i;

задать начальное значение переменной цикла

проверить, все ли сделали

вычисляем квадрат и куб

вывод результата

перейти к следующему i

Слайд 7

Алгоритм (с блоком «цикл»)

начало

i, i2, i3

конец

i2 := i * i;
i3 := i2

Алгоритм (с блоком «цикл») начало i, i2, i3 конец i2 := i
* i;

i := 1,8

блок «цикл»

тело цикла

Слайд 8

Программа

program qq;
var i, i2, i3: integer;
begin
for i:=1 to 8 do begin
i2

Программа program qq; var i, i2, i3: integer; begin for i:=1 to
:= i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
end.

переменная
цикла

начальное значение

конечное значение

Слайд 9

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

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

Цикл с уменьшением переменной Задача. Вывести на экран квадраты и кубы целых
от 8 до 1 (в обратном порядке).
Особенность: переменная цикла должна уменьшаться.
Решение:

for i:=8 1 do begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;

downto

Слайд 10

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

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

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

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

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

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

Слайд 11

for i:=1 to 9 do begin
if ??? then begin
i2

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;

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

Задача. Вывести на экран квадраты и кубы нечётных целых чисел от 1 до 9.
Особенность: переменная цикла должна увеличиваться на 2.
Проблема: в Паскале шаг может быть 1 или -1.
Решение:

i mod 2 = 1

i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);

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

Слайд 12

Как изменить шаг? – 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;

Слайд 13

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

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

Как изменить шаг? – III Идея: Надо вывести всего 5 чисел, переменная
изменяется от 1 до 5. Зная k, надо рассчитать i.
Решение:

i = 2k-1

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;

Имя файла: Обработка-потока-данных.-Цикл-с-параметром.pptx
Количество просмотров: 200
Количество скачиваний: 84