伪代码应该描述算法的整个逻辑,以便编程成为将伪代码行翻译为真实代码的任务。
对于以下每个伪代码,让我们讨论为什么每个伪代码可以被视为“好”或“差”伪代码示例:
例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.
问:我们怎么看?
答:这个例子的顺序非常彻底!然而,我们仍然假设我们的器具或成分已经存在的某些条件。如果我们的盘子用完了怎么办?我们可以拿一张餐巾纸来放三明治吗?如果果冻用完了怎么办?你会扔掉三明治还是只涂花生酱?
计算机并不聪明。我们需要向他们提供逐步说明以考虑条件。如果没有明确告知,他们无法适应做出改变。编程是一系列任务,只有满足一定数量的条件才能完成。
计算机无法适应,但我们可以。您第一次通过伪代码可能不会涵盖所有内容。一旦您了解更多,您可能会回来更新和重构您的伪代码。
伪代码不仅仅是写下您已经知道的步骤。它是帮助您解决问题的工具。在我们编写伪代码来解决问题之前,我们需要了解问题。
以下是一些有助于解决问题的步骤:
最后,我们采取一些行动。这是我们终于开始编写代码的时候。我们努力采取小步骤,验证每一步都达到了我们想要的、我们期望的,然后再继续前进。如果我们一次做太多事情而导致事情崩溃(他们总是这样做),我们将不知道是什么导致了问题。我们不知道该相信哪一部分。人类在轻松的胜利中茁壮成长。我们需要看到前进的进展。请记住这一点。用那个。庆祝你的胜利。
问:伪代码适合这些步骤中的什么位置?
A. 分解或从小处开始
这个过程是迭代的。我们不断地绕圈子并重复之前的步骤,只是在不同的层面上。
当我们第一次处理问题时,我们会看到大局。 “分解”让我们迈出了一大步。然后,我们采取其中一个步骤并“分解”。现在,从小处开始,我们编写伪代码来帮助说明问题。
伪编码证明我们已经识别了问题,从概念上理解了它,并将其分解为我们可以遵循的小步骤。
伪代码没有一种固定的语法。它只需要清晰、简单、简洁即可。
如果您感到困难,请随意使用以下语法:
参考:伪代码简介
伪代码的一般结构
PROGRAM <ProgramName>:
<Do Stuff>
END.
选择:IF/ELSE 语句
IF (<Condition>)
THEN <Statements>;
ELSE <Statements>;
ENDIF;
迭代:循环
WHILE (<Condition>)
ENDWHILE;
按照 starter_code/pseudo_code_practice.md 中的说明进行操作