stringtranslate.com

Псевдокод

В информатике псевдокод — это описание шагов алгоритма с использованием сочетания соглашений языков программирования (таких как оператор присваивания , условный оператор , цикл ) с неформальными, обычно не требующими пояснений, обозначениями действий и условий. [1] [2] Хотя псевдокод имеет общие характеристики с обычными языками программирования , он предназначен для чтения человеком , а не для управления машиной. Псевдокод обычно опускает детали, необходимые для машинной реализации алгоритма. Язык программирования дополняется подробностями описания естественного языка , где это удобно, или компактными математическими обозначениями . Цель использования псевдокода состоит в том, чтобы его было легче понять людям, чем код обычного языка программирования, и чтобы он представлял собой эффективное и независимое от среды описание ключевых принципов алгоритма. Он обычно используется в учебниках и научных публикациях для документирования алгоритмов, а также при планировании программного обеспечения и других алгоритмов.

Не существует широкого стандарта синтаксиса псевдокода , поскольку программа в псевдокоде не является исполняемой программой; однако существуют определенные ограниченные стандарты (например, академическая оценка). Псевдокод напоминает программы-скелетоны , которые можно скомпилировать без ошибок. Блок-схемы , drakon-charts и диаграммы Unified Modeling Language (UML) можно рассматривать как графическую альтернативу псевдокоду, но для них требуется больше места на бумаге. Такие языки, как HAGGIS, устраняют разрыв между псевдокодом и кодом, написанным на языках программирования.

Приложение

В учебниках и научных публикациях , связанных с информатикой и численными вычислениями , при описании алгоритмов часто используется псевдокод, чтобы все программисты могли их понять, даже если не все они знают одни и те же языки программирования. В учебниках обычно имеется введение, объясняющее конкретные используемые условные обозначения. Уровень детализации псевдокода в некоторых случаях может приближаться к уровню детализации формализованных языков общего назначения.

Программист , которому необходимо реализовать конкретный алгоритм, особенно незнакомый, часто начинает с описания псевдокода, а затем «переводит» это описание на целевой язык программирования и модифицирует его для правильного взаимодействия с остальной частью программы. Программисты также могут начать проект с наброска кода в псевдокоде на бумаге, прежде чем писать его на фактическом языке, в рамках нисходящего подхода к структурированию, с последовательностью шагов, которые необходимо выполнить в качестве уточнения.

Псевдокод широко используется в стандартизации, при этом известные примеры представлены стандартами MPEG , в которых очень интенсивно используется C -подобный псевдокод, и их невозможно понять без понимания деталей кода. [3]

Синтаксис

Псевдокод обычно фактически не подчиняется синтаксическим правилам какого-либо конкретного языка; не существует систематической стандартной формы. Некоторые авторы заимствуют стиль и синтаксис управляющих структур некоторых традиционных языков программирования, хотя это не рекомендуется. [4] [5] Некоторые источники синтаксиса включают Fortran , Pascal , BASIC , C , C++ , Java , Lisp и ALGOL . Объявления переменных обычно опускаются. Вызовы функций и блоки кода, например код, содержащийся в цикле, часто заменяются однострочным предложением на естественном языке.

Таким образом, в зависимости от автора псевдокод может сильно различаться по стилю: от почти точной имитации реального языка программирования, с одной стороны, до описания, приближающегося к форматированной прозе, с другой.

Псевдокод математического стиля

В числовых вычислениях псевдокод часто состоит из математических обозначений , обычно из теории матриц и множеств , смешанных со структурами управления обычного языка программирования и, возможно, также описаниями на естественном языке . Это компактное и зачастую неформальное обозначение, понятное широкому кругу людей с математическим образованием, которое часто используется для описания математических алгоритмов . Например, оператор суммы ( нотация заглавной буквы ) или оператор произведения ( нотация заглавной буквы Пи ) могут представлять цикл for и структуру выбора в одном выражении:

Возвращаться

Обычно для математических уравнений используется набор текста, отличный от ASCII , например, с помощью языков разметки, таких как TeX или MathML , или собственных редакторов формул .

Псевдокод математического стиля иногда называют пиджин-кодом , например пиджин ALGOL (происхождение концепции), пиджин Fortran , пиджин BASIC , пиджин Pascal , пиджин C и пиджин Lisp .

Общие математические символы

Пример

Ниже следует более длинный пример псевдокода математического стиля для алгоритма Форда – Фулкерсона :

на вход  алгоритма Форда-Фалкерсона : график G с пропускной способностью c , исходный узел s , Выход узла стока t  : поток f такой, что f максимально от s до t (Обратите внимание, что f (u,v) — поток от узла u к узлу v, а c (u,v) — пропускная способность потока от узла u к узлу v) для каждого ребра ( ты , v ) в  G E  do  f ( ты , v ) ← 0 ж ( v , ты ) ← 0 пока существует путь p от s до t  в остаточной сети G f , пусть c f будет пропускной способностью остаточной сети G f  c f ( p ) ← min{ c f ( u , v ) | ( ты , v ) в  p } для каждого ребра ( ты , v ) в  p  do  f ( ты , v )ж ( ты , v ) + c ж ( п ) ж ( v , ты ) ← - ж ( ты , в ) вернуть  f

Машинная компиляция языков стиля псевдокода

Грамматика естественного языка в языках программирования

Различные попытки привнести элементы грамматики естественного языка в компьютерное программирование привели к появлению таких языков программирования, как HyperTalk , Lingo , AppleScript , SQL , Inform и в некоторой степени Python . В этих языках круглые скобки и другие специальные символы заменяются предлогами, что приводит к весьма многословному коду. Эти языки обычно являются динамически типизированными , что означает, что объявления переменных и другой шаблонный код могут быть опущены. Такие языки могут облегчить человеку, не знающему языка, понимание кода и, возможно, также изучение языка. Однако сходство с естественным языком обычно носит скорее косметический, чем подлинный характер. Правила синтаксиса могут быть такими же строгими и формальными, как и в обычном программировании, и не обязательно облегчают разработку программ.

Математические языки программирования

Альтернативой использованию математического псевдокода (включающего нотацию теории множеств или матричные операции) для документирования алгоритмов является использование формального математического языка программирования, который представляет собой смесь математической нотации, отличной от ASCII, и структур управления программой. Затем код может быть проанализирован и интерпретирован машиной.

Некоторые языки формальных спецификаций включают нотацию теории множеств с использованием специальных символов. Примеры:

Некоторые языки программирования массивов включают векторизованные выражения и матричные операции в виде формул, отличных от ASCII, смешанных с традиционными структурами управления. Примеры:

Смотрите также

Рекомендации

  1. ^ Рейзиг 2007, с. 23, Псевдокодовые программы и их семантика.
  2. ^ Часто повторяемое определение псевдокода, по крайней мере, с 2003 года, представляет собой «подробное, но читаемое описание того, что должна делать компьютерная программа или алгоритм, выраженное на формальном естественном языке».
  3. ^ Митчелл и др. 1996, с. 105.
  4. ^ МакКоннелл, Стив (2004). Код завершен . Пирсон Образование. п. 54. ИСБН 978-0-7356-1967-8. Избегайте синтаксических элементов целевого языка программирования.
  5. ^ Приглашение к информатике, 8-е издание, Шнайдер/ Герстинг , «Сохраняйте язык операторов независимым», как указано в этом вопросе по обмену стеками.

дальнейшее чтение

Внешние ссылки