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

  • Разработки уроков
  • doc
  • 12.02.2023
Публикация в СМИ для учителей

Публикация в СМИ для учителей

Бесплатное участие. Свидетельство СМИ сразу.
Мгновенные 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 нц пока к<=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. Запись в тетрадь Запись в тетрадь
Иконка файла материала Цикл с переменной. Вложенные циклы.doc

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
нц пока к<=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.

 

 

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

 

 

 

 

 

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

 

 

 

 

 

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 a<>b do

If a>b 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<20 do 
  Begin
    N:=n+1;
    S:=s*0.1
  End;
  Writeln(' дневной пробег больше 20 км на ',n,' день');
  S:=10;N:=1;
  While s<100 do 
  Begin
    N:=n+1;
    S:=s+s*0.1 {накапливаем суммарный пробег}
  End;
  Writeln('за ',n,' пробежит больше 100 км');
End.

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

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

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

Задача д/з

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

 

 

 

 

 

 


Скачано с www.znanio.ru