Recherche
1 connecté

  Actuellement : 2 commentaires DELPHI

DELPHI

Quelques bases du language pascal

 

II Les variables

                a) Exemple

                                Créez une application console comme ceci:

 

program Project1;

 

{$apptype console}

 

var str: string;

 

begin

  writeln('Entrez votre nom:');

  readln(str);

  writeln(str);

  readln;

end.

 

                b) Cékoi alors une variable?

                                Testez l'exemple ci-dessus. Vous voyez, le programme a été capable de stocker ce qu'on a rentré (pendant le readln), et de le ressortir plus loin. Il a stocké l'information dans une variable, en l'occurence la variable str. C'est le principe d'une variable: elle contient une information. Elle peut être modifiée, ou lue.

 

                                Définition d'une variable

                                                Pour utiliser une variable, il faut d'abord la créer, pour réserver son emplacement en mémoire et pouvoir l'utiliser. Ceci se fait dans une clause var. Dans l'exemple, la clause var contient une variable nommée str et de type string. La syntaxe générale est donc:

 

var nom_de_la_variable: type_de_la_variable;

 

                                                On peut définir plusieurs variables en même temps, comme ceci par exemple:

 

var str1, str2, str3: string;

    int1, int2: integer;

    int3: integer;

 

                                                On peut donc mettre plusieurs noms de variables, séparés par des virgules, pour un même type de variable. Si le type est différent, il faut mettre un point-virgule et reprendre la même syntaxe; mais le "var" est inutile.

 

                                Modification du contenu d'une variable

                                                Pour modifier le contenu d'une variable, il y a deux moyens. Le premier est de lui assigner directement sa valeur, le second est de la passer en paramètre dans une procédure qui la modifiera.

 

                                                Pour modifier la variable en lui assignant sa valeur:

 

nom_var:=expression;

 

                                                "expression" peut être n'importe quoi, à condition que le type de cette expression soit du même type que la variable. Ainsi, on ne peux mettre des lettres dans un nombre, par exemple. Cette expression peut contenir des opérateurs (de calculs par exemple), de fonctions, ou autres. Par exemple, pour stocker le nombre 40 dans int1, on fait:

 

int1:=40;

 

                                                On peut aussi donner une expression plus complexe:

 

int1:=4*(5+5);

 

                                                La variable peut être modifiée par une procédure. Par exemple:

 

readln(str1);

 

                                                Ceci modifie le contenu de str1 puisque l'on y met ce que l'utilisateur a rentré au clavier. La procedure readln a donc modifié str1.

 

                                Utilisation de la variable

                                                On peut utiliser la variable en la passant en paramètre d'une fonction ou procédure, ou dans une expression. Par exemple:

 

writeln(str1);

 

                                                Ceci écrira à l'écran le contenu de str1. Attention, si vous écrivez:

 

writeln('str1');

 

                                                Ceci n'écrira pas le contenu de str1, mais "str1"!

 

                                                On peut aussi utiliser la variable dans une expression, par exemple:

 

writeln('str1 = '+str1);

int1:=int2+50;

 

                                                La 1ere ligne écrit à l'écran l'expression "'str1 = '+str1". Cette expression est constituée d'une chaîne constante (entre guillemets), de l'opérateur + et de la variable. Ainsi writeln écrira à l'écran "str1 = " plus le contenu de str1. Si str1 contient "coucou", alors writeln écrira à l'écran "str1 = bonjour". Dans la 2eme ligne, c'est pareil: int1 deviendra "int2+50", c'est-à-dire le contenu de int2, plus 50. Si int2 vaut 50, int1 vaudra 100.

 

                c) Integer et strings

                                On a vu dans nos exemples deux types de variables: les integer et les string. Quelle est la différence? Un integer contient un nombre, alors qu'un string contient une chaîne de caractère. Donc un integer pourra contenir 456, mais pas "abcd". Il ne pourra pas non plus contenir "456", car "456" est une chaîne de caractère: il y a le caractère 4, le 5 et le 6, alors que 456 n'est pas une suite de trois caractères, mais bien un nombre.

 

                                On ne peut donc pas modifier un string par un integer ou vice-versa:

 

int1:='bonjour'; // Ne marche pas, on ne peut modifier l'integer

                 // int1 par la chaîne "bonjour"

int1:='456'; // Idem, même si "456" est une chaîne composées

             // de chiffres

 

                                On peut cependant convertir des string en integer ou vice-versa, avec IntToStr et StrToInt. IntToStr converti un integer (donc un nombre) en string (donc en chaîne de caractère). Ainsi l'integer 456 deviendra la chaîne de caractère "456". StrToInt effectue l'inverse: il transforme "456" en 456. Exemples:

 

int1:=StrToInt('401');

int1:=StrToInt(str1);

str1:=IntToStr(870);

str1:=IntToStr(int1);

 

                                Attention, StrToInt attends évidemment un paramètre de type string, et IntToStr un paramètre de type integer.

 

int1:=StrToInt(450);

str1:=IntToStr('42');

 

                                Ceci ne marche pas. De même, StrToInt renvoie une valeur de type integer, et IntToStr une valeur de type string.

 

str1:=StrToInt('450');

int1:=IntToStr(42);

 

                                Ceci ne peut pas marcher. Les fonctions (StrToInt et IntToStr, par exemple) ont un type: elles renvoient une valeur de ce type (integer pour StrToInt, string pour IntToStr).

 

                d) Types de variables

                                Il y a d'autres types de variables souvent utilisés:

 

                                byte: c'est comme un integer, sauf qu'il va de 0 à 255 (un integer va d'environ -2 milliards à +2 milliards). Il peut être considéré comme un integer (donc: byte1:=StrToInt('42') marchera)

                                double: c'est un nombre décimal. Il ne peut pas être considéré comme un integer (puisque "integer" signifie "entier"), donc double1:=StrToInt('42.15') ne marchera pas.

                                char: c'est un caractère. C'est un string de longueur 1.

 

                                Certaines fonctions permettent de transformer des variables d'un certain type en un autre. Par exemple, on a vu StrToInt et IntToStr. Pour transformer un double en un integer, il faut l'arrondir; on utilise la fonction round. On peut aussi le tronquer avec trunc. Pour transformer un double en string, on utilise FloatToStr; pour effectuer l'inverse il existe StrToFloat. Exemples:

 

program Project1;

 

{$apptype console}

 

uses SysUtils; // On en a besoin pour utiliser les fonctions de conversion

 

var int1: integer;

    str1: string;

    double1: double;

 

begin

  int1:=round(4.56); // int1 devient 5

  int1:=trunc(4.56); // int1 devient 4

  str1:=floattostr(4.56); // str1 devient "4.56"

  double1:=strtofloat(str1); // double1 devient 4.56

end.

 

                                Notez que pour utiliser les fonctions de conversion type, vous devez ajouter l'unité SysUtils dans la clause uses de votre programme (voir exemple).

 

                e) Ce qu'on a appris

                                - Une variable contient une information d'un certain type

                                - On peut convertir une variable ou une expression d'un certain type, en un autre type

                                - Une expression est un "calcul" entre plusieurs fonctions, variables ou constantes. Une expression peut aussi ne contenir qu'une constante ou une variable.

                                - '10' est différent de 10, les guillemets montrant que '10' est une chaîne de caractères

 

                h) Note

                                writeln et readln sont des procédures très spéciales. Elles peuvent accueillir autant de paramètres que vous voulez, et aussi bien des string que des integer. Vous n'avez donc pas besoin d'utiliser les fonctions de conversion avec writeln et readln.

 

                                Il existe aussi les procédures write et read, qui font la même chose que writeln et readln; sauf que write ne va pas à la ligne.

 

                                Ce n'est qu'un aperçu de ces procédures. Elles permettent aussi, notament, d'écrire ou de lire dans des fichiers.

 

                g) Exercice

                                Faire un programme qui demande ses nom, prenom et son âge à l'utilisateur, les stocke en mémoire, puis les écrit en une seule ligne, comme par exemple "Bonjour Jean Dupont, vous avez 50 ans, c'est génial".

 

                                Solution de l'exercice (essayer de ne pas s'en servir...) (il y a d'autres moyens pour faire la même chose):

 

program Project1;

 

{$apptype console}

 

var nom, prenom: string;

    age: byte;

 

begin

  writeln('Entrez votre nom:');

  readln(nom);

  writeln('Entrez votre prénom:');

  readln(prenom);

  write('Entrez votre age: ');

  readln(age);

 

  write('Bonjour, ', prenom, ' ', nom, ', ');

  writeln('vous avez ', age, ' ans, c''est génial!');

  readln;

end.