Une bouffée d'air frais dans la robotique

Telecom Robotics

L'Ada

Tutoriaux

Nos Robots

Connexion utilisateur

Telecom Robotics / Areabot

Une bouffée d'air dans la robotique

3 - Les variables

Où déclarer ses variables ?

Pour déclarer une variable, il faut être à un endroit où on a le droit de déclarer des variables, typiquement juste après le is de définition d'une fonction. Si on veut déclarer une variable à un autre endroit, il existe une autre méthode : on peut remplacer une instruction par un bloc.

declare
déclaration de variables
begin
liste d'instructions pour laquelle la variable existe
end;

Ceci déclare de nouvelles variables valides uniquement pour les instructions situées entre le begin et le end. Après le end;, les variables déclarées entre le declare et le begin n'existent plus.

La déclaration d'une variable

Une déclaration de variable suit le schéma suivant :

nom_de_la_variable : [constant] type_de_la_variable [:= valeur_initiale];

La valeur initiale est facultative. Si cette variable ne change jamais, il est conseillé (avec certaines options de compilation, il est même obligatoire) de la noter constant.

Si on veut déclarer plusieurs variables du même type, on peut les regrouper :

variable1, variable2 [...] : [constant] type_des_variables [:= valeur_initiale];

Les types de base

En Ada, on peut faire des types très contraints, comme par exemple, les entiers pairs entre 10 et 50. On reviendra sur ce point plus tard. Les types de bases sont Boolean avec deux valeurs true et false, Integer pour les entiers, Float pour les réels, Character pour les caractères, String pour les chaînes de caractères.

Les entiers

Il existe plusieurs façons de noter un entier en Ada, par exemple :

e1 : Integer := 1E6;
e2 : Integer := 1_000_0_00;
e3 : Integer := 16#12AB#;

On peut naturellement écrire l'entier tel quel. Pour améliorer la lisibilité, on peut aussi mettre le caractère _ n'importe où pour séparer différents groupes de chiffres (dans l'exemple ci-dessus, la lisibilité n'est pas vraiment meilleure, c'est juste pour montrer qu'on peut mettre un _ n'importe où). On peut aussi utiliser la notation base#nombre# pour spécifier un nombre dans une base autre que le décimal. La notation nombreEexposant désigne le nombre nombre * base^exposant avec base=10 par défaut.

Les chaines de caractères

Le type String d'Ada est très différent des "classes" string que l'on rencontre en C++ ou Java, il se rapproche plus du type char[]. En effet une chaîne a une taille fixe qui ne peut pas changer.

Par exemple:

procedure taille_string is
s : String := "coucou";
begin
s := "test"; -- Ceci ne compile pas
end;

échoue à la compilation avec un message du genre taille_string:4:09: warning: wrong length for array of subtype of "Standard.String" defined at line 2. En effet, la ligne 2 déclare une chaîne de caractères de taille 6, on ne peut donc pas lui affecter une chaîne de caractères de taille 4 comme "test".
Pour déclarer une chaîne sans l'initialiser, on utilise la syntaxe

nom_de_la_variable : String(indice_du_premier_element..indice_du_dernier_element);

Exemple

Voici un petit exemple de programme avec une "variable" :

with Text_IO; use Text_IO;

procedure put_var is
begin
Put("Veuillez entrer votre nom: ");
declare
name : constant String := Get_Line;
begin
Put("Bonjour ");
Put_Line(name);
end;
end put_var;

Dans ce programme, Put_Line lit une ligne entrée au clavier. Ici, on ne connaît pas à l'avance la taille de la chaîne de caractères name. On ne peut donc pas la déclarer avant de la connaître, c'est pourquoi on utilise un bloc declare ... begin ... end

L'affectation

Comme on peut s'en douter en regardant la façon dont on donne une valeur initiale à une variable, l'affectation se fait grâce au symbole ":=". Pour donner une valeur à une variable, on utilise une instruction du genre

nom_de_la_variable := expression_donnant_la_nouvelle_valeur;

Nos soutiens

Images aléatoires

Untitled image The Brain, Version 1, Part 2 

Événements à venir

  • pas grand chose...

Contenu populaire

Parcourir les archives

« Mai 2008  
Lu Ma Me Je Ve Sa Di
      1 2 3 4
5 6 7 8 9 10 11
12 14 15 16 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Syndication

Syndiquer le contenu