Pseudo-Code von einer MIT-Courseware
-
07-07-2019 - |
Frage
Ich habe nie viel Bedarf an großen Mengen an formalen Pseudo-Code zu schreiben, aber die Notwendigkeit entstanden ist, so dass ich dachte, dass ich einige Standards, um über Code konsistent zu bleiben, wählen würde.
Zu diesem Zweck habe ich einige „iTunes U“ Courseware Videos aufgenommen, unter anderem die 6.046J / 18.410J Introduction to Algorithms (SMA 5503) .
In dem ersten Vorlesung Video, schreibt der Dozent Insertion Sort an der Tafel, und er schreibt diese:
Insertion-Sort(A, N) // Sorts A[1..n]
for j ← 2 to n
do key ← A[j]
i ← j-1
while i > 0 and A[i] > key
do A[i+1] ← A[i]
i ← i-1
A[i+1] ← key
Also, meine Fragen:
- Warum
i ← j-1
wennA[i+1] = key
? Das heißt, warum←
in einigen Fällen und=
in einem anderen? Beachten Sie, dass in dem obigen Code wird die←
auch für die letztere verwendet wird, aber in den Handreichungen, die im Internet verfügbar,=
verwendet wird, ist dies einfach ein Tippfehler? (Ich gehe davon aus, so) - Noch wichtiger ist, warum
do key ← A[j]
wenni ← j-1
? Was ist so besonders, dass es einendo
Befehl wie das erfordert, und eine Vertiefung?
Mit anderen Worten, warum ist nicht der oben Pseudo-Code wie folgt geschrieben (mit meinen Highlights):
Insertion-Sort(A, N) // Sorts A[1..n]
for j ← 2 to n
key ← A[j] <-- lost the do here
i ← j-1 <-- no indentation
while i > 0 and A[i] > key
A[i+1] ← A[i] <-- lost the do here
i ← i-1 <-- no indentation
A[i+1] ← key
Letzte Frage: Hat jemand einen Code Standard für Pseudo-Code irgendwo praktisch? Mein Hauptziel ist die Konsistenz, so dass ich nur „lehren“ müssen einmal die Empfänger.
Lösung
Structured Englisch ist eine 'standardisierte' Pseudo-Code-Sprache.
Andere Tipps
Der Pfeil als = in normalen Code dienen.
Gleichheitszeichen in pseudo dienen als == in normalen Code
so j <- 1
bedeuten j = 1
und j = 1
bedeuten if( j == 1)