СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

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

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Алгоритмы с повторением

Категория: Информатика

Нажмите, чтобы узнать подробности

Алгоритмы с повторением 

Презентация содержит основные понятия, примеры и задачи для самостоятельного решения.

Просмотр содержимого документа
«Алгоритмы с повторением»

Златоустовская общеобразовательная школа І-ІІІ ступеней Алгоритмы с повторениями. Операторы цикла на языке программирования. Вложенные циклы. Учитель информатики Лесконог Елена Викторовна

Златоустовская общеобразовательная школа

І-ІІІ ступеней

Алгоритмы с повторениями. Операторы цикла на языке программирования.

Вложенные циклы.

Учитель информатики

Лесконог Елена Викторовна

Логические циклы При составлении программ часто возникают ситуации, когда 1. Заранее не известно количество повторений цикла; 2. Переменная – счетчик цикла должна изменяться с шагом ≠ 1. В таких случаях используют логические циклы. Логические циклы - это циклическое повторение блока команд, пока выполняется (или не выполняется) некоторое условие.

Логические циклы

При составлении программ часто возникают ситуации, когда

1. Заранее не известно количество повторений цикла;

2. Переменная – счетчик цикла должна изменяться с шагом

≠ 1.

В таких случаях используют логические циклы.

Логические циклы - это циклическое повторение блока

команд, пока выполняется (или не выполняется) некоторое

условие.

Логические циклы Цикл ДО Цикл ПОКА Начало Начало Ввод данных Ввод данных Условие Тело цикла Истина Ложь Условие Тело цикла Истина Ложь

Логические циклы

Цикл ДО

Цикл ПОКА

Начало

Начало

Ввод данных

Ввод данных

Условие

Тело цикла

Истина

Ложь

Условие

Тело цикла

Истина

Ложь

Логические циклы Цикл с предусловием / ПОКА / While условие do ; Цикл с постусловием / ДО / Repeat  Until условие;

Логические циклы

Цикл с предусловием / ПОКА /

While условие do

;

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

Repeat

Until условие;

Сравнение циклов While и Repeat  В цикле While проверка условия выполнения цикла находится в начале цикла, а в Repeat – в конце. Цикл Repeat всегда выполняется хотя бы один раз, а цикл While может не выполнятся ни разу. В цикле While выход из цикла осуществляется, если условие ложно, а в Repeat – если условие истинно. Между словами Repeat и Until можно размещать несколько операторов без Begin и End, а цикл While…do может содержать только один оператор тела цикла; поэтому нужно использовать Begin и End.

Сравнение циклов While и Repeat

В цикле While проверка условия выполнения цикла находится

в начале цикла, а в Repeat – в конце.

Цикл Repeat всегда выполняется хотя бы один раз, а цикл While

может не выполнятся ни разу.

В цикле While выход из цикла осуществляется, если условие

ложно, а в Repeat – если условие истинно.

Между словами Repeat и Until можно размещать несколько

операторов без Begin и End, а цикл While…do может содержать

только один оператор тела цикла; поэтому нужно использовать

Begin и End.

Пример  Начало Найти все двузначные числа, кратные 7. Составить блок- схему; Написать программу. k:=14 KЛожь Истина Вывести k k:=k+7 Конец

Пример

Начало

Найти все

двузначные числа,

кратные 7.

Составить блок-

схему;

Написать программу.

k:=14

K

Ложь

Истина

Вывести k

k:=k+7

Конец

Результат программы  Program z_1; While kUses Crt;  Begin Var k: integer;  Writeln(k); Begin  k:=k+7;  end; Clrscr; k:=14; readln; end.

Результат программы

Program z_1;

While k

Uses Crt;

Begin

Var k: integer;

Writeln(k);

Begin

k:=k+7;

end;

Clrscr;

k:=14;

readln;

end.

Пояснение  При использовании логических циклов необходимо всегда заботиться о том, чтобы переменная, использующаяся в условии завершения цикла, каким-то образом обязательно изменялась в теле цикла. Это может быть команда присваивания (как в данной программе) или команда ввода. While k Begin  Writeln(k);  k:=k+7;  end; readln; end.

Пояснение

При использовании логических циклов необходимо всегда заботиться о том, чтобы переменная, использующаяся в условии завершения цикла, каким-то образом обязательно изменялась в теле цикла. Это может быть команда присваивания (как в данной программе) или команда ввода.

While k

Begin

Writeln(k);

k:=k+7;

end;

readln;

end.

Дополнение  При подключении Uses Crt необходимо использовать функцию Clrscr. Clrscr - очищает активное окно и устанавливает курсор в левый верхний угол окна.

Дополнение

При подключении Uses Crt необходимо использовать

функцию Clrscr.

Clrscr - очищает активное окно и устанавливает курсор в левый верхний угол окна.

Пример использования ClrScr  Program PRIM_2; uses CRT; Begin WriteLn('1 строка'); WriteLn('2 строка'); WriteLn('3 строка'); ClrScr; WriteLn('А куда они делись?=)'); End. Program PRIM_1; Begin WriteLn('1 строка'); WriteLn('2 строка'); WriteLn('3 строка'); End.

Пример использования ClrScr

Program PRIM_2;

uses CRT;

Begin

WriteLn('1 строка');

WriteLn('2 строка');

WriteLn('3 строка');

ClrScr;

WriteLn('А куда они делись?=)');

End.

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; Цикл k Цикл j Цикл i Внутренний цикл должен полностью находиться в теле внешнего цикла.

Вложенные циклы

Цикл называется вложенным , если он находится в теле другого цикла.

for i:=0 to n do

begin

for j:=0 to m do

begin

for k:=0 to w do

begin

end;

end;

end;

Цикл k

Цикл j

Цикл 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

Пример

Сколько можно купить быков, коров и телят, если бык стоит 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.

Результат программы

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 раз.

Пояснение

Сколько раз будет проверяться условие в данной программе?

Значение b изменяется 11 раз – от 0 до 10;

k - 21, t - 201

Таким образом, условие будет проверяться 11*21*201 = 46431 раз.

Результат программы   begin  t:=100-(b+k);  if 20*b+10*k+t=200  then  writeln(‘Быков ',b,' Коров ',k,' Телят ', t);  end; readln; end. 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.

Program z_3;

Uses Crt;

Var b, k, t:integer;

Begin

Clrscr;

for b:=0 to 10 do

for k:=0 to 20 do

Пояснение  11*21*201 = 46431 Если известно количество быков и коров, то количество телят можно вычислить по формуле:  t:=100-(b+k); Цикл по переменной t можно исключить.   Количество повторений проверки условия становиться 11*21=231

Пояснение

11*21*201 = 46431

Если известно количество быков и коров, то количество телят можно вычислить по формуле:

t:=100-(b+k);

Цикл по переменной t можно исключить.

Количество повторений проверки условия становиться 11*21=231

Задача  В кассе есть монеты по 2, 5 и 10 копеек. Сколькими способами можно выдать сдачу на некоторую сумму Sum?

Задача

В кассе есть монеты по 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 ('______________________');

Результат программы

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.

Результат программы

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. " width="640"

Задача

Составьте программу, удваивающую значение целой переменной а, если а5.

5, то значение а надо заменить на 2а. В противном случае (а " width="640"

Решение

Решение

Если а 5, то значение а надо заменить на 2а. В противном случае (а 

5 Then а := а*2; WriteLn (‘а =', а); End. " width="640"

Результат программы

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 .

Результат программы

Program Pr6;

Var parol :string;

Begin

WriteLn (‘Какой пароль?’);

ReadLn (parol);

If parol=‘груша’

then

writeLn (‘Доступ для Вас открыт’)

Else

writeLn (‘Доступ закрыт!!!’);

ReadLn;

End .

Задача  Написать программу, которая проверяет, делится ли на 3 целое число, введенное с клавиатуры.

Задача

Написать программу, которая проверяет, делится ли на 3 целое число, введенное с клавиатуры.

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

Задача

Написать программу на расчёт:

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

Домашнее задание Составить блок-схемы к задачам решенным на уроке. Написать программу на расчет наименьшего числа: Ввести три числа и найти наименьшее из них.  Пример:   Введите три числа:   54 89 133   Наименьшее число 54

Домашнее задание

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

Написать программу на расчет наименьшего числа:

Ввести три числа и найти наименьшее из них.

Пример:

Введите три числа:

54 89 133

Наименьшее число 54