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

8/9/2019 INSA Toulouse 1A Algorithme ADA Cours 1-2

http://slidepdf.com/reader/full/insa-toulouse-1a-algorithme-ada-cours-1-2 1/4

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

Didier Le Botlan

[email protected]

1er semestre 2009–2010

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

1 / 1

Retour sur le cours précédent

Un programme utilise des acteurs

Les actions offertes par l’acteur Foo sont dans foo.ads

Dans Foo.ads, l’action Avancer est déclarée de cette manière :procedure Avancer ;

Pour utiliser l’action dans mon programme mission1.adb, j’écris

Foo.Avancer ;

Un fichier Ada contient des commentaires Comme ceci 

Notion d’identificateur, p. ex. Tourner_A_Gauche

2 / 1

Fabrication du programme

mission.adb

with Rover;procedure

Mission is

begin

Rover.avancer;end Mission;

mission-exe001110100100111001010100111001010111001000011010101111011111001010101010101010101010

COMPILATION

3 / 1

La compilation

Un logiciel spécial, appelé compilateur , est chargé detransformer le programme

Le compilateur signalera certaines erreurs : erreurs de syntaxe eterreurs de typage (exemples)

Ce sont des messages d’erreur 

Quand tout va bien, il fabrique un programme exécutable (unlogiciel).

Exemples d’erreurs et de messages d’erreur ?

4 / 1

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

8/9/2019 INSA Toulouse 1A Algorithme ADA Cours 1-2

http://slidepdf.com/reader/full/insa-toulouse-1a-algorithme-ada-cours-1-2 2/4

Bloc séquence

 B1, B2, .., Bn sont des blocs de code.

Cela s’écrit aussi : B1 ∈ bloc , etc.

 Définition du bloc séquence

La séquence des blocs B1, .., B

ns’écrit

 B1 ; B2 ;

... Bn ;

Le bloc B1 est exécuté en premier.

Le bloc B2 ne sera exécuté que lorsque le bloc B1

sera terminé.

Le bloc séquence est terminé lorsque le dernierbloc, Bn, est terminé.

5 / 1

Exemple de bloc séquence

 Exemple : séquence d’actions

with Moteur_Diesel ;

procedure Mission1 is

begin

Moteur_Diesel. Prechauffer ;

Moteur_Diesel. Demarrer ;

Moteur_Diesel. Laisser_Tourner ;

Moteur_Diesel. Arreter ;

end Mission1 ;

Combien de blocs séquence dans le programme ? (et où?)

Combien de corps de programme ? (et où ?)

Combien de temps met le programme à s’exécuter ?

Comment améliorer ce programme?

6 / 1

Les jugements de typage

Le poly contient une quinzaine de règles de typage :

RÈGLE « Séquence »

Si pour tout 1 i n, Bi ∈ bloc,alors leur juxtaposition est un bloc :

B1 ;...

Bn ;

∈ bloc

C’est l’écriture formelle de « Un bloc séquence est un bloc ».

Ces règles SONT les règles respectées par le compilateur.

95% des erreurs de compilation sont dûes à une règle bafouée.

7 / 1

Hello world

Écrire un programme qui affiche “Bonjour”.

with GAda.Text_IO;

procedure Welcome is

package Txt renames Gada.Text_IO;begin

Txt.Put_Line ("Bonjour!") ;

end Welcome;

Put_Line affiche le texte demandé et passe à la ligne.

8 / 1

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

8/9/2019 INSA Toulouse 1A Algorithme ADA Cours 1-2

http://slidepdf.com/reader/full/insa-toulouse-1a-algorithme-ada-cours-1-2 3/4

Hello INSAs

Un programme effectue très souvent des tâches répétitives.

Par exemple, nous souhaitons écrire un programme qui afficheplusieurs messages de bienvenue :

Bonjour,Bienvenue a l’INSA de ToulouseBonjour,Bienvenue a l’INSA de RennesBonjour,Bienvenue a l’INSA de Lyon

9 / 1

Hello INSAs

with GAda.Text_IO;

procedure Mission is

package Txt renames Gada.Text_IO;

procedure Afficher_Bienvenue is

begin

Txt.Put_Line ("Bonjour, ") ;

Txt.Put ("Bienvenue a l’INSA de ") ;

end Afficher_Bienvenue ;begin

Afficher_Bienvenue ;Txt.Put_Line ("Toulouse") ;

Afficher_Bienvenue ;Txt.Put_Line ("Rennes") ;

Afficher_Bienvenue ;Txt.Put_Line ("Lyon") ;

end Mission;

10 / 1

Procédures sans argument

Pour DÉFINIR une action (une procédure), il suffit d’inclure leschéma ci-dessous avant le begin du programme.

 Définition de procédure sans argument 

procedure Bar is

Définitions éventuelles 

beginCorps de la procédure 

B

end Bar ;

On doit avoir B ∈ bloc

Pour INVOQUER l’action (la procédure), on écrit Bar;

11 / 1

Appel de procédure avec argument

L’acteur Simulation contient l’action Rouler_Vers :

procedure Rouler_Vers (Point : Character ) ;

Pour utiliser cette action, il faut lui fournir un argument, donné entreparenthèses :

Simulation.Rouler_Vers ( Point => e ) ;

ou plus simplement

Simulation.Rouler_Vers (e) ;

On sait que e doit être de type Character , c.-à-d. une règle doitpermettre d’obtenir e ∈ Character 

12 / 1

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

8/9/2019 INSA Toulouse 1A Algorithme ADA Cours 1-2

http://slidepdf.com/reader/full/insa-toulouse-1a-algorithme-ada-cours-1-2 4/4

Règles de typage

RÈGLES « Types de base »

-2000 ∈ Integer 

42 ∈ Integer 

42 ∈ Natural

42 ∈ Positive

42.0 ∈ Float  True ∈ Boolean

False ∈ Boolean

’A’ ∈ Character 

’8’ ∈ Character 

"Moo" ∈ String

"42" ∈ String

13 / 1

Retour sur Rouler_Vers

On peut donc écrire Simulation.Rouler_Vers (’L’) ;

car ’L’ ∈ Character 

ou de manière équivalente Simulation.Rouler_Vers (Point => ’L’) ;

Éviter la confusion avec la déclarationprocedure Rouler_Vers (Point : Character ) ;

(Pour invoquer Rouler_Vers, on écrit pas procedure, on écrit pas Character )

14 / 1

Quizz

Quizz

(typique contrôle)

1 ∈ Integer

1.0 ∈ Float

"1" ∈ String

’1’ ∈ Character

S.Rouler_Vers (’L’) ∈ bloc

S.Rouler_Vers (1) ∈

15 / 1

Quizz 2

Quizz 2

150 + 300 ∈ Integer

150 + 3.5 ∈

200 < 900 ∈ Boolean

900 < 200 ∈ Boolean

900.0 < 200.0 ∈ Boolean

900.0 < 200 ∈

16 / 1


Recommended