Voir le sujet précédentAller en basVoir le sujet suivant
Call_BB5A
Niveau 5

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par Call_BB5A Sam 25 Nov 2017, 23:22
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. )
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.

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
Moonchild
Moonchild
Sage

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par Moonchild Dim 26 Nov 2017, 02:19
Mais dans l'instruction :
Code:
input("mot suivant ?")
est-ce-que "mot suivant ?" peut vraiment être considéré comme un "argument de la fonction input" au même titre que 60° est un argument de la fonction cosinus ?

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.
avatar
e1654d
Niveau 7

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par e1654d Dim 26 Nov 2017, 13:48
En Python,
Code:
input("mot suivant ?")
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.

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)
, 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é.

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.
Balthazaard
Balthazaard
Vénérable

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par Balthazaard Dim 26 Nov 2017, 14:26
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... alatienne
avatar
e1654d
Niveau 7

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par e1654d Dim 26 Nov 2017, 14:33
Si c'est pour montrer ce qui se passe quand on appelle une fonction, pourquoi pas. J'ai aussi un TP où j'introduis
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.
Moonchild
Moonchild
Sage

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par Moonchild Dim 26 Nov 2017, 20:45
e1654d a écrit:En Python,
Code:
input("mot suivant ?")
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.

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)
, 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é.

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.
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.

Dans le manuel Indice de seconde dont j'ai la nouvelle édition sous les yeux, il est donné la définition suivante :
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).
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.
VinZT
VinZT
Doyen

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par VinZT Dim 26 Nov 2017, 20:55
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 ?

_________________

« 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
wanax
wanax
Fidèle du forum

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par wanax Dim 26 Nov 2017, 20:56
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.
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. )
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...
avatar
Matheod
Habitué du forum

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par Matheod Dim 26 Nov 2017, 21:01
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.
avatar
gainz
Niveau 8

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par gainz Dim 26 Nov 2017, 21:12
En mathématiques, le résultat d'une fonction est unique lorsque la valeur de ses arguments sont fixés.
avatar
e1654d
Niveau 7

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par e1654d Dim 26 Nov 2017, 21:31
La définition de fonction proposée ci-dessus n'est pas mauvaise même si elle n'est pas très claire.
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).
Le principal point qui me dérange, c'est le mot « retourne » qui est un anglicisme pour « renvoie ».

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.
avatar
e1654d
Niveau 7

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par e1654d Dim 26 Nov 2017, 21:33
wanax a écrit:Si l'appel à une fonction arrête l'exécution du programme, on peut qualifier ça de bug...
Non, car dans le cas d'espèce, c'est le comportement attendu de la fonction.
avatar
Call_BB5A
Niveau 5

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par Call_BB5A Dim 26 Nov 2017, 21:50
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.
Les définitions d'une fonction et d'une instruction sont dépendantes du langage informatique utilisé. Ça complique un peu les choses...

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 [...]
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...).

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 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...

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.


Dernière édition par Call_BB5A le Dim 26 Nov 2017, 22:01, édité 1 fois
Balthazaard
Balthazaard
Vénérable

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par Balthazaard Dim 26 Nov 2017, 21:59
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


Dernière édition par Balthazaard le Dim 26 Nov 2017, 22:11, édité 1 fois
avatar
chmarmottine
Guide spirituel

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par chmarmottine Dim 26 Nov 2017, 22:02
Personnellement, je crois que je vais me mettre au chinois.
Furby
Furby
Niveau 9

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par Furby Dim 26 Nov 2017, 22:16
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.
Balthazaard
Balthazaard
Vénérable

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par Balthazaard Dim 26 Nov 2017, 22:31
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


Dernière édition par Balthazaard le Dim 26 Nov 2017, 22:46, édité 1 fois
Furby
Furby
Niveau 9

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par Furby Dim 26 Nov 2017, 22:41
Balthazaard a écrit:Python n'est pas très gourmand, bizzare que cela ne tourne pas.
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: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.
Merci. Enfin une réponse claire. C'est bien ce que je pensais.
Moonchild
Moonchild
Sage

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par Moonchild Dim 26 Nov 2017, 22:52
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.
(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Image12
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...

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...).
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² ?

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.
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...
Cela devrait suffire à en tirer deux conclusions :
- 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).
wanax
wanax
Fidèle du forum

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par wanax Dim 26 Nov 2017, 22:59
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.


Dernière édition par wanax le Dim 26 Nov 2017, 23:20, édité 1 fois
Balthazaard
Balthazaard
Vénérable

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par Balthazaard Dim 26 Nov 2017, 23:10
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.
avatar
Call_BB5A
Niveau 5

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par Call_BB5A Dim 26 Nov 2017, 23:30
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² ?
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.

- l'enseignement de l'informatique devrait être confié à des personnels qualifiés
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).

je ne sais pas ce que signifie "echo -e"
C'est du BASH, ça signifie d'écrire ce qui est indiqué entre guillemets en remplaçant le \n par un retour à la ligne...

- 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).
On ne peut s'interdire de parler de fonction informatique dès lors que le contexte est clairement posé.
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.
Moonchild
Moonchild
Sage

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par Moonchild Lun 27 Nov 2017, 00:30
Call_BB5A a écrit:
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² ?
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.
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:
- 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).
On ne peut s'interdire de parler de fonction informatique dès lors que le contexte est clairement posé.
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.
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).
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.
Balthazaard
Balthazaard
Vénérable

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par Balthazaard Lun 27 Nov 2017, 01:14
Moonchild a écrit:
Call_BB5A a écrit:
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² ?
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.
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:
- 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).
On ne peut s'interdire de parler de fonction informatique dès lors que le contexte est clairement posé.
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.
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).
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
avatar
e1654d
Niveau 7

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par e1654d Lun 27 Nov 2017, 08:35
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.
Guermantes729
Guermantes729
Neoprof expérimenté

(maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 Empty Re: (maths) Formation aux aménagements du programme de seconde : algo/programmation

par Guermantes729 Lun 27 Nov 2017, 14:34
Furby et Célinesud, ne partez pas sans moi aux cours de chinois: J'arrrriiiiiiiiiiiiiive! (maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 437980826 (maths) Formation aux aménagements du programme de seconde : algo/programmation - Page 6 437980826
Voir le sujet précédentRevenir en hautVoir le sujet suivant
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum