Pergunta

Eu nunca tive muita necessidade de escrever grandes quantidades de pseudo-código formal, mas surgiu a necessidade, então eu pensei que eu ia escolher alguns padrões a fim de permanecer consistente em código.

Para o efeito Peguei alguns "iTunes U" vídeos de cursos, entre outras coisas, a 6.046J / 18.410J Introdução aos Algoritmos (SMA 5503) .

No primeiro vídeo palestra, o professor escreve ordenação por inserção no quadro negro, e ele escreve o seguinte:

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

Então, minhas perguntas:

  • Por i ← j-1 quando A[i+1] = key? Isto é, por em alguns casos, e = em outro? Note que no código acima, o é usado para o último também, mas nas apostilas, disponíveis na web, = é usado, este é simplesmente um erro de digitação? (Eu assumo isso)
  • Mais importante, por do key ← A[j] quando i ← j-1? O que é tão especial que requer um comando do assim, e um recuo?

Em outras palavras, por que não é o pseudo-código acima escrito assim (com meus destaques):

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

Última pergunta: Alguém tem um padrão de código para pseudo-código em algum lugar acessível? Meu objetivo principal é a consistência, de modo que eu só tenho que "ensinar" os destinatários de uma vez.

Foi útil?

Solução

Inglês Estruturado é um 'padronizado' linguagem pseudo-código.

Outras dicas

a seta servir como = no código normal.

sinal de igual no pseudo servir como == no código normal

para j <- 1 j = 1 média

e j = 1 if( j == 1) média

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top