Question

Je n'ai jamais eu grand besoin d'écrire de grandes quantités de pseudo-codes formels, mais le besoin s'est fait sentir, alors j'ai décidé de choisir des normes afin de rester cohérent d'un code à l'autre.

À cet effet, j'ai pris quelques & "iTunes U &"; des vidéos de cours, entre autres choses, 6.046J / 18.410J Introduction aux algorithmes (SMA 5503) .

Dans la toute première vidéo de la conférence, le conférencier écrit Insertion Sort au tableau, 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? Pourquoi dans certains cas et = dans un autre? Notez que dans le code ci-dessus, do key ← A[j] est utilisé pour ce dernier également, mais dans les documents disponibles sur le Web, do est utilisé. S'agit-il simplement d'une faute de frappe? (Je suppose donc)
  • Plus important encore, pourquoi <=> quand <=>? Qu'est-ce qui est si spécial qu'il nécessite une <=> commande comme celle-là et une indentation?

En d'autres termes, pourquoi le pseudo-code ci-dessus n'est-il pas écrit comme ceci (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 un code standard pour pseudo-code pratique quelque part? Mon objectif principal est la cohérence, de sorte qu'il ne me reste plus qu'à & "Enseigner &"; les destinataires une fois.

Était-ce utile?

La solution

L'anglais structuré est un langage de pseudo-code 'normalisé'.

Autres conseils

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

le signe égal dans le pseudo sert de == dans le code normal

donc j <- 1 signifie j = 1

et if( j == 1) signifient <=>

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top