/*calcul de la moyenne*/
printf("Moyenne :%f \n ",somme/3);
/*liberation de la m=E9moire*/
free(pr1);
free(pr2);
free(pr3);
}
Mes questions sont:
-les pointeurs ont =E9t=E9 d=E9clar=E9 initialement =E0 la premi=E8re
instruction,pourquoi en plus une allocation dynamique avec malloc( ) et
free( )?Est-elle n=E9cessaire?
-aurai-je pu utiliser l'allocation dynamique sans avoir au pr=E9alable
d=E9clar=E9 mes pointeurs comme =E0 la premi=E8re instruction?
Je ne fais pas de l'abstraction theorique (cf les mail de Gaby sur l'espace de nommage), et je refute l'idee que l'implantation concrette soit accessible sans un bagage d'archi.
Oui, c'est surement nécessaire d'avoir une base d'archi, ÀMA.
[...] Oui, c'est un peu comme ça ue je faisais mon cours. Et ca ne marche pas. En vrac, comment lier cela a l'allocation dynamique, a l'arithmetique des pointeurs, et pourquoi les variables locales disparaissent, etc.
Je ne vais pas contester ton observation factuelle que ça ne marche pas (avec un certain nombre d'étudiants), c'est toi le spécialiste. ;-) Je mentionnerait juste que l'allocation dynamique et l'arithmétique des pointeurs s'expliquent simplement dans le cadre de ce modèle. Quand aux variables locales qui disparaissent, c'est une question de compilateurs qui peut être abordée plus tard, lorsqu'ils ont acquis les notions de base.
Entendons nous bien, je ne dis pas qu'il faille cacher tout cela. on leur dit, plusieurs fois dans l'annee et dans divers cours. Ce que je dis est que presenter les pointeurs comme cela n'est pas tres efficace.
D'accord. Je ne peux pas juger de l'efficacité pédagogique, je ne suis que programmeur, pas professeur.
"A TRUE Klingon warrior does not comment his code!"
Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr.invalid> writes:
Je ne fais pas de l'abstraction theorique (cf les mail de Gaby sur
l'espace de nommage), et je refute l'idee que l'implantation
concrette soit accessible sans un bagage d'archi.
Oui, c'est surement nécessaire d'avoir une base d'archi, ÀMA.
[...]
Oui, c'est un peu comme ça ue je faisais mon cours. Et ca ne marche
pas. En vrac, comment lier cela a l'allocation dynamique, a
l'arithmetique des pointeurs, et pourquoi les variables locales
disparaissent, etc.
Je ne vais pas contester ton observation factuelle que ça ne marche
pas (avec un certain nombre d'étudiants), c'est toi le
spécialiste. ;-) Je mentionnerait juste que l'allocation dynamique et
l'arithmétique des pointeurs s'expliquent simplement dans le cadre de
ce modèle. Quand aux variables locales qui disparaissent, c'est une
question de compilateurs qui peut être abordée plus tard, lorsqu'ils
ont acquis les notions de base.
Entendons nous bien, je ne dis pas qu'il faille cacher tout
cela. on leur dit, plusieurs fois dans l'annee et dans divers
cours. Ce que je dis est que presenter les pointeurs comme
cela n'est pas tres efficace.
D'accord. Je ne peux pas juger de l'efficacité pédagogique, je ne
suis que programmeur, pas professeur.
Je ne fais pas de l'abstraction theorique (cf les mail de Gaby sur l'espace de nommage), et je refute l'idee que l'implantation concrette soit accessible sans un bagage d'archi.
Oui, c'est surement nécessaire d'avoir une base d'archi, ÀMA.
[...] Oui, c'est un peu comme ça ue je faisais mon cours. Et ca ne marche pas. En vrac, comment lier cela a l'allocation dynamique, a l'arithmetique des pointeurs, et pourquoi les variables locales disparaissent, etc.
Je ne vais pas contester ton observation factuelle que ça ne marche pas (avec un certain nombre d'étudiants), c'est toi le spécialiste. ;-) Je mentionnerait juste que l'allocation dynamique et l'arithmétique des pointeurs s'expliquent simplement dans le cadre de ce modèle. Quand aux variables locales qui disparaissent, c'est une question de compilateurs qui peut être abordée plus tard, lorsqu'ils ont acquis les notions de base.
Entendons nous bien, je ne dis pas qu'il faille cacher tout cela. on leur dit, plusieurs fois dans l'annee et dans divers cours. Ce que je dis est que presenter les pointeurs comme cela n'est pas tres efficace.
D'accord. Je ne peux pas juger de l'efficacité pédagogique, je ne suis que programmeur, pas professeur.
"A TRUE Klingon warrior does not comment his code!"
Pascal Bourguignon
"Antoine Leca" writes:
Et si on veut accéder à un autre vecteur, qui se trouve en 1500, il suffit de mettre à jour la case de l'adresse 2000 et y stocker 1500.
Et il est TRÈS simple d'expliquer que lorsque le pointeur est un char*, il faut ajouter 500, et quand c'est un int*, il faut ajouter tantôt 250, et tantôt 125. Évidentissime.
Oui, une fois que la notion d'adresse et de pointeur est acquise, ce détail du langage C peut être enseigné.
-- __Pascal Bourguignon__ http://www.informatimago.com/ The mighty hunter Returns with gifts of plump birds, Your foot just squashed one.
"Antoine Leca" <root@localhost.invalid> writes:
Et si on veut accéder à un autre vecteur, qui se trouve en 1500, il
suffit de mettre à jour la case de l'adresse 2000 et y stocker 1500.
Et il est TRÈS simple d'expliquer que lorsque le pointeur est un char*, il
faut ajouter 500, et quand c'est un int*, il faut ajouter tantôt 250, et
tantôt 125.
Évidentissime.
Oui, une fois que la notion d'adresse et de pointeur est acquise, ce
détail du langage C peut être enseigné.
--
__Pascal Bourguignon__ http://www.informatimago.com/
The mighty hunter
Returns with gifts of plump birds,
Your foot just squashed one.
Et si on veut accéder à un autre vecteur, qui se trouve en 1500, il suffit de mettre à jour la case de l'adresse 2000 et y stocker 1500.
Et il est TRÈS simple d'expliquer que lorsque le pointeur est un char*, il faut ajouter 500, et quand c'est un int*, il faut ajouter tantôt 250, et tantôt 125. Évidentissime.
Oui, une fois que la notion d'adresse et de pointeur est acquise, ce détail du langage C peut être enseigné.
-- __Pascal Bourguignon__ http://www.informatimago.com/ The mighty hunter Returns with gifts of plump birds, Your foot just squashed one.
Radamanthe
Marc Boyer wrote:
Marc Boyer wrote:
Et on rajoute 6h de cours et 6h de TD d'archi des ordis à l'emplois du temps parce que le prof qui enseigne le C en a besoin pour illustrer la notion de pointeur ? Ben non, on a pas assez d'heures à l'emploi du temps pour jouer à ça. Je vous comprends mais pour moi on n'échappe pas facilement au fait
qu'il faille un certain ordre dans la manière de faire comprendre.
Un enseignant ayant plus de bouteille que moi racontait que dans les années 70-80, on enseignait le C *après* que les étudiants sachant coder en assembleur, et la communauté était agité par le débats du genre "comment peut on enseigner le C à des personnes qui ne connaissent pas l'assembleur ?". Et ca discutait dur, les anciens contre les modernes...
A ce jour, je ne connais pas de cursus où l'on fasse de la maîtrise de l'assembleur un pré-requis.
Et il est vrai que certaines connaissances ont été perdues, et que quand on code en C, on ne sait plus bien combien d'octet de code vont être produits et en combien de cycle tout cela s'exécutera (ce à quoi il semble qu'on était plus attentif à une époque). Est-ce grave ?
Meuh nan. Ca forme juste de nouveaux développeurs qui, incapables de trouver le moindre intérêt au C par rapport à d'autres langages, inventent d'autre langages, comme Java où que sais-je :)
-- R.N.
Marc Boyer wrote:
Marc Boyer wrote:
Et on rajoute 6h de cours et 6h de TD d'archi des ordis à l'emplois
du temps parce que le prof qui enseigne le C en a besoin pour
illustrer la notion de pointeur ? Ben non, on a pas assez d'heures à
l'emploi du temps pour jouer à ça.
Je vous comprends mais pour moi on n'échappe pas facilement au fait
qu'il faille un certain ordre dans la manière de faire comprendre.
Un enseignant ayant plus de bouteille que moi racontait que dans
les années 70-80, on enseignait le C *après* que les étudiants
sachant coder en assembleur, et la communauté était agité par
le débats du genre "comment peut on enseigner le C à des personnes
qui ne connaissent pas l'assembleur ?". Et ca discutait dur,
les anciens contre les modernes...
A ce jour, je ne connais pas de cursus où l'on fasse de la
maîtrise de l'assembleur un pré-requis.
Et il est vrai que certaines connaissances ont été perdues,
et que quand on code en C, on ne sait plus bien combien d'octet
de code vont être produits et en combien de cycle tout cela
s'exécutera (ce à quoi il semble qu'on était plus attentif
à une époque). Est-ce grave ?
Meuh nan. Ca forme juste de nouveaux développeurs qui, incapables de
trouver le moindre intérêt au C par rapport à d'autres langages,
inventent d'autre langages, comme Java où que sais-je :)
Et on rajoute 6h de cours et 6h de TD d'archi des ordis à l'emplois du temps parce que le prof qui enseigne le C en a besoin pour illustrer la notion de pointeur ? Ben non, on a pas assez d'heures à l'emploi du temps pour jouer à ça. Je vous comprends mais pour moi on n'échappe pas facilement au fait
qu'il faille un certain ordre dans la manière de faire comprendre.
Un enseignant ayant plus de bouteille que moi racontait que dans les années 70-80, on enseignait le C *après* que les étudiants sachant coder en assembleur, et la communauté était agité par le débats du genre "comment peut on enseigner le C à des personnes qui ne connaissent pas l'assembleur ?". Et ca discutait dur, les anciens contre les modernes...
A ce jour, je ne connais pas de cursus où l'on fasse de la maîtrise de l'assembleur un pré-requis.
Et il est vrai que certaines connaissances ont été perdues, et que quand on code en C, on ne sait plus bien combien d'octet de code vont être produits et en combien de cycle tout cela s'exécutera (ce à quoi il semble qu'on était plus attentif à une époque). Est-ce grave ?
Meuh nan. Ca forme juste de nouveaux développeurs qui, incapables de trouver le moindre intérêt au C par rapport à d'autres langages, inventent d'autre langages, comme Java où que sais-je :)
-- R.N.
Marc Boyer
Le 23-01-2007, Pascal Bourguignon a écrit :
Marc Boyer writes:
On peut aussi ne pas avoir lu Balzac ou Hugo. Est-ce grâve?
Tout Balzac ou tout Hugo ou un peu de Balzac et un peu d'Hugo ?
Justement, l'avantage avec les écrivains morts, c'est qu'on peut lire l'oeuvre complète. :-)
Le sens de mon propos était justement d'évoquer la question du 'dosage'. Un domaine est interessant: ou s'arrete la culture générale, ou commence la spécialité, et comment fait on les équilibres avec d'autres matières.
À mon avis, avoir programmé (et optimisé) quelques programmes en assembleur tôt dans une vie de programmeur est un bagage culturel important.
Qu'est-ce qu'un programmeur ? Je ne forme pas des gens avec un diplome d'informatique, mais des gens qui seront ammenees a programmer des choses dans leur specialite.
Donc, ils ont fait un peu d'assembleur, sans etre tout a fait a l'aise avec. Je ne pense pas qu'ils aient optimise quoi que ce soit.
Je ne demande pas forcément quelque chose de compliqué. Ce qui compte c'est qu'ils aient eu l'occasion de fouiller dans le manuel de référence d'un processeur, de compter le nombre de cycles que prend leur petit programme, et qu'ils aient fait l'effort de trouver une combinaison d'instructions plus rapide. Quitte à leur montrer ensuite comment rendre le programme trois fois plus rapide avec deux fois moins d'effort en implémentant un meilleur algorithme...
Avec les pipe-line, il me semble que la notion de nombre de cycle devient très secondaire... De toute façon, pour mes étudiants, je pense qu'il y aurait plein de choses plus importantes à étudier en archi avant de parler du nombre de cycle des instructions. Et en plus, on a déjà pas le temps.
Marc Boyer -- Si tu peux supporter d'entendre tes paroles Travesties par des gueux pour exciter des sots IF -- Rudyard Kipling (Trad. André Maurois)
Le 23-01-2007, Pascal Bourguignon <pjb@informatimago.com> a écrit :
Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr.invalid> writes:
On peut aussi ne pas avoir lu Balzac ou Hugo. Est-ce grâve?
Tout Balzac ou tout Hugo ou un peu de Balzac et un peu d'Hugo ?
Justement, l'avantage avec les écrivains morts, c'est qu'on peut lire
l'oeuvre complète. :-)
Le sens de mon propos était justement d'évoquer la question du
'dosage'. Un domaine est interessant: ou s'arrete la culture générale,
ou commence la spécialité, et comment fait on les équilibres
avec d'autres matières.
À mon avis, avoir programmé (et optimisé) quelques programmes en
assembleur tôt dans une vie de programmeur est un bagage culturel
important.
Qu'est-ce qu'un programmeur ?
Je ne forme pas des gens avec un diplome d'informatique, mais des
gens qui seront ammenees a programmer des choses dans leur specialite.
Donc, ils ont fait un peu d'assembleur, sans etre tout a fait
a l'aise avec. Je ne pense pas qu'ils aient optimise quoi que
ce soit.
Je ne demande pas forcément quelque chose de compliqué. Ce qui compte
c'est qu'ils aient eu l'occasion de fouiller dans le manuel de
référence d'un processeur, de compter le nombre de cycles que prend
leur petit programme, et qu'ils aient fait l'effort de trouver une
combinaison d'instructions plus rapide. Quitte à leur montrer ensuite
comment rendre le programme trois fois plus rapide avec deux fois
moins d'effort en implémentant un meilleur algorithme...
Avec les pipe-line, il me semble que la notion de nombre de cycle
devient très secondaire...
De toute façon, pour mes étudiants, je pense qu'il y aurait plein
de choses plus importantes à étudier en archi avant de parler du
nombre de cycle des instructions. Et en plus, on a déjà pas le temps.
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)
On peut aussi ne pas avoir lu Balzac ou Hugo. Est-ce grâve?
Tout Balzac ou tout Hugo ou un peu de Balzac et un peu d'Hugo ?
Justement, l'avantage avec les écrivains morts, c'est qu'on peut lire l'oeuvre complète. :-)
Le sens de mon propos était justement d'évoquer la question du 'dosage'. Un domaine est interessant: ou s'arrete la culture générale, ou commence la spécialité, et comment fait on les équilibres avec d'autres matières.
À mon avis, avoir programmé (et optimisé) quelques programmes en assembleur tôt dans une vie de programmeur est un bagage culturel important.
Qu'est-ce qu'un programmeur ? Je ne forme pas des gens avec un diplome d'informatique, mais des gens qui seront ammenees a programmer des choses dans leur specialite.
Donc, ils ont fait un peu d'assembleur, sans etre tout a fait a l'aise avec. Je ne pense pas qu'ils aient optimise quoi que ce soit.
Je ne demande pas forcément quelque chose de compliqué. Ce qui compte c'est qu'ils aient eu l'occasion de fouiller dans le manuel de référence d'un processeur, de compter le nombre de cycles que prend leur petit programme, et qu'ils aient fait l'effort de trouver une combinaison d'instructions plus rapide. Quitte à leur montrer ensuite comment rendre le programme trois fois plus rapide avec deux fois moins d'effort en implémentant un meilleur algorithme...
Avec les pipe-line, il me semble que la notion de nombre de cycle devient très secondaire... De toute façon, pour mes étudiants, je pense qu'il y aurait plein de choses plus importantes à étudier en archi avant de parler du nombre de cycle des instructions. Et en plus, on a déjà pas le temps.
Marc Boyer -- Si tu peux supporter d'entendre tes paroles Travesties par des gueux pour exciter des sots IF -- Rudyard Kipling (Trad. André Maurois)
Marc Boyer
Le 23-01-2007, Pascal Bourguignon a écrit :
Marc Boyer writes:
Je ne fais pas de l'abstraction theorique (cf les mail de Gaby sur l'espace de nommage), et je refute l'idee que l'implantation concrette soit accessible sans un bagage d'archi.
Oui, c'est surement nécessaire d'avoir une base d'archi, ÀMA.
Mais jusqu'où va-t-on ? En gros, l'étudiant avec un QI de 150, tu lui présentes les adressages immédiats, direct, et indirect, puis tu expliques que les pointeurs, s'est un adressage indirect, et il a compris.
Mes etudiants a moi sont normaux, entre la presentation d'un concept en cours et son assimilation, il faut des TD. Et pour arriver a ce qu'une notion vue dans un cours soit assez comprise pour pouvoir etre reutilisée dans un autre, il faut beaucoup insister. Dans leur cursus, mes etudiants ne sont pas assez a l'aise avec l'adressage et les pointeurs pour que cela serve de base à la presentation des pointeurs. Déjà que certains se demandent où sont les registres dans la mémoire...
[...] Oui, c'est un peu comme ça ue je faisais mon cours. Et ca ne marche pas. En vrac, comment lier cela a l'allocation dynamique, a l'arithmetique des pointeurs, et pourquoi les variables locales disparaissent, etc.
Je ne vais pas contester ton observation factuelle que ça ne marche pas (avec un certain nombre d'étudiants), c'est toi le spécialiste. ;-) Je mentionnerait juste que l'allocation dynamique et l'arithmétique des pointeurs s'expliquent simplement dans le cadre de ce modèle.
Ah ? L'allocation dynamique s'explique simplement dans le cadre de ce modèle ? Je demande à voir. Nous, on fait un TD en fin d'année ou on implante un allocateur simple dans un tableau de char, et ca leur parait pas évident du tout.
Quand aux variables locales qui disparaissent, c'est une question de compilateurs qui peut être abordée plus tard, lorsqu'ils ont acquis les notions de base.
Sauf que dès le début il faut leur donner les bonnes habitudes, et que dès la première liste chainée qu'ils font, ils sont tentés de déclarer une variable locale 'Cellule' au lieu de l'allouer dynamiquement.
Marc Boyer -- Si tu peux supporter d'entendre tes paroles Travesties par des gueux pour exciter des sots IF -- Rudyard Kipling (Trad. André Maurois)
Le 23-01-2007, Pascal Bourguignon <pjb@informatimago.com> a écrit :
Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr.invalid> writes:
Je ne fais pas de l'abstraction theorique (cf les mail de Gaby sur
l'espace de nommage), et je refute l'idee que l'implantation
concrette soit accessible sans un bagage d'archi.
Oui, c'est surement nécessaire d'avoir une base d'archi, ÀMA.
Mais jusqu'où va-t-on ? En gros, l'étudiant avec un QI de 150,
tu lui présentes les adressages immédiats, direct,
et indirect, puis tu expliques que les pointeurs, s'est un adressage
indirect, et il a compris.
Mes etudiants a moi sont normaux, entre la presentation d'un concept
en cours et son assimilation, il faut des TD. Et pour arriver a ce
qu'une notion vue dans un cours soit assez comprise pour pouvoir etre
reutilisée dans un autre, il faut beaucoup insister.
Dans leur cursus, mes etudiants ne sont pas assez a l'aise avec
l'adressage et les pointeurs pour que cela serve de base à la
presentation des pointeurs. Déjà que certains se demandent où sont
les registres dans la mémoire...
[...]
Oui, c'est un peu comme ça ue je faisais mon cours. Et ca ne marche
pas. En vrac, comment lier cela a l'allocation dynamique, a
l'arithmetique des pointeurs, et pourquoi les variables locales
disparaissent, etc.
Je ne vais pas contester ton observation factuelle que ça ne marche
pas (avec un certain nombre d'étudiants), c'est toi le
spécialiste. ;-) Je mentionnerait juste que l'allocation dynamique et
l'arithmétique des pointeurs s'expliquent simplement dans le cadre de
ce modèle.
Ah ? L'allocation dynamique s'explique simplement dans le cadre
de ce modèle ? Je demande à voir. Nous, on fait un TD en fin d'année
ou on implante un allocateur simple dans un tableau de char, et
ca leur parait pas évident du tout.
Quand aux variables locales qui disparaissent, c'est une
question de compilateurs qui peut être abordée plus tard, lorsqu'ils
ont acquis les notions de base.
Sauf que dès le début il faut leur donner les bonnes habitudes,
et que dès la première liste chainée qu'ils font, ils sont tentés
de déclarer une variable locale 'Cellule' au lieu de l'allouer
dynamiquement.
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)
Je ne fais pas de l'abstraction theorique (cf les mail de Gaby sur l'espace de nommage), et je refute l'idee que l'implantation concrette soit accessible sans un bagage d'archi.
Oui, c'est surement nécessaire d'avoir une base d'archi, ÀMA.
Mais jusqu'où va-t-on ? En gros, l'étudiant avec un QI de 150, tu lui présentes les adressages immédiats, direct, et indirect, puis tu expliques que les pointeurs, s'est un adressage indirect, et il a compris.
Mes etudiants a moi sont normaux, entre la presentation d'un concept en cours et son assimilation, il faut des TD. Et pour arriver a ce qu'une notion vue dans un cours soit assez comprise pour pouvoir etre reutilisée dans un autre, il faut beaucoup insister. Dans leur cursus, mes etudiants ne sont pas assez a l'aise avec l'adressage et les pointeurs pour que cela serve de base à la presentation des pointeurs. Déjà que certains se demandent où sont les registres dans la mémoire...
[...] Oui, c'est un peu comme ça ue je faisais mon cours. Et ca ne marche pas. En vrac, comment lier cela a l'allocation dynamique, a l'arithmetique des pointeurs, et pourquoi les variables locales disparaissent, etc.
Je ne vais pas contester ton observation factuelle que ça ne marche pas (avec un certain nombre d'étudiants), c'est toi le spécialiste. ;-) Je mentionnerait juste que l'allocation dynamique et l'arithmétique des pointeurs s'expliquent simplement dans le cadre de ce modèle.
Ah ? L'allocation dynamique s'explique simplement dans le cadre de ce modèle ? Je demande à voir. Nous, on fait un TD en fin d'année ou on implante un allocateur simple dans un tableau de char, et ca leur parait pas évident du tout.
Quand aux variables locales qui disparaissent, c'est une question de compilateurs qui peut être abordée plus tard, lorsqu'ils ont acquis les notions de base.
Sauf que dès le début il faut leur donner les bonnes habitudes, et que dès la première liste chainée qu'ils font, ils sont tentés de déclarer une variable locale 'Cellule' au lieu de l'allouer dynamiquement.
Marc Boyer -- Si tu peux supporter d'entendre tes paroles Travesties par des gueux pour exciter des sots IF -- Rudyard Kipling (Trad. André Maurois)
Eric Levenez
Le 24/01/07 8:03, dans , « Marc Boyer » a écrit :
Avec les pipe-line, il me semble que la notion de nombre de cycle devient très secondaire...
Oui, ce qui devient intéressant, c'est de chasser les bulles dans les pipelines pour maximiser les perfs. À adapter à chaque modèle d'un CPU...
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 24/01/07 8:03, dans <slrnere1i8.ck2.Marc.Boyer@localhost.localdomain>,
« Marc Boyer » <Marc.Boyer@enseeiht.yahoo.fr.invalid> a écrit :
Avec les pipe-line, il me semble que la notion de nombre de cycle
devient très secondaire...
Oui, ce qui devient intéressant, c'est de chasser les bulles dans les
pipelines pour maximiser les perfs. À adapter à chaque modèle d'un CPU...
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.