Pseudo-codice da alcuni corsi MIT
-
07-07-2019 - |
Domanda
Non ho mai avuto molto bisogno di scrivere grandi quantità di pseudo-codice formale, ma è emersa la necessità, quindi ho pensato di scegliere alcuni standard per rimanere coerente su tutto il codice.
A tal fine ho raccolto alcune " iTunes U " video sui corsi, tra le altre 6.046J / 18.410J Introduzione agli algoritmi (SMA 5503) .
Nel primo video della lezione, il docente scrive Insertion Sort sulla lavagna e scrive questo:
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
Quindi, le mie domande:
- Perché
i ← j-1
quandoA[i+1] = key
? Cioè, perché←
in alcuni casi e=
in un altro? Nota che nel codice sopra,do key ← A[j]
è usato anche per quest'ultimo, ma nei volantini, disponibili sul web,do
è usato, è semplicemente un errore di battitura? (Suppongo di sì) - Più importante, perché <=> quando <=>? Cosa c'è di così speciale da richiedere un <=> comando del genere e un rientro?
In altre parole, perché lo pseudo-codice sopra riportato non è scritto in questo modo (con i miei punti salienti):
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
Domanda finale: qualcuno ha un codice standard per pseudo-codice utile da qualche parte? Il mio obiettivo principale è la coerenza, quindi devo solo & Quot; insegnare & Quot; i destinatari una volta.
Soluzione
inglese strutturato è un linguaggio pseudo-codice "standardizzato".
Altri suggerimenti
la freccia funge da = nel codice normale.
uguale accesso pseudo servire come == nel codice normale
quindi j <- 1
significa j = 1
e if( j == 1)
significano <=>