Non ho mai avuto molto bisogno per la scrittura di grandi quantità di pseudo-codice formale, ma è emersa la necessità, quindi ho pensato di scegliere alcuni standard per rimanere coerenti tra codice.
A tal fine ho preso alcune iTunes U video didattico, tra le altre cose il 6.046J / 18.410J Introduzione agli algoritmi (SMA 5503) .
Nella prima conferenza video, il docente scrive inserimento Ordina 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-1quandoA[i+1] = key? Vale a dire, il motivo per cui←, in alcuni casi, e=in un altro? Si noti che nel codice sopra, la←viene utilizzato per questi ultimi troppo, ma nelle dispense, disponibile sul web,=viene utilizzato, è questo semplicemente un errore di battitura? (Presumo così) - Più importante, perché
do key ← A[j]quandoi ← j-1? Cosa c'è di così speciale che richiede undocomando del genere, e un rientro?
In altre parole, perché non è la pseudo-codice di cui sopra scritto così (con i miei riflessi):
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
Ultima domanda: Qualcuno ha un codice standard per la pseudo-codice a portata di mano da qualche parte? Il mio obiettivo principale è la coerenza, in modo da avere solo per insegnare i destinatari una volta.













