Aide PSyLVIA
L'essentiel
Cette application permet d'exécuter les algorithmes tels qu'on
peut les trouver dans les manuels scolaires, sans passer par un langage de programmation.
Taper l'algorithme à gauche et cliquer sur la fusée pour l'exécuter.
Le plus simple est de commencer par choisir un des algorithmes donnés en exemple dans la liste déroulante, puis de cliquer sur la fusée;
-
Une seule instruction par ligne
-
Séparer les mots par des blancs.
-
Pas de blanc dans les formules mathématiques ni dans les listes
Signification des icônes
-
La fusée :
Exécuter l'algorithme que vous avez tapé dans la partie gauche.
-
La trace de pas :
Exécuter l'algorithme en mode «pas à pas».
-
Le repère:
Parmétrage graphique
-
Le pot de peinture :
Coloration syntaxique et indentation de l'algorithme.
-
La tortue :
Passer en affichage spécial tortue
-
Les balais :
Effacer l'algorithme ou bien les sorties.
Écrire un algorithme
On a souvent plusieurs façons d'écrire l'algorithme. L'important est d'écrire les mots-clés
au bon endroit et bien orthographiés. Si vous cliquez sur le pot de peinture, les mots-clés seront
colorisés en bleu tandis que les textes qui ne participent pas à l'algorithme seront en
gris,
ce qui permet souvent de repérer des erreurs.
Affectation
-
5 → x
-
affecter 5 à x
-
stocker 5 dans x
-
x prend la valeur 5
-
Affecter une chaîne à une variable
"boujour" → x
Définir une fonction mathématique
Il s'agit dune affectation.
Par exemple, pour la fonction f définie par f(x)=x+1,
on peut taper :
affecter x+1 à f(x)
Modifier la valeur d'une variable
On peut taper une instruction de la forme
«ajouter 3 à x»
ou bien
«diviser x par 3».
Toutefois, le moyen le plus universel est de procéder à
une réaffectation comme :
affecter x+3 à x
ou bien
x prend la valeur x+3
Tableaux ou listes
-
Initialiser une liste :
-
[ ] → t
(ici, t est une liste vide)
-
[5,12,2] → u
(ici, u[0], u[1] et u[2] valent respectivement 5, 12 et 2)
Attention : la numérotation commence à 0 !
-
Pour ajouter un élément à la fin d'une liste :
ajouter 7 à u
Saisie
-
demander x
Ou bien
demander x y
-
saisir x
-
lire x
-
entrer x
-
On peut préciser l'invite :
écrire n est un entier naturel non nul
entrer n
Affichage
-
afficher x
-
écrire x
-
afficher/écrire un message quelconque
Instruction conditionnelle
Le mot alors est optionnel.
-
si condition alors
....
fin si
-
si condition alors
....
sinon
....
fin si
La «condition» est une phrase mathématique susceptible d'être
vraie ou fausse, comme par exemple ;
Boucle «pour»
Ici, on note k le compteur de tours,
mais on peut choisir le nom de variable qu'on veut.
pour k de 1 jusqu'à 5
...
fin pour
Variantes :
-
pour k de 1 à 5
-
pour k allant de 1 jusque 5
-
combinaisons des précédentes
Boucle «tant que»
tant que condition
...
fin fant que
Boucle «répeter»
répeter
...
jusqu'à condition
Dessiner
Le paramétrage de la fenêtre se fait en cliquant sur le repère.
L'algorithme peut dessiner quelques figures élémentaires :
-
point
x y
dessine le point de coordonnées x et y.
-
segment
x1 y1 x2 y2
Dessine le segment allant du point de coordonnées (x1 ; y1)
au point de coordonnées (x2 ; y2)
-
rectangle
x1 y1 x2 y2
Dessine le rectangle «à base horizontale» dont la diagonale va du point de coordonnées (x1 ; y1)
au point de coordonnées (x2 ; y2)
-
cercle
x y r
Dessine le cercle de centre le point Ω (x ; y) et de rayon r
Avant de dessiner une figure, on peut préciser la couleur avec une ligne d'instruction
couleur
nomcouleur
(noir gris rouge jaune bleu orange violet vert marron brun marine)
Mode «pas à pas»
C'est comme le football à la télévision : quand un but est marqué, on le voit en direct, puis on peut le revoir au ralenti.
Pas à pas «manuel»
Cliquer sur la trace de pas : l'algorithme s'exécute (le direct),
puis cliquer à nouveau sur la trace pour chaque instruction: l'algorithme s'exécute à nouveau en
«pas à pas» (le ralenti).
L'instruction en cours est
surlignée en jaune.
Dans le cadre de droite, l'encart jaune donne la valeur courante de chaque variable.
Quand l'une d'entre elles change, l'ancienne valeur est barrée tandis que la nouvelle valeur clignote.
Pas à pas «automatique»
Faites un double-clic sur la trace de pas pour exécuter automatiquepent le pas à pas en vue d'une projection.
Utilisation de la tortue
On peut taper des algorithmes pour piloter la «tortue», qui laisse sa trace dans le sable derrière elle. Il est ainsi possible de construire des figures géométriques.
-
avancer de 100 (ou avance 100) : fait avancer la tortue de 100 pixels sur l'écran (1 carreau).
-
reculer de 100 (ou recule 100) : fait reculer la tortue de 100 pixels sur l'écran.
-
sauter de 100 (ou saute 100) : fait sauter la tortue de 100 pixels, sans laissser sa trace derrière elle.
-
tourner de 60 (ou tourne 60) : fait tourner la tortue de 60° dans le sens trigonométrique. Pour tourner dans le sens des aiguilles d'une montre, donner un angle négatif.
Il revient au même de taper :
- tourner de -90
- tourner à gauche de 90
On peut visionner les déplacements successifs de la tortue
en exécutant l'algorithme en mode «pas à pas».
Dans ce cas, pour masquer ou afficher les valeurs des variables,
il suffit de cliquer sur le dessin.
Nourrir la tortue
Il est possible de présenter des «repas» à la tortue puis d'écrire des algorithmes pour les lui faire manger.
Le repas se compose de poissons dispersés sur l'espace tortue.
L'algorithme doit amener la tortue sur chaque poisson et le lui faire manger. Par exemple, si le repas se compose d'un seul poisson situé à 100 pixels devant la tortue, il faut taper :
avancer de 100
manger
Itinéraires prédéfinis
La liste «Repas et itinéraires» propose aussi des figures prédéfinies
qu'on peut essayer de reconstituer avec la tortue.
Fonctions mathématiques pré-définies
-
aleatoire(m, n) :
Tire au sort un entier entre m et n (équiprobabilité)
-
aleauniforme(a,b) :
Tire au sort un «réel» issu d'une loi uniforme sur l'intervalle [a;b]
-
aleanormal (m, σ ) :
retourne un nombre aléatoire issu d'une loi normale d'espérance m et d'écart-type σ.
-
bernoulli(p) :
retourne 1 avec la probabilité p ou 0 avec la probabilité 1-p
-
abs( x ) :
retourne la valeur absolue de x
-
ent( x ) :
retourne la partie entière de x
-
n % p :
retourne le reste de la division de n par p. Par exemple 8 % 3 vaut 2.
-
racine( x ) :
retourne la racine carrée de x
-
sin cos et tan (donner les angles en radians)
-
ln et log : logarithmes népérien et décimal
-
exp fonction exponentielle de base e
Notes pour l'enseignant
Exercices autocorrigés
Si vous proposez un algorithme à trous,vous voudrez que PSyLVIA
contrôle la réponse de l'élève. Voici comment faire :
-
Écrire l'algorithme correct et le tester, noter les valeurs obtenues à la fin de l'algorithme
pour certaines variables bien choisies
-
Effacer une partie de l'algorithme (les trous)
-
Si vous voulez que PSyLVIA contrôle que l'élève a bien écrit un algorithme
qui trouve que x=1 et que y=2, écrivez à la fin de l'algorithme :
contrôler {"x":1,"y":2}
-
Cliquez sur le pot de peinture puis sauvegardez l'algorithme ainsi obtenu.
Écrire vos propres démos
Pour modifier les démos proposées ou pour en ajouter de nouvelles,
il vous faudra l'ouvrir en même temps dans votre navigateur et aussi dans
un éditeur de textes comme Gedit ou Kate sous Linux ou bien Notepad+ sous Windows
(évitez des logiciels commme Wordpad ou Word susceptibles de détruire l'encodage).
Dans le navigateur, tapez un algorithme dont la dernière ligne est le mot démo.
En cliquant sur la fusée, un nouvel onglet s'ouvre dans le navigateur : il contient votre algorithme,
«préparé» pour son intégration dans le code source de PSyLVIA.
Collez le texte dans le code source juste après la ligne de commentaire suivante :
<!-- vous pouvez coller vos démos ici -->
Rechargez PSyLVIA dans votre navigateur : votre démo est intégrée.
Remarque :
si le lancement d'un algorithme se terminant par la ligne démo provoque un message d'erreur,
rechargez la page, acceptez la sauvegarde d'urgence et relancez l'algorithme.
Écrire vos propres repas pour la tortue
On compose un repas pour la tortue en écrivant un algorithme qui comportera les mots-clés suivants :
-
départ : à l'endroit où vous voulez que la tortue démarre quand on lui propose un itinéraire
-
mange : aux endroits où vous voulez placer des poissons
-
repas : à la fin de l'algorithme
Cliquez sur la fusée pour exécuter l'algorihtme, puis tout de suite sur la disquette : ceci enregistrera le repas au lieu d'enregistrer l'algorithme. Quand vous ouvrirez dans PSyLVIA le repas ainsi créé, il sera présenté à la tortue.
ATTENTION !
Si vous n'avez pas cliqué sur la fusée, vous n'enregistrerez pas de repas.
Par exemple, voici l'algorithme pour créer le premier
repas de la liste déroulante :
départ
pour k allant de 1 à 2
avance de 100
mange
tourne de 90
fin du pour
repas
On compose un Itinéraire pour la tortue en écrivant un algorithme qui comportera les mots-clés suivants :
-
départ : à l'endroit où vous voulez que la tortue démarre quand on lui présente l'itinéraire qu'elle doit suivre.
-
itinéraire : à la fin de l'algorithme
Cliquez sur la fusée pour exécuter l'algorihtme, puis sur la disquette : ceci enregistrera l'itinéraire au lieu d'enregistrer l'algorihtme. Quand vous ouvrirez dans PSyLVIA l'itinéraire ainsi créé apparaîtra dans l'espace tortue.
ATTENTION !
Si vous n'avez pas cliqué sur la fusée, vous n'enregistrerez pas d'itinéraire.
Modifier les repas et les itinéraires de la liste déroulante
Pour changer les repas ou les itinéraires proposés dans la liste déroulante de l'espace tortue,
procéder de la même façon que pour
composer des repas
ou
des itinéraires
mais terminer
l'algorithme par le mot clé démo_repas ou bien démo_itinéraire.
A l'exécution, un second onglet s'ouvre dans le navigateur avec une ligne de code à insérer à l'endoit indiqué.
À propos de PSyLVIA
PSyLVIA veut dire :
«
Programmation à
Syntaxe
Libre et
Versatile
pour l'
Initiation à l'
Algorithmique
».
Ce nom est un petit clin d'oeil à la chanson culte «San Francisco» de Maxime Le Forestier.
Cette application est développée au Lycée Monge de Chambéry. Elle est placée sous licence GPL, ce qui vous donne le droit de l'utiliser, de la diffuser et de la modifier.
Les figures sont issues du site «openclipart.org».
Chambéry, le 27/08/2013
Exemples
Taper l'algorithme ici :
Entrées/sorties
#les lignes grises ne font pas partie de l'algorithme
#saisie d`une donnée :
entrer x
#variante : «demander x»
#saisie de deux données :
entrer y z
#saisie avec message préalable :
écrire "n" est un naturel positif
entrer n
#sorties :
écrire x y z n
#variante «afficher x y z n»
Affectations
#Exemples d'affectations
1 → a
b prend la valeur 2
affecter 3 à c
stocker 4 dans d
afficher a b c d
"salut" → x
afficher x
#pour une chaîne de plusieurs mots
#taper _ à la place des blancs :
"salut_tout_le_monde" → y
afficher y
Fonctions mathématiques
#fonction mathématique :
affecter x²-3*x+2 à f(x)
afficher "f(1)=" f(1)
afficher "f(3)=" f(3)
Listes
#Liste
#Affectation de liste
[1,2,3,4,5,6] → t
afficher liste t
#construction d'une liste vide
[] → u
#ajout de nouveaux éléments
ajouter 1 dans u
ajouter 2 à u
afficher liste à deux éléments u
Détection d'erreur
#exemple de détection d'erreur
#dans un algorithme faux
1 → x
afficher x
y → 2
afficher y
#cliquez sur la fusée pour voir l'erreur
Instruction si
#instruction si pour calculer le prix
#d'un forfait annuel de ski nordique
écrire quel est votre âge ?
demander x
si x≤16
alors
33 → prix
sinon
79 → prix
fin si
afficher votre âge est x ans
afficher payez prix € votre forfait
Discriminant
#équation du second degré ax²+bx+c=0
#résolution dans l'ensemble des réels
demander a b c
b²-4*a*c → delta
si delta ≥ 0
(-b-racine(delta))/(2*a) → x1
(-b+racine(delta))/(2*a) → x2
afficher x1 x2
sinon
afficher pas de solution
fin si
Boucle pour
boucle pour
u prend la valeur 1000
pour k de 1 jusque 10
u prend la valeur 1.02*u
fin pour
afficher "u" ent(u)
Boucle tant que
boucle tant que
1→v
0→n
tant que v<1000
2*v→v
n+1→n
fin tant que
afficher "n" n "v" v
Boucle répéter
boucle répéter
1→p
0→n
répéter
p/2→p
jusqu'à p<0.001
afficher "n" n "p" p
BOUCLE ET TORTUE
la tortue avait rendez-vous
avec une étoile de mer !
pour k de 1 jusqu'à 5
avancer de 100
tourner de 160
avancer de 100
tourner de -88
fin pour
voyez comment ça marche
en cliquant sur la trace de pas !
Est-ce un cercle ?
Est-ce un cercle ?
exécution parfois lente
100 → r
1 → a
2*r*π/360 → l
pour k de 1 à 360
avancer de l
tourner de a
finpour
Boucle sans fin
test de boucle sans fin
1 → x
tant que x<2
x-1 → x
fin tant que
Est-ce de l'art ?
Est-ce de l'art ?
segment -2 -2 3 -2
segment -2 -2 -2 3
couleur rouge
pour k de 1 à 9
segment -2 3-k/2 -2+k/2 -2
fin pour
Anneaux olympiques
anneaux olympiques
["bleu","jaune","noir","vert","rouge"] → t
1 → r
1.6*r/racine(2) → d
-3 → x
1 → y
pour k de 0 à 4
couleur t[k]
cercle x y r
x+d → x
si k%2=1
y+d → y
sinon
y-d → y
fin si
fin pour
Jeu de devinette
jeu de devinette
aleatoire(1,100) → n
écrire devine le nombre entre 1 et 100
demander x
tant que x≠n
si x<n
écrire x trop petit, essaye encore !
demander x
sinon
écrire x trop grand essaye encore !
demander x
fin si
fin tant que
afficher bravo ! le nombre est x
PGCD
algorithme d`euclide
recherche du pgcd de a et b
demander a b
au cas où a et b soient non entiers
ent(a) → a
ent(b) → b
afficher a b
si a>b
on permute a et b
a → c
b → a
c → b
fin si
a est donc plus petit que b
répéter
reste de la division de b par a
b%a → r
a → b
r → a
jusqu`à a=0
afficher pgcd b
Finances
finances
afficher capital initial
demander c
afficher c
afficher taux d`intérêt en %
demander i
afficher i %
afficher capital qu`on veut atteindre
demander objectif
0 → n
1+i/100 → q
tant que c<objectif
c*q → c
n+1 → n
fin tant que
afficher
afficher il faudra n années pour avoir objectif
Somme avec boucle
calcul de 1+1/4+1/9+...+1/n²
demander n
s prend la valeur 0
pour k de 1 à n
s prend la valeur s+1/k²
fin pour
afficher s
Suite Arithmético-Géométrique
suite arithmético-géométrique
telle que u(n+1)=a*u(n)+b
a prend la valeur 0.5
b prend la valeur 6
valeur de u(0)
u prend la valeur 2
recherche de u(n)
demander n
pour k de 1 à n
u prend la valeur a*u+b
fin pour
afficher u: u lorsque n: n
Dichotomie
résolution par dichotomie de l'équation f(x)=c
sur [a,b] pour une fonction croissante
x3+x+1 → f(x)
0 → a
5 → b
12 → c
répéter
(a+b)/2 → d
si f(d)<c
d → a
sinon
d → b
fin si
jusqu'à b-a<10-6
afficher a b f(a)
Newton
algorithme de newton
résoudre f(x)=y
x+ln(x) → f(x)
1+1/x → fprim(x)
1000 → y
1 → x0
répéter
x0+(y-f(x0))/fprim(x0) → x0
afficher x0 f(x0) y
jusqu'à abs(y-f(x0))<10<sup>-12</sup>
Babylone
algorithme de babylone basé sur la transformation
progressive d'un rectangle en carré
5 → a
1 → b
3.9 → y
pour k de 1 à 5
rectangle -1 y a-1 y+b
nouvelle longueur
(a+b)/2 → a
nouvelle largeur, l'aire reste 5
5/a → b
y-b-0.1 → y
fin pour
la dernière figure est proche d'un carré
afficher valeur approchée de √5 : b
afficher le même au carré : b<sup>2</sup>
Intégrale
5-0.2*x<sup>2</sup> → f(x)
-5 → a
a → x
5 → b
100 → n
(b-a)/n → dx
0 → intg
pour k de 1 à n
rectangle x 0 x+dx f(x)
intg+f(x)*dx → intg
x+dx → x
finpour
afficher intg
Tête connue
tête connue à partir de points aléatoires
0 → n
pour k de 1 à 10000
on tire au sort l'abscisse et l'ordonnée
la fonction aleatoire est issue du dé
aleauniforme(-5,5) → x
aleauniforme(-5,5,false) → y
si x2+y2 ≤4
la tête sans oreille
point x y
n+1 → n
sinon
les oreilles
si (x-2)2+(y-2)2≤2 ou (x+2)2+(y-2)2≤2
point x y
n+1 → n
fin si
fin si
fin pour
Sondages et fluctuation
sondage
écrire probabilité de réponse oui
demander p
effectif de l'échantillon
144 → n
1/racine(n) → err
0 → dehors
rectangle -4 -1 4 1
200 → nb_sondages
pour i de 1 à nb_sondages faire
0 → t
pour k de 1 à n
t+bernoulli(p) → t
fin pour
fréquence de oui dans l'échantillon
t/n → f
si abs(p-f)>err
f hors intervalle de fluctuation
couleur rouge
dehors+1 → dehors
sinon
f dans l'intervalle
couleur verte
fin si
on représente le résultat par un point
l'abscisse est la fréquence obtenue
l'ordonnée est aléatoire
point 8*f-4 aleauniforme(-1,1)
fin pour
afficher intervalle de fluctuation :
afficher p-err p+err
afficher nombre de sondages hors intervalle :
afficher dehors
Loi normale
0 → t
0 → u
0 → v
pour k de 1 à 2500
aleanormal(0,1) → x
aleauniforme(-5,5) → y
couleur noire
si x<1 ou x>1
couleur verte
1+t → t
fin si
si x<-2 ou x>2
couleur bleue
1+u → u
fin si
si x<-3 ou x>3
couleur rouge
1+v → v
fin si
point x y
fin pour
afficher t/k u/k v/k
Courbe de Gauss
remplisage de l'aire sous la courbe de gauss
affecter 1/racine(2*π)*exp(-x<sup>2</sup>/2) à f(x)
pour k de 1 à 1000
affecter aleanormal(0,1) à x
si abs(x)>2
couleur rouge
sinon
couleur bleue
fin si
affecter aleauniforme(0,10*f(x)) à y
point x y
fin pour
Fréquences et probabilité
des fréquences à la proba
afficher p est entre 0 et 1
demander p
x prend la valeur 0
y prend la valeur 0
s prend la valeur 0
n prend la valeur 500
f prend la valeur 0
dx prend la valeur 5/n
couleur bleue
pour k de 1 à n
s prend la valeur s+bernoulli(p)
f prend la valeur s/k
en abscisses, le nombre d`essais
x1 prend la valeur x+dx
en ordonées, 5*fréquence succès
segment x y x1 5*f
x prend la valeur x1
y prend la valeur 5*f
fin pour
asymptote
couleur rouge
segment 0 5*p 5 5*p
axes
couleur noire
segment -5 0 5 0
segment 0 -5 0 5
Tri par sélection
tri par sélection
variable t de type liste :
[] → t
on remplit t avec 6 nombres aléatoires
pour i de 0 à 5
ajouter aleatoire(1,100) à t
fin pour
afficher liste de départ : t
tri par ordre croissant :
pour i de 0 à 4
on sélectionne le plus petit élément
d'indice supérieur ou égal à i
i → imin
pour j de i à 5
si t[j] < t[imin]
j → imin
fin si
fin pour
si imin≠i
on échange
t[i] → temporaire
t[imin] → t[i]
temporaire → t[imin]
fin si
fin pour
afficher liste triée : t