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

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

Оценка 5
Разработки уроков
doc
информатика
10 кл
12.02.2023
Цикл с переменной. Вложенные циклы
Тема урока: «Цикл с переменной. Вложенные циклы» Цель урока: сформировать знания и умения учащихся по данной теме. Задачи урока: • сформировать у учащихся понятия цикл с переменной; • способствовать развитию познавательной деятельности учащихся, алгоритмического мышления, навыков работы на компьютере • воспитывать необходимость связывать изучение нового материала с уже известными фактами, воспитание чувства уверенности в себе и своих знаниях, чувства ответственности за результаты своего труда; Ход урока Этапы Деятельность учителя Деятельность учащихся 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

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

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

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

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

Паскале — только 1 или (-1)

Паскале — только 1 или (-1)

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

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

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

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

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

Первичная проверка понимания 1
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
12.02.2023