Конспект на тему: Алгоритмы с повторениями. Цикл с параметром FOR. Цикл с предусловием WHILE. Цикл с постусловием REPEAT
Тема урока: Алгоритмы с повторениями. Цикл с параметром FOR. Цикл с предусловием WHILE. Цикл с постусловием REPEAT.Цели занятия:
Обучающая:
Сформировать понятие о циклах;
Познакомиться с циклами WHILE и REPEAT;
Научиться использовать счётный цикл FOR;
Получить навыки решения алгоритмов с повторениями.
Развивающая:
Формирование навыков работы при создании программ, отработать приемы вставки в программу блоков цикла;
Формирование у учащихся приемов логического и алгоритмического мышления;
Развитие познавательного интереса;
Развитие умения планировать свою деятельность.
Воспитывающая:
Воспитывать необходимость связывать изучение нового материала с уже известными фактами;
Воспитывать ответственность за выполняемую работу;
Воспитывать аккуратность при выполнении вычислений.
Тип урока: получения новых знаний.
Формы учебной работы учащихся: фронтальная, индивидуальная работа за ПК.
Ход урока
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<b< span=""> do</b<>
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 s1<="" span="">do
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-х видов цикла в каких задачах лучше применить? Для выбора цикла рассуждайте так:
Так как чаще всего встречается цикл FOR, в первую очередь попробуем его. FOR годится, если число повторов точно известно до начала цикла. Если число повторов заранее неизвестно, а проясняется только по ходу выполнения цикла, используется один из условных циклов: WHILE или REPEAT.
Если возможно придумать такие исходные данные к задаче, при которых тело цикла не должно выполниться ни разу, то нужно использовать WHILE.
Если первый раз тело цикла обязательно требуется выполнить при любых условиях, и только в ходе выполнения вводятся или вычисляются данные, позволяющие принять решение об окончании цикла, то нужно использовать REPEAT.
Во всех остальных случаях WHILE или REPEAT являются одинаково пригодными.
Применение полученных умений и навыков на практике:
Теперь мы перейдем к практической работе за компьютером.
Отладить блоки программ за компьютером.
Рассмотрим несколько примеров:
Задано натуральное 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) цикл FORprogram 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) цикл WHILEprogram 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) цикл REPEATprogram 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. Подведение итогов. Задать вопросы учащимся. Выставление оценок:
Для чего предназначен оператор цикла?
Какие существуют циклы в языке Паскаль?
Какой формат записи имеет оператор FOR?
Как работает оператор FOR?
В каких случаях применяется оператор FOR?
Какие циклы существуют в языке Паскаль?
Какой формат записи имеют циклы WHILE и REPEAT?
В каких случаях удобно применять эти циклы?
Чем отличается цикл 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.}Раздать карточки:
Задания для самостоятельной работы:
Найти сумму всех нечётных трёхзначных чисел.
Найти сумму положительных кратных 7 чисел, меньших 100.
Найти все числа, которые делятся на N среди:
всех двухзначных чисел;
всех трёхзначных чисел.
Составить программу вычисления суммы квадратов чисел от 1 до n.
Среди двузначных чисел найти те, сумма квадратов цифр которых делится на 13.
Найти все делители для заданного числа n.
Дано натуральное число n. Вычислить:
a) 2n; b) 3n c) n!;
Среди четырёхзначных чисел выбрать те, у которых:
все четыре цифры различны (например: 3167, 9012);
имеются три одинаковые цифры (например: 1311, 7779);
цифры попарно различны (например: 1331, 7979, 2255);
цифры образую возрастающую последовательность (например: 1389, 4678);
Написать программу поиска чисел <1000, которые при делении на 2 дают в остатке 1, при делении на 3 дают в остатке 2, при делении на 4 - в остатке 3, при делении на 5 - в остатке 4, при делении на 6 - в остатке 5 а при делении на 7 дают в остатке 6.
Дано натуральное число n.
Сколько цифр в числе n?
Сколько чётных цифр в числе n?
Дано натуральное число n.
Вычислить, входит ли цифра 3 в запись числа n2.
Поменять порядок цифр числа n на обратный.
Переставить первую и последнюю цифры числа n.
Приписать по единице в начало и в конец записи числа n.
Является ли число n - палиндромом? (9889 - да, 9878 -нет)
Дано натуральное число n. Является ли n степенью 3.
Для данного натурального числа m>1 найдите максимальное k, для которого ещё выполняется равенство 2k<="" span="">
Для данного натурального числа m>1 найдите минимальное k, для которого уже выполняется равенство k!>m. (например, если m=10, то k=4).