Оператор цикла с постусловием

План-конспект проведения открытого занятия.

Дата проведения: 21.02.2005г. Время: 15.00. Группа: 11в

Тема: Циклы с условиями. Циклы WHILE,REPEAT ….UNTIL Решение задач.

Цели занятия

Учебная –Что такое WHILE,REPEAT ….UNTIL ?Как выглядит цикл с предусловием, как он работает, примеры. Как выглядит цикл с постусловием, как он работает,примеры.

Воспитательная –использовать последние достижения современной психолого- педагогической науки, способствовать развитию и формированию познавательной активности кружковцев, воспитывать здоровое честолюбие, умение самостоятельно выполнять работу, а также стремление к достижению успеха.

Профессиональная –стимулировать целенаправленную деятельность кружковцев, развивать познавательный интерес в изучении основ информатики, различных языков программирования

Продолжительность занятия:45 минут.

Оборудование, наглядные пособия:компьютер, методические разработки, раздаточный материал, работающие программы кружковцев в режиме алгоритмического языка Turbo Pascal 7.0. На доске написана тема занятия.

Ход занятия.

1. Организационный момент:Приветствие.Установить должную дисциплину в группе. Отметить отсутствующих, сообщить тему занятия, цели и задачи.

Опрос по пройденному материалу (актуализация опорных знаний).

Вопросы на повторение:

Прежде, чем мы с вами перейдем к следующей теме, поговорим о ключевых понятиях предмета информатики:

1) что такое алгоритм, какие вы знаете виды алгоритмов; программа и алгоритм – это одно и то же?

2) Какие вы знаете правила записи программ на Turbo Pascal 7.0. ?

3) Как выглядит полный условный оператор? Как он работает?

Как выглядит неполный условный оператор? Как он работает?

4) какие целые, вещественные типы вы знаете?

5) Как выглядит цикл FOR? Как он работает?

3. Теоретическая часть:

Называются тема, цели и задачи занятия.

НОВАЯ ТЕМА:

Циклы с условиями.

Цикл с предусловием. Цикл с постусловием. Решение задач

Основные вопросы темы:

ЦИКЛЫ С УСЛОВИЯМИ

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

Цикл с предусловием используется тогда, когда число повторений оператора цикла заранее не известно, а задается некоторое условие продолжения цикла.

Оператор

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

While <условие> Do <тело цикла>;

Выполнение оператора цикла с предусловием начи­нается с проверки условия, записанного после слова While. Если оно соблюдается, то выполняется <тело цикла>, затем вновь проверяется условие и т.д. Как только при очередной проверке окажется, что условие не соблюдается, <тело цикла> выполняться не будет.

Примечание.

1. Если <тело цикла> состоит из нескольких
операторов, то они объединяются операторными
скобками.

2. В теле цикла обязательно должен быть оператор,
влияющий на соблюдение условия, в противном слу­чае произойдет зацикливание.

Пример

Подсчитать количество цифр заданного натураль­ного числа п.

Решение

Подсчет количества цифр начнем с последней цифры числа. На очередном шаге цикла увеличим счетчик цифр на единицу, а число уменьшим в 10 раз (тем самым мы избавляемся от последней цифры числа). Далее с полу­чившимся числом проделаем ту же последовательность

Program Example_8;

Var m, n: Longint;

k: Integer; {счетчик цифр}

Begin

Writeln(' Введите натуральное число'); {вводим натуральное число п>0} ' Readln(n);

m:=n; k:=0;

While m<>0 Do

{пока (While) число m<>0 делать(Do)}

Begin

Inc(k); { k:=k+l;} m:=m div 10;

{"выбрасываем" из числа последнюю цифру} End;

Writeln('В числе ',n,' — ', k,’ цифр');
{вывод количества цифр}
Readln;
End.

Трассировка примера

Рассмотрим выполнение этой программы в поша­говом режиме для числа 65387:

n m k

В результате работы программы на экране появит­ся предложение: I
В числе 65387 — 5 цифр

Пример

Дана непустая последовательность натуральных чи­сел, за которой следует 0. Найти порядковый номер наименьшего элемента последовательности.

Решение

Обозначим через х и i очередной элемент последо­вательности и его номер; min и k — минимальный эле­мент последовательности и его номер. Считывание эле­ментов последовательности производится до тех пор, пока не будет введен 0, то есть пока х<>0. Начальный элемент последовательности будет равен min. Очередное вводимое число (оче­редной элемент последовательности) требуется сравни­вать с текущим значением минимума, и если текущее значение min окажется больше очередного элемента последовательности, то min нужно изменить, а номер очередного элемента последовательности — запомнить. Учитывая вышесказанное, составим программу:

Program Exaraple_9;

Var x, i, min, k : Integer;

Begin

Writeln('Введите первый элемент

последовательности');

Read(x);

k:=l; min:=x; i:=2;

While x<>0 Do

Begin

If x<min Then

Begin

min:=x; k:=i-l;

End;

Writeln('Введите ',I,' элемент последовательности' ); Read(x);

Inc(i) ;

End;

Writeln('Номер минимального элемента — ', k); End.

Цикл с постусловием

1. Запишите конструкцию цикла с предусловием.
В каких случаях применяется цикл с предусловием?

2. Далее представлен фрагмент программы вычисления количества цифр в заданном натуральном числе.
Найдите в нем ошибки и исправьте их.

a:=n; ck:=0; While a>=0; Do

Begin

ck:=ck+l;

a:=a div 10

End;

Для программной реализации циклических алго­ритмов с неизвестным заранее числом повторений име­ется еще один оператор — оператор цикла с постусло­вием, который имеет следующий вид:

Оператор цикла с постусловием

Repeat{повторять}

<оператор 1>;

<оператор 2>;

. . . .

<оператор n>;

Until {до тех пор пока не} <условие>;

Этот оператор отличается от цикла с предусловием тем, что проверка условия производится после очеред­ного выполнения тела цикла. Это обеспечивает выпол­нение цикла хотя бы один раз.

Обратите внимание на то, что данный оператор цикла предполагает наличие нескольких операторов в теле цикла, поэтому служебные слова Begin и End не нужны.

Последовательность операторов, входящих в тело цикла, выполняется один раз, после чего проверяется соблюдение условия, записанного следом за служебным словом Until. Если условие соблюдается, цикл завер­шается. В противном случае — тело цикла выполняет­ся еще раз, после чего снова проверяется соблюдение условия.

Пример

Составить программу планирования закупки това­ра в магазине на сумму, не превышающую заданную величину.

Решение

Обозначим через х и k цену и количество товара, через р — заданную предельную сумму, через s — стоимость покупки. Начальное значение общей сто­имости покупки s равно нулю. Значение предель­ной суммы считывается с клавиатуры. Необходимо повторять запрос цены и количества выбранного то­вара, вычислять его стоимость, суммировать ее с общей стоимостью и выводить результат на экран до тех пор, пока стоимость не превысит предельную сумму р.

Program Example_10;

Var x, k, p, s: Integer;

Begin

Writeln( 'Предельная сумма — ');

Readln(p);

s:=0;

Repeat

Writeln(' Введите цену товара и его

количество' ) ;

Readln (x, k) ;

s :=s+x*k;

Writeln ( 'Стоимость покупки равна ',s);

Until s>p;

Writeln { 'Суммарная стоимость покупки превысила предельную сумму');

End.

Пример.
Алгоритм Евклида — это алгоритм нахождения наибольшего общего делителя (НОД) двух целых неотрицательных чисел. Пусть х и у одновременно не равные нулю целые неотрицательные числа и пусть х>у. Если у=0,то НОДА(х,у)=х, а если y<>Q, то для чисел х, у и r,
где r— остаток от деления х на у, выполняется равенство НОД(x,y)=НОД(y,г). "

Например, пусть х=48,y=18.

НОД(48,18)=НОД(18,12)=НОД(12,6)==НОД(6,0)=6.

Написать программу нахождения наибольшего об­щего делителя двух неотрицательных чисел.

Решение

Для решения данной задачи воспользуемся циклом с постусловием:

Program Example;

Var х, у: Integer;

Begin

Writeln('Введите два числа');

Readln(х,у);

Repeat {выполнять}

If x>y Then х:=х mod у

Else у:=у mod X;
Until (х=0) or (y=0);

{до тех пор, пока одно из чисел не станет равно нулю}

Writeln('НОД=', х+у)); {вывод НОД. Одно из чисел обязательно равно нулю}.

Readln;

End.

Пример

Если мы сложим все цифры какого-либо числа, за­тем все цифры найденной суммы и будем повторять этот процесс, мы наконец получим однозначное число (цифру), называемое цифровым корнем данного чис­ла. Например, цифровой корень числа 34 697 равен 2 (3+4+6+9+7=29; 2+9=11; 1+1=2). Составим про­грамму для нахождения цифрового корня

Решение

Вопросы для обсуждения:

1. Сколько переменных потребуется для решения задачи, какого типа будут эти переменные?

2. Всегда ли необходимо вычислять сумму цифр числа (а если введенное число является однозначным) ?

3. Вычислим сумму цифр числа: для этого будем вы­делять цифры числа и увеличивать текущую сумму. Ка­кую конструкцию необходимо использовать для этого?

4.В результате выполнения цикла мы получили число. Является ли оно однозначным?

ProgramExample_18; Var n,k,s:Longint; Begin

Writeln{'Введите число1);

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); End.

Решение задач

1. Найти все трехзначные числа, удовлетворяющие следующим условиям:

a)любые две цифры числа различны;

b)число равно среднему арифметическому всех трехзначных чисел (включая данное), состоящих из тех же цифр.

2. Стороны прямоугольника заданы натуральными числами М и N. Составить программу, которая нахо­дит, на сколько квадратов, стороны которых выраже­ны натуральными числами, можно разрезать данный
прямоугольник, если от него каждый раз отрезается квадрат максимальной площади.

3. Дано натуральное число п>2. Составить програм­му разложения этого числа на простые множители.Реализовать два варианта.

a) каждый простой множитель р должен быть вы­веден k раз, где k — натуральное число, такое, что n делится на р* и не делится на pt*1; j

b)каждый простой множитель должен быть выведен ровно один раз.

4.Даны натуральные числа N и р. Получить все натуральные числа, меньшие N и взаимно простые с р.

5. Даны целые числа р и q. Получить все делители числа qt взаимно простые с р.

6. Найти наименьшее натуральное число N, представимое двумя различными способами в виде суммы кубов двух натуральных чисел.

7.Найти все простые несократимые дроби, заключенные; между 0 и 1, знаменатели которых не пре­вышают 7,(дробь задается двумя натуральными числами — числителем и знаменателем).

8. Дана последовательность операторов:

а:=1; Ь:=1;

While a+b <8 Do

Begina:=a+l; Ь:=b-2; End;

s:=a+b;

Сколько раз будет повторен цикл и какими будут значения переменных a, b и s после завершения этой последовательности операторов?

9 Какими будут значения переменных а и b пос­ле выполнения последовательности операторов:

а:=1; Ь:=1;

While a<=3 Do a:=a+l; b:=b+l;

10. Определите значение переменной s после вы­полнения следующих операторов:

a) s:=0; i:=0;

Wnile i<5 Do Inc(i); s:=s+100 div i;

b) s:=0; i:=l;

While i>l Do

Begin s:=s+100 div i; dec(i) End;

11. В последовательности операторов для вычисле­ния факториала f числа n содержится пять ошибок.
Найдите эти ошибки.

k:=l; f:=0; While k<n Do f=f*k

k:=k+l.

12.Найдите и исправьте ошибки в следующем фрагменте программы, определяющей для заданного натурального числа n число,

записанное цифрами числа n
в обратном порядке.

р:=n;

While p>=0 Do

Begin .

a:=a+p mod 10;

p:=p div 10;
End;

13. Найти сумму цифр числа.

14. Найти старшую цифру числа.

15. Приписать по 1 в начало и в конец записи числа
п. Например, из числа п=3456 надо получить 134561.

16. Поменять местами первую и последнюю цифры
числа.

17.Найти количество четных цифр натурального
числа.

18.Найти самую большую цифру целого числа.

19Найти сумму цифр целого числа, больших 5.

20.Сколько раз данная цифра встречается в целом числе?

21.Составить программу, проверяющую, является
ли последовательность из 10 целых чисел, вводимых с
клавиатуры, возрастающей.

22.Составить программу, проверяющую, является
ли заданное натуральное число палиндромом, то есть
таким, десятичная запись которого читается одинако­во слева

направо и справа налево.

23.Определить значение переменной s после вы­полнения следующих операторов:

s:=0; i:=l;

Repeat s:=s+5 div i; i :=!-!;

Until i<=l;

2. Произведение первых N нечетных чисел равно Р .
Сколько сомножителей взято?

3. Числа Фибоначчи fn определяются по формулам:
f0=f1=1; fn=fn-1+fn-2при п=2, 3,...

Составить программу для

a) вычисления f4Q;

b) поиска первого числа Фибоначчи, большего т

с) вычисления суммы всех чисел Фибоначчи, не превосходящих 1000.

24.Составить программу для определения того, является ли заданное натуральное число совершенным.
Совершенным называется число, равное сумме всех
своих положительных, делителей (включая единицу,
но исключая, разумеется, само число).

25.Показать, что любой оператор цикла с предусло­вием можно записать с помощью условного оператора
и оператора цикла с постусловием.

26Показать, что любой оператор цикла с постусловием можно записать с помощью условного оператора
и оператора цикла с предусловием.

27.Дана непустая последовательность натуральных
чисел, за которой следует 0. Вычислить сумму положи­
тельных элементов последовательности, порядковые
номера которых нечетны

Наши рекомендации