Різниця між псевдокодом і алгоритмом?


17

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

Або, якщо вони не є синонімічними словами, що їх відрізняє? У яких контекстах ми повинні використовувати слово псевдокод проти алгоритму слова?


4
Алгоритм - це швидкий вибір. Псевдокод - "Зробіть мені бутерброд, тоді як тільки він буде зроблений, принесіть мені його".
Ніл

Дивіться цю відповідь на інше питання. Там я описав співвідношення між алгоритмом та псевдокодом.
Горан Йович

3
Коротка версія: "Псевдокод - один із способів представити алгоритм"
Горан Йович

3
@Neil або навіть SUDO роблять мені сендвіч xkcd.com/149
StuperUser

Відповіді:


37

Визначення алгоритму у Вікіпедії:

У математиці та інформатиці алгоритм - це ефективний метод, виражений у вигляді кінцевого переліку чітко визначених інструкцій для обчислення функції. Алгоритми використовуються для обчислення, обробки даних та автоматизованих міркувань.

Алгоритми можна описати різними способами, від чисто математичних формул до складних графіків, більше разів, без псевдокоду.

Псевдокод описує, як ви реалізували б алгоритм, не потрапляючи в синтаксичні деталі.

Так ні, вони насправді не є синонімами.


8

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


Приємно! Короткий і прямий. Але я б сказав "написаний текст", ніж "написаний текст". Що ти думаєш?
Лучано

6

"Псевдокод" - це "алгоритм", а "англійський" - це "жарт-стук".

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

Жартий стук - це формальна структура для чогось, що може бути виражене англійською або іншою мовою. (Інші культури роблять жарт-стук? Я навіть не знаю.)


Я не думаю, що так. Принаймні, в португальській мові немає нічого подібного в цій грі «стук-нок». Отже, я б сказав, що немає і в інших романських мовах, таких як іспанська та італійська. Я не включатиму французьку мову, тому що у неї довгі стосунки з англійською мовою на британських островах століттями тому, і я не знаю інших романських мов, як румунська та інші.
Лучано

3

Існує лише один алгоритм швидкості, який би існував у світі чистих ідей Платона. Тут може бути будь-яка кількість різних описів псевдокодів. Думаю, я б визначив псевдо-код як текст, який приблизно схожий на комп'ютерний код, і досвідчений програміст міг би перевести його в фактичний комп'ютерний код, не створюючи жодних творчих стрибків.

Так ні, я б не використовував терміни взаємозамінно.


2

Алгоритм - це систематичний логічний підхід, що використовується для вирішення проблем на комп’ютері, тоді як Pseudocode - це твердження простою англійською мовою, яке згодом може бути переведене на мову програмування (програму).


2

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

Алгоритм має те саме значення (семантичний), якщо ви його будь-яким чином виражаєте (синтаксис), будь то мова програмування C, псевдокод або англійська мова.


1

Як я розумію, псевдо-код є посередником між алгоритмом та реалізованою програмою. Ви можете базувати свій псевдо-код на алгоритмі. Це містить передатні кроки для здійснення.

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

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

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


1

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

  • розмістіть початкові частини у своїх місцях
  • показати дошку
  • поки гра не закінчена
    • зробити дошку та переміщення
    • швидкий користувач для переміщення
    • змусити користувачів рухатися

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

Ви можете переглянути його, додавши ще один рівень:

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

Тепер ви можете написати псевдокод для кожного з основних кроків, таких як "скласти список законних кроків чорних", наприклад:

  • за кожен чорний шматок
    • для типу штуки в даному місці
      • скласти список наступних можливих місць

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

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

Наприклад, get_legal_moves(board, color)гідна розробка алгоритму:

get_legal_moves(board, color):
    for i,j in board_dimensions
        if piece_at i,j is of color
            if piece type is KNIGHT
                add the following to the next moves list:
                    location i+1 j+2, i-1 j+2... etc
            if piece type is rook
                add locations:....

Ви можете бачити, що алгоритм повинен бути дуже точним, щоб бути корисним.

Це забезпечує кілька речей: щоб цілі були досягнуті без помилок, в першу чергу. Етапи дуже деталізовані та виконуються механізовано, і що кроки є досить маленькими, щоб їх можна було змінити, щоб підвищити ефективність (швидкість), з якою ви закінчите завдання.


Здається, це розкладання алгоритму зверху вниз, виражене в псевдокоді на кожному кроці.
Натан Туггі

0

З мого досвіду псевдо-код завжди був написаний функціональним персоналом (людьми, які володіють процесом) як спосіб виразити ділові правила, що стосуються процесу, модуля або підсистеми.

Алгоритм - це дифінітивний набір логічних висловлювань для вирішення якомога конкретнішого завдання.


0

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

Псевдокод - це читане людиною уявлення програми. Навіть це можна використовувати для опису алгоритму.


-2

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


1
це, здається, не пропонує нічого суттєвого щодо питань, викладених та пояснених у попередніх 10 відповідях
gnat
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.