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

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

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

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

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

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

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

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

Итоги урока

Цикл с переменной. Вложенные циклы

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

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

Тема урока: «Цикл с переменной. Вложенные циклы»

Цель урока: сформировать знания и умения учащихся по данной теме.

Задачи урока:

  • сформировать у учащихся понятия цикл с переменной;
  • способствовать развитию познавательной деятельности учащихся,     алгоритмического мышления,  навыков работы на компьютере
  • воспитывать необходимость связывать изучение нового материала с уже известными фактами,  воспитание чувства уверенности в себе и своих знаниях, чувства ответственности за результаты своего труда;

Ход урока

Этапы

Деятельность учителя

Деятельность учащихся

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

Приветствие. Проверка отсутствующих. Организация внимания всех учащихся.

Подготовка учащихся к работе.

2. Проверка выполнения домашнего задания

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

USES Crt; LABEL R1,R2; VAR  X: INTEGER;    M:CHAR; BEGIN   R1:ClrScr;   WriteLn('ПРГ выводит оценки по математике, физике и химии');   WriteLn('1.Вывод оценок по предметам');   WriteLn('2.Выход');   WriteLn('Введите номер пункта');     ReadLn (X);   CASE X OF   1: Begin         ClrScr;          WriteLn(' По какому предмету Вы хотите увидеть оценки');         WriteLn(' М - математика');         WriteLn(' Ф - физика');         WriteLn(' Х - химия');         ReadLn(M);         CASE M OF     'М','м':WriteLn('5 5 4 4 5 5 3 5 5 ');     'Ф','ф':WriteLn('5 4 5 3 5 4 5 5 5 ');     'Х','х':WriteLn('4 3 5 3 4 4 4 5 ');         End;       End;   2: Begin         WriteLn('Программа закончена');         GoTo R2;      End;      Else         WriteLn('Номер неверен'); ReadLn;         GoTo R1;   End;  R2:End.

Тест «Цикл»

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

b

d

c

b

c

a

a

c

b

c

c

b

d

d

d

 

 

3. Подготовка к основному этапу занятий

В информатике важную роль играют степени числа 2 (2, 4, 8, 16 и т. д.) Чтобы вывести все степени двойки от 21 до 210, мы уже можем написать такую программу с циклом «пока»:

к: = 1 п:=2 нц пока к<=10

вывод n,нс

n:=n*2

k:=k+1

кц

к: = 1;

п:=2;

while к<= 10  do begin

writeln(n);

n:=n * 2;

к:=к+1

end;

Вы наверняка заметили, что переменная к используется трижды (см. выделенные блоки): в операторе присваивания начального значения, в условии цикла и в теле цикла (увеличение на 1). Чтобы собрать все действия с ней в один оператор, во многие языки программирования введён особый вид цикла — цикл с переменной.

Цикл с параметром -  используется целая переменная – счётчик (или параметр цикла), которая автоматически при каждом повторении изменяется на 1 от начального значения до конечного.

 

 

 

 

.

 

 

 

Слушают учителя

 

 

 

 

 

 

 

 

 

составляют свое определение поданному понятию

 

Записываем тему урока в тетради.

 

 

4. Усвоение новых знаний и способов действий

 В заголовке этого цикла задаются начальное и конечное значения этой переменной, а шаг её изменения по умолчанию равен 1:

n: =2

нц для к от 1 до 10

вывод n, нc

n:=n*2

кц

n: =2;

for к:=1 tо 10 dо begin

writeln(n);

n:=n*2; еnd;

Здесь, в отличие от цикла «пока», переменная цикла может быть только целой.

С каждым шагом цикла переменная цикла может не только увеличиваться, но и уменьшаться на 1. Для этого в школьном алгоритмическом языке добавляется параметр шаг, а в Паскале ключевое слово tо заменяется на downtо («движение вниз до»). Следующая программа выводит квадраты натуральных чисел от 10 до 1 в порядке убывания:

нц     для к от 10 до 1 шаг -1

вывод       к*к, нс

кц 

for  k:=10   downto 1 dо

 writeln(k*k);

В школьном алгоритмическом языке шаг изменения переменной цикла может быть любым целым числом, а в Паскале — только 1 или  (-1).

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

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

Предположим, что нужно найти все простые числа в диапазоне от 2 до 1000. Простейший (но не самый быстрый) алгоритм  решения такой задачи на псевдокоде выглядит так:

нц для n от 2 до 1000    если число n простое то      вывод n, нc   все

кц

Как же определить, что число простое? Как известно, простое число делится только на 1 и само на себя. Если число п не имеет делителей в диапазоне от 2 до л-1, то оно простое, а если хотя бы один делитель в этом интервале найден, то составное.

Чтобы проверить делимость числа  на некоторое число к, нужно взять остаток от деления n на k. Если этот остаток равен нулю, то n делится на k. Таким образом, программу можно записать так (здесь n, k и соunt  — целочисленные переменные, соunt обозначает счётчик делителей):

 

 

 

 

 

 

 

Попробуем немного ускорить работу программы. Делители числа обязательно идут в парах, причём в любой паре меньший из делителей не превосходит √n (так как произведение двух делителей, каждый из которых больше , √n будет больше, чем n). Поэтому внутренний цикл можно выполнять только до значения √n  вместо n-1. Для того чтобы работать только с целыми числами (и таким образом избежать вычислительных ошибок), лучше заменить условие к <  н√n  на равносильное ему условие к2 <=√n.

При этом потребуется перейти к внутреннему циклу с условием:

 

 

 

 

Чтобы ещё ускорить работу цикла, заметим, что когда найден хотя бы один делитель, число уже заведомо составное, и искать другие делители в данной задаче не требуется. Поэтому можно закончить цикл. Для этого в условие работы цикла добавляется условие соunt = 0, связанное с имеющимся условием с помощью операции «И»:

В любом вложенном цикле переменная внутреннего цикла изменяется быстрее, чем переменная внешнего цикла. Рассмотрим например, такой вложенный цикл:

На первом шаге (при i =1) переменная k  принимает единственное значение 1. Далее, при i = 2 переменная к принимает последовательно значения 1 и 2. На следующем шаге при 1 - 3 переменная  k проходит значения 1, 2 и 3.

 

 

Запись в тетрадь

 

 

 

 

 

Запись в тетрадь

 

 

 

 

 

Просмотр содержимого документа
«Цикл с переменной. Вложенные циклы»

41-42 урок, 10 класс – практика

Учитель: Брух Т.В.

Дата: ___________

Тема урока: «Цикл с переменной. Вложенные циклы»

Цель урока: сформировать знания и умения учащихся по данной теме.

Задачи урока:

  • сформировать у учащихся понятия цикл с переменной;

  • способствовать развитию познавательной деятельности учащихся, алгоритмического мышления, навыков работы на компьютере

  • воспитывать необходимость связывать изучение нового материала с уже известными фактами, воспитание чувства уверенности в себе и своих знаниях, чувства ответственности за результаты своего труда;

Ход урока

Этапы

Деятельность учителя

Деятельность учащихся

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

Приветствие. Проверка отсутствующих. Организация внимания всех учащихся.

Подготовка учащихся к работе.

2. Проверка выполнения домашнего задания

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

USES Crt; LABEL R1,R2;
VAR  X: INTEGER;    M:CHAR; BEGIN
  R1:ClrScr;   WriteLn('ПРГ выводит оценки по математике, физике и химии');
  WriteLn('1.Вывод оценок по предметам');
  WriteLn('2.Выход');
  WriteLn('Введите номер пункта');  
  ReadLn (X);
  CASE X OF
  1: Begin
        ClrScr;          WriteLn(' По какому предмету Вы хотите увидеть оценки');         WriteLn(' М - математика');
        WriteLn(' Ф - физика');
        WriteLn(' Х - химия');
        ReadLn(M);
        CASE M OF
    'М','м':WriteLn('5 5 4 4 5 5 3 5 5 ');
    'Ф','ф':WriteLn('5 4 5 3 5 4 5 5 5 ');
    'Х','х':WriteLn('4 3 5 3 4 4 4 5 ');
        End;
      End;
  2: Begin
        WriteLn('Программа закончена');
        GoTo R2;
     End;
     Else
        WriteLn('Номер неверен'); ReadLn;
        GoTo R1;
  End;
 R2:End.

Тест «Цикл»

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

b

d

c

b

c

a

a

c

b

c

c

b

d

d

d



3. Подготовка к основному этапу занятий

В информатике важную роль играют степени числа 2 (2, 4, 8, 16 и т. д.) Чтобы вывести все степени двойки от 21 до 210, мы уже можем написать такую программу с циклом «пока»:

к: = 1
п:=2
нц пока к

вывод n,нс

n:=n*2

k:=k+1

кц

к: = 1;

п:=2;

while кdo begin

writeln(n);

n:=n * 2;

к:=к+1

end;

Вы наверняка заметили, что переменная к используется трижды (см. выделенные блоки): в операторе присваивания начального значения, в условии цикла и в теле цикла (увеличение на 1). Чтобы собрать все действия с ней в один оператор, во многие языки программирования введён особый вид цикла — цикл с переменной.

Цикл с параметром - используется целая переменная – счётчик (или параметр цикла), которая автоматически при каждом повторении изменяется на 1 от начального значения до конечного.




.




Слушают учителя










составляют свое определение поданному понятию


Записываем тему урока в тетради.


4. Усвоение новых знаний и способов действий

В заголовке этого цикла задаются начальное и конечное значения этой переменной, а шаг её изменения по умолчанию равен 1:

n: =2

нц для к от 1 до 10

вывод n, нc

n:=n*2

кц

n: =2;

for к:=1 tо 10 dо begin

writeln(n);

n:=n*2;
еnd;

Здесь, в отличие от цикла «пока», переменная цикла может быть только целой.

С каждым шагом цикла переменная цикла может не только увеличиваться, но и уменьшаться на 1. Для этого в школьном алгоритмическом языке добавляется параметр шаг, а в Паскале ключевое слово tо заменяется на downtо («движение вниз до»).
Следующая программа выводит квадраты натуральных чисел от 10 до 1 в порядке убывания:

нц для к от 10 до 1 шаг -1

вывод к*к, нс

кц

for k:=10 downto 1 dо

writeln(k*k);

В школьном алгоритмическом языке шаг изменения переменной цикла может быть любым целым числом, а в Паскале —
только 1 или (-1).

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

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

Предположим, что нужно найти все простые числа в диапазоне от 2 до 1000. Простейший (но не самый быстрый) алгоритм решения такой задачи на псевдокоде выглядит так:

нц для n от 2 до 1000
если число n простое то
вывод n, нc
все

кц

Как же определить, что число простое? Как известно, простое число делится только на 1 и само на себя. Если число п не имеет делителей в диапазоне от 2 до л-1, то оно простое, а если хотя бы один делитель в этом интервале найден, то составное.

Чтобы проверить делимость числа на некоторое число к, нужно взять остаток от деления n на k. Если этот остаток равен нулю, то n делится на k. Таким образом, программу можно записать так (здесь n, k и соunt — целочисленные переменные, соunt обозначает счётчик делителей):








Попробуем немного ускорить работу программы. Делители числа обязательно идут в парах, причём в любой паре меньший из делителей не превосходит √n (так как произведение двух делителей, каждый из которых больше , √n будет больше, чем n). Поэтому внутренний цикл можно выполнять только до значения √n вместо n-1. Для того чтобы работать только с целыми числами (и таким образом избежать вычислительных ошибок), лучше заменить условие к n на равносильное ему условие к2 n.

При этом потребуется перейти к внутреннему циклу с условием:





Чтобы ещё ускорить работу цикла, заметим, что когда найден хотя бы один делитель, число уже заведомо составное, и искать другие делители в данной задаче не требуется. Поэтому можно закончить цикл. Для этого в условие работы цикла добавляется условие соunt = 0, связанное с имеющимся условием с помощью
операции «И»:

В любом вложенном цикле переменная внутреннего цикла изменяется быстрее, чем переменная внешнего цикла. Рассмотрим например, такой вложенный цикл:

На первом шаге (при i =1) переменная k принимает единственное значение 1. Далее, при i = 2 переменная к принимает последовательно значения 1 и 2. На следующем шаге при 1 - 3 переменная k проходит значения 1, 2 и 3.


Запись в тетрадь






Запись в тетрадь






5. Первичная проверка понимания

1. Домашняя задача

2. Найти сумму пяти введенных с клавиатуры чисел.

program zadacha2;

var i, a, S : integer;

begin

for i:=1 to 5 do

begin

writeln('Введите ',i,' -е число');

readln(a);

S:=S+a;

end;

writeln('Сумма равна ', s);

end.

3. Простым называется натуральное число (кроме 1), делителями которого являются только оно само и 1. Например, число 5 — простое, т.к. его можно нацело разделить только на 5 и 1, а число 6 — сложное, т.к. помимо 6 и 1 делится на 2 и 3.

var

count, i: byte;

n, j: word;

begin

count := 10;

for i:=1 to 10 do begin

read(n);

for j:=2 to trunc(sqrt(n))+1 do

if n mod j = 0 then begin

count := count - 1;

break;

end;

end;

writeln('Простых чисел ', count);

end.

4. Вывести на экран таблицу умножения

var i,j: byte;

begin

for i:=1 to 9 do begin

for j:=1 to 9 do

write(i*j:4);

writeln;

end;

end.

5. Вывести на экран «прямоугольник», образованный из двух видов символов. Контур прямоугольника должен состоять из одного символа, а в «заливка» — из другого.

var i,j: byte;

begin

for i:=1 to 10 do begin

if (i=1) or (i=10) then

for j:=1 to 20 do

write('-')

else begin

write('|');

for j:=2 to 19 do

write('0');

write('|');

end;

writeln;

end;

end.

6. Поиск делителей целого числа N.
Целое число K является делителем N, если остаток от деления N на K равен 0. Чтобы найти все делители достаточно перебрать все числа от 1 до N и проверить, являются ли они делителями.
program z11;
var n,i:integer;
BEGIN
readln(n);
for i:=1 to n do
if n mod i = 0 then
write(i, ' ');
END.

7. Даны целые положительные числа N и K. Используя только операции сложения и вычитания, найти частное от деления нацело N на K, а также остаток от этого деления.

program while_3;

var N, K, count: integer;

begin

readln(N, K); while (N - K = 0) do begin N := N - K;

count := count + 1;

end;

writeln('Частное от деления нацело: ', count);

writeln('Остаток: ', N);

end.
8. Произведение целых чисел begin var n := ReadInteger('Введите число множителей: '); var p := 1.0;

for var i:=1 to n do

begin

var x := ReadReal('Введите множитель: ');

p *= x;

end;

Println($'Произведение равно {p}');

end.

9. Вычислить наибольший общий делитель двух натуральных чисел А и В. 

Program NOD;
Var  a,b:integer;
Begin
  Write ('введите два натуральных числа')
  Readln(a,b)
  While ab do

If ab then a:=a-b

else b:=b-a;
  Writeln('НОД=',a);
End.

10. Начав тренировки, лыжник в первый день пробегал 10 км. Каждый следующий день он увеличивал длину пробега на 10% от предыдущего дня. Определить в какой день он пробежит больше 20 км, в какой день суммарный пробег за все дни превысит 100км.
Program prim_10;
Var S:real;
    N:integer;
Begin
  S:=10;N:=1;
  While s   Begin
    N:=n+1;
    S:=s*0.1
  End;
  Writeln(' дневной пробег больше 20 км на ',n,' день');
  S:=10;N:=1;
  While s   Begin
    N:=n+1;
    S:=s+s*0.1 {накапливаем суммарный пробег}
  End;
  Writeln('за ',n,' пробежит больше 100 км');
End.

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

6. Подведение итогов урока.

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


Задача д/з

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











Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!