Vous êtes sur la page 1sur 3

Une métaphore

On peut se représenter une variable comme une ardoise avec un nom


(une étiquette).
Algorithmique 1ère année
Initiation à la programmation - Ada (5/6)
o
: Fo
M
Didier Le Botlan NO
INSA
contact.lebotlan@insa-toulouse.fr
42
1er semestre 2009–2010

http://wwwdgeinew.insa-toulouse.fr/~lebotlan/index.html
En réalité, il s’agit d’un emplacement dans la mémoire de l’ordinateur.

1 / 12 2 / 12

Mode d’emploi Mode d’emploi

Une fois la variable déclarée, on peut l’utiliser :

À chaque fois qu’une variable est déclarée, l’ordinateur récupère une Destination : Character ; Avant le begin
ardoise libre dans son tas d’ardoises. ..
.
(Il alloue un espace mémoire pour la variable).
Destination := ’L’ ;
L’ardoise récupérée peut contenir n’importe quoi. Avion_Sol . Rouler_Vers ( Destination ) ;

nb_mots : integer ; Une variable entière


ation
taux_imposition : float ; Une variable réelle stin
De L’argument est
’L’ L’argument
L’avion roule estdudu
vers
bon
bon
lele
type
pointtype::
’L’.
`L’avion roule
Destinationvers∈ point
Character
` Destination ∈ Character ’L’.
Pour cette raison, il est conseillé d’initialiser les variables.
(Après le begin)

nb_mots := 0 ;
taux_imposition := 0.0 ;
3 / 12 4 / 12
Affectation (à retenir) Quizz

Pour modifier une variable Foo on écrit Donner la valeur des variables :
Foo := nouvelle valeur ;
A B
1 La nouvelle valeur est évaluée en premier
2 Le résultat est mis dans Foo A, B : Integer ; ? ?
...
Exemple B := 200 ; ? 200
A := B ; 200 200
Foo : integer ; avant le begin B := 800 ; 200 800 A ne change pas de valeur
.. Foo
. B := B +1 ; 200 801
Foo := 7 ; 196
Foo := Foo * 2 ;
Foo := Foo * Foo ; A := B ; 801 801
B := A ; 801 801 Ce n’est pas un échange

5 / 12 6 / 12

Portée Les constantes String

Une variable “n’existe” que dans son sous-programme.

with Simulation , Tour ;


procedure Mission1 is
package S renames Simulation ;
On s’interdira d’utiliser des variables de type String.
procedure Rouler_KA is Par contre, on peut définir des constantes.
Debut_Piste : Character := ’A’ ; (le compilateur a besoin de connaître la taille de la chaîne)
begin
Tour . Attendre_Autorisation_Roulage ;
Nom_Client : String ;
S. Rouler_Vers (’L’ ) ;
S. Rouler_Vers (’M’ ) ;
S. Rouler_Vers (’E’ ) ; Nom_Client : constant String := "Austin ’Danger’ Powers" ;
S. Rouler_Vers (Debut_Piste) ;
end Rouler_KA ;
begin
Rouler_Ka ;
end Mission1 ;

7 / 12 8 / 12
Procédures avec argument(s) Appel de procédure avec argument(s)

with GAda. Text_IO ; Nom_INSA : String Afficher_Bienvenue


procedure Mission2 is
package Txt renames GAda. Text_IO ;

Cette procédure affiche un message de bienvenue paramétré


R ÈGLE ` « Appel de procédure »
procedure Afficher_Bienvenue (Nom_INSA : String ) Is
begin Un appel de procédure est un bloc :
Txt . Put_Line ( "Bonjour, " ) ;
Si ` e ∈ String alors ` Afficher_Bienvenue (e) ∈ bloc
Txt . Put_Line ( "bienvenue a l’INSA de " & Nom_INSA) ;
end Afficher_Bienvenue ;
begin
Pour ajouter un message supplémentaire, puis-je écrire :
Afficher_Bienvenue ( "Toulouse" ) ;
Afficher_Bienvenue ( "Rennes" ) ;
Afficher_Bienvenue ( "Lyon" ) ; Afficher_Bienvenue ("Toulouse") & " et bonne journee"
end Mission2 ;

9 / 12 10 / 12

Structure d’un programme Ada Exécution d’un programme


Page 4 du poly, rappel du premier cours
with GAda. Text_IO ;
procedure Mission is
X = 99
with Avion_Sol , Tour ; Import d’acteurs function Dernier_Chiffre (X : Integer ) return Integer is
Resultat : Integer ; tat
procedure Mission2 is sul
function Delta_Cap (X, Y : Float ) return Float is
begin Re 9
i f X >= 0 then Resultat := X mod 10 ;
Resultat : Float ; else Resultat := (-X) mod 10 ;
begin end i f ;
... return Resultat ; IlIlaffiche
affiche99à àl’écran.
l’écran.
end Delta_Cap ; end Dernier_Chiffre ;
Déclarations
procedure Tester_Roulage is
procedure Tester_Dernier_Chiffre is
begin
begin
Tour .Demande_Autorisation_Roulage ; "9" 9
Avion_Sol . Rouler_Vers (’L’) ; GAda. Text_IO . Put_Line ( Integer’Image( Dernier_Chiffre( 99 ) ) ) ;
end Tester_Roulage ; GAda. Text_IO . Put_Line ( Integer’Image( Dernier_Chiffre( -52 ) ) ) ;
begin GAda. Text_IO . Put_Line ( Integer ’Image( Dernier_Chiffre(200) ) ) ;
Corps du end Tester_Dernier_Chiffre ;
Tester_Roulage ;
programme
begin
end Mission2 ;
Tester_Dernier_Chiffre ;
end Mission ;
11 / 12