SlideShare a Scribd company logo
ЗЛАТОУСТОВСКАЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА
І-ІІІ СТУПЕНЕЙ
Учитель информатики
Лесконог Елена Викторовна
Алгоритмы с повторениями.
Операторы цикла на языке
программирования.
Вложенные циклы.
При составлении программ часто возникают ситуации, когда
1. Заранее не известно количество повторений цикла;
2. Переменная – счетчик цикла должна изменяться с шагом
≠ 1.
В таких случаях используют логические циклы.
Логические циклы - это циклическое повторение блока
команд, пока выполняется (или не выполняется) некоторое
условие.
Логические циклы
Логические циклы
Цикл ПОКА
Начало
Ввод данных
Условие
Тело цикла
Начало
Ввод данных
Условие
Тело цикла
Цикл ДО
Истина
Истина
Ложь
Ложь
Цикл с предусловием / ПОКА /
While условие do
<оператор>;
Цикл с постусловием / ДО /
Repeat
<операторы>
Until условие;
Логические циклы
Сравнение циклов While и Repeat
В цикле While проверка условия выполнения цикла находится
в начале цикла, а в Repeat – в конце.
Цикл Repeat всегда выполняется хотя бы один раз, а цикл While
может не выполнятся ни разу.
В цикле While выход из цикла осуществляется, если условие
ложно, а в Repeat – если условие истинно.
Между словами Repeat и Until можно размещать несколько
операторов без Begin и End, а цикл While…do может содержать
только один оператор тела цикла; поэтому нужно использовать
Begin и End.
Пример
Найти все
двузначные числа,
кратные 7.
Составить блок-
схему;
Написать программу.
Начало
Конец
k:=14
K<=99
k:=k+7
Вывести k
Истина
Ложь
Program z_1;
Uses Crt;
Var k: integer;
Begin
Clrscr;
k:=14;
Результат программы
While k<=99 do
Begin
Writeln(k);
k:=k+7;
end;
readln;
end.
Пояснение
While k<=99 do
Begin
Writeln(k);
k:=k+7;
end;
readln;
end.
При использовании логических циклов
необходимо всегда заботиться о том,
чтобы переменная, использующаяся в
условии завершения цикла, каким-то
образом обязательно изменялась в теле
цикла. Это может быть команда
присваивания (как в данной программе)
или команда ввода.
Дополнение
При подключении Uses Crt необходимо использовать
функцию Clrscr.
Clrscr - очищает активное окно и устанавливает курсор в левый
верхний угол окна.
Program PRIM_2;
uses CRT;
Begin
WriteLn('1 строка');
WriteLn('2 строка');
WriteLn('3 строка');
ClrScr;
WriteLn('А куда они делись?=)');
End.
Пример использования ClrScr
Program PRIM_1;
Begin
WriteLn('1 строка');
WriteLn('2 строка');
WriteLn('3 строка');
End.
Вложенные циклы
Цикл называется вложенным, если он находится в теле
другого цикла. for i:=0 to n do
begin
for j:=0 to m do
begin
for k:=0 to w do
begin
end;
end;
end;
Внутренний цикл должен полностью находиться в теле внешнего цикла.
Цикл j
Цикл k
Цикл i
Пример
Сколько можно купить быков, коров и телят, если бык стоит
10 рублей, корова -5 рублей, теленок – 0,5 рубля и на 100
рублей надо купить 100 животных.
Решение
B – количество быков
K - количество коров
T- количество телят.
После этого можно записать
два уравнения:
10b+5k+0,5t=100 b+k+t=100,
Преобразуем их:
20b+10k+t=200 b+k+t=100
На 100 рублей можно купить:
•Не больше 10 быков, 0≤b≥10
•Не больше 20 коров, 0≤k≥20
•Не больше 200 телят, 0≤t≥200
Результат программы
Program z_2;
Uses Crt;
Var b, k, t:integer;
Begin
Clrscr;
for b:=0 to 10 do
for k:=0 to 20 do
for t:=0 to 200 do
if (20*b+10*k+t=200) and (b+k+t=100)
then
writeln(‘Быков ',b,' Коров ',k,' Телят ', t);
readln;
end.
Пояснение
Сколько раз будет проверяться условие в данной программе?
Значение b изменяется 11 раз – от 0 до 10;
k - 21, t - 201
Таким образом, условие будет проверяться 11*21*201 = 46431
раз.
Результат программы
Program z_3;
Uses Crt;
Var b, k, t:integer;
Begin
Clrscr;
for b:=0 to 10 do
for k:=0 to 20 do
begin
t:=100-(b+k);
if 20*b+10*k+t=200
then
writeln(‘Быков ',b,' Коров ',k,' Телят ', t);
end;
readln;
end.
Пояснение
11*21*201 = 46431
Если известно количество быков и коров, то количество телят
можно вычислить по формуле:
t:=100-(b+k);
Цикл по переменной t можно исключить.
 Количество повторений проверки условия становиться
11*21=231
Задача
В кассе есть монеты по 2, 5 и 10 копеек. Сколькими
способами можно выдать сдачу на некоторую сумму Sum?
Результат программы
Program z_3;
Uses Crt;
Var Sum, Xmax, Ymax, Zmax, x, y, z, p:integer;
Begin
Clrscr;
Writeln (‘Введите сумму: '); Readln (Sum); p:=0;
Xmax:=Sum div 2; Ymax:=Sum div 5; Zmax:=Sum div 10;
Writeln (' 2 5 10 Всего монет');
Writeln ('______________________');
for x:=0 to Xmax do
for y:=0 to Ymax do
for z:=0 to Zmax do
if 2*x+5*y+10*z=Sum
then
begin
writeln(x:3,y:3,z:3,x+y+z:8);
p:=p+1;
end;
If p=0 then writeln(‘Вариантов нет')
else writeln (‘Всего ', p,' Вариантов');
readln;
end.
Результат программы
Задача
Составьте программу, удваивающую значение целой
переменной а, если а>5.
Решение
Если а > 5, то значение а надо заменить на 2а. В противном
случае (а <= 5) никаких действий производить не нужно.
Решение
Результат программы
Program Pr2;
Var а : Integer;
Begin
WriteLn (‘Введите число’);
ReadLn (а);
If а >5 Then а := а*2;
WriteLn (‘а =', а);
End.
Задача
Составить программу, проверяющую правильность
пароля
Решение
Предположим, что пароль – это слово «груша». Программа
запрашивает у пользователя пароль, сравнивает его с нашим
паролем. Если пользователь ввел правильный пароль, то для
него доступ открыт, а если пароль не правильный, то доступ
закрыт.
Решение
Результат программы
Program Pr6;
Var parol :string;
Begin
WriteLn (‘Какой пароль?’);
ReadLn (parol);
If parol=‘груша’
then
writeLn (‘Доступ для Вас открыт’)
Else
writeLn (‘Доступ закрыт!!!’);
ReadLn;
End.
Задача
Написать программу, которая проверяет, делится ли на 3
целое число, введенное с клавиатуры.
Задача
Написать программу на расчёт:
Из трех данных чисел выбрать наибольшее.
Домашнее задание
Составить блок-схемы к задачам решенным на уроке.
Написать программу на расчет наименьшего числа:
Ввести три числа и найти наименьшее из них.
Пример:
Введите три числа:
54 89 133
Наименьшее число 54

More Related Content

What's hot

Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Mikhail Kurnosov
 
"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24
"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24
"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24
MoscowJS
 
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Alexey Paznikov
 
Базовые конструкции языка программирования
Базовые конструкции языка программированияБазовые конструкции языка программирования
Базовые конструкции языка программированияslbazhenova
 
C# 5.0. Взгляд в будущее
C# 5.0. Взгляд в будущееC# 5.0. Взгляд в будущее
C# 5.0. Взгляд в будущее
GetDev.NET
 
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Alexey Paznikov
 
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
Alexey Paznikov
 
разбор заданий на исполнители
разбор заданий на исполнителиразбор заданий на исполнители
разбор заданий на исполнителиЕлена Ключева
 
Сложные условия в паскале
Сложные условия в паскалеСложные условия в паскале
Сложные условия в паскале
Daria Romanova
 

What's hot (10)

Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
 
106170
106170106170
106170
 
"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24
"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24
"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24
 
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
 
Базовые конструкции языка программирования
Базовые конструкции языка программированияБазовые конструкции языка программирования
Базовые конструкции языка программирования
 
C# 5.0. Взгляд в будущее
C# 5.0. Взгляд в будущееC# 5.0. Взгляд в будущее
C# 5.0. Взгляд в будущее
 
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
 
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
 
разбор заданий на исполнители
разбор заданий на исполнителиразбор заданий на исполнители
разбор заданий на исполнители
 
Сложные условия в паскале
Сложные условия в паскалеСложные условия в паскале
Сложные условия в паскале
 

Similar to 10 класс алгоритмы с повторениями

Программирование циклов
Программирование цикловПрограммирование циклов
Программирование циклов
Rainbox
 
forFor
forForforFor
forFor
OlgaDask
 
цикл в блог
цикл в блогцикл в блог
цикл в блогisva69
 
Циклы
ЦиклыЦиклы
Циклы
slbazhenova
 
Анимация в PascalABC
Анимация в PascalABCАнимация в PascalABC
Анимация в PascalABC
ValiaKuba
 
Loop
LoopLoop
Алгоритмическая конструкция Повторение
Алгоритмическая конструкция ПовторениеАлгоритмическая конструкция Повторение
Алгоритмическая конструкция Повторение
Andrey Dolinin
 
циклы
циклыциклы
циклы
AndEdr
 
331 информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
331  информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с331  информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
331 информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
dfdkfjs
 
5
55
02 if for
02 if for02 if for
02 if for
pogromskaya
 
Теория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравненияТеория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравненияAlexandr Grigorenko
 
алгоритм циклический
алгоритм циклическийалгоритм циклический
алгоритм циклический
Khydosilova
 

Similar to 10 класс алгоритмы с повторениями (20)

Программирование циклов
Программирование цикловПрограммирование циклов
Программирование циклов
 
forFor
forForforFor
forFor
 
циклы1
циклы1циклы1
циклы1
 
циклы1
циклы1циклы1
циклы1
 
цикл в блог
цикл в блогцикл в блог
цикл в блог
 
Циклы
ЦиклыЦиклы
Циклы
 
циклы
циклыциклы
циклы
 
Анимация в PascalABC
Анимация в PascalABCАнимация в PascalABC
Анимация в PascalABC
 
циклы 1 урок
циклы 1 урокциклы 1 урок
циклы 1 урок
 
Loop
LoopLoop
Loop
 
Loop
LoopLoop
Loop
 
Алгоритмическая конструкция Повторение
Алгоритмическая конструкция ПовторениеАлгоритмическая конструкция Повторение
Алгоритмическая конструкция Повторение
 
циклы
циклыциклы
циклы
 
циклы. проект журнал
циклы. проект журналциклы. проект журнал
циклы. проект журнал
 
331 информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
331  информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с331  информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
331 информатика. 8кл. миняйлова, вербовиков и др-минск, 2010 -189с
 
5
55
5
 
02 if for
02 if for02 if for
02 if for
 
Теория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравненияТеория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравнения
 
алгоритм циклический
алгоритм циклическийалгоритм циклический
алгоритм циклический
 
105
105105
105
 

10 класс алгоритмы с повторениями

  • 1. ЗЛАТОУСТОВСКАЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА І-ІІІ СТУПЕНЕЙ Учитель информатики Лесконог Елена Викторовна Алгоритмы с повторениями. Операторы цикла на языке программирования. Вложенные циклы.
  • 2. При составлении программ часто возникают ситуации, когда 1. Заранее не известно количество повторений цикла; 2. Переменная – счетчик цикла должна изменяться с шагом ≠ 1. В таких случаях используют логические циклы. Логические циклы - это циклическое повторение блока команд, пока выполняется (или не выполняется) некоторое условие. Логические циклы
  • 3. Логические циклы Цикл ПОКА Начало Ввод данных Условие Тело цикла Начало Ввод данных Условие Тело цикла Цикл ДО Истина Истина Ложь Ложь
  • 4. Цикл с предусловием / ПОКА / While условие do <оператор>; Цикл с постусловием / ДО / Repeat <операторы> Until условие; Логические циклы
  • 5. Сравнение циклов While и Repeat В цикле While проверка условия выполнения цикла находится в начале цикла, а в Repeat – в конце. Цикл Repeat всегда выполняется хотя бы один раз, а цикл While может не выполнятся ни разу. В цикле While выход из цикла осуществляется, если условие ложно, а в Repeat – если условие истинно. Между словами Repeat и Until можно размещать несколько операторов без Begin и End, а цикл While…do может содержать только один оператор тела цикла; поэтому нужно использовать Begin и End.
  • 6. Пример Найти все двузначные числа, кратные 7. Составить блок- схему; Написать программу. Начало Конец k:=14 K<=99 k:=k+7 Вывести k Истина Ложь
  • 7. Program z_1; Uses Crt; Var k: integer; Begin Clrscr; k:=14; Результат программы While k<=99 do Begin Writeln(k); k:=k+7; end; readln; end.
  • 8. Пояснение While k<=99 do Begin Writeln(k); k:=k+7; end; readln; end. При использовании логических циклов необходимо всегда заботиться о том, чтобы переменная, использующаяся в условии завершения цикла, каким-то образом обязательно изменялась в теле цикла. Это может быть команда присваивания (как в данной программе) или команда ввода.
  • 9. Дополнение При подключении Uses Crt необходимо использовать функцию Clrscr. Clrscr - очищает активное окно и устанавливает курсор в левый верхний угол окна.
  • 10. Program PRIM_2; uses CRT; Begin WriteLn('1 строка'); WriteLn('2 строка'); WriteLn('3 строка'); ClrScr; WriteLn('А куда они делись?=)'); End. Пример использования ClrScr Program PRIM_1; Begin WriteLn('1 строка'); WriteLn('2 строка'); WriteLn('3 строка'); End.
  • 11. Вложенные циклы Цикл называется вложенным, если он находится в теле другого цикла. for i:=0 to n do begin for j:=0 to m do begin for k:=0 to w do begin end; end; end; Внутренний цикл должен полностью находиться в теле внешнего цикла. Цикл j Цикл k Цикл i
  • 12. Пример Сколько можно купить быков, коров и телят, если бык стоит 10 рублей, корова -5 рублей, теленок – 0,5 рубля и на 100 рублей надо купить 100 животных. Решение B – количество быков K - количество коров T- количество телят. После этого можно записать два уравнения: 10b+5k+0,5t=100 b+k+t=100, Преобразуем их: 20b+10k+t=200 b+k+t=100 На 100 рублей можно купить: •Не больше 10 быков, 0≤b≥10 •Не больше 20 коров, 0≤k≥20 •Не больше 200 телят, 0≤t≥200
  • 13. Результат программы Program z_2; Uses Crt; Var b, k, t:integer; Begin Clrscr; for b:=0 to 10 do for k:=0 to 20 do for t:=0 to 200 do if (20*b+10*k+t=200) and (b+k+t=100) then writeln(‘Быков ',b,' Коров ',k,' Телят ', t); readln; end.
  • 14. Пояснение Сколько раз будет проверяться условие в данной программе? Значение b изменяется 11 раз – от 0 до 10; k - 21, t - 201 Таким образом, условие будет проверяться 11*21*201 = 46431 раз.
  • 15. Результат программы Program z_3; Uses Crt; Var b, k, t:integer; Begin Clrscr; for b:=0 to 10 do for k:=0 to 20 do begin t:=100-(b+k); if 20*b+10*k+t=200 then writeln(‘Быков ',b,' Коров ',k,' Телят ', t); end; readln; end.
  • 16. Пояснение 11*21*201 = 46431 Если известно количество быков и коров, то количество телят можно вычислить по формуле: t:=100-(b+k); Цикл по переменной t можно исключить.  Количество повторений проверки условия становиться 11*21=231
  • 17. Задача В кассе есть монеты по 2, 5 и 10 копеек. Сколькими способами можно выдать сдачу на некоторую сумму Sum?
  • 18. Результат программы Program z_3; Uses Crt; Var Sum, Xmax, Ymax, Zmax, x, y, z, p:integer; Begin Clrscr; Writeln (‘Введите сумму: '); Readln (Sum); p:=0; Xmax:=Sum div 2; Ymax:=Sum div 5; Zmax:=Sum div 10; Writeln (' 2 5 10 Всего монет'); Writeln ('______________________');
  • 19. for x:=0 to Xmax do for y:=0 to Ymax do for z:=0 to Zmax do if 2*x+5*y+10*z=Sum then begin writeln(x:3,y:3,z:3,x+y+z:8); p:=p+1; end; If p=0 then writeln(‘Вариантов нет') else writeln (‘Всего ', p,' Вариантов'); readln; end. Результат программы
  • 20. Задача Составьте программу, удваивающую значение целой переменной а, если а>5.
  • 21. Решение Если а > 5, то значение а надо заменить на 2а. В противном случае (а <= 5) никаких действий производить не нужно. Решение
  • 22. Результат программы Program Pr2; Var а : Integer; Begin WriteLn (‘Введите число’); ReadLn (а); If а >5 Then а := а*2; WriteLn (‘а =', а); End.
  • 24. Решение Предположим, что пароль – это слово «груша». Программа запрашивает у пользователя пароль, сравнивает его с нашим паролем. Если пользователь ввел правильный пароль, то для него доступ открыт, а если пароль не правильный, то доступ закрыт. Решение
  • 25. Результат программы Program Pr6; Var parol :string; Begin WriteLn (‘Какой пароль?’); ReadLn (parol); If parol=‘груша’ then writeLn (‘Доступ для Вас открыт’) Else writeLn (‘Доступ закрыт!!!’); ReadLn; End.
  • 26. Задача Написать программу, которая проверяет, делится ли на 3 целое число, введенное с клавиатуры.
  • 27. Задача Написать программу на расчёт: Из трех данных чисел выбрать наибольшее.
  • 28. Домашнее задание Составить блок-схемы к задачам решенным на уроке. Написать программу на расчет наименьшего числа: Ввести три числа и найти наименьшее из них. Пример: Введите три числа: 54 89 133 Наименьшее число 54