Алгоритмический язык программирования
Алгоритмический язык программирования — формальный язык, используемый для записи, реализации и изучения алгоритмов. В отличие от большинства языков программирования, алгоритмический язык не привязан к архитектуре компьютера, не содержит деталей, связанных с устройством машины.
Для изучения основ алгоритмизации применяется так называемый Русский алгоритмический язык (школьный алгоритмический язык), использующий понятные школьнику слова на русском языке.
Алголо-подобный алгоритмический язык с русским синтаксисом был введён в употребление академиком А. П. Ершовым в середине 1980-х годов, в качестве основы для «безмашинного» курса информатики.
Основные служебные слова алгоритмического языка
- алг (алгоритм)
- арг (аргумент)
- рез (результат)
- нач (начало) — начало алгоритма
- кон (конец) — конец алгоритма
- дано — исходные данные в произвольной форме
- надо — цель алгоритма
- утв
- цел (целый)
- вещ (вещественный)
- сим (символьный)
- лит (литера) — строка
- лог (логический)
- таб(таблица) — для обозначения массива
- длин (длина) — количество элементов массива
- если
- то
- иначе
- все
- выбор
- при
- знач
- нц (начало цикла)
- кц (конец цикла)
- пока
- для
- от
- до
- шаг
Логические функции и значения для составления выражений
- и
- или
- не
- да
- нет
- ввод
- вывод
Общий вид алгоритма
Часть алгоритма от слова алг до слова нач называется заголовком , а часть, заключенная между словами нач и кон — телом алгоритма .
В предложении алг после названия алгоритма в круглых скобках указываются характеристики (арг, рез) и тип значения (цел, вещ, сим, лит или лог) всех входных (аргументы) и выходных (результаты) переменных. При описании массивов (таблиц) используется служебное слово таб, дополненное граничными парами по каждому индексу элементов массива.
В записи алгоритма ключевые слова обычно подчёркиваются либо выделяются полужирным шрифтом. Для выделения логических блоков применяются отступы, а парные слова начала и конца блока соединяются вертикальной чертой.
Основные алгоритмические структуры
Подробное описание основных алгоритмических структур приведено в этой статье. Ниже приводятся шаблоны составления этих структур на алгоритмическом языке.
Неполная развилка
Язык алгоритмический
Алгоритмический язык — это искусственная система языковых средств (см. Язык), обладающая выразительными возможностями, достаточными для того, чтобы с её помощью можно было установить любое детерминированное общепонятное предписание о выполнении некоторой последовательности операций, ведущих к решению той или иной конкретной задачи. Такого рода предписания носят название алгоритмов (см. Алгоритм), от которого происходит термин «алгоритмический язык». В систематическое употребление этот термин был введён в 1958 году Г. Боттенбрухом. Понятие алгоритмического языка сформировалось в годах XX века в процессе становления компьютерного программирования как самостоятельной научно-прикладной дисциплины. Однако теоретические истоки этого понятия прослеживаются ещё в работах годов С. К. Клини, Э. Л. Поста, А. М. Тьюринга и А. Чёрча по уточнению общего математического понятия алгоритма. В настоящее время теория алгоритмических языков, а также проблематика, связанная с их разработкой и использованием, составляет один из наиболее важных разделов информатики.
В логико-лингвистическом и гносеологическом аспекте алгоритмические языки представляют собой одну из моделей императива (повелительного наклонения), и потому выступают, с одной стороны, как средство фиксации операционного знания, а с другой — как инструмент машинной, человеко-машинной, а некоторых случаях и человеческой коммуникации. За короткий промежуток времени алгоритмические языки превратились в новое познавательное средство, органически вошедшее в научную и практическую деятельность человека. Обычно к ним предъявляется требование «универсальности», заключающееся в том, что должна иметься возможность моделирования с их помощью любых алгоритмов из числа тех, которые дают какое-либо уточнение общего понятия алгоритма (например, машин Тьюринга). Абсолютная точность синтаксиса алгоритмического языка необходима не во всех случаях. Она обязательна в рассмотрениях содержательного характера. Но в определённых ситуациях (например, когда тексты, записанные на каком-либо алгоритмическом языке, начинают выступать в роли средства общения с компьютером) этот алгоритмический язык должен быть оформлен в виде соответствующего формализованного языка (см. Язык формализованный) с чётко описанным синтаксисом и точно заданной семантикой его грамматических категорий (см. Семантика). Центральное место в таких алгоритмических языках занимают тексты, называющиеся программами (в сущности, именно они и выражают понятие алгоритма). Понятие программы формулируется в чисто структурных терминах синтаксиса этого языка (см. Синтактика), без какого-либо обращения к смысловым категориям. Точно такой же характер носит и описание процедуры выполнения программы. Поэтому в роли исполнителя алгоритмов, записанных на формализованных алгоритмических языках, может выступать не только человек, но и наделённое соответствующими возможностями автоматическое устройство, например, компьютер, с помощью которого сейчас возможно выполнять все основные виды алгоритмов.
Все алгоритмические языки можно условно разделить на две основные группы:
- теоретические алгоритмические языки (к которым относятся такие, как язык машин Тьюринга или нормальных алгоритмов Маркова) используются в общей теории алгоритмов;
- прикладные алгоритмические языки (к которым относятся так называемые языки программирования для компьютеров; в настоящее время их известно более тысячи) — используются в практике машинного решения разнообразных по-своему характеру задач.
На ранней стадии программирования употреблялись «машинно-ориентированные» алгоритмические языки (так называемые языки «низкого уровня»), учитывавшие структуру или даже характеристики конкретных вычислительных машин (систему команд, особенности и структуру памяти и так далее). Впоследствии им на смену пришли «проблемно-ориентированные» алгоритмические языки (так называемые языки «высокого уровня»), освободившие пользователя от необходимости ориентироваться на машины определённого типа и тем самым придавшие его усилиям гораздо большую математическую направленность. Дальнейшим развитием идеи алгоритмического языка стали языки программирования более общего, не обязательно алгоритмического характера. Как и алгоритмические языки, такие языки в конечном счёте тоже нацелены на получение машинных программ, но во многих случаях их тексты допускают определённую свободу в выполнении и, как правило, дают лишь материал для синтеза искомых алгоритмов, а не сами эти алгоритмы. Постоянное проникновение вычислительных машин в научную, культурную и социальную сферы ведёт к значительному повышению роли алгоритмических языков в жизни общества, и это выражается, в частности, в том, что алгоритмы и реализующие их программы (то есть, в конечном счёте, тексты на некоторых алгоритмических языках) всё более приобретают характер реальных ресурсов экономического, научного и культурного потенциала развития, что в свою очередь вызывает к жизни значительное количество серьёзных методологических и гносеологических проблем. Кроме того, расширяющееся (вплоть до обиходного) пользование алгоритмическими языками приводит к установлению особого стиля мышления, и соотношение мышления такого рода с традиционным математическим также представляет собой важную и мало разработанную методологическую проблему.
Что такое алгоритмический язык
Алгоритмический язык
Алгоритм — заранее заданное точное предписание возможному исполнителю совершить определённую последовательность действий для получения решения задачи за конечное число шагов.
4.1. Способы задания алгоритма.
На практике наиболее распространены следующие способы задания алгоритмов:
— словесная (запись на естественном языке);
— графическая (изображения из графических символов);
— псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);
— программная (тексты на языках программирования). Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных.
Словесный способ
Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных. Алгоритм задаётся в произвольном изложении на естественном языке.
Пример. Записать алгоритм нахождения наибольшего общего делителя (НОД) двух натуральных чисел (алгоритм Евклида).
Алгоритм может быть следующим:
1) Задать два числа.
2) Если числа равны, то взять любое из них в качестве ответа и остановиться, в противном случае продолжить выполнение алгоритма.
3) Определить большее из чисел.
4) Заменить большее из чисел разностью большего и меньшего из чисел.
5) Повторить алгоритм с шага 2.
Описанный алгоритм применим к любым натуральным числам и должен приводить к решению поставленной задачи.
Графический способ
При графическом представлении алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий. Такое графическое представление называется схемой алгоритма, или блок-схемой. В блок-схеме каждому типу действий соответствует геометрическая фигура, представленная в виде блочного символа. В таблице приведены наиболее часто употребляемые символы.
Начало, конец алгоритма, вход и выход в подпрограмму
Вычислительное действие или последовательность действий
Вычисления по подпрограмме
Ввод-вывод в общем виде
Блок «процесс» применяется для обозначения действия или последовательности действий, изменяющих значение, форму представления или размещения данных. Для улучшения наглядности схемы несколько отдельных блоков обработки можно объединять в один блок. Представление отдельных операций достаточно свободно.
Блок «решение» используется для обозначения переходов управления по условию. В каждом блоке «решение» должны быть указаны вопрос, условие или сравнение, которые он определяет.
Блок «модификация» используется для организации циклических конструкций. Внутри блока записывается параметр цикла, для которого указываются его начальное значение, граничное условие и шаг изменения значения параметра для каждого повторения.
Блок «предопределённый процесс» используется для указания обращении к вспомогательным алгоритмам, существующим автономно в виде некоторых самостоятельных модулей, и для обращений к библиотечным подпрограммам.
Псевдокод представляет собой систему обозначений и правил, предназначенную для единообразной записи алгоритмов.
В псевдокоде не приняты строгие синтаксические правила для записи команд, присущие формальным языкам, что облегчает запись алгоритма на стадии его проектирования. Однако в псевдокоде обычно имеются некоторые конструкции, присущие формальным языкам. В псевдокоде, так же, как и в формальных языках, есть служебные слова, смысл которых однозначно определён. Например, алгоритмы на алгоритмическом языке записываются с помощью служебных слов, представленных в таблице 1.7.