4
Algorithmique 1ère année Initiation à la programmation - Ada (2/6) Didier Le Botlan INSA [email protected] 1er semestre 2009–2010 http://wwwdge inew.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 Avanc er ; Pour utiliser l’action dans mon programme mission1.adb,  j’écris Foo.A vancer ; Un chier Ada contient des commentaires Comme ceci Notion d’identicateur, p. ex. Tourner_A_Gauche 2 / 1 Fabrication du programme mission.adb with Rove r; procedure Mission is begin Rover.av ancer; end Mission; mission-exe 00111010010011 10010101001110 01010111001000 01101010111101 11110010101010 10101010101010 COMPILATION 3 / 1 La compilation Un logiciel spécial, appelé compilateur , est chargé de transformer le programme Le compilateur signalera certaines erreurs : erreurs de syntaxe et erreurs de typage (exemples) Ce sont des messages d’erreur Quand tout va bien, il fabrique un programme exécutable (un logiciel). Exemples d’erreurs et de me ssages d’erreur ? 4 / 1

INSA Toulouse 1A Algorithme ADA Cours 1-2

Embed Size (px)

Citation preview

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