Представление о программе
Вид материала | Документы |
СодержаниеЦикл с постусловием Цикл с предусловием |
- 1 класс по программе Л. В. Занкова. Учитель: Андреева, 52.48kb.
- Пояснительная записка к образовательной программе дополнительного образования детей, 537.46kb.
- Государственным заказчикам Программы (п. 2): Вмесячный срок назначить лиц, ответственных, 1074.41kb.
- Доклад для обн 17 10, 151.56kb.
- Учебный план повышения квалификации по программе "Логистика" в рамках направления "Экономика", 29.84kb.
- Вопросы к экзамену по курсу " ЭВМ и периферийные устройства" для групп К2-121, -122,, 75.03kb.
- Представление данных в ЭВМ, 207.04kb.
- И представление налоговой отчетности, 394.07kb.
- И представление налоговой отчетности, 357.06kb.
- Дать детям представление о речевом этикете, как о правилах поведения в различных ситуациях;, 241.98kb.
Цикл с постусловием
Не всякую циклическую задачу можно решить с помощью цикла с известным числом повторений. В некоторых задачах число повторений заранее неизвестно. Для организации циклической последовательности действий и выхода из нее к другому фрагменту алгоритма используется условие, которое ставится в конце тела цикла.
Цикл с неизвестным числом повторений, в котором выход из цикла осуществляется при выполнении условия, принято называть «циклом с постусловием» или «циклом ПРИ».
Рассмотрим алгоритмы решения циклических задач с неизвестным числом повторений.
Пример 12.13
После соревнований по бегу рекомендуется измерить пульс. Измерение пульса можно описать следующим алгоритмом.
Алгоритм «Пульс»
- Удобно положите левую руку ладонью вверх.
- Два пальца правой руки положите на запястье левой руки
- Заметьте положение секундной стрелки.
- Сосчитайте очередной удар.
- Посмотрите на часы.
- Если секундная стрелка прошла полный круг, то закончит» действия, иначе перейдите к п. 4.
- Конец алгоритма
В этом примере действия закончатся, когда секундная стрелка пройдет полный круг, то есть условие «Стрелка прошла полный круг» будет выполнено, в противном случае действия буду продолжаться. На рисунке 12.10 приведена блок-схема этого алгоритма. На блок-схеме видно, что проверка условия стоит в конце цикла.
Рис. 12.10. Блок-схема алгоритма «Пульс»
Пример 12.14
Требуется рассчитать время работы батарейки в часах с кукушкой, если известно, что заряда хватает примерно на 1000 звуковых сигналов «ку-ку». Однократный звуковой сигнал звучит, когда минутная стрелка показывает 30 минут. Начало каждого часа сопровождается повторением сигнала столько раз, сколько показывает часовая стрелка (от 1 до 12).
Расчетными данными для этой задачи являются:
t — обозначение текущего часа;
к — количество звуковых сигналов.
Алгоритм «Кукушка» представим на школьном алгоритмическом языке в таблице 12.4.
В этом алгоритме повторяются следующие действия:
- определение значения текущего часа;
- определение количества звуковых сигналов.
Эти действия составляют тело цикла.
Цикл заканчивается, если количество поданных звуковых сигналов превысило 1000, что является признаком выработки ресурса батарейки.
Таблица 12.4. Алгоритм «Кукушка» на школьном алгоритмическом языке
Алгоритм | Пояснения | |
алг Кукушка | Заголовок алгоритма | |
нач цел t, k | Описание типов переменных | |
t:=0; k:=0 | Начальные значения переменных t, k | |
нц | Начало цикла | |
t:= t + 1 | Тело цикла | Значение текущего часа |
к:= к + 1 + mod(t,12) | Общее количество сигналов на текущий час. mod(t,12) — остаток от деления t на 12 | |
кц_при к>=1000 | Проверка условия окончания цикла | |
вывод "Количество часов =", t | Вывод количества часов на экран | |
КОН | Конец алгоритма |
Из рассмотренных примеров 12.13 и 12.14 видно, что цикл с постусловием имеет следующие особенности:
- проверка условия осуществляется в конце цикла, поэтому тело цикла выполняется хотя бы один раз;
- цикл заканчивается по выполнению условия.
Цикл с предусловием
Рассмотрим другой тип цикла, в котором проверка условия осуществляется в начале цикла. Для организации циклической последовательности действий и выхода из нее к другому фрагменту алгоритма используется условие, которое ставится в начале тела цикла. Цикл с неизвестным числом повторений, в котором цикл продолжается, пока выполняется условие, принято называть «циклом с предусловием» или «циклом ПОКА».
Пример 12.15
На даче требуется наполнить бочку водой. Действия по наполнению бочки можно описать следующим алгоритмом.
Рис. 12.11. Блок-схема алгоритма «Бочка»
Алгоритм «Бочка»
- Подойдите к бочке.
- Если бочка неполная (есть место для воды), то перейдите к п. 3, иначе конец алгоритма.
- Наберите ведро воды.
- Вылейте ведро в бочку.
- Перейдите к п. 2.
Конец алгоритма
На блок-схеме (рис. 12.11) видно, что условие проверки стоит в самом начале цикла.
Такой цикл получил название цикла с предусловием.
Возможна ситуация, что цикл закончится так и не начавшись, например, если бочка наполнилась из-за прошедшего накануне дождя. В этом цикле при выполнении условия «есть место для воды» действия продолжаются, при невыполнении — заканчиваются.
Пример 12.16
Требуется проверить число на симметричность (примеры симметричных чисел: 12321, 8668).
Исходными данными для этой задачи является введенное число п.
Для промежуточных вычислений будут использоваться переменные:
s — для записи цифр числа п в обратном порядке;
nl — для дублирования введенного числа п.
В алгоритме используются функции:
mod — вычисление остатка от деления на 10;
div — определение целой части числа.
Решение этой задачи представим в виде программы на школьном алгоритмическом языке в таблице 12.5.
Таблица 12.5. Алгоритм «Симметричное число» на школьном алгоритмическом языке
Алгоритм | Пояснения | |
алг Симметричное число | Заголовок алгоритма | |
нач цел n, nl, s | Описание типов переменных | |
вывод "Введите число" | Вывод подсказки на экран | |
ввод п | Ввод проверяемого числа | |
s:=0: nl:=n | Начальные значения | |
нц пока п1<>0 | Начало цикла | |
k:= mod(nl,10) | Тело цикла | Получение младшей цифры числа |
s:=s*10 + к | Очередной шаг получения цифр числа п в обратном порядке | |
nl:=div(nl,10) | Уменьшение числа в 10 раз (целочисленное деление) | |
кц | Конец цикла | |
если n=s | Проверка симметричности и вывод сообщений на экран | |
то вывод "Число симметричное" | ||
иначе | ||
вывод "Число несимметричное" | ||
кон | Конец алгоритма |
В этом алгоритме в цикле получается перевернутое число, которое затем сравнивается с введенным. Если они равны, то введенное число симметрично. Цикл выполняется до тех пор, пока nl при целочисленном делении на 10 не превратится в 0. Если введенное число равно 0, то цикл не выполнится ни разу, но будет выдан ответ «Число симметричное».
Из рассмотренных примеров 12.15 и 12.16 видно, что цикл с предусловием имеет следующие особенности.
- проверка условия осуществляется в начале цикла, поэтому тело цикла может не выполниться ни одного раза;
- цикл заканчивается при невыполнении условия;
- цикл является универсальным, так как с помощью этого цикла можно решить любую циклическую задачу.
12.7. Вспомогательный алгоритм
Вспомните рассмотренный ранее алгоритм «Приготовление гречневой каши». Он начинался с пункта «Обратитесь к алгоритму „Разжигание костра"».
Процесс разведения костра был описан заранее и явился вспомогательным алгоритмом в данной задаче. При обращении к этому алгоритму достаточно было указать его название — имя. Этот вспомогательный алгоритм может быть использован и в других алгоритмах, например в алгоритмах «Сушка одежды», «Запекание картошки» и др.
Представьте себе, что вам предстоит подготовить реферат по какому-либо предмету. При работе над рефератом на компьютере часто приходится редактировать текст: исправлять ошибки, копировать и удалять фрагменты текста и т. д. Надеемся, что вы уже знакомы с технологией работой над текстовым документом и его редактирование не вызывает у вас вопросов.
Любая из выполняемых при редактировании операций (копирование, вырезание, удаление фрагмента текста и т. д.) представляет собой определенную последовательность действий, то есть алгоритм. Содержание этих алгоритмов благодаря частому их использованию уже не вызывает вопросов. Стоит понять, что необходимо использовать определенную операцию, например копирование, как руки сами воспроизводят соответствующий алгоритм. Таким образом, мозг человека хранит огромное количество ранее определенных алгоритмов, которые используются по мере необходимости при решении различных задач.
Алгоритм, из которого производится вызов вспомогательного алгоритма, получил название основного алгоритма.
Например, для набора текста песни, содержащей три купле-с припевом, можно воспользоваться основным алгоритмом п< названием «Набор текста песни».
Алгоритм «Набор текста песни»
- Набрать название песни.
- Набрать первый куплет.
- Набрать припев.
- Набрать второй куплет.
- Скопировать припев.
- Набрать третий куплет.
- Скопировать припев.
- Конец алгоритма
В этом алгоритме многократно встречается слово Скопировать, смысл которого вам понятен, так как был определен ] начальном этапе обучения технологии работы с текстом.
Здесь слово скопировать является именем алгоритма, определенного ранее, то есть вспомогательного алгоритма. Слово: «припев» обозначает конкретный объект, над которым нужно произвести действие копирования.
Рассмотрим, что представляет собой алгоритм копирования который является вспомогательным по отношению к ochobhoi алгоритму «Набор текста песни». Назовем такой вспомогательный алгоритм «Скопировать (объект копирования)».
Алгоритм «Скопировать (объект копирования)»
- Выделить объект.
- Выбрать команду Правка/Копировать.
- Указать щелчком мыши место вставки.
- Выбрать команду Правка/Вставить.
- Конец алгоритма
При записи данного вспомогательного алгоритма мы указа, его имя и в скобках — название параметра, с которым алгоритм работает. В данном случае параметр один — объект копирования. У параметра «объект копирования» могут быть разные значения. При наборе песни в качестве объекта копирования будет использоваться припев. При рисовании в качестве объекта копирования будет использоваться заранее созданный графический элемент. При создании формулы в качестве объекта копирования может использоваться, например, функция или ранее созданное простое математическое выражение.
После выполнения вспомогательного алгоритма вы возвращаетесь в основной алгоритм для его продолжения.
Вспомогательные алгоритмы используются для решения сложных задач, так как любую сложную задачу можно разбить на более простые и каждую из них оформить в виде вспомогательного алгоритма. В общем случае во вспомогательном алгоритме может быть несколько параметров.
Создание вспомогательных алгоритмов можно поручить разным разработчикам. Разбиение сложного алгоритма на простые части, которые оформляются как вспомогательные, делает его более наглядным и понятным.
На рисунке 12.12 приведен пример создания сложной графической композиции на одном из языков программирования. Программирование ведется от простого к сложному. Предварительно разрабатываются вспомогательные алгоритмы, позволяющие нарисовать: а) дугу, б) лепесток, в) группу лепестков. Каждый из этих вспомогательных алгоритмов содержит два параметра, указывающие радиус и направление рисования (по часовой или против часовой стрелки):
- алгоритм Дуга (радиус, направление);
- алгоритм Лепесток (радиус, направление);
- алгоритм Группа (радиус, направление).
Алгоритм Дуга используется в качестве вспомогательного для рисования лепестка. Алгоритм Лепесток используется в качестве вспомогательного для рисования группы лепестков. Алгоритм Группа используется в качестве вспомогательного в основном алгоритме для рисования цветка. В результате сложный алгоритм рисования цветка был составлен из простых циклических алгоритмов рисования его элементов.
Рис. 12.12. Этапы создания сложной графической композиции
Вспомогательный алгоритм — алгоритм, который можно использовать в других алгоритмах, указав его имя и, если имеются, значения параметров.
12.8. Стадии создания алгоритма
Человек легко читает и печатный, и рукописный текст. Однако написать алгоритм этого процесса так, чтобы он стал понятен компьютеру, — чрезвычайно непростая задача. В настоящее время уже разработан алгоритм распознавания компьютером печатного текста. А вот создать алгоритм, в соответствии с которым компьютер мог бы прочесть (распознать) рукописный текст, пока не удается. Компьютер воспринимает такой текст как картинку.
Завязать шнурки на ботинках бантиком умеют многие дети в 6 лет, но описать этот процесс так, чтобы он стал понятен другому человеку или компьютеру, задача не из легких.
Существует определенный алгоритм поведения водителей автомашин на дороге. Этот алгоритм определяется правилами дорожного движения, которые должен знать каждый водитель. Кроме того, шоферы особыми знаками предупреждают друг друга об опасности на дороге или подают сигналы помощи.
Те же самые люди в другой обстановке будут общаться между собой совершенно по-иному, в соответствии с принятыми для этой обстановки правилами поведения.
Рассмотренные примеры говорят о том, что прежде всего алгоритм должен быть понятен человеку, а если возникает необходимость объяснить этот алгоритм другому человеку или объекту, то следует учитывать их особенности, в том числе среду, язык общения и пр. Специфика среды во многом определяет конкретный язык алгоритма и уровень его детализации.
Разрабатывая алгоритм, вы всегда будете проходить минимум две стадии — сначала алгоритм должен быть понятен тому, кто его разрабатывает, а затем его следует преобразовать с учетом специфики среды.
Таким образом, в общем случае алгоритм претерпевает изменения по стадиям:
- первая стадия — алгоритм должен быть представлен в форме, понятной человеку, который его разрабатывает;
- вторая стадия — алгоритм должен быть представлен в форме, понятной тому объекту (в том числе и человеку), который будет выполнять описанные в алгоритме действия. В том случае, если эти действия станет выполнять сам разработчик алгоритма, вторая стадия будет отсутствовать.
Поясним стадии создания алгоритма на примере. Предположим, вы с другом хотите в жаркий летний день покататься на велосипедах. Вы должны продумать план подготовки и осуществления задуманного путешествия, то есть его алгоритм:
- Достать карту местности.
- Оговорить продолжительность путешествия.
- Проложить предстоящий маршрут.
Это первая стадия разработки алгоритма. На этом этапе вы обдумываете план и намечаете для себя промежуточные цели.
В дальнейшем, исследуя карту, вы обнаруживаете, что наиболее привлекательным местом является берег речки, расположенный довольно далеко. Ваша цель меняется. Теперь вы мечтаете совершить путешествие именно к этому месту. Поэтому вы вынуждены откорректировать намеченный план действий:
- Подготовить перечень необходимых продуктов, которые вы возьмете с собой.
- Подготовить велосипед к длительному пути — смазать маслом, накачать шины и т. д.
- Собрать необходимые вещи — купальные принадлежности, удочку и т. д.
Новый план нужно изложить другу достаточно убедительно, чтобы он согласился и принял новую цель. Предположим, он согласился и вы договорились готовиться к путешествию независимо друг от друга. Каждый из вас должен изменить уже имеющийся план в соответствии со своим опытом и умением.
Это вторая стадия разработки алгоритма, когда необходимо ориентироваться на тот объект, который будет этот алгоритм исполнять. На этом этапе выбираются среда и инструменты — объекты, которые могут осуществить ваш план.
Кто-то обратится к взрослым, которые все сделают за него, другой сам будет готовить велосипед и покупать продукты. Результаты при этом могут оказаться разными.
Если вы решите обратиться за помощью к взрослым, то должны уметь договариваться с ними и представлять их возможности. А если захотите подготовиться к походу самостоятельно, вам понадобится умение обслуживать и чинить велосипед.
Например, вы обнаружили, что у вашего велосипеда треснула рама. Вы обращаетесь к родителям с просьбой купить новый велосипед, но это оказывается слишком дорого. Если не удастся найти другой способ подготовить транспорт, то цель окажется недостижимой. Вы предполагаете подкрепиться в походе бутербродами, значит, надо продумать, как их сделать, и купить необходимые продукты.
Рассмотрим другой пример. Вы хотите поздравить друзей с Новым годом. Для этого вы наметили подготовить красочные открытки. На первой стадии вы разрабатываете алгоритм для себя:
- Придумать сюжет.
- Нарисовать картинку по сюжету.
- Написать стихи по сюжету.
- Подготовить открытки с адресами.
- На каждую открытку поместить рисунок и текст.
Если вы обладаете воображением, умеете рисовать и писать стихи, а также можете воспользоваться компьютером для создания и тиражирования открыток, то этот алгоритм вам по силам выполнить самостоятельно. В этом случае вам не нужна вторая стадия разработки алгоритма.
Вы также можете найти человека, который способен помочь вам. Тогда необходимо объяснить помощнику, что надо делать. Таким образом, вы проходите вторую стадию разработки алгоритма, когда он должен быть переориентирован на другого человека. Если вам помогает специалист по изготовлению открыток, владеющий компьютерной технологией, то достаточно перечислить, кому и какие открытки надо сделать, и алгоритм окажется достаточно простым. Если вы имеете дело с новичком, то вам придется достаточно подробно описать алгоритм его действий по созданию поздравительных открыток.
Запомните правила разработки любого алгоритма.