Алгоритмы с повторениями. Цикл с параметром FOR. Цикл с предусловием WHILE. Цикл с постусловием REPEAT.
план-конспект урока по информатике и икт (9 класс) на тему

Кирпиченко Екатерина Владимировна

Разработка урока по теме "Алгоритмы с повторениями. Цикл  с параметром FOR. Цикл с предусловием WHILE. Цикл с постусловием REPEAT" (расчитан на 3 часа)

Скачать:


Предварительный просмотр:

Тема урока:   Алгоритмы с повторениями. Цикл  с параметром FOR. Цикл с предусловием WHILE. Цикл с постусловием REPEAT.

Цели занятия:

Обучающая:

  1. Сформировать понятие о циклах;
  2. Познакомиться с циклами WHILE и REPEAT;
  3. Научиться использовать счётный цикл FOR;
  4. Получить навыки решения алгоритмов с повторениями.

Развивающая:

  1. Формирование навыков работы при создании программ, отработать приемы вставки в программу блоков цикла;
  2. Формирование у учащихся приемов логического и алгоритмического мышления;
  3. Развитие познавательного интереса;
  4. Развитие умения планировать свою деятельность.

Воспитывающая:

  1. Воспитывать необходимость связывать изучение нового материала с уже известными фактами;
  2. Воспитывать ответственность за выполняемую работу;
  3. Воспитывать аккуратность при выполнении вычислений.

Тип урока: получения новых знаний.

Формы учебной работы учащихся: фронтальная, индивидуальная работа за ПК.

Ход урока

1. Актуализация знаний

Организационный момент (вступительное слово учителя)

2. Формирование умений и навыков

Изучение нового материала 

Циклический алгоритм – описание действий, которые должны повторяться в указанной последовательности несколько раз или пока не выполнится заданное условие.

Для многократного повторения участка программы используется цикл. Существует два принципиально различных типа операторов цикла: оператор с параметром и операторы цикла с условиями.  

1. Оператор цикла с параметром - счетный  цикл  FOR;

2. Операторы цикла с условием:

а) цикл  WHILE  с  предусловием;

б) цикл  REPEAT...UNTIL  c  постусловием.

На первом нашем занятии постараемся познакомиться и научимся использовать счётный цикл FOR .

Цикл с параметром. В этом цикле используется целая переменная – счётчик (или параметр цикла), которая автоматически при каждом повторении изменяется на 1 от начального значения до конечного. Если начальное значение меньше конечного, то на Паскале он записывается так (на языке блок-схем данный оператор будет выглядеть так):

for  i:=1 to 20 do

begin

    команда;

    команда;

    ........

end;

Если начальное значение больше конечного, то записанный выше цикл не выполнится ни разу. Чтобы он повторял тело цикла, меняя счётчик в сторону уменьшения, заголовок цикла нужно изменить так:

for  i:=20 downto 1 do

begin

    команда;

    команда;

    ........

end;

Цикл FOR удобно использовать тогда, когда точно известно количество повторений.

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

  • Пример использования цикла for: Найти сумму первых 30 натуральных чисел. Слово «первых» обозначает, что начинаем с 1. Сумма в цикле увеличивается, но чтобы было к чему прибавить самое первое число, до начала цикла сумму обнуляем (присваиваем ей начальное значение 0).

program summa;

var

    s,i: integer;

begin

    s := 0;

    for i:=1 to 30 do

        s:= s + i ;

    writeln (’Сумма 30-ти чисел равна ’,s);

    readln;

end.

Цикл с предусловием (с условием перед телом цикла). В этом цикле перед началом «тела цикла» (повторяющегося участка программы) проверяется условие, которое определяет, нужно ли продолжать повторение. Если условие выполняется, тело цикла повторяется. Если условие перестало выполняться, цикл заканчивается. На Паскале этот цикл записывается так (на языке блок-схем данный оператор будет выглядеть так):

while a do

begin

   команда;

   команда;

   ........

end;

Если в теле цикла только  одна команда, то begin и end  не обязательны.

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

  • Пример использования цикла while: Известна сумма S1, положенная в банк и годовая процентная ставка P. Через сколько лет накопится сумма S2 ?

program bank;

var

   s1,s2,p:real;

   g:integer;

begin

    write(’Введите начальную сумму   ’); readln(s1);

    write(’Введите конечную сумму    ’); readln(s2);

    write(’Введите процентную ставку ’); readln(p);

    g:=0;

    while s1do

    begin

       s1:=s1 + s1 * p / 100;

       g:=g + 1;

    end;

    writeln(’До накопления суммы пройдёт ’,g,’ лет’);

end.

Цикл с постусловием (с условием после тела цикла). В этом цикле после тела цикла проверяется условие, которое определяет, нужно ли закончить цикл. Если условие выполняется, цикл заканчивается. Если условие ещё не выполнилось, цикл повторяется.

На Паскале этот цикл записывается так (на языке блок-схем данный оператор будет выглядеть так):

repeat

   команда;

   команда;

   ........

until a >= b;

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

  • Пример использования такого цикла: Найти сумму чисел, первое из которых R (R>1) задано с клавиатуры, а каждое следующее в 1.5 раза меньше. Последнее из этих чисел (которое не входит в сумму) – меньше 0.001.

program summa;

var

   s,r: real;

begin

   write(’Введите число R (> 1) ’);  readln(r);

   s:=0;

repeat

      s:=s+r ;

      r:=r/1.5 ;

   until r<0.001;

   writeln (’Сумма чисел равна ’,s:7:4);

end.

Как выбрать цикл?

Если в задаче повторяются одинаковые (или похожие) действия, нужно использовать цикл. Но какие из 3-х видов цикла в каких задачах лучше применить? Для выбора цикла рассуждайте так:

  1. Так как чаще всего встречается цикл FOR, в первую очередь попробуем его. FOR годится, если число повторов точно известно до начала цикла. Если число повторов заранее неизвестно, а проясняется только по ходу выполнения цикла, используется один из условных циклов: WHILE или REPEAT.
  2. Если возможно придумать такие исходные данные к задаче, при которых тело цикла не должно выполниться ни разу, то нужно использовать WHILE.
  3. Если первый раз тело цикла обязательно требуется выполнить при любых условиях, и только в ходе выполнения вводятся или вычисляются данные, позволяющие принять решение об окончании цикла, то нужно использовать REPEAT.

Во всех остальных случаях WHILE или REPEAT являются одинаково пригодными.

  1. Применение полученных умений и навыков на практике:

Теперь мы перейдем к практической работе за компьютером.

Отладить блоки программ за компьютером.

Рассмотрим несколько примеров:

  • Задано натуральное n.  Вычислить  сумму  ряда:

S=1 - 1/2 + 1/3 - 1/4 + 1/5-........±1/n

program zadacha1;

     var i,n,a:integer;

    s:real;

Begin

   writeln('Введите  n');

   readln(n);

   s:=1;a:=1;

   for i:=2 to n do

          begin

                a:=(-1)*a;

                s:=s+a/i;

          end;

   writeln('Сумма  ряда   S= ',s);

End.

  • Определить количество трёхзначных натуральных чисел, сумма цифр которых равна заданному числу N.

program zadacha2;

     var с1,с2,с3,i,n,kol:integer;

Begin

   writeln('Введите  n');

   readln(n);

   kol:=0;

   for i:=100 to 999 do

          begin

                c1:=i div 100;

    c2:=(i div 10) mod 10;

                c3:=i mod 100;

                if c1+c2+c3=n   then kol:=kol+1;

          end;

   writeln('Количество таких чисел = ',kol);

End.

  • Задано натуральное число n.  Вычислить  сумму  цифр числа.

program zadacha3;

     var n,sum,cif:integer;

Begin

   writeln('Введите  n'); readln(n);

   sum:=0;

   while n>0 do

          begin

cif:=n mod 10;

sum:=sum+cif;

n:=n div 10;

          end;

   writeln('Сумма  цифр введённого числа = ',sum);

End.

  • Найти минимальное натуральное число, которое при делении на 2 даёт  в остатке 1, при делении на 3 даёт в остатке 2, при делении на 4 - в остатке 3, при делении на 5 - в остатке 4, при делении на 6 - в остатке 5 а при делении на 7 дают в остатке 6.

program zadacha4;

 var i, kl:longint;

Begin

  kl:=0;  i:=0;

  while kl=0 do

     begin

i:=i+1;

if (i mod 2=1) and (i mod 3=2) and (i mod 4=3) and (i mod 5=4) and (i mod 6=5) and (i mod 7=6) then  kl:=1;

    end;

  writeln(i);

End.

Иногда на уроке полезно рассмотреть решение одной задачи,  используя  циклы FOR, WHILE, REPEAT

Например: Решим  задачу «Найти сумму всех натуральных чисел от 1 до n», используя  циклы FOR, WHILE  и  REPEAT  и попытаемся понять принцип работы этих циклов.

1)  цикл  FOR

program zadacha1a;

     var i,n,s:integer;

Begin

     writeln(' введите  натуральное n');  readln(n);

     s:=0;

     for i:=1  to n do

                   s:=s+i;

     writeln('сумма  от  1  до',n,' = ',s);

End.

2)  цикл  WHILE

program zadacha1b;

     var i,n,s:integer;

Begin

   writeln('введите натуральное n');  readln(n);

   s:=0;    i: =1;

   while i<=n do

        begin

           s:=s+i;

           i:=i+1;

        end;

   writeln('сумма от 1 до',n,'=',s);

End.

Цикл WHILE будет выполняться до тех пор, пока выполняется условие i<=n.  Причем переменную i изменяем внутри цикла.

3)  цикл  REPEAT

program zadacha1c;

      var i,n,s:integer;

Begin

    writeln(' введите  натуральное n');  readln(n);

    s:=0; i:=1;

    repeat

          begin

               s:=s+i;

               i:=i+1;

          end;

    until i>n;

    writeln('сумма от 1 до',n,' = ',s);

End.

Цикл  REPEAT  . . . UNTIL  будет выполняться до тех пор, пока не выполниться  условие i>n.

4. Подведение итогов. Задать вопросы учащимся. Выставление оценок:

  1. Для чего предназначен оператор цикла?
  2. Какие существуют циклы в языке Паскаль?
  3. Какой формат записи имеет оператор FOR?
  4. Как работает оператор FOR?
  5. В каких случаях применяется оператор FOR?
  6. Какие циклы существуют в языке Паскаль?
  7. Какой формат записи имеют циклы WHILE и REPEAT?
  8. В каких случаях удобно применять эти циклы?
  9. Чем отличается  цикл WHILE от цикла REPEAT?

5. Домашнее задание:

Задача.  Дано натуральное число N. Определить, является ли оно простым.

{Для решения задачи:

  • формируем тело программы и описываем переменные;
  • вводим натуральное число;
  • в интервале от 2 до N/2 порождаем натуральные числа и проверяем, являются ли они делителями числа N;
  • в зависимости от значения флага F выводим результат.

program P;

        var         i, n, f : integer;

begin

        repeat

                write('Ввeдитe натуральное число n = ');

                readln(n);

        until  n > 0;

        f:= 0;

        for i := 2 to n div 2 do

                if n mod i = 0 then f := 1;

        if f = 0 then

        writeln('Число ', n : 6, ' простое')

        else writeln('Число ', n : 6, ' нe простое')

end.}

Раздать карточки:

Задания для самостоятельной работы:

  1. Найти сумму всех нечётных трёхзначных чисел.
  2. Найти сумму положительных кратных 7 чисел, меньших 100.
  3. Найти все числа, которые делятся на N среди:
  1. всех двухзначных чисел;
  2. всех трёхзначных чисел.
  1. Составить программу вычисления суммы квадратов чисел от 1 до n.
  2. Среди двузначных чисел найти те, сумма квадратов цифр которых делится на 13.
  3. Найти все делители для заданного числа n.
  4. Дано натуральное число n. Вычислить:

a)  2n;                        b)  3n                        c)   n!;

  1. Среди четырёхзначных чисел выбрать те, у которых:
  1.  все четыре цифры различны (например: 3167, 9012);
  2. имеются три одинаковые цифры (например: 1311, 7779);
  3. цифры попарно различны (например: 1331, 7979, 2255);
  4. цифры образую возрастающую последовательность (например: 1389, 4678);
  1. Написать программу поиска чисел <1000, которые при делении на 2 дают в остатке 1, при делении на 3 дают в остатке 2, при делении на 4 - в остатке 3, при делении на 5 - в остатке 4, при делении на 6 - в остатке 5 а при делении на 7 дают в остатке 6.
  2. Дано натуральное число n.
  1. Сколько цифр в числе n?
  2. Сколько чётных цифр в числе n?
  1. Дано натуральное число n.
  1. Вычислить, входит ли цифра 3 в запись числа n2.
  2. Поменять порядок цифр числа n на обратный.
  3. Переставить первую и последнюю цифры числа n.
  4. Приписать по единице в начало и в конец записи числа n.
  5. Является ли число n - палиндромом? (9889 - да, 9878 -нет)
  1. Дано натуральное число n. Является ли n степенью 3.
  2. Для  данного  натурального   числа  m>1  найдите  максимальное   k,  для  которого  ещё выполняется   равенство   2k
  3. Для  данного  натурального   числа  m>1  найдите  минимальное  k,  для  которого  уже выполняется   равенство   k!>m.  (например,  если  m=10,  то  k=4).  

По теме: методические разработки, презентации и конспекты

Циклы с предусловием и постусловием

Урок информатики для начинающих изучать язык программирования Pascal....

Конспект урока «Циклический алгоритм. Цикл с предусловием» 6 класс

Конспект урока «Циклический алгоритм. Цикл с предусловием» для исполнителя РоботУрок проводился в шестом классе в рамках изучения темы Основы алгоритмизации и программирования....

Урок в 9 классе по теме: "Оператор цикла с предусловием WHILE"

Урок разработан для учащихся 9 класса. Цель урока: научить применять полученные знания при составлении программ и творческих заданий. Научить решать задачи с использованием оператором цикла WHILE. Зак...

Презентация "Операторы повторений в Паскале. Циклы с постусловием"

Презентация "Операторы  повторений в Паскале. Циклы с постусловием"...

Язык программирования Python. Конспект урока №3. Цикл с предусловием WHILE

Конспект урока по программированию на языке Python для учащихся 8-11 классов. Урок №3. Цикл с предусловием WHILE...

Открытый урок "Оператор цикла с предусловием и алгоритм Евклида"

Конспект урока   "Оператор цикла с предусловием и алгоритм Евклида" по дисциплине "Основы программирования"...

Циклический алгоритм. Цикл с предусловием.

Реализация алгоритмов на языке Паскаль...