
Envoyé par
Thierry Chappuis
[...]Tu as dit que, avant d'utiliser des outils tels que le type std::string, le cours utilisait les tableaux. J'ai du mal à envisager comment se passer des pointeurs en travaillant avec des tableaux, à moins de ne pas utiliser de fonctions (ce qui me semble une approche étrange).
---Thierry
On ne déclare que des tableaux statiques
int un_tableau [TAILLE_MAX] ;
Certes il y a le passage des tableaux en paramètre ! Ceci est d'ailleurs fort stressant pour les étudiantEs. Dans un premier temps, on ne passe pas de tableaux, dans un deuxième, après avoir vu les paramètres de sorties (avec l'utilisation de &) on leur explique que les tableaux sont particuliers car ils se passent toujours par référence. Les tableaux ont donc une syntaxe particulière pour le passage en paramètre
int fonction (const int tableau_en_entree [], int tableau_en_sortie[])
On voit donc le passage par référence, on leur indique qu'il y a une notion de pointeurs là dessous, mais que pour l'instant il n'est pas question de les manipuler à la main. J'introduis à cet endroit un modèle de calcul avec des dessins pour les aider, et c'est vrai que rigoureusement parlant il y a des pointeurs. Mais on peut très bien faire le cours sans prononcer une seule fois « pointeur » ou un mot qui voudrait dire la même chose. On s'en sort donc très bien. Ça provoque des limitations puisque les tableaux doivent toujours être bornés. Mais ce n'est pas un problème dans un premier cours. En fait, avec une bonne modularité, on peut faire du traitement dans des fonctions qui définissent eux-même la taille de leurs tableaux à l'aide d'un paramètre. On a l'impression de tableaux dynamique tout en restant dans une approche purement procédurale et sans pointeur.
1 2 3 4 5
| int fonction (int taille_maximale, ...)
{
string tableau [taille_maximale];
etc...
} |
On aurait la même chose en C. D'ailleurs en fait, on fait du C, ne serait-ce l'utilisation des stream et de string. Mais ceux-ci ne rentre pas dans le « moule » du procédurale. Et parfois je regrette de ne pas plutôt leurs présenter des fonctions comme printf ou scanf.
Pour ton cours de simulation, une très bonne alternative reste ocaml:
voir ce livre sur le site de Flying Frog Consultancy. Tu dis que ce ne sont pas des pros, mais était-ce leur premier cours ? Car en dehors du premier cours, je crois que Python est un excellent langage d'apprentissage.
Partager