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

28
ЗЛАТОУСТОВСКАЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА І-ІІІ СТУПЕНЕЙ Учитель информатики Лесконог Елена Викторовна Алгоритмы с повторениями. Операторы цикла на языке программирования. Вложенные циклы.

Upload: leskonogelena

Post on 16-Aug-2015

71 views

Category:

Internet


0 download

TRANSCRIPT

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

ЗЛАТОУСТОВСКАЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА І-ІІІ СТУПЕНЕЙ

Учитель информатикиЛесконог Елена Викторовна

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

программирования. Вложенные циклы.

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

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

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

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

≠ 1.

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

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

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

условие.

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

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

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

Цикл ПОКАНачало

Ввод данных

Условие

Тело цикла

Начало

Ввод данных

Условие

Тело цикла

Цикл ДО

Истина

Истина

Ложь

Ложь

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

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

While условие do

<оператор>;

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

Repeat

<операторы>

Until условие;

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

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

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

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

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

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

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

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

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

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

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

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

Begin и End.

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

Пример

Найти все

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

кратные 7.

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

схему;

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

Начало

Конец

k:=14

K<=99

k:=k+7

Вывести kИстина

Ложь

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

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.

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

Пояснение

While k<=99 do Begin Writeln(k); k:=k+7; end;readln;end.

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

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

Дополнение

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

Page 10: 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.

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

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

Цикл называется вложенным, если он находится в теле другого цикла. 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

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

Пример

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

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

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

Program z_2;Uses Crt;Var b, k, t:integer;BeginClrscr;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.

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

Пояснение

Сколько раз будет проверяться условие в данной программе?Значение b изменяется 11 раз – от 0 до 10;k - 21, t - 201 Таким образом, условие будет проверяться 11*21*201 = 46431 раз.

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

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

Program z_3;Uses Crt;Var b, k, t:integer;BeginClrscr;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.

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

Пояснение

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

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

Задача

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

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

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

Program z_3;Uses Crt;Var Sum, Xmax, Ymax, Zmax, x, y, z, p:integer;BeginClrscr;Writeln (‘Введите сумму: '); Readln (Sum); p:=0;Xmax:=Sum div 2; Ymax:=Sum div 5; Zmax:=Sum div 10;Writeln (' 2 5 10 Всего монет');Writeln ('______________________');

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

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.

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

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

Задача

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

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

РешениеЕсли а > 5, то значение а надо заменить на 2а. В противном случае (а <= 5) никаких действий производить не нужно.

Решение

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

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

Program Pr2; Var а : Integer; Begin WriteLn (‘Введите число’); ReadLn (а); If а >5 Then а := а*2; WriteLn (‘а =', а); End.

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

Задача

Составить программу, проверяющую правильность пароля

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

Решение

Предположим, что пароль – это слово «груша». Программа запрашивает у пользователя пароль, сравнивает его с нашим паролем. Если пользователь ввел правильный пароль, то для него доступ открыт, а если пароль не правильный, то доступ закрыт.

Решение

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

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

Program Pr6;Var parol :string;BeginWriteLn (‘Какой пароль?’);ReadLn (parol);If parol=‘груша’

then writeLn (‘Доступ для Вас открыт’) Else writeLn (‘Доступ закрыт!!!’);ReadLn;End.

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

Задача

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

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

Задача

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

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

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

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

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

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

Пример:

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

54 89 133

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