Открытый урок по теме: "Оператор цикла с постусловием"

Разделы: Информатика


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

Цели и задачи:

  • Проверить знания матриала по теме “Цикл с предусловием”.
  • Научить решать задачи по теме “Оператор цикла с постусловием”, составление блок-схем.
  • Активизировать знания по теме “Оператор цикла с постусловием” для решения задач по данной теме.

Оборудование: компьютерный кабинет, экран, карточки с заданиями для учащихся.

Программное обеспечение: программа “Pascal ABC”.

ХОД УРОКА

I. Проверка домашнего задания

Задания:

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

a:=1; b:=1;
while a+b; b:=b+2 end;
s:=a+b
сколько раз будет повторен цикл, и какими будут значения переменных a, b и s после завершения этой последовательности операторов?

Ответ: 2 раза, s=8, a=3, b =5.

2. Что будет выведено на экране монитора после выполнения следующего фрагмента программы:

b:=0;
while a<>0 do
begin
a:=a div 10;
h:=b*10+a mod 10;
end;
write(h);
если а=13305?

Ответ: h=1.

Ученик изображают на доске блок-схему.

Вопросы:

– Как записывается оператор с предусловием?

– В каких случаях целесообразно использовать оператор с предусловием?

II. Изучение нового материала

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

В этом цикле условие проверяется после выполнения тела цикла. Цикл будет повторяться до тех пор, пока проверка этого условия будет давать результат “ложь”(false), то есть пока условие не выполнено. Даже если условие сразу оказывается истинным, цикл выполнится хотя бы один раз.

– Вот как это тип цикла реализуется на языке Паскаль:

Repeat < оператор 1 >;
< оператор 2 >;
< оператор n >;
until <условие >

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

– Запишем цикл с постусловием на языке блок-схем:

 

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

Решение.

– Составим блок-схему алгоритма:

Запишем программу на языке Паскаля:

Program summer; { Задаем имя программе }
uses crt;
var
sum, a: real; { sum – для накопления суммы, а – для очередного числа }
begin
sum:=0; {Обнуляем сумму}
REPEAT
sum:=sum+a; {Добавляем введенное число к сумме}
write('Введите число:');{Ввод определенного числа}
readln(a)
UNTIL a<0; {Проверяем введенное число на отрицательность}
{При выходе из цикла выполняется этот оператор:}
write('Сумма чисел=' ,sum:5:3);
readln
end.

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

а) всей группой у доски:

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

Решение:

1. Обозначим через:

с – цену товара;
k – количество товара;
р – заданную предельную величину;
s – начальное значение общей стоимости покупки;

Начальное значение (s) = 0, значение предельной суммы (р) – вводится с клавиатуры. Необходимо повторять запрос цены и количества выбранного товара, вычислять его стоимость и выводить результат на экран до тех пор, пока она не превысит предельную сумму, в этом случае на экран нужно вывести сообщение о превышении.

2. Самостоятельно составить блок-схему для задачи

3. Запишем решение на языке Паскаль:

program pokypka;
uses crt;
var c,k,p,s:integer;
begin
clrscr;
{Вводим наличие денежных средств с клавиатуры}
writeln ('Предельная сумма – ');readln(p);
s:=0; {вводим начальное значение суммы}
REPEAT;
writeln('Цена товара – ');readln(c); {вводим цену товара}
writeln('Количество товара – ');readln(k); {вводим количество товара}
s:=s+c*k; {Находим стоимость приобретенных товаров}
{Выводим на экран стоимость определенных товаров}
writeln('Стоимость покупки =',s);
UNTIL s>p; {Повторяем до превышения наличия денег}
writeln('Не хватило!');
end.

(Гимнастика для глаз)

– Самостоятельно осуществите досрочный выход из цикла при условии, что Вы приобрели вещи на сумму Р/2.

б) за компьютерами по карточкам-заданиям (карточки раздаются каждому ученику по вариантам):

Карточки-задания по теме “Цикл с постусловием”

Задача № 1 (вариант1):

Введите два числа (например A=5 и В=8) и найдите их произведение, используя только операцию сложения.

Задача № 2 (вариант 2):

Введите два числа (например A=45 и В=8) и найдите их частное от деления нацело(в переменной А), используя только операцию вычитания.

Задание № 3 (вариант 3):

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

S:=0; i=l;
Repeat S:=S+5 div i; i:= l – l;
Until i<= 1;

IV. Домашнее задание

Задача: составить программу и блок-схему нахождения наибольшего общего делителя (НОД) двух натуральных чисел.

Краткий разбор домашнего задания.

Алгоритм нахождения (НОД) двух целых неотрицательных чисел, основан на следующих свойствах: пусть х и у неравные 0, целые неотрицательные числа и пусть х >=у, тогда если у=0, то НОД(х,у)=х, а если у<>0, то для чисел х, у и r, где r – остаток от деления на х на у выполняется равенство НОД(х,у)= НОД(у, r)

V. Подведение итогов

Выводы:

  1. Выполнение цикла с постусловием прекращается, как только логическое условие принимает значение “истина”;
  2. Цикл с постусловием будет выполнен хотя бы один раз.
  3. При использовании нескольких операторов в теле цикла repeat…until операторская скобка (begin … end) не нужна, так как пара (repeat…until) сама является операторской скобкой.

Разбор вопросов учащихся. Оценка работ учащихся комментируется, объясняются допущенные оценки. Завершается занятие.

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

Литература:

  1. Д.М. Ушаков, Т.А. Юркова. “Паскаль для школьниов”,  Изд.дом “Питер”, 2006 г.
  2. Г.Г. Рапаков, С.Ю. Ржеуцкая. “Turbo Pascal для студентов и школьников”, “БХВ-Петербург”, 2005 г.
  3. В.В. Фараонов. “Turbo Pascal начальный курс”, М. “Нолидж”, 2002 г.