CODINGCLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

4/3.2 - Les mots-clés du LOGO et leur utilisation (2e Complément) (!)Coding Classeurs Weka
4/3 - LOGO : Définitions et rappels de base

4/3.2 - Les mots-clés du LOGO et leur utilisation

I. Traitement de chaînes, nombres et opérateurs booléens

A. TRAITEMENT DE CHAINES

Remarque :

Dans la suite, < valeur> représente :

— une chaîne alphanumérique,
— un entier ou un réel,
— un ensemble d'éléments (chaînes ou numériques) ou de variables.

ascii
Formatascii < "chaîne alphanumérique >
Fonction

Donne la valeur ASCII du premier caractère de la chaîne entrée.

Equivalent BASIC : ASC

Exemples :

?ascii "Entrez 69

?ascii "entrez 101

?ascii "e 101

Utilisation

Supposons que vous vouliez tester si un caractère est une lettre majus-

cule (donc entre A et Z).

A a pour code ASCII 65,

Z a pour code ASCII 91.

Le test se ramène donc à la comparaison du code ASCII du caractère entré avec les valeurs bornes 65 (A) et 91 (Z).

to asc ;teste si la touche frappee est majuscule ou minuscule make "nb rc ;attend un caractere au clavier make "nb ascii :nb ;nb = valeur ASCII du caractere entre show and (:nb <91) (:nb>64) ;Affiche TRUE si majuscule, FALSE sinon end

Formatbf
Fonction

bf-< ' 'objet >

Fonction donne l'expression d'un objet sans son premier caractère.

Equivalent BASIC : RIGHT$

Exemples :

?bf "azerty zerty

?bf [1 2 3 4 5]

[2 3 4 5]

?bf 12.3456 2.3456

Utilisation

Vous voulez mettre une majuscule sur la première lettre d'une chaîne alphanumérique. Nous allons créer une procédure de nom majus à laquelle nous passerons un paramètre : le mot à modifier.

Remarque :

La différence (au niveau code ASCII) d'une lettre quelconque majuscule et de la même lettre minuscule réside dans le bit 5 de l'octet de codage : il est à 1 pour un caractère minuscule, et à zéro pour un caractère majuscule.

Partant de cette remarque, pour transformer un caractère minuscule en majuscule, il suffira de soustraire de sa valeur ASCII 2A5 soit 32, d'où le programme suivant :

to majus :mot ;Met la 1re lettre du mot entre en majuscule

make "d ascii first :mot ;valeur ASCII du 1er caractere

make "d :d-32 .-majuscule

make "d char :d ;caractere de code ASCII d

make "c fput :d bf :mot ;constitution du mot

show :c ;affichage

bl
Formatbl < "objet>
Fonction

Donne l'expression d'un objet sans son dernier caractère.

Equivalent BASIC : LEFT$

Exemples :

?bl "oiseau oisea

?bl [a bb ccc d ee]

[a bb ccc d)

?bl 12.3434 12.343

char

Utilisation
char
Formatchar < valeur numérique>
FonctionDonne le caractère ASCII de rang Cvaleur numérique>.

Equivalent BASIC : CHR$

Exemples :

?char 0 ?

Rien n'est affiché car le caractère de code ASCII 0 n'est pas affichable. Reportez-vous à la table des caractères ASCII donnée en annexe 1 Partie 11 pour connaître ceux qui sont affichables.

?char 71 G

UtilisationAffichage d'un texte stocké en mémoire.

Nous allons créer une procédure à cet effet.

Supposons que cette procédure accepte comme paramètre l'adresse du premier octet du message à afficher dans la variable :ADR.

Supposons également que le caractère de code 0 indique que le message est terminé.

Nous allons, par exemple, stocker le mot « Bonjour » en mémoire. En utilisant la primitive « ascii ». Nous pouvons connaître les codes de chaque lettre du mot :

Bonjour
6611110106111117114

Nous allons créer la procédure « charl » qui stockera le message « Bonjour » à partir de l'adresse 36864. Reportez-vous à la primitive « .depo-sit » pour avoir plus de détails sur le stockage d'un octet en mémoire.

to charl ;ecriture du mot Bonjour a partir de l'adresse RAM 36864

.deposit 36864 66
.deposit 36865 111
.deposit 36866 110
.deposit 36867 106
.deposit 36868 111
.deposit 36869 117
.deposit 36870 114
.deposit 36871 0
end

Nous allons maintenant créer la procédure « char2 » qui lira et affichera le message stocké par « charl ».

Cette procédure obéit à l'organigramme suivant :

to char2 :debut

make "d " ;RAZ de la variable d

label "boucle ;point de rebouclage

make "c .examine :debut ;extraction d'un octet de la RAM

if not (:c = 0) [make "d fput :d char :c] mémorisation si < >0

if (:c = 0) [go "fin] ;fin de lecture

make "début :debut+1 ;memoire suivante

go "boucle ;lecture suivante

label "fin

show :d ;affichage des donnees ASCII lues end

count
Formatcount < valeur >
Fonction

Donne le nombre d'éléments ou la longueur de la valeur entrée. Equivalent BASIC :

— aucun si < valeur > a une structure d'ensemble ou est un nombre,
— LEN si < valeur > est une chaîne alphanumérique.

Exemples :

?count "il-fait-beau 12

?count [il fait beau] 3

?count 123.456 7

UtilisationVous voulez saisir un nombre de 4 chiffres au maximum. Ce problème peut être résolu de la manière suivante :

Créons une procédure qui correspond à l'organigramme suivant :

to saisie ;saisie d'un nombre de moins de cinq chiffres pr [Entrez un nombre de - de 4 chiffres] make "txt " label "boucle

make "tou rc ;lecture d'une touche

if (ascii :tou = 243) [go "fin] ; test appui sur < cr >

make "txt fput :txt :tou mémorisation go "boucle ;nouvelle saisie label "fin

show :txt ;affichage nombre entre

if (count :txt > 4) [pr [j'avais dit moins de 5 chiffres !!!]] ;mess. erreur end

Entrez un nombre de 4 chiffres ou moins, puis appuyez sur < RETURN >. Aucun message d'erreur n'est affiché.

Entrez un nombre de plus de 4 chiffres, puis appuyez sur < RETURN >. Le message « J'avais dit moins de 5 chiffres !!! » apparaît.

emptyp
Formatemptyp < valeur >
FonctionFonction booléenne (2 valeurs possibles : TRUE et FALSE). Dit si l'ensemble fourni n'a aucun élément, ou si la chaîne fournie est de longueur nulle.

Equivalent BASIC :

Aucun si est un ensemble, LEN = 0 si est une chaîne.

Exemples :

?emptyp [1 ]

FALSE

?emptyp[]

TRUE

?emptyp "abc FALSE

Pemptyp "

TRUE

Utilisation
first
Formatfirst < valeur >
FonctionExtrait le premier caractère de la valeur fournie.

Equivalent BASIC :

MID$ ou LEFT$

Exemples :

Pfirst "Coca C

?first [5 4 3 2 1] 5

Utilisation
fput
Formatfput < valeur1 > < valeur2 >
Fonction

Place < valeur1 > devant < valeur2 > et stocke le résultat < valeur2 >.

Equivalent BASIC : concaténation ( + ).

Exemples :

?fput "C "oca Coca
?fput 54 [zebre lion] [54 zebre lion]

Utilisation

Cette fonction est très souvent employée pour mémoriser une suite de touches entrées au clavier de la manière suivante :

to saisie

make "txt

label "bou

make "tou rc ; lecture d'une touche

if (ascii :tou = 243) [go "fin] ; test appui sur

make "txt fput :txt :tou ; mémorisation

go "bou ; nouvelle saisie

label " fin

end

item
Formatitem < nombre > < valeur >
FonctionExtraction d'un caractère alphanumérique d'une chaîne, d'un nombre ou d'un ensemble.

Equivalent BASIC : MID$

Utilisation

Extraction de chaque mot d'une phrase. Les mots sont séparés par un espace.

to ite

pr [Entrez une phrase, j'en extrairai les] pr [mots.]

make "txt " ;RAZ texte entre label “boucle

make "tou rc ;lecture d'une touche if (ascii :tou = 243) [go "suite] ;test appui sur make "txt fput :txt :tou ;memorisation go "boucle ;nouvelle saisie /

label "suite make "p 1

make "bis count :txt ; longueur texte entre label "12

make "mot" ;RAZ mot label "11

if (:p - 1 = :bis) [go "13] make "I item :p :txt make "mot fput :mot :l make "p :p + 1 if not (ascii :l = 32) [go "11] label "13 pr [mot trouve] pr :mot

if (:p < :bis) [go "12]

end

last
Formatlast
Fonction

Donne le dernier caractère de la valeur fournie. Equivalent BASIC: RIGHT$

Exemples :

?last "qwerty

y

?last 12.35 5

?last [1,2,9,4] ,2,9,4

?last [1 2 9 4] 4

Utilisation
INCOMPLET

Page précédente : 4/3.2 - Les mots-clés du LOGO et leur utilisation
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 142 millisecondes et consultée 289 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.