Programmer avec le langage Linotte
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Programmer avec le langage LinotteConnexion

Besoin d'un conseil sur la programmation en Linotte ?

Le Deal du moment :
Jeux, jouets et Lego : le deuxième à ...
Voir le deal

descriptionLinotte 2.3 bêta ! EmptyLinotte 2.3 bêta !

more_horiz
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 :

Linotte 2.3 bêta ! Uc?id=0B1rRyAT2mvEMcFZuNTZUX1o4cG8

- 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

Linotte 2.3 bêta ! Uc?id=0B1rRyAT2mvEMeEhLT3lHdmVuUkk

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

Linotte 2.3 bêta ! Uc?id=0B1rRyAT2mvEMZnMwYVYyMHBjMUk

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

Linotte 2.3 bêta ! Uc?id=0B1rRyAT2mvEMVzFTZFpaOElSVlE


- 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

descriptionLinotte 2.3 bêta ! EmptyRE: Linotte 2.3 alpha 4

more_horiz
Ce matin, j'ai déposé une nouvelle version alpha : quelques corrections et maintenant vous pouvez tester l'ensemble des nouveautés présentées ci-dessus.

descriptionLinotte 2.3 bêta ! EmptyRE: Linotte 2.3 bêta !

more_horiz
J'ai déposé une version bêta.
Cela veut dire que j'arrête les grosses évolutions et que je vais me concentrer sur les corrections.
N'hésitez pas à me remonter les bogues que vous rencontrez !

descriptionLinotte 2.3 bêta ! EmptyRE: Linotte 2.3 bêta !

more_horiz
Certaines images sur le topic on les voit pas <img src=" title="Smile" />

descriptionLinotte 2.3 bêta ! EmptyRE: Linotte 2.3 bêta !

more_horiz
Nouvelle beta en ligne :
- lecture des fichiers mp3s,
- et la virgule n'est plus obligatoire lors du l'utilisation des conditions !


[php]
si âge <
= 18 lis
affiche "Tu es bien jeune avec tes " + âge + " années !"
affiche "Mais, tu iras loin dans la programmation !"
ferme
[/php]
et les boucles :
[php]
de 99 à 1 lis
affiche "{bouteille(joker,1)}, {bouteille(joker,0)}."
affiche "En prendre une, la faire passer, {bouteille(joker-1,1)}." & ""
ferme
[/php]

descriptionLinotte 2.3 bêta ! EmptyRE: Linotte 2.3 bêta !

more_horiz
Bonjour Cpc !

Ça fait longtemps !

Je viens réagir sur cette nouvelle version :p
Et plus particulièrement sur la simplification de la déclaration des variables.

En effet, voulant faire du Linotte un langage très simple, je m'étais demandé pourquoi avoir fait le choix de devoir typer les variables ?
Et non pas de les typer dynamiquement, comme en javascript ?
Cela est beaucoup plus simple !

Du coup, je suis complètement fan de cette nouvelle version !
Mais, afin de respecter le coté textuel du langage, il faudrait alors remplacer ceci :

[php]
f valant 123
[/php]

Par ceci :

[php]
f vaut 123
[/php]


C'est plus cohérent, non ?

En tous cas, comme d'habitude, félicitations pour ton travail !

descriptionLinotte 2.3 bêta ! EmptyRE: Linotte 2.3 bêta !

more_horiz
Bonjour Wam !
C'est un plaisir de te revoir sur le forum !

Merci pour tes retours sur les évolutions apportées par cette version.

Linotte veut être un langage simple mais il se veut être aussi un langage pédagogique.
C'est pour cela que je force les programmeurs à définir les variables et les typer avant de créer leur algorithme.

Alors oui, c'est plus long à écrire, mais à la fin, on obtient un code plus facile à lire ! (AMHA)

De ce fait, je veux que l'on distingue la création des variables et l'affectation des valeurs. C'est pour cela que je garde cette différence en utilisant dans le premier cas "valant" et dans le deuxième "vaut".

Voili !

descriptionLinotte 2.3 bêta ! EmptyRE: Linotte 2.3 bêta !

more_horiz
Ça se défend comme point de vue ^^

descriptionLinotte 2.3 bêta ! EmptyRE: Linotte 2.3 bêta !

more_horiz
Merci pour les mp3

descriptionLinotte 2.3 bêta ! EmptyRE: Linotte 2.3 bêta !

more_horiz
Dinon tu penche sur une autre version ou non car j'adore programmer en linotte et faut rajouter à la documentation les nouveautés de la nouvelle version

descriptionLinotte 2.3 bêta ! EmptyRE: Linotte 2.3 bêta !

more_horiz
Bonjour Samir,

Si tu aimes programmer en Linotte, ça me fait bien plaisir ! En plus, tu veux partager ton engouement sur ce nouveau forum que tu as créé :
Bravo ! Je vais partager le lien sur les groupes facebook et google+

Des travaux avancent autour de la prochaine version mais tout doucement car je manque de temps.
J'espère présenter les premiers résultats d'ici quelques mois .
Je ne préfère pas trop dévoiler ce que je fais car je suis encore à me poser la question si c'est pertinent...

Cpc

descriptionLinotte 2.3 bêta ! EmptyRe: Linotte 2.3 bêta !

more_horiz
privacy_tip Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
power_settings_newSe connecter pour répondre