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


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, що показує голову + структуру тіла, яка дозволяє мати декілька 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

Якщо ви прочитали статтю wiki, то більшість ваших запитань повинні бути зрозумілими. Я спробую відповісти на них більш простим способом тут. Погляньте на ці 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, поки я програмував у Паскалі. Щоразу, коли ми допомагали один одному, нам доводилося писати це в псевдокоді. У той час я не знав FORTRAN, тому мені не вдалося правильно виправити синтаксис (особливо всі відступи вимагали розташування для конкретних позначок). Йому ніколи не доводилося писати крапками з комою. На дошці ми писали псевдокодом, щоб його можна було зрозуміти, не забиваючись на складні правила синтаксису.

У Pseudocode немає суворих конструкцій. Якщо письменник знає мову, яка використовує "{" після оператора if, він поставить її на дошку, якщо вони знають, що пітон не знає. Мета - швидко накреслити основний підхід до проблеми, не зовсім правильний код.

Вчителі можуть використовувати його, щоб давати вказівки студенту, не даючи їм правильної відповіді. Після того, як ви знаєте більше, ніж одна мова, псевдокод повинен бути природним для використання під час накреслення фрагментів коду.


2

Псевдокод - це не мова, не умова. Кожен підручник чи папір використовував би свою власну версію псевдокоду. Як і у багатьох інших неформальних математичних "мовах", в кращому випадку це було б неофіційно описано в самому документі, в гіршому випадку автори очікують, що це буде достатньо "очевидним".


У кращому випадку очевидно, що не потрібно жодного формального чи неофіційного опису;).
Абель

@Abel, немає такого поняття, як "очевидний" формалізм. Навіть щось таке "очевидне", як десяткова арифметика, слід правильно вводити. Інакше плутанина неминуча, на жаль. Я ніколи не бачив однозначного псевдокоду без принаймні якогось офіційного вступу.
SK-логіка

Ця тема стосується псевдокоду. Формалізм нічого спільного з цим не має. Але мій коментар був "каламбур призначений";).
Авель

@Abel, абстрактна мова теж є формалізмом (принаймні, якщо використовується в більш-менш науковій роботі).
SK-логіка

2

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

Псевдо-код - це в основному написані інструкції, що програма повинна зробити для завершення операції. Псевдо-код написаний вашою розмовною мовою. Ви просто записуєте кроки алгоритму чи процедури, щоб полегшити вам чи комусь іншому читання та перетворити його на реальну мову програмування.

Для чого він був виготовлений / використовується?

Це було зроблено, щоб допомогти вам визначити кроки процедури, процесу чи алгоритму без використання мови програмування. Однією з можливих альтернатив є використання блок-схем.

Чи вважається це мовою програмування?

Ні, це не мова програмування, оскільки формальних правил немає.

Це загальновідомо / використовується?

Особисто я завжди намагаюся використовувати псевдо-код при написанні алгоритмів або складних процедур.


0

Моє особисте визначення псевдокоду - це "речі, які я пишу простою англійською мовою на аркуші паперу під час проектування коду"

Перш ніж кодувати з псевдокоду "дизайн", я додаю свій псевдокод як коментарі. Потім, працюючи через ці коментарі, я можу додати "фактичний" код, який виконує описане завдання.

Для цього методу кодування може бути формальне ім’я, про яке я не знаю, і я використовую його лише коли роблю щось нове / складне.


-4

Як сказав мій лектор з програмування:

Псевдокод - англійська версія будь-якої мови програмування.


2
-1 Не корисно. Цитата має сенс лише в поясненні псевдокоду (відсутній у цій відповіді). Інакше це може бути досить оманливим. Новачок може задатися питанням: ну, методи C # всі англійською мовою, тож це означає, що C #, який я використовую, - це псевдокод, правда ...? Як вони називають це, коли вони використовують C # у Німеччині?
doppelgreener
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.