Эта статья требует дополнительных ссылок для проверки . ( август 2016 г. ) ( Узнайте, как и когда удалить это сообщение-шаблон ) |
В информатике , псевдокод является простым языком описание шагов в алгоритме или другую систему. Псевдокод часто использует структурные соглашения нормального языка программирования , но предназначен для чтения человеком, а не машинным. Обычно в нем опускаются детали, которые необходимы для понимания алгоритма машиной, такие как объявления переменных и специфичный для языка код. Язык программирования дополненный с естественным языком описанием деталей, где удобно, или с компактной математической нотацией. Цель использования псевдокода заключается в том, что его легче понять, чем код обычного языка программирования, и что он является эффективным и независимым от среды описанием ключевых принципов алгоритма. Он обычно используется в учебниках и научных публикациях для документирования алгоритмов, а также при планировании программного обеспечения и других алгоритмов.
Не существует широкого стандарта синтаксиса псевдокода , поскольку программа в псевдокоде не является исполняемой программой, однако существуют определенные ограниченные стандарты (например, для академической оценки). Псевдокод напоминает скелетные программы , которые можно скомпилировать без ошибок. Блок - схему , Drakon-графика и Unified Modeling Language (UML) диаграммы можно рассматривать как графическую альтернативу псевдокод, но нужна больше места на бумаге. Такие языки, как HAGGIS, устраняют разрыв между псевдокодом и кодом, написанным на языках программирования.
Заявление [ править ]
В учебниках и научных публикациях, связанных с информатикой и численными вычислениями, часто используется псевдокод при описании алгоритмов, чтобы все программисты могли их понять, даже если не все они знают одни и те же языки программирования. В учебниках обычно есть сопроводительное введение, объясняющее конкретные используемые условные обозначения. Уровень детализации псевдокода в некоторых случаях может приближаться к уровню детализации формализованных языков общего назначения.
Программист , который должен реализовать алгоритм специфического, особенно незнакомые один, часто начинает с описанием псевдокода, а затем «перевести» , что описание в целевом языке программирования и изменить его , чтобы правильно взаимодействовать с остальной частью программы. Программисты также могут начать проект с наброска кода в псевдокоде на бумаге, прежде чем писать его на его фактическом языке, в качестве подхода к структурированию сверху вниз с процессом шагов, которые следует выполнять в качестве уточнения.
Синтаксис [ править ]
Псевдокод обычно фактически не подчиняется правилам синтаксиса какого-либо конкретного языка; не существует систематической стандартной формы. Некоторые авторы заимствуют стиль и синтаксис управляющих структур из некоторых традиционных языков программирования, хотя это не рекомендуется. [1] [2] Некоторые источники синтаксиса включают Fortran , Pascal , BASIC , C , C ++ , Java , Lisp и ALGOL . Объявления переменных обычно опускаются. Вызовы функций и блоки кода, такие как код, содержащийся в цикле, часто заменяются однострочными предложениями на естественном языке.
Поэтому в зависимости от автора псевдокод может сильно различаться по стилю, от почти точной имитации реального языка программирования с одной стороны до описания, приближающегося к форматированной прозе, с другой.
Это пример псевдокода (для математической игры fizz buzz ):
Псевдокод в стиле Fortran: Программа 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 ; печать с новой строки ; } } | Псевдокод в стиле Structured Basic: Sub FizzBuzz () Для я = 1 до 100 print_number = Истинных Если я это делится на 3 Тогда Печати «Fizz» print_number = ложный Конец Если Если я это делится на 5 Тогда Print «Buzz» print_number = ложный Конец Если Если print_number = Верно Тогда печатать я Печать с новой строки Следующий я конец подписки |
Псевдокод в математическом стиле [ править ]
В численных вычислениях псевдокод часто состоит из математических обозначений , обычно из теории множеств и матриц , смешанных со структурами управления обычного языка программирования, а также, возможно, из описаний на естественном языке . Это компактное и часто неформальное обозначение, которое может понять широкий круг математически подготовленных людей, и часто используется как способ описания математических алгоритмов . Например, оператор суммы ( заглавная сигма-нотация ) или оператор произведения ( заглавная-пи ) может представлять цикл 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.