Цель урока: План урока: 1. Проверка домашнего задания. 2. Цикл с параметром. 3. Решение задач. 4. Домашнее задание. Проверка домашнего задания 1. Имеется условный оператор: if D<>10 Then writeln('ypa!') Else Writeln(' плохо...'); Можно ли заменить его следующими операторами: if D=10 Then Writeln('ypa!') Else Writeln('nлoxo...'); (НЕТ) if Not(D=W) Then Writeln('ypa!') Else Writeln('nлoxo...'); (Да, если W=10 ) if Not(D=10) Then Writeln('плоxo...') Else Writeln('ypa!'); (НЕТ) if Not(D<>10) Then Writeln('nлoxo...') Else Writeln('ypa!'). (ДА) 2. Какими будут значения переменных j, k после выполнения условного оператора: Pascal if j>k Then j:=k - 2 Else dec(k,2); если исходные значения переменных равны: Ответы: (j=3, к=3) (j=3, к=1) (j=0, k=2) Цикл с параметром For <параметр>:=А То В Do <тело цикла> Если h=1, то шаг можно опустить. Оператор цикла с параметром применяют тогда, когда известно число повторений одного и того же действия. Начальное и конечное значения параметра цикла могут быть представлены константами, переменными или арифметическими выражениями. Цикл с параметром Рассмотрим, как выполняется оператор цикла с параметром вида For <параметр>:=А То В Do <тело цикла> Сначала вычисляются значения выражений А и В. Если А<=В, то <параметр> последовательно принимает значения, равные А, А+1,..., В-1, В, и для каждого из этих значений выполняется <тело цикла>. Если А>В, то <тело цикла> не будет выполнен ни разу и выполнение цикла с параметром сразу же закончится. Оператор цикла с параметром For <параметр>:=А DownTo В Do <тело цикла> выполняется аналогичным образом, но значение <параметра> изменяется с шагом, равным -1. Составить программу вычисления значения выражения y=1+1/2+1/3+… +1/20. В данном случае целесообразно организовать цикл с параметром, изменяющимся от 1 до 20, то есть шаг изменения параметра равен +1. Обозначим: у — очередное значение суммы дробей; n — параметр цикла. Учитывая это, составим программу: Program prim1; uses crt; Var n: Integer; y: real; Begin clrscr; y:=0; Задаем начальное значение равное нулю. Организовываем цикл с параметром от 1 до 20 For n:=1 to 20 Do begin y:=y + 1/n; Находим очередную сумму. Writeln('y=',y); Выводим на экран очередную сумму. End; end. Самостоятельное задание. А) Переставьте строки вывода результата за End; Б) Измените цикл с 20 до 1. Из чисел от 10 до 99 вывести те, сумма цифр которых равна S(0<S<18). Вопросы для обсуждения 1. Каким действием можно выделить последнюю цифру числа? 2. Каким действием можно выделить первую цифру числа? Обозначим: k — это просматриваемое число; p1 — это первая цифра числа k, р2 — это вторая цифра числа k; s — это сумма цифр данного числа k. Число k будем выписывать только в том случае, когда сумма р1 и р2 будет равна s. TP Program prim2; uses crt; Var k,n,pl,p2,s:Integer; Begin clrscr; Writeln(' целое число n='); Readln(n); Задаем целое число от 10 до 99. For k:=10 To 99 Do P1:=k Div 10; Организовываем цикл с параметром Выделяем первую цифру. p2:=k Mod 10; s:=p1+p2; Begin Выделяем вторую цифру Находим сумму цифр if s=n Then Writeln(‘k=’,k); Если сумма цифр равна заданному числу N, то выводим К End; End. Дано натуральное число n (1000<=N<=9999). Определить, является ли оно палиндромом ("перевертышем"), с учетом четырех цифр. Например, палиндромами являются числа: 2222, 6116, 1441. Вопросы для обсуждения Дано число п. Каким образом можно построить "перевертыш" данного числа? Сколько переменных необходимо для решения данной задачи? Объясните назначение каждой переменной. Обозначим: п — вводимое число; т — дубликат числа п; а — перевертыш числа п; i — переменная цикла для создания перевертыша. Program Prim3 uses crt; Var n, m, a, i: Integer; Begin Clrscr; Writeln('N<=9999'); Readln(n); Введем четырехзначное целое число М:=п; а:=0; Запоминаем введенное целое число и задаем начальное значение перевертыша For i:=1 To 4 Do; Begin Организуем цикл с параметром от 1 до 4. а:=а*10+М Mod 10; m:=m Div 10; Находим перевертыш числа N. End; If a=n Then Writeln('DA!') Если A=N, то данное число является перевертышем. Else Writeln('NO'); Readln; End. TP Домашнее задание 1. Определить значение переменной S после выполнения следующих операторов: s:=0; n:=5; For i:=2 То n Do s:=s+100 Div i 2. Какие из приведенных операторов правильные и почему? А) For i:=12 To 15 Do s:=s+i; Б) For a:=30 To 20 Do if a Mod 3=0 Then d:=d+1; 3. Как выглядит оператор цикла с параметром? Как он работает?