Bon, vu mon pseudo, je ne peux pas ne pas me mêler au débat. Vous l'aurez compris, j'ai fait du basic et de l'assembleur (donc, je suis définitivement perdu pour l'informatique, dirait mon prof).
Est-ce que les anti-gotos pourraient me dire comment faire le programme suivant sans goto ?
Soit le programme VHDL suivant (pas de panique, même si vous ne connaissez pas le VHDL, vous comprendrez quand même):
Le VHDL est fait pour décrire des composants indépendants, donc chaque procédure tourne en parallèle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 procedure TITI begin -- traitement wait on A -- suite du traitement end procedure
Je voudrais faire un programme C (séquentiel, donc) qui simule ces composants. J'ai donc une fonction principale qui appelle chaque procédure alternativement. Sur le "wait on A", la procédure redonne la main à la boucle principale (donc un return), puis doit continuer le traitement à l'endroit où elle s'est interrompue quand le signal A (une variable globale, pour simplifier) est modifiée. Ca donne ceci en c:
Je ne vois pas bien comment faire ce type de programme sans gotos, à moins de faire autant de threads que de procédures, sachant qu'on va vite être limité par le nombre maxi de threads autorisés par le système.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 int TITI(int suivi) { if (suivi == 1) goto suivi1; // Traitement // Equivalent du wait on A return; suivi1: // Suite du traitement }
Mais je suis sûr que les anti-gotos vont me donner une solution élégante, structurée, et sans gotos...
Partager