Псевдокод должен описывать всю логику алгоритма, чтобы программирование стало задачей перевода строк псевдокода в реальный код.
Для каждого из следующих вопросов давайте обсудим, почему каждый псевдокод можно считать «хорошим» или «плохим» примером псевдокода:
Пример 1.1:
PROGRAM IsEvenOrOdd:
var num = number;
IF (num % 2 === 0)
THEN Print "even";
ELSE Print "odd";
ENDIF;
END.
В. Что мы думаем?
А. Это не лучший пример. Здесь мы используем «var» в нашем псевдокоде, когда он должен читаться простым английским языком! Кроме того, нам не следует использовать синтаксис JavaScript «===" в нашем условии. Знает ли непрограммист, что
num % 2 === 0
указывает на четное число?
Пример 1.2:
PROGRAM IsEvenOrOdd:
Read number;
IF (number divided by two has no remainder)
THEN Print the number is even;
ELSE Print the number is odd;
ENDIF;
END.
В. Что мы думаем?
А. Это лучше. Это ближе к английскому. В нем четко указано, чего мы пытаемся достичь и как, не увязая в мелочах кода. Даже тот, кто не программирует, может помочь нам проверить нашу логику. Является ли любое число, которое можно разделить на два чисто, не оставляя остатка, четным? Есть ли что-нибудь еще странное?
От Проявите творческий подход сегодня
Пример 2.1:
Make PB&J Sandwich:
Gather bread, peanut butter and jelly.
Apply peanut butter to slice of bread.
Apply jelly to another slice of bread.
Bring the two slices of bread together.
Eat and enjoy.
В. Что мы думаем?
О. Это хорошее место для начала. Это хороший набор инструкций, интуитивно понятный для нас. Однако мы до сих пор не знаем, какие физические шаги необходимы.
Потратьте секунду, чтобы представить. Представьте, если бы вы никогда раньше не готовили бутерброд. Всегда. Подумайте, какие инструкции вам понадобятся для приготовления первого сэндвича. У компьютера нет реальной памяти. Каждый раз, когда он запускает задачу, он не помнит, как выполнял ее раньше. Мы должны говорить об этом на каждом шагу, каждый раз. Нам нужно разбить их на более мелкие шаги, чтобы компьютер мог их понять.
Пример 2.2:
PROGRAM MakePB&JSandwich:
Grab a paper plate;
Open bread container;
Grab bread package;
Untwist bread package;
Open bread bag and remove two slices;
Place slices on paper plate;
Grab a plastic knife;
Open peanut butter jar;
Use knife to scoop out peanut butter;
Apply peanut butter to one slice of bread;
Spread peanut butter on slice;
Place knife on plate;
Close peanut butter jar;
Open jelly bottle;
Squeeze jelly onto second bread slice;
Close jelly bottle;
Place down jelly;
Pick up knife;
Spread jelly on slice;
Bring two slices of bread together;
Cut slices in half down the middle;
Throw knife in the trash;
Pick up one half of sandwich;
Enjoy;
END.
В. Что мы думаем?
О. Последовательность в этом примере очень тщательная! Однако мы по-прежнему предполагаем, что при определенных условиях наша посуда или ингредиенты уже существуют. Что, если у нас закончились тарелки? Возьмем ли мы вместо этого салфетку, чтобы положить на нее бутерброд? Что, если у нас кончилось желе? Вы выбросите сэндвич или съедите его только с арахисовым маслом?
Компьютеры не умны. Нам нужно дать им пошаговые инструкции по учету условий. Они не могут адаптироваться и вносить изменения без четкого указания. Программирование — это ряд задач, которые можно выполнить только при соблюдении определенного количества условий.
Компьютеры не могут адаптироваться, а мы можем. Ваш первый опыт работы с псевдокодом, вероятно, не охватит всего. Как только вы узнаете больше, вы можете вернуться, чтобы обновить и провести рефакторинг своего псевдокода.
Псевдокод — это не просто запись шагов, которые вы уже знаете. Это инструмент, который поможет вам справиться с проблемой. Прежде чем мы сможем написать псевдокод для решения проблемы, нам нужно знать проблему.
Вот несколько шагов, которые могут помочь в решении проблемы:
Наконец, мы предпринимаем некоторые действия. Это когда мы наконец начинаем писать код. Мы изо всех сил стараемся делать небольшие шаги, проверяем, что каждый шаг приводит к тому, чего мы хотим и чего ожидаем, прежде чем продолжить. Если мы сделаем слишком много одновременно и что-то сломается, как всегда бывает, мы не узнаем, что является причиной проблемы. Мы не будем знать, какой части доверять. Люди преуспевают благодаря легким победам. Нам нужно видеть прогресс вперед. Помните об этом. Используйте это. Празднуйте свои победы.
Вопрос. Какое место в этих шагах занимает псевдокод?
А. Разбейте это на части ИЛИ начните с малого
Этот процесс является итеративным. Мы продолжаем кружить вокруг и повторять предыдущие шаги, только на другом уровне.
Когда мы впервые подходим к проблеме, мы видим общую картину. «Разбить это на части» дает нам большие шаги. Затем мы делаем один из этих шагов и «разбираем его». Теперь, начав с малого, мы напишем псевдокод, который поможет проиллюстрировать проблему.
Псевдокодирование доказывает, что мы определили проблему, поняли ее концептуально и разбили на небольшие шаги , которым мы можем следовать.
Для псевдокода не существует единого фиксированного синтаксиса. Просто все должно быть ясно, просто и лаконично.
Если вы чувствуете, что застряли, смело используйте этот синтаксис:
Ссылки: Введение в псевдокод.
Общая структура псевдокода
PROGRAM <ProgramName>:
<Do Stuff>
END.
Выбор: операторы IF/ELSE
IF (<Condition>)
THEN <Statements>;
ELSE <Statements>;
ENDIF;
Итерация: ПЕТЛЯ
WHILE (<Condition>)
ENDWHILE;
Следуйте инструкциям в starter_code/pseudo_code_practice.md.