Описание алгоритма с помощью алгоритмических языков
Алгоритмический язык (АЯ) – это специальный язык программирования, в котором алгоритм решения задачи (программа) записывается с помощью определенных правил построения конструкций для описания операций (синтаксиса языка). Предписание на выполнение определенной операции в АЯ называется оператором. Специальная программа, предназначенная для преобразования текста программы на АЯ в двоичный код («машинный язык»), называется компилятором (интерпретатором). Каждый АЯ имеет свой компилятор или интерпретатор. Программа-компилятор (интерпретатор) содержит все правила, определяющие синтаксис данного АЯ, а также способы преобразования конструкций АЯ в язык машинных кодов. Основное отличие компилятора от интерпретатора состоит в том, что в результате компиляции программы создается.exe-файл, который может выполняться самостоятельно, не требуя наличия среды, в которой разрабатывалась программа (Turbo Pascal, Delphi, C++), в то время как в результате работы интерпретатора.exe-файл не создается и программа будет работать только непосредственно в среде разработки (MatLab, Scilab). Одним из способов обеспечения высокого уровня технологичности разрабатываемого ПО является структурное программирование. (Можно сказать, что суть структурного программирования заключается в оформлении последовательности команд как замкнутых функций или процедур и в объединении данных, связанных по смыслу, в сложные структуры данных). Различают три вида вычислительного процесса, реализуемого программами: линейный, разветвленный и циклический. Линейная структура процесса вычислений предполагает, что для получения результата необходимо выполнить некоторые операции в определенной последовательности.
Разветвленная структура процесса вычислений предполагает, что конкретная последовательность операций зависит от значений одной или нескольких переменных. Циклическая структура процесса вычислений предполагает, что для получения результата некоторые действия необходимо выполнить несколько раз.
Для реализации указанных вычислительных процессов в программах используют управляющие операторы. После того, как в 60-х годах ХХ в. было доказано, что любой сколь угодно сложный алгоритм можно представить с использованием трех основных управляющих конструкций, в языках программирования высокого уровня появились управляющие операторы для реализации соответствующих конструкций. Эти три конструкции принято считать базовыми (основными) (основными алгоритмическими структурами называют стандартные наборы блоков и способы их соединения для выполнения типичных последовательностей операций): ·?следование – обозначает последовательное выполнение действий; ·?ветвление – соответствует выбору одного из двух вариантов действий (if-then-else); ·?цикл-пока – определяет повторение действий, пока не будет нарушено некоторое условие, выполнение которого проверяется в начале цикла (while).
Кроме базовых процедурные языки программирования высокого уровня обычно используют еще три конструкции, которые можно составить из базовых: · выбор – обозначает выбор одного варианта из нескольких в зависимости от значения некоторой величины (case); · цикл-до – обозначает повторение некоторых действий до выполнения заданного условия, проверка которого осуществляется после выполнения действий в цикле (repeat-until); · цикл с заданным числом повторений (счетный цикл) – обозначает повторение некоторых действий указанное количество раз (do).
Примечание. Слово «структурное» в данном названии подчеркивает тот факт, что при программировании используются только перечисленные конструкции (структуры). Отсюда и понятие «программирование без goto». Программы, написанные с использованием только структурных операторов передачи управления, называют структурными. Представление алгоритма программы в виде блок-схемы с точки зрения структурного программирования имеет два недостатка: · предполагает слишком низкий уровень детализации, что часто скрывает суть сложных алгоритмов; · позволяет использовать неструктурные способы передачи управления, причем часто на блок-схеме они выглядят проще, чем структурные. Кроме блок-схем для описания алгоритмов можно использовать псевдокоды, Flow-формы и диаграммы Насси-Шнейдермана. Все перечисленные нотации (системы обозначений) базируются на тех же основных структурах, что и структурное программирование, но допускают разные уровни детализации. Псевдокод – формализованное текстовое описание алгоритма (текстовая нотация). Описать с помощью псевдокодов неструктурный алгоритм невозможно. Использование псевдокодов изначально ориентирует проектировщика только на структурные способы передачи управления, а потому требует более тщательного анализа разрабатываемого алгоритма. В отличие от блок-схем, псевдокоды не ограничивают степень детализации проектируемых операций. Они позволяют соизмерять степень детализации действия с уровнем абстракции, на котором это действие рассматривают, и хорошо согласуются с основным методом структурного программирования – методом пошаговой детализации. Пример использования псевдокода для некоторых основных конструкций:
Flow-формы представляют собой графическую нотацию описания структурных алгоритмов, которая иллюстрирует вложенность структур. Каждый символ Flow-формы соответствует управляющей структуре и изображается в виде прямоугольника. Для демонстрации вложенности структур символ Flow-формы может быть вписан в соответствующую область прямоугольника любого другого символа. В прямоугольниках символов содержится текст на естественном языке или в математической нотации.
Диаграммы Насси-Шнейдермана. Диаграммы Насси-Шнейдермана являются развитием Flow-форм. Основное их отличие от Flow -форм заключается в том, что область обозначения условий и вариантов ветвления изображают в виде треугольников. Такое обозначение обеспечивает большую наглядность представления алгоритма. Так же, как и при использовании псевдокодов, описать неструктурный алгоритм, применяя Flow -формы или диаграммы Насси-Шнейдермана, невозможно (для неструктурных передач управления в этих нотациях просто отсутствую условные обозначения.) В то же время, являясь графическими, эти нотации лучше отображают вложенность конструкций, чем псевдокоды. Общим недостатком Flow- форм и диаграмм Насси-Шнейдермана является сложность построения изображений символов, что усложняет практическое применение этих нотаций для применения описания больших алгоритмов.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|