Apprendre à programmer - C++ - Programmation
Marsh Posté le 27-06-2004 à 13:46:52
J'ai un doute sur la validité de la dernière question du questionnaire... (je connais pas trop le C++ mais en C c'est indéfini)
Enfin bon, c'est bien connu que les petits apprennnent vite.
(encore faut il les interesser)
Marsh Posté le 27-06-2004 à 16:41:55
leneuf22,
Merci de votre reponse et je suis d'accord avec vous
a propos des enfants: il faut les interesser. C'est ça que je fais à Bruxelles.
A propos de C: j'ai verifié le code avec C compiler et ça marche bien:
#include<stdio.h>
main()
{ int a=10; int b=8; int c=6;
a+=--a + a* ++a;
c+=--b !=3 > ++c;
b= ++c + --a ==3 * ++b != ++c + --b <= ++b ;
printf("a==%d",a);
printf(" b==%d",b);
printf(" c==%d",c);
Mais pour passer ce teste vous ne devez utiliser qu'une calculatrice bien sur.
}
Marsh Posté le 27-06-2004 à 16:54:27
le problème étant principalement l'ordre d'évaluation indéterminé entre la rvalue et la lvalue
Marsh Posté le 27-06-2004 à 17:20:44
Nic_Ver a écrit : leneuf22, |
Tu es professeur en fait ? A quel moment et à qui apprends-tu la programmation ? En primaire ? Secondaire ? Stages ?
Marsh Posté le 27-06-2004 à 17:22:14
le "main()" et 3 printf au lieu d'un seul sont révélateurs
d'ailleurs ça fout quoi les printf en C et stdio.h ?
Marsh Posté le 27-06-2004 à 20:08:41
Taz a écrit : le "main()" et 3 printf au lieu d'un seul sont révélateurs |
Je ne vois vraiment pas le problème avec main() (on le retrouve comme ça tout au long du K&R d'ailleurs). C'est plus l'absence de return et le fait que ce soit du C et pas du C++ qui sont gênants.
Marsh Posté le 27-06-2004 à 20:09:54
red faction a écrit : a 4 ans je faisais deja du Lisp |
Moi je faisais du LOGO, au CP
Marsh Posté le 27-06-2004 à 20:12:35
printf a écrit : Je ne vois vraiment pas le problème avec main() (on le retrouve comme ça tout au long du K&R d'ailleurs). C'est plus l'absence de return et le fait que ce soit du C et pas du C++ qui sont gênants. |
avant de donner des cours aux autres, tu ferais bien de lire un peu l'ANSI et d'apprendre à faire la différence entre C et C++
Marsh Posté le 27-06-2004 à 20:24:08
c'est de toutes façons un si bon exemple d'UB qu'un simple volatile suffit à prendre ton « exercice » en défaut
Marsh Posté le 27-06-2004 à 20:33:34
Taz a écrit : avant de donner des cours aux autres, tu ferais bien de lire un peu l'ANSI et d'apprendre à faire la différence entre C et C++ |
Tu t'es trompé dans le quote
Marsh Posté le 27-06-2004 à 20:34:53
ReplyMarsh Posté le 27-06-2004 à 20:38:09
Taz a écrit : oui et non : ma remarque est là même pour toi. |
Ah OK, c'était un template de réponse
Je parle bien de C ANSI et pas de C++ (puisque, comme tu le fais remarquer, ça n'en est pas).
Marsh Posté le 27-06-2004 à 21:16:18
Taz a écrit : justement, le C ANSI a bani le type par défaut int |
Autant pour moi, je viens de vérifier
Cela dit, le standard utilise le terme shall et non must et moi je lis ça comme une RFC
Plus sérieusement, je suis troublé car dans le K&R (même dans la deuxième édition) ils utilisent simplement main().
Et surtout, le compilateur m'indique :
[Warning] return type defaults to `int'
OK, c'est un warning, mais cela signifie que si je ne précise pas, main() retourne de toutes façons un int.
Cela dit, cela ne coûte pas grand-chose de le préciser, c'est vrai.
Marsh Posté le 27-06-2004 à 21:25:56
c'est comme ça, le K&R révisé n'est pas le document du WG14, alors y a des petites irrégularités.
je ne vois pas de conditionnel dans "shall" (d'ailleurs quand Kennedy disait "we shall oppose any foe" je crois pas qu'il déconnait)
les compilos sont laxistes. int main() ou int main(int argc, char **argv) __doit__ être la signature de main. c'est un peu bordélique à cause des différentes versions du C. en C++, il n'y a pas ce passif. int main() .|
Marsh Posté le 27-06-2004 à 21:36:55
OK
Concernant shall, c'est le futur de should; or ce dernier n'est que très rarement utilisé dans son sens impératif. Mais là encore, tu as raison et le standard de la langue anglaise fait foi
Marsh Posté le 27-06-2004 à 22:17:56
Taz, tu n'es pas obligé de transformer tous les topics C & C++ en croisade pour le respect strict des normes
Marsh Posté le 27-06-2004 à 22:18:55
antp a écrit : Taz, tu n'es pas obligé de transformer tous les topics C & C++ en croisade pour le respect strict des normes |
Moi je trouve ça intéressant
Marsh Posté le 27-06-2004 à 22:19:45
Ouais mais bon il le répète un peu partout, quand c'est un topic dont le but pour une fois autre chose que "c'est où mon erreur dans ce code ?", il aurait pu s'abstenir
Marsh Posté le 27-06-2004 à 22:21:02
le truc c'est que quand on donne des conseils aux autres, surtout pour leur donner les bases, je trouve pas très amicale de fourvoyer son auditeur dès la première ligne.
edit: cela dit, le code avec les variables a, b, c est vraiment problématique et est un vrai comportement indéfini, je trouve ça regrettable, surtout dans un cours, surtout sur un chapitre qui s'acharne sur la priorité des opérateurs, l'ordre d'évaluation étant quelque chose de connexe. Bref, c'est un mauvais exercice, préjudiciable, qui révèle des lacunes chez notre « enseignant ».
S'il faut donner l'exemple aux autres, il faut déjà vérifier chaque point le mieux possible, et surtout ne pas se montrer trop sur de soi.
Le point sur le int main, d'accord, je fais chier, l'UB, c'est un vrai problème. De ces deux points, je tire ma propre conclusion. Débutants, vous trouverez bien mieux ailleurs ou dans un bon livre
Marsh Posté le 27-06-2004 à 22:23:55
printf a écrit : OK |
http://www.m-w.com/cgi-bin/diction [...] ll&x=0&y=0
2b
Marsh Posté le 27-06-2004 à 22:31:18
Cela dit, c'est vrai aussi que pour apprendre à des enfants, le respect des normes n'est pas primordial dans le sens ou il peut rendre la compréhension plus difficile.
En tous cas je trouve l'initiative de M. Arlen très intéressante.
Marsh Posté le 27-06-2004 à 22:33:51
moi pas d'apprendre à des enfants le C. alors que tu prends un truc comme python, t'as le module turle, là tu as de quoi t'amuser.
et le respect de la norme a du bon. main est une fonction, "main()" ne ressemble à rien, le jour ou le gus il va apprendre les fonctions, il va voir "<retour> nom(<paramètres> )' il va bien biter. Le respect de la norme apporte cohérence et clareté
Marsh Posté le 27-06-2004 à 22:33:52
Très intéressant
ça montre qu'il existe aussi des normes, des standards parfois controversés pour les langues.
Marsh Posté le 27-06-2004 à 22:37:20
Taz a écrit : mais le langage n'est ni plus ni moins qu'une convention |
Certe : mais les ereurs de syntaxe sons moins problematiquees.
Donc on peut se permettre plus de libertés, puisqu'une langue est comprise par des humains et non pas des machines bêtes et méchantes
Marsh Posté le 27-06-2004 à 22:40:07
justement : si tu veux apprendre quelque chose, il faut que ça soit clair, avec peu d'exceptions, logique. Le Français est difficile à apprendre parce qu'il ne suit aucun de ces précepts
Marsh Posté le 27-06-2004 à 22:45:04
Taz a écrit : justement : si tu veux apprendre quelque chose, il faut que ça soit clair, avec peu d'exceptions, logique. Le Français est difficile à apprendre parce qu'il ne suit aucun de ces précepts |
Le Français c'est comme le Perl quoi
Mais je te trouve tout de même assez négatif vis à vis de cette méthode. Si dans le fond, tu as raison, je pense que le but est d'initier des enfants aux grands concepts de la programmation plutôt qu'à la syntaxe d'un langage en particulier.
Marsh Posté le 27-06-2004 à 22:47:26
ben tu leur pourris pas la tête avec l'exercice 5 que tu ne comprends pas toi même. c'est d'aillersu sans intérêt pour des enfants.
alors que jouer avec turtle, faire du concret, ça c'est intéressant
Marsh Posté le 27-06-2004 à 22:51:13
Là je suis d'accord.
turtle ça doit ressembler à du LOGO justement
Sinon y'a un truc qui doit être pas mal pour les enfants (j'y pense à cause du nom), ce sont les Lego Mindstorms (mais ça coûte la peau des fesses, donc c'est pas tip top pour les écoles).
Marsh Posté le 27-06-2004 à 22:56:54
les lego mindstorms avec l'interface graphique (géniale) sinon à programmer en Java, ça vaut pas la peine.
turtle, c'est du logo oui
Code :
|
Marsh Posté le 28-06-2004 à 12:27:01
Bonjour Taz,
vous avez ecris:
le problème étant principalement l'ordre d'évaluation indéterminé entre la rvalue et la lvalue
Si l'ordre d'évaluation etait indéterminé on ne pourrait jamais résoudre l'exercise.
Marsh Posté le 27-06-2004 à 13:25:48
Cette Méthode animée d'apprentissage est vraiment unique et révolutionnaire. Elle permet dapprendre la programmation en C++ même aux petits enfants.
Voici le teste que les enfants ordinaires savent résoudre après 5 heures du cours de Sam Arlen:
www.users.skynet.be/fa519799/fr1/Testfr.html
Je me demande sil y a un adult que peut passer ce teste.
A propos : après 40 heures les élèves de Sam Arlen sont capables de passer facilement lexamen à linstitut supérieur traditionnel.
Maintenant ce cours extraordinaire est disponible pour tous gratuitement en ligne
www.users.skynet.be/fa519799/
Les amis !
Excusez-moi pour des fautes éventuels en français mais je ne suis pas un francophone. Dans ce cadre japprécierais vraiment votre aide en correction.
En tout cas jespère que ma méthode peut être vraiment utile à beaucoup des gens qui ont des problèmes en apprentissage avec des méthodes traditionnels. Je propose le teste à votre jugement simplement pour montrer quil ne sagit pas de programmation pour des enfants. Si ce teste est difficile à vous ça vaut la peine de télécharger mon cours.
Après 1-2 heures des études vous verrez que ce teste est très facile.