2010-02-23 10 views
0

Je me demandais si quelqu'un pouvait me suggérer comment mettre en œuvre cette boucle dans le pseudo-code suivant:boucles d'exécution de pseudocode

8: boucle
9: alors que f [0] = 0 faire
10: pour i = 1 à N faire
11: f [i ¡1] = f [i]
12: c [N + 1 - i] = c [N - i]
13: fin de
14: f [N] = 0
15: c [0] = 0
16: k = k + 1
17: fin tandis que
18: si deg (f) = 0 alors
19: goto Etape 32
20: end if
......... ...... ....
31: fin de boucle

Ma question est de savoir comment je mettre en œuvre la boucle qui commence sur la ligne 8 et se termine le 31; Je suis à l'aise avec les déclarations entre les lignes 8 à 31, mais quel type de boucle dois-je utiliser sur la ligne 8, et quelles conditions dois-je donner pour la boucle?

Merci d'avance.

+1

odeurs comme les devoirs – jldupont

+1

Quelle langue? Cela ressemble à une boucle infinie pour moi, vous pouvez utiliser n'importe quelle construction de boucle que vous voulez. Assurez-vous que vous avez un moyen de faire l'étape 19. –

+0

J'utilise Java, @jldupont, et bien c'est pour mon projet d'université, donc oui devoirs d'une certaine façon :-) –

Répondre

2

C'est une boucle infinie. Pas de conditions, juste une boucle pour toujours. Le seul moyen de sortir est d'arriver à l'étape 19. Dans les langues C-comme vous pouvez écrire que while (true) ou for (;;):

for (;;) { 
    // ... 

    if (deg(f) == 0) { 
     goto afterLoop; 
    } 

    // ... 
} 

afterLoop: 
// ... 

goto est mal, cependant. Il serait préférable de remplacer goto Step 32 une déclaration break, qui sort une boucle immédiatement:

for (;;) { 
    // ... 

    if (deg(f) == 0) { 
     break; 
    } 

    // ... 
} 

Pour ce que ça vaut, si vous n'avez pas 21-30 vous pouvez utiliser une boucle do/while, où la condition de la boucle va au fond de la boucle au lieu du haut:

do { 
    // ... 
} 
while (deg(f) != 0); 

Cela fonctionnerait si les lignes 18-20 étaient les dernières lignes dans la boucle. Comme ils ne le sont pas, il semble que l'option n ° 2 soit celle qui va avec.

+0

Merci beaucoup, je n'avais aucune idée que c'était une boucle infinie, je savais que je devais en sortir, je pense que je vais juste l'implémenter avec une boucle infinie. Merci encore. –

1

Si vous voulez écrire un pseudo-code avec autant de détails, vous pouvez écrire dans la langue cible. Pseudocode devrait être beaucoup plus large brosse - quelque chose comme ça (non lié à votre code):

for each bank account 
    check balance as of last month 
    if balance greater than promotion limit 
     send out valued customer pack 
    endif 
endfor