Les fonctions en Smalltalk

mardi 18 décembre 2012
par  Alain BUSSER

Intervalles

L’intervalle des nombres allant de -5 à 3 (entiers seulement) est codé par (-5 jusque: 3) ; on peut effectuer des opérations d’intersection et de réunion sur ces intervalles :

Comme exemple de fonction, le fil directeur de cet article sera le sujet du bac STG CGRH Nouvelle-Calédonie novembre 2011 :

Un professionnel propose le stockage de photos anciennes sur des CD. Il peut produire au maximum 18 CD par jour et on note x le nombre de CD produits par jour.

Le coût journalier, exprimé en euros, pour un nombre entier x de CD produits est donné par f (x) où f est la fonction définie sur l’intervalle [0 ; 18] par
f (x) = x 2 + x + 15.

Définition

En Smalltalk, un bloc est entre crochets. Entre ces crochets il y a des instructions Smalltalk, dont la dernière (éventuellement, la seule) produit la valeur de sortie. Ces instructions sont séparées par un trait vertical des noms des antécédents, eux-mêmes précédés d’un double-point pour demander à Smalltalk de ne pas les évaluer. Dans l’exemple ci-dessus, la variable s’appelle x, et on la met devant le trait vertical sous la forme :x ; à la suite du trait vertical, on met l’expression de la fonction :

Cela se lit à voix haute comme « f est la fonction qui, à x, associe x au carré plus x plus 15 ».

Des blocs peuvent être plus compliqués

  • il peut y avoir plusieurs variables ;
  • il peut aussi y avoir des variables locales, dans ce cas elles sont entre le trait vertical et le corps du bloc, entre deux traits verticaux ;
  • il peut y avoir des instructions avant la valeur de sortie (voir les exemples Heron et Briggs fournis avec MathsOntologie).
  • La valeur de sortie n’est pas nécessairement numérique (voir l’onglet « booléens »)

La syntaxe est proche de la notation mathématique :

ou, si on préfère, de la notation Xcas :

Retour au sujet du bac STG :

Quel est le coût fixe journalier ? Quel est le coût journalier pour 10 CD produits ?

Pour obtenir l’image d’un nombre par f, on fait juste f valeur: x :

Graphique

Suite du sujet de bac :

calcul de f’

L’onglet suivant montre comment, bien que ne faisant pas de calcul formel, MathsOntologie permet d’aider à répondre à la question.

Recopier et compléter le tableau de valeurs ci-dessous :

x 0 2 4 6 8 10 12 14 16 18
ƒ(x) 35

Entrée de données

On a vu dans l’onglet précédent comment on peut obtenir l’image d’un nombre par la fonction f ; voici comment on peut le faire interactivement :

Si on lance le script, on a ceci :

Puis, en cliquant sur « OK » :

C’est bien l’interactivité mais c’est répétitif pour remplir un tableau.

C’est là que l’aspect « objet » des fonctions donne toute sa saveur : À l’instar d’un ribosome qui parcourt une chaîne et transforme l’un après l’autre ses éléments pour fabriquer progressivement une protéine, une fonction Smalltalk peut picorer [1] les nombres d’un tableau, obtenant ainsi un autre tableau. Le tableau des valeurs de x est un intervalle de pas 2 :

Mais f peut également picorer des tableaux faits sur mesure ou des ensembles, etc. Une application est la construction par MathOntologie d’une collection de points donnant l’allure de la représentation graphique :

Variations

Suite du sujet de bac :

Tous les CD produits sont vendus au prix unitaire de 17 euros.

1.a. Soit R(x) la recette journalière, en euros, pour la vente journalière de x
CD.

Exprimer R(x) en fonction de x.

MathsOntologie ne fait pas de calcul formel mais permet de définir R(x) comme un bloc :

Ensuite, l’expression du bénéfice B(x) peut être vérifiée non pas en soustrayant deux blocs f et R (on ne peut pas soustraire de blocs) mais en définissant un nouveau bloc B par

B := [ :x | R valeur: x - ( f valeur: x ) ].

On peut le représenter graphiquement ce qui donne une idée de ses variations et donc du nombre de valeurs qui annulent B(x) :

Déterminer graphiquement le nombre de CD qui doivent être vendus
pour réaliser un bénéfice. Conclure par une phrase.

On voit graphiquement que les nombres cherchés constituent un intervalle ; ses bornes peuvent être déterminées numériquement par :

La première solution a été cherchée entre 0 et 9 et la seconde, entre 9 et 18.

Estimer en expliquant la démarche suivie, le nombre de CD donnant un
bénéfice maximal.

c. Étudier les variations de la fonction B.

d. En déduire alors la valeur de x pour laquelle le bénéfice maximal est atteint.

Ce résultat confirme-t-il l’estimation de la question 1. d. ?

La fonction B’ peut être évaluée numériquement : C’est la fonction qui, à x, associe la dérivée de B en x ; il suffit alors de chercher où elle s’annule :

Calculer ce bénéfice maximal.

booléens

Si la valeur retournée par un bloc est booléenne, la description du bloc ressemble beaucoup [2] à celle d’un ensemble par compréhension.

Par exemple, l’ensemble des diviseurs premiers de 24 s’écrit comme ceci [3] :

La version Smalltalk (dp comme « diviseurs premiers » y ressemble beaucoup :

Le tableau renvoyé est la fonction indicatrice de l’ensemble.

algorithmes

Une fonction peut aussi être définie par algorithme ; par exemple, la fonction f définie par l’algorithme de Heron ci-dessous :

Ici la variable locale s’appelle racineDex (« racine de x ») et est retournée par la fonction à la fin (après le bloc vert). Elle est initialisée à 1,5 puis une boucle est effectuée 5 fois, dans laquelle racineDex est remplacé par la moyenne entre lui-même et le quotient de x par lui.

Les deux représentations graphiques sont indiscernables l’une de l’autre, ce qui illustre la précision de l’algorithme. En plus, la fonction f peut être dérivée numériquement, on peut chercher ses extrema sur un intervalle etc. Et en remplaçant 5 par 5 commeComplexe, on peut s’en servir pour calculer des racines de nombres négatifs...

Un autre exemple de fonction définie par un algorithme (ici, une somme) est la fonction de Riemann, précurseur de la fonction de Weiertrass (elle n’est dérivable presque nulle part) :

Le bloc à l’intérieur n’est pas picoré mais injecté : Il a deux variables dont la première sert d’accumulateur. Il prend donc pour valeur finale la somme des sinus de n au carré fois x, divisés par le carré de n, pour n allant de 1 à 10.

Une fois définie, cette fonction peut être représentée graphiquement, voire intégrée numériquement, avec suffisamment de précision pour voir que l’intégrale de 0 à π vaut 2 :

Et que l’intégrale de 0 à 2π vaut 0 :

Pour avoir les affichages ci-dessus, le transcript n’a pas été utilisé, mais le script a été imprimé plutôt qu’exécuté : Là encore, la dernière expression est celle qui est envoyée à print.


[1« picorer » est une traduction approximative de l’anglais « collect » qui veut dire « récolter » mais qui dans le cas de Smalltalk signifie « fabriquer une collection » ; il convient donc d’y voir l’image d’un oiseau qui attrape l’une après l’autre des graines (les valeurs de x), les digère (les transforme par f) puis les stocke dans son jabot (fabrique une collection de nombres) ; à ceci près qu’une fois picorées, les graines sont intactes.

[2ce n’est sans doute pas un hasard

[3évidemment c’est plus facile de la décrire comme {2;3}...


Commentaires

Annonces

Prochains rendez-vous de l’IREM

Séminaire EDIM-IREM

- Mercredi 12 avril 2017, 14h-18h, campus du Tampon, amphi 120C
- Mercredi 3 mai 2017, 14h-18h, PTU, Saint-Denis, salle S23.6
- Mardi 13 juin 2017, 14h-18h, campus du Tampon
- Mercredi 14 juin 2017, 14h-18h, PTU, Saint-Denis, salle S23.6


Brèves

À travers les labyrinthes : algorithmes et fourmis

dimanche 1er septembre 2013

Quand les chercheurs mettent au point des modèles d’optimisation et de recherche de plus court chemin qui s’inspirent du comportement de masse de colonies de fourmis...
À écouter : Sur les Épaules de Darwin, émission diffusée sur France Inter samedi 31 août 2013.

Rencontres Mondiales du Logiciel Libre à St-Joseph

mardi 20 août 2013

Les RMLLd se dérouleront pour la 2e fois à Saint-Joseph du 22 au 25 août.
C’est une opportunité pour les élèves qui suivent la spécialité ISN et les passionnés d’informatique.

Voici pour le samedi et le dimanche quelques interventions choisies :
- http://2013.d.rmll.info/Raspberry-votre-ordinateur-au-format-carte-de-credit?lang=fr
- http://2013.d.rmll.info/Materiel-libre-et-DIY?lang=fr
- http://2013.d.rmll.info/Arduino-de-l-electronique-libre?lang=fr

Noter aussi les conférences Art et Culture du dimanche, ainsi qu’une conférence plus engagée.

Le programme complet se trouve ici. Une radio sera ouverte pour l’occasion.
Des plaquettes à distribuer se trouvent ici.

Hyper-vidéos pour l’algorithmique au lycée

dimanche 19 août 2012

Olivier Roizès, à la demande de l’ADIREM, a réalisé une collection d’hyper-vidéos de présentation de logiciels et environnements de programmation. Ces hyper-vidéos, c’est-à-dire des vidéos contenant des éléments clicables, devraient être utiles aux enseignants désireux de se familiariser avec Python, CaRMetal, R, Rurple, Scilab ou Xcas.

Ouverture du SILO

mardi 1er novembre 2011

Le SILO (Science Informatique au Lycée : Oui !) est un espace collaboratif documentaire de partage et de formation collégiale, à destination des professeurs appelés à enseigner l’informatique au lycée.

Une initiative du CNDP, de l’INRIA et de Pasc@line, à laquelle se sont associés SPECIF, fuscia, EPI et ePrep.

Sur le Web : Site du SILO

Introduction à la science informatique

lundi 12 septembre 2011

Le CRDP de Paris publie le premier ouvrage destiné aux professeurs chargés d’enseigner la nouvelle spécialité « Informatique et sciences du numérique » en Terminale S à la rentrée 2012. Cet ouvrage a été coordonné par Gilles Dowek, directeur de recherche à l’INRIA.

Sur la création de la spécialité ISN, on pourra également consulter l’interview donnée au Café pédagogique par l’inspecteur général Robert Cabanne.

Sur le Web : CRDP de Paris

Deux publications sur l’algorithmique

samedi 17 octobre 2009

L’IREM d’Aix-Marseille publie une brochure de 73 pages, téléchargeable librement, intitulée Algorithmes et logique au lycée. Ces notions sont illustrées et déclinées sur des exercices du programme de spécialité mathématique en série L, mais sont adaptables aux programmes à venir.

Le hors série thématique n° 37 du magazine Tangente, disponible actuellement en kiosque, s’intitule « Les algorithmes. Au cœur du raisonnement structuré ». Extrait de l’éditorial : « La rédaction de Tangente a conçu la quasi-totalité de ce hors série thématique pour qu’il puisse être lu par des élèves de Seconde ».

Une carte mentale pour l’algorithmique

jeudi 10 septembre 2009

Sur son site, Jean-Jacques Dhénin a publié une carte mentale géante qui renvoie vers plus de 30 documents en ligne sur l’algorithmique. Tout ce qu’il faut — et même davantage — pour faire face au nouveau programme de Seconde !

Un catalogue libre d’algorithmes pour le lycée

dimanche 30 août 2009

Guillaume Connan, de l’IREM de Nantes, publie un catalogue libre de 119 pages d’algorithmes pour le lycée. Sur son site très riche, on trouvera d’autres documents en rapport avec l’algorithmique, notamment sur l’utilisation des langages fonctionnels au lycée et sur la comparaison programmation fonctionnelle/programmation impérative.

L’algorithmique à l’IREM de Lille

vendredi 26 juin 2009

Le groupe AMECMI de l’IREM de Lille vient de mettre en ligne des ressources importantes au service des professeurs de Seconde :

- Algorithmique et programmation (Emmanuel Ostenne)
- Bibliographie amoureuse de l’algorithmique (Alain Juhel)

Statistiques

Dernière mise à jour

jeudi 27 avril 2017

Publication

740 Articles
Aucun album photo
130 Brèves
11 Sites Web
126 Auteurs

Visites

32 aujourd'hui
1249 hier
1994831 depuis le début
9 visiteurs actuellement connectés