Et ensuite, plutôt que de prêter allégeance à l'une de ces différentes religions, essayez de réfléchir par vous-même.
C'est ce que je fais.
Pour l'exemple au-dessus ca se traduit par l'utilisation d'une boucle while qui (toujours selon moi) est bien plus lisible.
mips
mips
On Tue, 27 Apr 2004 10:55:05 +0200 Marwan Burelle wrote:
On Sat, 24 Apr 2004 18:29:59 +0200 mips wrote:
Comme quoi manipuler ce genre d'expression en faisant attention aux effets de bord est loin d'être trivial. Ce qui tombe pile poil dans mon discours.
Ben, non, justement ...
On a un cas parfait d'une simplification hâtive.
Ce qui tombe dans mon discours ce que sur une chose soit disant si simple quelqu'un a quand meme reussi a se rater. Un volontaire pour traiter Michel de neophyte ? :)
On Sat, 24 Apr 2004 18:29:59 +0200
mips <anti@spam.gov> wrote:
Comme quoi manipuler ce genre d'expression en faisant attention
aux effets de bord est loin d'être trivial.
Ce qui tombe pile poil dans mon discours.
Ben, non, justement ...
On a un cas parfait d'une simplification hâtive.
Ce qui tombe dans mon discours ce que sur une chose soit disant si
simple quelqu'un a quand meme reussi a se rater. Un volontaire pour
traiter Michel de neophyte ? :)
On Tue, 27 Apr 2004 10:55:05 +0200 Marwan Burelle wrote:
On Sat, 24 Apr 2004 18:29:59 +0200 mips wrote:
Comme quoi manipuler ce genre d'expression en faisant attention aux effets de bord est loin d'être trivial. Ce qui tombe pile poil dans mon discours.
Ben, non, justement ...
On a un cas parfait d'une simplification hâtive.
Ce qui tombe dans mon discours ce que sur une chose soit disant si simple quelqu'un a quand meme reussi a se rater. Un volontaire pour traiter Michel de neophyte ? :)
mips
Arnaud Launay
Le Tue, 27 Apr 2004 18:48:34 +0200, mips écrivit:
Ce qui tombe dans mon discours ce que sur une chose soit disant si simple quelqu'un a quand meme reussi a se rater. Un volontaire pour traiter Michel de neophyte ? :)
Mips, tu es un neophyte.
Arnaud.
Le Tue, 27 Apr 2004 18:48:34 +0200, mips écrivit:
Ce qui tombe dans mon discours ce que sur une chose soit disant si
simple quelqu'un a quand meme reussi a se rater. Un volontaire pour
traiter Michel de neophyte ? :)
Ce qui tombe dans mon discours ce que sur une chose soit disant si simple quelqu'un a quand meme reussi a se rater. Un volontaire pour traiter Michel de neophyte ? :)
Mips, tu es un neophyte.
Arnaud.
Thierry Thomas
Mardi 27 avril 2004 à 16:38 GMT, mips a écrit :
Enfin, pour moi, ce n'est pas franchement un exemple particulier de code illisible.
La encore j'ai un doute sur la comprehension de ce que j'appelle "illisible".
#v+ int i,j,d;main(){for(;i<25;i++)for(jH;j;putchar(!j?10:" #"[(d<150&&d>81)||(d<150&&(abs(24-j)<2||(i>12&&(abs(j-i-12)<2||abs(48-j-i-12)<2))))]))d=(24-j)*(25-(--j))+(12-i)*(12-i);} #v-
On peut faire beaucoup plus illisible (je le tiens de l'auteur de giram, qui en a une petite collection), mais j'ai juste choisi celui-ci pour le résultat. -- Th. Thomas.
Mardi 27 avril 2004 à 16:38 GMT, mips a écrit :
Enfin, pour moi, ce n'est pas franchement un exemple particulier de
code illisible.
La encore j'ai un doute sur la comprehension de ce que j'appelle
"illisible".
#v+
int i,j,d;main(){for(;i<25;i++)for(jH;j;putchar(!j?10:" #"[(d<150&&d>81)||(d<150&&(abs(24-j)<2||(i>12&&(abs(j-i-12)<2||abs(48-j-i-12)<2))))]))d=(24-j)*(25-(--j))+(12-i)*(12-i);}
#v-
On peut faire beaucoup plus illisible (je le tiens de l'auteur de giram,
qui en a une petite collection), mais j'ai juste choisi celui-ci pour le
résultat.
--
Th. Thomas.
Enfin, pour moi, ce n'est pas franchement un exemple particulier de code illisible.
La encore j'ai un doute sur la comprehension de ce que j'appelle "illisible".
#v+ int i,j,d;main(){for(;i<25;i++)for(jH;j;putchar(!j?10:" #"[(d<150&&d>81)||(d<150&&(abs(24-j)<2||(i>12&&(abs(j-i-12)<2||abs(48-j-i-12)<2))))]))d=(24-j)*(25-(--j))+(12-i)*(12-i);} #v-
On peut faire beaucoup plus illisible (je le tiens de l'auteur de giram, qui en a une petite collection), mais j'ai juste choisi celui-ci pour le résultat. -- Th. Thomas.
mips
On Tue, 27 Apr 2004 18:07:32 +0000 (UTC) Thierry Thomas wrote:
Mardi 27 avril 2004 à 16:38 GMT, mips a écrit :
Enfin, pour moi, ce n'est pas franchement un exemple particulier de code illisible.
La encore j'ai un doute sur la comprehension de ce que j'appelle "illisible".
#v+ int i,j,d;main(){for(;i<25;i++)for(jH;j;putchar(!j?10:" #"[(d<150&&d>81)||(d<150&&(abs(24-j)<2||(i>12&&(abs(j-i-12)<2||abs( #48-j-i-12)<2))))]))d=(24-j)*(25-(--j))+(12-i)*(12-i);} v-
On peut faire beaucoup plus illisible (je le tiens de l'auteur de giram, qui en a une petite collection), mais j'ai juste choisi celui-ci pour le résultat.
Oui mais la ce n'est plus du codage, c'est du vice ;)
mips
On Tue, 27 Apr 2004 18:07:32 +0000 (UTC)
Thierry Thomas <tthomas@mail.dotcom.fr> wrote:
Mardi 27 avril 2004 à 16:38 GMT, mips a écrit :
Enfin, pour moi, ce n'est pas franchement un exemple particulier
de code illisible.
La encore j'ai un doute sur la comprehension de ce que j'appelle
"illisible".
#v+
int i,j,d;main(){for(;i<25;i++)for(jH;j;putchar(!j?10:"
#"[(d<150&&d>81)||(d<150&&(abs(24-j)<2||(i>12&&(abs(j-i-12)<2||abs(
#48-j-i-12)<2))))]))d=(24-j)*(25-(--j))+(12-i)*(12-i);} v-
On peut faire beaucoup plus illisible (je le tiens de l'auteur de
giram, qui en a une petite collection), mais j'ai juste choisi
celui-ci pour le résultat.
Oui mais la ce n'est plus du codage, c'est du vice ;)
On Tue, 27 Apr 2004 18:07:32 +0000 (UTC) Thierry Thomas wrote:
Mardi 27 avril 2004 à 16:38 GMT, mips a écrit :
Enfin, pour moi, ce n'est pas franchement un exemple particulier de code illisible.
La encore j'ai un doute sur la comprehension de ce que j'appelle "illisible".
#v+ int i,j,d;main(){for(;i<25;i++)for(jH;j;putchar(!j?10:" #"[(d<150&&d>81)||(d<150&&(abs(24-j)<2||(i>12&&(abs(j-i-12)<2||abs( #48-j-i-12)<2))))]))d=(24-j)*(25-(--j))+(12-i)*(12-i);} v-
On peut faire beaucoup plus illisible (je le tiens de l'auteur de giram, qui en a une petite collection), mais j'ai juste choisi celui-ci pour le résultat.
Oui mais la ce n'est plus du codage, c'est du vice ;)
mips
mips
On Tue, 27 Apr 2004 19:09:45 +0200 Cyril Guibourg wrote:
Fais gaffe, avec Mipsounet, ce genre de remarque peut provoquer chez lui un accès de colère incontrôlable qui le conduit a frapper les gens.
J'evite avec sado-Arnaud. Avec lui c'est toujours sexuel ...
Le C n'a a ma connaissance pas de moyen propre d'exécuter une séquence A - test - (B - A - test)*
Pourtant ce genre de construction se rencontre très souvent (par exemple comme ci-dessus) : A (acquisition) : c=getchar(); ++i; test : (c!='n' && c!=EOF && i<lim-1) B (traitement) : s[i] = c;
En tout cas, même le code suivant me donne moins mal à la tête même si c'est pas comme-ça que je l'écrirais :
Le C n'a a ma connaissance pas de moyen propre d'exécuter une séquence
A - test - (B - A - test)*
Pourtant ce genre de construction se rencontre très souvent (par
exemple comme ci-dessus) :
A (acquisition) : c=getchar(); ++i;
test : (c!='n' && c!=EOF && i<lim-1)
B (traitement) : s[i] = c;
En tout cas, même le code suivant me donne moins mal à la tête même si
c'est pas comme-ça que je l'écrirais :
Le C n'a a ma connaissance pas de moyen propre d'exécuter une séquence A - test - (B - A - test)*
Pourtant ce genre de construction se rencontre très souvent (par exemple comme ci-dessus) : A (acquisition) : c=getchar(); ++i; test : (c!='n' && c!=EOF && i<lim-1) B (traitement) : s[i] = c;
En tout cas, même le code suivant me donne moins mal à la tête même si c'est pas comme-ça que je l'écrirais :
C'est un exemple à méditer. J'ai bien dit "méditer". Je n'ai pas dit "copier". Ne pas copier aveuglément est l'essence même de la réflexion personnelle.
Dans ce cas précis, je trouve le code assez clair : une boucle sur i (de 0 à lim-2), on lit des caractères jusqu'à un retour à la ligne ou la fin du fichier, et on les stocke dans le tableau s[].
Je n'ai pas de mal à lire ce code parce que les && sont bien visibles (grâce aux espaces autour) et se lisent "naturellement" de gauche à droite. Les "i=0", "i<lim-1" et "++i" sont idiomatiques d'une boucle "for" et se reconnaissent "par réflexe" dès qu'on a fait un peu de C.
Pour l'exemple au-dessus ca se traduit par l'utilisation d'une boucle while qui (toujours selon moi) est bien plus lisible.
Le plus lisible serait d'utiliser fgets() plutôt qu'une boucle à la main : fgets(s, lim, stdin); Ce serait aussi plus rapide (fgets() a accès aux structures internes associées au "FILE *" utilisé, notamment les buffers).
Si je devais écrire la boucle (genre, on me demande de réimplémenter fgets()), je le ferais probablement ainsi :
for (i = 0; i < (lim - 1); s[i ++] = c) { c = getchar(); if (c == 'n' || c == EOF) break; }
parce que c'est la forme qui met en exergue le fait que la condition principale est sur l'index "i", et que le fait de rencontrer un 'n' ou un EOF est un "arrêt prématuré".
C'est un exemple à méditer. J'ai bien dit "méditer". Je n'ai pas dit
"copier". Ne pas copier aveuglément est l'essence même de la réflexion
personnelle.
Dans ce cas précis, je trouve le code assez clair : une boucle sur i
(de 0 à lim-2), on lit des caractères jusqu'à un retour à la ligne
ou la fin du fichier, et on les stocke dans le tableau s[].
Je n'ai pas de mal à lire ce code parce que les && sont bien visibles
(grâce aux espaces autour) et se lisent "naturellement" de gauche à
droite. Les "i=0", "i<lim-1" et "++i" sont idiomatiques d'une boucle
"for" et se reconnaissent "par réflexe" dès qu'on a fait un peu de C.
Pour l'exemple au-dessus ca se traduit par l'utilisation d'une boucle
while qui (toujours selon moi) est bien plus lisible.
Le plus lisible serait d'utiliser fgets() plutôt qu'une boucle à la
main : fgets(s, lim, stdin);
Ce serait aussi plus rapide (fgets() a accès aux structures internes
associées au "FILE *" utilisé, notamment les buffers).
Si je devais écrire la boucle (genre, on me demande de réimplémenter
fgets()), je le ferais probablement ainsi :
for (i = 0; i < (lim - 1); s[i ++] = c) {
c = getchar();
if (c == 'n' || c == EOF)
break;
}
parce que c'est la forme qui met en exergue le fait que la condition
principale est sur l'index "i", et que le fait de rencontrer un 'n'
ou un EOF est un "arrêt prématuré".
C'est un exemple à méditer. J'ai bien dit "méditer". Je n'ai pas dit "copier". Ne pas copier aveuglément est l'essence même de la réflexion personnelle.
Dans ce cas précis, je trouve le code assez clair : une boucle sur i (de 0 à lim-2), on lit des caractères jusqu'à un retour à la ligne ou la fin du fichier, et on les stocke dans le tableau s[].
Je n'ai pas de mal à lire ce code parce que les && sont bien visibles (grâce aux espaces autour) et se lisent "naturellement" de gauche à droite. Les "i=0", "i<lim-1" et "++i" sont idiomatiques d'une boucle "for" et se reconnaissent "par réflexe" dès qu'on a fait un peu de C.
Pour l'exemple au-dessus ca se traduit par l'utilisation d'une boucle while qui (toujours selon moi) est bien plus lisible.
Le plus lisible serait d'utiliser fgets() plutôt qu'une boucle à la main : fgets(s, lim, stdin); Ce serait aussi plus rapide (fgets() a accès aux structures internes associées au "FILE *" utilisé, notamment les buffers).
Si je devais écrire la boucle (genre, on me demande de réimplémenter fgets()), je le ferais probablement ainsi :
for (i = 0; i < (lim - 1); s[i ++] = c) { c = getchar(); if (c == 'n' || c == EOF) break; }
parce que c'est la forme qui met en exergue le fait que la condition principale est sur l'index "i", et que le fait de rencontrer un 'n' ou un EOF est un "arrêt prématuré".