В информатике , псевдокод является простым языком описание шагов в алгоритме или другую систему. Псевдокод часто использует структурные соглашения нормального языка программирования , но предназначен для чтения человеком, а не машинным чтением. Обычно в нем опускаются детали, которые необходимы для машинного понимания алгоритма, такие как объявления переменных и специфичный для языка код. Язык программирования дополненный с естественным языком описанием деталей, где удобно, или с компактной математической нотацией. Цель использования псевдокода заключается в том, что его легче понять, чем код обычного языка программирования, и что он является эффективным и независимым от среды описанием ключевых принципов алгоритма. Он обычно используется в учебниках и научных публикациях для документирования алгоритмов, а также при планировании программного обеспечения и других алгоритмов.
Не существует широкого стандарта синтаксиса псевдокода , поскольку программа в псевдокоде не является исполняемой программой, однако существуют определенные ограниченные стандарты (например, для академической оценки). Псевдокод напоминает скелетные программы , которые можно скомпилировать без ошибок. Блок - схему , Drakon-графика и Unified Modeling Language (UML) диаграммы можно рассматривать как графическую альтернативу псевдокод, но нужна больше места на бумаге. Такие языки, как HAGGIS, устраняют разрыв между псевдокодом и кодом, написанным на языках программирования.
Заявление
Учебники и научные публикации, связанные с информатикой и численными вычислениями, часто используют псевдокод при описании алгоритмов, чтобы все программисты могли их понять, даже если не все они знают одни и те же языки программирования. В учебниках обычно есть сопроводительное введение, объясняющее конкретные используемые условные обозначения. Уровень детализации псевдокода может в некоторых случаях приближаться к уровню формализованных языков общего назначения.
Программист , который должен реализовать алгоритм специфического, особенно незнакомые один, часто начинает с описанием псевдокода, а затем «перевести» , что описание в целевом языке программирования и изменить его , чтобы правильно взаимодействовать с остальной частью программы. Программисты также могут начать проект с наброска кода в псевдокоде на бумаге, прежде чем писать его на его реальном языке, в качестве нисходящего подхода к структурированию с процессом шагов, которые следует выполнять в качестве уточнения.
Синтаксис
Псевдокод обычно не подчиняется синтаксическим правилам какого-либо конкретного языка; не существует систематической стандартной формы. Некоторые авторы заимствуют стиль и синтаксис управляющих структур из некоторых традиционных языков программирования, хотя это не рекомендуется. [1] [2] Некоторые источники синтаксиса включают Fortran , Pascal , BASIC , C , C ++ , Java , Lisp и ALGOL . Объявления переменных обычно опускаются. Вызовы функций и блоки кода, такие как код, содержащийся в цикле, часто заменяются однострочными предложениями на естественном языке.
Поэтому в зависимости от автора псевдокод может сильно различаться по стилю, от почти точной имитации реального языка программирования с одной стороны до описания, приближающегося к форматированной прозе, с другой.
Это пример псевдокода (для математической игры fizz buzz ):
Псевдокод в стиле Фортран: Программа FizzBuzz Do я = 1 до 100 множества print_number к истинному Если я это делится на 3 печати «Fizz» набор print_number в ЛОЖЬ Если я это делится на 5 печати «Базз» набор print_number в ЛОЖЬ Если print_number , печать я печать новой строки конца сделать | Псевдокод в стиле Паскаля: Процедура FizzBuzz Для I : = 1 до 100 сделать множество print_number к истинным ; Если я это делится на 3 , то печать « Fizz » ; установите для print_number значение false ; Если я это делится на 5 , то печать « Buzz » ; установите для print_number значение false ; Если print_number , выведите i ; печать с новой строки ; конец | Псевдокод в стиле C: недействительная функция FizzBuzz { для ( я = 1 ; я <= 100 ; я ++ ) { множества print_number к истинному ; Если я это делится на 3 { печати «Fizz» ; установите для print_number значение false ; } Если я это делится на 5 { печати «Buzz» ; установите для print_number значение false ; } Если print_number , напечатайте i ; печать с новой строки ; } } | Псевдокод структурированного базового стиля: Sub FizzBuzz () Для я = 1 до 100 print_number = Истинных Если я это делится на 3 Тогда Печати «Fizz» print_number = ложный Конец Если Если я это делится на 5 Тогда Print «Buzz» print_number = ложный Конец Если Если print_number = Верно Тогда печать я Печать на новую строку Далее я End Sub |
Псевдокод математического стиля
В численных вычислениях псевдокод часто состоит из математических обозначений , обычно из теории множеств и матриц , смешанных со структурами управления обычного языка программирования, а также, возможно, из описаний на естественном языке . Это компактное и часто неформальное обозначение, которое может быть понято широким кругом математически подготовленных людей, и часто используется как способ описания математических алгоритмов . Например, оператор суммы ( запись с большой буквы ) или оператор произведения ( запись с большой буквы ) может представлять цикл for и структуру выбора в одном выражении:
Возвращаться
Обычно для математических уравнений используется набор текста, отличный от ASCII , например, с помощью языков разметки, таких как TeX или MathML , или собственных редакторов формул .
Псевдокод математического стиля иногда называют кодом pidgin , например pidgin ALGOL (источник концепции), pidgin Fortran , pidgin BASIC , pidgin Pascal , pidgin C и pidgin Lisp .
Общие математические символы
Тип операции | Символ | Пример |
---|---|---|
Назначение | ← или: = | c ← 2πr , c := 2πr |
Сравнение | =, ≠, <,>, ≤, ≥ | |
Арифметика | +, -, ×, /, мод | |
Пол / потолок | ⌊, ⌋, ⌈, ⌉ | a ← ⌊b⌋ + ⌈c⌉ |
Логический | и , или | |
Суммы, произведения | Σ Π | h ← Σa∈A 1/a |
Пример
Далее следует более длинный пример псевдокода в математическом стиле для алгоритма Форда – Фулкерсона :
Алгоритм Форд-Фалкерсон является вводом: График G с мощностью потока с , исходный узел s ,Выход приемного узла t : поток f такой, что f максимален от s до t (Обратите внимание, что f (u, v) - это поток от узла u к узлу v, а c (u, v) - это пропускная способность потока от узла u к узлу v) для каждого ребра ( u , v ) в G E do f ( u , v ) ← 0 f ( v , u ) ← 0 в то время как существует путь p от s к t в остаточной сети G f , пусть c f будет пропускной способностью потока остаточной сети G f c f ( p ) ← min { c f ( u , v ) | ( u , v ) in p } для каждого ребра ( u , v ) в p do f ( u , v ) ← f ( u , v ) + c f ( p ) f ( v , u ) ← - f ( u , v ) вернуть f
Машинная компиляция языков в стиле псевдокода
Грамматика естественного языка в языках программирования
Различные попытки привнести элементы грамматики естественного языка в компьютерное программирование привели к появлению таких языков программирования, как HyperTalk , Lingo , AppleScript , SQL , Inform и в некоторой степени Python . В этих языках круглые скобки и другие специальные символы заменены предлогами, что приводит к довольно разговорчивому коду. Эти языки обычно динамически типизированы , что означает, что объявления переменных и другой шаблонный код могут быть опущены. Такие языки могут облегчить человеку без знания языка понимание кода и, возможно, также выучить язык. Однако сходство с естественным языком обычно скорее косметическое, чем подлинное. Правила синтаксиса могут быть такими же строгими и формальными, как и в обычном программировании, и не обязательно облегчают разработку программ.
Математические языки программирования
Альтернативой использованию математического псевдокода (включающего нотацию теории множеств или матричные операции) для документирования алгоритмов является использование формального математического языка программирования, который представляет собой смесь математической нотации, отличной от ASCII, и структур управления программой. Затем код может быть проанализирован и интерпретирован машиной.
Некоторые формальные языки спецификации включают обозначения теории множеств с использованием специальных символов. Примеры:
- Обозначение Z
- Венский язык спецификации методов разработки (VDM-SL).
Некоторые языки программирования массивов включают векторизованные выражения и матричные операции как формулы не-ASCII, смешанные с обычными управляющими структурами. Примеры:
- Язык программирования (APL) и его диалекты APLX и A + .
- MathCAD .
Смотрите также
- Концептуальное программирование
- Дракон-карта
- Схема
- Грамотное программирование
- Язык разработки программ
- Короткий номер
- Структурированный английский
Рекомендации
- ^ МакКоннелл, Стив (2004). Код завершен . п. 54. ISBN 978-0-7356-1967-8.
Избегайте синтаксических элементов целевого языка программирования
- ^ Приглашение в информатику, 8-е издание, авторство Шнайдер / Герстинг , «Держите утверждения независимыми от языка», цитируется в [1]
дальнейшее чтение
- Зобель, Джастин (2013). «Алгоритмы». Написание для компьютерных наук (второе изд.). Springer. ISBN 978-1-85233-802-2.
Внешние ссылки
- Стандарт псевдокода
- Собраны алгоритмы ACM
- Руководство по псевдокоду , файл PDF.