- Call_BB5ANiveau 5
L'humain ne rentre pas en ligne de compte si on considère qu'une entrée peut être aussi effectuée sur un fichier.wanax a écrit:Quitte à divaguer: il y a une composée : g la fonction (clavier -> variable nom), f la fonction effectuée par le cerveau humain ( question lue -> réponse choisie )
Si on décide que input, c'est g o f, tu as raison, si on décide que c'est g, c'est moi.
( Et je suis prêt à changer d'avis. )
Pour que g soit une fonction au sens mathématique il faut que la valeur retournée par g soit l'image de l'argument explicite passé à g. Il ne peut y avoir de variable cachée ou de paramètre extérieur... de la même façon que cos(60°) est parfaitement défini comme étant l'image de 60°, et constitue un nombre qui ne peut varier (cos(60°) est invariablement égal à 0.5).
Voici un exemple peut-être plus convaincant en Python :
- Code:
mot1 = input("mot suivant ?")
mot2 = input("mot suivant ?")
Il est clair que les variables mot1 et mot2 peuvent contenir des valeurs différentes, quand bien même on appelle dans les deux cas la fonction input avec le même argument (la chaîne "mot suivant ?"). La fonction informatique input n'est pas une fonction au sens mathématique.
Puisque le basic ZX81 est proche du QBasic/QuickBasic, voici un programme dans lequel la fonction Entree$, qui est appelée avec le même argument "Mot suivant ?", ne retourne pas toujours la même valeur. Ceci permet d'affirmer que Entree$ n'est pas une fonction mathématique.
- Code:
DECLARE FUNCTION Entree$ (Message$)
Mot1$ = Entree$("Mot suivant ?")
Mot2$ = Entree$("Mot suivant ?")
PRINT "Mot1="; Mot1$
PRINT "Mot2="; Mot2$
END
FUNCTION Entree$ (Message$)
PRINT Message$;
INPUT Reponse$
Entree$ = Reponse$
END FUNCTION
- MoonchildSage
Mais dans l'instruction :
En fait, la fonction input a, comme Kisscool, un double effet : d'un côté elle affiche du texte et de l'autre elle saisit une valeur. Pour ce que je comprends, on peut considérer que "mot suivant ?" intervient comme argument au niveau de l'affichage (et là le résultat est bien déterminé) mais ça me semble plus confus pour ce qui est de la saisie.
- Code:
input("mot suivant ?")
En fait, la fonction input a, comme Kisscool, un double effet : d'un côté elle affiche du texte et de l'autre elle saisit une valeur. Pour ce que je comprends, on peut considérer que "mot suivant ?" intervient comme argument au niveau de l'affichage (et là le résultat est bien déterminé) mais ça me semble plus confus pour ce qui est de la saisie.
- e1654dNiveau 7
En Python,
C'est purement syntaxique ; je ne comprends pas du tout la discussion en cours pour savoir ce qui serait ou ne serait pas l'argument. C'est déterminé de façon complètement formelle ; d'ailleurs si on écrit
Et effectivement (c'est le cas de le dire), input est une fonction qui produit des effets quand on l'appelle, des effets qui permettent l'interaction avec le clavier. C'est une fonction impure et input("machin") est une expression impure.
- Code:
input("mot suivant ?")
C'est purement syntaxique ; je ne comprends pas du tout la discussion en cours pour savoir ce qui serait ou ne serait pas l'argument. C'est déterminé de façon complètement formelle ; d'ailleurs si on écrit
- Code:
2(3)
Et effectivement (c'est le cas de le dire), input est une fonction qui produit des effets quand on l'appelle, des effets qui permettent l'interaction avec le clavier. C'est une fonction impure et input("machin") est une expression impure.
- BalthazaardVénérable
Au passage, histoire de jeter un peu d'eau/ huile sur le feu, je suis convié (forcé) à un stage d'algo avec notamment au menu les programmes de seconde et dans un programme de démonstration en Python cité (ie en exemple et non pas contre exemple) figure
def somme (a,b):
print ("je calcule")
return a+b
(ce n'est pas le vrai exemple mais la structure est respectée)
Il semble que tout soit clair...
def somme (a,b):
print ("je calcule")
return a+b
(ce n'est pas le vrai exemple mais la structure est respectée)
Il semble que tout soit clair...
- e1654dNiveau 7
Si c'est pour montrer ce qui se passe quand on appelle une fonction, pourquoi pas. J'ai aussi un TP où j'introduis
C'est pratique pour faire constater l'évaluation paresseuse des opérateurs booléens, par exemple :
Mais on oublie vite fait cette chose là.
Si c'est fait de façon systématique par contre, ça me parait un peu curieux.
- Code:
def idb(x) :
print(x)
return x
C'est pratique pour faire constater l'évaluation paresseuse des opérateurs booléens, par exemple :
- Code:
idb(1+1 == 2) or idb(4 < 3)
idb(4<3) or idb(1+1==2)
Mais on oublie vite fait cette chose là.
Si c'est fait de façon systématique par contre, ça me parait un peu curieux.
- MoonchildSage
Là encore, je ne suis pas en mesure de saisir la différence et j'en reviens à la question que j'avais posée à la page précédente : quelle est la définition précise d'une "fonction" en informatique ?e1654d a écrit:En Python,
n'est pas une instruction mais un appel de fonction. Il s'agit de l'appel de la fonction input avec l'argument (ou paramètre effectif) "mot suivant ?". Le fait qu'il s'agisse d'un appel est déterminé par la forme xxx(yyyyy) : le xxx est le nom de la fonction appelée, le yyyyy est le paramètre effectif.
- Code:
input("mot suivant ?")
C'est purement syntaxique ; je ne comprends pas du tout la discussion en cours pour savoir ce qui serait ou ne serait pas l'argument. C'est déterminé de façon complètement formelle ; d'ailleurs si on écrit
, il s'agit de l'appel de 2 avec le paramètre 3, ce qui échoue bien entendu parce que 2 étant un entier, il n'est pas susceptible d'être appelé.
- Code:
2(3)
Et effectivement (c'est le cas de le dire), input est une fonction qui produit des effets quand on l'appelle, des effets qui permettent l'interaction avec le clavier. C'est une fonction impure et input("machin") est une expression impure.
Au passage, il serait utile aussi de définir ce qu'est une "instruction" pour éviter d'en voir une là où il n'y en a pas, et aussi de préciser ce qui distingue une fonction "impure" d'une fonction qui ne l'est pas.
Dans le manuel Indice de seconde dont j'ai la nouvelle édition sous les yeux, il est donné la définition suivante :
Si cette définition est correcte - ce dont je ne suis pas sûr - alors, d'une part, je ne vois pas clairement de différence fondamentale avec une fonction mathématique (si ce n'est que certaines fonctions mathématiques ne sont pas concrètement programmables - comme l'indicatrice de Q citée dans un autre fil) et, d'autre part, je n'arrive pas totalement à me convaincre que input est une fonction puisque l'appeler avec un paramètre donné (par exemple "mot suivant ?" ou "machin") ne suffit pas à ce qu'elle s'exécute entièrement et renvoie un résultat sans qu'il n'y ait en plus une intervention extérieure.Un fonction est un bloc d'instructions qui a reçu un nom, dont le fonctionnement dépend d'un certain nombre de paramètres (les arguments) et qui renvoie un résultat (au moyen de l'instruction retourne).
- VinZTDoyen
Sans compter que les paramètres peuvent être optionnels, ou prédéfinis.
def bonjour():
print("bonjour")
ne serait pas une fonction au sens de la définition précédente, bizarre …
J'ai une idée : et si on laissait les cours d'informatique aux informaticiens ?
def bonjour():
print("bonjour")
ne serait pas une fonction au sens de la définition précédente, bizarre …
J'ai une idée : et si on laissait les cours d'informatique aux informaticiens ?
_________________
« Il ne faut pas croire tout ce qu'on voit sur Internet » Victor Hugo.
« Le con ne perd jamais son temps. Il perd celui des autres. » Frédéric Dard
« Ne jamais faire le jour même ce que tu peux faire faire le lendemain par quelqu'un d'autre » Pierre Dac
« Je n'ai jamais lâché prise !» Claude François
« Un économiste est un expert qui saura demain pourquoi ce qu'il avait prédit hier ne s'est pas produit aujourd'hui. » Laurence J. Peter
- wanaxFidèle du forum
J'ai pensé à une chose similaire. ( Parce que quelqu'un mentionnait plus haut le problème de l'arrêt, bien que ce ne soit pas de ça qu'il s'agit. )je n'arrive pas totalement à me convaincre que input est une fonction puisque l'appeler avec un paramètre donné (par exemple "mot suivant ?" ou "machin") ne suffit pas à ce qu'elle s'exécute entièrement et renvoie un résultat sans qu'il n'y ait en plus une intervention extérieure.
Si l'appel à une fonction arrête l'exécution du programme, on peut qualifier ça de bug... dans l'esprit du programmeur, cela ne devrait pas se produire.
Si l'opérateur humain refuse d'appuyer sur Entrée, la fonction bugue, ce qui m'amène à penser que l'opérateur humain fait partie de la fonction telle que tu ( ed ) la conçois, puisque c'est la tâche qui lui a été demandée qui n'est pas effectuée et amène au blocage.
( L'argument qui dit que l'opérateur humain est superflu car on peut utiliser les données d'un fichier ne me satisfait pas: soit la donnée prise au sein du fichier est choisie de façon déterministe (*), auquel cas input devient une fonction qu'on peut définir au sens mathématique, soit elle est prise de façon réellement aléatoire dans le fichier liste et elle n'est alors qu'une 'fonction informatique' aléatoire. )
(*) Même si le procédé de choix est pseudo aléatoire.
Il manque quelqu'un dans cette discussion...
- MatheodHabitué du forum
Le plus simple c'est de juste se dire qu'une fonction en informatique sert juste à simplifier le code en évitant de réécrire des morceaux de codes que l'on utilisera plusieurs fois. Bon sauf pour les fonctions de bases du langages.
- gainzNiveau 8
En mathématiques, le résultat d'une fonction est unique lorsque la valeur de ses arguments sont fixés.
- e1654dNiveau 7
La définition de fonction proposée ci-dessus n'est pas mauvaise même si elle n'est pas très claire.
En vérité, c'est difficile de définir ce qu'est une fonction. Il est beaucoup plus simple de définir ce qu'est une définition de fonction et un appel de fonction, de façon parallèle.
C'est analogue à beaucoup de situations en mathématiques. Qu'est-ce qu'un point ? Qu'est-ce qu'une droite ? « Par deux points, il passe une droite et une seule », voilà ce qui définit et le point et la droite.
Qu'est-ce qu'un vecteur en toute généralité ? Ça n'est rien. C'est un élément d'un espace vectoriel.
Et d'ailleurs, dans toutes les spécifications de langages de programmation, on se garde bien de dire ce qu'est une fonction. On dit seulement comment les définir et comment les appeler.
Le principal point qui me dérange, c'est le mot « retourne » qui est un anglicisme pour « renvoie ».Un fonction est un bloc d'instructions qui a reçu un nom, dont le fonctionnement dépend d'un certain nombre de paramètres (les arguments) et qui renvoie un résultat (au moyen de l'instruction retourne).
En vérité, c'est difficile de définir ce qu'est une fonction. Il est beaucoup plus simple de définir ce qu'est une définition de fonction et un appel de fonction, de façon parallèle.
C'est analogue à beaucoup de situations en mathématiques. Qu'est-ce qu'un point ? Qu'est-ce qu'une droite ? « Par deux points, il passe une droite et une seule », voilà ce qui définit et le point et la droite.
Qu'est-ce qu'un vecteur en toute généralité ? Ça n'est rien. C'est un élément d'un espace vectoriel.
Et d'ailleurs, dans toutes les spécifications de langages de programmation, on se garde bien de dire ce qu'est une fonction. On dit seulement comment les définir et comment les appeler.
- e1654dNiveau 7
Non, car dans le cas d'espèce, c'est le comportement attendu de la fonction.wanax a écrit:Si l'appel à une fonction arrête l'exécution du programme, on peut qualifier ça de bug...
- Call_BB5ANiveau 5
Les définitions d'une fonction et d'une instruction sont dépendantes du langage informatique utilisé. Ça complique un peu les choses...Moonchild a écrit:Là encore, je ne suis pas en mesure de saisir la différence et j'en reviens à la question que j'avais posée à la page précédente : quelle est la définition précise d'une "fonction" en informatique ? [...]Au passage, il serait utile aussi de définir ce qu'est une "instruction" pour éviter d'en voir une là où il n'y en a pas, et aussi de préciser ce qui distingue une fonction "impure" d'une fonction qui ne l'est pas.
En Python:Si cette définition est correcte [...] , je ne vois pas clairement de différence fondamentale avec une fonction mathématique (si ce n'est que certaines fonctions mathématiques ne sont pas concrètement programmables [...]
- Code:
a = 5
def f(x):
global a
a = a+1
return x+a
f(0) # retourne 6
f(0) # retourne 7
f(0) # retourne 8
Ici f est une fonction informatique (le mot clef def sert à définir une fonction en Python) mais ce n'est pas une fonction mathématique puisque 0 ne peut avoir plus d'une seule image (or ici les valeurs retournées sont 6, 7, 8, etc...).
Un programme ne fonctionne pas de lui-même, il doit être exécuté sur un système informatique qu'on peut aussi qualifier d'intervention extérieure...et, d'autre part, je n'arrive pas totalement à me convaincre que input est une fonction puisque l'appeler avec un paramètre donné (par exemple "mot suivant ?" ou "machin") ne suffit pas à ce qu'elle s'exécute entièrement et renvoie un résultat sans qu'il n'y ait en plus une intervention extérieure.
Voici l'exemple du input sans intervention humaine, si ce n'est l'exécution du programme :
- Code:
echo -e "livre\npomme" | python3 -c 'mot1 = input("mot suivant ?");mot2 = input("mot suivant ?");print("mot1 =", mot1);print("mot2 =", mot2);'
A la sortie on constate que mot1 = livre et mot2 = pomme. Alors que la fonction informatique input a dans les deux cas été appelée avec le même argument ("mot suivant ?"), elle n'a pas retourné la même valeur ; contrairement à une fonction mathématique.
- BalthazaardVénérable
VinZT a écrit:Sans compter que les paramètres peuvent être optionnels, ou prédéfinis.
def bonjour():
print("bonjour")
ne serait pas une fonction au sens de la définition précédente, bizarre …
J'ai une idée : et si on laissait les cours d'informatique aux informaticiens ?
Et même encore mieux, ici on ne parle semble t-il que de Python, en java on peut parfaitement dans une classe définir deux méthodes (qu'est-ce qu'une méthode sinon une "fonction" propre à une classe) qui ont le même nom mais différent par le nombre d'arguments genre x=instanceOfMachin.toto(a,b) ou x=instanceOfMachin.toto(a) ou même une seule méthode qui admet un nombre variable d'arguments, on est assez loin des analogies avec les maths
- chmarmottineGuide spirituel
Personnellement, je crois que je vais me mettre au chinois.
- FurbyNiveau 9
Pleure pas, céline, tu n'es pas seule
Sérieux, ces débats de spécialistes me font suer. J'attends toujours que l'un d'entre eux veuille bien m'expliquer ce que permet python et qu'algobox ne permet plus selon les nouveaux textes. De façon compréhensible bien sûr, parce que si moi, prof de math, je ne comprends pas, je vois mal comment en convaincre des élèves de seconde qui n'en ont rien à f...
Comme fait exprès, dans mon établissement, python n'arrive pas à tourner sur nos petits ebooks un peu âgés, pas assez de mémoire. Donc on pratique avec algobox ce qu'on explique sur papier à propos de python, et je ne vois absolument pas de problème.
Sérieux, ces débats de spécialistes me font suer. J'attends toujours que l'un d'entre eux veuille bien m'expliquer ce que permet python et qu'algobox ne permet plus selon les nouveaux textes. De façon compréhensible bien sûr, parce que si moi, prof de math, je ne comprends pas, je vois mal comment en convaincre des élèves de seconde qui n'en ont rien à f...
Comme fait exprès, dans mon établissement, python n'arrive pas à tourner sur nos petits ebooks un peu âgés, pas assez de mémoire. Donc on pratique avec algobox ce qu'on explique sur papier à propos de python, et je ne vois absolument pas de problème.
- BalthazaardVénérable
Python n'est pas très gourmand, bizzare que cela ne tourne pas.
Pour ce que tu dis, bien que je déteste autant python qu'algobox, je répondrais à ta question RIEN...au niveau du lycée.
Je suis complotiste...
Je pense que comme toujours, les programmes sont aux mains, ou inspirés par des spécialistes , très compétents dans leur matière, mais qui sont de fortes personnalités et qui veulent à tout prix influencer le monde de l'éducation dans la vision qu'ils ont, sans rien connaître du quotidien des élèves auxquels ils réfèrent.
L'argument comme quoi, si on se hasarde à mettre un print dans une fonction on va traumatiser à vie des élèves à un point tel que lorsqu'il seront en spé (0,001 du total) ils ne pourront plus perdre ces mauvaises habitudes et, qu'en pleine crise existentielle, engagés chez Apple, cela provoquera des bugs dans iOS2000 du nouvel iphone 100X cela me fait un peu rigoler
Pour ce que tu dis, bien que je déteste autant python qu'algobox, je répondrais à ta question RIEN...au niveau du lycée.
Je suis complotiste...
Je pense que comme toujours, les programmes sont aux mains, ou inspirés par des spécialistes , très compétents dans leur matière, mais qui sont de fortes personnalités et qui veulent à tout prix influencer le monde de l'éducation dans la vision qu'ils ont, sans rien connaître du quotidien des élèves auxquels ils réfèrent.
L'argument comme quoi, si on se hasarde à mettre un print dans une fonction on va traumatiser à vie des élèves à un point tel que lorsqu'il seront en spé (0,001 du total) ils ne pourront plus perdre ces mauvaises habitudes et, qu'en pleine crise existentielle, engagés chez Apple, cela provoquera des bugs dans iOS2000 du nouvel iphone 100X cela me fait un peu rigoler
- FurbyNiveau 9
Les informaticiens disent que ça plante parce qu'il y a trop de choses dans ces petites bêtes, ils proposent donc de virer Xcas, Scilab, geogebra, excel... On a dit non.Balthazaard a écrit:Python n'est pas très gourmand, bizzare que cela ne tourne pas.
Merci. Enfin une réponse claire. C'est bien ce que je pensais.Balthazaard a écrit:Pour ce que tu dis, bien que je déteste autant python qu'algobox, je répondrais à ta question RIEN...au niveau du lycée.
- MoonchildSage
e1654d a écrit:C'est analogue à beaucoup de situations en mathématiques. Qu'est-ce qu'un point ? Qu'est-ce qu'une droite ? « Par deux points, il passe une droite et une seule », voilà ce qui définit et le point et la droite.
Ainsi, par les points D1 et D2, il passe une droite et une seule : la droite O. :diable:
Sauf bien sûr lorsque les points sont parallèles...
Je crois comprendre que du point de vue de la syntaxe, cette fonction f n'a qu'un seul argument (la variable x) et ne renvoie comme résultat qu'un seul nombre ; mais d'un point de vue purement théorique, elle contient un paramètre implicite (la variable a) et son "résultat" se compose de deux nombres : celui qui est renvoyé et la nouvelle valeur de a. En dehors de la question de syntaxe, est-ce que f n'est pas de manière formelle une fonction de R² dans R² ?Call_BB5A a écrit:
En Python:
- Code:
a = 5
def f(x):
global a
a = a+1
return x+a
f(0) # retourne 6
f(0) # retourne 7
f(0) # retourne 8
Ici f est une fonction informatique (le mot clef def sert à définir une fonction en Python) mais ce n'est pas une fonction mathématique puisque 0 ne peut avoir plus d'une seule image (or ici les valeurs retournées sont 6, 7, 8, etc...).
e1654d a écrit:En vérité, c'est difficile de définir ce qu'est une fonction. Il est beaucoup plus simple de définir ce qu'est une définition de fonction et un appel de fonction, de façon parallèle.
.../...
Et d'ailleurs, dans toutes les spécifications de langages de programmation, on se garde bien de dire ce qu'est une fonction. On dit seulement comment les définir et comment les appeler.
Cela devrait suffire à en tirer deux conclusions :Call_BB5A a écrit:Les définitions d'une fonction et d'une instruction sont dépendantes du langage informatique utilisé. Ça complique un peu les choses...
- l'enseignement de l'informatique devrait être confié à des personnels qualifiés plutôt qu'à ceux pour qui tout cela est très confus et qui, comme moi, ne comprennent pas la moitié des exemples cités ici faute de maîtrise la syntaxe en Python ou en Qbasic (par exemple, dans l'un des derniers messages, je ne sais pas ce que signifie "echo -e" ) ;
- quand bien même certains profs de maths auraient les compétences informatiques requises, il n'est pas pédagogiquement judicieux d'aborder cette mystérieuse notion de fonction informatique dans le cadre d'un cours de mathématiques alors que la notion de fonction mathématique qui est beaucoup plus simple puisqu'elle peut être clairement définie - et d'autant plus simple qu'au secondaire elle se cantonne aux fonctions de R dans R - n'est pas encore maîtrisée par les élèves (et cela me conforte dans l'idée que, puisqu'il a été décidé que cela se ferait pendant les heures de maths, il ne faut surtout pas s'empresser de parler de fonction informatique dès la classe de seconde).
- wanaxFidèle du forum
En fait, l'exemple précédent ( def f avec a ) montre, comme un autre exemple plus haut, le rôle du temps.
( a, incrémenté à chaque appel, peut être vu comme un temps. )
Quant à l'utilité de faire de l'informatique au lycée...il y a clairement des universitaires derrière ( Dowek... ), des intérêts ( tous ces informaticiens qu'on va avoir pour pas cher... ), des gestionnaires ( on n'a qu'à recruter des profs de maths-info, on dira que ce sont des profs de maths, vu que l'espèce se fait rare... )
ça va être grandiose.
( a, incrémenté à chaque appel, peut être vu comme un temps. )
Quant à l'utilité de faire de l'informatique au lycée...il y a clairement des universitaires derrière ( Dowek... ), des intérêts ( tous ces informaticiens qu'on va avoir pour pas cher... ), des gestionnaires ( on n'a qu'à recruter des profs de maths-info, on dira que ce sont des profs de maths, vu que l'espèce se fait rare... )
ça va être grandiose.
- BalthazaardVénérable
L'exemple me parait plus un exemple de ce qu'il ne faut surtout pas faire , mais, on peut l'écrire et donc c'est bien une fonction.
De toute manière, pour autant que je sache la "fonction informatique" est une invention de programmeur, qui a du apparaitre dans les premières versions de Fortran. Vouloir en tirer une définition formelle aboutira à de telles restrictions que la notion en deviendra inutilisable. Pour moi parler de fonction, en programmation dans un langage donné a un sens , vouloir pompeusement ériger la notion de "fonction informatique" comme disent les programmes ne mène pas à grand chose.
De toute manière, pour autant que je sache la "fonction informatique" est une invention de programmeur, qui a du apparaitre dans les premières versions de Fortran. Vouloir en tirer une définition formelle aboutira à de telles restrictions que la notion en deviendra inutilisable. Pour moi parler de fonction, en programmation dans un langage donné a un sens , vouloir pompeusement ériger la notion de "fonction informatique" comme disent les programmes ne mène pas à grand chose.
- Call_BB5ANiveau 5
Je ne pense pas, parce qu'une fonction mathématique n'a pas de mémoire. Présenter f comme une fonction qui à (a,x) associerait (a+1,a+1+x) ne permettrait pas de savoir qu'il faut réutiliser la valeur de a+1 obtenue comme première coordonnée de l'image précédente.Moonchild a écrit:En dehors de la question de syntaxe, est-ce que f n'est pas de manière formelle une fonction de R² dans R² ?
Oui, mais qui ? Pas sûr que l'éducation nationale réussisse à recruter des personnes compétentes avec les salaires proposés et des conditions de travail difficiles (des heures à effectuer sur plusieurs établissements si on parle de la programmation en seconde).- l'enseignement de l'informatique devrait être confié à des personnels qualifiés
C'est du BASH, ça signifie d'écrire ce qui est indiqué entre guillemets en remplaçant le \n par un retour à la ligne...je ne sais pas ce que signifie "echo -e"
On ne peut s'interdire de parler de fonction informatique dès lors que le contexte est clairement posé.- quand bien même certains profs de maths auraient les compétences informatiques requises, il n'est pas pédagogiquement judicieux d'aborder cette mystérieuse notion de fonction informatique dans le cadre d'un cours de mathématiques alors que la notion de fonction mathématique qui est beaucoup plus simple puisqu'elle peut être clairement définie - et d'autant plus simple qu'au secondaire elle se cantonne aux fonctions de R dans R - n'est pas encore maîtrisée par les élèves (et cela me conforte dans l'idée que, puisqu'il a été décidé que cela se ferait pendant les heures de maths, il ne faut surtout pas s'empresser de parler de fonction informatique dès la classe de seconde).
A trop vouloir simplifier, on en est arrivé par exemple à supprimer le mot application du vocabulaire de géométrie quand on parle de symétrie, de translation, ... C'est dommage car ça n'aide finalement pas à établir des liens entre les notions.
- MoonchildSage
Ainsi donc l'une des différences entre les fonctions mathématiques et ce qui est appelé "fonctions" en informatique serait que ces dernières peuvent éventuellement être dépendantes d'un contexte qui n'est pas spécifié dans les arguments, autrement dit en quelque sorte de paramètres cachés ?Call_BB5A a écrit:Je ne pense pas, parce qu'une fonction mathématique n'a pas de mémoire. Présenter f comme une fonction qui à (a,x) associerait (a+1,a+1+x) ne permettrait pas de savoir qu'il faut réutiliser la valeur de a+1 obtenue comme première coordonnée de l'image précédente.Moonchild a écrit:En dehors de la question de syntaxe, est-ce que f n'est pas de manière formelle une fonction de R² dans R² ?
Dans le cas présent, il ne s'agit pas de supprimer un mot qui permettait d'unifier ou de clarifier des notions mais d'éviter que dans le cadre du même cours - celui de maths - on utilise un même mot pour désigner deux notions qui sont distinctes bien que coïncidant parfois mais pas toujours et dont l'une semble ne pas avoir de véritable définition au sens où l'entendrait un mathématicien (ce qui, si la programmation est intégrée au cours de maths, risque de conduire à un hiatus pédagogique).Call_BB5A a écrit:On ne peut s'interdire de parler de fonction informatique dès lors que le contexte est clairement posé.- quand bien même certains profs de maths auraient les compétences informatiques requises, il n'est pas pédagogiquement judicieux d'aborder cette mystérieuse notion de fonction informatique dans le cadre d'un cours de mathématiques alors que la notion de fonction mathématique qui est beaucoup plus simple puisqu'elle peut être clairement définie - et d'autant plus simple qu'au secondaire elle se cantonne aux fonctions de R dans R - n'est pas encore maîtrisée par les élèves (et cela me conforte dans l'idée que, puisqu'il a été décidé que cela se ferait pendant les heures de maths, il ne faut surtout pas s'empresser de parler de fonction informatique dès la classe de seconde).
A trop vouloir simplifier, on en est arrivé par exemple à supprimer le mot application du vocabulaire de géométrie quand on parle de symétrie, de translation, ... C'est dommage car ça n'aide finalement pas à établir des liens entre les notions.
A plus forte raison, il me semblerait raisonnable de ne pas introduire ces deux notions la même année et durant le même cours ; si dans un cadre mal délimité où l'informatique est abordée par le biais de problèmes mathématiques, l'enseignant doit jongler en permanence entre la casquette de mathématicien et la casquette de programmeur, avec tout ce que ça implique comme divergence d'approche et de "culture", je n'ose imaginer les confusions que cela peut générer chez les élèves.
Même avec des enseignants formés à la programmation, je ne vois pas comment, dans de telles conditions, le contexte pourrait être clairement posé pour le public concerné... à moins bien sûr de séparer l'enseignement de l'informatique de celui des maths.
- BalthazaardVénérable
Moonchild a écrit:Ainsi donc l'une des différences entre les fonctions mathématiques et ce qui est appelé "fonctions" en informatique serait que ces dernières peuvent éventuellement être dépendantes d'un contexte qui n'est pas spécifié dans les arguments, autrement dit en quelque sorte de paramètres cachés ?Call_BB5A a écrit:Je ne pense pas, parce qu'une fonction mathématique n'a pas de mémoire. Présenter f comme une fonction qui à (a,x) associerait (a+1,a+1+x) ne permettrait pas de savoir qu'il faut réutiliser la valeur de a+1 obtenue comme première coordonnée de l'image précédente.Moonchild a écrit:En dehors de la question de syntaxe, est-ce que f n'est pas de manière formelle une fonction de R² dans R² ?Dans le cas présent, il ne s'agit pas de supprimer un mot qui permettait d'unifier ou de clarifier des notions mais d'éviter que dans le cadre du même cours - celui de maths - on utilise un même mot pour désigner deux notions qui sont distinctes bien que coïncidant parfois mais pas toujours et dont l'une semble ne pas avoir de véritable définition au sens où l'entendrait un mathématicien (ce qui, si la programmation est intégrée au cours de maths, risque de conduire à un hiatus pédagogique).Call_BB5A a écrit:On ne peut s'interdire de parler de fonction informatique dès lors que le contexte est clairement posé.- quand bien même certains profs de maths auraient les compétences informatiques requises, il n'est pas pédagogiquement judicieux d'aborder cette mystérieuse notion de fonction informatique dans le cadre d'un cours de mathématiques alors que la notion de fonction mathématique qui est beaucoup plus simple puisqu'elle peut être clairement définie - et d'autant plus simple qu'au secondaire elle se cantonne aux fonctions de R dans R - n'est pas encore maîtrisée par les élèves (et cela me conforte dans l'idée que, puisqu'il a été décidé que cela se ferait pendant les heures de maths, il ne faut surtout pas s'empresser de parler de fonction informatique dès la classe de seconde).
A trop vouloir simplifier, on en est arrivé par exemple à supprimer le mot application du vocabulaire de géométrie quand on parle de symétrie, de translation, ... C'est dommage car ça n'aide finalement pas à établir des liens entre les notions.
A plus forte raison, il me semblerait raisonnable de ne pas introduire ces deux notions la même année et durant le même cours ; si dans un cadre mal délimité où l'informatique est abordée par le biais de problèmes mathématiques, l'enseignant doit jongler en permanence entre la casquette de mathématicien et la casquette de programmeur, avec tout ce que ça implique comme divergence d'approche et de "culture", je n'ose imaginer les confusions que cela peut générer chez les élèves.
Même avec des enseignants formés à la programmation, je ne vois pas comment, dans de telles conditions, le contexte pourrait être clairement posé pour le public concerné... à moins bien sûr de séparer l'enseignement de l'informatique de celui des maths.
C'est surtout qu'outre le résultat qu'elles retournent, elles peuvent modifier des variables qui n'apparaissent pas explicitement dans l'appel de la fonction comme dans le petit programme cité.
En maths on peut écrire f(x)= 3x²+2x+c, le calcul sera différent suivant la valeur de c, f dépend en quelque sorte d'un contexte, ce qui n'est pas tout à fait équivalent à f(x,y)= 3x²+2x+y
Si tu as un peu l'habitude, une fonction peut même modifier la valeur qui lui est passé en paramètre si le type d'appel est par référence, quant au passage par nom (genre algol)...joker
- e1654dNiveau 7
En Python, il n'y a pas d'appel par référence donc la question ne se pose pas.
Quant aux variables globales, on peut tout à fait, et donc on doit, s'abstenir de les utiliser dans le cadre de ce qui est demandé. Dès lors qu'on s'abstient de print et input et qu'on n'utilise pas non plus de listes, on n'a donc que des fonctions pures, qui elles se comportent de façon analogue à ce qui se passe en math.
Il reste que la notion de fonction en informatique ne coïncide pas complètement avec la notion de même nom en math, et que le cours d'informatique gagnerait en effet à être donné par un spécialiste et à d'autres moments que le cours de math, ce qui permettrait aussi aux professeurs de math d'enseigner leur discipline pendant la totalité de leurs heures de cours, je suis bien d'accord.
Quant aux variables globales, on peut tout à fait, et donc on doit, s'abstenir de les utiliser dans le cadre de ce qui est demandé. Dès lors qu'on s'abstient de print et input et qu'on n'utilise pas non plus de listes, on n'a donc que des fonctions pures, qui elles se comportent de façon analogue à ce qui se passe en math.
Il reste que la notion de fonction en informatique ne coïncide pas complètement avec la notion de même nom en math, et que le cours d'informatique gagnerait en effet à être donné par un spécialiste et à d'autres moments que le cours de math, ce qui permettrait aussi aux professeurs de math d'enseigner leur discipline pendant la totalité de leurs heures de cours, je suis bien d'accord.
- Guermantes729Neoprof expérimenté
Furby et Célinesud, ne partez pas sans moi aux cours de chinois: J'arrrriiiiiiiiiiiiiive!
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum