Что такое псевдокод?


19

Я видел много упоминаний о псевдокоде в последнее время, на этом сайте и других. Но я не понимаю

  • Что такое псевдокод? Например, статья в Википедии ниже гласит: «В ней используются структурные соглашения языка программирования, но она предназначена для чтения человеком, а не машинного чтения». Значит ли это, что он на самом деле не используется для создания программ?

  • Почему это используется?

  • Как это используется?
  • Это считается языком программирования? (См. Приведенную выше цитату из Википедии)
  • Это широко известно / используется?

Честно говоря, я не знаю, с чего начать. Я прогуглил его и увидел статью на эту тему в Википедии , но я до сих пор не до конца понимаю, что это такое.


7
Пожалуйста, предоставьте конкретные цитаты и вопросы из статьи Википедии. На все ваши вопросы есть ответы. Если вы не можете понять слова или фразы, пожалуйста, укажите конкретное слово или фразу в своем вопросе, чтобы мы могли объяснить это. Трудно понять, что вас смутило в этой статье. Вместо того, чтобы повторять эту статью здесь, было бы полезно, если бы вы могли ссылаться на конкретные вещи, которые вас смущали.
S.Lott

@ S.Lott: Закончено
Динамическое

20
while (you.doNotUnderstand(pseudocode)) { q = you.askQuestion(); a = we.answer(q); you.digestAnswer(a) }
Иоахим Зауэр

3
if (question.IsAnswered) then you.UnderstandPseudoCode <- true
e-MEE

1
Это среднее положение между естественным языком и языком программирования - оно более формально, чем разговорный язык, но менее формально, чем реальный язык программирования.
Инго

Ответы:


19

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

Короче говоря: он используется только в иллюстративных целях.

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

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

Типы псевдокода
Псевдокод может быть, но не обязательно должен быть определенного типа, т. Е. У вас может быть стековый псевдокод для иллюстрации MSIL, у вас может быть императивный псевдокод для иллюстрации Java, C #, C ++, Python, вы может иметь функциональный псевдокод для иллюстрации F #, Haskell, SQL и т. д.

Примеры
Из головы, но все идет, потому что псевдокод можно изобрести на месте:

Псевдокод XML, показывающий структуру head + body, которая учитывает несколько p-элементов:

<head ...
   <title ...
</
<body ...>
   (<p>...)+
</

Обязательный псевдокод, показывающий проблему алмаза в языках, которые поддерживают множественное наследование:

class A() { readFile(); }
class B() : A {}       // overrides readFile in A
class C() : A {}       // overrides readFile in A
class D() : B, C {}    // what definition of readFile should be used?

Вышеприведенные два примера, очевидно, напоминают некоторый (тип) язык, но на самом деле не являются этим языком и не могут быть скомпилированы. Они скорее иллюстрируют то, что вы хотите объяснить.


14
Возможно, стоит добавить, что псевдокод может жить на любом уровне абстракции: вы могли бы описать конкретные действия алгоритма способом, который легко переносится на реальный непсевдокод, или вы могли бы дать очень высокий уровень обзор некоторого подхода с использованием очень широко определенных «методов» или «объектов». Это широкий спектр.
Йоахим Зауэр

8

Что такое псевдокод? Например, статья в Википедии ниже гласит: «В ней используются структурные соглашения языка программирования, но она предназначена для чтения человеком, а не машинного чтения». Значит ли это, что он на самом деле не используется для создания программ?

Это именно то, что код написан в удобной для человека форме. Его нельзя использовать для создания рабочей программы.

Почему это было сделано / используется?

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

Это считается языком программирования? Смотрите выше цитату из Википедии.

Нет. Язык программирования требует больше, чем просто структура. Требуется формальная семантика, которой нет в псевдокоде.

Это широко известно / используется?

Да. Любой, кто выше младшего уровня, должен знать, как читать / писать псевдокод. Это важно для чтения большого количества учебников и планирования кода в команде.


6

Если вы прочитали статью в вики, то большинство ваших вопросов должно быть понятным. Я постараюсь ответить на них более простым способом здесь. Взгляните на эти 2 примера:

Часть 1 - Примеры

Код № 1 - Регистрация клиента - Пример шагов процесса:

  1. Клиент переходит на экран регистрации
  2. Клиент вводит свои данные.
  3. Если введены правильные данные, сохраните информацию о клиенте в базе данных.
  4. Еще покажите диалоговое окно с сообщением об ошибке 100.

Код № 2 - Проверка имени клиента - Пример функции программирования

Function ValidateCustomerName(Name1)

If (Name1 is entered and Name2 is entered) then return 1

If (Name1 is not entered) 

   Send Error Message

   return 0

Endif

...

End Function

Часть 2 - теперь на ваши вопросы

Что такое псевдокод?

Это способ написать шаги алгоритма или процесса.

Почему это было сделано / используется?

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

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

Он не компилируется, и это потому, что он не имеет определенного синтаксиса и, следовательно, это не язык программирования.

Если да, так ли он, как, скажем, Python?

Это может быть сделано настолько способным, насколько вы хотите. Вы можете написать заявления, как: Если возраст действителен ...

Это широко известно / используется?

Да. Это полезно, когда вы думаете об алгоритмах и для бизнес-аналитиков, чтобы предоставить спецификации.


@Jae, я ценю редактирование.
NoChance

4

Лучший пример псевдокода - это когда я работал в офисе с программистом на Фортране, когда программировал на Паскале. Каждый раз, когда мы помогали друг другу, нам приходилось писать это в псевдокоде. В то время я не знал FORTRAN, поэтому у меня не было возможности получить правильный синтаксис (особенно для всех отступов требовалось расположение для определенных отметок). Ему никогда не приходилось писать с запятой. На доске мы написали псевдокод, чтобы его можно было понять, не увязая в сложных синтаксических правилах.

Нет строгих конструкций для псевдокода. Если писатель знает язык, который использует «{» после оператора if, он помещает его на доску, если он знает python, он не знает. Цель состоит в том, чтобы быстро набросать основной подход к проблеме, а не абсолютно правильный код.

Учителя могут использовать это, чтобы дать руководство ученику, не давая им правильный ответ. Если вы знаете больше, чем один язык, псевдокод должен быть естественным для использования при наброске фрагментов кода.


2

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


В лучшем случае это достаточно очевидно, чтобы не требовать какого-либо формального или неформального описания;).
Авель

@ Абель, нет такого понятия, как «очевидный» формализм. Даже что-то столь же «очевидное», как десятичная арифметика, должно быть правильно введено. В противном случае, к сожалению, путаница неизбежна. Я никогда не видел однозначного псевдокода без какого-либо официального введения.
SK-logic

Эта тема о псевдокоде. Формализм не имеет к этому никакого отношения. Но мой комментарий был "каламбур";).
Авель

@ Абель, абстрактный язык - это тоже формализм (по крайней мере, когда он используется в более или менее научной статье).
SK-logic

2

Что такое псевдокод?

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

Почему это было сделано / используется?

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

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

Нет, это не язык программирования, так как нет формальных правил.

Это широко известно / используется?

Лично я всегда стараюсь использовать псевдокод при написании алгоритмов или сложных процедур.


0

Мое личное определение псевдокода - «материал, который я пишу простым языком на листе бумаги при разработке кода»

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

Для этого метода кодирования может быть формальное имя, о котором я не знаю, и я использую его только при выполнении чего-то нового / сложного.


-4

Как сказал мой лектор по программированию:

Псевдокод - это английская версия любого языка программирования.


2
-1 Не полезно. Цитата имеет смысл только среди объяснений псевдокода (отсутствует в этом ответе). В противном случае, это может быть весьма обманчиво. Новичок может задаться вопросом: ну, все методы C # на английском языке, так что это означает, что C #, который я использую, это Pseudocode, верно ...? Как они это называют, когда используют C # в Германии?
Doppelgreener
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.