Structure de controle
Fermé
KGThimL
Messages postés
1
Date d'inscription
samedi 18 novembre 2017
Statut
Membre
Dernière intervention
18 novembre 2017
-
18 nov. 2017 à 17:36
[Dal] Messages postés 6057 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 17 mars 2023 - 18 nov. 2017 à 22:56
[Dal] Messages postés 6057 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 17 mars 2023 - 18 nov. 2017 à 22:56
A voir également:
- Structure de controle
- Controle parental pc - Guide
- Dans la table des matières de ce document, le chapitre 6 et ses 2 sections n'apparaissent pas. trouvez l'erreur dans la structure du document et corrigez-la. mettez à jour la table des matières. quel est le mot formé par les lettres en majuscules de la table des matières après sa mise à jour ? - Forum Word
- Controle de compte utilisateur - Guide
- Télécharger fausse vignette contrôle technique ✓ - Forum Imprimante
- Logiciel faux contrôle technique - Forum Logiciels
2 réponses
[Dal]
Messages postés
6057
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
17 mars 2023
1 043
Modifié le 18 nov. 2017 à 22:57
Modifié le 18 nov. 2017 à 22:57
Salut,
En C utiliser "goto" est assez simple.
Tu définis une étiquette vers laquelle tu pourras diriger le contrôle de l'exécution, et tu fais un goto dessus, qui est un saut inconditionnel.
Le plus dur, c'est de trouver des utilisations pertinentes.
Par exemple, pour sortir de deux boucles for imbriquées.
Ou aussi, pour désigner un (ou plusieurs) point(s) de sortie d'une fonction, qui doi(ven)t être utilisé(s) pour faire le ménage avant de quitter.
Dal
En C utiliser "goto" est assez simple.
Tu définis une étiquette vers laquelle tu pourras diriger le contrôle de l'exécution, et tu fais un goto dessus, qui est un saut inconditionnel.
Le plus dur, c'est de trouver des utilisations pertinentes.
Par exemple, pour sortir de deux boucles for imbriquées.
#include <stdlib.h>
int main(void)
{
int i, j;
/* stop when i and j equal to 5 */
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
if (i == 5 && j == 5)
goto out;
out:
return 0;
}
Ou aussi, pour désigner un (ou plusieurs) point(s) de sortie d'une fonction, qui doi(ven)t être utilisé(s) pour faire le ménage avant de quitter.
#include <stdlib.h>
int main(void)
{
char * buffer1;
char * buffer2;
int status = EXIT_SUCCESS;
buffer1 = malloc(1024*1024);
if (!buffer1)
return EXIT_FAILURE;
if (condition1) {
/* do something */
goto out_buffer1;
}
buffer2 = malloc(1024*1024);
if (!buffer2) {
status = EXIT_FAILURE;
goto out_buffer1;
}
if (condition2) {
/* do other things */
goto out_buffer2;
}
/* continue doing things */
...
/* wind-up */
status = EXIT_SUCCESS;
out_buffer2:
free(buffer2);
out_buffer1:
free(buffer1);
return status;
}
Dal
NHenry
Messages postés
15047
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
11 mars 2023
331
18 nov. 2017 à 19:14
18 nov. 2017 à 19:14
GOTO est une instruction à éviter le plus possible, cela a tendance à créer rapidement du code spaghetti.
La plupart (quasiment à chaque fois) du temps, il y a d'autres structures qui permettes de faire plus propre.
La plupart (quasiment à chaque fois) du temps, il y a d'autres structures qui permettes de faire plus propre.