Rechercher
Résultats par :
Recherche avancée
Qui est en ligne ?
Il y a en tout 4 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 4 Invités

Aucun

Voir toute la liste


Partagez
Voir le sujet précédentAller en basVoir le sujet suivant
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Wed 5 Dec - 13:31
J'ai modifié mon tuto comme ceci :

Le verbe parcourir

Dans le chapitre précédent, nous avons appris que les variables étaient locales : on ne peut les utiliser que dans la fonction où elles sont déclarées.
Pourtant, il existe une autre façon de réutiliser une variable dans une autre fonction, sans utiliser les variables globales.
En utilisant le verbe Parcourir :

[php]
Exemple1 :
nombre1 est un nombre valant 3
début
Affiche nombre1
nombre1 vaut 6
Parcours Exemple2

Exemple2 :
début
Affiche nombre1
[/php]

Mais... Mais... Ça fonctionne !

Pourtant cette utilisation du verbe Parcourir est à éviter.

Pour en comprendre la raison, complétons notre exemple comme ceci :

[php]
Exemple1 :
nombre1 est un nombre valant 3
début
Affiche nombre1
nombre1 vaut 6
Parcours Exemple2

Exemple2 :
début
Affiche nombre1
nombre1 vaut 5
Va vers Exemple3

Exemple3 :
début
Affiche nombre1
[/php]

Commençons par vérifier les résultats :

3 : valeur initiale de notre variable.
6 : valeur affectée à notre variable dans Exemple1.
5 : valeur affectée à notre variable dans Exemple2.

Cet exemple fonctionne donc parfaitement : il n'y a aucun soucis lors de son exécution.

Le vrai problème intervient lors de la modification de ce programme.

Imaginons que nombre1 n'affiche pas le résultat voulu.

Pour pouvoir corriger ce défaut, il va alors falloir remonter le fil de tout notre code pour en comprendre le fonctionnement.

Ainsi, pour corriger un résultat obtenu dans la fonction Exemple3, il va falloir retourner dans la fonction Exemple2, puis finalement, analyser la fonction Exemple1.

Imaginez maintenant le travail que ça nécessiterait avec un code de plusieurs milliers de lignes !

Pour pouvoir trouver l'origine d'une erreur, il faudrait alors explorer des dizaines de fonctions.

Cette façon d'utiliser le verbe Parcourir est donc vivement déconseillée.

Afin de pouvoir utiliser le verbe Parcourir, sans user de variables globales, il convient alors de limiter son utilisation :

Souvenez-vous, le verbe Parcourir peut également être utilisé avec le verbe Revenir.

Voyons voir ce que ça donne dans ce cas :

[php]
Exemple1 :
nombre1 est un nombre valant 3
début
Affiche nombre1
nombre1 vaut 6
Parcours Exemple2
Affiche nombre1

Exemple2 :
début
Affiche nombre1
nombre1 vaut 5
Affiche nombre1
Reviens
[/php]

Voici les résultats :

3 : valeur initiale de notre variable.
6 : valeur affectée à notre variable dans Exemple1.
5 : valeur affectée à notre variable dans Exemple2.
5 : valeur affectée à notre variable dans Exemple2.

Ce code fonctionne.

Néanmoins, l'utilisation de ce verbe ne permet pas de retourner au début de la fonction Exemple1 (avant la ligne 6).
Il permet juste de poursuivre son exécution (après la ligne 6).

Mais ainsi nombre1 reste bien une variable locale.
Le verbe Parcourir associé au verbe Revenir permet alors de la rendre accessible à une autre fonction. (En programmation, on parle de la portée d'une variable.)
Cela évite de devoir créer une variable globale qui deviendra alors accessible dans tout le livre.

Mais justement, utiliser une variable globale paraît bien plus simple, non ?

Oui, mais le problème est le même que notre précédent exemple.

En effet, lors de la recherche d'erreurs de programmation, lorsqu'une variable globale contient une information erronée, il est plus difficile de trouver la source de l'erreur, car la variable a pu être modifiée dans n'importe quelle partie du livre.
De plus, l'utilisation de variables globales rend la modification de notre programme difficile, car il faut alors comprendre le fonctionnement de tout le livre pour savoir comment une seule variable est utilisée, étant donné qu'elle peut être modifiée depuis n'importe quelle fonction.
En conclusion, en utilisant les verbes Parcourir et Revenir, on s'assure que la variable ne peut être utilisée que dans certaines fonctions précises, ce qui facilite la compréhension de notre livre.
avatar
Site Admin
Messages : 1036
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Wed 5 Dec - 13:43
Nos posts se sont croisés.
Je vote +1 pour cette version !
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Wed 5 Dec - 13:49
Pouvoir rendre une variable visible dans une fonction appelée me paraît essentiel.
En espérant que la lecture de mon tuto pourra éviter les erreurs liées à cette possibilité. ^^
Sinon, il faudrait "forcer" l'utilisation du verbe Revenir quand on utilise le verbe Parcourir...
avatar
Site Admin
Messages : 1036
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Wed 5 Dec - 14:11
Wam a écrit:
il faudrait "forcer" l'utilisation du verbe Revenir quand on utilise le verbe Parcourir...

C'est un sujet que j'avais noté pour la version 2.1

En fait, aujourd'hui, une analyse syntaxique du livre permet de construire en mémoire une "chaine" d'actions.

Cette chaine d'actions peut être constituée grâce au fichier de grammaire :
https://code.google.com/p/langagelinott ... ire_fr.xml

Pendant ce processus, l'analyse syntaxique ne va pas comprendre le sens des actions et donc elle n'est pas capable de savoir si j'ai une action "Parcourir" dans une fonction.

Je dois ajouter un autre niveau d'analyse du programme après l'analyse syntaxique.

Il permettrait ainsi de définir de règle précises qu'il faudra respecter.
- parcourir doit être utilisé avec revenir ou retourner dans la même fonction.
- obligation de déclarer ces variables avant le mot clé début,
- etc.
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Thu 6 Dec - 11:37
admincpc a écrit:
- obligation de déclarer ces variables avant le mot clé début,

Justement, je voulais faire un petit chapitre sur le sujet dans mon tuto.
En effet, on peut déclarer des variables directement dans une boucle par exemple, comme dans TCPServeur.
Tu compte supprimer cette possibilité ?
avatar
Site Admin
Messages : 1036
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Thu 6 Dec - 12:22
Je vais forcer à déclarer les acteurs avant le mot clé "début" dans le corps de la fonction.

BON :
[php]
principale :
a <
- "coucou"
début
affiche a
[/php]

PAS BON (même si c'est possible) :
[php]
principale :
début
a <
- "coucou"
affiche a
[/php]

TOUJOURS PAS BON (même si c'est possible) :
[php]
principale :
a <
- "coucou"
affiche a
[/php]


Mais on pourra toujours écrire ça :

[php]
principale :
a <
- "coucou"
début
si a == "coucou", lis
b <
- "c'est nous"
affiche b
ferme
affiche b // Erreur ! b n'est plus visible !
[/php]

L'acteur "b" est local au bloc de la condition.
Par contre, je vais forcer à définir les acteurs avant les actions afin de rester cohérent avec la syntaxe du langage
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Thu 6 Dec - 12:50
Très bien x)

Pour en revenir au verbe insérer, pourquoi ne peut-on faire ceci :

[php]
Casiers :
langages est un casier de textes valant "Java", "C++", "Logo", "Linotte"
début
insère "Python" à partir de 0 dans langages
Affiche langages
[/php]

Car, venant d'expliquer que la numérotation des casiers commencent à partir de 0, je risque d'embrouiller le lecteur en expliquant l'utilisation de ce verbe.
avatar
Site Admin
Messages : 1036
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Thu 6 Dec - 13:10
Je ne vais pas partir sur des théories longues.. et fumeuses...

c'est une erreur de ma part ! que je ne peux régler que difficilement !

ça risquerait de faire planter bcp de livre sans comprendre facilement la cause de l'erreur...
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Thu 6 Dec - 13:31
Aïe ! C'est problématique :s

Je reviens sur le verbe Parcourir :

Il peut s'utiliser avec le verbe Retourner. Or, je n'arrive pas à créer un exemple utilisant ces deux verbes.

En effet, faire ceci n'a pas de sens :

[php]
Principal :
a est un nombre valant 3
début
Parcours Calcul avec a

Calcul :
*b est un nombre
début
b = b -1
Retourne b
[/php]

Autre exemple : la suite de Fibonacci n'utilise pas le verbe Parcourir...

Pourrais-tu me fournir un exemple utilisant ces deux verbes ?
avatar
Site Admin
Messages : 1036
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Thu 6 Dec - 13:39
Pfff, même moi je m'embrouille....

- Utilisation de parcourir avec "revenir" :
[php]
Principal :
a est un nombre valant 3
b est un nombre
début
Parcours Calcul avec a, b

Calcul :
*a est un nombre
*b est un nombre
début
b = a -1
Reviens
[/php]

- Utilisation du verbe "retourner" :
[php]
Principal :
a est un nombre valant 3
b est un nombre
début
b vaut calcul(a)

Calcul :
*b est un nombre
début
b = b -1
retourne b
[/php]
Senior Member
Messages : 340
Date d'inscription : 2010-08-31
Voir le profil de l'utilisateurhttp://zamirhlinotte.monsite-orange.fr/

RE: Réflexions sur la documentation

le Thu 6 Dec - 14:26
Vous avez l'air de bien vous amuser x)
avatar
Site Admin
Messages : 1036
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Thu 6 Dec - 22:35
Et oui....
Wam va bientôt en savoir plus sur le langage que moi !
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Fri 7 Dec - 13:26
Oui, je m'amuse bien ^^
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Tue 11 Dec - 12:21
Bonjour,

Je m'attaque à la création dynamique des variables et je constate plusieurs choses :

- le verbe créer ne se trouve pas dans le verbier
- les exemples fleurs_des_champs.liv et fleurs_des_champs_et_héritage.liv ne sont pas écrit en Linotte 2.0

Je suppose donc que le verbe créer est en plein travaux ? ^^

De plus, voici comment s'utilise le verbe Créer :

[php]
crée a un acteur texte
[/php]

Mon tuto n'utilise pas le mot acteur...
Du coup, il serait préférable (et plus simple ?) d'écrire :

[php]
crée a un texte
[/php]

Et enfin, voici deux exemples :

[php]
principale :
a :: texte <
- "coucou"
début
si a == "coucou", lis
b :: texte <
- "c'est nous"
affiche b
ferme
[/php]

[php]
principale :
a :: texte <
- "coucou"
début
si a == "coucou", lis
crée b un acteur texte
b vaut "c'est nous"
affiche b
ferme
[/php]

Ces deux exemples font la même chose : l'utilisation du verbe créer dans un bloc est donc inutile.

Mais comme, en dehors des blocs, tu comptes forcer la déclaration des acteurs avant le mot début, je suppose que le verbe créer prendra alors tout son sens, ce verbe permettant de contourner la règle ?
avatar
Site Admin
Messages : 1036
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Wed 12 Dec - 13:59
Bonjour Wam,

En effet, j'hésite à supprimer complément le verbe "créer".
Il a été créé à une époque où il n'était pas possible de créer des acteurs locaux. C'est un verbe très "puissant" mais qui ne permet pas de créer des livres faciles à comprendre.

La meilleur solution est d'écrire :

[php]
principale :
a :: texte <
- "coucou"
début
si a == "coucou", lis
b :: texte <
- "c'est nous"
affiche b
ferme
[/php]
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Wed 12 Dec - 14:46
Je vais donc attendre un peu avant d'écrire mon chapitre sur la création dynamique des variables ^^

Autre question :
Le verbe revenir est-il vraiment nécessaire lorsque l'on utilise le verbe appeler ?

Dans ces exemples :

[php]
Principal :
début
Appelle Traitement parallèle
Affiche "On attend 3 secondes."
Attends 3 secondes
Affiche "Fin des 3 secondes."

Traitement parallèle :
début
Attends 1 seconde
Affiche "....moi, je ne veux pas attendre !"
Reviens
[/php]

[php]
Principal :
paramètres est un casier de nombres valant 7, 1, 3, 2, 5, 6, 4, 0
début
Pour chaque paramètres, appelle Traitement parallèle avec joker
Observe Traitement parallèle

Traitement parallèle :
*élément est un nombre
début
Attends élément seconde
Affiche élément
Reviens
[/php]

Les instructions "Reviens" ne sont pas nécessaire, les exemples fonctionnent très bien sans.

Alors à quoi servent-elles ?

Le verbe revenir permettrait de terminer le traitement parallèle ?
avatar
Site Admin
Messages : 1036
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Wed 12 Dec - 15:19
Bien vu.

non, ce n'est pas obligatoire.

Mais afin d'être cohérent et étant donné que l'utilisation du verbe parcours et appeler est la même, on devrait mettre le verbe revenir.

Est-ce que je vais l'obliger ? je ne sais pas encore !!!
Senior Member
Messages : 340
Date d'inscription : 2010-08-31
Voir le profil de l'utilisateurhttp://zamirhlinotte.monsite-orange.fr/

RE: Réflexions sur la documentation

le Wed 12 Dec - 15:45
J'aime bien les "reviens" moi x)
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Wed 12 Dec - 22:14
Voici la suite de mon tutoriel.
J'y évoque la récursivité, l'héritage, les méthodes fonctionnelles et la parallélisation des traitements...

Enjoy !

(Je ne sais pas si le sommaire fonctionne : chez moi en format PDF sa ne fonctionne plus...)

[attachment=86]
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Thu 13 Dec - 15:16
La suite de Fibonacci ne fonctionne plus :

[php]
principale :
n :: nombre
début
affiche "Entrez un nombre :"
demande n
affiche fibo(n)

fibo :
*n :: nombre
début
si n <
2, retourne n
sinon retourne fibo(n-1) + fibo(n-2)
[/php]

Voici le message d'erreur :

Une fonction doit terminer par le verbe 'retourner'


Edit :

En fait, c'est le programme qui plante si le nombre choisit est trop grand ^^
avatar
Site Admin
Messages : 1036
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Thu 13 Dec - 21:54
je vais voir ça !
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Fri 14 Dec - 12:38
Ajouter un acteur particulier milliseconde serait possible ?

Car me servant des bibliothèques et d'un livre Chronomètre.liv pour mesurer le temps que met mon programme à s'exécuter, se serait bien pratique de pouvoir afficher les millisecondes écoulées ^^
avatar
Site Admin
Messages : 1036
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Fri 14 Dec - 13:44
c'est bonne idée ! c'est noté !
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Sun 16 Dec - 22:10
A quoi servent les attributs "premier" et "dernier" de l'espèce Mégalithe ?
avatar
Site Admin
Messages : 1036
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Réflexions sur la documentation

le Mon 17 Dec - 9:50
Bonjour Wam,

Oui, j'avais prévu à une époque la possibilité de pouvoir animé les mégalithes. Mais j'ai abandonné cette fonctionnalité.

Je dois supprimer ces attributs.

On ne peut rien te cacher <img src=" title="Smile" />
Contenu sponsorisé

Re: Réflexions sur la documentation

Voir le sujet précédentRevenir en hautVoir le sujet suivant
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum