Nature et utilisation des variables

Un exemple... qui ne fonctionne pas

Rien de tel que de se confronter un problme pour bien comprendre certains concepts.

Envisageons ici une application simple et tentons de comprendre pour quelle raison elle ne fonctionne pas... du premier coup.

Une machine multiplier

  • Edit / Bouton / LabelEtablis un nouveau projet contenant une seule fiche. On y trouvera:
    • deux zones TEdit
    • Un bouton TButton
    • Un TLabel pour indiquer le signe =

Le principe doit tre que le nombre indiqu dans la zone de texte Edit1 se trouve multipli par 2. Le rsultat de l'opration s'indique automatiquement dans la zone Edit2.

  • Enregistre ce nouveau projet dans le rpertoire Multiplicateur de ton rpertoire personnel.

Pffffttt, facile. En plus, il n'y a mme pas besoin d'utiliser la moindre variable.

Tant mieux si c'est facile! Retrouvons-nous lorsque la fiche sera compose et le projet enregistr.

La multiplication

Pour atteindre l'objectif, il suffit de considrer le contenu de la zone Edit1, de le multiplier par 2 et de dposer le rsultat dans la zone Edit2.

Pour raliser la multiplication, il serait tentant de proposer que l'vnement onClick du bouton soit gr comme indiqu ci-dessous:

Multiplication

Si tu n'es pas dj persuad que cette mthode ne peut fonctionner, essaie de compiler le projet de cette manire.

Ca ne marche pas

Le compilateur arrte de travailler et nous rapporte une erreur. Le type d'erreur est indiqu dans le cadre infrieur.

Arrt du compilateur

Le compilateur est formel: [Erreur] multi.pas(32): Types incompatibles : 'String' et 'Integer'

Effectivement, une erreur s'est produite dans l'instruction

Edit2.Text := Edit1.Text*2

Il est impossible de multiplier le contenu de Edit1.Text, car il s'agit d'une chane de caractres. Il n'est pas possible de raliser des calculs sur des chanes.

Comment s'en sortir?

Le contenu de la proprit Text d'un composant TEdit est toujours une chane de caractres. Comment arriver raliser un calcul sur les valeurs numriques qui y sont indiques?

La solution rside dans le transtypage.

Le trans quoi?

Le transtypage. Il s'agit d'une technique qui consiste faire transformer un type de variable en un autre type: transformer une chane en un entier, transformer un rel en chane,...

Il existe des fonctions qui ralisent la transformation d'un type d'information vers un autre type.

Fonction Puissance dans un tableurCes fonctions sont du mme type que celles que l'on peut utiliser dans les tableurs : elles demandent un certain nombre d'arguments et renvoient une valeur. Dans l'exemple ci-contre, la fonction PUISSANCE du tableur demande deux arguments et renvoie le contenu de A1 la puissance A2.

Les principales fonctions de transtypage que nous utiliserons sont:

IntToStr Convertit une valeur entire (integer) en texte (string)
StrToInt Convertit un texte (string) en valeur entire (integer)
FloatToStr Convertit un rel (valeur virgule flottante) en texte (string)
StrToFloat Convertit un texte (string) en rel (valeur virgule flottante)

Exemples:

Texte:= IntToStr(MonAge)

TextePi:= FloatToStr (3.14159)

Label1.Caption:= FloatToStr(2*3.14*Rayon)

En pratique

La procdure lie l'vnement OnClick du bouton pourrait tre crite comme indiqu ci-dessous:

Evnement onclick

Deux variables ont t prvues; elles sont toutes deux de type entier.

1. Une premire instruction de transtypage transforme le texte dpos dans le composant Edit1 en un entier et dpose la valeur dans la variable Nombre:

Nombre := StrToInt(Edit1.Text)

2.L'instruction suivante ralise la multiplication et dpose le rsultat de l'opration dans la variable Produit:

Produit := Nombre*2

3. La troisime instruction transforme le contenu entier de la variable Produit en une chane et dpose le rsultat du transtypage dans la proprit Text du composant Edit2.

Edit2.Text := IntToStr(Produit)

  • Compose le texte complet de la procdure tel qu'il est indiqu plus haut, y compris la dclaration de variables.
  • Enregistre le projet dans le sous-rpertoire Multiplication de ton rpertoire personnel.
  • Compile et excute le programme.
Le but du transtypage est:
de transformer un type de donnes en un autre type
de transformer une procdure en variable
de raliser des calculs mathmatiques sur des variables
La fonction FloatToStr permet de transtyper:
Une donne relle en un entier
Une donne chane de caractres en un rel
Une donne relle en une chane de caractres
Le mot-cl var utilis dans la procdure signifie:
que l'on va raliser un transtypage dans la procdure
que la procdure est variable
que l'on dclare des variables dont les noms et les types vont suivre

Quand ton programme fonctionne et que tu as compris le but du transtypage, passe la page suivante.


Dernière modification 18/08/2016 Test dans /info ...