Malheureusement, j'avais eu droit à la même chose à l'époque à la fac. Mais on est passé à fgets deux mois plus tard.Envoyé par Emmanuel Delahaye
Malheureusement, j'avais eu droit à la même chose à l'époque à la fac. Mais on est passé à fgets deux mois plus tard.Envoyé par Emmanuel Delahaye
Ouais bon ok c`est assez imprevisible quoi je comprends il vaut mieux eviter ...Envoyé par mujigka
P.S. de rien brouette ce fut un plaisir et bonne continuation
tu sais c est pas un cas isolé je suis en IUT d info et on nous a aussi appris avec le scanf.D ailleur ils nous ont pas donné d autre alternative pour les saisi(les fonction strtol et autre je les ai decouvert sur ce forum).Envoyé par Emmanuel Delahaye
Je connais des gens qui sont dans d autres école d'info je ferai un petit sondage pour savoir comment ils l ont appris eux
scanf pour nous aussi mais je crois qu`emmanuel veut revolutionner le systemeEnvoyé par sneb5757
Moi, je dois avoir de la chance, car j'ai pas fait info mais ingénieurie chimique et autant que je me souvienne des cours d'intro au langage C, on nous a tout de suite prévenu des dangers liés à scanf et incité à utiliser des alternatives.
Cela dépend pas mal du mal de l'expérience du prof., en fait.
Thierry
Intéressant...Envoyé par ~Brouette~
Je le sais bien. N'empêche, il va falloir que ça change. Commencer par relire le K&R, par exemple.Envoyé par sneb5757
Sinon, dans un cours de C (je travaille là-dessus actuellement), on peut faire beaucoup de choses (syntaxe, données, expression, opérateurs, données structurées, structures de code, fonctions, et même mémoire dynamique) avant d'aborder le chapitre fonctions de la bibliothèque, E/S...
Actuellement, je travaille sur ce plan de cours :
- Présentation
- "Hello world"
- Outils de développement
- Ligne de commande (gcc)
- IDE (Code::Blocks)
- Syntaxe
- Identificateurs
- Instructions
- Blocks
- Constantes, préprocesseur
- Variables numériques, types
- Opérateurs, expressions
- Tableaux
- Chaines de caractères
- Pointeurs
- Structures de code
- Conditionnelles (if if-else, if-else-if, switch-case)
- Répétitives (do-while, while, for)
- Structure de données
- Fonctions
- Généralités
- retour
- paramètres
- portée
- compilation séparée
- bibliothèque standard
- faire sa bibliothèque
- Entrée/Sortie
- Gestion dynamique de la mémoire
Commentaires bienvenus. Je n'ai aucune idée de ce que ça peut représenter en nombre d'heures...
Absolument. Et puis la Suisse, c'est pas la France... Misère...Envoyé par mujigka
Ca me semble excellent. Dans l'ouvrage de K&R2, les entrées-sorties sont également abordées tout à la fin. Avant cela, le lecteur se constuit ses propres fonctions E/S avec getchar() et putchar(), un peu comme sur ton site d'ailleurs. Je pense que c'est une bonne façon de procéder. De quelle durée disposes-tu pour ton cours? Faire sa bibliothèque avant d'aborder la bibliothèque standard serait peut-être même une bonne idée, non?Envoyé par Emmanuel Delahaye
Thierry
Ben oui, c'est le bon sens... Evidemment, c'est trop simple pour nos universitaires français qui préfère démarrer à fond avec scanf() et faire écrire du code bancal qui explose dès qu'un singe s'approche du clavier.Envoyé par mujigka
Y'a des trucs comme ça qui m'énervent... Et comme ils se recopient tous les uns les autres sans jamais se remettre en cause, ça ne risque pas de changer de si-tôt...
Bref, vive l'Initiative Privée...
Justement, c'est à moi de l'estimer. C'est moi le chef !De quelle durée disposes-tu pour ton cours?
Je dirais 4 à 12 semaines (1 semaine = 5 x 8h) selon les modules (on peut ignorer ou raccourcir certains chapitres selon le public).
Bah, problème de poule et d'oeuf... Pour construire des I/O, il faut au moins fgetc()...Faire sa bibliothèque avant d'aborder la bibliothèque standard serait peut-être même une bonne idée, non?
C'est quoi l'exercice au juste ?
Est ce qu'il faut trouver la valeur maximal et minimal entre deux nombres saisis ou quoi ?
Expliquez moi stp !!!
Non, ce n'est pas un exercice, juste un code contenant une erreur (voire plusieurs ).Envoyé par cristiano7
Apparemment, l'objectif du code était de saisir deux nombres flottants et d'afficher un message différent selon que le premier était supérieur ou inférieur au deuxième.
Donc c'est bien ce que j'ai dis non ?
Le max et le min ?
Je suis encore un debutant mais j'aimerai bien aider un peu si je peux
Le problème est que le choix des langages enseignés est souvent une décision politique qui n'est pas prise par les gens qui enseignent. Le cours sur le langage C fait partie des cours fondamentaux et le prof. désigné pour le donner n'est malheureusment pas toujours un expert et se retrouve souvent là sans trop l'avoir voulu.Envoyé par Emmanuel Delahaye
S'il n'y a que fgetc à introduire avant même d'avoir introduit la bibliothèque standard dans sa globalité, je ne crois pas que c'est un problème.Envoyé par Emmanuel Delahaye
Thierry
J'ai déjà cédé sur printf() !Envoyé par mujigka
Bon, je vais voir. Merci.
Sans Initiative Publique, tu serais sans doute encore assis devant une machine à écrireEnvoyé par Emmanuel Delahaye
Plus sérieusement, à propos de ton plan de cours, voici mon humble avis:
- Le Hello World en 2 est intéressant. C'est assez incroyable le nombre de concepts fondamentaux (et complexes) qui sont introduits par ce simple code (fichiers en-tete, appel de fonction, fonctions à nombre d'arguments variables (si tu utilises printf()), retour de main...)
- Le préprocesseur arrive trop tôt, je trouve, et le contrôle de flux (boucles, conditions) arrive trop tard. Les fonctions pourraient être abordées plus tôt (c'est un peu lié au flux de logique du programme, finalement), ce qui permettrait d'enrichir la section Tableau en apportant une transition naturelle vers les pointeurs.
- Il me paraît utile d'aborder les arguments de main() quelque part avant la fin de ce cours. Peut-être pensais-tu le faire en 13? Egalement, les nombres pseudo-aléatoires et la gestion du temps peuvent être abordés (mais c'est sûrement inclus dans ton 13, de nouveau).
Je suis un peu surpris de voir les structures de données dans un cours qui ressemble pas mal à de l'initiation. C'est déjà du C "avancé" (pour peu que cela veuille dire quelque chose), que je mettrais dans une deuxième partie, avec les pointeurs de pointeurs, pointeurs de fonction, opérateurs bitwise, casting et promotions, pré-processeur avancé (xmacros), et fonctions à liste d'argument variable (j'en oublie).
Voilà, c'était my two cents.
Hé héEnvoyé par DaZumba
http://emmanuel-delahaye.developpez.com/init_c.htm
L'étude détaillée d'un "hello world" constitue une initiation au C assez complète.
Difficile de parler de #include ou des des expressions constantes dans aborder le préprocesseur. Mais je vais pondérer. Le PP, en entier, c'est un gros morceau et ce n'est pas utile au début. D'une façon générale, je vais revoir ce plan pour qu'il soit plus modulaire, avec une partie centrale d'initiation solide et des sections 'avancées' optionnelles.- Le préprocesseur arrive trop tôt, je trouve,
J'y ai longuement réfléchi. L'idée, c'est de laisser le cours d'algorithmique démarrer en parallèle (hé hé, je dévoile mes petits secrets...) et d'essayer de synchroniser les deux cours.et le contrôle de flux (boucles, conditions) arrive trop tard.
De plus, tout ce qui a été vu avant est 'linéaire' et ne nécessite pas de structure de codes (à part les blocs éventuellement).
donc la suite logique des structures de code.Les fonctions pourraient être abordées plus tôt (c'est un peu lié au flux de logique du programme, finalement),
Je ne vois pas le rapport entre les tableaux et les fonctions. (de plus, leurs relations sont plutôt conflictuelles, et pour les expliquer, il savoir ce que sont un tableau, un pointeur et une fonction avec des paramètres. C'est un gros morceau qui nécessite 3 pré-requis...)ce qui permettrait d'enrichir la section Tableau en apportant une transition naturelle vers les pointeurs.
C'est prévu dès l'introduction des fonctions et des paramètres. Il fallait que la notion de pointeur et de tableau soit claire...- Il me paraît utile d'aborder les arguments de main() quelque part avant la fin de ce cours. Peut-être pensais-tu le faire en 13?
Le chapitre sur la bibliothèque standard est énorme. Je ne l'ai pas détaillé, mais oui, il couvrira une présentation des l'ensemble des fonctions (avec des sections 'avancées' pour ne pas assassiner le newby) et un certain nombre de mises en oeuvre sous forme de TD ou d'exercices, voire de mini projet (genre apprendre à lire une doc !).Egalement, les nombres pseudo-aléatoires et la gestion du temps peuvent être abordés (mais c'est sûrement inclus dans ton 13, de nouveau).
Mon but est de favoriser l'autonomie et la responsabilité. Peu de cours écrit (mais un plan en béton), beaucoup d'exercices, beaucoup de travail personnel.
C'est un cours "total C", mais qui peut être adapté en fonction du public (suppression de certains modules). Je vais refaire une liste avec une pondération.Je suis un peu surpris de voir les structures de données dans un cours qui ressemble pas mal à de l'initiation. C'est déjà du C "avancé" (pour peu que cela veuille dire quelque chose), que je mettrais dans une deuxième partie, avec les pointeurs de pointeurs, pointeurs de fonction, opérateurs bitwise, casting et promotions, pré-processeur avancé (xmacros), et fonctions à liste d'argument variable (j'en oublie).
Ceci-dit, pour pouvoir utiliser correctement les fonction de la bibliothèque standard, il faut quasiment connaitre tous les aspects du C que tu as cité...
Merci beaucoup pour ces remarques, ça me fait avancer.
A+
Emmanuel
Juste unhe remarque un peu inutile(ça te fera aps avancer) je sais pas si avoir le langage C en parallele des cours d'algo est le mieux.Je pense(et ce n est que mon humble avis) que le langage ADA est plus approprié non?J'y ai longuement réfléchi. L'idée, c'est de laisser le cours d'algorithmique démarrer en parallèle (hé hé, je dévoile mes petits secrets...) et d'essayer de synchroniser les deux cours.
Ah bon, et pourquoi donc ?Envoyé par sneb5757
En quoi est-il plus approprié ? Tu aurais dit Pascal, pourquoi pas, mais Ada ?Envoyé par sneb5757
(Rappel : Pascal et Ada sont des noms de personne et non des acronymes comme BASIC, FORTRAN ou COBOL).
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager