Коли я буду використовувати псевдокод замість блок-схеми?


9

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

  1. Коли я буду використовувати псевдокод для планування та коли я буду використовувати блок-схеми? Або краще робити обидва, перш ніж насправді програмувати. Особливо для невеликої аркадної гри в JAVA, оскільки це мій наступний проект.
  2. Я помітив, що псевдокод дуже схожий на фактичний код, а не на блок-схеми. Це зробить псевдокодування кращим, оскільки ви фактично копіюєте / вставляєте псевдокод у свою програму (звичайно, ви повинні змінити його, щоб відповідати мові. Я розумію цю частину).
  3. Чи корисно використовувати обоє під час програмування? Особливо та ж гра, згадана раніше. Дякую.

Очевидно, ви б не використовували блок-схеми, де ви не маєте потоку, тобто майже для всіх декларативних сутностей.
SK-логіка

1
Я фактично не можу згадати, коли востаннє я бачив блок-схему кодування. Діаграми класів і потоків даних, діаграми використання випадку, так. Але не блок-схеми. Можливо, вони більш поширені в розвитку ігор.
Роберт Харві

@RobertHarvey, діаграми FSM (які, по суті, є блок-схемами) досить часто використовуються в апаратурному дизайні
SK-логіка

Відповіді:


7

Блок-схеми та псевдокоди часто мають однаковий рівень виразності, але відрізняються лінеаризацією. Псевдокод лінійний (тобто послідовність рядків з інструкціями), блок-схема не є. Отже, блок-схеми є вищим рівнем абстракції, використовуваним перед написанням псевдокоду або для документації.

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

Детально запитання:

  1. Для дійсно складної проблеми спочатку слід використовувати блок-схеми, а потім псевдокод. Обидва необов’язкові, коли ви відчуваєте себе досить захищеними.
  2. Так, псевдокод має перевагу в об'єднанні з реальним кодом. Наприклад, Стів Макконнелл настійно рекомендує спочатку писати методи в псевдокоді, а потім залишати псевдокод у коді як коментарі.
  3. Я завжди відчував, що необхідність складати блок-схему під час проектування свідчить про недостатній розподіл вашої проблеми. Нетривіальні блок-схеми вказують на спірну логіку, якої слід уникати великими витратами.

1
Діаграми потоків - це також чудовий спосіб переконатися, що кожна точка рішення визначає дії для менш поширеного шляху (ів), а також самого звичайного. Це допомагає переконатися, що ви будете знати, що робити, коли ухвалення відхилено або замовлення скасовано! У випадках із краєм часто буває більше помилок, оскільки люди забувають їх робити чи поспішають під час QA, коли тестування їх виявляє.
HLGEM

2

Про псевдокодекс

Якщо чесно, я не дуже використовую псевдокод. Зазвичай швидше просто написати код, так що коли я закінчую зі своїм кодом, це фактичний код. Бувають випадки, коли псевдо-код може бути корисним, але ви, як правило, працюєте над чимось дуже складним і просто намагаєтесь зруйнувати структуру методу чи щось таке. У цих випадках я використовую коментарі в моєму IDE, щоб викласти структуру, поки я не налагоджую все. Потім я заходжу і пишу фактичний код у коментарях. Це допомагає мені зробити кілька речей:

  • Я бачу сфери, які я маю та не реалізував, читаючи коментарі та бачу очевидні прогалини в них.
  • Коли я заповнюю реальний код, у мене з’являються коментарі, що пояснюють англійською мовою, що я роблю. (Вони, напевно, знадобляться, якщо це так складно, що мені потрібно спочатку написати псевдо-код).

На блок-схемах

Код зазвичай змінюється настільки, що блок-схеми не є корисними, за винятком більшого, більш системного дизайну або документації архітектури. У цих випадках я просто дошлю схему, щоб отримати суть речей або показати комусь іншому в команді. Якщо вам справді не потрібна блок-схема, яка допоможе вам зрозуміти, тоді вам не потрібно їх правильно робити "програмним забезпеченням". На сьогоднішній день існує багато плагінів для IDE, які будуть генерувати блок-схеми з самого коду, а також діаграми класів та інші (і навпаки `). Єдиний реальний час, який вам знадобиться зробити серйозно точною блок-схемою, - це якщо ви не можете зберегти всю архітектуру та як все працює в голові відразу і вам потрібно поговорити через щось візуальне, щоб зловити перепони.


0

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

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

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


0

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

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


0

Блок-схеми - це високий рівень абстракції, який дозволяє вам планувати, як все має проходити, наприклад

якщо x вмирає, виграє

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

if (isdead (s)) y.win ()

таким чином псевдо-код тепер може бути переведений у фактичну програму на основі мови, якою ви користуєтесь.

Для гри я б рекомендував спочатку скористатися блок-схемою, а потім розробити класи та методи, написати псевдо-код і, нарешті, перетворити його в програму


0

Я б розглядав характер коду, який ви пишете. Якщо це:

  1. Сильно ітеративний / рекурсивний
  2. Гілки складними способами
  3. Реалізовано в декількох системах, які ви хочете представляти

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

У третьому випадку блок-схеми краще представляти процеси, які перетинають межі системи та представляють весь процес.


0
  1. Ви повинні використовувати все, що вам зручніше. Це означає, що моє враження полягає в тому, що блок-схеми не використовуються в значній мірі для нанесення програмного контролю в ці дні; з одного боку, вони, як правило, неструктуровані, порівняно з псевдокодом. Для опису вашої архітектури на значно вищому рівні частіше використовувати діаграми залежності класів, такі як UML. Крім того, якщо у вашій програмі є машина стану, важливим є складання діаграми стану машини (схожої на блок-схему).
  2. Я думаю, ти тут прав. Один із способів роботи - написати свій псевдокод як коментарі у вихідному файлі для початку та вставити серед них фактичні рядки реалізації.
  3. Знову ж таки, використовуйте все, що вам зручніше. Якщо ви не впевнені, спробуйте їх обидва; Я очікую, що ваша практика швидко сходиться з тим, що для вас є найбільш корисним. Я особисто не вважаю блок-схеми корисними, якщо я не намагаюся розплутати особливо складний порядок виконання.

0

Навіщо писати псевдо-код, коли можна писати Java? Я знайшов Java, хороший IDE та Javadoc - це найпростіший спосіб зрозуміти проблему програмування - принаймні об'єктно-орієнтовану . (І аркадна гра повинна бути OO.) Мова була розроблена з нуля для цього. Його просто і прямо. (Мабуть, занадто просто для багатьох цілей, але найкраще, що я бачив для цього.) Гіпертекст в Javadoc і, через IDE, в самому коді створює більш зрозумілу "діаграму", ніж ви могли намалювати на рівних великий аркуш паперу. Код Java такий же простий, як і будь-який псевдо-код, і набагато жорсткіший. І після того, як ви отримали його "заграмовано" і "псевдо" закодовано, програма насправді запуститься!


1
java та інші можуть бути довго намотаними. "загальнодоступна статична недійсна головна .." або "system.out.println" або довгі ідентифікатори з позначкою верблюда, там довго намотано. я довго пам’ятаю. Пам’ятаю, 10 років тому відкрив файл. щось на кшталт нового BufferedReader (новий InputStreamReader (System.in)); зараз, мабуть, простіше mkyong.com/java/… Але насправді будь-яка бібліотека, яку ви називаєте, може бути довго накрученою, не як псевдокод, який може бути таким же стислим, як ви можете собі уявити
барлоп

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

@barlop: Це працює для мене, але може працювати не для всіх. Наприклад, я залишаю багато коду ("BufferedReader") поза моїми класами, поки мені це не потрібно чи потрібно знати, чи можу я змусити його працювати. Навіть коли я це маю, це добре приховано з дороги в класах, мені не потрібно дивитись, розглядаючи загальний дизайн. Помилки компілятора легко виправляються і можуть запобігти значним недолікам дизайну, наприклад, використанню неправильного класу в точці, коли ви навіть не можете отримати екземпляр потрібного класу. Зізнаюся, я вже «розроблені» програмне забезпечення таким чином , що може тільки бути написано в Java, але OP це з допомогою Java.
RalphChapin

тому скажіть, що ви хочете відкрити файл, чи бачите ви, наскільки псевдокод openfile ("c: \ blah \ file") коротший, ніж java, щоб це зробити? або що друк "dfdfd" коротший, ніж java? Я ніколи не робив (ще) сторінки псевдокоду та кількох класів. почасти 'тому, що я не писав великих програм у віках б) частково', тому що я не думаю, що хотів би, я думаю, що написав би псевдокод, а потім реалізую його. Будь-який інший псевдокод, якщо такий є, був би вищого рівня. У мене може бути список усіх класів і методів, включаючи конструктори. Тож я знаю, що таке заняття, і що я можу отримати його екземпляр ..
barlop

тож я не опинився б у ситуації, коли використовувати неправильний клас, але все одно, якби це моя програма, я б записав у своїх замітках, що таке клас. Класи досить високого рівня. Я мав би на цьому записку, якщо я не можу її згадати. І псевдокод - це все, що означає, тому якщо ви мали намір зробити екземпляр класу бла і ви написали bleh, то це просто помилка написання, але це не заважає вашому дизайну. (якщо ти пишеш для себе, тому що ти знаєш, що ти маєш на увазі, і ти вжив це як благ).
барлоп

0

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

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

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

Отже, корисно для себе.

Вони також можуть бути використані для спілкування з іншими.

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