疑似コードは、プログラミングが疑似コードの行を実際のコードに変換するタスクになるように、アルゴリズムのロジック全体を記述する必要があります。
以下のそれぞれについて、各疑似コードが「良い」または「悪い」疑似コードの例とみなされる理由について説明します。
例1.1:
PROGRAM IsEvenOrOdd:
var num = number;
IF (num % 2 === 0)
THEN Print "even";
ELSE Print "odd";
ENDIF;
END.
Q.どう思いますか?
A. これはあまり良い例ではありません。ここでは、平易な英語を読む必要があるときに、疑似コードで「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.
Q.どう思いますか?
A. この方が良いです。英語に近いですね。コードの細部に囚われることなく、何をどのように達成しようとしているのかを明確に示しています。コーディングをしない人でも、ロジックをチェックするのに役立ちます。きれいに、余りを残さずに 2 で割ることができる数は偶数でしょうか?他に何かおかしいことはありますか?
「Get Creative Today」より
例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.
Q.どう思いますか?
A. ここから始めるのが良いでしょう。これは優れた手順であり、直感的に従うことができます。ただし、どのような物理的な手順が必要かはまだわかりません。
ちょっと想像してみてください。これまでサンドイッチを作ったことがない場合を想像してみてください。これまで。最初のサンドイッチに必要な手順を考えてください。コンピュータには実メモリがありません。タスクを開始するたびに、以前にそのタスクを実行した記憶がありません。私たちはそれをあらゆる段階で、毎回伝えなければなりません。コンピューターが理解できるように、これらを小さなステップに分割する必要があります。
例 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.
Q.どう思いますか?
A. この例のシーケンスは非常に徹底的です。ただし、調理器具や食材がすでに存在しているという特定の条件を前提としています。お皿がなくなったらどうしますか?サンドイッチを置く代わりにナプキンを用意しましょうか?ゼリーがなくなったらどうしますか?サンドイッチを捨てますか、それともピーナッツバターだけを付けて食べますか?
コンピューターは賢くない。状況を考慮して段階的な指示を与える必要があります。彼らは、明示的に言われない限り、変化に適応することができません。プログラミングは一連の作業であり、一定の条件が満たされた場合にのみ完了します。
コンピューターは適応できませんが、私たちは適応できます。疑似コードの最初のパスでは、おそらくすべてをカバーできるわけではありません。さらに詳しく理解したら、疑似コードを更新してリファクタリングするために戻ってくることができます。
疑似コードは、すでに知っている手順を単に書き留めることではありません。これは問題を解決するのに役立つツールです。問題を解決するための疑似コードを作成する前に、問題を知る必要があります。
問題解決に役立ついくつかの手順を次に示します。
最後に、いくつかのアクションを実行します。ここで、いよいよコードを書き始めます。私たちは小さな一歩を踏み出すために懸命に戦い、各ステップが私たちが望むもの、期待しているものを達成していることを確認してから、先に進みます。一度にやりすぎて何かが壊れてしまったら(いつもそうなのですが)、何が問題の原因なのかわかりません。どの部分を信じればよいのかわかりません。人間は楽勝で繁栄します。今後の進歩を見る必要があります。それを覚えておいてください。それを使ってください。勝利を祝いましょう。
Q. 疑似コードはこれらのステップのどこに当てはまりますか?
A. 細分化するか、小さなことから始める
このプロセスは反復的です。私たちはぐるぐると回り続け、先ほどのステップを別のレベルで繰り返します。
初めて問題に取り組むと、全体像が見えてきます。 「ブレイク・イット・ダウン」は私たちに大きな一歩をもたらします。次に、それらのステップの 1 つを実行して、「分解」します。ここで、問題を説明するために、小さなことから始めて疑似コードを作成します。
疑似コーディングは、問題を特定し、それを概念的に理解し、従うことができる小さなステップに分割したことを証明します。
疑似コードに固定された構文はありません。明確、シンプル、簡潔であることが必要です。
行き詰まった場合は、次の構文を自由に使用してください。
参照: 擬似コードの概要
疑似コードの一般的な構造
PROGRAM <ProgramName>:
<Do Stuff>
END.
選択: IF/ELSE ステートメント
IF (<Condition>)
THEN <Statements>;
ELSE <Statements>;
ENDIF;
反復: ループ
WHILE (<Condition>)
ENDWHILE;
starter_code/pseudo_code_practice.md の指示に従います。