Обучающая: : показать сходство и различие циклов в языках программирования Qbasic и Pascal ABS
Развивающая: развитие умения анализировать, сопоставлять, сравнивать, выделять главное, приобрести опыт использования теоретических знаний в реализации конкретных задач.
Воспитывающая: воспитание коммуникативных качеств для рациональной и продуктивной работы.
Вы уже знаете о суперспособностях современного учителя?
Тратить минимум сил на подготовку и проведение уроков.
Быстро и объективно проверять знания учащихся.
Сделать изучение нового материала максимально понятным.
Избавить себя от подбора заданий и их проверки после уроков.
Просмотр содержимого документа
«Конспект урока "Тема: «Вложенные циклы» »
Тема: «Вложенные циклы»
Цели урока:
Обучающая: : показать сходство и различие циклов в языках программирования Qbasic и Turbo Pascal 7.0.
Развивающая: развитие умения анализировать, сопоставлять, сравнивать, выделять главное, приобрести опыт использования теоретических знаний в реализации конкретных задач.
Воспитывающая: воспитание коммуникативных качеств для рациональной и продуктивной работы.
Тип урока:урок изучения нового материала.
Вид урока: комбинированный урок.
Оборудование:
проектор;
компьютеры;
Последовательность этапов урока:
Организационный момент, сообщение темы и целей урока (2 мин).
Проверка домашнего задания (5 мин)
Объяснение нового материала (10 мин)
Решение задач (15 мин)
Итог урока, рефлексия (5 мин).
Домашнее задание. (3 мин).
Ход урока:
Организационный момент. Сообщение темы и целей урока.
Проверка домашнего задания.
Дана последовательность операторов:
a=1: b=1
while a+b
a=a+1 : b=b+2
wend: s=a+b
a:=1; b:=1;
while a+bbegin
a:=a+1 ; b:=b+2
end; s:=a+b
Сколько раз будет повторен цикл, и какими будут значения переменных a, b, и s после завершения этой последовательности операторов?
Ответ: 2 раза, s=8, a=3, b=5
Определить значение переменной s после выполнения следующих операторов:
s=0: i=l
DO : s=s+5\ i : i= i -1: LOOP
Until i
s:=0; i:=l; repeat s:=s+5 div i; i:=i-l; until
i;
Ответ: s=5
Изучение нового материала.
При решении некоторых задач приходится использовать вложенные циклы. Внутренний и внешний циклы могут быть любыми из трех рассмотренных ранее видов: циклами с параметром, циклами с предусловием или циклами с постусловием. Правила организации как внешнего, так и внутреннего циклов такие же, как и для простого цикла каждого из этих видов. Но при использовании вложенных циклов необходимо соблюдать следующее условие: внутренний цикл должен полностью укладываться в циклическую часть внешнего цикла.
Рассмотрим на примере решения конкретной задачи.
Даны натуральные числа n и k. Составить программу вычисления выражения 1k+2k+…+nk.
Решение.
Для вычисления указанной суммы целесообразно организовать цикл с параметром i, в котором, во- первых, вычислялась бы очередное значение y=ik и, во- вторых осуществлялось бы накопление суммы прибавлением полученного слагаемого к сумме всех предшествующих(s=s+y).
‘PRIM1
DEFINT I,K,M-N,S,Y
CLS
INPUT “N=,K=”;N,K:S=0
FOR I=1 TO N
Y=1
For M=1 To K
program PRIM1;
uses crt;
var n, k, y, i, s, m: integer;
begin
clrscr;
writeln ( ‘n= k=’); readln(n, k);
s:=0;
for i:=1 to n do begin
y:=1;
for m:=1 to k do begin
Нахождение степени k числа i.
Y=Y*I
Next
y:=y*I;
end;
Нахождение промежуточной суммы.
S=S+Y
Next
PRINT “Oтвеm=”;S
END
s:=s+y;
end; writeln (‘ Ответ:’,s);
readln;
end.
Таким образом, для решения задачи потребовалось организовать два цикла, один из которых пришлось поместить внутрь другого. Такие конструкции называют вложенными циклами.
Задание: модифицировать предыдущую программу так, чтобы она вычисляла сумму 11+22+…+ nn.
Решение.
Данная задача отличается от предыдущей тем, что показатель степени очередного слагаемого совпадает со значением ее основания, следовательно, параметры внутреннего цикла (цикла, в котором вычисляется очередное слагаемое) совпадает с параметрами внешнего цикла.
For m=1 To i
for m:=1 to i do
Решение задач.
Старинная задача. Сколько можно купить быков, коров и телят, если плата за быка 10 рублей, за корову - 5рублей, за теленка - полтинник(0,5 рубля), если на 100 рублей надо купить 100 голов скота.
Решение.
Обозначим через b - количество быков; k - количество коров; t - количество телят. После этого можно записать два уравнения: 10b+5k+0.5t=100 и b+k+t=100. Преобразуем их: 20b+10k+t=200 и b+k+t=100. На 100 рублей можно купить:
-не более 10 быков, т.е. 0b
-не более 20 коров, т.е. 0k
-не более 200 телят, т.е. 0t
Таким образом, получаем:
‘PRIM3
DEFINT b, k, t
CLS
For b:=0 to 10
For k:=0 to 20
For t:=0 to 200
If (20*b+10*k+t=200) And
(b+k+t=100)
Then
PRINT “ быков”; b; “коров”;k; “телят”;t
N NEXT t, k, b
END
program prim3
uses crt;
Var b,k,t: integer;
begin
clrscr
for b:=0 to10 do
for k:=0 to 20
for t:=0 to 200 do
if (20*b+10*k+t=200) and
(b+k+t=100)
then
writeln (‘ быков’, b, ‘ коров’, k,’
телят ‘, t);
readln;
end.
Сколько раз будет проверяться условие в данной программе? Значение переменной b изменяется 11 раз (от 0 до 10), для каждого ее значения переменная k изменяется 21 раз, а для каждого значения переменной k переменная t изменяется 201 раз. Таким образом, условие будет проверяться 11*21*201 раз. Но если известно количество быков и коров, то количество телят можно вычиcлить по формуле t=100-(b+k) и цикл по переменой t исключается.
‘PRIM3b
DEFINT B,K,T
CLS
For b:=0 to 10
For k:=0 to 20
t:=100-(b+k)
If (20*b+10*k+t=200) Then
Print “быков”; b; “коров”; k; “телят”; t
Next k, b
END
program prim3b;
uses crt;
Var b,k,t: integer;
begin
clrscr
for b:=0 to10 do
for k:=0 to 20 do begin
t=100-(b+k)
if (20*b+10*k+t=200) then
writeln (‘ быков’, b, ‘ коров’, k,’
телят ‘, t);
end;
readln;
end.
При этом решении условие проверяется 11*21 раз.
Задача 2. Написать программу, которая находит и выводит на печать все четырехзначные abcd числа, где а,b,c,d - различные цифры, для которых выполняется: ab-cd=a+b+c+d.
Решение.
Задачу можно решать несколькими способами. Одним из возможных способов является перебор всех четырехзначных чисел и проверка для каждого из них выполнения условий. Попробуем сократить перебор, для этого преобразуем второе условие:
10a+b-(10c+d)=a+b+c+d;
9(a-c)=2(c+d);
(a-c)/(c+d)=2/9
Проанализировав первое условие, получаем, что a=c+2, d=9-c, следовательно 0c
‘ PRIM4
DEFINT A-D
CLS
For c = 0 To 7
A=c+2: d = 9 – c
For b = 0 To 9
If bc And ba And bd Then
Print a, b, c, d
Print
NEXT
NEXT
END
program prim4;
uses crt; var a, b ,c, d: integer;
begin clrscr; for c:=0 to 7 do begin a:=c+2; d:=9-c; for b:=0 to 9 do begin if (bc) and (ba) and (bd) then write( ‘a, b, c, d’); writeln end; end; readln; end.
Таким образом, мы решили задачу, значительно сократив перебор.
Задача 3. Составить программу для нахождения цифрового корня натурального числа. (Если мы сложим все цифры какого – либо числа, затем все цифры найденной суммы и будем повторять много раз, мы, наконец, получим однозначное число (цифру), называемое цифровым корнем данного числа. Например, цифровой корень числа 34697 равен 2 (3+4+6+9+7=29; 2+9=11; 1+1=2).
Решение.
Сколько переменных потребуется для решения задачи, какого типа будут эти переменные?
Всегда ли необходимо вычислять сумму цифр числа (а если введенное число является однозначным)?
Вычислим сумму цифр числа: для этого будем выделять цифры числа и увеличивать текущую сумму. Какую конструкцию необходимо использовать для этого?
В результате выполнения цикла мы получили число. Является ли оно однозначным (корнем данного числа)? Какую конструкцию необходимо использовать для нахождения корня числа? Какие действия должна выполнять программа внутри этой конструкции?
Программа, вычисляющая корень данного числа, может выглядеть следующим образом:
‘PRIM5
DEFLG N, K, S
CLS
INPUT “число N=”;N : S=N
Program prim5
uses crt;
var n, k, s: longint;
begin
clrscr;
written(‘ число =’); readln(n);
s:=n;
Пока сумма является двузначным числом.
While S9
K=S: S=0
while s9 do begin
k:=s; s:=0;
Вычисляем сумму цифр числа
DO
S=S+K Mod 10: K = K \ 10
LOOP Until K=0
Wend
PRINT “цифровой корень числа равен”; S
END
repeat
S:=s+k mod 10; k:=k div 10;
until k=0
end;
writeln(‘ цифр. кореньчисла ‘,n,’
равен ‘,s);
readln;
end.
Итог урока, рефлексия
Домашнее задание:§11, с.148-151; №8 на с.157
Н.Д. Угринович. Информатика и ИКТ. Профильный уровень: учебник для 11 класса. - М.: Бином. Лаборатория знаний, 2010.
ІV. Итог урока.
Домашнее задание.
Что будет выведено на экране монитора после выполнения следующего фрагмента программы:
A=28
A:=28;
FOR I = 1 TO A\2
For i:=1 to a div 2 do begin
IF A MOD I=0 THEN PRINT I
If a mod i =0 then writeln(i);
NEXT
end;
Решение какой задачи выражает этот фрагмент программы?
Ответ: на экран выводятся делители числа А. (А=28).