Для создания любых программ необходимы основные алгоритмические конструкции. Следование является наиболее простым вариантом решения задач. Его можно использовать, например, для работы с однотипными примерами. Существуют и другие типы: ветвление и цикл. О них будет рассказано в данной статье. Но сперва нужно понять, что же собой представляет алгоритм в целом.
Алгоритм
Слово «алгоритм» пошло от латинского algoritmi. Что же оно означает? Аутентичное слово произошло от имени математика, деятельность которого пришлась на IX век. Благодаря трактату аль-Хорезми человечество смогло познакомиться с основным типом алгоритмической конструкции и вообще с общим понятием.
Ранее была принята форма написания слова – «алгорифм». Сейчас она используется лишь в некоторых случаях.
Алгоритм – процесс, который означает изменение исходных данных, происходящее в виде дискретных шагов. С этим понятием каждый человек сталкивается в жизни, кем бы он ни был. Алгоритмами вполне можно назвать приготовление чая или пищи, умножение или сложение, решение уравнений и т. д. Вся бытовая техника, чей процесс работы автоматизирован, функционирует за счет четких шагов, прописанных в памяти процессора. Такие алгоритмы называются бытовыми. Есть и другие типы. Рассмотрим их.
Видео: 2. Алгоритмы и структуры данных. Списки, стек, очередь, дек | Технострим
Виды алгоритмов
Основные алгоритмические конструкции разбиваются на несколько типов, о которых и будет идти речь в данном подпункте. Какие они бывают?
- Информационные. Такие алгоритмы работают с большим количеством данных, но сам объем процесса их обработки маленький по длине и несложный.
- Управляющие. Работа таких алгоритмов связана с информацией, которая предоставляется от того или иного источника. После ее получения отправляются специальные сигналы, гарантирующие работу устройств.
- Вычислительные. В отличие от информационных алгоритмов, описываемые работают с маленькими объемами данных, но производят большой процесс работы.
По сути, алгоритмом является точная до мельчайших подробностей инструкция. Однако не все такие данные можно назвать описываемым понятием. Чтобы понять, алгоритм инструкция или нет, следует ее проверить на наличие определенных свойств.
Свойства алгоритмов
Все основные алгоритмические конструкции должны иметь действия, которые им «подчиняются». Рассмотрим этот вопрос более подробно.
Если полностью отследить работу алгоритмов и их свойства, можно увидеть, что необязательно понимать их составляющие, достаточно четко соответствовать плану. Верный результат будет получен, даже если просто механически придерживаться нужных действий. Из этого можно сделать вывод, что из-за отсутствия смысла в осознании действий, алгоритм вполне реально отдать на реализацию ЭВМ. Иными словами, для автоматизированных устройств необходимо наличие данного процесса.
Какие же свойства должны иметь основные алгоритмические конструкции для максимально точной работы?
- Понятность. Каждая команда должна быть максимально понятна выполняемому объекту. Вроде бы ничего легче, чем, например, нарисовать точку в центре, нет, но пока не будет прописана команда, которая позволит выполнить действие, сделать это не удастся.
- Результативность. Что подразумевает данное свойство? Обязательное получение результата. Алгоритм не может не привести к какому-то ответу. Из-за ошибки можно получить не тот результат, который был желаемым, но все же он будет. Более того, ответ должен быть получен через определенное число шагов.
- Массовость. Любой алгоритм должен быть применимым к какому-то классу задач. Между собой они могут различаться исходными данными.
- Определенность. Каждое действие должно иметь лишь одно значение и не давать возможности для производной расшифровки. В идеале, сколько бы программа ни запускалась, результат должен быть одним и тем же всегда.
- Дискретность. Алгоритм – последовательное выполнение шагов. Каждый шаг является командой, пропускать или добавлять новые нельзя.
- Корректность. Любой алгоритм, применимый к какому-нибудь роду задач, должен быть правильным для всех. В программировании часто появляются проблемы не в написании шагов, которое зачастую не требует много времени, а в выполнении их для различного рода вопросов. Поэтому важным этапом будет отладка алгоритма. Могут в этом помочь и основные алгоритмические конструкции, повторение которых позволит добиться лучших результатов.
Описание алгоритмов
Если говорить о способах записи алгоритмов, то следует выделить следующие:
- Словесный. Иными словами, на языке, которым удобно изъясняться составляющему.
- Табличный. По логике вещей, алгоритм записывается в таблицы и, как правило, используется в качестве вспомогательного элемента.
- Формульно-словесный. В основу взят словесный способ изъяснения, но в такие действия также записываются математические формулы или символы.
- Графический. Такой алгоритм записан на специальном языке блок-схем.
Следует пояснить последний пункт. Что собой представляет блок-схема? Это линейный или нелинейный алгоритм, шаги которого записаны с помощью специальных блоков. Они имеют свою конфигурацию, назначение и функцию. В случае такого описания, алгоритм записывается блок-схемами, которые связаны между собой линиями. В них необходимо дополнительно записать то или иное действие (шаг).
Алгоритмические конструкции
Некоторые утверждают, что алгоритмы имеют не 3 вида, а 4. Основные алгоритмические конструкции: линейные, разветвляющиеся, циклические. С чем связано такое заблуждение, непонятно. Однако для простого решения сложных проблем ЭВМ использует алгоритмы этих трех достаточно больших групп. Рассмотрим их.
- Линейный. Такой вычислительный процесс получил данное название за счет того, что все действия выполняются в линейной последовательности, при этом каждый шаг выполняется не более одного раза. Если рассматривать схему задачи, то блоки в ней размещаются один под другим в зависимости от порядкового номера выполнения. Линейные алгоритмы работают таким образом, что от исходных данных не меняется направление и смысл действий. Такой способ решения подойдет для вычисления суммы или разности, площади фигуры или ее периметра и т. п. Основным типом алгоритмической конструкции является именно он.
- Разветвляющийся. Этот вычислительный процесс подразумевает наличие логического выражения (далее ЛВ) и выбора условия (ветви «ложь» и «правда»). В каждом случае реализуется лишь одна из двух и более команд. Нет задач и не может быть, в которых будут выполнены еще и другие варианты. Если в алгоритме две ветви, он простой, если больше двух – сложный. Причем последний процесс легко представляется за счет первого. Основным типом алгоритмической конструкции является как первый пункт, так и второй. Следующий вид тоже входит в этот список.
- Циклический. В таком алгоритме обязательно будет элемент, повторяющийся многократно, при этом используются разные исходные данные. Иными словами, такой процесс называется циклом.
Нужно заметить, что все основные алгоритмические конструкции (следование, ветвление, цикл) взаимосвязаны друг с другом, хотя и могут использоваться отдельно.
Создание циклов и их виды
Что же необходимо для создания цикла?
Видео: программирование
- Счетчик цикла. Это переменная, которая задает начальное значение, и при повторении действия она будет изменяться. Обязательно она должна входить в алгоритм. Основные алгоритмические конструкции циклового типа работать без нее не будут.
- Смена показателя вышеописанных данных перед новым повторением самого цикла.
- Проверка условия, чтобы ЭВМ решила, следует ли снова «прокручивать» цикл или больше в этом нет нужды.
Циклы могут быть детерминированными и итерационными. Первые представляют собой повтор действий с уже известным количеством повторений. Итерационный цикл – тот, который повторяется неопределенное количество раз, пока условие не станет правдой или ложью.
Базовый алгоритм
Стоит запомнить то, что к основным алгоритмическим конструкциям не относится базовый алгоритм. Что он собой представляет? Данное понятие уже давно не встречается в современной литературе, однако это не значит, что его и вовсе больше не существует. Учитывая, что в решении задач может встретиться несколько ветвлений или повторений, можно выделить следующее заключение. Основные алгоритмические конструкции (линейные, разветвляющие, циклические) являются базовыми. По сути, они представляют собою «структурную единицу» каждой так называемой инструкции.
Линейные алгоритмы
Как уже понятно из вышенаписанного, алгоритмы бывают линейные и нелинейные. Рассмотрим первый вариант. Почему он так называется? Все предельно просто. Дело в том, что все действия, которые воспроизводятся в алгоритме, имеют четко последовательное выполнение, все шаги выполняются строго друг за другом. Как правило, такие задачи небольшие и имеют низкий уровень сложности.
Примером линейного алгоритма может быть процесс приготовления чая:
- Налить воды в чайник.
- Поставить чайник на плиту закипать.
- Взять чашку.
- Насыпать в чашку чай.
- Добавить сахар.
- После кипения налить в чашку кипяток.
- Взять ложку.
- Перемешать сахар.
Программирование основных алгоритмических конструкций - достаточно тяжелое дело, но если речь идет о линейных алгоритмах, то зачастую реализовать их очень легко.
Разветвляющиеся алгоритмы
Как понять, что алгоритм является разветвляющимся? Достаточно убедиться в наличии выбора из двух или более вариантов действия, в зависимости от выполнения или невыполнения условия. Каждый путь называется ветвью.
Основным признаком разветвляющегося алгоритма является существование условного перехода. Он происходит во время проверки выражения на истину или ложь.
Как правило, логические выражения представлены знаками "меньше", "больше", "меньше или равно", "больше или равно", "равно", "не равно". Иногда встречаются варианты, где условие связано между собой с помощью команд and (и) и or (или).
Примером такого алгоритма может быть решение следующей задачи: если выражение ((х+3)/1) равняется положительному числу, то вывести результат на экран, если отрицательному – сообщить пользователю об ошибке.
Достаточно просто на практике использовать основные алгоритмические конструкции. Ветвление является одним из самых распространенных методов решения.
Видео: Дональд Кнут. Глава 1. Основные понятия. 1.1 Алгоритмы. «Искусство программирования». (Часть 1)
Детерминированный цикл или цикл со счетчиком
Цикл со счетчиком – цикл, который включает в себя переменную, изменяющую значение с определенным шагом. Шаг задается пользователем или прописывается программистом во время написания обеспечения. Большая часть языков для такого цикла использует оператор for.
Чтобы программа выводила на экран две строки 4 раза:
- «Как дела?»
- «Хорошо, спасибо!»
- «Как дела?»
- «Хорошо, спасибо!»
Необходимо создать детерминированный цикл. Как это выглядит? Воспользуемся языком «Паскаль» для лучшего восприятия конструкции.
1. For i:=1 to 2 do:
- i является счетчиком цикла, именно он определяет количество повторений в цикле.
2. Begin (открываются операторные скобки для того, чтобы обе фразы являлись телом цикла и повторялись вместе.)
3. Writeln (&lsquo-Как дела?&rsquo-):
- слово writeln означает вывод фразы, находящейся в одинарных кавычках.
4. Writeln (&lsquo-Хорошо, спасибо`).
5. End.
6. i:=i + 1.
Как видно, достаточно легко и даже интересно использовать основные алгоритмические конструкции. Базовые алгоритмы действительно широко известны, без них невозможно писать программы.
Цикл с постусловием
Цикл с постусловием может повторять неопределенное количество действий без вставки в них операторных скобок или составных слов. Он обязательно выполнится хотя бы один раз. Работает цикл, пока условие является ложным. Прекращается он при становлении показателей правильными. На этом построен алгоритм. Основные алгоритмические конструкции такого типа работают именно в данном темпе.
Для реализации этого цикла необходима конструкция Repeat A until B. Дословно она переводится как «повторять действия, пока условие ложно». Соответственно, через А выражен сам процесс повторения, через В – данные, которые в результате должны принять правильное значение.
Цикл с предусловием
Цикл с постусловием строится таким образом, что он выполняется минимум один раз в любом случае. Однако имеются такие случаи, когда цикл необходим в случае того или иного условия, а при его отсутствии повторения осуществляться не должны. Иначе результат будет неверен. Именно в таком случае используется цикл с предусловием. Для его создания необходима конструкция «while A do B». Первая команда дословно переводится как «пока». А – условие, а В – действия, которые будут повторяться. Вся конструкция означает: «пока условие является верным, выполнять действия».
Все основные алгоритмические конструкции работают лишь в определенных случаях. Какие же они в цикле с предусловием? Если необходимо, чтобы повторялось не одно действие, а сразу несколько, то стоит использовать или составные операторы, или специальные скобки. Цикл вполне может не выполниться, если при вхождении в него условие не является верным. Соответственно, повторяться действия будут, если оно правильное.
Вспомогательный алгоритм
Вспомогательный алгоритм используется в других процессах при помощи указания лишь его имени. Он к основным алгоритмическим конструкциям не относится. В языках программирования такой процесс действий называется подпрограммой. Для облегчения работы с кодом и впоследствии более простого решения задач каждое действие объединяется в один блок, который и является вспомогательным алгоритмом. Каждому из них можно задать свое имя, что позволяет впоследствии неоднократно обращаться к нему.