Программирование циклических алгоритмов. Начала программирования

Содержание

Слайд 2

Ключевые слова

while ( цикл-ПОКА)
repeat (цикл-ДО)
for (цикл с параметрами)

Ключевые слова while ( цикл-ПОКА) repeat (цикл-ДО) for (цикл с параметрами)

Слайд 3

Программирование циклов с заданным условием продолжения работы
Цикл с предусловием, «пока».

Общий вид оператора:
while

Программирование циклов с заданным условием продолжения работы Цикл с предусловием, «пока». Общий
<условие> do <оператор>
Здесь:
<условие> - логическое выражение; пока оно истинно, выполняется тело цикла;
<оператор> - простой или составной оператор, с помощью которого записано тело цикла.

Слайд 4

Цикл выполняется до тех пор, пока истинно условие

Криворотова Л.Н.
МОУ "Гимназия №5",

Цикл выполняется до тех пор, пока истинно условие Криворотова Л.Н. МОУ "Гимназия
г.Тырныауз

While (x<0) do x:=x+1;

While (i<100) do
begin
writeln(‘i=’,i);
i:=i+1;
end;

Если несколько операторов в теле цикла, то использовать BEGIN …. END

Слайд 5

Особенности цикла while: •  можно использовать сложные условия: while (a < b) and

Особенности цикла while: • можно использовать сложные условия: while (a b do
(b < c) do begin {тело цикла} end; •  если в теле цикла только один оператор, слова begin и end можно не писать: while a < b do a := a + 1; •  условие пересчитывается каждый раз при входе в цикл •  если условие на входе в цикл ложно, цикл не выполняется ни разу a := 4; b := 6; while a > b do a := a – b; •  если условие никогда не станет ложным, программа зацикливается a := 4; b := 6; while a < b do d := a + b;

Слайд 6

Алгоритм Евклида

Наибольший общий делитель двух натуральных чисел (НОД) – это самое большое

Алгоритм Евклида Наибольший общий делитель двух натуральных чисел (НОД) – это самое
натуральное число, на которое они делятся нацело.

НОД(12, 18) = 6

Дано: M, N
Найти: НОД(N,M)

Из большего числа вычесть меньшее до тех пор пока числа не будут равны.

Постановка задачи

Решение задачи

Криворотова Л.Н.
МОУ "Гимназия №5", г.Тырныауз

Слайд 7

Блок-схема

Program Evklid;
Var M, N: integer;
Begin
Writeln(‘Введите M и N’);
Readln(M, N);
While

Блок-схема Program Evklid; Var M, N: integer; Begin Writeln(‘Введите M и N’);
M > N do
begin
if M>N then M:=M-N
else N:=N-M
end;
Write(‘НОД=’, M);
Readln
End.

Криворотова Л.Н.
МОУ "Гимназия №5", г.Тырныауз

Слайд 8

Задание 1. Сколько раз выполняется цикл?
а)      a := 4; b :=

Задание 1. Сколько раз выполняется цикл? а) a := 4; b :=
6;
while a < b do a := a + 1;
б)      a := 4; b := 6;
while a < b do a := a + b;
в)      a := 4; b := 6;
while a > b do a := a + 1;
г)       a := 4; b := 6;
while a < b do b := a - b;
д)      a := 4; b := 6;
while a < b do a := a - 1;

Слайд 9

Программирование циклов с заданным условием окончания работы

Общий вид оператора:
repeat <оператор1; оператор2; …;

Программирование циклов с заданным условием окончания работы Общий вид оператора: repeat until
> until <условие>
Здесь:
<оператор1>; <оператор2>; … - операторы, образующие тело цикла;
<условие> - логическое выражение; если оно ложно, то выполняется тело цикла.

Слайд 10

Цикл с постусловием, цикл «до» Операторы REPEAT … UNTIL

Формат оператора:
REPEAT {повторять}
<Тело цикла>
UNTIL условие

Цикл с постусловием, цикл «до» Операторы REPEAT … UNTIL Формат оператора: REPEAT
; {до тех пор, пока не}
Цикл выполняется пока условие не станет истинным!

Криворотова Л.Н.
МОУ "Гимназия №5", г.Тырныауз

Слайд 11

Особенности цикла repeat:
•          можно использовать сложные условия
•          цикл выполняется хотя бы один

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

Криворотова Л.Н. МОУ "Гимназия №5", г.Тырныауз

Слайд 12

Криворотова Л.Н. МОУ "Гимназия №5", г.Тырныауз

Задача . Ввести натуральное число и определить,

Криворотова Л.Н. МОУ "Гимназия №5", г.Тырныауз Задача . Ввести натуральное число и
верно ли, что сумма его цифр равна 10.
program qq;
var n, a, s: integer;
Begin
read(n); s:=0;
repeat
a:= n mod 10;
s:=s+a;
n:=n div 10;
until n = 0;
if s=10 then writeln(‘верно‘);
end.

Слайд 13

Задание 2. Сколько раз выполняется цикл?
а)      a := 4; b := 6;

Задание 2. Сколько раз выполняется цикл? а) a := 4; b :=

repeat a := a + 1; until a > b;
б)      a := 4; b := 6;
repeat a := a + b; until a > b;
в)      a := 4; b := 6;
repeat a := a + b; until a < b;
г)       a := 4; b := 6;
repeat b := a - b; until a < b;
д)      a := 4; b := 6;
repeat a := a + 2; until a < b;

Слайд 14

Программирование циклов с заданным числом повторений (цикл со счетчиком)
Общий вид оператора:
for <параметр>:=<начальное_значение>
to

Программирование циклов с заданным числом повторений (цикл со счетчиком) Общий вид оператора:
<конечное_значение> do <оператор>
После каждого выполнения тела цикла происходит увеличение на единицу параметра цикла; условие выхода из цикла - превышение параметром конечного значения.

Слайд 15

Цикл с увеличением параметра

FOR I:= A TO B DO
<Тело цикла>;
I – параметр,

Цикл с увеличением параметра FOR I:= A TO B DO ; I
увеличивается на 1
A – начальное значение
B – конечное значение
Тело цикла – один оператор!!!
Или – скобки BEGIN … END;

Криворотова Л.Н.
МОУ "Гимназия №5", г.Тырныауз

Слайд 16

Цикл с уменьшением параметра

FOR I:=A DOWNTO B DO
<ТЕЛО ЦИКЛА> ;
выполняется

Цикл с уменьшением параметра FOR I:=A DOWNTO B DO ; выполняется аналогичным
аналогичным образом, но значение параметра уменьшается на 1.

Криворотова Л.Н.
МОУ "Гимназия №5", г.Тырныауз

Слайд 17

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

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

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

Слайд 18

Алгоритм

начало

i, i2, i3

конец

нет

да

i <= 8?

i := 1;

i := i + 1;

i2 :=

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

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

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

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

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

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

Слайд 19

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

начало

i, i2, i3

конец

i2 := i * i;
i3 := i2

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

i := 1,8

блок «цикл»

тело цикла

Слайд 20

Программа

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.

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

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

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

Слайд 21

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

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

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

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

downto

Слайд 22

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

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

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

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

Слайд 23

Количество итераций цикла определяется разностью между вторым и первым значением плюс единица.

a

Количество итераций цикла определяется разностью между вторым и первым значением плюс единица.
:= 1;
for i:=1 to 3 do a := 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

Слайд 24

Цикл с предусловием
while <условие> do begin
{тело цикла}
end;
Особенности цикла while:
•         

Цикл с предусловием while do begin {тело цикла} end; Особенности цикла while:
можно использовать сложные условия:
while (a < b) and (b < c) do begin
{тело цикла}
end;
•          если в теле цикла только один оператор, слова begin и end можно не писать:
while a < b do
a := a + 1;
•          условие пересчитывается каждый раз при входе в цикл
•          если условие на входе в цикл ложно, цикл не выполняется ни разу
•          если условие никогда не станет ложным, программа зацикливается

Слайд 25

Цикл с постусловием
repeat
{тело цикла}
until <условие>;
Особенности цикла repeat:
•          можно использовать сложные

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

Слайд 26

№7. Найти сумму всех положительных целых чисел, не превышающих данного натурального числа

№7. Найти сумму всех положительных целых чисел, не превышающих данного натурального числа
N.

Цикл с постусловием
Program Summa2;
Var S, N, a: integer;
Begin
Writeln(‘Введите N’);
Readln(N);
a:=1; S:=0;
Repeat
S:=S+a;
a:=a+1;
Until a>N
Write(‘сумма =’, S);
Readln
End.

Цикл с параметром
Program Summa3;
Var S, N, a: integer;
Begin
Writeln(‘Введите N’);
Readln(N);
S:=0;
For a:= 1 to N do
S:=S+a;
Write(‘сумма =’, S);
Readln
End.

Криворотова Л.Н.
МОУ "Гимназия №5", г.Тырныауз

Слайд 27

Задание 3. Определить результат выполнения фрагмента программы:

a: =1; b: =1;
While

Задание 3. Определить результат выполнения фрагмента программы: a: =1; b: =1; While
a <= 4 Do
begin
a: =a + 1;
b: = b + 5;
end;

б)

Слайд 28

Задача 2. Написать программу, выводящую на экран степени числа 2 (от 0

Задача 2. Написать программу, выводящую на экран степени числа 2 (от 0
до 10) в виде таблицы.

Program stepen2;
Var i, x: integer;
Begin
Writeln (‘Tabliza’);
Writeln (‘---------------------------’);
x :=1;
For i := 0 to 10 do
Begin
Writeln (‘2^’, i:2, ‘=‘, x:5);
x := x*2;
Writeln;
End;
Readln;
End.

Слайд 29

Вопросы:

Можно ли в теле цикла использовать тоже
цикл?

Такой цикл

Вопросы: Можно ли в теле цикла использовать тоже цикл? Такой цикл называется
называется вложенным.

Что должно появиться на экране в результате выполнения следующего фрагмента программы?

Какой цикл можно назвать внешним,
а какой – внутренним?

Слайд 30

Алгоритм Евклида

Пусть x и y одновременно не равные нулю
целые неотрицательные числа

Алгоритм Евклида Пусть x и y одновременно не равные нулю целые неотрицательные
и пусть x ≥ y.
Если y = 0, то НОД (x, y) = x, а если y ≠ 0,
то для чисел x, y, и r, где r – остаток от деления
x на y, выполняется равенство
НОД (x, y)= НОД(y, r).
Например, пусть x = 48, а y = 18.
НОД(48, 18) = НОД(18, 12) = НОД(12, 6) =
НОД(6, 0) = 6.

Алгоритм Евклида – это алгоритм нахождения наибольшего
общего делителя (НОД) двух целых неотрицательных чисел.

Слайд 31

Алгоритм Евклида изображен
блок-схемой «цикл с постусловием»
Запишите его на языке Turbo Pascal.

Program

Алгоритм Евклида изображен блок-схемой «цикл с постусловием» Запишите его на языке Turbo
NOD;
Var x, y : integer;
Begin
Write(‘vvod x, y’);
Readln (x, y);
Repeat
if x > y then x := x mod y
else y := y mod x
Until (x = 0) or (y = 0);
Writeln (‘NOD=‘, x + y);
Readln;
End.

Слайд 32

Решение задач

Получить таблицу температур по Цельсию от 0 до 100 градусов и

Решение задач Получить таблицу температур по Цельсию от 0 до 100 градусов
их эквивалентов по шкале Фаренгейта, используя для перевода формулу:
Решить задачу тремя способами, используя операторы:
WhileWhile (цикл с предусловием)While (цикл с предусловием)
RepeatRepeat (цикл с постусловием)
ForFor (цикл со счётчиком)

.



Слайд 33

While (цикл с предусловием)

While (цикл с предусловием)

Слайд 34

Repeat (цикл с постусловием)

Repeat (цикл с постусловием)

Слайд 35

For (цикл со счётчиком)

For (цикл со счётчиком)

Слайд 36

Различные варианты программирования циклического алгоритма

Для решения одной и той же задачи могут

Различные варианты программирования циклического алгоритма Для решения одной и той же задачи
быть созданы разные программы.

Организуем ввод целых чисел и подсчёт количества введённых положительных и отрицательных чисел. Ввод должен осуществляться до тех пор, пока не будет введён ноль.
В задаче в явном виде задано условие окончания работы.
Воспользуемся оператором repeat.

Слайд 37

program n_17;
var n, k1, k2: integer;
begin
k1:=0;
k2:=0;
repeat
write ('Введите

program n_17; var n, k1, k2: integer; begin k1:=0; k2:=0; repeat write
целое число>>');
readln (n);
if n>0 then k1:=k1+1;
if n<0 then k2:=k2+1;
until n=0;
writeln ('Введено:');
writeln ('положительных чисел – ', k1);
writeln ('отрицательных чисел – ', k2)
end.

Слайд 38

Ввод осуществляется до тех пор, пока не будет введён ноль.
Работа продолжается,

Ввод осуществляется до тех пор, пока не будет введён ноль. Работа продолжается,
пока n 0.
Воспользуемся оператором while:

program n_18;
var n, k1, k2: integer;
begin
k1:=0;
k2:=0;
while n<>0 do
begin
writeln ('Введите целое число>>');
read (n);
if n>0 then k1:=k1+1;
if n<0 then k2:=k2+1;
end;
writeln ('Введено:');
writeln ('положительных – ', k1);
writeln ('отрицательных – ', k2)
end.

Слайд 39

Самое главное

В языке Паскаль имеются три вида операторов цикла:
while цикл-ПОКА)
repeat (цикл-ДО)
for

Самое главное В языке Паскаль имеются три вида операторов цикла: while цикл-ПОКА)
(цикл с параметром).
Если число повторений тела цикла известно, то лучше воспользоваться оператором for; в остальных случаях используются операторы while и repeat.

Слайд 40

Вопросы и задания

Дана последовательность операторов:
a:=1;
b:=2;
while a+b<8 do
begin
a:=a+1;
b:=b+2;
end;
s:=a+b
Сколько раз будет повторен цикл и

Вопросы и задания Дана последовательность операторов: a:=1; b:=2; while a+b begin a:=a+1;
какими будут значения переменных a, b, s после исполнения этой последовательности операторов?

Требовалось написать программу вычисления факториала числа n (факториал числа n есть произведение всех целых чисел от 1до n).
Программист торопился и написал программу неправильно.
Ниже приведён фрагмент его программы, в котором содержится пять ошибок:
k:=1;
f:=0;
while k f:=f*k;
k:=k+1
Найдите ошибки. Допишите необходимые операторы.

Проанализируйте следующий цикл:
while ac:=a=b;
В чём его особенность?

Дана последовательность операторов:
a:=1;
b:=1;
repeat
a:=a+1;
b:=b*2;
until b>8;
s:=a+b
Сколько раз будет повторён цикл и какими будут значения переменных a, b, s после исполнения этой последовательности операторов?

Напишите программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введён ноль) и подсчёт суммы и среднего арифметического введённых положительных чисел.
Используйте оператор repeat.

Напишите программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введён ноль) и определение максимального (наибольшего) из введённых чисел.
Используйте оператор repeat.

Напишите программу вычисления наибольшего общего делителя двух целых чисел:
а) используйте оператор repeat;
б) используйте оператор while.

Сколько раз будет выполнен цикл?
а) for i:=0 to 15 do s:=s+1;
б) for i:=10 to 15 do s:=s+1;
в) for i:=-1 to 1 do s:=s+1;
г) for i:=10 to 10 do s:=s+1;
д) k:=5;
for i:=k-1 to k+1 do s:=s+1;

Напишите программу, которая 10 раз выводит на экран
ваши имя и фамилию.

Напишите программу, выводящую на экран изображение шахматной доски, где чёрные клетки изображаются звёздочками, а белые - пробелами. Рекомендуемый вид экрана после выполнения программы представлен ниже:
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *

Напишите программу, которая вычисляет сумму:
а) первых n натуральных чисел;
б) квадратов первых n натуральных чисел;
в) всех чётных чисел в диапазоне от 1 до n;
г) всех двузначных чисел.

Напишите программу, которая генерирует 10 случайных чисел в диапазоне от 1 до 20, выводит эти числа на экран и вычисляет их среднее арифметическое.

Напишите программу, которая выводит на экран таблицу степеней двойки (от нулевой до десятой).
Рекомендуемый вид экрана после выполнения программы представлен ниже:
Таблица степеней двойки:
0 1
1 2
2 4
3 8
4 16
5 32
6 64
7 128
8 256
9 512
10 1024

Напишите программу, которая выводит на экран таблицу умножения на n (n - целое число в диапазоне от 2 до 10, вводимое с клавиатуры).

Какой из трёх рассмотренных операторов цикла является, по вашему мнению, основным, т. е. таким, что им можно заменить два других?
Обоснуйте свою точку зрения.

Имя файла: Программирование-циклических-алгоритмов.-Начала-программирования.pptx
Количество просмотров: 43
Количество скачиваний: 0