Bonjour,
J'ai cr�e un cours de C/C++ avec beaucoup d'exemples, des exercices, des QCMS... destin� aux d�butants et sans pub !.
http://nte-serveur.univ-lyon1.fr/merrheim
Quen pensez-vous ?
merci
Version imprimable
Bonjour,
J'ai cr�e un cours de C/C++ avec beaucoup d'exemples, des exercices, des QCMS... destin� aux d�butants et sans pub !.
http://nte-serveur.univ-lyon1.fr/merrheim
Quen pensez-vous ?
merci
Bonjour
J'ai pris au hasard dans le premier cours (bases du C++) les chapitres 3 et 5, sur les tableaux et les chaines de caract�res :
On remarque que c'est du C, pas du C++ o� il est conseill� d'utiliser std::vector et std::string !Code:
1
2
3
4 int * pInt = new int[10]; char tt[20]; ...
Cela dit, le style est clair, la pr�sentation sobre. J'aime bien ! :) :bravo:
Les execices et QCMs sont tr�s pratiques.
Seul b�mol � mon avis : ne pas encourager d�s le d�part sur l'utilisation de la stl.
:koi: :marteau: :furieux: :scarymov:Citation:
Envoy� par mabu
:bravo: pour la pr�sentation, le pas de pub et en plus c'est fran�ais: je n'est pas eu le temps de lire mais c'est un (tr�s) bon d�but!Citation:
Envoy� par merrheim
C/C++, �a n'existe pas ! C et C++ sont des langages diff�rents.Citation:
Envoy� par merrheim
Visiblement, il s'agit d'un cours de C++. Le bon forum est "C++".
merci pour vos remarques.
juste quelque points :
1) je pense qu'il est difficile de commencer par apprendre le C++ sans commencer par apprendre le C (c'est un sujet de pol�mique r�current mais c'est le choix que j'ai fait. J'ai aussi 1500 heures de cours d'exp�rience avec des d�butants en C/C++)
la logique du cours est
on �tudie les types de base
on �tudie les structures
on regroupe des structures et des fonctions dans des modules
on passe ensuite naturellement des structures aux classes
Dans le module qui suit "notions avanc�es en C++" : on introduira les classes, les string,la STL, la virtualit�...etc... Il est en cours de r�daction
2) les cha�nes de caract�res sont �tudi�es � la C car je pense qu'il est bon pour des d�butants de "mettre les mains dans le camboui" pour voir comment �a marche. Ensuite, on parle de string et on dit : "toutes les difficult�s des cha�nes de caract�res sont masqu�es � l'utilisateur dans les string d'o� l'int�r�t de l'encapsulation"
3) M�mes arguemnts pour la STL : si on parle de vector et de template d�s le chapitre 3, les �tudiants vont perdre pied car apr�s si peu d'heures de cours j'estime qu'il faut y aller doucement. Imaginez bien qu'un bachelier lambda sur 2 sait � peine �crire un for lorsque je commence le chapitre 3 !
4) Ce cours est un cours de C/C++ car je pense qu'il faut �tudier les 2 langages : d'abord le C ensuite le C++ en disant que l'approche orient�e objet est pr�f�rable que l'approche proc�durale. Le principal argument est que pour faire un appel syst�me sous unix ou sous windows il faut conna�tre le C.
merci
Je suis �ventuellement d'accord, mais il ne faut absolument pas m�langer les deux langages, et bannir l'expression 'C/C++' qui est extr�mement confusante.Citation:
Envoy� par merrheim
D�j� des diff�rences de syntaxe entre C et C++...Citation:
la logique du cours est
on �tudie les types de base
on �tudie les structures
Encore une fois, le C/C++, �a n'existe pas. A mon avis cette approche 'combin�e' n'est pas bonne (en tout cas, ce n'est pas celle qui est recommand�e par les professionels, lire les discussions sur clc et clc++).Citation:
on regroupe des structures et des fonctions dans des modules
on passe ensuite naturellement des structures aux classes
Dans le module qui suit "notions avanc�es en C++" : on introduira les classes, les string,la STL, la virtualit�...etc... Il est en cours de r�daction
2) les cha�nes de caract�res sont �tudi�es � la C car je pense qu'il est bon pour des d�butants de "mettre les mains dans le camboui" pour voir comment �a marche. Ensuite, on parle de string et on dit : "toutes les difficult�s des cha�nes de caract�res sont masqu�es � l'utilisateur dans les string d'o� l'int�r�t de l'encapsulation"
3) M�mes arguemnts pour la STL : si on parle de vector et de template d�s le chapitre 3, les �tudiants vont perdre pied car apr�s si peu d'heures de cours j'estime qu'il faut y aller doucement. Imaginez bien qu'un bachelier lambda sur 2 sait � peine �crire un for lorsque je commence le chapitre 3 !
4) Ce cours est un cours de C/C++ car je pense qu'il faut �tudier les 2 langages : d'abord le C ensuite le C++ en disant que l'approche orient�e objet est pr�f�rable que l'approche proc�durale. Le principal argument est que pour faire un appel syst�me sous unix ou sous windows il faut conna�tre le C.
L'int�r�t du C++ est justement d'apporter une couche d'abstraction qui rend caduc et inutile les d�tails scabreux du langage C.
D'autres part, il y a de v�ritables diff�rences de syntaxe et de s�mantique qui rend la combinaison des deux langages dangereuse. Le C++ n'est en aucun cas une surcouche du C.
Parler de malloc() en C++ est une absurdit� lorsqu'il existe new. Ne pas s'�tonner si les �l�ves font un malloc() suivit d'un delete...
C'est du C++ donc je d�place.
http://nte-serveur.univ-lyon1.fr/merrheim/BASESCPP/outils/VC6/image7.html
http://c.developpez.com/faq/cpp/?pag...le#SL_iostream
c'est bizarre cette attitude dogmatique !
1) Parler de malloc est indispensable � la compr�hension des concepts du langage ! Dire que c'est une "absurdit�" est une attitude incorrecte ! En effet je pense qu'il est fondamental qu'un �tudiant sache que lorsqu'on fait un new, il y a en premier lieu une interaction avec le syst�me d'exploitation (avec un appel de fonctions type malloc ) et en second lieu beaucoup d'autres choses me semble capital.
En fait j'estime qu'on ne peut pas parler des concepts de haut niveau des langages de programmation sans faire comprendre aux �tudiants "comment �a marche". R�pondre � la simple question "comment on utilise" serait une grave erreur.
2) Dire qu'il y a une mani�re de faire "recommand�e par les professionnels" est r�ducteur : j'ai encadr� beaucoup de stages (o� il y avait des professionnels) o� la connaissance des 2 langages �taient n�cessaire ! On peut toujours dure que ces professionnels �taient nuls mais il ne faut pas juger si vite !
Dire que les apports du C++ "rend caduc et inutile les d�tails scabreux du langage C. " C'est "oublier" que le C existe encore, est utilis� par les professionnels et que nos �tudiants ont int�r�t � conna�tre ces 2 langages.
On mettra bien s�r l'accent sur les comcepts compliqu�s du C++ mais sans oublier l'aspect proc�dural.
Au fait linux et windows sont �crits en C avec des surcouches C++ ! Cela doit �tre �crit par de mauvais programmeur !
3) les remarques comme "Ne pas s'�tonner si les �l�ves font un malloc() suivit d'un delete..." sont compl�tement d�plac�es ! Personnellement aucun de mes �tudiants n'a jamais confondu ! Je dis juste dans mon cours que le malloc existe et qu'il est pr�f�rable d'utiliser un new !
Dans ce cas, il faut aussi expliquer le fonctionnement de malloc puis du gestionnaire de m�moire puis des OS et enfin du hardware :scarymov:Citation:
Envoy� par merrheim
Sans rire, expliquer que new r�serve de l'espace m�moire, oui mais je ne pense pas qu'un parall�le avec malloc soit indispensable pour comprendre et comme le fait remarquer Emmanuel cela peut entrainer une confusion dans leurs l'utilisations.
"il faut aussi expliquer le fonctionnement de malloc puis du gestionnaire de m�moire puis des OS" Je suis parfaitement d'accord c'est pourquoi un bon cours de systeme d'exploitation et un autre d'architecture des ordinateurs est important dans une formation informatique.
Toujours le m�me soucis : expliquez (en simplifiant) comment �a marche et expliquez en insistant sur "comment on utilise".
salut,
je ne vois pas le besoin d'expliquer � balle les concepts d'allocation pour apprendre le C++ (ou alors faut faire un cours d'assembleur/C/C++, sans s'�tonner que l'�tudiant fasse du JMP ou du MOV dans son prog C++). ou en tout cas si on le fait (ok, c'est bien de comprendre les m�canismes), ce n'est pas pour autant qu'on doit faire l'amalgame entre C et C++.
le 1er est un langage proc�dural, le 2� un langage orient� objet. ce qui est ennuyeux, c'est que le C++ ait �t� con�u en englobant le C. r�sultat dans la t�te de beaucoup C++ = C objet, et les 2 langages sont pr�sent�s comme p�re (C) et fils (C++), alors que je les verrais plus comme des cousins par alliance :lol:.
sinon pour r�sumer je dirais que si on veut apprendre les 2, ou si on veut apprendre le C++ en commen�ant par un cours ou tutoriel sur apprendre le langage C, il faut 2 cours bien distincts et au d�but du cours de C++ bien dire que ce n'est pas du C, montrer les diff�rence et les concepts objet, et montrer �galement tout ce qui est obsol�te/d�conseill�/� bannir issu du C lorsqu'on fait du C++.
http://arb.developpez.com/smileys/houlala.gif
piou!! je parle trop moi :roll:
:D sinon pour la pens�e positive, je trouve le cours pas mal pour d�buter (je n'ai pas tout regard�). mais perso j'aime pas trop la mise en page (fonte trop grande) et la navigation.
:twisted: hihi, j'ai trouv� une erreur de syntaxe dans le code (cf. Le type char)
au lieu deCitation:
if(c>='A && c<='Z)
http://arb.developpez.com/smileys/panpanculcul.gifCode:if(c>='A' && c<='Z')
Ne vous inqui�tez pas, les �tudiants ne confondent pas l'assembleur et le C++ !
Bien s�r il faut bien faire comprendre les diff�rences entre le C et C++ : les contraintes apparentes du C++ doivent appara�tre comme un plus par rapport au langage C. On peut faire cela de mani�re "continue" en montrant point par point les insuffisances du C et en montrant comment le C++ apporte une solution �l�gante � ces insuffisances et � chaque �tape on "interdit" � l'�tudiant d'utiliser ce qui devient "obsol�te".
On passe alors d'une mani�re tr�s souple du C au C++ !
Les cha�nes de caract�res me semble �tre un exemple int�ressant :
Il y a 2 mani�res d'aborder le probl�me :
- on utilise des strings et on explique aux �tudiants comment on les utilisent. C'est une possibilit� mais les �tudiants ne per�oivent pas toute la difficult� d'�crire une classe comme string (allocation de la m�moire et autre) : on leur fait croire que c'est simple alors qu'il y a une r�elle difficult� qu'ils ne percevront pas.
- Autre approche possible : on utilise des tableaux de char et des char *.
On voit vite la n�cessit� d'utiliser les fonction de string.h et on s'aper�oit vite qu'un probl�me apparait avec l'allocation de la m�moire au niveau de la fusion de 2 cha�nes par exemple. Finalement on leur montre que le C++ a encapsul� les difficult�s dans une classe appel�e string et il n'ont plus envie d'utiliser des char *. Au passage ils on vraiment compris l'avantage d'"encapsuler les difficult�s". De plus si une biblioth�que quelconque les obligent � manipuler des char *, ils sauront � quoi ils ont affaire et sauront vite les transformer en string !
PS : au fait pour l'assembleur on montre succinctement aux �tudiants comment on passe de l'assembleur au C dans un cours d'architecture des ordinateurs. On montre par exemple comment on �crit des fonctions simples en assembleurs et on les convainct rapidement de la n�cessit� d'abandonner l'assembleur !
C'est parti et dans le d�sordre.
-> J'ai donn� le lien hier et le revoici -> http://www.research.att.com/~bs/bs_f...l#prerequisite. Je t'encourage tr�s vivement � lire ce pdf. Il y en d'autres dans le genre, mais celui-ci est probablement un des plus "d�taill�s".
Le truc est qu'apprendre aux �l�ves � �crire du code simple mais faux, alors que l'on peut leur apprendre du code encore plus simple mais juste, est un choix pour le moins discutable.
Les exp�riences & t�moignages de profs qui justement enseignent le C++ comme un langage de haut niveau (et non pas comme un C avec classes) indiquent que les �l�ves se font tr�s bien au sens logique (et non historique). Sujet r�current, comme le signalait Emmanuel, sur news:fr.comp.lang.c++, le "troll" vient d'ailleurs de ressortir il y a deux jours.
On n'a jamais eu besoin d'enseigner les pointeurs ou comment sont mis en oeuvre les tableaux variants de l'Ada avant de pouvoir les utiliser. De la m�me fa�on, pas besoin de savoir concevoir une classe template pour l'utiliser. Je ne peux que te conseiller de te procurer Accelerated C++ de Koenig et Moe, et le bouquin de Francis Glassborrow, et de les m�diter.
Des cours de C avec classes, il y en a des tas. Il y a en revanche un vrai cr�neau pour les cours de C++ en fran�ais.
_______
Ensuite, c�t� pr�sentation ta page oblige � scroller verticalement. Je fais parti de ces gens qui ont un volet avec les bookmarks qui r�duit toujours la fen�tre de navigation. Autant dire que ta contrainte de surfer en 1024x768 est anti-ergonomique. La navigation avec le petit truc en haut n'est pas terrible non plus.
Les images se lissent (oui, avec deux "s") mal. Et si tu veux vraiment garder cette utilisation d'images (on fait de super trucs avec (La)TeX ...), rajoute les boutons de navigation en bas -- mon index a souffert deux fois plus que n�cessaire sur la molette.
L'utilisation d'une police monotype (je crois que l'on dit) est ce qui ce fait g�n�ralement pour le code, donc les mots cl� et autres symb�les d'un programme.
Une justification parfois excessive -> page 51 du chapitre 2.
Pour le mode texte, utilise les balises <pre>.
Ton indentation va donner de mauvaises habitudes.
______
Le premier C with classes de Bjarne Stroustrup date du d�but des ann�es 80.
Le code n'est absolument pas standard ! <iostream.h> est d�pr�ci� depuis ... 98. Voir le point de FAQ signal� par Aur�lien.
Il est conseill� en C++ de ne pas d�clarer une variable avant d'en avoir besoin. C'est discut� sur GOTW, ou la FAQ C++ lite je crois, je te laisse consulter tout cela.
Les castings � la C ne sont pas conseill�s non plus.
Dans le slide du "while", tu parles de "la s�mantique du do...while"
ASCII, ce n'est pas 8, mais 7 bits.
Pour la transformation maj-min et ce genre de choses, je pr�ciserai qu'en vrai il existe des m�thodes plus justes qui tiennent compte des caract�res hors ASCII, et propres � la locale courante (� dire autrement � des d�butants)
Ch3, p4 -> :s/op�rationss/op�rations/
p11 -> :s/CONSTANT/CONSTANTE/
C99 supporte const, non ?
____
chaines
ex2 -> bonjour buffer-overflow et autres injection de code
Les fonctions C de manipulation de char* sont dans <cstring> en C++98.
Manipuler ces fonctions n'a p�dagogiquement pas grand int�r�t. std::string a une s�mantique de valeur, il faut en profiter.
(Si avec VC++6 tu n'arrivais pas � t'en servir (de std::string) avec les flux, c'est parce que std::string est compatible avec les flux standard (sans .h) et non avec les flux classiques (avec .h) que VC7.1 ne connait plus).
conclusion -> "Nous avons �tudi� comment les cha�nes de caract�res �taient repr�sent�es en C++." Non, en C!
____
Gestion des fichiers C....
Choisi quel langage tu veux enseigner, mais ne les m�lange pas. Apr�s les gars, il faut passer d�rri�re.
______________________
Le C++ n'est pas enti�rement compatible avec le C. Pas de VLA en C++ p.ex., pas la m�me signification pour "void f()", ...
En C++, on parle de "fonction membre". "m�thode" est un terme emprunt� � d'autres langages/technologie et semble venir du Smalltalk. Certaines personnes comprennent, en C++, "fonction membre virtuelle" quand on parle de "m�thode". Autant �carter l'ambiguit� en ce tenant au vocabulaire du C++.
Visiblement tout le monde n'a pas la m�me approche -> en ce qui me concerne, ce n'est pas l'encapsulation, mais l'abstraction qui est importante. L'encapsulation n'est que le moyen pour mettre en oeuvre l'abstraction.
Attention avec accesseurs et mutateurs, suivant comment on les pr�sente, on pourrait croire qu'ils sont n�cessaires et � syst�matiser. Proc�der de la sorte (syst�matisation sans autre r�flexion) est signe d'un mauvais design en ce qui me concerne. C'est trait� dans la FAQ de developpez.
C'est quoi �a " void operator>>(ostream &out);" ???? :scarymov:
Il y a des choses plus importantes � montrer que cette �criture que tu dois �tre le seul � utiliser. Qui plus est, il n'est pas besoin de d�finir amis les op�rateurs d'injection (gr�ce aux accesseurs) et les op�rateurs d'extraction gr�ce aux constructeurs (bon moyen d'ailleurs pour avoir une lecture atomique).
Code:
1
2
3
4
5
6
7
8 // extracteur simplifié, atomique, et avec 0 amitié std::istream & operator>>(std::istream & is, Point p) { int x, y; if (is >> x >> y) p = Point(x, y); // on utiliserait swap avec des types plus conséquents return is; }
(p57) "Point::Point(double x, double y) : x(x),y(y) { }" hum ....
_________
Les posts arriv�s pendant que je lisais/tapais/...
C++/CLI va �tre le langage des API des prochains windows. Ouste le C qui va disparaitre petit � petit.
Si tu veux leur dire comment cela �a passe en m�moire, pourquoi ne pas leur montrer par la m�me occasion comment on remplace le gestionnaire du free store ? :-/
Merci pour les erreurs de syntaxe, il en reste malheureusement (et c'est toujours trop". C'est pour cela que je fournis tous les exemples du cours en t�l�chargements et avec les projets visual C++ et dev C++.
Si au d�but C++ se voulait �tre un meilleur C, maintenant c'est un langage � part. On a bien 2 langages diff�rents, vraiment diff�rents. Il faut choisir : soit on fait du C, soit du C++, mais pas du C/C++. Vous �tes enseigant d'apr�s ce que j'ai compris, et vous devez bien mieux savoir que nous la mani�re dont il faut enseigner les choses. Mais ici on voit passer beaucoup de d�butants, �tudiants ou non, qui m�langent C et C++ ce qui leur vaut diff�rents probl�mes. Selon moi, il vaudrait mieux enseigner C++ comme on enseignerait Java. Quand on parle de new en Java on ne parle pas de malloc. Car malloc c'est du C alors que l� on parle de Java. Ben pour C++ c'est pareil. Dire que new appelle malloc est de plus infond�, � mon avis. Une impl�mentation de new pourrait tr�s bien se passer de malloc et appeler une autre primitive de l'OS sous jacent comme HeapAlloc sous Windows.
Enseigner le C/C++ revient � faire programmer en C au moyen de C++, c'est � dire � utiliser C++ comme un C enrichi. Or c'est bien plus que cela, et c'est passer � c�t� de C++. Personnelement, je pense que les heures d'enseignement de la programmation sont bien trop rares pour les "gaspiller" � faire manipuler les char * en C++ par exemple, au lieu d'�tudier et de donner le r�flexe std::string et STL.
Avis totalement personnel : les char * devraient �tre enseign�s en dernier, afin que le programmeur d�couvre leur danger et la raison de les �viter en se cassant les dents dessus apr�s avoir utilis� sans probl�me std::string un certain temps. Car dans l'autre sens, la d�sintoxication char * est tr�s dure, surtout quand on est �tudiant et que les programmes que l'on a fait n'ex�dent pas quelques centaines de lignes, auquel cas on mesure mal les probl�mes soulev�s par l'utilisations de multiples pointeurs.
Je salue votre initiative de venir sur un forum, acte trop rare selon moi de la part des enseignants en informatique. A ce sujet je me permet de vous sugg�rer quelques id�es de TP que l'ancien �tudiant que je suis aurait aim� faire:
- 1� partie: chaque �tudiant, tout seul, doit faire un programme pas trop dur, tel que trier une liste de mots contenus dans un fichier. les programmes sont remis au professeur. Si pas fini => expiration du d�lais, comme en entreprise, �a se paye en heures sup.
- 2� partie : on m�lange les programmes, chaque �tudiant doit poursuivre le travail d'un autre tir� au hasard. Ajouter une fonctionnalit� simple telle que trier par ordre croissant ou d�croissant. Avant de m�langer les programmes, faire estimer par chaque �tudiant le temps que cela va demander de modifier son programme. Ensuite comparer l'estimation de auteur avec le temps pass� par le modifieur...
- Final: donner la solution C++ qui tient en quelques lignes et prend 10 minutes � coder / tester. => faire prendre conscience de ce qu'est C++, de ne pas r�inventer la roue / partir sur une usine � gaz, etc...
Remarques globales sur C++ de base.
Avant de parler de la pratique, plongez vous un peu dans la notion OBJET ! Au pire, faites un renvoi vers le cours sur le C pour les types, fonctions, tableaux et autres...
Vous ne parlez pas de passage par reference dans le chapitre sur les fonctions, d'ailleurs rien non plus sur passage par pointeurs.
Globalement je presenterai le cours de la maniere suivante :
1. Objet
2. Types de base & operateurs
3. Switch, for, while, if & co
4. Pointeurs & references
5. Allocation de la memoire (new)
6. Fonctions
7. Tableaux statiques & dynamiques
8. Classes
9. Surcharge
10. Heritage
11. Polymorphisme
12. Interfaces
13. Bibliotheques
Remarques precises sur le Cours C++ base :
Chapitre 1 / Slide 2 : mauvais francais.
Chapitre 1 / Slide 8 : faute : Il faut bien maitriser et non maitris�
Chapitre 1 / Slide 10 : faute : un certain nombre, sans s
Chapitre 1 / Slide 12 : faute : une fonction appel�e
Chapitre 2 / Slide 19 : parler de l'operateur +=, i+=2
Chapitre 2 / Slide 32 : for a une utilisation plus large, notament pour toute boucle necessitant une initialisation, une condition et une expression � executer � chaque iteration. exemple : for(j= 0, b= c->GetFirst(); j< 10; j++, b = c->GetNext();
Chapitre 2 / Slide 56 : non un char est un entier 8 bits qui peut prendre 256 valeurs
Chapitre 4 : Avant de parler de tableaux, parlez des pointeurs et de l'allocation de la m�moire.
Chapitre 5 : Il est fortement deconseill�, en c++, d'utiliser le char* pour la representation des chaines de caracteres. std::string est fortement conseill�e.
Chapitre 7 : Ne faites pas peur aux etudiants avec les pointeurs, c'est la base de tout le langage C/C++. Il est essentiel d'instaurer un climat de confiance dans l'utilisation des pointeurs.
Aie ne pas vouloir aller trop vite !
Prendre un public de bachelier et leur parler de STL au troisi�me cours cela se fait mais "passe mal" avec des �tudiants d�butants. Il faut bien voir que pour eux, ils ne connaissent que word un mois avant ! Je connais des cours de C++ o� en 20 h on a vu tous les concepts du pur C++ normalis� et o� effectivement on parle d'h�ritage et de virtualit� au dixi�me transparents. Il m'est arriv� de passer derri�re : on pose un probl�me �l�mentaire et les �tudiants ne savent rien faire. Vous, vous les voyez jamais ces �tudiants car ils se plantent dans leur �tudes. Regardez le taux d'�chec dans l'ex DEUG ! On est allez trop vite et on n'a pas compris qu'il faut commencer par des choses simples.
Je prends acte de votre point de vue qu'apprendre de C est inutile et qu'on perd son temps ! C'est possible par contre je connais des enseignants qui on essay� de commencer par le C++ avec un public 18-20 ans : beaucoup d'�checs et j'en connais des tonnes qui sont revenu en arri�re. Je connais aussi beaucoup de cours de C++ si ambitieux qu'� la fin 7 �tudiants sur 10 n'ont rien compris ! Il ne faut pas conclure trop vite et je respecte votre point de vue. Faites aussi attention que "casser du prof" est facile et que je passe moins de temps que beaucoup d'entre vous (les �toil�s) � programmer !
Savoir manipuler les cha�nes sous forme de char * permet d'approfondir l'algorithmique : comment transformer une cha�ne en un entier par exemple ? L'algo est simple mais les �tudiants gal�rent pour le trouver.
Si cet �tudiant n'a jamais fait cet exercice pensez vous qu'il sera bon en algo ? L'algo est peut �tre inutile ? Je suis d'accord il y des fonctions qui font �a tout seul mais il faut aussi bien voir que les exercices "inutiles" o� on "gaspille" du temps forme leur esprit au raisonnement algorithmique. Si on leur donne des recettes toute faites ils seront nuls en algo � la fin. D�s qu'une fonction ne sera pas disponible dans leur biblioth�que de fonctions, ils seront perdus. Vous les embaucheriez comme programmeurs !
Je pense qu'il faut faire attention � une chose : on pense souvent de l'ext�rieur et quand on a 10 ans de C++ derri�re soi que la programmation c'est simple � apprendre mais non c'est compliqu� ! On ne peut pas tout traiter : il faut commencer par des choses �l�mentaires.
Deux �coles effetivement sont possibles :
1) on commence par les choses avec tous les concepts bien comme il faut
et petit � petit on explique comment �a marche.
2) On commence par les choses simples ( ce que vous appelez usine � gaz), on explique les insufissances et on montre un nouveau concept qui va combler ces insuffisances.
Pour moi, il n'y pas photo : l'approche 2 est pr�f�rable pour la majorit�
l'approche 1 est �litiste !
PS : j'ai �t� form� par l'approche ultra �litiste (pas en programmation mais en math�matiques)- j'ai vite compris les insuffisances pour la majorit� de cette approche.
merci mtopoloff pour le plan.
C'est une possibilit�. Par contre la difficult� que je vois, c'est qu'on a pas de tableaux avant le chapitre 7 : comment faire des exercices concrets dans un tel cas ? C'est � �tudier....
merci