Цикл с параметром

advertisement
Цель урока:
План урока:
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. Как выглядит оператор цикла с параметром? Как он
работает?
Download