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 quando A[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.

È stato utile?

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 <=>

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top