Upload
purplera1n
View
214
Download
0
Embed Size (px)
Citation preview
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
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
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
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
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