|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : février 2005 Messages : 37 ![]() |
Bonjour à tous, je me trouve devant un problème, à savoir que partout où je vais on me dit: "bouuh n'utilise pas goto c'est illisible, c'est nul, et en plus c'est pas bien". Mais voilà, je me suis donc débrouillé sans jusqu'à maintenant, mais je pense que pour ce que je dois faire l'utilisation de goto rendrait les choses plus claires.
En effet, je récupère une base de données en C sachant que les champs vides ne sont pas dans la base de départ. Donc quand je ne détecte pas un champ, je dois sauter toute une partie de mon code (qui traite les champ qui ne sont pas la), pour aller vers le reste. Pourquoi un goto ne serait pas indiqué dans ce cas la? Je veux bien faire des tests avec des indices et compagnie mais je pense qu'un goto serait nettement plus clair, même pour les relecteurs. D'avance merci. |
|
|
00
|
|
|
#2 |
|
Membre éprouvé
![]() Inscription : mai 2002 Messages : 543 ![]() |
La regle : Pas de goto dans un programme
La valeur d'un programmeur est inversement proportionnel au nombre de goto que l'on trouve dans son code Pour clarifier ton programme Utilise les sous programmes avec les commentaire qui vont bien
__________________
Signé : Capitaine Jean-Luc Picard |
|
|
03
|
|
|
#3 | |
|
Invité régulier
![]() Inscription : février 2005 Messages : 37 ![]() |
Citation:
J'ai pas demandé ce que vous pensiez du goto, j'ai demandé pourquoi vous pensiez qu'il fallait/ne fallait pas l'utiliser. |
|
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 1 020 ![]() |
L'utilisation de goto casse le principe même de programmation structurée.
Ca pose d'énormes problèmes en preuve algorithmique, de plus l'état du programme peut devenir indéterminé dans un contexte multi-thread. De toute manière, pour utiliser goto, il faut des branchements, autant utiliser ceux-ci pour "piloter" les portions de code à exécuter. Dans le cadre de boucle, il est aussi lisible et efficace d'utiliser des clauses break, continue, return. Le goto est un héritage de l'assembleur, rappelons que le C est un macor-assembleur avant de se vouloir un langage de haut niveau. |
|
|
00
|
|
|
#5 | |
|
Invité régulier
![]() Inscription : février 2005 Messages : 37 ![]() |
Citation:
|
|
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 1 020 ![]() |
Je te conseilles de faire une recherche sur le net sur le sujet.
J'avoue que ça fait trop longtemps que j'ai quitté les bancs de la FAC pour me souvenir des raisons exhaustives et exactes de ne pas utiliser GOTO. Mais après tout teste avec goto, en debug etc... Je ne suis pas intégriste sur ce point, mais je me souviens juste qu'un programme perd le côté structuré avec goto. On peut arrivé à une étiquette par oubli de branchement sur une sortie ou sur une autre étiquette. Ceci peut être désastreux, immagines que tu arrives là où tu utilises un pointeur alors qu'il n'est pas initialisé. Enfin, en programmation structurée, ça arrive aussi. Si tu trouves un site bien fait parlant du problème, je suis intéressé. Bon GOTO |
|
|
00
|
|
|
#7 | ||||
|
Invité régulier
![]() Inscription : février 2005 Messages : 37 ![]() |
Citation:
Citation:
Citation:
Citation:
|
||||
|
|
00
|
|
|
#8 | ||||
|
Membre éprouvé
![]() Inscription : mai 2002 Messages : 543 ![]() |
Citation:
Reprends l'un des premiers basic microsoft (Dans les années 80-81) Pour boucler un dizaine de fois tu faisais : Code :
CQFD
__________________
Signé : Capitaine Jean-Luc Picard |
||||
|
|
01
|
|
|
#9 | |
![]() ![]() Inscription : juin 2004 Messages : 5 850 ![]() |
Pour faire simple: je ne suis pas du tout d'accord avec toi argoet (et tout ceux qui pense la même chose que toi!):
Citation:
Les goto rendent le code illisible lorsqu'il sont mal utilisé mais ce n'est pas une exception en C. Il ne sont pas plus dangereux que des appels à malloc mal construit. Je n'est jamais eu à utilisé de goto dans mes codes en C mais ce n'est pas par peur de les utiliser mais parce que je n'en ai pas besoin. Il sont trés utiles pour sortir d'une multitude de boucle imbréqué.
__________________
gege2061's blog |
|
|
10
|
|
|
#10 | ||
|
Membre éprouvé
![]() Inscription : avril 2003 Messages : 600 ![]() |
Moi, personnellement, les goto, je les utilise !!
Modérement, mais je les utilise quand même... Parfois, c'est bien pratique pour faire des petits tests, et je n'ai aucune honte, ni aucun problème à les utiliser quand c'est nécessaire... Exemple très fréquents dans mes programmes personnels : Code :
FAUT JUSTE VEILLER A NE PAS TROP MULTIPLIER LEUR USAGE, POUR EVITER QUE TON CODE NE DEVIENNE ILLISIBLE... |
||
|
00
|
|
|
#11 | ||
![]() ![]() |
C'est dangereux et cela ne sert à rien
Code :
|
||
|
|
20
|
|
|
#12 |
|
Membre éprouvé
![]() Inscription : avril 2003 Messages : 600 ![]() |
Je vois pas ce que cela a de dangereux...
D'accord avec ton code !! Mais je trouve quand même le mien bien plus lisible avec ce petit label, et ce petit goto... ;-) ;-) ;-) ;-) ;-) |
|
00
|
|
|
#13 | |||
|
Membre régulier
![]() |
Citation:
Citation:
Citation:
|
|||
|
|
30
|
|
|
#14 | |||
![]() ![]() Inscription : juin 2004 Messages : 5 850 ![]() |
Citation:
__________________
gege2061's blog |
|||
|
10
|
|
|
#15 | ||||
|
Invité(e)
![]() Messages : n/a ![]() |
Citation:
A quoi servent les instructions JMP , JGE etc ?? ( language C=assembleur haut niveau ) Code :
Citation:
C'est vrai il faut éviter les goto mais parfois c'est bien utile ..... Dans les exemples du SDK de Direct X il y a utilisation de quelques goto . Ils sont vraiment mauvais programmeurs alors chez M$ |
||||
00
|
|
|
#16 | |
|
Invité régulier
![]() Inscription : février 2005 Messages : 37 ![]() |
Oui je suis d'accord avec toi, mais ce n'est pas dans ce type de circonstances que je compte utiliser goto.
(on est à l'intérieur d'une boucle while qui lit une par une les lignes d'un fichier texte) Si quelqu'un pouvait me donner un code propre et sûr correspondant à celui ci: Citation:
|
|
|
|
00
|
|
|
#17 | ||
![]() ![]() |
Code :
|
||
|
|
00
|
|
|
#18 | ||||
![]() ![]() Inscription : juin 2004 Messages : 5 850 ![]() |
Code :
![]() la même avec les switch: Code :
__________________
gege2061's blog |
||||
|
10
|
|
|
#19 | ||
|
Membre éprouvé
![]() Inscription : avril 2003 Messages : 600 ![]() |
Citation:
Plutôt d'accord avec les propositions des deux posts au-dessus de celui-ci... |
||
|
00
|
|
|
#20 | |||
|
Invité régulier
![]() Inscription : février 2005 Messages : 37 ![]() |
Citation:
|
|||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com