2009-09-15 13 views
0

Je n'ai jamais vraiment eu besoin d'écrire de grandes quantités de pseudo-code formel, mais le besoin s'est fait sentir, alors j'ai pensé que je choisirais certaines normes pour rester cohérent dans le code. À cet effet, j'ai ramassé des vidéos de didacticiels «iTunes U», entre autres choses, le 6.046J/18.410J Introduction to Algorithms (SMA 5503).Pseudo-code provenant de certains didacticiels MIT

Dans la première vidéo conférence, le conférencier écrit Insertion Trier sur le tableau noir, et il écrit ceci:

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 

Alors, mes questions:

  • Pourquoi i ← j-1 quand A[i+1] = key? C'est pourquoi, dans certains cas, , et = dans un autre? Notez que dans le code ci-dessus, le est utilisé pour ce dernier, mais dans les documents, disponibles sur le web, = est utilisé, est-ce simplement une faute de frappe? (Je suppose donc)
  • Plus important encore, pourquoi do key ← A[j] lorsque i ← j-1? Quel est si spécial qu'il nécessite une commande do comme ça, et une indentation?

En d'autres termes, pourquoi n'est pas le pseudo-code ci-dessus écrite comme celui-ci (avec mes points forts):

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 

Dernière question: Quelqu'un at-il une norme pour pseudo-code Pratique quelque part? Mon objectif principal est la cohérence, de sorte que je dois seulement "enseigner" les destinataires une fois.

Répondre

0

la flèche sert de = dans le code normal.

signe égal en pseudo servent == en code normal

si j <- 1 signifie j = 1

et j = 1 signifie if(j == 1)