Aborder la récursivité n'est pas aisé pour les néophytes. Voici une approche
pas à pas de la construction du triangle de Sierpinski pour appréhender sa
dimension auto-répétée.
It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical?
--Alan Perlis
samedi 17 octobre 2015
samedi 26 septembre 2015
Termes d'une suite
On continue avec les suites ou comment afficher les termes d'une suite qui
est chaotique pour certaines valeurs de son paramètre.
samedi 5 septembre 2015
Diagramme de suite récurrente
Vous avez sans doute tous ce souvenir de classe de terminale, des suites
récurrentes, avec recherche d'un point fixe d'une fonction. Dr. Geo permet
d'explorer ce sujet.vendredi 22 août 2014
Les trois portes
Un problème classique de probabilité modélisé avec une figure Pharo.
canvas := DrGeoCanvas new.
canvas centerTo: 0@3; scale: 20.
pointG := canvas point: -1@0.1.
segment := canvas segment: ((canvas point: -1@0) name: 'GAGNÉ') to: pointG.
segment large; color: Color green.
pointP := canvas point: 1@0.1.
segment := canvas segment: ((canvas point: 1@0) name: 'PERDU') to: pointP.
segment large; color: Color red.
successes := 0.
n := 10000.
canvas do: [
1 to: n do: [ :compte |
portes := { 0. 0. 0.}.
piece := 3 atRandom.
portes at: piece put: 1.
choixSinbad := 3 atRandom.
"Quel choix de portes pour le vizir ?"
vizirPossible := #(1 1 1) - portes. "pas la porte avec le pièce"
vizirPossible at: choixSinbad put: 0. "pas la porte choisie par Sinbad"
"On collecte les choix possibles pour le vizir, 1 ou 2 selon"
portesVizir := OrderedCollection new.
vizirPossible withIndexDo: [:choix :i| choix = 1 ifTrue: [portesVizir add: i]].
"Le Vizir choisit une porte"
choixVizir := portesVizir atRandom.
"Sinbad choisit l'autre porte"
portes := {1. 1. 1}.
portes at: choixVizir put: 0; at: choixSinbad put: 0.
portes withIndexDo: [:choix :i| choix = 1 ifTrue: [choixSinbad := i]].
"Si c'est la porte avec la pièce alors succès"
piece = choixSinbad ifTrue: [ successes := successes + 1].
"On actualise les barres horizontales des succès et echec"
pointG rename: successes asString;
moveTo: -1@(10 * successes / n).
pointP rename: (compte - successes) asString;
moveTo: 1@(10 * (compte - successes) / n).
canvas update].
pointG
rename: ((100 * successes / n) round: 2) asString, ' %';
moveTo: -1@(10 * successes / n).
pointP
rename: ((100 * (n - successes) / n) round: 2) asString, ' %';
moveTo: 1@(10 * (n - successes) / n)].
« Un vizir montre trois portes, A, B et C à Sinbad, son mathématicien. Il lui explique que derrière l’une d’elles se trouve une pièce d’or et que rien ne se trouve derrière les deux autres. Si Sinbad choisit la bonne porte, il gagne la pièce d’or.Sinbad choisit une porte sans l’ouvrir.A ce moment-là, le vizir lui explique : « Je vais maintenant ouvrir une des deux portes que vous n’avez pas choisie et derrière laquelle il n’y a rien. »Le vizir, comme promis, ouvre une porte et dévoile un espace vide. Il ajoute : « Je vous offre donc la possibilité de changer votre choix ou pas. Que faites-vous ? »Sinbad sourit, car il connaît « LA » stratégie pour gagner le plus souvent possible.Détermine cette stratégie.Notons bien qu’à chaque partie les choses se déroulent de la même façon : Sinbad a la possibilité de changer son premier choix après avoir vu la porte ne donnant rien. Le vizir sait où se trouve la pièce d’or. »
La figure Pharo, dont le script est donné ci-dessous, simule 10'000
essais dans lesquels Sinbad change systématiquement de choix de porte. La
figure se construit devant l'utilisateur au fur et à mesure du déroulement des
10'000 essais.
La simulation révèle enfin que dans ce cas le pourcentage de victoire est
approximativement 67%.
|piece portes choixSinbad vizirPossible choixVizir portesVizir n successes canvas pointG pointP segment|canvas := DrGeoCanvas new.
canvas centerTo: 0@3; scale: 20.
pointG := canvas point: -1@0.1.
segment := canvas segment: ((canvas point: -1@0) name: 'GAGNÉ') to: pointG.
segment large; color: Color green.
pointP := canvas point: 1@0.1.
segment := canvas segment: ((canvas point: 1@0) name: 'PERDU') to: pointP.
segment large; color: Color red.
successes := 0.
n := 10000.
canvas do: [
1 to: n do: [ :compte |
portes := { 0. 0. 0.}.
piece := 3 atRandom.
portes at: piece put: 1.
choixSinbad := 3 atRandom.
"Quel choix de portes pour le vizir ?"
vizirPossible := #(1 1 1) - portes. "pas la porte avec le pièce"
vizirPossible at: choixSinbad put: 0. "pas la porte choisie par Sinbad"
"On collecte les choix possibles pour le vizir, 1 ou 2 selon"
portesVizir := OrderedCollection new.
vizirPossible withIndexDo: [:choix :i| choix = 1 ifTrue: [portesVizir add: i]].
"Le Vizir choisit une porte"
choixVizir := portesVizir atRandom.
"Sinbad choisit l'autre porte"
portes := {1. 1. 1}.
portes at: choixVizir put: 0; at: choixSinbad put: 0.
portes withIndexDo: [:choix :i| choix = 1 ifTrue: [choixSinbad := i]].
"Si c'est la porte avec la pièce alors succès"
piece = choixSinbad ifTrue: [ successes := successes + 1].
"On actualise les barres horizontales des succès et echec"
pointG rename: successes asString;
moveTo: -1@(10 * successes / n).
pointP rename: (compte - successes) asString;
moveTo: 1@(10 * (compte - successes) / n).
canvas update].
pointG
rename: ((100 * successes / n) round: 2) asString, ' %';
moveTo: -1@(10 * successes / n).
pointP
rename: ((100 * (n - successes) / n) round: 2) asString, ' %';
moveTo: 1@(10 * (n - successes) / n)].
mercredi 14 août 2013
Animated Teodoro spiral
A classic example to construct the sequence of the square roots of the first integer numbers.
The Pharo sketch constructs a sequence of right triangles. The hypotenuses are the square roots.
| figure triangle |
figure := DrGeoSketch new fullscreen.
triangle := [:p1 :p2 :p3 :n |
|s1 s2 s3 perp cercle p4 |
s1 := figure segment: p1 to: p2.
s2 := (figure segment: p2 to: p3) color: Color red.
s3 := figure segment: p3 to: p1.
perp := (figure perpendicular: s3 at: p3) hide.
cercle := (figure circleCenter: p3 to: p2) hide.
p4 := (figure altIntersectionOf: cercle and: perp) hide.
n > 0 ifTrue:
[triangle value: p1 value: p3 value: p4 value: n -1]
].
triangle
value: 0@0
value: -1@0
value: -1@1
value: 50
An animated variation of this sketch:samedi 12 février 2011
Dr. Geo and block closure
Dr. Geo comes with a few power
tools related to programming.
Since its first incarnation, Dr. Geo was enriched
with open doors to let the user explores new way to use Dr. Geo through programming.
jeudi 20 janvier 2011
Paradigm shift
With recent releases, and coming version 11.03, Dr. Geo II is becoming more and more an integrated
environment to teach or to learn interactively software programming within a
geometry and math context.
Inscription à :
Articles (Atom)


