Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Способы записи алгоритмов 2.3.1. Словесная записьСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Существует несколько способов записи алгоритмов. Способ, который мы использовали до сих пор, — словесная запись. Словесная запись алгоритма — это запись последовательности действий на одном из языков человеческого общения. Этот способ удобен тем, что последовательность действий четко изложена на понятном нам языке. Он особенно подходит для линейных алгоритмов, и мы постоянно пользуемся им в повседневной жизни, рассказывая кому-нибудь, как сделать или отремонтировать что-то, как пройти или проехать куда-то и т.д. Графическое представление Если по ходу алгоритма приходится в зависимости от выполнения какого-то условия выбирать те или иные варианты действий, то словесная запись становится громоздкой и в ней легко запутаться. Вспомните, как мы искали очередное действие после того, как вы взяли хлеб из хлебницы, а алгоритм все равно посылал вас за хлебом в магазин. В этом случае более наглядным и предпочтительным становится графическое представление алгоритма. Графическое представление (блок-схема) алгоритма — это набор специальных графических символов, расположенных в порядке выполнения действий алгоритма. Для этого способа записи алгоритмов используются стандартизованные графические обозначения (символы). Начало алгоритма обозначается знаком
25 Идущая вниз линия означает переход к первому действию алгоритма. Таким же знаком обозначается и конец алгоритма, к которому линия от последнего символа подходит сверху: Любое действие алгоритма изображается прямоугольником, в который обычно вписывают название действия: Если алгоритм содержит несколько действий, выполняемых последовательно одно за другим, то все они могут быть вписаны в один прямоугольник. Проверка выполнения условия и выбор ветви алгоритма, соответствующей выполнению или невыполнению условия, представляются ромбом, в который условие вписывается в виде вопроса. При выполнении условия переход к нужной ветви происходит в направлении ответа «Да», а если условие не выполнено — в направлении ответ «Нет»: f - v * i Часто для исполнения алгоритма необходим ввод информации в виде чисел или в иной форме. Результатом исполнения алгоритма (или его части) может быть вывод информации в том или ином виде. Операция ввода данных или вывода результатов обозначается следующим образом: 27
Символ вызова вспомогательного алгоритма имеет вид
Есть и другие символы для обозначения различных операций в алгоритме. Графические символы соединяются между собой прямыми линиями в соответствии с последовательностью действий, ведущих к достижению цели. Стандартное направление перехода от символа к символу — сверху вниз и слева направо. Если по каким-то причинам расположить символы в таком порядке не удается и переход к очередному символу должен произойти в ином направлении, то это направление указывают стрелкой. 28 Символ вызова вспомогательного алгоритма имеет вид Составим блок-схемы некоторых из рассмотренных ранее алгоритмов. Блок-схемы двух алгоритмов с ветвлением — «Взять хлеб» и сортировки изделий — приведены на рис. 2.1, 2.2. Они наглядно показывают преимущество графического представления алгоритмов — легко прослеживается последовательность действий как при выполнении, так и при невыполнении проверяемого условия. На рис. 2.3 представлена блок-схема циклического алгоритма, являющегося развитием алгоритма сортировки изделий. Предыдущий алгоритм представляет собой цикл, который повторяется при положительном результате проверки условия наличия изделий на конвейере. На блок-схеме хорошо видны границы цикла — он охвачен линией, которая поднимается вверх, противоположно стандартному направлению перехода от символа к символу, и заканчивается стрелкой. После выполнения цикла происходит возврат по этой линии к первому действию цикла, в данном случае к проверке наличия изделий на конвейере. Линия возврата фактически заменяет строку Конец цикла, ограничивающую цикл снизу при словесном описании алгоритма, и она же указывает на условие Есть изделия на конвейере?, которое является верхней границей цикла. Если условие не выполнено, т. е. изделий на конвейере нет, то цикл не повторяется и выполнение алгоритма заканчивается. В этом алгоритме проверка условия производится до начала цикла и возможна ситуация, когда цикл не исполнится ни разу: если изделий на конвейере нет, то проверка условия сразу выводит на окончание цикла. Рассмотрим блок-схему циклического алгоритма погрузки контейнеров из подразд. 2.2.3, где проверка условия повторения цикла производится после его исполнения (рис. 2.4). Вслед за символом Начало следуют действия алгоритма, поэтому цикл исполняется всегда, как минимум, один раз. Если погрузка контейнера 30 привела к отсутствию свободного места в вагоне, то проверка условия сразу выводит на символ Конец. Линия возврата по-прежнему охватывает цикл, указывая его нижнюю и верхнюю границы. Блок-схема расширенного варианта этого алгоритма, содержащего условия, проверяемые как до, так и после выполнения команд цикла (см. подразд. 2.2.3), показана на рис. 2.5. Проследите по этому рисунку ход исполнения алгоритма при различных комбинациях условий наличия свободного места в вагоне и наличия контейнеров для погрузки. Рассмотрим блок-схемы вспомогательных алгоритмов. У алгоритма, используемого в качестве вспомогательного, есть одна особенность: в нем производятся действия с информацией, переданной ему из основного алгоритма, и туда же при необходимости сообщается результат выполнения вспомогательного алгоритма. Поэтому блок-схема вспомогательного алгоритма содержит символ ввода данных, а при необходимости — и символ вывода результатов, что подчеркивает взаимодействие вспомогательного алгоритма с основным. На рис. 2.6 приведена блок-схема алгоритма «Нагрев до t». Символ ввода данных указывает на получение из основного алгоритма значения температуры нагрева t. После выполнения алгоритма нагрева продолжается выполнение основного алгоритма с дей-
ствия, следующего за командой вызова вспомогательного алгоритма. Сама команда вызова обозначается в блок-схеме основного алгоритма приведенным выше специальным символом, в который вписывается название вызываемого алгоритма. Алгоритмический язык Словесное и графическое представления алгоритмов позволяют наглядно проследить последовательность действий как в простых, так и в сложных алгоритмах. Однако наглядность имеет значение только для человека, но не для машины. Машина выполняет одно за другим действия, предписанные алгоритмом, который составил для нее человек. Возможно, со временем машины научатся мыслить и смогут сами анализировать ситуации, создавать и выполнять алгоритмы, продвигаясь к ими же поставленным целям. У нас вызывает сегодня восхищение «умная» машина, обыгрывающая лучших гроссмейстеров в шахматы. По сути же она просто быстрее, точнее, в большем объеме и за меньшее время перебирает возможные варианты игры, которые заложил в нее человек. Так что единственный способ заставить машину совершить какое-то действие — дать ей команду, точно и однозначно соответствующую именно этому действию. Причем машина должна эту команду правильно и однозначно понять. Последовательность действий должна четко выражаться последовательностью команд, а поскольку додумывать и догадываться машина не умеет, каждому шагу алгоритма (например, анализу выполнения какого-то условия) должна соответствовать четко понимаемая машиной команда. Поэтому если предполагается, что исполнителем алгоритма будет машина, то разработанный алгоритм надо представить в виде, учитывающем ограниченные возможности машины правильно понимать и выполнять команды. Для этого существует особый способ описания алгоритмов — запись на алгоритмическом языке. Алгоритмический язык — это набор специальных служебных слов и правил для записи алгоритмов. Служебные слова — это обычные слова нашего языка, но их запись в алгоритмическом языке однозначна и никакие другие варианты записи этих слов недопустимы. Например, если вы пишете адрес на конверте, вы можете написать: «город Пенза», или «гор. Пенза», или «г. Пенза». Если бы слово «город» входило в список служебных слов алгоритмического языка, то его всегда нужно было бы писать только в одном виде (например: «гор.»). Даже точка после сокращения слова должна быть особо оговорена — ставить ее или нет. 32 Перед названием каждого алгоритма, записанного на алгоритмическом языке, ставится служебное слово АЛГ (буквы заглавные, без точки). Для указания начала и конца алгоритма используются служебные слова НАЧ и КОН. Каждый шаг алгоритма записывается отдельной строкой. Общий вид линейного алгоритма на алгоритмическом языке: АЛГ «<название>» НАЧ <действие 1> <действие 2> КОН Угловые скобки означают, что в данной строке должно быть записано то, что указано в этих скобках. Для записи алгоритмов с ветвлением используются служебные слова ЕСЛИ, ТО, ИНАЧЕ, ВСЕ (конец ветвления). Общий вид ветвления: ЕСЛИ <условие> ТО <действие 1> ИНАЧЕ <действие 2> ВСЕ Запишем на алгоритмическом языке алгоритм, блок-схема которого приведена на рис. 2.2. АЛГ «Алгоритм сортировки изделий» НАЧ поместить изделие в измерительное устройство измерить диаметр изделия ЕСЛИ диаметр больше заданного ТО поместить изделие в магазин № 1 ИНАЧЕ поместить изделие в магазин № 2 ВСЕ КОН Бывает так, что после строки ИНАЧЕ в алгоритме с ветвлением располагается не действие, а новое условие. Тогда это второе условие вводится не в отдельной строке ЕСЛИ, а в той же строке, в которой находится ИНАЧЕ: ИНАЧЕ ЕСЛИ <условие 2> ТО <действие 2> ИНАЧЕ <действие 3> 33 Последнее ИНАЧЕ относится к условию 2, т.е. соответствует невыполнению этого условия. Сочетание служебных слов ИНАЧЕ ЕСЛИ часто заменяют служебным словом ИНЕС. В циклических алгоритмах используются служебные слова ПОКА, ЦИКЛ, КЦИКЛ (конец цикла). Общий вид циклического участка алгоритма: а) с предусловием — ПОКА <условие> <действие> КЦИКЛ б) с постусловием — цикл <действие> ПОКА <условие> Запишем циклический алгоритм сортировки изделий, блок-схема которого приведена на рис. 2.3. Судя по блок-схеме, это алгоритм с предусловием. Поэтому верхней границей цикла является условие Есть изделия на конвейере! Далее следуют действия цикла, а расположение нижней границы КЦИКЛ показывает линия возврата. Имеющееся в алгоритме ветвление входит в цикл и заканчивается перед концом цикла. Для удобства чтения алгоритма действия, образующие цикл, сдвигаются при записи вправо — так цикл легче увидеть. Аналогично можно сдвинуть участок с ветвлением. Алгоритм записывается в порядке продвижения по блок-схеме и выглядит следующим образом: АЛГ «Циклический алгоритм сортировки изделий» НАЧ ПОКА есть изделия на конвейере поместить изделие в измерительное устройство измерить диаметр изделия ЕСЛИ диаметр больше заданного ТО поместить изделие в магазин № 1 ИНАЧЕ поместить изделие в магазин № 2 ВСЕ КЦИКЛ кон Рассмотрим последовательность действий в этом алгоритме. Пока предусловие Есть изделия на конвейере не нарушено, выполняется измерение диаметра изделия и оно помещается в магазин № 1 или № 2. Служебное слово ВСЕ означает конец ветвления, после которого следует переходить к следующей строке алгоритма. В ней помещено слово КЦИКЛ (конец цикла), требующее возврата к 34 началу цикла, т.е. к строке ПОКА, после чего цикл повторится. Когда условие в строке ПОКА нарушится, по правилам выполнения циклических алгоритмов надо будет перейти к строке, следующей за указателем конца цикла КЦИКЛ (в нашем случае — это строка КОН), и выполнение алгоритма заканчивается. Запишем на алгоритмическом языке более сложный алгоритм (см. рис. 2.5). В этом алгоритме, как видно из блок-схемы, есть и предусловие (Есть контейнер для погрузки?), и постусловие (В вагоне есть свободное место?), поэтому в нем сочетаются записи в виде ПОКА... КЦИКЛ и в виде ЦИКЛ...ПОКА. Первый элемент блок-схемы при продвижении от начала алгоритма — линия возврата, идущая от символа постусловия. В алгоритмах с постусловием она указывает место, с которого возобновляется цикл при его повторении. В алгоритмическом языке это место обозначается служебным словом ЦИКЛ. Далее расположен графический элемент предусловия, вводимого словом ПОКА, после которого идет последовательность действий вплоть до постусловия. Постусловие тоже вводится служебным словом ПОКА. Если условие выполнено, то в алгоритмах с постусловием следует возврат к строке ЦИКЛ, а если не выполнено — переход к следующей за постусловием строке (в нашем случае — к окончанию алгоритма КОН). Все это происходит, если не нарушено предусловие Есть контейнер для погрузки. Когда же это условие нарушено, в алгоритмах с предусловием происходит переход к строке, следующей за указателем конца цикла КЦИКЛ (в нашем случае — к окончанию алгоритма КОН). В итоге этот алгоритм на алгоритмическом языке записывается следующим образом: АЛГ «Алгоритм погрузки контейнеров» НАЧ ЦИКЛ ПОКА есть контейнер для погрузки поднять очередной контейнер переместить контейнер к вагону погрузить контейнер в вагон вернуть кран в исходное положение ПОКА в вагоне есть свободное место КОН КЦИКЛ кон Сдвиг строк при записи позволяет легко сориентироваться, где начинается и заканчивается цикл ПОКА...КЦИКЛ, а где ЦИКЛ... ПОКА. 35 Рассмотрим запись на алгоритмическом языке вспомогательных алгоритмов. Так как вспомогательным может быть любой алгоритм, никаких специфических особенностей в такой записи нет. Ввод данных из основного алгоритма, так же как и вывод результатов (при необходимости), является во вспомогательных алгоритмах обычным действием. Так как в основном алгоритме вызов вспомогательного алгоритма производится простым указанием его заголовка, то общий вид основного алгоритма на алгоритмическом языке может быть, например, следующим: АЛГ «<название>» НАЧ <действие 1> <действие 2> <название вспомогательного алгоритма 1> <действие 3> <название вспомогательного алгоритма 2> <действие 4> КОН Как уже указывалось ранее, запись алгоритмов на алгоритмическом языке является подготовительным этапом на пути к представлению последовательности команд в такой форме, в какой она могла бы быть воспринята, понята и выполнена машиной. Наиболее распространенными машинами, используемыми для этих целей, являются ЭВМ. Алгоритмические языки, ориентированные на их восприятие электронно-вычислительными машинами и учитывающие особенности работы ЭВМ, называются языками программирования. Контрольные вопросы 1. Сформулируйте понятие алгоритма. 2. В чем особенность восприятия алгоритмов машинами? 3. Дайте определение программы. 4. Назовите виды алгоритмов. 5. Что такое линейный алгоритм? Приведите пример. 6. Что такое условный алгоритм? Приведите пример. 7. Что такое циклический алгоритм? Приведите пример. 8. Что такое вспомогательный алгоритм? Приведите пример. 9. Расскажите о способах записи алгоритмов. 10. Изобразите и поясните графические символы, применяемые для записи алгоритмов. 11. Что такое блок-схема алгоритма? 12. Сформулируйте понятие алгоритмического языка. ГЛАВА 3
|
|||||
Последнее изменение этой страницы: 2021-04-14; просмотров: 515; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.145.17 (0.013 с.) |