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 ?

-40%
Le deal à ne pas rater :
Machine à café avec broyeur KRUPS YY4384FD Essential
357.99 € 599.99 €
Voir le deal

descriptionLa fonction "chercher" EmptyLa fonction "chercher"

more_horiz
Bjr à tous et toutes,

Comment utilise-t-on la fonction "chercher" qui se trouve dans le verbier ?
Si j'en crois l'instruction qui est : cherche ?, position de ? dans ? on doit y apporter des précisions lesquelles sont indiquées par les ?
Pouvez vous me donner un exemple. Peut-on l'employer pour faire des recherches dans les fichiers.txt ?
Merci pour votre réponse.
Cordialement
FC

descriptionLa fonction "chercher" EmptyRe: La fonction "chercher"

more_horiz
Tu trouveras plusieurs exemples dans les tutoriels de l'atelier Smile

En voici l'un d'eux :

Code:

// Dans b_tutoriels/j_expert/PrototypesEditeurs.liv

cherche pos, la position de "" dans ligne


Le premier paramètre est un nombre.
Il permet de déterminer la position numérique de "\" dans le texte@ligne

Tandis que les deux paramètres suivants sont sous forme de "texte".
Ils pourraient, je pense, aussi accepter la forme d'un casier de texte ou d'un fichier par exemple... Wink

descriptionLa fonction "chercher" EmptyRe: La fonction "chercher"

more_horiz
re

Je viens tout juste d'ajouter au Glossaire du forum : le verbe Chercher... Wink

descriptionLa fonction "chercher" EmptyRe: La fonction "chercher"

more_horiz
Verbe que je souhaite supprimer un jour... je trouve sa syntaxe trop lourde... des idées ?

descriptionLa fonction "chercher" EmptyRe: La fonction "chercher"

more_horiz
I/ On pourrait peut-être rendre le paramètre "pos" implicite ?  Idea

L'on n'aurait plus à déclarer "pos", tout en pouvant l'utiliser comme avant...

La syntaxe serait alors de ce type :

Code:

Casiers :
     langages est un casier de textes valant "Java", "C++", "Logo", "Linotte"
     Début
         Cherche "C++" dans langages
         Si pos = 0, affiche "non trouvé"
         Si pos != 0, lis  
             pos vaut pos - 1  // pour retrouver la numérotation originale du casier
             Affiche pos
             Affiche langages {pos}
         Ferme


 Exclamation  Seul inconvénient "pos" ne pourrait plus être utilisé librement comme une variable,
mais il serait affecté de manière constante à l'utilisation exclusive du verbe Chercher.
Ainsi pos deviendrait une variable constante du verbe Chercher.

II/ On pourrait faire de "pos" une variable particulière du verbe Chercher :  Idea

on n'écrira donc plus : "pos est un nombre", mais "pos est un pos".

La syntaxe serait alors de ce type :

Code:

Casiers :
     langages est un casier de textes valant "Java", "C++", "Logo", "Linotte"
     pos est un pos // variable particulière attaché au verbe Chercher
     Début
         Cherche "C++" dans langages
         Si pos = 0, affiche "non trouvé"
         Si pos != 0, lis  
             pos vaut pos - 1  // pour retrouver la numérotation originale du casier
             Affiche pos
             Affiche langages {pos}
         Ferme


La simplification de la syntaxe n'entraîne ici aucun inconvénient... Wink

___

Mais... en parlant de syntaxe, ne serait-il pas envisageable de retrouver "alors" dans les conditions ?  Idea

Code:

Si pos = 0 alors affiche "non trouvé"


Mais c'est juste une idée pour une évolution futur... Smile

Dernière édition par XP Rico le Wed 31 May - 16:34, édité 2 fois

descriptionLa fonction "chercher" EmptyRe: La fonction "chercher"

more_horiz
J'ai trouvé dans le tuto un programme destiné à remplacer un nom (texte) par un autre en utilisant le verbe chercher.
J'ai tenté d'alléger le code et le résultat n'est pas probant. voir ci-après :

**********
globale
position est un nombre
exemple :
histoire est un texte valant "Le professeur demande à Toto de conjuguer le verbe manger à la première personne de l'indicatif,
du futur et du passé composé. Toto dit :
- Euh... je mange, je mangerai, euh, euh... J'AI PLUS FAIM !"
début
affiche histoire
affiche "*********************"
affiche remplacertous (histoire, "Toto", "nom") // remplacer (texte, quoi, par)
affiche "*********************"
remplacertous : texte, quoi , par
début
cherche position, position de quoi dans texte
tant que position !=-1, lis
texte prend remplacertous (texte, quoi, par)
cherche position, position de quoi dans texte
ferme
retourne texte
******************
A la 25 ème ligne (au niveau "texte prend remplacertous (texte, quoi, par)" ) linotte s'arrête pour indiquer :
ligne 25 la valeur est incorrecte : trop de boucles ou d'appels imbriqués... le livre doit s'arrêter.

Cela n'est-il pas dû à la syntaxe de "chercher" ?
Une idée ?
Merci

descriptionLa fonction "chercher" EmptyRe: La fonction "chercher"

more_horiz
non pas vraiment Smile

Code:

globale
   position est un nombre

exemple :
   histoire est un texte valant "Le professeur demande à Toto de conjuguer le verbe manger à la première personne de l'indicatif,
du futur et du passé composé. Toto dit :
- Euh... je mange, je mangerai, euh, euh... J'AI PLUS FAIM !"
   début
      affiche histoire
      affiche "*********************"
      affiche remplacertous(histoire, "Toto", "nom") // remplacer (texte, quoi, par)
      affiche "*********************"

remplacertous : texte, quoi , par
   début
      cherche position, position de quoi dans texte
      tant que position !=0, lis
         texte prend remplacertous (texte, quoi, par)
/*
#########
Attention, il y a ici une imbrication de fonction dans la même fonction
Ce qui explique une erreur système, puisqu'on rentre dans une boucle infernale ;)
#########
*/
         cherche position, position de quoi dans texte
      ferme
      retourne texte


Il s'agit plus d'une boucle infernale à l'intérieur de la fonction remplacertous...

descriptionLa fonction "chercher" EmptyRe: La fonction "chercher"

more_horiz
Bonjour,

je verrais plutôt ceci :

Code:


Casiers :
    nombres est un casier de textes valant 1, 2, 3, 4
    pos est un nombre
    Début
        pos cherche 2 dans nombres
        Si pos = 0, affiche "non trouvé"
        Si pos != 0, lis 
            pos vaut pos - 1  // pour retrouver la numérotation originale du casier
            Affiche pos
            Affiche nombres {pos}
        Ferme


En fait, le mot "cherche" remplace ici le verbe "vaut".
Qu'en pensez-vous ?

descriptionLa fonction "chercher" EmptyRe: La fonction "chercher"

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