La version [url=BETA][/url] Linotte 2.3 est disponible :
https://drive.google.com/folderview?id= ... aring#list
- 1 - Simplification des appels de fonction
J'ai apporté une simplification syntaxique lors des appels de fonctions.
Dans certains cas, il peut-être est inutile d'avoir à déclarer les doublures (paramètres) des fonctions :
[php]
principal :
début
parcours multiplication avec 4,5
multiplication :
*a est un nombre
*b est un nombre
début
affiche a * b
reviens
[/php]
Même si cette syntaxe permet de protéger sa fonction et de forcer le programmeur à utiliser les bons rôles pour chaque acteur, une forme simple peut être utilisée.
Cette nouvelle forme décharge le programmeur, il doit juste donner le nom des doublures :
[php]
principal :
début
parcours multiplication avec 4,5
multiplication : a, b
début
affiche a * b
reviens
[/php]
C'est plus facile à écrire et même à lire !
Et pour simplifier la lecture, il ne sera plus obligatoire d'écrire le mot clé "début" si le paragraphe contient aucune déclaration d'acteur :
[php]
principal :
parcours multiplication avec 4,5
multiplication : a, b
affiche a * b
reviens
[/php]
On passe de 9 lignes à 5 !
Les deux syntaxes sont toujours disponibles et même, d'un certain point de vue, complémentaires !
(plus d'informations ici : [url=Duck_typing][/url])
- 2 - Diverses simplifications syntaxiques
Après avoir simplifié les appels de fonctions, je termine un autre chantier que j'ai entamé il y a quelques années, la simplification de la déclaration des acteurs dans la section "les rôles".
Voici ces nouvelles simplifications :
- 3 - Doublures en entrée
Texte à compléter..
Si la première fonction de son programme contient des doublures, l'interprète Linotte va automatiquement demander les valeurs à l'utilisateur :
exemple 1 :
[php]
principal : a, b
début
affiche a + b
[/php]
exemple 2 :
[php]
fibo : n
si n <
2, retourne n
sinon retourne fibo(n-1) + fibo(n-2)
[/php]
- 4 - Caméra 3D
TODO
- 5 - Générer des images avec le webonotte
Il est maintenant possible de créer et afficher la toile dans une page HTML.
- Lancez l'Atelier Linotte,
- déposez le livre dans votre répertoire c:\<
utilisateur>
\web en le nommant "pythagore.wliv".
- ouvrez votre navigateur et entrez l'adresse suivante :
ou alors, en pointant directement depuis l'exemple inclus dans l'Atelier :
[php]
<
%
// Initialisation des valeurs (toujours au début d'un weblivre)
A & B & C est un nombre
outils est un tweak
message erreur est un texte
message 1 valant "La valeur de l'hypothénuse ne peut être plus petite !"
message 2 valant "Aucune valeur à calculer !"
toile est une toile, couleur vaut "blanc", largeur vaut 300, hauteur vaut 200
tortue est un crayon, couleur vaut "noir", x vaut 30, y vaut 30, taille vaut 2, pointe vaut "non"
couleur A & couleur B & couleur C valant "noir"
GA est un graffiti, texte vaut "A", x vaut 0, y vaut 80
GB est un graffiti, texte vaut "B", x vaut 130, y vaut 160
GC est un graffiti, texte vaut "C", x vaut 130, y vaut 60
// Récupération des valeurs depuis le navigateur :
demande A & B & C
// Vérification des valeurs et calcul de la valeur demandée
si (A != 0) et (B != 0), lis
C vaut racine (carré A + carré B )
couleur C vaut "rouge"
ferme
sinon si (A != 0) et (C != 0), lis
si C <
A, message erreur vaut message 1
sinon lis
B vaut racine (carré C - carré A )
couleur B vaut "rouge"
ferme
ferme
sinon si (B != 0) et (C != 0), lis
si C <
B, message erreur vaut message 1
sinon lis
A vaut racine (carré C - carré B )
couleur A vaut "rouge"
ferme
ferme
sinon message erreur vaut message 2
// on dessine notre triangle :
projette toile & tortue & GA & GB & GC
couleur de tortue vaut couleur A
déplace tortue vers le bas de 100
couleur de tortue vaut couleur B
déplace tortue vers la droite de 200
couleur de tortue vaut couleur C
déplace tortue vers 30 et 30
%>
<
html>
<
head>
<
title>
Pythagore By Linotte<
/title>
<
/head>
<
body>
<
h3>
CALCUL DE PYTHAGORE EN LIGNE<
/h3>
<
font color="red">
<
%message erreur !%>
<
/font>
<
form action="pythagore.wliv" method="post">
Valeur de A : <
input type="texte" name="A" value="<
%A !%>
"/>
<
br>
Valeur de B : <
input type="texte" name="B" value="<
%B !%>
"/>
<
br>
Valeur de C : <
input type="texte" name="C" value="<
%C !%>
"/>
<
br>
<
input type="submit" value="Calculer" />
<
/form>
<
img src='<
%affiche "data:image/png;
base64," + outils.toileenbase64() %>
' >
<
/body>
<
/html>
[/php]
On obtient dans le navigateur :
- 6 - Multiplication de chaînes
TODO texte
[php]
principale :
a valant "je suis fou !" * 3
début
affiche a
[/php]
Affiche sur le tableau le texte suivant :
- 7 - Lecture des fichiers MP3
TODO texte
[php]
// Vous pouvez télécharger le fichier de démonstration MP3 ici :
// https://archive.org/details/testmp3testfile
globale
lecteur est un jukebox, fichier vaut "c:/mpthreetest.mp3"
sélecteur est un conduit // Juste pour sélectionner notre fichier mp3
popup est une popup
principale :
jukebox est un formulaire, titre vaut "Mon Juke-Box", largeur vaut 300, hauteur vaut 150, image vaut "../f_jeux/bustout.jpg"
ouvrir est un bouton, texte vaut "Sélectionner...", x vaut 10, y vaut 10
play est un bouton, texte vaut "Play", x vaut 10, y vaut 50
stop est un bouton, texte vaut "Stop", x vaut 70, y vaut 50
pause est un bouton, texte vaut "Pause", x vaut 130, y vaut 50
continuer est un bouton, texte vaut "Continuer", x vaut 200, y vaut 50
indicateur est un indicateur, x vaut 10, y vaut 100, valeur vaut 0, largeur vaut 270, hauteur vaut 20
début
/*Construction de la fenêtre :*/
ajoute ouvrir & play & pause & stop & continuer & indicateur dans jukebox
fais réagir ouvrir à "clic souris" pour ouvrir
fais réagir play à "clic souris" pour play
fais réagir pause à "clic souris" pour pause
fais réagir stop à "clic souris" pour stop
fais réagir continuer à "clic souris" pour continuer
fais réagir jukebox à "clic souris" pour fermer fenêtre
jukebox.changementdimension(faux)
tant que vrai, lis // boucle infinie
attends 100 millisecondes
si ((lecteur.taille())!=0) et ((lecteur.position())!=0), valeur de indicateur vaut 100 - (lecteur.position()) / (lecteur.taille()) * 100
sinon valeur de indicateur vaut 0
vide touches
ferme
ouvrir :
fichier de lecteur vaut sélecteur.sélectionner()
affiche fichier de lecteur
play :
essaie lecteur.jouer()
sinon popup.message("Impossible de lire ce fichier !")
pause :
lecteur.pause()
stop :
lecteur.arrêter()
continuer :
lecteur.continuer()
fermer fenêtre :
lecteur.arrêter()
termine
[/php]
- 8 - Simplification des conditions et boucles
Plus besoin de mettre la virgule sauf lors de l'affectation de valeurs
TODO texte
[php]
syracuse : durée, e
début
tant que e != 1 lis
durée vaut durée + 1
si (e mod 2) = 0, e vaut e / 2
sinon e vaut e * 3 + 1
ferme
affiche durée
[/php]
- 9 - Jokers en folie
joker récupère la valeur de la boucle courant.
mais on peut également utiliser joker', joker'' et joker'''
qui vont récupérer les boucles parentes successives !
[php]
jokers en folie :
pour "Linotte" lis
pour 5 affiche (joker+1) * joker'
ferme
[/php]
TODO texte
https://drive.google.com/folderview?id= ... aring#list
- 1 - Simplification des appels de fonction
J'ai apporté une simplification syntaxique lors des appels de fonctions.
Dans certains cas, il peut-être est inutile d'avoir à déclarer les doublures (paramètres) des fonctions :
[php]
principal :
début
parcours multiplication avec 4,5
multiplication :
*a est un nombre
*b est un nombre
début
affiche a * b
reviens
[/php]
Même si cette syntaxe permet de protéger sa fonction et de forcer le programmeur à utiliser les bons rôles pour chaque acteur, une forme simple peut être utilisée.
Cette nouvelle forme décharge le programmeur, il doit juste donner le nom des doublures :
[php]
principal :
début
parcours multiplication avec 4,5
multiplication : a, b
début
affiche a * b
reviens
[/php]
C'est plus facile à écrire et même à lire !
Et pour simplifier la lecture, il ne sera plus obligatoire d'écrire le mot clé "début" si le paragraphe contient aucune déclaration d'acteur :
[php]
principal :
parcours multiplication avec 4,5
multiplication : a, b
affiche a * b
reviens
[/php]
On passe de 9 lignes à 5 !
Les deux syntaxes sont toujours disponibles et même, d'un certain point de vue, complémentaires !
(plus d'informations ici : [url=Duck_typing][/url])
- 2 - Diverses simplifications syntaxiques
Après avoir simplifié les appels de fonctions, je termine un autre chantier que j'ai entamé il y a quelques années, la simplification de la déclaration des acteurs dans la section "les rôles".
Voici ces nouvelles simplifications :
- 3 - Doublures en entrée
Texte à compléter..
Si la première fonction de son programme contient des doublures, l'interprète Linotte va automatiquement demander les valeurs à l'utilisateur :
exemple 1 :
[php]
principal : a, b
début
affiche a + b
[/php]
exemple 2 :
[php]
fibo : n
si n <
2, retourne n
sinon retourne fibo(n-1) + fibo(n-2)
[/php]
- 4 - Caméra 3D
TODO
- 5 - Générer des images avec le webonotte
Il est maintenant possible de créer et afficher la toile dans une page HTML.
- Lancez l'Atelier Linotte,
- déposez le livre dans votre répertoire c:\<
utilisateur>
\web en le nommant "pythagore.wliv".
- ouvrez votre navigateur et entrez l'adresse suivante :
ou alors, en pointant directement depuis l'exemple inclus dans l'Atelier :
[php]
<
%
// Initialisation des valeurs (toujours au début d'un weblivre)
A & B & C est un nombre
outils est un tweak
message erreur est un texte
message 1 valant "La valeur de l'hypothénuse ne peut être plus petite !"
message 2 valant "Aucune valeur à calculer !"
toile est une toile, couleur vaut "blanc", largeur vaut 300, hauteur vaut 200
tortue est un crayon, couleur vaut "noir", x vaut 30, y vaut 30, taille vaut 2, pointe vaut "non"
couleur A & couleur B & couleur C valant "noir"
GA est un graffiti, texte vaut "A", x vaut 0, y vaut 80
GB est un graffiti, texte vaut "B", x vaut 130, y vaut 160
GC est un graffiti, texte vaut "C", x vaut 130, y vaut 60
// Récupération des valeurs depuis le navigateur :
demande A & B & C
// Vérification des valeurs et calcul de la valeur demandée
si (A != 0) et (B != 0), lis
C vaut racine (carré A + carré B )
couleur C vaut "rouge"
ferme
sinon si (A != 0) et (C != 0), lis
si C <
A, message erreur vaut message 1
sinon lis
B vaut racine (carré C - carré A )
couleur B vaut "rouge"
ferme
ferme
sinon si (B != 0) et (C != 0), lis
si C <
B, message erreur vaut message 1
sinon lis
A vaut racine (carré C - carré B )
couleur A vaut "rouge"
ferme
ferme
sinon message erreur vaut message 2
// on dessine notre triangle :
projette toile & tortue & GA & GB & GC
couleur de tortue vaut couleur A
déplace tortue vers le bas de 100
couleur de tortue vaut couleur B
déplace tortue vers la droite de 200
couleur de tortue vaut couleur C
déplace tortue vers 30 et 30
%>
<
html>
<
head>
<
title>
Pythagore By Linotte<
/title>
<
/head>
<
body>
<
h3>
CALCUL DE PYTHAGORE EN LIGNE<
/h3>
<
font color="red">
<
%message erreur !%>
<
/font>
<
form action="pythagore.wliv" method="post">
Valeur de A : <
input type="texte" name="A" value="<
%A !%>
"/>
<
br>
Valeur de B : <
input type="texte" name="B" value="<
%B !%>
"/>
<
br>
Valeur de C : <
input type="texte" name="C" value="<
%C !%>
"/>
<
br>
<
input type="submit" value="Calculer" />
<
/form>
<
img src='<
%affiche "data:image/png;
base64," + outils.toileenbase64() %>
' >
<
/body>
<
/html>
[/php]
On obtient dans le navigateur :
- 6 - Multiplication de chaînes
TODO texte
[php]
principale :
a valant "je suis fou !" * 3
début
affiche a
[/php]
Affiche sur le tableau le texte suivant :
je suis fou !je suis fou !je suis fou !
- 7 - Lecture des fichiers MP3
TODO texte
[php]
// Vous pouvez télécharger le fichier de démonstration MP3 ici :
// https://archive.org/details/testmp3testfile
globale
lecteur est un jukebox, fichier vaut "c:/mpthreetest.mp3"
sélecteur est un conduit // Juste pour sélectionner notre fichier mp3
popup est une popup
principale :
jukebox est un formulaire, titre vaut "Mon Juke-Box", largeur vaut 300, hauteur vaut 150, image vaut "../f_jeux/bustout.jpg"
ouvrir est un bouton, texte vaut "Sélectionner...", x vaut 10, y vaut 10
play est un bouton, texte vaut "Play", x vaut 10, y vaut 50
stop est un bouton, texte vaut "Stop", x vaut 70, y vaut 50
pause est un bouton, texte vaut "Pause", x vaut 130, y vaut 50
continuer est un bouton, texte vaut "Continuer", x vaut 200, y vaut 50
indicateur est un indicateur, x vaut 10, y vaut 100, valeur vaut 0, largeur vaut 270, hauteur vaut 20
début
/*Construction de la fenêtre :*/
ajoute ouvrir & play & pause & stop & continuer & indicateur dans jukebox
fais réagir ouvrir à "clic souris" pour ouvrir
fais réagir play à "clic souris" pour play
fais réagir pause à "clic souris" pour pause
fais réagir stop à "clic souris" pour stop
fais réagir continuer à "clic souris" pour continuer
fais réagir jukebox à "clic souris" pour fermer fenêtre
jukebox.changementdimension(faux)
tant que vrai, lis // boucle infinie
attends 100 millisecondes
si ((lecteur.taille())!=0) et ((lecteur.position())!=0), valeur de indicateur vaut 100 - (lecteur.position()) / (lecteur.taille()) * 100
sinon valeur de indicateur vaut 0
vide touches
ferme
ouvrir :
fichier de lecteur vaut sélecteur.sélectionner()
affiche fichier de lecteur
play :
essaie lecteur.jouer()
sinon popup.message("Impossible de lire ce fichier !")
pause :
lecteur.pause()
stop :
lecteur.arrêter()
continuer :
lecteur.continuer()
fermer fenêtre :
lecteur.arrêter()
termine
[/php]
- 8 - Simplification des conditions et boucles
Plus besoin de mettre la virgule sauf lors de l'affectation de valeurs
TODO texte
[php]
syracuse : durée, e
début
tant que e != 1 lis
durée vaut durée + 1
si (e mod 2) = 0, e vaut e / 2
sinon e vaut e * 3 + 1
ferme
affiche durée
[/php]
- 9 - Jokers en folie
joker récupère la valeur de la boucle courant.
mais on peut également utiliser joker', joker'' et joker'''
qui vont récupérer les boucles parentes successives !
[php]
jokers en folie :
pour "Linotte" lis
pour 5 affiche (joker+1) * joker'
ferme
[/php]
TODO texte