Циклические операторы с постусловием и с предусловием
Оценка 5
Рабочие тетради
doc
информатика +1
10 кл—11 кл +1
25.04.2017
Занятие строится таким образом, что после прослушивания теоретического материала (10 –15 мин.), учащимся предлагается практическое задание, которое выполняется ими за 20 - 30 мин. и корректируется в процессе изучения материала в более сложную задачу по изучаемой теме.
Автор сознательно избегал сложных примеров, будучи убежденными, в том, что гораздо важнее для учащихся понимание алгоритмов предлагаемых задач, приобретение навыков разработки алгоритмов, их программирования и выполнения на компьютере в течение одного занятия. Такой подход к изучению языка программирования позволяет сосредоточить внимание на самом процессе программирования, который в данном случае более важен для изучения языка, чем решение сложной задачи, наверняка трудной большинству учащихся. Такие задачи, по мнению авторов, неоправданно занимают большое количество учебного времени, превращая учителя из инициатора процесса обучения в диктатора.
Занятие 6ч1.doc
Циклические операторы с постусловием и с предусловием
Занятие 6
1. Урок 1. Оператор цикла с постусловием repeat … until.
2. Урок 2. Оператор цикла с предусловием while … do.
3. Урок 3. Практическая работа.
4. Контрольные вопросы и упражнения.
Отличительной чертой операторов циклов с постусловием и предусловием является то, что заранее не
известно количество итераций, как это известно, в операторе цикла со счетчиком for … to … do.
Урок 1. Оператор цикла с постусловием repeat … until
1.1. Оператор цикла с постусловием repeat … until.
1.2. Алгоритм работы оператора цикла с постусловием.
1.3. Практический пример.
1.1. Оператор цикла с постусловием repeat … until
Оператор имеет следующий формат:
repeat
<Оператор 1>
<Оператор 2>
…
<Оператор N>
until <Логическое условие>;
где
<Оператор 1> … <Оператор N> операторы (оператор) цикла;
<Логическое условие> логическое условие или логическое выражение, операнды которого могут быть
записаны явно или вычислены в программе.
выполняют ключевые слова repeat и until.
Оператор repeat … until не требует операторных скобок в случае составного оператора. Эту функцию
1.2. Алгоритм работы оператора цикла с постусловием
В начале работы выполняются операторы цикла, затем проверяется логическое условие. В случае, когда
условие ложно (False), происходит вычисление логического условия и повторение операции до тех пор, пока (until)
условие ложно. В случае истинности логического условия (True), происходит выход из цикла и выполнение
следующего за циклом оператора. Поскольку проверка логического условия происходит в конце оператора цикла, то
циклическая операция выполняется хотя бы один раз. Это означает, что оператор repeat … until не годится для
ситуации, когда операторы цикла не должны выполняться ни разу.
Словесные алгоритмы, которые применяются для объяснения работы несложных алгоритмов, при всей их
подробности описания, нельзя назвать наглядными, поэтому существует графическая форма представления работы
алгоритма в виде блоксхемы, как более наглядного (см. рис. 1).
Начало
Выполнение
операторов цикла
Вычисление
операнда
логического условия
Да
Логическое
условие
Нет
Выполнение строк
программы
за циклом
Конец
35 Оператор цикла с постусловием repeat ... until. Оператор цикла с предусловием while ... do. Практическая работа
Рис. 1. Блоксхема выполнения циклической операции с постусловием.
Рассмотрим работу оператора с постусловием на примере программы, приведенной ниже.
Задача. Вывести на экран дисплея десять случайных действительных чисел, попадающих в заданный диапазон
(2 : 3). Генерация случайных чисел должна происходить в диапазоне от 0 до 10.
Для решения задачи организован цикл for … to … do со счетчиком, который называется внешним,
обеспечивающий десятикратное выполнение внутреннего цикла repeat … until по генерации случайных чисел.
Количество итераций внутреннего цикла случайно и заканчивается, когда случайное число попадет в указанный
диапазон. Это число будет напечатано на экране дисплея.
Program V1L07P1; {Попадание чисел в заданный диапазон}
Uses Crt;
Var n :real;
i :integer;
{}
begin
ClrScr;
Randomize;
WriteLn('Случайные числа, попадающие в интервал от 2 до 3:');
for i:=1 to 10 do
begin
{Внешний цикл}
{Инициализация генератора случайных чисел}
repeat
n:=Random*10;
{Внутренний цикл}
{Генерация случайного числа в диапазоне от 0 до 10}
until (n>2.0) and (n<3.0); {Логическое условие внутреннего цикла}
WriteL(n:4:2);
end;
ReadKey
end.
{Печать числа, попавшего в заданный интервал}
{Конец внешнего цикла}
Результат работы программы
Случайные числа, попадающие в интервал от 2 до 3:
2.50 2.92 3.00 2.42 2.16 2.40 2.49 2.49 2.14 2.04
Урок 2. Оператор цикла с предусловием while … do
2.1. Оператор цикла while ... do
2.2. Алгоритм работы оператора цикла с предусловием.
2.3. Порядок выполнения задания на компьютере.
2.4. Практический пример.
Оператор цикла с предусловием является наиболее универсальным, чем рассмотренные ранее операторы и,
практически, позволяет обходиться без операторов цикла со счетчиком (for … to … do).
2.1. Оператор цикла while … do (цикл с предусловием)
Оператор имеет следующий формат:
while <Логическое условие> do <Оператор>;
или в случае составного оператора:
while <Логическое условие> do
begin
<Оператор 1>;
<Оператор 2>;
…
<Оператор N>;
end;
<Логическое условие> булевы выражения, операнды которых могут быть записаны явно или вычислены в
где
программе;
<Оператор 1> … <Оператор N> , <Оператор> операторы (оператор) программы, которые выполняются
в цикле.
36 2.2. Алгоритм работы оператора цикла с предусловием
Блоксхема работы оператора цикла с предусловием представлена на рис. 2.
Циклическая операция начинает выполняться с проверки логического условия. В случае, когда
логическое условие не выполняется (False), вход в цикл не происходит и управление передается следующему
оператору программы, минуя циклическую операцию.
Когда же логическое условие выполняется (True), происходит выполнение операторов цикла до тех пор, пока
справедливо логическое условие.
Вычисление
операнда
логического условия
Нет
Начало
Логическое
условие
Да
Выполнение
операторов цикла
Выполнение строк
программы
за циклом
Конец
Рис. 2. Блоксхема выполнения циклической операции с предусловием.
2.3. Порядок выполнения задания на компьютере
Рассмотрим порядок выполнения задания на компьютере на примере, предлагаемой ниже задачи.
разработка на компьютере, в данном случае решение задачи, осуществляется по следующему порядку.
Всякая
2.3.1. Предложение на разработку
На этом этапе разработчику предлагается некоторое задание, как правило, совершенно некорректное и, в
случае его согласия, переходят к следующему этапу.
2.3.2. Постановка задачи
Это определение, совместно с заказчиком, входных и выходных данных задачи, режимы и устройства их ввода
и вывода, формы документов и конкретные алгоритмы их получения.
2.3.3. Разработка алгоритма
Данная работа осуществляется исполнителем для разработки программы (комплекса программ) выполнения
задания на компьютере. Программа может быть разбита на любое разумное количество подпрограмм и выполнена
различными программистами, которым поставлена конкретная задача. Конкретная задача выполняется программистом,
который определяет алгоритмы для ее выполнения.
Конкретный алгоритм, например, некоторое вычисление, может быть основан на предположении, правиле,
законе (например, физическом), теореме и т.д. Форма представления алгоритма, максимально подробная, может быть
словесной или в виде блоксхемы.
2.3.4. Программирование на выбранном языке программирования
Достаточно подробный алгоритм кодируется в программу на выбранном языке программирования. На этом
этапе исходный алгоритм может быть уточнен требованиями грамматики языка программирования в лучшую или
худшую сторону.
2.3.5. Отладка и тестирование
Этап отладки программы является естественным и происходит с любой самой простой программой, которую
пишет даже самый крутой программист.
37 Оператор цикла с постусловием repeat ... until. Оператор цикла с предусловием while ... do. Практическая работа
Квалификация программиста определяется временем выполнения этой работы и включает в себя исправление
грамматических ошибок, что довольно просто, и несложных вычислительных и логических ошибок. Сложные
вычислительные и логические ошибки исправляются на этапе тестирования программы проверки правильности
работы программы с данными, которые дают заранее известный результат.
2.3.6. Контрольный просчет на реальных данных и предложение программного продукта заказчику
Это окончательная проверка программного продукта (задания) перед сдачей его в эксплуатацию заказчику. На
данном этапе может произойти все, что угодно и только сила убеждения исполнителя и некомпетентность заказчика,
приводит к успешному завершению работ. В противном случае работы могут быть продолжены.
2.4. Практический пример
2.4.1. Предложение на разработку программы.
Задача. Определить максимальный показатель степени n для a >= b n.
2.4.2. Постановка задачи:
задачу решить для целых значений показателя степени n;
значения a и b вводить с клавиатуры;
результат решения выводить на дисплей в виде:
Для a >= b ; n = <вычисленное значение n>
обеспечить интерактивный режим ввода исходных данных (подсказку).
2.4.3. Разработка алгоритма
В качестве основы алгоритма вычисления показателя степени n, принимаем правило возведения числа в
некоторую степень, как многократное умножение этого числа на само себя, т.е. b * b * … * b n раз. Это
количество раз должно быть подсчитано компьютером, значит необходимо организовать счетчик, который будет
накапливать количество операций умножения, пока результат b n будет меньше или равен числу a,
введенному с клавиатуры.
Достаточно подробный словесный алгоритм решения поставленной задачи на компьютере выглядит
следующим образом:
1. Очистить экран от возможно присутствующей там информации.
2. Вывод на экран сообщения "Введи два числа a и b (a > b):"
3. Ввод чисел с клавиатуры.
4. Присвоение начального значения 0 показателю степени n.
5. Присвоение начального значения b вычисляемому произведению st.
6. Организация циклической операции с условием и пока a <= st вычислять произведение b
* b * b … и увеличивать значение n на 1 с каждой итерацией.
7. Вывести результат на экран дисплея в предлагаемой постановкой задачи форме.
8.
Задержать изображение результата на экране дисплея до нажатия любой клавиши на клавиатуре.
2.4.4. Программирование на выбранном языке программирования
Выбирается язык программирования TP 7.0 и в соответствии с правилами грамматики языка кодируется
программа:
Program V1L07P2; {Максимальная степень n для a >= bn}
Uses Crt;
Var a,b,st :real; {Описание переменных, используемых в программе}
n :integer;
{Вызов библ. модуля для работы с дисплеем}
{Основной блок программы}
begin
ClrScr;
WriteLn('Введи два числа a и b (a > b):');
Read(a,b);
n:=0;
st:=b;
{Циклическая операция с предусловием}
while st<=a do
begin
n:=n+1;
st:=st*b;
38
{Очистить экран}
{Вывод сообщения на экран}
{Ввод чисел с клавиатуры}
{Начальное значение показателя степени}
{Начальное значение вычисляемого произведения}
{Оператор цикла}
{Начало блока операторов цикла}
{Вычисление показателя степени}
{Вычисление операнда логического условия} end;
WriteLn('Для ',a:5:2,' >= ',b:5:2,' ^ n ; n = ',n);
{}
ReadKey
end.
{Конец блока операторов цикла}
{Вывод результата}
{Ожидание нажатия любой клавиши}
Возможный вариант работы программы
Введи два числа a и b (a > b):
6.78
2.4
Для 6.78 >= 2.40 ^ n ; n = 2
Далее предлагается набрать текст программы на компьютере, произвести отладку, тестирование и
контрольный просчет с различными входными данными.
Урок 3. Практическая работа
3.1. Задача построения таблицы Пифагора циклической операцией со счетчиком (for … to … do).
3.2. Задача построения таблицы Пифагора циклической операцией с постусловием (repeat … until).
3.3. Задача построения таблицы Пифагора циклической операцией с предусловием (while … do).
3.1. Задача построения таблицы Пифагора циклической операцией со счетчиком (for … to … do)
Построить блок схему и написать программу вывода на экран дисплея таблицы Пифагора, используя
циклическую операцию for … to … do.
Пояснение. Таблица Пифагора состоит из 10 строк и 10 столбцов, каждый элемент которой есть
произведение номера строки и столбца. Далее приведена программа расчета и печати таблицы Пифагора с
использованием цикла со счетчиком.
Program V1L07P3; {Таблица Пифагора (цикл for ... to ... do)}
Uses Crt;
Var a,b :byte;
{}
begin
ClrScr;
WriteLn('Таблица Пифагора':30); WriteLn;
for a:=1 to 10 do
begin
{Внешний цикл}
for b:=1 to 10 do
Write(' ',a*b:4);
{Внутренний цикл}
{Оператор внутреннего цикла}
WriteLn;
end;
{}
ReadKey
end.
{Конец внешнего цикла}
{Ожидание нажатия любой клавиши}
Начало
a := 1
b := 1
b := b + 1
Выво
д
a * b
a := a + 1
Да
b <=
10
Нет
Нет
a <=
10
Да
Конец
Рис. 3. Блоксхема алгоритма построения таблицы Пифагора циклической операцией со счетчиком.
3.2. Задача построения таблицы Пифагора циклической операцией с предусловием (repeat ... until)
Построить блоксхему и написать программу вывода на экран дисплея таблицы Пифагора, используя
циклическую операцию repeat ... until (см. рис.1).
Program V1L07V4; {Таблица Пифагора (цикл repeat ... until)}
39 Оператор цикла с постусловием repeat ... until. Оператор цикла с предусловием while ... do. Практическая работа
Uses Crt;
Var a,b,c:byte;
{}
begin
ClrScr;
WriteLn('Таблица Пифагора':30); WriteLn;
a:=0;
{}
repeat
b:=0;
a:=a+1;
repeat
b:=b+1;
c:=a*b;
Write(c:4);
until b=10;
WriteLn;
until a=10;
{}
ReadKey
end.
{Начальное значение 1го множителя}
{Внешний цикл}
{Начальное значение 2го множителя}
{Увеличение начального значения 1го множителя на 1}
{Внутренний цикл}
{Увеличение начального значения 2го множителя на 1}
{Вычисление произведения}
{Вывод результата на экран}
{Условие пока не будет равно выполняется внутренний цикл}
{Перевод строки}
{Логическое условие пока не будет равно выполнять внешний цикл}
{Ожидание нажатия любой клавиши}
3.3. Задача построения таблицы Пифагора циклической операцией со счетчиком (while … do)
3.3.1. Построить блоксхему и написать программу вывода на экран дисплея таблицы Пифагора, используя
циклическую операцию while ... do и repeat ... until (см.рис. 1, 2).
В данном варианте программы, внешний цикл организован циклической операцией с предусловием (while .. do),
а внутренний циклической операцией с постусловием (repeat ... until). Обратите внимание, что операторы внутреннего
цикла не заключены в операторные скобки (begin, end). Роль операторных скобок выполняет конструкция repeat ...
until.
Program V1L07P5; {Таблица Пифагора (внешний цикл while...do, внутренний цикл repeat...until)}
Uses Crt;
Var a,b,c:byte;
{}
begin
ClrScr;
WriteLn('Таблица Пифагора':30); WriteLn;
a:=0;
{}
while a<10 do
begin
{Пока выполняется логическое условие производить вычисления}
{Начальное значение 1го множителя}
b:=0;
a:=a+1;
repeat
b:=b+1;
c:=a*b;
Write(c:4);
until b=10;
WriteLn;
end;
ReadKey
end.
{Начальное значение 2го множителя }
{Увеличение начального значения 1го множителя на 1}
{Внутренний цикл}
{Увеличение начального значения 2го множителя на 1}
{Вычисление произведения }
{Вывод результата на экран}
{Условие пока не будет равно выполняется внутренний цикл}
{Перевод строки}
{Ожидание нажатия любой клавиши}
3.3.2. Построить блоксхему и написать программу вывода на экран дисплея таблицы Пифагора, используя
циклическую операцию while ... do (см. рис. 2).
Program V1L07P6; {Таблица Пифагора (внешний цикл while ... do, внутренний цикл while ... do)}
Uses Crt;
Var a,b,c:byte;
{}
begin
ClrScr;
WriteLn('Таблица Пифагора':30); WriteLn;
a:=0;
{}
{Начальное значение 1го множителя }
40 while a<10 do
begin
b:=0;
a:=a+1;
while b<10 do
begin
{Внешний цикл пока логическое условие верно}
{Начальное значение 2го множителя}
{Увеличение начального значения 1го множителя на 1}
{Внутренний цикл пока логическое условие верно}
b:=b+1;
c:=a*b;
Write(c:4);
{Увеличение начального значения 2го множителя на 1}
{Вычисление произведения }
{Вывод результата на экран}
end;
WriteLn;
end;
ReadKey
end.
{Ожидание нажатия любой клавиши}
3.4. Задача построения таблицы Пифагора с использованием операторов безусловного и условного переходов
Покажем такую возможность, хотя это худший вариант. Для решения данной задачи следует организовать
циклические операции, для чего необходимы операторы условного перехода if … then … else … и безусловного
перехода GoTo.
{Описание переменных сомножителей}
{Описание меток}
{Стирание экрана дисплея}
{Вызов библиотечного модуля работы с дисплеем и клавиатурой}
Program V1L07P7; {Таблица Пифагора (цикл с безусловным и условным переходами)}
Uses Crt;
Var a,b:byte;
Label met1,met2;
{}
begin
ClrScr;
WriteLn('Таблица Пифагора':30); WriteLn;
a:=1;
met1: b:=1;
met2: Write(' ',a*b:4);
if b<10 then
begin
b:=b+1;
GoTo met2;
end;
if a<10 then
begin
WriteLn;
a:=a+1;
GoTo met1;
end;
{}
ReadKey
end.
{Задержка работы программы до нажатия любой клавиши клавиатуры}
{Начальное значение первого сомножителя}
{Начальное значение второго сомножителя}
{Печать произведения}
{Условие внутренней циклической операции}
{Увеличение значения второго сомножителя}
{Безусловный переход на указанную метку}
{Условие внешней циклической операции}
{Перевод строки}
{Увеличение значения первого сомножителя}
{Безусловный переход на указанную метку}
Результат работы программ
Таблица Пифагора
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
Контрольные вопросы и упражнения
1. В чем отличие операторов цикла с постусловием от оператора цикла с предусловием?
2. Изобразите это отличие на блоксхеме.
3. Изобразите блоксхему оператора цикла со счетчиком.
4. Поясните, как работают вложенные циклы.
41 Оператор цикла с постусловием repeat ... until. Оператор цикла с предусловием while ... do. Практическая работа
5. Приведите примеры вложенных циклов из жизни.
6. Смоделируйте работу цикла с постусловием операторами безусловного и условного переходов (показать в
виде фрагмента программы).
7. Смоделируйте работу цикла с предусловием операторами безусловного и условного переходов (показать в
виде фрагмента программы).
Для заметок, вопросов и ответов
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
42
Циклические операторы с постусловием и с предусловием
Циклические операторы с постусловием и с предусловием
Циклические операторы с постусловием и с предусловием
Циклические операторы с постусловием и с предусловием
Циклические операторы с постусловием и с предусловием
Циклические операторы с постусловием и с предусловием
Циклические операторы с постусловием и с предусловием
Циклические операторы с постусловием и с предусловием
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.