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 ?


Linotte 2.0

power_settings_newSe connecter pour répondre
4 participants

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Il y a un problème avec les prototypes :

L'espèce monrectangle hérite de rectangle et contient index_carte

Il signale cette ligne en erreur.

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Si tu es syntaxe 2.0, voici la nouvelle forme :

type monrectangle hérite de point et contient nom

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
On ne peux plus écrire "est un" ou "est une" dans cette nouvelle syntaxe ???
J'ai également remarqué que le présent à disparu, on doit désormais utiliser l'impératif :/
Du coup, si je veux utiliser cette nouvelle syntaxe, je dois retaper tout mon code :/

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Et oui, c'est le changement de direction que j'ai opté pour cette version 2.0 :
soit, on active l'option proposant la compatibilité 1.X ou alors on passe entièrement en 2.0.

ça permet d'être plus cohérent pour la future documentation qui sera mise à jour et ça me permet de dire que les prochaines versions resteront compatibles avec l'ancienne syntaxe 1.X.

J'ai essayé de faire un mixte mais j'ai rencontré tellement de problème que j'ai préféré cette voie.

ça sera plus simple pour les nouveaux arrivants ... mais plus compliqué pour les anciens du langage s'ils souhaitent utiliser la nouvelle syntaxe ! <img src=" title="Sad" /> J'en suis conscient.

Donc pour résumé, avec cette version, si on active l'option "Compatibilité 1.X", vous pouvez travailler avec l'ancienne syntaxe en profitant du nouveau Atelier.
Sinon, si cette option n'est pas activée (et elle n'est pas activée par défaut !), vous travaillez avec la nouvelle syntaxe.

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Pour ce qui est de la disparition du présent, je comprends ce choix :
c'est plus simple de ne proposer qu'une seule syntaxe plutôt que deux (présent et impératif) pour l'apprentissage du langage par exemple. Et donc, comme tu dis, de pouvoir être plus cohérent avec la documentation.
Le choix de l'impératif s'explique alors par sa syntaxe plus "directe" et donc, plus simple et rapide à écrire.

En revanche, je reproche la disparition de certains mots comme "est un", remplacé par "::"
L'originalité du langage Linotte étant sa syntaxe en français, il perd alors tout son sens...
Toujours dans un soucis d'efficacité et de gain de temps, cette syntaxe composée de signes et symboles (@ par exemple) peut être proposée aux programmeurs, mais ceci ne doit pas dénaturer le langage !

Le but de cette nouvelle syntaxe 2.0 est d'attirer de nouveaux programmeurs et donc, à terme, de remplacer la 1ère version.
Cette nouvelle syntaxe se doit alors de respecter les objectifs fixés par cette 1ère version.
Et donc de proposer aux programmeurs une syntaxe entièrement en français, ainsi qu'une syntaxe plus "évoluée".

Il est évident pour nous, "anciens utilisateur du Linotte", que nous allons devoir suivre l'évolution du langage.
Mais, sous prétexte d'une rétro-compatibilité, cette nouvelle version ne doit pas perdre de vue ses objectifs premiers.
C'est pourquoi, la compréhension de la 1ère version du langage par l'atelier est importante.
Et, afin de pouvoir migrer plus facilement vers de nouvelles syntaxes, je milite plutôt pour la mise en place dans l'atelier d'un outil "remplacer par".

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Des bons points à signaler tout de même :
J'ai testé le manageur de style : c'est sympa x)
La navigation dans le livre est également utile x)

Bon courage pour mettre à jour la documentation ^^

Les bibliothèques ne sont pas utilisables ?

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Ouf, ça fait plaisir :-)

Merci !

Les bibliothèques sont utilisables mais il me reste encore des tests à effectuer.

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Pourtant si je fais :
[php]
bibliothèque
générateur référence GénérateurNombres.liv
chrono référence chronometre.liv
[/php]

il m'indique :
Impossible de lire le livre : GénérateurNombres.liv

A quel endroit doit être enregistré le livre pour que la bibliothèque fonctionne ?

A moins que, comme il te reste des tests à faire, tu n'as pas encore implémentés les bibliothèques ?

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Le livre doit être dans le même répertoire que le livre "appelant".

Voici un patch qui corrige l'affichage des formulaires avec la version 1.99.3 :

http://langagelinotte.free.fr/linotte/t ... ulaire.zgl

Il faut télécharger le fichier et remplacer l'ancien qui est présent dans le répertoire "greffons" de l'Atelier.

Il contient également le nouveau composant graphique Barre.

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
J'ai testé la barre : c'est ce dont j'avais besoin, merci x)
En revanche, il faudrait pouvoir positionner les icônes sur la barre comme on veut, en utilisant la valeur "x" par exemple.

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
J'ai ajouté deux méthodes fonctionnelles :
[php]
évoque barre.séparateur()
évoque barre.espace(160)
[/php]

ça donne ça :
[attachment=47]

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Wam a écrit:

Les bibliothèques ne sont pas utilisables ?


Les bibliothèques fonctionnent.
Il faut déposer les livres dans le même répertoire.

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
La version 2.0 va introduire une petite modification de la toile.

Il sera possible de déplacer le point de référence en haut à gauche de la toile.
Aujourd'hui, c'est le point de coordonnées x=0, y=0.

Il sera possible de décaler ce point vers le droite et le bas de la toile.
J'ai ajouté les attributs rx et ry à la toile qui sont à 0 par défaut.

Si on affecte rx=-500 et ry=-500, le point au haut à gauche de la toile devient x=500 et y=500.

A quoi ça peut servir ? Par exemple, à simuler le fait d'avoir plusieurs toiles...

Pour comprendre ce principe, on peut imaginer une fenêtre d'une maison que l'on déplace le long d'un mur... le mur reste le même, mais la vue que l'on a de la fenêtre change...

Les copies d'écran suivantes démontrent ainsi que l'on peut afficher 4 scènes différentes sur une même toile.

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Mais que se passe-t-il si on déplace les fenêtres ?
Ou si les fenêtres se superposent ?
Ce système nous oblige à avoir des fenêtres fixes, non ?
Les quatre scènes affichées sont animées ? Ou sont-elles figées ?

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Attention,
Il ne se passe rien si on déplace la fenêtre Windows... C'était juste une image pour expliquer le principe.
Ce sont les valeurs rx et ry de la toile qui permettent de changer la vue. Les copies d'écran montre une application avec 4 boutons qui permettent de changer la partie de la toile visible.

Voici le source :

[php]
/*
Spécification : 2.0
Auteur : Cpc
Cet exemple donne un exemple d'utilisation de bureaux virtuels
*/
prototype
// Bureau
x & y :: nombre
nom :: texte
type bureau contient x, y, nom
globale
bureau1 :: bureau, x vaut 0, y vaut 0, nom vaut "Bureau 1"
bureau2 :: bureau, x vaut -500, y vaut 0, nom vaut "Bureau 2"
bureau3 :: bureau, x vaut 0, y vaut -500, nom vaut "Bureau 3"
bureau4 :: bureau, x vaut -500, y vaut -500, nom vaut "Bureau 4"
form :: formulaire, titre vaut "Utilisation de bureaux virtuels", largeur vaut 500, hauteur vaut 600
m1 :: menu, texte vaut "Menu"
sm1 :: sousmenu, texte vaut "Quitter"
xtoile :: xtoile, x vaut 0, y vaut 0
toile :: toile, hauteur vaut 500, largeur vaut 500
decallage <
- -50
case :: caseàcocher, x vaut 100 - decallage, y vaut 570, texte vaut "Changement de bureau en douceur"
b1 :: bouton, texte vaut nom@bureau1, x vaut 100 - decallage, y vaut 510
b2 :: bouton, texte vaut nom@bureau2, x vaut 200 - decallage, y vaut 510
b3 :: bouton, texte vaut nom@bureau3, x vaut 100 - decallage, y vaut 540
b4 :: bouton, texte vaut nom@bureau4, x vaut 200 - decallage, y vaut 540
image1 :: graphique, image vaut "../c_multimedia/images/tux_graduate.png", x vaut 200, y vaut 600, transparence vaut 90, taille vaut 20
écran :: praxinoscope, x vaut 650, y vaut 150, image0 vaut "../c_multimedia/images/praxinoscope-0.png", ...
image1 vaut "../c_multimedia/images/praxinoscope-1.png", ...
image2 vaut "../c_multimedia/images/praxinoscope-2.png", ...
image3 vaut "../c_multimedia/images/praxinoscope-3.png", ...
image4 vaut "../c_multimedia/images/praxinoscope-4.png", ...
image5 vaut "../c_multimedia/images/praxinoscope-5.png", ...
image6 vaut "../c_multimedia/images/praxinoscope-6.png", ...
image7 vaut "../c_multimedia/images/praxinoscope-7.png", ...
image8 vaut "../c_multimedia/images/praxinoscope-8.png", ...
image9 vaut "../c_multimedia/images/praxinoscope-9.png", ...
image10 vaut "../c_multimedia/images/praxinoscope-10.png", ...
image11 vaut "../c_multimedia/images/praxinoscope-11.png"
working :: drapeau <
- faux

principale :
début
// Formulaire :
ajoute xtoile & m1 & b1 & b2 & b3 & b4 & case dans form
ajoute sm1 dans m1
fais réagir b1 à "clic souris" pour bureau1
fais réagir b2 à "clic souris" pour bureau2
fais réagir b3 à "clic souris" pour bureau3
fais réagir b4 à "clic souris" pour bureau4
fais réagir form à "clic souris" pour fermer la fenêtre
fais réagir sm1 à "clic souris" pour fermer la fenêtre
// Elements sur la toile
projette image1 & écran
appelle nunux
appelle pluie
pour chaque couleurs, parcours création
appelle minuteur
tant que vrai, lis
temporise
ferme

bureau1 :
*b :: bouton
début
parcours change bureau avec bureau1, b
reviens

bureau2 :
*b :: bouton
début
parcours change bureau avec bureau2, b
reviens

bureau3 :
*b :: bouton
début
parcours change bureau avec bureau3, b
reviens

bureau4 :
*b :: bouton
début
parcours change bureau avec bureau4, b
reviens

change bureau :
*bureau :: bureau
*bouton :: bouton
début
si non(working), lis
working vaut vrai
// Modification de l'apparence des boutons :
texte@b1 vaut "${nom@bureau1}"
texte@b2 vaut "${nom@bureau2}"
texte@b3 vaut "${nom@bureau3}"
texte@b4 vaut "${nom@bureau4}"
texte@bouton vaut "[${nom@bureau}]"
si (valeur@case) == "vrai" , lis
pour chaque 100, lis
// X
si (rx@toile) != (x@bureau), lis
si (rx@toile) >
(x@bureau), rx@toile vaut rx@toile - 5
sinon si (rx@toile) <
(x@bureau), rx@toile vaut rx@toile + 5
ferme
// Y
si (ry@toile) != (y@bureau), lis
si (ry@toile) >
(y@bureau), ry@toile vaut ry@toile - 5
sinon si (ry@toile) <
(y@bureau), ry@toile vaut ry@toile + 5
ferme
attends 10 millisecondes
ferme
ferme
sinon lis
rx@toile vaut x@bureau
ry@toile vaut y@bureau
ferme
working vaut faux
ferme
reviens

fermer la fenêtre :
*f :: formulaire
début
termine

nunux :
tant que vrai, lis
tourne à droite image1 de 1
attends 0.01 seconde
ferme

pluie :
x :: nombre
y :: nombre
début
tant que vrai , lis
attends 0.01 secondes
x vaut hasard(500)
y vaut hasard(500)
appelle vague avec x, y
attends 0.15 secondes
appelle vague avec x, y
ferme

vague :
*x :: nombre
*y :: nombre
vague :: cercle, x vaut x, y vaut y, plein vaut "non", rayon vaut 1, taille vaut 2, couleur vaut "vert d'eau"
début
projette vague
pour chaque 50, lis
rayon@vague vaut joker
taille@vague vaut 1 + joker / 2
transparence@vague vaut 100 - joker * 2
attends 10 millisecondes
ferme
efface vague
annihile vague
reviens

création :
fleur :: point
yy :: nombre <
- 500
xx :: nombre <
- 500
début
mélange xx
mélange yy
déplace fleur vers 500 + xx et 500 + yy
couleur @ fleur vaut joker
taille @ fleur vaut 10
projette fleur
appelle bouge avec fleur
reviens

minuteur :
début
tant que vrai, lis
pour chaque 12, lis
trame@écran vaut joker
attends 0.1 secondes
ferme
ferme

bouge :
*fleur :: point
début
tant que vrai, lis
angle@fleur vaut hasard(360)
avance fleur de .5
attends 100 millisecondes
ferme
[/php]

ça fonctionnera avec la prochaine beta 1.99.4.

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Ok, j'ai hâte de tester ça x)

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
J'appelle la première fonction d'un livre "principale".
Ceci permet d'avoir des livres homogènes dans leur structure.
En java, on retrouve le même principe avec la méthode "main".

Sauf, que je ne suis pas fan de ce mot. Avez-vous d'autres idées ?

Ceci n'a aucune conséquence sur le langage mais dans les exemples.

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Bonsoir,
Je propose : base, mère, initiale...

Bon ok, je vais me coucher !

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
C'est pas mal la fonction "mère"...

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Je propose "prélude". Trop musicale ?

prologue ?

Focus ? http://fr.wikipedia.org/wiki/Focus

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
J'aime bien focus.

Voici une définition sur wikipédia et qui correspond à l'esprit du premier paragraphe ... heu non, de la première fonction !


Focus est un mot latin qui veut dire foyer, c'est le lieu où plusieurs choses se concentrent.


[attachment=58]

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Prologue, (il n’y à pas, déjà un os ou un langage qui se nomme ainsi ?).
Focus, ce n’est-il pas, déjà utilisé en informatique pour autre chose ? (donner le focus à une fenêtre).

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Prolog est un vieux langage de programmation.
Il est vrai que ça serait envoyer un mauvais signal au nouveau développeur souhaitant se mettre au langage Linotte !

Pour l'instant, je garde "principale".

Je vais ajouter une nouveau verbe pour activer le focus de la toile si celui-ci a été perdu. Je propose :

http://fr.wiktionary.org/wiki/all%C3%A9guer

[php]allègue toile[/php]

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Ah, je viens de tomber sur le mot : Épigraphe

http://fr.wikipedia.org/wiki/%C3%89pigraphe

Pas mal comme nom du premier paragraphe ?

descriptionLinotte 2.0 - Page 3 EmptyRE: Linotte 2.0

more_horiz
Ou alors, on peut faire des associations et inventer un nouveau mot :

Avec par exemple graphe : http://fr.wiktionary.org/wiki/-graphe

ça peut donner :

- algographe
- prographe
- scriptgraphe
- genègraphe (http://fr.wiktionary.org/wiki/genesis)

descriptionLinotte 2.0 - Page 3 EmptyRe: Linotte 2.0

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