Вы находитесь на странице: 1из 6

Муниципальное бюджетное общеобразовательное учреждение СОШ №30

Конспект урока
информатики на тему:

«Операторы цикла на Паскале.


Цикл с предусловием.»

9 класс

Автор: Дзиова Марина Петровна учитель информатики

г.Владикавказ

1
Тема: Операторы цикла на Паскале. Цикл с предусловием.
Цель: познакомить учащихся с форматом оператора цикла с предусловием, учить
составлять программы на использование оператора цикла с предусловием.

Ход урока
1. Организационный момент.
2. Актуализация знаний.

Задание. Написать программу для решения следующей задачи: Дано количество


информации в битах. Определить целое количество байт.

Для решения такого рода задач нам необходимо вспомнить операции целочисленного
деления (div) и взятия остатка (mod). При этом, обычно, используется несколько
стандартных  приёмов,  которые для успешного решения таких задач, необходимо твёрдо
усвоить.

А mod B = 0 - условие делимости целого A на целое B.

A mod 2 = 0 - условие чётности целого A.

A mod 2 <> 0 - условия нечётности целого A.


A mod 2 =1
A mod 2 >0

A mod 10 - значение последней цифры в десятичной записи целого  А


(например, 987 mod 10 = 7).

A div 10 число, десятичная запись которого получится отбрасыванием последней


цифры в десятичной записи целого числа А (например, 987div 10 =98).

1. Дано двузначное число. Найти сумму его цифр.


program dv;
var z,s: integer;
begin
writeln('введите двузначное число');
readln (z);
s:= z mod 10 + z div 10;
writeln ('сумма цифр этого числа = ', s);
end.

2. Дано трехзначное число. Найти сумму его цифр.


program tr;
var z,s: integer;
begin
writeln('введите трехзначное число');
readln (z);
s:= z mod 10 +( z div 10) mod 10 + z div 100; (или s:= z mod 10 +( z mod 100) div 10
+ z div 100 )
writeln ('сумма цифр этого числа = ', s);
end.

3. Дано пятизначное число. Найти сумму его цифр.

2
Решение этой задачи без использования оператора цикла будет очень громоздко. Нам уже
известен оператор цикла с параметром FOR (используется когда известно количество раз
выполнения тела цикла), поэтому можем составить программу с его использованием.

А если усложним задачу: найти сумму цифр любого, вводимого с клавиатуры числа. В
этом случае оператор FOR нам уже не подойдет.
Что делать?

3. Новый материал.
Оператор цикла while – цикл с предусловием
Оператор цикла while имеет следующую форму:
while условие do
  оператор
Условие представляет собой выражение логического
типа, а оператор после do называется телом цикла. не
Условие
Перед каждой итерацией цикла условие вычисляется, и повтора т
если оно истинно, то выполняется тело цикла, в
противном случае происходит выход из цикла. да
Если условие всегда оказывается истинным, то может
произойти зацикливание: Тело
while 2>1 do цикла
  write(1);
Чтобы прервать зациклившуюся программу, следует
использовать комбинацию клавиш Ctrl-F2
Точка с запятой сразу после do в Pascal ABC считается
синтаксической ошибкой.

1. Найти сумму цифр любого, вводимого с клавиатуры числа.


program sumz;
var z, s, d : integer;
begin
writeln('введите любое число');
readln (z);
s:=0;
while z>0 do begin
d:= z mod 10;
s:= s + d;
z:= z div 10;
end;
writeln ('сумма цифр этого числа = ', s);
end.

 Допишем или изменим эту программу так, чтобы она считала произведение цифр этого
числа (p:=1;), количество цифр в заданном числе (k:=0; k:=k+1).
 Находим max и min цифры в записи этого числа (max инициализируем значением
«меньше меньшего», min инициализируем значением «больше большего»).

3
4.Решение задач.

Задача 1. Найти НОД(а, b).

program z1;
uses crt;
var a, b: integer;
begin
read (a, b);
while a<>b do
if a>b then a:=a-b else b:=b-a;
writeln (a);
end.

Задача 2. Определить количество цифр в числе.


program z1;
uses crt;
var n,i: integer;
begin
readln (n);
i:=0;
while n <>0 do
begin
n:= n div 10;
i:=i+1;
end;
write (i);
end.

Далее можно рассмотреть задание ЕГЭ 20 (анализ программы, содержащей циклы и


ветвления)
1) Ниже записана программа. Получив на вход число x , эта программа печатает два числа,
L и M . Укажите наибольшее из таких чисел x , при вводе которых алгоритм печатает
сначала 3, а потом 7.
var x, L, M: longint;
begin
readln(x);
L:=0; M:=0;
while x > 0 do begin
L:= L + 1;
M:= M + x mod 10;
x:= x div 10;
end;
writeln(L); write(M);
end.

Необходимо научить учащихся не только писать правильную


программу для решения поставленной задачи, но и уметь читать
имеющуюся.
Анализируем: переменная L (L:=0, L:= L + 1) работает как счетчик, что
считает? Количество вхождений в цикл, а цикл работает до тех пор,
пока моё число X, введенное с клавиатуры не «закончится» (while x > 0
4
do), при каждом вхождении мы «отбрасываем» последнюю цифру числа (x:=
x div 10;), таким образом становится очевидно, что в результате
выполнения этой программы в переменной L окажется число, равное
количеству, значащих цифр в введенном числе X.Разобрались, введенное
число будет трехзначным. Переменная M (M:=0, M:= M + x mod 10)считает
сумму цифр, введенного числа X. С эти не сложно будет разобраться,
т.к. учениками были самостоятельно написаны аналогичные программы. В
результате проведенного анализа задача свелась к нахождению
максимального трехзначного числа, сумма цифр которого равна 7.
Необходимо еще сделать акцент на слове «максимальное». Очевидно, что
результат программы будет таким же при вводе чисел
124,241,340,412,502,520,610…, но нас просили найти из всех возможных
чисел максимальное, при вводе которого, программа печатает сначала 3, а
потом 7, и подвести таким образом к верному ответу 700.

2) . Ниже записана программа. Получив на вход число x , эта программа печатает два числа,
a и b . Укажите наибольшее из таких чисел x , при вводе которых алгоритм печатает
сначала 2, а потом 72.
var x, a, b: longint;
begin
readln(x);
a:=0; b:=1;
while x>0 do begin
a:=a+1;
b:=b*(x mod 10);
x:= x div 10;
end;
writeln(a); write(b);
end.
13) Ниже записана программа. Получив на вход число x , эта программа печатает два числа,
L и M . Укажите наименьшее из таких чисел x , при вводе которых алгоритм печатает
сначала 3, а потом 7.
var x, L, M: longint;
begin
readln(x);
L:=0; M:=0;
while x > 0 do begin
L:= L + 1;
M:= M + x mod 10;
x:= x div 10;
end;
writeln(L); write(M);
end.

5. Итог урока.
6. Домашнее задание.
Задачи: Дано число n.
a) напечатать те натуральные числа, квадрат которых не превышает n.
b) найти первое натуральное число, квадрат которого больше n.
c) cреди чисел 1, 4, 9, 16, 25… найти первое число, большее n.

5
a) program z1;
uses crt;
var i, n: integer;
begin
read (n);
i:=1;
while sqr(i) < n do
begin writeln (i); i:=i+1; end;
end.

b) program z1;
uses crt;
var i,n:integer;
begin
read (n);
i:=1;
while sqr(i)<n do i:=i+1;
writeln(i);
end.

c) program z1;
uses crt;
var i, n: integer;
begin
read (n);
i:=1;
while sqr(i)<n do
i:=i+1;
writeln (sqr(i));
end.