Стандарты для псевдо кода? [закрытый]

Я должен перевести некоторый Python и стандартные программы Java в псевдо код для моего основного тезиса, но испытать затруднения, придумывающие синтаксис/стиль, который является:

  • последовательный
  • легкий понять
  • не слишком подробный
  • не слишком близкий к естественному языку
  • не слишком близкий к некоторому конкретному языку программирования.

Как Вы пишете псевдо код? Есть ли какие-либо стандартные рекомендации?

27
задан ferdystschenko 20 February 2010 в 09:58
поделиться

6 ответов

Я рекомендую посмотреть книгу «Введение в алгоритмы» (написанные Корменом, Лейзерсоном и Ривестом). Я всегда считал его псевдокодовое описание алгоритмов очень ясным и последовательным.

Пример:

DIJKSTRA(G, w, s)
1  INITIALIZE-SINGLE-SOURCE(G, s)
2  S ← Ø
3  Q ← V[G]
4  while Q ≠ Ø
5      do u ← EXTRACT-MIN(Q)
6         S ← S ∪{u}
7         for each vertex v ∈ Adj[u]
8             do RELAX(u, v, w)
20
ответ дан 28 November 2019 в 05:24
поделиться

Я не понимаю вашего требования "не слишком близко к какому-то конкретному языку программирования".

Python обычно считается хорошим кандидатом для написания псевдокода. Возможно, вам подойдет немного упрощенная версия python.

3
ответ дан 28 November 2019 в 05:24
поделиться

Если код является процедурным, нормальный псевдокод, вероятно, будет несложным (в Википедии есть несколько примеров).

Объектно-ориентированный псевдокод может быть сложнее. Рассмотрим:

  • использование диаграмм классов UML для изображения классов / наследования
  • использование диаграмм последовательности UML для изображения последовательности кода
4
ответ дан 28 November 2019 в 05:24
поделиться

Паскаль всегда был наиболее похож на псевдокод, когда дело доходит до математического и технические области. Не знаю почему, просто так было всегда.

У меня есть некоторые (о, я не знаю, может быть, 10 книг на полке, которые конкретизируют эту теорию).

Python, как предполагается, может быть хорошим кодом, но также может быть настолько нечитаемым, что сам по себе является чудом. Старые языки сложнее сделать нечитаемыми - они «проще» (воспринимайте осторожно), чем сегодняшние. Возможно, им будет труднее понять, что происходит, но их легче читать (требуется меньше синтаксических / языковых функций, чтобы понять, что делает программа).

2
ответ дан 28 November 2019 в 05:24
поделиться

Отвечая на свой собственный вопрос, я просто хотел обратить внимание на статью TeX FAQ Typesetting pseudocode in LaTeX. В ней описывается несколько различных стилей, перечисляются преимущества и недостатки. Кстати, существуют две таблицы стилей для написания псевдокода в манере, используемой в "Introductin to Algorithms" Кормена, как рекомендовано выше: newalg и clrscode. Последний был написан самим Корменом.

7
ответ дан 28 November 2019 в 05:24
поделиться

Предлагаю вам взглянуть на язык программирования Fortress .

Это фактический язык программирования, а не псевдокод , но он был разработан так, чтобы быть максимально приближенным к исполняемому псевдокоду. В частности, для разработки синтаксиса они прочитали и проанализировали сотни статей, курсов, книг и журналов по CS и математике, чтобы найти общие шаблоны использования псевдокода и других вычислительных / математических обозначений.

Вы можете использовать все эти исследования, просто взглянув на исходный код Fortress и абстрагируясь от того, что вам не нужно, поскольку ваша целевая аудитория - люди, а Fortress - это компилятор.

Вот реальный пример выполнения кода Fortress из NAS (NASA Advanced Supercomputing) Conjugate Gradient Parallel Benchmark . Для развлечения сравните спецификацию эталонного теста с реализацией в Fortress и обратите внимание на соответствие почти 1: 1. Также сравните реализацию на нескольких других языках, таких как C или Fortran, и обратите внимание, что они не имеют абсолютно ничего общего со спецификацией (а также часто на порядок длиннее спецификации).

Подчеркну: это не псевдокод, это реально работающий код Fortress! Пример кода крепости http://ProjectFortress.Sun.Com/Projects/Community/raw-attachment/wiki/FortressQuestions/NAS-CG.png

Изменить: ссылка на приведенный выше пример кода мертва. Возможно, похожий пример можно найти здесь: https: //umbilicus.wordpress.com / 2009/10/16 / fortress-parallel-by-default /

5
ответ дан 28 November 2019 в 05:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: