3
Algorithmique 1ère année Initiation à la programmation - Ada (5/6) Didier Le Botlan INSA [email protected] 1er semestre 2009–2010 http://wwwdgeinew.insa-toulouse.fr/~lebotlan/index.html 1 / 12 Une métaphore On peut se représenter une variable comme une ardoise avec un nom (une étiquette). 42 NOM : Foo En réalité, il s’agit d’un emplacement dans la mémoire de l’ordinateur. 2 / 12 Mode d’emploi À chaque fois qu’une variable est déclarée, l’ordinateur récupère une ardoise libre dans son tas d’ardoises. (Il alloue un espace mémoire pour la variable). L’ardoise récupérée peut contenir n’importe quoi. nb_mots : integer ; Une variable entière taux_imposition : float ; Une variable réelle Pour cette raison, il est conseillé d’initialiser les variables. (Après le begin) nb_mots := 0 ; taux_imposition := 0.0 ; 3 / 12 Mode d’emploi Une fois la variable déclarée, on peut l’utiliser : Destination : Character ; Avant le begin . . . Destination := ’L’ ; Avion_Sol.Rouler_Vers (Destination) ; L’avion roule vers le point ’L’. L’avion roule vers le point ’L’. L’argument est du bon type : Destination Character L’argument est du bon type : Destination Character ’L’ Destination 4 / 12

INSA Toulouse 1A Algorithme ADA Cours 1-4

Embed Size (px)

Citation preview

Page 1: INSA Toulouse 1A Algorithme ADA Cours 1-4

Algorithmique 1ère annéeInitiation à la programmation - Ada (5/6)

Didier Le Botlan

[email protected]

1er semestre 2009–2010

http://wwwdgeinew.insa-toulouse.fr/~lebotlan/index.html

1 / 12

Une métaphore

On peut se représenter une variable comme une ardoise avec un nom(une étiquette).

42NOM : Foo

En réalité, il s’agit d’un emplacement dans la mémoire de l’ordinateur.

2 / 12

Mode d’emploi

À chaque fois qu’une variable est déclarée, l’ordinateur récupère uneardoise libre dans son tas d’ardoises.

(Il alloue un espace mémoire pour la variable).

L’ardoise récupérée peut contenir n’importe quoi.

nb_mots : integer ; Une variable entièretaux_imposition : float ; Une variable réelle

Pour cette raison, il est conseillé d’initialiser les variables.(Après le begin)

nb_mots := 0 ;taux_imposition := 0.0 ;

3 / 12

Mode d’emploi

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

Destination : Character ; Avant le begin

...Destination := ’L’ ;Avion_Sol .Rouler_Vers (Destination ) ;

L’avion roule vers le point ’L’.L’avion roule vers le point ’L’.L’argument est du bon type :` Destination ∈ Character

L’argument est du bon type :` Destination ∈ Character’L’Destination

4 / 12

Page 2: INSA Toulouse 1A Algorithme ADA Cours 1-4

Affectation (à retenir)

Pour modifier une variable Foo on écritFoo := nouvelle valeur ;1 La nouvelle valeur est évaluée en premier2 Le résultat est mis dans Foo

Exemple

Foo : integer ; avant le begin...Foo := 7 ;Foo := Foo * 2 ;Foo := Foo * Foo ;

Foo× 2=14

Foo× 2=14

Foo× Foo=

196

Foo× Foo=

196

196Foo

5 / 12

Quizz

Donner la valeur des variables :

A B

A, B : Integer ; ? ?. . .B := 200 ; ? 200A := B ; 200 200B := 800 ; 200 800 A ne change pas de valeurB := B +1 ; 200 801

A := B ; 801 801B := A ; 801 801 Ce n’est pas un échange

6 / 12

Portée

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

with Simulation , Tour ;procedure Mission1 is

package S renames Simulation ;

procedure Rouler_KA isDebut_Piste : Character := ’A’ ;

beginTour.Attendre_Autorisation_Roulage ;S.Rouler_Vers (’L’) ;S.Rouler_Vers (’M’) ;S.Rouler_Vers (’E’) ;S.Rouler_Vers (Debut_Piste) ;

end Rouler_KA ;

begin

Rouler_Ka ;

end Mission1 ;

7 / 12

Les constantes String

On s’interdira d’utiliser des variables de type String.

Par contre, on peut définir des constantes.(le compilateur a besoin de connaître la taille de la chaîne)

Nom_Client : String ;

Nom_Client : constant String := "Austin ’Danger’ Powers" ;

8 / 12

Page 3: INSA Toulouse 1A Algorithme ADA Cours 1-4

Procédures avec argument(s)

with GAda.Text_IO ;

procedure Mission2 is

package Txt renames GAda.Text_IO ;

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

procedure Afficher_Bienvenue (Nom_INSA : String ) Isbegin

Txt .Put_Line ("Bonjour, ") ;Txt .Put_Line ("bienvenue a l’INSA de " & Nom_INSA) ;

end Afficher_Bienvenue ;

beginAfficher_Bienvenue ("Toulouse") ;Afficher_Bienvenue ("Rennes") ;Afficher_Bienvenue ("Lyon") ;

end Mission2 ;

9 / 12

Appel de procédure avec argument(s)

Afficher_BienvenueNom_INSA : String

RÈGLE ` « Appel de procédure »

Un appel de procédure est un bloc :Si ` e ∈ String alors ` Afficher_Bienvenue (e) ∈ bloc

Pour ajouter un message supplémentaire, puis-je écrire :

Afficher_Bienvenue ("Toulouse") & " et bonne journee"

10 / 12

Structure d’un programme AdaPage 4 du poly, rappel du premier cours

with Avion_Sol , Tour ;

procedure Mission2 is

function Delta_Cap (X, Y : Float ) return Float isResultat : Float ;

begin. . .

end Delta_Cap ;

procedure Tester_Roulage isbegin

Tour.Demande_Autorisation_Roulage ;Avion_Sol .Rouler_Vers (’L’) ;

end Tester_Roulage ;

begin

Tester_Roulage ;

end Mission2 ;

Import d’acteurs

Déclarations

Corps duprogramme

11 / 12

Exécution d’un programme

9Resultat

X = 99

9"9"

2Resultat

X = -52

2"2"

with GAda.Text_IO ;procedure Mission is

function Dernier_Chiffre (X : Integer ) return Integer isResultat : Integer ;

begini f X >= 0 then Resultat := X mod 10 ;else Resultat := (-X) mod 10 ;end i f ;return Resultat ;

end Dernier_Chiffre ;

procedure Tester_Dernier_Chiffre isbegin

GAda.Text_IO.Put_Line ( Integer’Image( Dernier_Chiffre( 99 ) ) ) ;

GAda.Text_IO.Put_Line ( Integer’Image( Dernier_Chiffre( -52 ) ) ) ;GAda.Text_IO.Put_Line ( Integer ’ Image(Dernier_Chiffre(200) ) ) ;

end Tester_Dernier_Chiffre ;

begin

est le PC (Pointeur de Code)

Tester_Dernier_Chiffre ;end Mission ;

Il affiche 9 à l’écran.Il affiche 9 à l’écran.

Il affiche 2 à l’écran.Il affiche 2 à l’écran.Il affiche 0 à l’écran.Il affiche 0 à l’écran.