В информатике, псевдокод - это простое языковое описание шагов в алгоритме или другой системе. Псевдокод часто использует структурные соглашения обычного языка программирования, но предназначен для чтения человеком, а не машинным. Обычно в нем опускаются детали, которые необходимы для машинного понимания алгоритма, такие как объявления переменных и код для конкретного языка. Язык программирования дополнен подробностями описания естественного языка, где это удобно, или компактными математическими обозначениями. Цель использования псевдокода заключается в том, что его легче понять, чем код обычного языка программирования, и что он является эффективным и независимым от среды описанием ключевых принципов алгоритма. Он обычно используется в учебниках и научных публикациях для документирования алгоритмов и при планировании программного обеспечения и других алгоритмов.
Не существует широкого стандарта для синтаксиса псевдокода , поскольку программа в псевдокоде не является исполняемой программой, однако существуют определенные ограниченные стандарты (например, для академической оценки). Псевдокод напоминает скелетные программы, которые могут быть скомпилированы без ошибок. Блок-схемы, drakon-charts и Диаграммы Unified Modeling Language (UML) можно рассматривать как графическую альтернативу псевдокоду, но на бумаге они более просторны. Такие языки, как HAGGIS, устраняют разрыв между псевдокодом и кодом, написанным на языках программирования.
Учебники и научные публикации, относящиеся к информатика и числовые вычисления часто используют псевдокод в описании алгоритмов, чтобы все программисты могли их понять, даже если они не все знают одни и те же языки программирования. В учебниках обычно есть сопроводительное введение, объясняющее конкретные используемые условные обозначения. Уровень детализации псевдокода может в некоторых случаях приближаться к уровню детализации формализованных языков общего назначения.
A программист, которому необходимо реализовать определенный алгоритм, особенно незнакомый, часто начинает с описания псевдокода, а затем «переводит» это описание на целевой язык программирования и модифицирует его для правильного взаимодействия с остальной частью программа. Программисты также могут начать проект с наброска кода в псевдокоде на бумаге, прежде чем писать его на его фактическом языке, в качестве структурного подхода сверху вниз с процессом шагов, которые необходимо выполнить в качестве уточнения.
Псевдокод обычно фактически не подчиняется правилам синтаксиса какого-либо конкретного языка; не существует систематической стандартной формы. Некоторые авторы заимствуют стиль и синтаксис управляющих структур из некоторых традиционных языков программирования, хотя это не рекомендуется. Некоторые источники синтаксиса включают Fortran, Pascal, BASIC, C, C ++, Java, Lisp и АЛГОЛ. Объявления переменных обычно опускаются. Вызовы функций и блоки кода, такие как код, содержащийся в цикле, часто заменяются однострочными предложениями на естественном языке.
В зависимости от автора, псевдокод может сильно различаться по стилю, от почти точной имитации реального языка программирования, с одной стороны, до описания, приближающегося к форматированной прозе, с другой.
Это пример псевдокода (для математической игры fizz buzz ):
псевдокод в стиле Fortran программа fizzbuzz Do i = от 1 до 100 установить print_number в true Если i делится на 3 print "Fizz" установить print_number на false Если i делится на 5 print "Buzz" установить print_number на false Если print_number, напечатать i напечатать конец новой строки do | Псевдокод в стиле Паскаля процедура fizzbuzz Для i: = от 1 до 100 установите для print_number значение true; Если i делится на 3, выведите «Fizz»; установите для print_number значение false; Если i делится на 5, выведите «Buzz»; установите для print_number значение false; Если print_number, выведите i; напечатать новую строку; end | Псевдокод в стиле C: void function fizzbuzz {for (i = 1; i <= 100; i++) { set print_number to true; If i is divisible by 3 { print "Fizz"; set print_number to false; } If i is divisible by 5 { print "Buzz"; set print_number to false; } If print_number, print i; print a newline; } } | Псевдокод в стиле Structured Basic Sub fizzbuzz () For i = от 1 до 100 print_number = True Если i делится на 3 Затем выведите «Fizz» print_number = False End, если i делится на 5, тогда выведите «Buzz» print_number = False End, если если print_number = True Затем напечатайте i Распечатайте новую строку Next i End Sub |
В числовых вычислениях псевдокод часто состоит из математической нотации, обычно из набора и теории матрицы, смешанной с управляющими структурами обычного языка программирования, а также, возможно, естественного языка описания. Это компактная и часто неформальная нотация, которую может понять широкий круг математически подготовленных людей, и часто используется как способ описания математических алгоритмы. Например, оператор суммы (заглавная сигма-нотация ) или оператор произведения (заглавная -pi нотация ) может представлять цикл for и структуру выбора в одном выражении:
Return
Обычно не ASCII набор текста используется для математических уравнений, например, с помощью языков разметки, таких как TeX или MathML или проприетарный.
Псевдокод математического стиля иногда упоминается как код пиджина, например пиджин АЛГОЛ (происхождение концепции), пиджин Фортран, pidgin BASIC, pidgin Pascal, pidgin C и pidgin Lisp.
Тип операции | Символ | Пример |
---|---|---|
Назначение | ← или: = | c ← 2πr , c: = 2πr |
Сравнение | =, ≠, <,>, ≤, ≥ | |
Арифметика | +, -, ×, /, mod | |
Пол / потолок | ⌊, ⌋, ⌈, ⌉ | a ← ⌊b⌋ + ⌈c⌉ |
Логические | и, or | |
Суммы, произведения | Σ Π | h ← Σ a∈A 1 / a |
Далее следует более длинный пример псевдокода в математическом стиле для алгоритма Форда – Фалкерсона :
алгоритма входных данных ford-fulkerson is: График G с пропускной способностью c, исходным узлом s, приемным узлом t вывод: поток f такой, что f является максимальным от s до t (обратите внимание, что f (u, v) - это поток от узла u к узлу v, а c (u, v) - поток пропускная способность от узла u до узла v) для каждого ребра (u, v) inGEdof(u, v) ← 0 f (v, u) ← 0 в то время как существует путь p от s до t в остаточной сети G fdo, пусть c f будет пропускной способностью потока остаточной сети G fcf(p) ← min {c f (u, v) | (u, v) в p} для каждого ребра (u, v) inp dof(u, v) ← f (u, v) + c f (p) f (v, u) ← −f (u, v) return f
Различные попытки привнести элементы грамматики естественного языка в компьютерное программирование привели к появлению таких языков программирования, как HyperTalk, Lingo, AppleScript, SQL, Inform и в некоторой степени Python. В этих языках круглые скобки и другие специальные символы заменены предлогами, что приводит к довольно разговорчивому коду. Эти языки обычно динамически типизированы, что означает, что объявления переменных и другой шаблонный код можно опустить. Такие языки могут облегчить человеку без знания языка понимание кода и, возможно, также выучить язык. Однако сходство с естественным языком обычно скорее косметическое, чем подлинное. Правила синтаксиса могут быть такими же строгими и формальными, как и в обычном программировании, и не обязательно облегчают разработку программ.
Альтернативой использованию математического псевдокода (включая нотацию теории множеств или матричные операции) для документирования алгоритмов является использование формального математического языка программирования, который представляет собой смесь не-ASCII математические обозначения и программные управляющие структуры. Затем код может быть проанализирован и интерпретирован машиной.
Некоторые формальные языки спецификации включают обозначение теории множеств с использованием специальных символов. Примеры:
Некоторые языки программирования массивов включают векторизованные выражения и матричные операции как формулы, отличные от ASCII, смешанный с обычными структурами управления. Примеры:
Найдите псевдокод в Wiktionary, бесплатном словаре. |