Oui, mais quelles autres solutions pour lire des entrées en C avec
des débutants ?
Oui, mais quelles autres solutions pour lire des entrées en C avec
des débutants ?
Oui, mais quelles autres solutions pour lire des entrées en C avec
des débutants ?
Marc Boyer, le 07/09/2009 a écrit :
[...]Oui, mais quelles autres solutions pour lire des entrées en C avec
des débutants ?
Il me semble que après les paramètres en dur dans le code, on pourrait
embrayer sur la prise de paramètres dans la ligne de commandes. Sous la
forme:
int main(int argc, char* argv[]){}
sachant que le fait qu'une chaîne est un char*, ainsi que la
présentation de main(), doivent venir *très* tôt dans le cursus.
On apprendra très vite à écrire et utiliser un usage(), et à analyser
la ligne de commande, ce qui n'est pas très compliqué.
On pourra même
évoquer l'ensemble plus ou moins monolithique constitué par le cahier
des charges ou scope of work, la ligne de commande, usage(), -help et
la nécessité d'écrire immédiatement la documentation, page de man ou
autre.
D'une part on entre bien plus naturellement qu'avec scanf() dans un
parcours d'apprentissage à peu près linéaire - bon, ce ne sera pas tout
à fait possible, mais ce sera mieux - mais on collera mieux à la
réalité.
Je m'explique: si j'inventorie les outils en console que
j'utilise couramment, qu'est ce que je trouve dans une grande majorité
des cas ? Une ligne de commande assez touffue, avec un man parfois
épais, quelques affichages de type "synthèse" suivis d'une demande de
confirmation. Dans un certain nombre de cas, j'ai de véritables entrées
à renseigner, mais il est clair que les programmeurs ont tout fait pour
que ces entrées puissent être un affichage suivi d'un choix 1 parmi n.
C'est d'ailleurs ce que je cherche à faire quand j'écris des outils
console, même dans d'autres langages que le C moins sauvages au niveau
des E/S humaines.
Marc Boyer, le 07/09/2009 a écrit :
[...]
Oui, mais quelles autres solutions pour lire des entrées en C avec
des débutants ?
Il me semble que après les paramètres en dur dans le code, on pourrait
embrayer sur la prise de paramètres dans la ligne de commandes. Sous la
forme:
int main(int argc, char* argv[]){}
sachant que le fait qu'une chaîne est un char*, ainsi que la
présentation de main(), doivent venir *très* tôt dans le cursus.
On apprendra très vite à écrire et utiliser un usage(), et à analyser
la ligne de commande, ce qui n'est pas très compliqué.
On pourra même
évoquer l'ensemble plus ou moins monolithique constitué par le cahier
des charges ou scope of work, la ligne de commande, usage(), -help et
la nécessité d'écrire immédiatement la documentation, page de man ou
autre.
D'une part on entre bien plus naturellement qu'avec scanf() dans un
parcours d'apprentissage à peu près linéaire - bon, ce ne sera pas tout
à fait possible, mais ce sera mieux - mais on collera mieux à la
réalité.
Je m'explique: si j'inventorie les outils en console que
j'utilise couramment, qu'est ce que je trouve dans une grande majorité
des cas ? Une ligne de commande assez touffue, avec un man parfois
épais, quelques affichages de type "synthèse" suivis d'une demande de
confirmation. Dans un certain nombre de cas, j'ai de véritables entrées
à renseigner, mais il est clair que les programmeurs ont tout fait pour
que ces entrées puissent être un affichage suivi d'un choix 1 parmi n.
C'est d'ailleurs ce que je cherche à faire quand j'écris des outils
console, même dans d'autres langages que le C moins sauvages au niveau
des E/S humaines.
Marc Boyer, le 07/09/2009 a écrit :
[...]Oui, mais quelles autres solutions pour lire des entrées en C avec
des débutants ?
Il me semble que après les paramètres en dur dans le code, on pourrait
embrayer sur la prise de paramètres dans la ligne de commandes. Sous la
forme:
int main(int argc, char* argv[]){}
sachant que le fait qu'une chaîne est un char*, ainsi que la
présentation de main(), doivent venir *très* tôt dans le cursus.
On apprendra très vite à écrire et utiliser un usage(), et à analyser
la ligne de commande, ce qui n'est pas très compliqué.
On pourra même
évoquer l'ensemble plus ou moins monolithique constitué par le cahier
des charges ou scope of work, la ligne de commande, usage(), -help et
la nécessité d'écrire immédiatement la documentation, page de man ou
autre.
D'une part on entre bien plus naturellement qu'avec scanf() dans un
parcours d'apprentissage à peu près linéaire - bon, ce ne sera pas tout
à fait possible, mais ce sera mieux - mais on collera mieux à la
réalité.
Je m'explique: si j'inventorie les outils en console que
j'utilise couramment, qu'est ce que je trouve dans une grande majorité
des cas ? Une ligne de commande assez touffue, avec un man parfois
épais, quelques affichages de type "synthèse" suivis d'une demande de
confirmation. Dans un certain nombre de cas, j'ai de véritables entrées
à renseigner, mais il est clair que les programmeurs ont tout fait pour
que ces entrées puissent être un affichage suivi d'un choix 1 parmi n.
C'est d'ailleurs ce que je cherche à faire quand j'écris des outils
console, même dans d'autres langages que le C moins sauvages au niveau
des E/S humaines.
Le 04-09-2009, candide a écrit :
Le problème, c'est qu'une maîtrise fiable des entrées est un problème
difficile par nature. D'une autre côté, d'un point de vue pédagogique
il est préférable de pouvoir faire quelques entrées/sorties dans les
exos.
Ah ? Franchement, nous nous étions posé la question des E/S sur
notre programme de langage C et la question de faire des programmes
sans entrées avait été évoquée, et vite rejettée...
Oui, mais quelles autres solutions pour lire des entrées en C avec
des débutants ?
Le 04-09-2009, candide <candide@free.invalid> a écrit :
Le problème, c'est qu'une maîtrise fiable des entrées est un problème
difficile par nature. D'une autre côté, d'un point de vue pédagogique
il est préférable de pouvoir faire quelques entrées/sorties dans les
exos.
Ah ? Franchement, nous nous étions posé la question des E/S sur
notre programme de langage C et la question de faire des programmes
sans entrées avait été évoquée, et vite rejettée...
Oui, mais quelles autres solutions pour lire des entrées en C avec
des débutants ?
Le 04-09-2009, candide a écrit :
Le problème, c'est qu'une maîtrise fiable des entrées est un problème
difficile par nature. D'une autre côté, d'un point de vue pédagogique
il est préférable de pouvoir faire quelques entrées/sorties dans les
exos.
Ah ? Franchement, nous nous étions posé la question des E/S sur
notre programme de langage C et la question de faire des programmes
sans entrées avait été évoquée, et vite rejettée...
Oui, mais quelles autres solutions pour lire des entrées en C avec
des débutants ?
Déjà, le tableau de pointeur de char, ça va être dur à faire
avaller en début de cursus (pas avant une dizaine de TP quand même).
Déjà, le tableau de pointeur de char, ça va être dur à faire
avaller en début de cursus (pas avant une dizaine de TP quand même).
Déjà, le tableau de pointeur de char, ça va être dur à faire
avaller en début de cursus (pas avant une dizaine de TP quand même).
Marc Boyer a écrit :Le 04-09-2009, candide a écrit :Le problème, c'est qu'une maîtrise fiable des entrées est un problème
difficile par nature. D'une autre côté, d'un point de vue pédagogique
il est préférable de pouvoir faire quelques entrées/sorties dans les
exos.
Des sorties, c'est obligatoire. Les entrées, c'est du marketing, de la pseudo
interactivité, de la comm, bref appelle ça comme tu veux (quand on apprend le
langage, sinon c'est évidemment essentiel). Enfin, bon, c'est juste mon avis.
Ah ? Franchement, nous nous étions posé la question des E/S sur
notre programme de langage C et la question de faire des programmes
sans entrées avait été évoquée, et vite rejettée...
et pourquoi ?
Oui, mais quelles autres solutions pour lire des entrées en C avec
des débutants ?
Pour apprendre le langage, pas besoin d'entrées, au contraire, ça ralentit car
pose plein de questions hors langage et plein de question utilisant le langage
et dont on maitrise pas le contenu.
Bien sûr qu'un cours de C doit parler des E/S mais tout à la fin et de façon
choisie pour être utile dans les cas les plus courants. J'ai beaucoup souffert
en lisant le K&R, c'est selon moi un très très mauvais ouvrage d'apprentissage
mais il a un certain nombre de qualités dont celle (je pense ici involontaire
!!) de ne pas donner une ligne de code appelant scanf() avant le chapitre 7,
celui qui traite des E/S.
Marc Boyer a écrit :
Le 04-09-2009, candide <candide@free.invalid> a écrit :
Le problème, c'est qu'une maîtrise fiable des entrées est un problème
difficile par nature. D'une autre côté, d'un point de vue pédagogique
il est préférable de pouvoir faire quelques entrées/sorties dans les
exos.
Des sorties, c'est obligatoire. Les entrées, c'est du marketing, de la pseudo
interactivité, de la comm, bref appelle ça comme tu veux (quand on apprend le
langage, sinon c'est évidemment essentiel). Enfin, bon, c'est juste mon avis.
Ah ? Franchement, nous nous étions posé la question des E/S sur
notre programme de langage C et la question de faire des programmes
sans entrées avait été évoquée, et vite rejettée...
et pourquoi ?
Oui, mais quelles autres solutions pour lire des entrées en C avec
des débutants ?
Pour apprendre le langage, pas besoin d'entrées, au contraire, ça ralentit car
pose plein de questions hors langage et plein de question utilisant le langage
et dont on maitrise pas le contenu.
Bien sûr qu'un cours de C doit parler des E/S mais tout à la fin et de façon
choisie pour être utile dans les cas les plus courants. J'ai beaucoup souffert
en lisant le K&R, c'est selon moi un très très mauvais ouvrage d'apprentissage
mais il a un certain nombre de qualités dont celle (je pense ici involontaire
!!) de ne pas donner une ligne de code appelant scanf() avant le chapitre 7,
celui qui traite des E/S.
Marc Boyer a écrit :Le 04-09-2009, candide a écrit :Le problème, c'est qu'une maîtrise fiable des entrées est un problème
difficile par nature. D'une autre côté, d'un point de vue pédagogique
il est préférable de pouvoir faire quelques entrées/sorties dans les
exos.
Des sorties, c'est obligatoire. Les entrées, c'est du marketing, de la pseudo
interactivité, de la comm, bref appelle ça comme tu veux (quand on apprend le
langage, sinon c'est évidemment essentiel). Enfin, bon, c'est juste mon avis.
Ah ? Franchement, nous nous étions posé la question des E/S sur
notre programme de langage C et la question de faire des programmes
sans entrées avait été évoquée, et vite rejettée...
et pourquoi ?
Oui, mais quelles autres solutions pour lire des entrées en C avec
des débutants ?
Pour apprendre le langage, pas besoin d'entrées, au contraire, ça ralentit car
pose plein de questions hors langage et plein de question utilisant le langage
et dont on maitrise pas le contenu.
Bien sûr qu'un cours de C doit parler des E/S mais tout à la fin et de façon
choisie pour être utile dans les cas les plus courants. J'ai beaucoup souffert
en lisant le K&R, c'est selon moi un très très mauvais ouvrage d'apprentissage
mais il a un certain nombre de qualités dont celle (je pense ici involontaire
!!) de ne pas donner une ligne de code appelant scanf() avant le chapitre 7,
celui qui traite des E/S.
Des sorties, c'est obligatoire. Les entrées, c'est du marketing, de la
pseudo interactivité, de la comm, bref appelle ça comme tu veux (quand
on apprend le _langage_, sinon c'est évidemment essentiel). Enfin,
bon, c'est juste mon avis.
Des sorties, c'est obligatoire. Les entrées, c'est du marketing, de la
pseudo interactivité, de la comm, bref appelle ça comme tu veux (quand
on apprend le _langage_, sinon c'est évidemment essentiel). Enfin,
bon, c'est juste mon avis.
Des sorties, c'est obligatoire. Les entrées, c'est du marketing, de la
pseudo interactivité, de la comm, bref appelle ça comme tu veux (quand
on apprend le _langage_, sinon c'est évidemment essentiel). Enfin,
bon, c'est juste mon avis.
Ca donne un aspect "ludique". Tu peux regretter que cela soit nécessaire
dans les enseignement, mais ça aide.
Parce que nous étions incapables de batir un programme d'une dizaine
de TD et TP sans faire quelques entrées.
Je ne sais qui est "on". Mes anciens étudiants acceptaient tout
à fait d'utiliser un scanf("%d",&i) sans trop se poser de questions
sur "mais qu'est-ce qui se passerait avec scanf("Solde ? %6d",&i)".
Ca donne un aspect "ludique". Tu peux regretter que cela soit nécessaire
dans les enseignement, mais ça aide.
Parce que nous étions incapables de batir un programme d'une dizaine
de TD et TP sans faire quelques entrées.
Je ne sais qui est "on". Mes anciens étudiants acceptaient tout
à fait d'utiliser un scanf("%d",&i) sans trop se poser de questions
sur "mais qu'est-ce qui se passerait avec scanf("Solde ? %6d",&i)".
Ca donne un aspect "ludique". Tu peux regretter que cela soit nécessaire
dans les enseignement, mais ça aide.
Parce que nous étions incapables de batir un programme d'une dizaine
de TD et TP sans faire quelques entrées.
Je ne sais qui est "on". Mes anciens étudiants acceptaient tout
à fait d'utiliser un scanf("%d",&i) sans trop se poser de questions
sur "mais qu'est-ce qui se passerait avec scanf("Solde ? %6d",&i)".
D'une part, comme l'a dit Marc, une part d'interactivité est
relativement indispensable d'un point de vue pédagogique (et je ne
trouve pas ça regrettable : au contraire, c'est un avantage de la
programmation part rapport à d'autres disciplines (au hasard, les maths)
qu'on puisse y introduire une part d'interactivité de façon pas trop
artificielles).
D'autre part, je me demande quel sens ça a de vouloir dissocier, comme
tu semble vouloir le faire, l'apprentissage du langage et celui de
points aussi essentiels que la gestion propre des E/S dans ce langage.
Je suis assez inquiet à l'idée que des personnes n'ayant étudier que
« le langage lui-même » se croient capables de coder des vrais
programmes pour la vraie vie (incluant des E/S, donc) et finissent par
pondre du code plein d'erreurs potentiellement dangereuses à ce niveau.
(Toute ressemblance avec des faits réels...) Du coup même si ça ne
facilite pas les choses (mais qui a dit qu'apprendre le C était
facile ?) ça peut avoir sacrément du sens d'introduire des E/S assez
tôt, au moins pour avoir essayer de faire prendre conscience au
étudiants que c'est un sujet délicat.
D'une part, comme l'a dit Marc, une part d'interactivité est
relativement indispensable d'un point de vue pédagogique (et je ne
trouve pas ça regrettable : au contraire, c'est un avantage de la
programmation part rapport à d'autres disciplines (au hasard, les maths)
qu'on puisse y introduire une part d'interactivité de façon pas trop
artificielles).
D'autre part, je me demande quel sens ça a de vouloir dissocier, comme
tu semble vouloir le faire, l'apprentissage du langage et celui de
points aussi essentiels que la gestion propre des E/S dans ce langage.
Je suis assez inquiet à l'idée que des personnes n'ayant étudier que
« le langage lui-même » se croient capables de coder des vrais
programmes pour la vraie vie (incluant des E/S, donc) et finissent par
pondre du code plein d'erreurs potentiellement dangereuses à ce niveau.
(Toute ressemblance avec des faits réels...) Du coup même si ça ne
facilite pas les choses (mais qui a dit qu'apprendre le C était
facile ?) ça peut avoir sacrément du sens d'introduire des E/S assez
tôt, au moins pour avoir essayer de faire prendre conscience au
étudiants que c'est un sujet délicat.
D'une part, comme l'a dit Marc, une part d'interactivité est
relativement indispensable d'un point de vue pédagogique (et je ne
trouve pas ça regrettable : au contraire, c'est un avantage de la
programmation part rapport à d'autres disciplines (au hasard, les maths)
qu'on puisse y introduire une part d'interactivité de façon pas trop
artificielles).
D'autre part, je me demande quel sens ça a de vouloir dissocier, comme
tu semble vouloir le faire, l'apprentissage du langage et celui de
points aussi essentiels que la gestion propre des E/S dans ce langage.
Je suis assez inquiet à l'idée que des personnes n'ayant étudier que
« le langage lui-même » se croient capables de coder des vrais
programmes pour la vraie vie (incluant des E/S, donc) et finissent par
pondre du code plein d'erreurs potentiellement dangereuses à ce niveau.
(Toute ressemblance avec des faits réels...) Du coup même si ça ne
facilite pas les choses (mais qui a dit qu'apprendre le C était
facile ?) ça peut avoir sacrément du sens d'introduire des E/S assez
tôt, au moins pour avoir essayer de faire prendre conscience au
étudiants que c'est un sujet délicat.
Manuel Pégourié-Gonnard a écrit :D'une part, comme l'a dit Marc, une part d'interactivité est
relativement indispensable d'un point de vue pédagogique (et je ne
"relativement indispensable", c'est pas contradictoire ?
La dissociation vient simplement du fait que ce que je considère
l'objectif premier est d'apprendre le langage (structures de contrôle,
types, opérateurs, etc).
Si tu fais ça couplé avec des E/S, tu effectues une
surcharge d'apprentissage :
Sans compter les effet pervers où on ne sait plus ce que fait telle ou
telle fonction : calcule-t-elle, capture-t-elle ou affiche-t-elle ?
Je suis assez inquiet à l'idée que des personnes n'ayant étudier que
"inquiet", comme tu y vas
« le langage lui-même » se croient capables de coder des vrais
programmes pour la vraie vie (incluant des E/S, donc) et finissent par
pondre du code plein d'erreurs potentiellement dangereuses à ce niveau.
Je ne sais pas si ce propos s'adresse à moi nominalement. En ce qui me
concerne, j'utiliserais les E/S en proportion de ce je connais
d'elles.
Mais un peu dans l'idée de ce qu'a dit Antoine précédemment, les E/S
par leur complexité, permettent aussi lorsqu'on les étudie de
progresser dans l'apprentissage du langage de la même façon que
lorsque tu étudies la poétique française, tu finis par améliorer ta
connaissance de la langue.
Manuel Pégourié-Gonnard a écrit :
D'une part, comme l'a dit Marc, une part d'interactivité est
relativement indispensable d'un point de vue pédagogique (et je ne
"relativement indispensable", c'est pas contradictoire ?
La dissociation vient simplement du fait que ce que je considère
l'objectif premier est d'apprendre le langage (structures de contrôle,
types, opérateurs, etc).
Si tu fais ça couplé avec des E/S, tu effectues une
surcharge d'apprentissage :
Sans compter les effet pervers où on ne sait plus ce que fait telle ou
telle fonction : calcule-t-elle, capture-t-elle ou affiche-t-elle ?
Je suis assez inquiet à l'idée que des personnes n'ayant étudier que
"inquiet", comme tu y vas
« le langage lui-même » se croient capables de coder des vrais
programmes pour la vraie vie (incluant des E/S, donc) et finissent par
pondre du code plein d'erreurs potentiellement dangereuses à ce niveau.
Je ne sais pas si ce propos s'adresse à moi nominalement. En ce qui me
concerne, j'utiliserais les E/S en proportion de ce je connais
d'elles.
Mais un peu dans l'idée de ce qu'a dit Antoine précédemment, les E/S
par leur complexité, permettent aussi lorsqu'on les étudie de
progresser dans l'apprentissage du langage de la même façon que
lorsque tu étudies la poétique française, tu finis par améliorer ta
connaissance de la langue.
Manuel Pégourié-Gonnard a écrit :D'une part, comme l'a dit Marc, une part d'interactivité est
relativement indispensable d'un point de vue pédagogique (et je ne
"relativement indispensable", c'est pas contradictoire ?
La dissociation vient simplement du fait que ce que je considère
l'objectif premier est d'apprendre le langage (structures de contrôle,
types, opérateurs, etc).
Si tu fais ça couplé avec des E/S, tu effectues une
surcharge d'apprentissage :
Sans compter les effet pervers où on ne sait plus ce que fait telle ou
telle fonction : calcule-t-elle, capture-t-elle ou affiche-t-elle ?
Je suis assez inquiet à l'idée que des personnes n'ayant étudier que
"inquiet", comme tu y vas
« le langage lui-même » se croient capables de coder des vrais
programmes pour la vraie vie (incluant des E/S, donc) et finissent par
pondre du code plein d'erreurs potentiellement dangereuses à ce niveau.
Je ne sais pas si ce propos s'adresse à moi nominalement. En ce qui me
concerne, j'utiliserais les E/S en proportion de ce je connais
d'elles.
Mais un peu dans l'idée de ce qu'a dit Antoine précédemment, les E/S
par leur complexité, permettent aussi lorsqu'on les étudie de
progresser dans l'apprentissage du langage de la même façon que
lorsque tu étudies la poétique française, tu finis par améliorer ta
connaissance de la langue.
Marc Boyer a écrit :Ca donne un aspect "ludique". Tu peux regretter que cela soit nécessaire
dans les enseignement, mais ça aide.
"ludique", je me demandais si le mot allait être prononcé. Et bien sache que
pour moi, le C est essentiellement ludique, qu'il s'agisse de faire des
programmes en console ou des petit jeux avec un lib graphique.
Il y a plein de façon d'être ludique sans faire des entrées.
Très franchement, c'est une illusion, je connais très peu de programmes C
d'apprentissage où les entrées vont apporter un vrai plus ludique
indispensable.
Le problème est que le programme au bout du compte n'est jamais assez
ludique ce qui conduit à une surenchère dans la recherche d'une
sophistication des entrées [voire à une dérive complète où toutes les
entrées sont saisies au clavier par l'utilisateur, le forum du
siteduzero est full de codes comme ça, au bout du
compte les mecs passent leur temps à déboguer des entrées et
n'apprennent rien].
En situation de début d'apprentissage et même à un stade plus avancé, l'étudiant
n'a pas les moyens de faire des entrées sécurisées.
Les entrées, je ne suis pas contre mais à condition qu'elles soient vraiment
très surveillées et contrôlés, tout ça pour donner priorité au langage
proprement dit.
Parce que nous étions incapables de batir un programme d'une dizaine
de TD et TP sans faire quelques entrées.
Tu fais tes entrées en dur dans le code. Comme c'est des programmes
d'apprentissage, t'es sans cesse en train de reprendre ton source et si tu veux
changer des données et bien tu les changes dans le source et tu recompiles.
Je ne sais qui est "on". Mes anciens étudiants acceptaient tout
à fait d'utiliser un scanf("%d",&i) sans trop se poser de questions
sur "mais qu'est-ce qui se passerait avec scanf("Solde ? %6d",&i)".
Mais rapidement on tombe sur des questions naturelles comme saisir une chaîne
contenant des espaces avec scanf() et c'est le début de la surenchère (ou des
frustrations).
Si c'est pour se limiter _strictement_
à une saisie très occasionnelle d'un nombre, d'un caractère ou d'une chaîne
toute simple ok mais alors dans ce cas, on peut facilement se passer de les
saisir au clavier.
Marc Boyer a écrit :
Ca donne un aspect "ludique". Tu peux regretter que cela soit nécessaire
dans les enseignement, mais ça aide.
"ludique", je me demandais si le mot allait être prononcé. Et bien sache que
pour moi, le C est essentiellement ludique, qu'il s'agisse de faire des
programmes en console ou des petit jeux avec un lib graphique.
Il y a plein de façon d'être ludique sans faire des entrées.
Très franchement, c'est une illusion, je connais très peu de programmes C
d'apprentissage où les entrées vont apporter un vrai plus ludique
indispensable.
Le problème est que le programme au bout du compte n'est jamais assez
ludique ce qui conduit à une surenchère dans la recherche d'une
sophistication des entrées [voire à une dérive complète où toutes les
entrées sont saisies au clavier par l'utilisateur, le forum du
siteduzero est full de codes comme ça, au bout du
compte les mecs passent leur temps à déboguer des entrées et
n'apprennent rien].
En situation de début d'apprentissage et même à un stade plus avancé, l'étudiant
n'a pas les moyens de faire des entrées sécurisées.
Les entrées, je ne suis pas contre mais à condition qu'elles soient vraiment
très surveillées et contrôlés, tout ça pour donner priorité au langage
proprement dit.
Parce que nous étions incapables de batir un programme d'une dizaine
de TD et TP sans faire quelques entrées.
Tu fais tes entrées en dur dans le code. Comme c'est des programmes
d'apprentissage, t'es sans cesse en train de reprendre ton source et si tu veux
changer des données et bien tu les changes dans le source et tu recompiles.
Je ne sais qui est "on". Mes anciens étudiants acceptaient tout
à fait d'utiliser un scanf("%d",&i) sans trop se poser de questions
sur "mais qu'est-ce qui se passerait avec scanf("Solde ? %6d",&i)".
Mais rapidement on tombe sur des questions naturelles comme saisir une chaîne
contenant des espaces avec scanf() et c'est le début de la surenchère (ou des
frustrations).
Si c'est pour se limiter _strictement_
à une saisie très occasionnelle d'un nombre, d'un caractère ou d'une chaîne
toute simple ok mais alors dans ce cas, on peut facilement se passer de les
saisir au clavier.
Marc Boyer a écrit :Ca donne un aspect "ludique". Tu peux regretter que cela soit nécessaire
dans les enseignement, mais ça aide.
"ludique", je me demandais si le mot allait être prononcé. Et bien sache que
pour moi, le C est essentiellement ludique, qu'il s'agisse de faire des
programmes en console ou des petit jeux avec un lib graphique.
Il y a plein de façon d'être ludique sans faire des entrées.
Très franchement, c'est une illusion, je connais très peu de programmes C
d'apprentissage où les entrées vont apporter un vrai plus ludique
indispensable.
Le problème est que le programme au bout du compte n'est jamais assez
ludique ce qui conduit à une surenchère dans la recherche d'une
sophistication des entrées [voire à une dérive complète où toutes les
entrées sont saisies au clavier par l'utilisateur, le forum du
siteduzero est full de codes comme ça, au bout du
compte les mecs passent leur temps à déboguer des entrées et
n'apprennent rien].
En situation de début d'apprentissage et même à un stade plus avancé, l'étudiant
n'a pas les moyens de faire des entrées sécurisées.
Les entrées, je ne suis pas contre mais à condition qu'elles soient vraiment
très surveillées et contrôlés, tout ça pour donner priorité au langage
proprement dit.
Parce que nous étions incapables de batir un programme d'une dizaine
de TD et TP sans faire quelques entrées.
Tu fais tes entrées en dur dans le code. Comme c'est des programmes
d'apprentissage, t'es sans cesse en train de reprendre ton source et si tu veux
changer des données et bien tu les changes dans le source et tu recompiles.
Je ne sais qui est "on". Mes anciens étudiants acceptaient tout
à fait d'utiliser un scanf("%d",&i) sans trop se poser de questions
sur "mais qu'est-ce qui se passerait avec scanf("Solde ? %6d",&i)".
Mais rapidement on tombe sur des questions naturelles comme saisir une chaîne
contenant des espaces avec scanf() et c'est le début de la surenchère (ou des
frustrations).
Si c'est pour se limiter _strictement_
à une saisie très occasionnelle d'un nombre, d'un caractère ou d'une chaîne
toute simple ok mais alors dans ce cas, on peut facilement se passer de les
saisir au clavier.