偽代碼應該描述演算法的整個邏輯,以便程式設計成為將偽代碼行翻譯為真實程式碼的任務。
對於以下每個偽代碼,讓我們討論為什麼每個偽代碼可以被視為“好”或“差”偽代碼範例:
例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.
問:我們怎麼看?
答:這個例子的順序非常徹底!然而,我們仍然假設我們的器具或成分已經存在的某些條件。如果我們的盤子用完了怎麼辦?我們可以拿一張餐巾紙來放三明治嗎?如果果凍用完了怎麼辦?你會丟掉三明治還是只塗花生醬?
計算機並不聰明。我們需要向他們提供逐步說明以考慮條件。如果沒有明確告知,他們無法適應做出改變。程式設計是一系列任務,只有滿足一定數量的條件才能完成。
計算機無法適應,但我們可以。您第一次通過偽代碼可能不會涵蓋所有內容。一旦您了解更多,您可能會回來更新和重構您的偽代碼。
偽代碼不僅僅是寫下您已經知道的步驟。它是幫助您解決問題的工具。在我們編寫偽代碼來解決問題之前,我們需要了解問題。
以下是一些有助於解決問題的步驟:
最後,我們採取一些行動。這就是我們終於開始寫程式碼的時候。我們努力採取小步驟,驗證每一步都達到了我們想要的、我們期望的,然後再繼續前進。如果我們一次做太多事情而導致事情崩潰(他們總是這樣做),我們將不知道是什麼導致了問題。我們不知道該相信哪一部分。人類在輕鬆的勝利中茁壯成長。我們需要看到前進的進展。請記住這一點。用那個。慶祝你的勝利。
Q:偽代碼適合這些步驟中的什麼位置?
A. 分解或從小處開始
這個過程是迭代的。我們不斷地繞圈子並重複先前的步驟,只是在不同的層面上。
當我們第一次處理問題時,我們會看到大局。 「分解」讓我們邁出了一大步。然後,我們採取其中一個步驟並「分解」。現在,從小處開始,我們編寫偽代碼來幫助說明問題。
偽編碼證明我們已經識別了問題,從概念上理解了它,並將其分解為我們可以遵循的小步驟。
偽代碼沒有一種固定的語法。它只需要清晰、簡單、簡潔。
如果您感到困難,請隨意使用以下語法:
參考:偽代碼簡介
偽代碼的一般結構
PROGRAM <ProgramName>:
<Do Stuff>
END.
選擇:IF/ELSE 語句
IF (<Condition>)
THEN <Statements>;
ELSE <Statements>;
ENDIF;
迭代:循環
WHILE (<Condition>)
ENDWHILE;
請依照 starter_code/pseudo_code_practice.md 中的說明進行操作