Цель урока: План урока: 1. Проверка домашнего задания. 2. Вложенные циклы. 3. Решение задач. 4. Домашнее задание. Проверка домашнего задания 1.1 Дана последовательность операторов: а:=1; b:=1; while a+b<8 do Begin а:=а+1; b:=b+2 End; s:=a+b Сколько раз будет повторен цикл, и какими будут значения переменных а, b, и s после завершения этой последовательности операторов? Ответ: 2 раза, s=8, a=3, b=5 1.2. Определить значение переменной s после выполнения следующих операторов: s:=0; i:=l; Repeat s:=s+5 Div i; i:= i -l; Until i<=1; Ответ: s=5 Вложенные циклы При решении некоторых задач приходится использовать вложенные циклы. Внутренний и внешний циклы могут быть любыми из трех рассмотренных ранее видов: циклами С параметром, циклами с предусловием или циклами с постусловием. Правила организации как внешнего, так и внутреннего циклов такие же, как и для простого цикла каждого из этих видов. Но при использовании вложенных циклов необходимо соблюдать следующее условие: внутренний цикл должен полностью укладываться в циклическую часть внешнего цикла. Вложенные циклы Например. Даны натуральные числа п и k. Составить программу вычисления выражения 1k+2k+...+nk. Решение Для вычисления указанной суммы целесообразно организовать цикл с параметром i, в котором, вопервых, вычислялось бы очередное значение y=ik и, во-вторых, осуществлялось бы накопление суммы прибавлением полученного слагаемого к сумме всех предшествующих (s= s+y). 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 y:= y*i; Нахождение степени k числа i End; s:=s+у; Нахождение промежуточной суммы. End; WriteLn(' Отвem: ',s); Readln; End. TP Модифицировать предыдущую программу так, чтобы она вычисляла сумму 11+22+...+nn. Решение Данная задача отличается от предыдущей тем, что показатель степени очередного слагаемого совпадает со значением ее основания, следовательно, параметры внутреннего цикла (цикла, в котором вычисляется очередное слагаемое) совпадают с параметрами внешнего цикла. 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 быков, т.е. 0<=b<=10 - не более 20 коров, т.е. 0<=k<=20 - не более 200 телят, т.е. 0<=t<=200. Таким образом, получаем: Program prim3 uses crt; Var b, k, t: Integer; Begin clrscr; For b:=0 To 10 Do For k:=0 To 20 Do 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. QB TP Написать программу, которая находит и выводит на печать все четырехзначные abcd, числа a, 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 Проанализировав первое условие, получаем, что а=с+2, d=9-c, следовательно 0<= c <=7. 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 (b<>c) And (b<>a) And (b<>d) Then Write (a, b, c, d'); Writeln End; End; Readln; End. QB TP Если мы сложим все цифры какого-либо числа, затем все цифры найденной суммы и будем повторять много раз, мы, наконец, получим однозначное число (цифру), называемое цифровым корнем данного числа. Например, цифровой корень числа 34697 равен 2 (3+4+6+9+7=29; 2+9=11; 1+1=2). Составим программу для нахождения цифрового корня натурального числа. Решение Сколько переменных потребуется для решения задачи, какого типа будут эти переменные? Всегда ли необходимо вычислять сумму цифр числа (а если введенное число является однозначным)? Вычислим сумму цифр числа: для этого будем выделять цифры числа и увеличивать текущую сумму. Какую конструкцию необходимо использовать для этого? В результате выполнения цикла мы получили число. Является ли оно однозначным (корнем данного числа)? Какую конструкцию необходимо использовать для нахождения корня числа? Какие действия должна выполнять программа внутри этой конструкции? Программа, вычисляющая корень данного числа, может выглядеть следующим образом: Program prim5; uses crt; Var n,k,s: Longint; Begin clrscr; Writeln(' число='); Readln(n); s:=n; While s>9 Do Begin Пока сумма является двузначным числом. k:=s; s:=0; Вычисляем сумму цифр числа. Repeat S:=s+k Mod 10; k:=k Div 10; Until k=0; End; Writeln(' цифр. корень числа ',n, ‘равен ',s); Readln; End. Домашнее задание Что будет выведено на экране монитора после выполнения следующего фрагмента программы: а:=28; For i:=1 То a div 2 Do Begin if a mod i =0 then Writeln(i); End; Решение какой задачи выражает этот фрагмент программы? Контрольная работа №1 Вариант №1 1. Дано натуральное число: (a) найти сумму цифр этого числа; (b) верно ли, что число начинается и заканчивается одной и той же цифрой. 2. Найти все трехзначные числа, такие, что сумма цифр равна А, а само число делится на В (А и В вводятся с клавиатуры). 3. Дано натуральное число. Приписать к нему такое же число. Вариант №2 1. Дано натуральное число: (a) найти произведение цифр числа; (b) верно ли, что в данном числе нет данной цифры А (цифру А вводить с клавиатуры). 2. Найти все трехзначные числа, которые при увеличении на 1 делятся на 2, при увеличении на 2 делятся на 3, при увеличении на 3 делятся на 4, а при увеличении на 4 делятся на 5. 3. Из данного натурального числа удалить все цифры А (А вводится с клавиатуры). Вариант №3 1. Дано натуральное число: (a) найти количество цифр данного числа; (b) верно ли, что данное число заканчивается на нечетную цифру. 2. Найти количество трехзначных чисел, сумма цифр которых равна А, а само число заканчивается цифрой В (А и В вводятся с клавиатуры). 3. Найти все трехзначные симметричные натуральные числа из промежутка от А до В (А и В вводятся с клавиатуры). Вариант №4 1. Дано натуральное число: (a) найти количество четных цифр числа; (b) верно ли, что данная цифра А встречается в числе более двух раз (А вводить с клавиатуры). 2. Найти все четырехзначные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится на 6 и 27. 3. Найти количество различных цифр данного натурального числа Ответы к контрольной работе №1 Вариант №1 N=121, сумма равна 4, верно. А=15, В=17, 357, 663,816 45, 4545 Вариант №2 А=5, N=121, нет 121, 181, 241,301, 361, 421, 481, 541, 601, 661, 721, 781, 841, 901, 961 N=1234, А=3, N=124 Вариант №3 N=1235, К=4, да А=17, В=5, 395, 485, 575, 665, 755, 845, 935 А=478, В=535, 484, 494, 505, 515, 525, 535 Вариант №4 N=12242, А=2 , цифра 2 встречается более двух раз. 1185, 1458, 1728, 3186, 3456, 3726, 5184, 5454, 5724, 7182, 7452, 7722, 9180, 9450, 8720 N=13234, различных цифр 4. Контрольная работа №2 Вариант № 1 1. Найти количество делителей натурального числа. Сколько из них четных? 2. Найти все натуральные числа а, b и с из интервала от 1 до 20, для, которых выполняется равенство: a2+b2=с2. Вариант № 2 1. Найти сумму нечетных делителей натурального числа. 2. Найти все равновеликие прямоугольники, стороны которых выражены целыми числами а и b, а площадь равна S (а и b принадлежат интервалу от 1 до 20, а S вводится с клавиатуры). Вариант №3 1. Найти все натуральные числа из промежутка от 1 до 200, у которых количество делителей равно N (N вводить с клавиатуры). 2. Найти все натуральные числа а, b и с из интервала от 1 до 20, для которых выполняется равенство: а+b2=с2. Вариант № 4 Найти количество делителей натурального числа, больших К (К ввод. с клавиатуры). Найти все такие тройки натуральных чисел х, у и z из интервала от 1 до 20, для которых выполняется равенство: х2—у =z2. Ответы к контрольной работе №2 Вариант №1 1. N=24, К=7, четных 5. 2. 3, 4, 5 15, 17 4, 3, 5 9, 12, 15 12, 9, 15 5, 12, 13 12, 5, 13 12, 16,20 6, 8, 10 15, 8, 17 16, 12, 20. Вариант №2 1. N=27, нечетных 3. 2. S=42, 3,14 6,7 7,6 8, 6, 10 14,3 8, Вариант №3 N=9, 49, 80, 112, 162, 176 312 523 734 813 12 2 4 13 6 7 15 1 4 17 8 9 19 9 10 20 4 6 9 4 5 11 5 6 15 7 8 16 3 5 Вариант №4 N=196, К=6 , количество делителей больших К пять. Это 7, 14, 28, 49, 98. 2,3,1 3,5,2 5,9,4 5,16,3 9,17,8 3,8,1 6,4,5 10,19,9 4,7,3 6,20,4 4,12,2 7,13,6 4,15,1 8,15,7