Цикл с предусловием
1. Какой вид имеет и как исполняется команда цикла со счетчиком в Object Pascal?
2. Какой вид имеет блок-схема цикла с предусловием и как исполняется этот цикл?
3. В каких случаях в алгоритмах используется цикл со счетчиком, а в каких - цикл с предусловием?
ЦИКЛ С ПРЕДУСЛОВИЕМ
Вы уже знаете, что цикл с предусловием как фрагмент алгоритма начинается с команды проверки условия, и результатом исполнения этой команды может быть либо истина (Да, true), либо ложь (Нет, false). И в зависимости от результата исполнения этой команды будут исполняться команды тела цикла, или команда алгоритма, следующая за циклом.
В общем случае в этой команде определяется значение некоторого логического выражения, которое может быть либо true, либо false.
Общий вид блок-схемы цикла с предусловием приведен на (рисунке 6.31).
КОМАНДА ЦИКЛА С ПРЕДУСЛОВИЕМ В OBJECT PASCAL
Команда цикла с предусловием в языке программирования Object Pascal выглядит следующим образом:
While<aora4ecKoe выражение>
Then begin
<команды тела цикла> end;
(англ. while - пока).
Исполняется эта команда следующим образом: вычисляется значение логического выражения; если это значение true, то исполняются команды тела цикла, после чего опять вычисляется значение логического выражения, и если это значение опять true, то снова исполняются команды тела цикла, после чего опять вычисляется значение логического выражения; если значение логического выражения равно false, то команды тела цикла не исполняются, а исполняется команда, следующая за циклом.
Обращает ваше внимание:
• если в теле цикла только одна команда, то операторные скобки begin и end можно не ставить;
• среди команд тела цикла могут быть и линейные фрагменты, и ветвления, и другие циклы.
Рассмотрим задачу, алгоритм решения которой содержит цикл с предусловием.
Задача. Сколько необходимо взять слагаемых, первое из которых равно заданному действительному числу, а каждое следующее на 3 больше предыдущего, чтобы их сумма превышала 100?
Данными этой задачи является первое слагаемое. Будем вводить его в поле.
Перед началом цикла присвоим переменной s, которую используем для хранения суммы, значение первого слагаемого. А переменной n, которую используем для хранения количества взятых слагаемых, присвоим значение 1, потому что в сумме уже учтено одно (первое) слагаемое.
К сумме следует прибавлять следующие слагаемые, пока эта сумма будет меньше или равна 100. Поэтому логическое выражение в заголовке цикла будет таким: s <= 100. В теле цикла необходимо искать следующее слагаемое, прибавлять его к текущему значению суммы и увеличивать количество слагаемых на 1.
Соответствующий фрагмент проекта будет выглядеть так: var a, s: real; n: integer; begin
a := StrToFloat (Editl.Text); s := a; n := 1; while s <=100 do begin a := a+3; s := s+a; n := n+1; end;
Labell.Caption := IntToStr(n);
end;
Общий вид блок-схемы цикла с предусловием приведен на рисунке 6.31.
Команда цикла с предусловием в языке программирования Object Pascal выглядит так:
While <логическое выражение>
Then begin
<команды тела цикла> end;
Исполненяется эта команда следующим образом: вычисляется значение логического выражения; если это значение true, то исполняются команды тела цикла, после чего снова вычисляется значение логического выражения, и если это значение опять true, то снова исполняются команды тела цикла, после чего опять вычисляется значение логического выражения; если значение логического выражения равно false, то команды тела цикла не исполняются, а исполняется команда, следующая за циклом.
1*. Как выглядит блок-схема цикла с предусловием? Объясните исполнение этого цикла.
2*. Могут ли команды тела цикла с предусловием не исполняться ни разу? Объясните свой ответ. Приведите примеры.
3*. Может ли исполнение цикла с предусловием никогда не закончиться? Объясните свой ответ. Приведите примеры.
4*. Чем отличаются между собой цикл со счетчиком и цикл с предусловием?
5*. В чем различия в исполнении основных алгоритмических структур: следования, ветвления, цикл со счетчиком и цикл с предусловием?
6°. Каков общий вид команды цикла с предусловием в Object Pascal?
7*. Как исполняется команда цикла с предусловием в Object Pascal?
1. Исполните алгоритмы.
2*. Исполните фрагмент программы и определите значения переменных после его завершения:
3*. Исполните фрагмент программы и определите значения переменных после его завершения:
4*. Составьте блок-схему алгоритма нахождения суммы чисел, первое из которых равно 7, каждое следующее на 5 больше предыдущего и все они не превышают 100. Исполните алгоритм.
5*. Составьте блок-схему алгоритма нахождения суммы положительных чисел, первое из которых равно 50, каждое следующее на 8 меньше предыдущего. Исполните алгоритм.
6*. Создайте проект, в котором можно вычислить количество двузначных чисел среди чисел, первое из которых равно 10, а каждое следующее больше предыдущего на заданное положительное число. Сохраните проект в папке с именем Задание 6.7.6, созданной в вашей папке.
7*. Создайте проект для вычисления среднего арифметического положительных чисел, первое из которых равно 100, а каждое следующее меньше предыдущего на заданное положительное число. Сохраните проект в папке с именем Задание 6.7.7, созданной в вашей папке.
8*. Создайте проект для решения задачи: Клиент положил в банк определенную сумму денег. Ежегодно банк добавляет ко вкладу заранее определенный процент от суммы, хранящейся на счету по итогам предыдущего года. Через сколько лет сумма на счету превысит S грн? Сохраните проект в папке с именем Задание 6.7.8, созданной в вашей папке.
ПРАКТИЧЕСКАЯ РАБОТА № 12 «Составление и исполнение проектов с повторениями и ветвлениями для обработки величин»
Внимание! Работая с компьютером, соблюдайте правила безопасности и санитарно-гигиенические нормы.
1. Откройте окно среды Lazarus.
2. Создайте проект для решения задачи: Известны длины сторон двух прямоугольников. Вычислить площади прямоугольников и сравнить их. Определить, являются ли прямоугольники квадратами. Определить, поместится ли первый прямоугольник внутри второго.
1. Разместите на форме поля для ввода данных, метки для вывода результатов и три кнопки.
2. В проекте:
* создайте обработчик события Click для первой кнопки, исполнение которого приведет к вычислению площадей прямоугольников и их сравнению;
* создайте обработчик события Click для второй кнопки, исполнение которого, в зависимости от установленных флажков, приведет к определению того, является ли соответствующий прямоугольник квадратом;
• составьте обработчик события Click для третьей кнопки, исполнение которого приведет к определению, поместится ли первый прямоугольник внутри второго или второй прямоугольник внутри первого, в зависимости от выбранного пункта раскрывающегося списка.
3. Сохраните проект в папке с именем Практическая 12_1, созданной в вашей папке.
4. Создайте проект для решения задачи: Перед началом наводнения уровень воды в реке составлял Н метров. Во время наводнения каждый час уровень воды увеличивался на Р процентов по сравнению с уровнем предыдущего часа. Каким будет уровень воды через N часов после начала наводнения? Через сколько часов после начала наводнения уровень воды будет не менее чем K метров?
1. Разместите на форме поля для ввода данных, метки для вывода результатов и три кнопки.
2. Установите на первой кнопке надпись Задание 1, на второй - Задание 2, на третьей - Сначала, у полей - пустой текст.
3. Создайте обработчик события Click для первой кнопки, исполнение которого приведет к выводу в окно сообщения ответа на первый вопрос задачи.
4. Исполните проект и убедитесь, что результаты его работы правильные.
5. Создайте обработчик события Click для второй кнопки, исполнение которого приведет к получению ответа на второй вопрос задачи и выводу его в отдельную метку.
6. Исполните проект и убедитесь, что результаты его работы правильные.
7. Создайте обработчик события Click для третьей кнопки, исполнение которого приведет к очистке текста в полях и метке с ответом на второй вопрос задачи.
5. Сохраните проект в папке с именем Практическая 12_2, созданной в вашей папке.
6. Закройте окно среды Lazarus.
Это материал учебника Информатика 8 класс Ривкинд
Автор: admin от 16-10-2016, 02:51, Переглядів: 2661