La commande :Envoyé par as-de-trefle
Cette fonction permet de réaliser des boucles tant que "condition" est vraie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 do { //code }while(condition);
La commande :Envoyé par as-de-trefle
Cette fonction permet de réaliser des boucles tant que "condition" est vraie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 do { //code }while(condition);
"C'est beau toutes vos citations"
Sinon pour l'indentation bah en effet c'est une question de poin de vue.
Mais on peut pas dire que la diference soit enorme entre
for(){
appel
}
et
for()
{
appel
}
On distingue quand même plus vite les blocs avec l'indentation BSD, non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for ( ; ; ) { appel(); }De plus avec des boucles imbriquée, ça devient vite imcompréhensible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for( ; ; ){ appel(); }
La différence avec le while est que la boucle est au moins exécutée une fois (même si la condition n'est pas remplie)Cette fonction permet de réaliser des boucles tant que "condition" est vraie
erf je ne connais pas du tout Borland. J'ai corrigé le code sur Devc++ et ca marche trés bien .Envoyé par as-de-trefle
Et sinon en effet j'aurais du expliquer plus clairement ce que je faisais.
Alors tout d'abord j'ai remplacé ton second main par une fonction, avec le même contenu, j'ai modifié les quelques erreurs qui me paraissaient evidentes (la boucle for par exemple) et puis ca marchait.
Pour le do, il faut que tu saches que c'est en fait une boucle, de syntaxe
Le code présent dans la boucle sera alors effectué jusqu'à ce qu'on atteigne la condition d'arret.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 do{ ton code }while(condition d'arret)
Dans le cadre de ton programme, il me semble que c'ést :
'poser la question et lire la reponse de l'utilisateur' tant que la reponse est diferente de 'lea'
P.S. _system in module SKIP78.CPP crée plutot un fichier en c et pas en c++ ca doit etre ca qui te fait planter, mon code étant en c
non mais moi c'est un melange des deux dans ce casEnvoyé par PRomu@ld
j'ai l'avantage du BSD(plus lisible) et celui du K&D (plus court)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for( ; ; ){ appel(); }
Je viens de compiler ton programme chez moi et voici le résultat :
test.c:6: warning: function declaration isn't a prototype
test.c:7: warning: function declaration isn't a prototype
test.c:8: error: conflicting types for 'wait'
/usr/include/sys/wait.h:241: error: previous declaration of 'wait' was here
test.c: In function 'main':
test.c:27: warning: format '%s' expects type 'char *', but argument 2 has type 'char (*)[98u]'
test.c:33: warning: format '%s' expects type 'char *', but argument 2 has type 'char (*)[98u]'
test.c:15: warning: unused variable 'buf'
test.c:13: warning: unused variable 'a'
test.c: At top level:
test.c:47: error: conflicting types for 'wait'
/usr/include/sys/wait.h:241: error: previous declaration of 'wait' was here
test.c: In function 'wait':
test.c:49: error: 'CLK_TCK' undeclared (first use in this function)
test.c:49: error: (Each undeclared identifier is reported only once
test.c:49: error: for each function it appears in.)
test.c: At top level:
test.c:53: warning: function declaration isn't a prototype
test.c:64: warning: function declaration isn't a prototype
test.c: In function 'love':
test.c:69: warning: format '%s' expects type 'char *', but argument 2 has type 'char (*)[98u]'
[Troll]Vous les trolls de l'indentation me faites bien marrer.
De toute façon, la seule indentation qui devrait exister, c'est la Whitesmiths.[/troll]
PRomu@ld skip78: la seconde boucle for n'est pas indentée. Ton indentation "qui combine les deux avantages" EST l'indentation K&R.
Pour ce qui est des erreurs, on dirait que as-de-trefle a tenté de redéclarer wait() lui-même...
Edit: Ils devraient mettre une balise "Teste barré" pour les edits...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Ca n'est pas un troll, juste une discution sur les indentations possibles (j'ai exposé mes arguments, ce qui n'en fait pas un troll)Vous les trolls de l'indentation me faites bien marrer.
Euh, tu ne te serais pas trompé ? Ca n'est pas moi qui parle d'indentation qui combine les deux avantagesPRomu@ld: la seconde boucle for n'est pas indentée. Ton indentation "qui combine les deux avantages" EST l'indentation K&R.
Ca n'est pas le code d'as_de_trefle que j'ai compilé...Pour ce qui est des erreurs, on dirait que as-de-trefle a tenté de redéclarer wait() lui-même...
Envoyé par skip78
"C'est beau toutes vos citations"
Bah indirectement si En tout cas dev supporte les erreurs de déclaration chez moi. (remarque les erreurs semblent être pour la plupart des warnings trés facilement éliminables) Mais je n'ai fait que changer le main en une fonction tu sais c'est pas MON code et puis moi je ne voulais que faire avancer les choses d'ailleurs c'est pour ca que j'ai écris ca fveyssieire :Envoyé par PRomu@ld
pas la peine de tomber des nues je disais juste que ca ne fait pas vraiment avancer les choses de casser du sucre sur mon dosEnvoyé par fveysseire
Je ne comprends pas ta réaction je ne suis pas là pour "casser du sucre sur le dos des gens", je suis là pour apprendre et partager.Envoyé par skip78
Je voulais juste etre sur que l'on disais bien la même chose.
Donc ta première phrase est suffisante:
Par contre la deuxième est superflu:C'est bel et bien ce que je voulais dire ...
Bref ca n'à aucun interet de continuer là dessus.
"C'est beau toutes vos citations"
ok
Et bien autant pour moi alors nous sommes en effet d'accord sur ce point
Quant à l'indentation, à la suite de la vue de la page wikipedia je trouve vaiment que c'est un detail quoi. Je découvre le nom de ces diférents styles mais effectivement je connaissais les 3 principaux et en effet c'est bien le K&R que je préfère
Et si tu lis mes codes je t'assures que c'est parfaitement lisible
allez un petit exemple pour le fun
Bon c'est un peu compact mais ca va quoi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 /* Creation de l'echelle (inseree dans la vbox)*/ app->h_echellebox = gtk_hbox_new (TRUE,0); app->echelletable = gtk_table_new (1,34,TRUE); gtk_table_attach_defaults(GTK_TABLE(app->echelletable), app->h_echellebox,2, 33, 0, 1); gtk_box_pack_start (GTK_BOX (app->vbox), app->echelletable, TRUE, TRUE, 0); fp = fopen("./trt_im.txt","r"); if(fp){ fscanf(fp,"%d",&nb); fclose(fp); app->echelle = (GtkWidget**)malloc(nb * sizeof(GtkWidget*)); for(i=0;i<nb;i++)app->echelle[i] = gtk_label_new("NULL"); if(nb<25)for(i=0;i<nb;i++){ app->txt = g_strdup_printf("%d",(i+1)*pas_etude); gtk_label_set_text(GTK_LABEL(app->echelle[i]), app->txt); gtk_box_pack_start (GTK_BOX (app->h_echellebox), GTK_WIDGET (app->echelle[i]), TRUE, TRUE, 0); } else{ app->txt = g_strdup_printf("%d",pas_etude); gtk_label_set_text(GTK_LABEL(app->echelle[0]), app->txt); gtk_box_pack_start (GTK_BOX (app->h_echellebox), GTK_WIDGET (app->echelle[0]), TRUE, TRUE, 0); for(i=1;i<25;i++){ app->txt = g_strdup_printf("%d",((i+1)*nb*pas_etude)/25); gtk_label_set_text(GTK_LABEL(app->echelle[i]), app->txt); gtk_box_pack_start (GTK_BOX (app->h_echellebox), GTK_WIDGET (app->echelle[i]), TRUE, TRUE, 0); } } }
c un bon debut
"C'est beau toutes vos citations"
Et ben, si tu trouve ça bien ...Bon c'est un peu compact mais ca va quoi
Comme je le disais, c'est la lisibilité du code qui compte (en tout cas pour moi),
une suite d'instruction comme celle ci :
Et bien désolé de le dire mais c'est indigeste ... et qui plus est "dangereux", pour la compréhension, c'est pas le top ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if(nb<25)for(i=0;i<nb;i++){ app->txt = g_strdup_printf("%d",(i+1)*pas_etude); gtk_label_set_text(GTK_LABEL(app->echelle[i]), app->txt); gtk_box_pack_start (GTK_BOX (app->h_echellebox), GTK_WIDGET (app->echelle[i]), TRUE, TRUE, 0); }
Je mets (quasiment) toujours des accolades à mes blocs pour les délimiter, même lorsqu'il y a une seule instruction.
De plus, ajoute des espaces apres chaque parenthèse ouvrante et avant chaque fermante, ça augmente la lisibilité des conditions.
Enfin bon, nous avons deux visions du code, n'en faisons pas un plat.
Je l'ai dis plusieurs fois dans ce forum, pour moi, un warning est une erreur. Seul quelques très rares warning passent dans mes programmes (en général liée à un aspect de la bibliothèque utilisée).remarque les erreurs semblent être pour la plupart des warnings trés facilement éliminables
Enfin tu vas dire que je chippote mais ceci :
Est dangeureux ! On teste toujours les retour des fonctions système et d'allocation mémoire. Si ton malloc échoue, tu aura droit à une erreur de segmentation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 app->echelle = (GtkWidget**)malloc(nb * sizeof(GtkWidget*)); for(i=0;i<nb;i++)app->echelle[i] = gtk_label_new("NULL");
Ensuite, tu peux te passer du "cast" sur le retour de malloc à moins que tu ais de bonnes raisons
Envoyé par skip78
Justement je trouve ton code un peu trop compact. ;-)
Le truc qui me dérange c'est ce bout de code:
pour ma part, je préfère cette manière d'écrire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if(nb<25)for(i=0;i<nb;i++){ app->txt = g_strdup_printf("%d",(i+1)*pas_etude); gtk_label_set_text(GTK_LABEL(app->echelle[i]), app->txt); gtk_box_pack_start (GTK_BOX (app->h_echellebox), GTK_WIDGET (app->echelle[i]), TRUE, TRUE, 0); }
On dit en italien:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 if (nb<25) { for (i=0; i<nb; i++) { app->txt = g_strdup_printf("%d",(i+1)*pas_etude); gtk_label_set_text(GTK_LABEL(app->echelle[i]), app->txt); gtk_box_pack_start(GTK_BOX (app->h_echellebox), GTK_WIDGET (app->echelle[i]), TRUE, TRUE, 0); } }On ne discute pas les goûts et les couleurs des autres.
Bien le bonjour chez vous
Jowo
Si tu veux du code compact et lisible fais du Haskell par exemple...Mais la, il ne faudrait pas qu'il y ait un bug parce que relire et débugguer ça oumpf....Envoyé par skip78
À ce propos, suis-je le seul à trouver l'indentation GNU absolument illisible?
(surtout qu'en plus ils te mettent un espace entre fonction et parenthèse... Ils tiennent tant que ça à planquer leurs appels de fonctions ?)
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
moi je prefere Whitesmiths style , je pense que chaqun a sa facon de programmer , c 'est normal car on est tous différent !!! Donc ne nous éternisons par sur ce sujet !
J'aimerais savoir comment je fais pour faire patienter l'utilisateur pendant 30 secondes ? sur ce programme ?
merci
l'as de trefle
Bah tu le fait deja ... Avec la fonction wait() !Envoyé par as-de-trefle
Oui je sais mais on nous obligeait à le faire à l'ecole donc j'ai pris l'habitude de le mettreEnvoyé par PRomu@ld
Attention à ne pas rentrer en conflit avec une fonction système, mieux vaut utiliser un autre nom pour la fonction.Bah tu le fait deja ... Avec la fonction wait() !
Je trouvais juste bizarre que toi qui privilégie la rapidité du code (selon ce que tu nous as dis sur tes choix d'indentation), rajoute du code qui est inutile.Oui je sais mais on nous obligeait à le faire à l'ecole donc j'ai pris l'habitude de le mettre
Nos profs aussi voulaient qu'on utilise les cast en retour de malloc mais après leur avoir expliqué que cette pratique datait du temps où ils avaient "appris" le langage C et qu'elle n'avait plus lieu d'être, ils nous ont laisser faire comme nous voulions, le tout est que tu leur expliques.
D'ailleur au passage, pour tes mallocs, essaie d'utiliser ceci :
http://rperrot.developpez.com/articl...ocationC/#L4.1
Tu verras, ça facilite la vie.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager