Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2022-06-08T13:16:41+02:00Les derniers messages parus sur le forum de Zeste de Savoir.Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2435142022-06-08T13:16:41+02:00parsokra/@parsokrahttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=2#p243514<p>En lisant un autre tuto du site ("la vérité sur les tableaux et les pointeurs"), il apparaît en effet que & appliqué à un tableau renvoie un pointeur sur un tableau ce qui vient appuyer les dires des intervenants ici. Cela montre à mon sens une terrible erreur du cours principal de ce site sur les tableaux. Révolution ! D’habitude je ne corrige que des fautes d’orthographe, on dirait que j’ai mis le doigt sur quelque chose de plus intéressant <img src="/static/smileys/svg/smile.svg" alt=":)" class="smiley"></p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434942022-06-07T12:12:55+02:00AScriabine/@AScriabinehttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=2#p243494<p><a href="/@Renault" rel="nofollow" class="ping ping-link">@<span class="ping-username">Renault</span></a>
je veux simplement dire que pour moi, un cours doit préciser ses limites. Tes exemples sur ce qui ne se fait pas dans l’éducation nationale sont soit à relativiser, soit je considère que l’éducation nationale aurait des méthodes à revoir. Dans tous les cas je pense qu’un bon cours peut toujours être fait en posant ses limites sans perdre son public. Cela nécessite cependant un effort, qui est peut-être moins souvent fait que je l’espérerais. Cela ne change pas grand chose dans le fond.
Pour ce qui est de la physique et des modèles, je pense que le fond de notre désaccord est assez visible.
Pour revenir au C, je n’avais pas l’impression de pinailler. Pour moi cela fait une différence importante dans ce que dit le cours car le typage me semble très important. Maintenant chacun organise ses connaissances différemment, et je ne suis pas un expert du domaine, je peux avoir tort. Aux rédacteurs de juger <img src="/static/smileys/svg/clin.svg" alt=";)" class="smiley"></p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434932022-06-07T12:01:36+02:00Renault/@Renaulthttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=2#p243493<blockquote>
<p>Mais pour moi la formule de l’énergie cinétique vue dans un cours de cinquième n’est pas fausse dans l’absolu. </p>
</blockquote>
<p>Bah si, car elle est l’approximation d’une formule plus générale qui fonctionne bien dans tous les cas. Ta remarque serait vraie si on était en 1815 et qu’on ignorait tout de la relativité et des limites de la mécanique newtonienne.</p>
<blockquote>
<p>Elle permet de résoudre le genre de problème que traite le cours, c’est tout. </p>
</blockquote>
<p>Sauf que rien n’est vraiment précisé et explicite. C’est donc bel et bien un mensonge dans la forme.
Ce qui est amusant c’est que tu pinailles sur un détail du cours du C (vraiment, c’est un détail), je te sors des exemples plus concrets et sérieux à mon sens dans des cours officiels et tu les négliges. Ta posture m’étonne vraiment.</p>
<p>Je n’aurais pas de problèmes avec ton point de vue sur le cours de l’éducation nationale si tu ne pinaillais pas juste avant sur ce point en fait.</p>
<blockquote>
<p>Dans un cadre qui n’est pas précisé car aucun élève ne peut raisonnablement être induit en erreur par l’absence de cette précision. Dans un tel cas la limite du cours pourrait être facultative…</p>
</blockquote>
<p>Pourtant quand tu regardes les images employés pour décrire un atome, et ce partout, c’est une image fausse. Quand tu expliques ce qu’en dit la mécanique quantique tout le monde est perdu car tout le monde a en tête l’ancien modèle. Ce n’est donc pas un détail, ça induit évidemment des erreurs dans la représentation mentale des choses. Mais là encore, je considère que c’est mieux que rien car la mécanique quantique et la réalité qu’elle décrit est vraiment compliquée et hors de portée (ou sans intérêt) pour la majorité des élèves. Il vaut mieux parfois une image fausse mais contrôlée que rien du tout.</p>
<blockquote>
<p>A voir ce qui est faisable en pratique, pour ma part je ne pense pas que les élèves soient incapables d’entendre une remarque de 2 lignes sur le domaine de validité d’un cours de mécanique du point.</p>
</blockquote>
<p>Même en admettant que le prof explique le domaine de validité en début de cours. Combien vont s’en souvenir ? Très peu, car ce sera évaporé rapidement car on insistera pas dessus. Et cela ne règle pas le problème des autres sujets que j’ai évoqué qui ne se règlent pas avec juste une définition suffisamment vague pour être juste.</p>
<blockquote>
<p>Prenons la représentation d’un électron, est-il faux de se représenter un électron comme une bille qui tourne autour de son noyau ? Ton post indique que oui, moi je dis que la représentation de la réalité est l’image d’un modèle qui fait des prédictions et aura toujours ses limites.</p>
</blockquote>
<p>Ce modèle est faux, elle implique des choses qu’on sait fausses et la plupart des gens ont ces choses en tête plus tard.</p>
<p>Ton point de vue serait juste si on était au XIXe siècle, et serait acceptable si tu ne pinaillais pas par ailleurs pour un détail du cours du C. <img src="/static/smileys/svg/clin.svg" alt=";)" class="smiley"></p>
<blockquote>
<p>Personne ne sait ce qu’est un électron dans l’absolu. Même la plus précise des équations reste un modèle. La notion de vérité est moins tranchée pour moi. D’ailleurs même la relativité générale que tu dis absolument vraie n’est pas vraie à toute échelle à priori, il est bien connu que la science d’aujourd’hui cherche à concilier les théories de l’infiniment grand et celles de l’infiniment petit qui sont contradictoires. </p>
</blockquote>
<p>Bien sûr que la réalité physique est plus complexe encore que la mécanique quantique et la relativité générale, mais cela restent des modèles bien plus aboutis et justes que ceux qu’on voit au lycée qu’on sait faux.</p>
<p>La relativité générale fait référence par exemple jusqu’à qu’un autre modèle fait mieux.</p>
<p>Le but n’était pas tellement de parler de physique, de la réalité de notre univers tout cela. Mon point de vue est que tu pinailles pour un sujet d’un cours du C alors qu’à côté tu acceptes des choses bien plus impactantes dans d’autres cours alors que tu dis que les cours officiels ne disent rien de <em>faux</em>.</p>
<p>Mon propos était surtout de te montrer que la pédagogie c’est compliqué, et que dire des choses qu’on sait fausses, incomplètes ou quoi n’est pas un problème et a des vertus dans le cadre de l’enseignement qui sont évidentes. Si tu veux un cours très rigoureux, trop rigoureux, tu vas perdre tout le monde très rapidement.</p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434922022-06-07T11:40:29+02:00AScriabine/@AScriabinehttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=2#p243492<p><a href="/@SpaceFox" rel="nofollow" class="ping ping-link">@<span class="ping-username">SpaceFox</span></a> nous entrons là dans des considérations quasi politiques <img src="/static/smileys/svg/diable.svg" alt=":diable:" class="smiley">
Sur ce point, je ne serais pas contre de hausser la difficulté des cours actuellement dispensés sur les bancs de l’école française <img src="/static/smileys/svg/ange.svg" alt=":ange:" class="smiley">
Mais nous nous sommes très éloignés des pointeurs là</p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434912022-06-07T11:33:12+02:00SpaceFox/@SpaceFoxhttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=2#p243491<blockquote>
<p>A voir ce qui est faisable en pratique, pour ma part je ne pense pas que les élèves soient incapables d’entendre une remarque de 2 lignes sur le domaine de validité d’un cours de mécanique du point.</p>
</blockquote>
<p>De ce que me raconte un ami prof de physique-chimie : clairement, ce genre de considération est très au-delà du niveau du cours et de ce que la plupart des élèves sont prêts à apprendre. Non seulement les collégiens ont un faible niveau en sciences (vu que ce sont des matières assez nouvelles), mais aussi, pour beaucoup d’entre eux, c’est un cours obligatoire qui ne les intéresse absolument pas. Les intéresser et faire en sorte qu’ils apprennent les bases est déjà assez complexe sans ajouter en plus les questions de domaines de validité de leurs connaissances. </p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434902022-06-07T11:22:03+02:00AScriabine/@AScriabinehttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=2#p243490<p> <a href="/@Renault" rel="nofollow" class="ping ping-link">@<span class="ping-username">Renault</span></a> je comprends ta position. Mais pour moi la formule de l’énergie cinétique vue dans un cours de cinquième n’est pas fausse dans l’absolu. Elle permet de résoudre le genre de problème que traite le cours, c’est tout. Dans un cadre qui n’est pas précisé car aucun élève ne peut raisonnablement être induit en erreur par l’absence de cette précision. Dans un tel cas la limite du cours pourrait être facultative… Et encore ça pourrait se questionner. En théorie peut-être qu’il faudrait toujours le faire, je ne suis pas loin de le penser. A voir ce qui est faisable en pratique, pour ma part je ne pense pas que les élèves soient incapables d’entendre une remarque de 2 lignes sur le domaine de validité d’un cours de mécanique du point.
Il est vrai qu’un cours induit toujours des "erreurs" de représentations. Prenons la représentation d’un électron, est-il faux de se représenter un électron comme une bille qui tourne autour de son noyau ? Ton post indique que oui, moi je dis que la représentation de la réalité est l’image d’un modèle qui fait des prédictions et aura toujours ses limites. Un électron est-il une onde ? Dans un certain cadre oui, c’est pertinent. Dans d’autres, c’est sans intérêt. Personne ne sait ce qu’est un électron dans l’absolu. Même la plus précise des équations reste un modèle. La notion de vérité est moins tranchée pour moi. D’ailleurs même la relativité générale que tu dis absolument vraie n’est pas vraie à toute échelle à priori, il est bien connu que la science d’aujourd’hui cherche à concilier les théories de l’infiniment grand et celles de l’infiniment petit qui sont contradictoires. </p>
<p> Pour moi, une approximation donnée dans un certain cadre n’est pas forcément fausse, et il n’existe pas de représentation absolue et universelle de ce qu’est un électron. Le cours a beau induire des représentations, l’affirmation "un électron est une bille qui tourne autour d’un noyau" n’est pas fausse en soi. Elle est juste limitée quand on veut aller plus loin. Et ce n’est pas la seule représentation utilisée pour cerner l’objet.</p>
<p> Pour ce qui est des mathématiques, pour le théorème de Pythagore, tel qu’appris aux écoliers n’est pas faux de mon point de vue, pour des raisons similaires à celles évoquées ci-dessus. Le cadre est juste complètement trivial pour un écolier : on pose une feuille bien à plat sur une table et toute la géométrie apprise est valable. Je trouve abusif de dire que ce serait faux, même en toute rigueur</p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434892022-06-07T10:10:02+02:00Renault/@Renaulthttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=2#p243489<blockquote>
<p>On donne le principe de la dynamique pour une masse ponctuelle, et on suppose que la plupart des corps sont assimilés à des masses ponctuelles. En effet on ne parle pas de relativité, mais dans aucun exercice donné à ces élèves on évoque l’énergie de particules se déplaçant à c,</p>
</blockquote>
<p>Mais c’est là où tu ne vois pas le problème.</p>
<p>La relativité générale et restreinte ont des formules valides tout le temps, quelle que soit ta vitesse. Techniquement les formules de la mécanique s’appliquent à ta voiture quand tu es sur l’autoroute. Alors oui, la précision ajoutée est très faible et sans grand intérêt en pratique (d’où le fait qu’un ingénieur automobile n’en tient jamais compte), mais la formule exacte en mécanique n’est pas celle de Newton qui n’est qu’une approximation bien pratique.</p>
<p>Par ailleurs, la mécanique selon Newton et selon Einstein c’est une vision du temps et de l’espace totalement différente. Alors oui quand tu bosses sur une voiture, la vision de l’espace et du temps tu t’en fiches un peu, la vision newtonienne convient, mais elle reste dans l’absolu fausse.</p>
<p>Donc clairement un cours de mécanique moderne au lycée ou prépa qui utilisent le formalisme de Newton est un mensonge car il simplifie des tas de choses et met sous le tapis des tas d’éléments bien connus aujourd’hui pour éviter d’embrouiller les élèves. Moi perso je trouve cela bien car la relativité c’est un gros morceau et si l’élève s’en sort avec la mécanique newtonienne c’est déjà pas mal (et il pourra aborder la relativité plus tard).</p>
<p>Mon point ici c’est de dire que oui l’éducation nationale et supérieure officielle en France mentent sciemment dans leurs cours mais c’est justifié pour des raisons pédagogiques.</p>
<blockquote>
<p>et puis jusqu’à récemment dans l’histoire, on ignorait tout ceci et ça n’a pas empêché de résoudre beaucoup de choses. </p>
</blockquote>
<p>La relativité ça fait 1 siècle qu’on sait que cela existe et que c’est valide, donc clairement un cours de mécanique moderne s’il ne veut pas mentir ou tromper son lectorat devrait ne parler que de la relativité. Mais ils ne le font pas pour de bonnes raisons.</p>
<blockquote>
<p>Peut-être que dans ce cas les limites du cours ne sont pas précisées mais elles sont si loin des problèmes résolus par ces élèves que ça ne peut pas les induire en erreur.</p>
</blockquote>
<p>Pourtant croire qu’on a un temps absolu, que l’additivité des vitesses fonctionne tout le temps (car je n’ai jamais entendu un prof dire : attention proche de c ce n’est plus vrai du tout), etc. cela donne des intuitions (souvent déjà en place) qui ne sont plus vrais. C’est une vision du monde qu’on sait fausse.</p>
<p>Est-ce grave ? Non, mais bon comme tu tiens à être rigoureux, je te montre ici l’incohérence de ta position.</p>
<blockquote>
<p>On ne donne pas de modèle en prétendant qu’il solutionne tous les problèmes de l’univers.</p>
</blockquote>
<p>Sauf que les cas limites ne sont jamais donnés, donc de fait l’élève pense que c’est vrai tout le temps jusqu’à qu’il lise un cours qui va plus loin et qui dit qu’en gros tout ce que tu sais jusqu’ici était une grosse simplification.</p>
<blockquote>
<p> Dans les cours de lycée, on étudie juste les couches électroniques, pour expliquer des comportements précis de formation de molécules, le cadre est encore bien définit, on a aussi de nombreux exemples qui expliquent que les notions vues n’expliquent pas tout, on touche quelques mots sur les isoméries etc.</p>
</blockquote>
<p>Avec le modèle atomique de Bohr où tu vois des atomes comme un système planétaire bien propre, bien défini, avec des trajectoire pure, des électrons ponctuels, tu serais presque tenté de calculer l’orbite d’un électron comme tu le fais pour une planète autour de son étoile.</p>
<p>Et cette image, tu la vois partout, dans la presse, dans tout contenu scientifique. L’image d’un atome c’est toujours celle-ci qui sort. Et c’est difficile de s’en détacher tellement c’est ancré. Même quand tu sais que la mécanique quantique a totalement invalidé ce modèle.</p>
<p>C’est donc bel et bien une approximation bien grossière. Là encore, est-ce grave ? Pas forcément, mais l’élève a une vision du truc totalement déformé de la réalité et jamais on lui dit que cette représentation est fausse au regard de nos connaissances actuelles.</p>
<blockquote>
<p>En mathématiques on ne donne jamais de théorème erroné. Sur le principe, un cours ne doit pas induire son public en erreur. Si cela arrive, le cours commet une erreur. Pour moi c’est aussi simple que ça. </p>
</blockquote>
<p>Alors, en mathématiques il y a quand même pas mal de choses qui sont simplifiés et si on tient à être rigoureux c’est faux.</p>
<p>En géométrie, au moins jusqu’au lycée, c’est assumé mais jamais expliqué qu’on est en géométrie euclidienne. Les espaces non euclidiens n’existent pas, quand on te fait apprendre les propriétés des polygones, le théorème de Pythagore tout ça on ne te dis jamais que c’est valide dans un espace euclidien seulement. Donc un élève peut croire que c’est vrai tout le temps.</p>
<p>De même pour revenir à ton exemple de racines carrés sur les réels et la résolution des polynômes de degré deux, je suis sûr que tu trouveras des profs ou cours qui ne mentionneront pas le terme <em>réel</em> du tout, laissant la porte ouverte que dans les complexes ça peut être différent. Certains profs le font certainement, mais je ne me mouille pas trop en disant que ce n’est pas universel non plus.</p>
<p>Je passe outre aussi la SVT dont le contenu simplifie pas mal la réalité du corps humain ou de la nature géologique ou biologique. Est-ce grave encore ? Non.</p>
<p>Bref, mon but est de te montrer qu’un cours officiel induit des erreurs de représentation chez les élèves (et qui peuvent perdurer), mentent, simplifient parfois un peu trop et qu’il n’y a donc aucune anomalie à ce qu’un cours non officiel n’en fasse pas autant.</p>
<p>Moi personnellement cela me va très bien, pour des raisons pédagogiques simplifier quitte à tordre la réalité n’est pas mauvais. Cela peut permettre de poser des bases, des raisonnements qu’il pourra étendre à des choses plus complexes plus tard. Et même si l’élève reste sur la vision "erronée" du sujet ce n’est pas forcément un problème car cela donne des connaissances valorisables d’une façon ou d’une autre.</p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434872022-06-07T09:16:54+02:00AScriabine/@AScriabinehttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=2#p243487<blockquote>
<p>Pourtant en physique c’est quasiment systématiquement le cas. Quand on te présente la mécanique Newtonienne par exemple, on se garde bien de préciser que ce modèle n’est pas l’état de l’art de nos connaissances sur le sujet et son domaine de définition.</p>
<p>Je ne parle même pas de l’étude des atomes où par rapport à ce que dit la mécanique quantique on est très loin de décrire la réalité avec les précautions d’usage que tu souhaiterais voir.</p>
</blockquote>
<p>On donne le principe de la dynamique pour une masse ponctuelle, et on suppose que la plupart des corps sont assimilés à des masses ponctuelles. En effet on ne parle pas de relativité, mais dans aucun exercice donné à ces élèves on évoque l’énergie de particules se déplaçant à c, et puis jusqu’à récemment dans l’histoire, on ignorait tout ceci et ça n’a pas empêché de résoudre beaucoup de choses. Peut-être que dans ce cas les limites du cours ne sont pas précisées mais elles sont si loin des problèmes résolus par ces élèves que ça ne peut pas les induire en erreur. Les limites de l’approximation d’une masse ponctuelle sont par exemple évoqués en exercice (non conservation de l’énergie dans le cas où des corps sont déformés par exemple). On donne toujours un modèle et on évoque les grands problèmes auxquels il répond. On ne donne pas de modèle en prétendant qu’il solutionne tous les problèmes de l’univers. Dans les cours de lycée, on étudie juste les couches électroniques, pour expliquer des comportements précis de formation de molécules, le cadre est encore bien définit, on a aussi de nombreux exemples qui expliquent que les notions vues n’expliquent pas tout, on touche quelques mots sur les isoméries etc.
En mathématiques on ne donne jamais de théorème erroné. Sur le principe, un cours ne doit pas induire son public en erreur. Si cela arrive, le cours commet une erreur. Pour moi c’est aussi simple que ça. </p>
<figure><blockquote>
<p>Je ne suis pas sûr que cette précaution de formulation soit utilisée partout.</p>
<p></p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=2#p243432">Renault</a></figcaption></figure>
<p>Pour un élève de première, un nombre est un nombre réel. En terminale il élargit les ensemble de nombre qu’il connait. A aucun moment une erreur est commise. A aucun moment un élève n’est induit en erreur par un tel cours. A aucun moment un cours de première n’affirme que les nombres réels sont les seuls nombres qu’on ait jamais construits. </p>
<p>Je maintiens qu’un bon cours donne ses limites et ne commet pas d’erreurs délibérée sans le dire. Trouvez moi un seul cours de première qui dirait qu’il n’existe pas d’ensemble de nombre plus vaste que les nombres réels, trouvez moi un cours de physique de lycée qui affirme que le principe fondamental de la dynamique résout tous les problèmes, ou que les mécanisme évoqués sur la stabilité de certaines molécules est une description suffisante pour expliquer la formation de toutes les molécules. </p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434322022-06-05T14:37:05+02:00Renault/@Renaulthttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=2#p243432<blockquote>
<p>Je n’ai jamais vu de ma vie un cours (un tant soit peu relu et "officiel") commettre des erreurs délibérées (et sans le préciser) dans un but de simplification.</p>
</blockquote>
<p>Pourtant en physique c’est quasiment systématiquement le cas. Quand on te présente la mécanique Newtonienne par exemple, on se garde bien de préciser que ce modèle n’est pas l’état de l’art de nos connaissances sur le sujet et son domaine de définition.</p>
<p>Je ne parle même pas de l’étude des atomes où par rapport à ce que dit la mécanique quantique on est très loin de décrire la réalité avec les précautions d’usage que tu souhaiterais voir.</p>
<blockquote>
<p>En mathématiques par exemple, on ne dit pas au élèves de première qu’aucun nombre au carré ne donne -1, on dit que, pour les nombres réels, c’est impossible. </p>
</blockquote>
<p>Je ne suis pas sûr que cette précaution de formulation soit utilisée partout.</p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434292022-06-05T12:02:53+02:00AScriabine/@AScriabinehttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243429<p><a href="/@gbdivers" rel="nofollow" class="ping ping-link">@<span class="ping-username">gbdivers</span></a> Faire des simplifications est une chose, faire des erreurs en est une autre… En mathématiques par exemple, on ne dit pas au élèves de première qu’aucun nombre au carré ne donne -1, on dit que, pour les nombres réels, c’est impossible. Puis plus tard on aborde de nouveau ensembles de nombres, si bien qu’à aucun moment les cours n’ont commis de faute. Je n’ai jamais vu de ma vie un cours (un tant soit peu relu et "officiel") commettre des erreurs délibérées (et sans le préciser) dans un but de simplification. Un bon cours fait des approximations mais dans un cadre défini qui ne conduit pas son public à commettre des erreurs, sinon il y a faute pédagogique. On ne peut pas partir du principe, quand on rédige un cours, que le lecteur va lire d’autres cours plus avancés pour corriger les fautes.
Maintenant, je suis pas prof ni informaticien. L’informatique soit être compliquée à enseigner au début. Aux rédacteurs de voir ce qu’il en est.
Maintenant comme le précise <a href="/@Taurre" rel="nofollow" class="ping ping-link">@<span class="ping-username">Taurre</span></a> le cours ne dit pas explicitement que &tab est de type pointeur sur le type du tableau, donc il ne commet pas d’erreur explicite… Mais quel lecteur ne serait pas immédiatement induit dans l’erreur de le penser ?
Merci pour l’aide en tout cas</p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434282022-06-05T11:50:10+02:00Taurre/@Taurrehttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243428<figure><blockquote>
<p><a href="/@Taurre" rel="nofollow" class="ping ping-link">@<span class="ping-username">Taurre</span></a> C’est très intéressant
Cela dit, pour moi, le cours laisse complètement penser que &tab est un pointeur sur le premier élément, donc un pointeur sur le type contenu par le tableau… Ce qui est factuellement faux puisque un pointeur ne se résume pas seulement à l’adresse pointée mais aussi au type pointé (dans le cas d’un printf avec cast en pointeur générique la différence se ressent encore moins en effet).
Dire que cela revient au même relève de l’abus de langage ce qui à mon sens est à proscrire dans un cours qui s’adresse à des débutants</p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243426">AScriabine</a></figcaption></figure>
<p>Les deux seules choses que leur cours précise, c’est que :</p>
<ol>
<li>L’opérateur <code>&</code> est une exception à la conversion implicite des tableaux, elle n’a donc pas lieu ;</li>
<li>L’opérateur <code>&</code>, dans le cas d’un tableau, retourne l’adresse de son premier élément.</li>
</ol>
<p>Ces deux points sont vrais, la seule chose qui n’est pas dite, c’est que le type de l’expression retournée est un pointeur sur un tableau. Je peux ajouter une telle précision si cela semble plus clair.</p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434272022-06-05T01:52:16+02:00gbdivers/@gbdivershttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243427<figure><blockquote>
<p>abus de langage ce qui à mon sens est à proscrire dans un cours qui s’adresse à des débutants</p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243426">AScriabine</a></figcaption></figure>
<p>Sans prendre part à la discussion pour savoir si la formulation du cours est correcte ou non et s’il faut la changer, cet argument est bof. Au contraire même, enseigner, c’est rendre les choses compréhensible et c’est assez courant de faire des simplifications dans les termes utilisées, dans un premier temps.</p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434262022-06-05T00:39:53+02:00AScriabine/@AScriabinehttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243426<p><a href="/@Taurre" rel="nofollow" class="ping ping-link">@<span class="ping-username">Taurre</span></a> C’est très intéressant
Cela dit, pour moi, le cours laisse complètement penser que &tab est un pointeur sur le premier élément, donc un pointeur sur le type contenu par le tableau… Ce qui est factuellement faux puisque un pointeur ne se résume pas seulement à l’adresse pointée mais aussi au type pointé (dans le cas d’un printf avec cast en pointeur générique la différence se ressent encore moins en effet).
Dire que cela revient au même relève de l’abus de langage ce qui à mon sens est à proscrire dans un cours qui s’adresse à des débutants</p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434252022-06-04T22:21:56+02:00gasche/@gaschehttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243425<p>Ce qui est marrant c’est que dans plein de langages, décrire le type de fonctions qui renvoient des fonctions, c’est facile et assez naturel. En C c’est compliqué, et en plus la notion de "pointeur de fonction" ne capture pas ce qu’on veut car elle ne permet pas de faire (seule) des fermetures, qui capturent une partie de leur environnement.</p>
<p>Par exemple en OCaml un fonction <code>make_counter</code> qui renvoie un générateur de nombres uniques aura le type <code>unit -> (unit -> int)</code>. On l’appelle avec <code>make_counter ()</code>, et ça renvoie une fonction de type <code>unit -> int</code> (qui est en fait une fermeture) qui, à chaque fois qu’on l’appelle, renvoie un entier différent en partant de 0. C’est utile quand on veut décrire des objets de plusieurs catégories différentes, où on identifie les objets de chaque catégorie par des entiers consécutifs.</p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434242022-06-04T21:45:02+02:00Taurre/@Taurrehttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243424<figure><blockquote>
<p><a href="/@Taurre" rel="nofollow" class="ping ping-link">@<span class="ping-username">Taurre</span></a> y aurait-il donc une erreur dans le cours sur les tableaux ? Mes remarques se sont basées sur ce point jusqu’à présent…
"Lorsqu’il est appliqué à une variable de type tableau, l’opérateur & produit comme résultat l’adresse du premier élément du tableau." ; "Dès lors, lorsque l’opérateur & est appliqué à une variable de type tableau, le résultat sera l’adresse du premier élément du tableau puisque seuls les éléments du tableau ont une adresse."
Peut-être que c’est moi qui comprends rien du coup mais là je suis perdu…</p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243422">AScriabine</a></figcaption></figure>
<p>Les explications du cours sont exactes. Un pointeur sur un tableau contient l’adresse du premier élément du tableau. Tu peux vérifier cela aisément à l’aide du code suivant, les trois adresses affichées sont identiques.</p>
<div class="hljs-code-div hljs-code-c"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span><span data-count="8"></span><span data-count="9"></span><span data-count="10"></span><span data-count="11"></span><span data-count="12"></span></div><pre><code class="hljs language-c"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string"><stdio.h></span></span>
<span class="hljs-function"><span class="hljs-keyword">int</span>
<span class="hljs-title">main</span><span class="hljs-params">(<span class="hljs-keyword">void</span>)</span> </span>{
<span class="hljs-keyword">int</span> t[<span class="hljs-number">2</span>] = { <span class="hljs-number">1</span>, <span class="hljs-number">2</span> };
<span class="hljs-keyword">int</span> (*p)[<span class="hljs-number">2</span>] = &t;
<span class="hljs-built_in">printf</span>(<span class="hljs-string">"%p\n"</span>, (<span class="hljs-keyword">void</span> *)t);
<span class="hljs-built_in">printf</span>(<span class="hljs-string">"%p\n"</span>, (<span class="hljs-keyword">void</span> *)&t);
<span class="hljs-built_in">printf</span>(<span class="hljs-string">"%p\n"</span>, (<span class="hljs-keyword">void</span> *)p);
<span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}
</code></pre></div>
<p>Le type est différent, mais l’adresse est la même (sur le fond c’est logique, dans tous les cas on manipule un tableau, qui est une suite contiguë d’objets de même type et qui réside au même endroit en mémoire). Le typage différent permet au compilateur de calculer et d’effectuer correctement les accès, par exemple via l’opérateur <code>[]</code>, mais c’est tout. </p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434222022-06-04T16:28:21+02:00AScriabine/@AScriabinehttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243422<p><a href="/@Taurre" rel="nofollow" class="ping ping-link">@<span class="ping-username">Taurre</span></a> y aurait-il donc une erreur dans le cours sur les tableaux ? Mes remarques se sont basées sur ce point jusqu’à présent…
"Lorsqu’il est appliqué à une variable de type tableau, l’opérateur & produit comme résultat l’adresse du premier élément du tableau." ; "Dès lors, lorsque l’opérateur & est appliqué à une variable de type tableau, le résultat sera l’adresse du premier élément du tableau puisque seuls les éléments du tableau ont une adresse."
Peut-être que c’est moi qui comprends rien du coup mais là je suis perdu…</p>
<p>D’ailleurs cette phrase me parait donc complètement fausse ?
"Également, puisqu’une variable de type tableau n’est plus un pointeur, celle-ci n’a pas d’adresse. Dès lors, lorsque l’opérateur & est appliqué à une variable de type tableau, le résultat sera l’adresse du premier élément du tableau puisque seuls les éléments du tableau ont une adresse."</p>
<p>En lisant un autre tuto du site ("la vérité sur les tableaux et les pointeurs"), il apparaît en effet que & appliqué à un tableau renvoie un pointeur sur un tableau ce qui vient appuyer les dires des intervenants ici. Cela montre à mon sens une terrible erreur du cours principal de ce site sur les tableaux. Révolution !
D’habitude je ne corrige que des fautes d’orthographe, on dirait que j’ai mis le doigt sur quelque chose de plus intéressant <img src="/static/smileys/svg/smile.svg" alt=":)" class="smiley"></p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434182022-06-04T08:27:16+02:00Taurre/@Taurrehttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243418<figure><blockquote>
<p><a href="/@Taurre" rel="nofollow" class="ping ping-link">@<span class="ping-username">Taurre</span></a> Je ferais la même remarque qu’à <a href="/@gbdivers" rel="nofollow" class="ping ping-link">@<span class="ping-username">gbdivers</span></a> : la syntaxe <code>int (*p)[2] = &a;</code> ne compile pas car &a désigne un pointeur sur un int et int (*p)[2] un pointeur sur un tableau <img src="/static/smileys/svg/clin.svg" alt=";)" class="smiley"></p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243414">AScriabine</a></figcaption></figure>
<p>Chez moi cela compile sans problème, j’ai testé l’exemple avant de le publier.
A priori il n’y a pas de raison que cela ne fonctionne pas, comme tu l’as dit, l’emploie de l’opérateur <code>&</code> est une exception à la règle de la conversion implicite d’un tableau vers un pointeur sur son première élément. <code>&tab</code> donne donc bien un pointeur sur un tableau.</p>
<p><strong>Edit</strong> : par ailleurs, à supposer que la conversion soit fausse, ce qui n’est à ma connaissance pas le cas, le compilateur émettrait un avertissement et non une erreur.</p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434172022-06-04T02:01:38+02:00gbdivers/@gbdivershttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243417<figure><blockquote>
<p>Nop. <code>t</code> est <em>convertible</em> en <code>int*</code>.</p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243416">jo_link_noir</a></figcaption></figure>
<p>(j’ai volontairement retiré la note qui faisait la distinction "est" et "est (conversion implicit)", je voulais pas entrer dans des détails que je ne maitrise pas assez)</p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434162022-06-04T01:56:41+02:00jo_link_noir/@jo_link_noirhttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243416<blockquote>
<p>Donc t est bien de type <code>int*</code> et peut donc être assigné directement à <code>int*</code></p>
</blockquote>
<p>Nop. <code>t</code> est <em>convertible</em> en <code>int*</code>. Comme c’est un tableau, il y a du decay partout et il sera affiché la plupart du temps comme un <code>int*</code>.</p>
<p>Par contre, cette transformation ne peut s’appliquer sur un pointeur de <code>int[2]</code> puisque le layout est différent d’un pointeur sur <code>int*</code>. Ce qui fait que seule la première dimension d’un tableau est affiché comme un pointeur.</p>
<p>Le même phénomène se rencontre aussi lorsque qu’on manipule des <code>int[2][3]</code>. Le compilateur aura tendance à afficher <code>int(*)[3]</code> (plus gcc que clang).</p>
<div class="hljs-code-div hljs-code-text"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span></div><pre><code class="hljs language-text">mémoire: [ int | int | int | int | int | ... ]
^ __________^
\ /
int**: => [ int*, int*, ... ]
</code></pre></div>
<p>La mémoire n’est pas continue pour chaque élément</p>
<div class="hljs-code-div hljs-code-text"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span></div><pre><code class="hljs language-text">mémoire: [ int | int | int | int | int | ... ]
^_____^ ^_____^
\ /
int(*)[2] => [ int[2], int[2], ... ]
</code></pre></div>
<p>La mémoire est continue et chaque élément fait référence à une suite de 2 <code>int</code>.</p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434152022-06-04T00:47:37+02:00gbdivers/@gbdivershttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243415<figure><blockquote>
<p>une erreur que tu as commise : </p>
<div class="hljs-code-div hljs-code-text"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span></div><pre><code class="hljs language-text">int t[2];
pTab = &t; // ca marche ?
</code></pre></div>
<p></p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243412">AScriabine</a></figcaption></figure>
<p>Je n’ai pas fait d’erreur, puisque je pose justement la question de si ca marche <img src="/static/smileys/svg/ange.svg" alt=":ange:" class="smiley"> </p>
<p>Bon, plus sérieusement, j’avais testé le code, il semble correct.</p>
<p><img src="/media/galleries/5809/99c2d420-4ecb-401b-a394-14540960eda2.png"></p>
<p>Sans &, j’ai l’erreur :</p>
<p><img src="/media/galleries/5809/3d18b8c4-66c4-4643-9403-54020d77103f.png"></p>
<p>Testé avec clang et gcc.</p>
<p>Si je fais le test avec un pointeur sur int :</p>
<div class="hljs-code-div hljs-code-text"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span></div><pre><code class="hljs language-text">prog.c:7:10: warning: assignment to 'int (*)[2]' from incompatible pointer type 'int *' [-Wincompatible-pointer-types]
7 | pTab = t; // ca marche ?
| ^
prog.c:8:14: warning: initialization of 'int *' from incompatible pointer type 'int (*)[2]' [-Wincompatible-pointer-types]
8 | int* p = &t;
| ^
</code></pre></div>
<p>Donc <code>t</code> est bien de type <code>int*</code> et peut donc être assigné directement à <code>int*</code>, mais pas à <code>int (*)[2]</code>. <code>&t</code> est bien de type <code>int (*)[2]</code>.</p>
<p>Pour les explications du pourquoi, je laisse d’autres répondre, je sais pas.</p>
<p>Mais d’où l’importance de tester.</p>Des pointeurs de fonctions qui renvoient des pointeurs de tableaux... Des avis ?, message #2434142022-06-04T00:05:20+02:00AScriabine/@AScriabinehttps://zestedesavoir.com/forums/sujet/16297/des-pointeurs-de-fonctions-qui-renvoient-des-pointeurs-de-tableaux-des-avis/?page=1#p243414<p><a href="/@Taurre" rel="nofollow" class="ping ping-link">@<span class="ping-username">Taurre</span></a> Je ferais la même remarque qu’à <a href="/@gbdivers" rel="nofollow" class="ping ping-link">@<span class="ping-username">gbdivers</span></a> : la syntaxe <code>int (*p)[2] = &a;</code> ne compile pas car &a désigne un pointeur sur un int et int (*p)[2] un pointeur sur un tableau <img src="/static/smileys/svg/clin.svg" alt=";)" class="smiley"></p>