2eme
This commit is contained in:
parent
953fcc048a
commit
bc16187136
21 changed files with 1138 additions and 0 deletions
BIN
licorne-arc-en-ciel-licorne.jpg
Normal file
BIN
licorne-arc-en-ciel-licorne.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 33 KiB |
BIN
mission1-exe
Executable file
BIN
mission1-exe
Executable file
Binary file not shown.
37
mission1.adb
Normal file
37
mission1.adb
Normal file
|
@ -0,0 +1,37 @@
|
|||
--
|
||||
-- Programme à compléter
|
||||
--
|
||||
with Simulation ;
|
||||
|
||||
procedure Mission1 is
|
||||
package Sm renames Simulation;
|
||||
procedure Rouler_KA is
|
||||
begin
|
||||
Sm.Rouler_Vers('L');
|
||||
Sm.Rouler_Vers('M');
|
||||
Sm.Rouler_Vers('E');
|
||||
Sm.Rouler_Vers('A');
|
||||
end Rouler_KA;
|
||||
procedure Rouler_DK is
|
||||
begin
|
||||
Sm.Rouler_Vers('N');
|
||||
Sm.Rouler_Vers('M');
|
||||
Sm.Rouler_Vers('L');
|
||||
Sm.Rouler_Vers('K');
|
||||
end Rouler_DK;
|
||||
procedure Tester_Roulage is
|
||||
begin
|
||||
Sm.Attendre_Autorisation_Roulage;
|
||||
Mission1.Rouler_KA;
|
||||
Sm.Attendre_Autorisation_Decollage;
|
||||
Sm.Parcourir_Piste;
|
||||
Mission1.Rouler_DK;
|
||||
end Tester_Roulage;
|
||||
|
||||
begin
|
||||
Tester_Roulage;
|
||||
end Mission1 ;
|
||||
|
||||
|
||||
|
||||
|
25
mission1.ali
Normal file
25
mission1.ali
Normal file
|
@ -0,0 +1,25 @@
|
|||
V "GNAT Lib v9"
|
||||
M P W=b
|
||||
P ZX
|
||||
|
||||
RN
|
||||
|
||||
U mission1%b mission1.adb d65f022a NE OO SU
|
||||
W simulation%s simulation.adb simulation.ali
|
||||
|
||||
D mission1.adb 20220919153355 6c7502ca mission1%b
|
||||
D simulation.ads 20171011075454 ba2a00e0 simulation%s
|
||||
D system.ads 20210601075304 4635ec04 system%s
|
||||
X 1 mission1.adb
|
||||
6U11*Mission1 6b11 25r9 28r9 33l5 33t13
|
||||
7K12 Sm=7:23 10r7 11r7 12r7 13r7 17r9 18r9 19r9 20r9 24r9 26r9 27r9
|
||||
8U14 Rouler_KA 8b14 14l8 14t17 25s18
|
||||
15U16 Rouler_DK 15b16 21l10 21t19 28s18
|
||||
22U16 Tester_Roulage 22b16 29l10 29t24 32s4
|
||||
X 2 simulation.ads
|
||||
5K9*Simulation 1|4w6 7r23 2|30e15
|
||||
11U14*Attendre_Autorisation_Roulage 1|24s12
|
||||
15U14*Rouler_Vers 1|10s10 11s10 12s10 13s10 17s12 18s12 19s12 20s12
|
||||
21U14*Attendre_Autorisation_Decollage 1|26s12
|
||||
28U14*Parcourir_Piste 1|27s12
|
||||
|
BIN
mission1.o
Normal file
BIN
mission1.o
Normal file
Binary file not shown.
BIN
mission2a-exe
Executable file
BIN
mission2a-exe
Executable file
Binary file not shown.
39
mission2a.adb
Normal file
39
mission2a.adb
Normal file
|
@ -0,0 +1,39 @@
|
|||
--
|
||||
-- Programme à compléter
|
||||
--
|
||||
with Avion_Sol ;
|
||||
with Tour;
|
||||
|
||||
procedure Mission1 is
|
||||
package As renames Avion_Sol;
|
||||
package T renames Tour;
|
||||
procedure Rouler_KA is
|
||||
begin
|
||||
As.Rouler_Vers('L');
|
||||
As.Rouler_Vers('M');
|
||||
As.Rouler_Vers('E');
|
||||
As.Rouler_Vers('A');
|
||||
end Rouler_KA;
|
||||
procedure Rouler_DK is
|
||||
begin
|
||||
As.Rouler_Vers('N');
|
||||
As.Rouler_Vers('M');
|
||||
As.Rouler_Vers('L');
|
||||
As.Rouler_Vers('K');
|
||||
end Rouler_DK;
|
||||
procedure Tester_Roulage is
|
||||
begin
|
||||
T.Attendre_Autorisation_Roulage;
|
||||
Rouler_KA;
|
||||
T.Attendre_Autorisation_Decollage;
|
||||
As.Parcourir_Piste;
|
||||
Rouler_DK;
|
||||
end Tester_Roulage;
|
||||
|
||||
begin
|
||||
Tester_Roulage;
|
||||
end Mission1 ;
|
||||
|
||||
|
||||
|
||||
|
30
mission2a.ali
Normal file
30
mission2a.ali
Normal file
|
@ -0,0 +1,30 @@
|
|||
V "GNAT Lib v9"
|
||||
M P W=b
|
||||
P ZX
|
||||
|
||||
RN
|
||||
|
||||
U mission1%b mission2a.adb d7e520c3 NE OO SU
|
||||
W avion_sol%s avion_sol.adb avion_sol.ali
|
||||
W tour%s tour.adb tour.ali
|
||||
|
||||
D avion_sol.ads 20171011075454 45c7a2a5 avion_sol%s
|
||||
D mission2a.adb 20220919154337 f7049c87 mission1%b
|
||||
D system.ads 20210601075304 4635ec04 system%s
|
||||
D tour.ads 20171011075454 65261ee1 tour%s
|
||||
X 1 avion_sol.ads
|
||||
5K9*Avion_Sol 26e14 2|4w6 8r23
|
||||
9U14*Rouler_Vers 2|12s10 13s10 14s10 15s10 19s12 20s12 21s12 22s12
|
||||
15U14*Parcourir_Piste 2|29s12
|
||||
X 2 mission2a.adb
|
||||
7U11*Mission1 7b11 35l5 35t13
|
||||
8K12 As=8:23 12r7 13r7 14r7 15r7 19r9 20r9 21r9 22r9 29r9
|
||||
9K12 T=9:22 26r9 28r9
|
||||
10U14 Rouler_KA 10b14 16l8 16t17 27s9
|
||||
17U16 Rouler_DK 17b16 23l10 23t19 30s9
|
||||
24U16 Tester_Roulage 24b16 31l10 31t24 34s4
|
||||
X 4 tour.ads
|
||||
4K9*Tour 2|5w6 9r22 4|22e9
|
||||
9U14*Attendre_Autorisation_Roulage 2|26s11
|
||||
14U14*Attendre_Autorisation_Decollage 2|28s11
|
||||
|
BIN
mission2a.o
Normal file
BIN
mission2a.o
Normal file
Binary file not shown.
BIN
mission2b-exe
Executable file
BIN
mission2b-exe
Executable file
Binary file not shown.
149
mission2b.adb
Normal file
149
mission2b.adb
Normal file
|
@ -0,0 +1,149 @@
|
|||
with GAda.Text_IO ;
|
||||
with INSA_Air;
|
||||
with Train;
|
||||
with Avion_Sol;
|
||||
with Assert;
|
||||
|
||||
procedure Mission2b is
|
||||
|
||||
|
||||
--
|
||||
-- Mission 2, partie 1 : fonction Delta_Cap
|
||||
--
|
||||
-- Cette fonction Delta_Cap est incorrecte.
|
||||
-- À vous de corriger son algorithme.
|
||||
--
|
||||
function Delta_Cap(Cap_Actuel : Float ; Cap_Voulu : Float) return Float is
|
||||
Ecart_Angle : Float ;
|
||||
|
||||
begin
|
||||
Ecart_Angle := Cap_Voulu - Cap_Actuel ;
|
||||
|
||||
if Ecart_Angle < -180.0 then
|
||||
Ecart_Angle := Ecart_Angle + 360.0 ;
|
||||
end if ;
|
||||
if Ecart_Angle > 180.0 then
|
||||
Ecart_Angle := Ecart_Angle -360.0;
|
||||
end if;
|
||||
|
||||
return Ecart_Angle ;
|
||||
end Delta_Cap ;
|
||||
|
||||
|
||||
--
|
||||
-- Mission 2, partie 1 : procédure de test de Delta_Cap
|
||||
--
|
||||
-- Cette procédure est incomplète, à vous de la rendre utile.
|
||||
--
|
||||
procedure Tester_Delta_Cap(CapA : Float ; CapV : Float) is
|
||||
Ecart_Angle: Float;
|
||||
begin
|
||||
Ecart_Angle := Delta_Cap(Cap_Actuel => CapA, Cap_Voulu => CapV);
|
||||
GAda.Text_IO.Put_Line (Aff => "Le cap actuel vaut" & Float'Image(CapA) & " Le cap Voulut vaut:" & Float'Image(CapV) & " Delta Cap vaut:" & Float'Image(Ecart_Angle)) ;
|
||||
end Tester_Delta_Cap ;
|
||||
|
||||
--
|
||||
-- Mission 2, partie 2 : fonction Caps_Egaux
|
||||
function Caps_Egaux(Cap1:Float; Cap2:Float) return Boolean is
|
||||
Dif_Cap: Float;
|
||||
begin
|
||||
Dif_Cap:= abs((Delta_Cap(Cap1 , Cap2)));
|
||||
return Dif_Cap <= 5.0;
|
||||
end Caps_Egaux;
|
||||
|
||||
|
||||
--
|
||||
-- Mission 2, partie 2 : procédure de test de Caps_Egaux
|
||||
procedure Tester_Caps_Egaux(Cap1: Float; Cap2: Float) is
|
||||
Rep: Boolean;
|
||||
begin
|
||||
Rep := Caps_Egaux(Cap1 , Cap2);
|
||||
GAda.Text_IO.Put_Line(Aff => "Ecart:" & Boolean'Image(Rep));
|
||||
end Tester_Caps_Egaux;
|
||||
|
||||
--
|
||||
-- Mission 2, parties 1 et 2 : réalisation de plusieurs tests
|
||||
--
|
||||
procedure Tests_Unitaires is
|
||||
begin
|
||||
Tester_Delta_Cap (CapA => 0.0, CapV => 45.0) ;
|
||||
Tester_Delta_Cap (CapA => 45.0, CapV => 0.0) ;
|
||||
Tester_Delta_Cap (CapA => 350.0, CapV => 10.0) ;
|
||||
Tester_Delta_Cap (CapA => 10.0, CapV => 350.0) ;
|
||||
Tester_Delta_Cap (CapA => 30.0, CapV => 285.0) ;
|
||||
Tester_Delta_Cap (CapA => 178.0, CapV => 182.0) ;
|
||||
Tester_Caps_Egaux(Cap1 => 0.0, Cap2 => 5.0) ;
|
||||
Tester_Caps_Egaux(Cap1 => 2.0, Cap2 => 359.0) ;
|
||||
Tester_Caps_Egaux(Cap1 => 350.0, Cap2 => 10.0) ;
|
||||
Tester_Caps_Egaux(Cap1 => 10.0, Cap2 => 350.0) ;
|
||||
Tester_Caps_Egaux(Cap1 => 178.0, Cap2 => 182.0) ;
|
||||
|
||||
-- Ajouter vos propres tests unitaires
|
||||
end Tests_Unitaires ;
|
||||
|
||||
|
||||
--
|
||||
-- Mission 2, partie 3 : procédure Orienter_au_sol
|
||||
procedure Orienter_Au_Sol(Cap: Float) is
|
||||
Cap_Bon: Boolean;
|
||||
Delt_Cap: Float;
|
||||
begin
|
||||
Cap_Bon:= (Cap < 0.0) or (Cap > 360.0);
|
||||
Assert.Failif(Cap_Bon , "Le cap demandé ne correspond pas aux attentes");
|
||||
INSA_Air.Regler_Reacteur(1);
|
||||
while not Caps_Egaux(Cap , INSA_Air.Cap_Courant) loop
|
||||
Delt_Cap:= Delta_Cap(INSA_Air.Cap_Courant , Cap);
|
||||
if Delt_Cap <0.0 then
|
||||
Train.Positionner_A_Gauche;
|
||||
elsif Delt_Cap = 0.0 then
|
||||
Train.Positionner_A_Zero;
|
||||
else
|
||||
Train.Positionner_A_Droite;
|
||||
end if;
|
||||
INSA_Air.Attendre(0.05);
|
||||
end loop;
|
||||
Avion_Sol.Freiner;
|
||||
end Orienter_Au_Sol;
|
||||
|
||||
|
||||
--
|
||||
|
||||
|
||||
--
|
||||
-- Mission 2, partie 3 : procédure Tester_Cap
|
||||
--
|
||||
procedure Tester_Cap is
|
||||
begin
|
||||
Avion_Sol.Rouler_Vers('L');
|
||||
Avion_Sol.Rouler_Vers('M');
|
||||
Avion_Sol.Freiner;
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Mission2b.Orienter_Au_Sol(0.0);
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Mission2b.Orienter_Au_Sol(90.0);
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Mission2b.Orienter_Au_Sol(270.0);
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Mission2b.Orienter_Au_Sol(180.0);
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Avion_Sol.Rouler_Vers('L');
|
||||
Avion_Sol.Rouler_Vers('K');
|
||||
|
||||
end Tester_Cap;
|
||||
--
|
||||
-- Mission 2, partie 4 : procédure Orienter_en_vol
|
||||
--
|
||||
|
||||
|
||||
--
|
||||
-- Mission 2, partie 4 : procédure Realiser_Vol_Demo
|
||||
--
|
||||
|
||||
|
||||
begin
|
||||
|
||||
-- Effectuer tous les tests unitaires de Delta_Cap et Caps_Egaux
|
||||
Tests_Unitaires ;
|
||||
Tester_Cap;
|
||||
|
||||
end Mission2b ;
|
86
mission2b.ali
Normal file
86
mission2b.ali
Normal file
|
@ -0,0 +1,86 @@
|
|||
V "GNAT Lib v9"
|
||||
M P W=b
|
||||
P ZX
|
||||
|
||||
RN
|
||||
RV NO_DIRECT_BOOLEAN_OPERATORS
|
||||
RV NO_FLOATING_POINT
|
||||
RV NO_DYNAMIC_SIZED_OBJECTS
|
||||
RV SPARK_05
|
||||
|
||||
U mission2b%b mission2b.adb be162667 NE OO SU
|
||||
W assert%s assert.adb assert.ali
|
||||
W avion_sol%s avion_sol.adb avion_sol.ali
|
||||
W gada%s gada.ads gada.ali
|
||||
W gada.text_io%s gada-text_io.adb gada-text_io.ali
|
||||
W insa_air%s insa_air.adb insa_air.ali
|
||||
Z system.concat_2%s s-conca2.adb s-conca2.ali
|
||||
Z system.concat_6%s s-conca6.adb s-conca6.ali
|
||||
Z system.img_bool%s s-imgboo.adb s-imgboo.ali
|
||||
Z system.img_real%s s-imgrea.adb s-imgrea.ali
|
||||
W train%s train.adb train.ali
|
||||
|
||||
D assert.ads 20171011075454 7e627795 assert%s
|
||||
D avion_sol.ads 20171011075454 45c7a2a5 avion_sol%s
|
||||
D gada.ads 20171011075454 65bf3563 gada%s
|
||||
D gada-text_io.ads 20171011075454 f74da4f3 gada.text_io%s
|
||||
D insa_air.ads 20171011075454 dbdc639f insa_air%s
|
||||
D mission2b.adb 20220926154042 b9bb7a04 mission2b%b
|
||||
D system.ads 20210601075304 4635ec04 system%s
|
||||
D s-conca2.ads 20210601075304 02a0d7d0 system.concat_2%s
|
||||
D s-conca6.ads 20210601075304 d2c72db2 system.concat_6%s
|
||||
D s-imgboo.ads 20210601075304 f5d971eb system.img_bool%s
|
||||
D s-imgrea.ads 20210601075304 c7a851e2 system.img_real%s
|
||||
D train.ads 20171011075454 10994e3f train%s
|
||||
X 1 assert.ads
|
||||
1K9*Assert 11e11 6|5w6 92r7
|
||||
9U14*Failif 6|92s14
|
||||
X 2 avion_sol.ads
|
||||
5K9*Avion_Sol 26e14 6|4w6 105r7 117r8 118r8 119r8 120r8 122r8 124r8 126r8
|
||||
. 128r8 129r8 130r8
|
||||
9U14*Rouler_Vers 6|117s18 118s18 129s18 130s18
|
||||
19U14*Freiner 6|105s17 119s18
|
||||
23U14*Attendre_Entree 6|120s18 122s18 124s18 126s18 128s18
|
||||
X 3 gada.ads
|
||||
1K9*GAda 3e9 6|1r6 42r7 61r7
|
||||
X 4 gada-text_io.ads
|
||||
1K14*Text_IO 32e17 6|1w11 42r12 61r12
|
||||
7U14*Put_Line 6|42s20 61s20
|
||||
7a24 Aff{string} 6|42r30 61r29
|
||||
X 5 insa_air.ads
|
||||
1K9*INSA_Air 49e13 6|2w6 93r7 94r34 95r31 103r10
|
||||
9V13*Cap_Courant{float} 6|94s43 95s40
|
||||
15U14*Regler_Reacteur 6|93s16
|
||||
46U14*Attendre 6|103s19
|
||||
X 6 mission2b.adb
|
||||
7U11*Mission2b 7b11 121r8 123r8 125r8 127r8 149l5 149t14
|
||||
16V13 Delta_Cap{float} 16b13 16>23 16>44 30l8 30t17 41s22 50s22 95s21
|
||||
16f23 Cap_Actuel{float} 20r34 41r32
|
||||
16f44 Cap_Voulu{float} 20r22 41r52
|
||||
17f7 Ecart_Angle{float} 20m7 22r10 23m10 23r25 25r10 26m10 26r25 29r14
|
||||
38U14 Tester_Delta_Cap 38b14 38>31 38>46 43l8 43t24 69s7 70s7 71s7 72s7 73s7
|
||||
. 74s7
|
||||
38f31 CapA{float} 41r46 42r72 69r25 70r25 71r25 72r25 73r25 74r25
|
||||
38f46 CapV{float} 41r65 42r117 69r40 70r40 71r40 72r40 73r40 74r41
|
||||
39f7 Ecart_Angle{float} 41m7 42r158
|
||||
47V13 Caps_Egaux{boolean} 47b13 47>24 47>36 52l8 52t18 60s14 94s17
|
||||
47f24 Cap1{float} 50r32
|
||||
47f36 Cap2{float} 50r39
|
||||
48f7 Dif_Cap{float} 50m7 51r14
|
||||
57U14 Tester_Caps_Egaux 57b14 57>32 57>45 62l8 62t25 75s7 76s7 77s7 78s7
|
||||
. 79s7
|
||||
57f32 Cap1{float} 60r25 75r25 76r25 77r25 78r25 79r25
|
||||
57f45 Cap2{float} 60r32 75r40 76r39 77r40 78r40 79r41
|
||||
58b7 Rep{boolean} 60m7 61r61
|
||||
67U14 Tests_Unitaires 67b14 82l8 82t23 146s4
|
||||
87U14 Orienter_Au_Sol 87b14 87>30 106l9 106t24 121s18 123s18 125s18 127s18
|
||||
87f30 Cap{float} 91r18 91r33 94r28 95r54
|
||||
88b7 Cap_Bon{boolean} 91m7 92r21
|
||||
89f7 Delt_Cap{float} 95m10 96r13 98r16
|
||||
115U15 Tester_Cap 115b15 132l8 132t18 147s4
|
||||
X 12 train.ads
|
||||
1K9*Train 6|3w6 97r13 99r13 101r13 12|34e10
|
||||
4U14*Positionner_A_Gauche 6|97s19
|
||||
5U14*Positionner_A_Droite 6|101s19
|
||||
6U14*Positionner_A_Zero 6|99s19
|
||||
|
BIN
mission2b.o
Normal file
BIN
mission2b.o
Normal file
Binary file not shown.
BIN
mission2c-exe
Executable file
BIN
mission2c-exe
Executable file
Binary file not shown.
200
mission2c.adb
Normal file
200
mission2c.adb
Normal file
|
@ -0,0 +1,200 @@
|
|||
with GAda.Text_IO ;
|
||||
with INSA_Air;
|
||||
with Train;
|
||||
with Avion_Sol;
|
||||
with Assert;
|
||||
with Carburant;
|
||||
with Pilote_Automatique;
|
||||
with Tour;
|
||||
procedure Mission2c is
|
||||
|
||||
|
||||
--
|
||||
-- Mission 2, partie 1 : fonction Delta_Cap
|
||||
--
|
||||
-- Cette fonction Delta_Cap est incorrecte.
|
||||
-- À vous de corriger son algorithme.
|
||||
--
|
||||
function Delta_Cap(Cap_Actuel : Float ; Cap_Voulu : Float) return Float is
|
||||
Ecart_Angle : Float ;
|
||||
|
||||
begin
|
||||
Ecart_Angle := Cap_Voulu - Cap_Actuel ;
|
||||
|
||||
if Ecart_Angle < -180.0 then
|
||||
Ecart_Angle := Ecart_Angle + 360.0 ;
|
||||
end if ;
|
||||
if Ecart_Angle > 180.0 then
|
||||
Ecart_Angle := Ecart_Angle -360.0;
|
||||
end if;
|
||||
|
||||
return Ecart_Angle ;
|
||||
end Delta_Cap ;
|
||||
|
||||
|
||||
--
|
||||
-- Mission 2, partie 1 : procédure de test de Delta_Cap
|
||||
--
|
||||
-- Cette procédure est incomplète, à vous de la rendre utile.
|
||||
--
|
||||
procedure Tester_Delta_Cap(CapA : Float ; CapV : Float) is
|
||||
Ecart_Angle: Float;
|
||||
begin
|
||||
Ecart_Angle := Delta_Cap(Cap_Actuel => CapA, Cap_Voulu => CapV);
|
||||
GAda.Text_IO.Put_Line (Aff => "Le cap actuel vaut" & Float'Image(CapA) & " Le cap Voulut vaut:" & Float'Image(CapV) & " Delta Cap vaut:" & Float'Image(Ecart_Angle)) ;
|
||||
end Tester_Delta_Cap ;
|
||||
|
||||
--
|
||||
-- Mission 2, partie 2 : fonction Caps_Egaux
|
||||
function Caps_Egaux(Cap1:Float; Cap2:Float) return Boolean is
|
||||
Dif_Cap: Float;
|
||||
begin
|
||||
Dif_Cap:= abs((Delta_Cap(Cap1 , Cap2)));
|
||||
return Dif_Cap <= 5.0;
|
||||
end Caps_Egaux;
|
||||
|
||||
|
||||
--
|
||||
-- Mission 2, partie 2 : procédure de test de Caps_Egaux
|
||||
procedure Tester_Caps_Egaux(Cap1: Float; Cap2: Float) is
|
||||
Rep: Boolean;
|
||||
begin
|
||||
Rep := Caps_Egaux(Cap1 , Cap2);
|
||||
GAda.Text_IO.Put_Line(Aff => "Ecart:" & Boolean'Image(Rep));
|
||||
end Tester_Caps_Egaux;
|
||||
|
||||
--
|
||||
-- Mission 2, parties 1 et 2 : réalisation de plusieurs tests
|
||||
--
|
||||
procedure Tests_Unitaires is
|
||||
begin
|
||||
Tester_Delta_Cap (CapA => 0.0, CapV => 45.0) ;
|
||||
Tester_Delta_Cap (CapA => 45.0, CapV => 0.0) ;
|
||||
Tester_Delta_Cap (CapA => 350.0, CapV => 10.0) ;
|
||||
Tester_Delta_Cap (CapA => 10.0, CapV => 350.0) ;
|
||||
Tester_Delta_Cap (CapA => 30.0, CapV => 285.0) ;
|
||||
Tester_Delta_Cap (CapA => 178.0, CapV => 182.0) ;
|
||||
Tester_Caps_Egaux(Cap1 => 0.0, Cap2 => 5.0) ;
|
||||
Tester_Caps_Egaux(Cap1 => 2.0, Cap2 => 359.0) ;
|
||||
Tester_Caps_Egaux(Cap1 => 350.0, Cap2 => 10.0) ;
|
||||
Tester_Caps_Egaux(Cap1 => 10.0, Cap2 => 350.0) ;
|
||||
Tester_Caps_Egaux(Cap1 => 178.0, Cap2 => 182.0) ;
|
||||
|
||||
-- Ajouter vos propres tests unitaires
|
||||
end Tests_Unitaires ;
|
||||
|
||||
|
||||
--
|
||||
-- Mission 2, partie 3 : procédure Orienter_au_sol
|
||||
procedure Orienter_Au_Sol(Cap: Float) is
|
||||
Cap_Bon: Boolean;
|
||||
Delt_Cap: Float;
|
||||
begin
|
||||
Cap_Bon:= (Cap < 0.0) or (Cap > 360.0);
|
||||
Assert.Failif(Cap_Bon , "Le cap demandé ne correspond pas aux attentes");
|
||||
INSA_Air.Regler_Reacteur(1);
|
||||
while not Caps_Egaux(Cap , INSA_Air.Cap_Courant) loop
|
||||
Delt_Cap:= Delta_Cap(INSA_Air.Cap_Courant , Cap);
|
||||
if Delt_Cap <0.0 then
|
||||
Train.Positionner_A_Gauche;
|
||||
elsif Delt_Cap = 0.0 then
|
||||
Train.Positionner_A_Zero;
|
||||
else
|
||||
Train.Positionner_A_Droite;
|
||||
end if;
|
||||
INSA_Air.Attendre(0.05);
|
||||
end loop;
|
||||
Avion_Sol.Freiner;
|
||||
end Orienter_Au_Sol;
|
||||
|
||||
|
||||
--
|
||||
|
||||
|
||||
--
|
||||
-- Mission 2, partie 3 : procédure Tester_Cap
|
||||
--
|
||||
procedure Tester_Cap is
|
||||
begin
|
||||
Avion_Sol.Rouler_Vers('L');
|
||||
Avion_Sol.Rouler_Vers('M');
|
||||
Avion_Sol.Freiner;
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Mission2c.Orienter_Au_Sol(0.0);
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Mission2c.Orienter_Au_Sol(90.0);
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Mission2c.Orienter_Au_Sol(270.0);
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Mission2c.Orienter_Au_Sol(180.0);
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Avion_Sol.Rouler_Vers('L');
|
||||
Avion_Sol.Rouler_Vers('K');
|
||||
|
||||
end Tester_Cap;
|
||||
--
|
||||
-- Mission 2, partie 4 : procédure Orienter_en_vol
|
||||
--
|
||||
procedure Orienter_En_Vol(Cap: Float) is
|
||||
Cap_Bon: Boolean;
|
||||
Delt_Cap: Float;
|
||||
begin
|
||||
Cap_Bon:= (Cap < 0.0) or (Cap > 360.0);
|
||||
Assert.Failif(Cap_Bon , "Le cap demandé ne correspond pas aux attentes");
|
||||
while not Caps_Egaux(Cap , INSA_Air.Cap_Courant) loop
|
||||
Delt_Cap:= Delta_Cap(INSA_Air.Cap_Courant , Cap);
|
||||
if Delt_Cap <0.0 then
|
||||
INSA_Air.Positionner_Gouverne_A_Gauche;
|
||||
elsif Delt_Cap = 0.0 then
|
||||
INSA_Air.Positionner_Gouverne_A_Zero;
|
||||
else
|
||||
INSA_Air.Positionner_Gouverne_A_Droite;
|
||||
end if;
|
||||
INSA_Air.Attendre(0.1);
|
||||
end loop;
|
||||
INSA_Air.Positionner_Gouverne_A_Zero;
|
||||
end Orienter_En_Vol;
|
||||
|
||||
--
|
||||
-- Mission 2, partie 4 : procédure Realiser_Vol_Demo
|
||||
--
|
||||
procedure Realiser_Vol_Demo is
|
||||
begin
|
||||
Carburant.Faire_Le_Plein;
|
||||
Tour.Attendre_Autorisation_Roulage;
|
||||
Avion_Sol.Rouler_Vers('L');
|
||||
Avion_Sol.Rouler_Vers('M');
|
||||
Avion_Sol.Rouler_Vers('E');
|
||||
Avion_Sol.Rouler_Vers('A');
|
||||
Tour.Attendre_Autorisation_Decollage;
|
||||
INSA_Air.Regler_Reacteur(8);
|
||||
Pilote_Automatique.Decoller;
|
||||
INSA_Air.Regler_Reacteur(6);
|
||||
Train.Deplacer_Train(FALSE);
|
||||
Mission2c.Orienter_En_Vol(295.0);
|
||||
INSA_Air.Attendre(1200.0);
|
||||
Mission2c.Orienter_En_Vol(115.0);
|
||||
INSA_Air.Attendre(900.0);
|
||||
INSA_Air.Regler_Reacteur(3);
|
||||
Train.Deplacer_Train(True);
|
||||
Tour.Attendre_Autorisation_Atterrissage;
|
||||
Pilote_Automatique.Atterrir;
|
||||
Avion_Sol.Rouler_Vers('N');
|
||||
Avion_Sol.Rouler_Vers('M');
|
||||
Avion_Sol.Rouler_Vers('L');
|
||||
Avion_Sol.Rouler_Vers('K');
|
||||
end Realiser_Vol_Demo;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
begin
|
||||
|
||||
-- Effectuer tous les tests unitaires de Delta_Cap et Caps_Egaux
|
||||
Tests_Unitaires ;
|
||||
Realiser_Vol_Demo;
|
||||
|
||||
end Mission2c ;
|
115
mission2c.ali
Normal file
115
mission2c.ali
Normal file
|
@ -0,0 +1,115 @@
|
|||
V "GNAT Lib v9"
|
||||
M P W=b
|
||||
P ZX
|
||||
|
||||
RN
|
||||
RV NO_DIRECT_BOOLEAN_OPERATORS
|
||||
RV NO_FLOATING_POINT
|
||||
RV NO_DYNAMIC_SIZED_OBJECTS
|
||||
RV SPARK_05
|
||||
|
||||
U mission2c%b mission2c.adb f87cee75 NE OO SU
|
||||
W assert%s assert.adb assert.ali
|
||||
W avion_sol%s avion_sol.adb avion_sol.ali
|
||||
W carburant%s carburant.adb carburant.ali
|
||||
W gada%s gada.ads gada.ali
|
||||
W gada.text_io%s gada-text_io.adb gada-text_io.ali
|
||||
W insa_air%s insa_air.adb insa_air.ali
|
||||
W pilote_automatique%s pilote_automatique.adb pilote_automatique.ali
|
||||
Z system.concat_2%s s-conca2.adb s-conca2.ali
|
||||
Z system.concat_6%s s-conca6.adb s-conca6.ali
|
||||
Z system.img_bool%s s-imgboo.adb s-imgboo.ali
|
||||
Z system.img_real%s s-imgrea.adb s-imgrea.ali
|
||||
W tour%s tour.adb tour.ali
|
||||
W train%s train.adb train.ali
|
||||
|
||||
D assert.ads 20171011075454 7e627795 assert%s
|
||||
D avion_sol.ads 20171011075454 45c7a2a5 avion_sol%s
|
||||
D carburant.ads 20220829092117 e5bbfbdc carburant%s
|
||||
D gada.ads 20171011075454 65bf3563 gada%s
|
||||
D gada-text_io.ads 20171011075454 f74da4f3 gada.text_io%s
|
||||
D insa_air.ads 20171011075454 dbdc639f insa_air%s
|
||||
D mission2c.adb 20220926161509 8df015a9 mission2c%b
|
||||
D pilote_automatique.ads 20171011075454 f2bc4282 pilote_automatique%s
|
||||
D system.ads 20210601075304 4635ec04 system%s
|
||||
D s-conca2.ads 20210601075304 02a0d7d0 system.concat_2%s
|
||||
D s-conca6.ads 20210601075304 d2c72db2 system.concat_6%s
|
||||
D s-imgboo.ads 20210601075304 f5d971eb system.img_bool%s
|
||||
D s-imgrea.ads 20210601075304 c7a851e2 system.img_real%s
|
||||
D tour.ads 20171011075454 65261ee1 tour%s
|
||||
D train.ads 20171011075454 10994e3f train%s
|
||||
X 1 assert.ads
|
||||
1K9*Assert 11e11 7|5w6 94r7 143r7
|
||||
9U14*Failif 7|94s14 143s14
|
||||
X 2 avion_sol.ads
|
||||
5K9*Avion_Sol 26e14 7|4w6 107r7 119r8 120r8 121r8 122r8 124r8 126r8 128r8
|
||||
. 130r8 131r8 132r8 165r8 166r8 167r8 168r8 182r8 183r8 184r8 185r8
|
||||
9U14*Rouler_Vers 7|119s18 120s18 131s18 132s18 165s18 166s18 167s18 168s18
|
||||
. 182s18 183s18 184s18 185s18
|
||||
19U14*Freiner 7|107s17 121s18
|
||||
23U14*Attendre_Entree 7|122s18 124s18 126s18 128s18 130s18
|
||||
X 3 carburant.ads
|
||||
5K9*Carburant 37e14 7|6w6 163r8
|
||||
10U14*Faire_Le_Plein 7|163s18
|
||||
X 4 gada.ads
|
||||
1K9*GAda 3e9 7|1r6 44r7 63r7
|
||||
X 5 gada-text_io.ads
|
||||
1K14*Text_IO 32e17 7|1w11 44r12 63r12
|
||||
7U14*Put_Line 7|44s20 63s20
|
||||
7a24 Aff{string} 7|44r30 63r29
|
||||
X 6 insa_air.ads
|
||||
1K9*INSA_Air 49e13 7|2w6 95r7 96r34 97r31 105r10 144r34 145r31 147r13 149r13
|
||||
. 151r13 153r10 155r7 170r8 172r8 175r8 177r8 178r8
|
||||
9V13*Cap_Courant{float} 7|96s43 97s40 144s43 145s40
|
||||
15U14*Regler_Reacteur 7|95s16 170s17 172s17 178s17
|
||||
25U14*Positionner_Gouverne_A_Droite 7|151s22
|
||||
26U14*Positionner_Gouverne_A_Gauche 7|147s22
|
||||
27U14*Positionner_Gouverne_A_Zero 7|149s22 155s16
|
||||
46U14*Attendre 7|105s19 153s19 175s17 177s17
|
||||
X 7 mission2c.adb
|
||||
9U11*Mission2c 9b11 123r8 125r8 127r8 129r8 174r8 176r8 200l5 200t14
|
||||
18V13 Delta_Cap{float} 18b13 18>23 18>44 32l8 32t17 43s22 52s22 97s21 145s21
|
||||
18f23 Cap_Actuel{float} 22r34 43r32
|
||||
18f44 Cap_Voulu{float} 22r22 43r52
|
||||
19f7 Ecart_Angle{float} 22m7 24r10 25m10 25r25 27r10 28m10 28r25 31r14
|
||||
40U14 Tester_Delta_Cap 40b14 40>31 40>46 45l8 45t24 71s7 72s7 73s7 74s7 75s7
|
||||
. 76s7
|
||||
40f31 CapA{float} 43r46 44r72 71r25 72r25 73r25 74r25 75r25 76r25
|
||||
40f46 CapV{float} 43r65 44r117 71r40 72r40 73r40 74r40 75r40 76r41
|
||||
41f7 Ecart_Angle{float} 43m7 44r158
|
||||
49V13 Caps_Egaux{boolean} 49b13 49>24 49>36 54l8 54t18 62s14 96s17 144s17
|
||||
49f24 Cap1{float} 52r32
|
||||
49f36 Cap2{float} 52r39
|
||||
50f7 Dif_Cap{float} 52m7 53r14
|
||||
59U14 Tester_Caps_Egaux 59b14 59>32 59>45 64l8 64t25 77s7 78s7 79s7 80s7
|
||||
. 81s7
|
||||
59f32 Cap1{float} 62r25 77r25 78r25 79r25 80r25 81r25
|
||||
59f45 Cap2{float} 62r32 77r40 78r39 79r40 80r40 81r41
|
||||
60b7 Rep{boolean} 62m7 63r61
|
||||
69U14 Tests_Unitaires 69b14 84l8 84t23 197s4
|
||||
89U14 Orienter_Au_Sol 89b14 89>30 108l9 108t24 123s18 125s18 127s18 129s18
|
||||
89f30 Cap{float} 93r18 93r33 96r28 97r54
|
||||
90b7 Cap_Bon{boolean} 93m7 94r21
|
||||
91f7 Delt_Cap{float} 97m10 98r13 100r16
|
||||
117U15 Tester_Cap 117b15 134l8 134t18
|
||||
138U15 Orienter_En_Vol 138b15 138>31 156l9 156t24 174s18 176s18
|
||||
138f31 Cap{float} 142r18 142r33 144r28 145r54
|
||||
139b7 Cap_Bon{boolean} 142m7 143r21
|
||||
140f7 Delt_Cap{float} 145m10 146r13 148r16
|
||||
161U15 Realiser_Vol_Demo 161b15 186l10 186t27 198s4
|
||||
X 8 pilote_automatique.ads
|
||||
1K9*Pilote_Automatique 7|7w6 171r8 181r8 8|21e23
|
||||
9U14*Decoller 7|171s27
|
||||
18U14*Atterrir 7|181s27
|
||||
X 14 tour.ads
|
||||
4K9*Tour 7|8w6 164r8 169r8 180r8 14|22e9
|
||||
9U14*Attendre_Autorisation_Roulage 7|164s13
|
||||
14U14*Attendre_Autorisation_Decollage 7|169s13
|
||||
19U14*Attendre_Autorisation_Atterrissage 7|180s13
|
||||
X 15 train.ads
|
||||
1K9*Train 7|3w6 99r13 101r13 103r13 173r8 179r8 15|34e10
|
||||
4U14*Positionner_A_Gauche 7|99s19
|
||||
5U14*Positionner_A_Droite 7|103s19
|
||||
6U14*Positionner_A_Zero 7|101s19
|
||||
11U14*Deplacer_Train 7|173s14 179s14
|
||||
|
BIN
mission2c.o
Normal file
BIN
mission2c.o
Normal file
Binary file not shown.
BIN
mission3-exe
Executable file
BIN
mission3-exe
Executable file
Binary file not shown.
287
mission3.adb
Normal file
287
mission3.adb
Normal file
|
@ -0,0 +1,287 @@
|
|||
with GAda.Text_IO ;
|
||||
with INSA_Air;
|
||||
with Train;
|
||||
with Avion_Sol;
|
||||
with Assert;
|
||||
with Carburant;
|
||||
with Pilote_Automatique;
|
||||
with Tour;
|
||||
with Cartographie;
|
||||
procedure Mission3 is
|
||||
|
||||
|
||||
--
|
||||
-- Mission 2, partie 1 : fonction Delta_Cap
|
||||
--
|
||||
-- Cette fonction Delta_Cap est incorrecte.
|
||||
-- À vous de corriger son algorithme.
|
||||
--
|
||||
function Delta_Cap(Cap_Actuel : Float ; Cap_Voulu : Float) return Float is
|
||||
Ecart_Angle : Float ;
|
||||
|
||||
begin
|
||||
Ecart_Angle := Cap_Voulu - Cap_Actuel ;
|
||||
|
||||
if Ecart_Angle < -180.0 then
|
||||
Ecart_Angle := Ecart_Angle + 360.0 ;
|
||||
end if ;
|
||||
if Ecart_Angle > 180.0 then
|
||||
Ecart_Angle := Ecart_Angle -360.0;
|
||||
end if;
|
||||
|
||||
return Ecart_Angle ;
|
||||
end Delta_Cap ;
|
||||
|
||||
|
||||
--
|
||||
-- Mission 2, partie 1 : procédure de test de Delta_Cap
|
||||
--
|
||||
-- Cette procédure est incomplète, à vous de la rendre utile.
|
||||
--
|
||||
procedure Tester_Delta_Cap(CapA : Float ; CapV : Float) is
|
||||
Ecart_Angle: Float;
|
||||
begin
|
||||
Ecart_Angle := Delta_Cap(Cap_Actuel => CapA, Cap_Voulu => CapV);
|
||||
GAda.Text_IO.Put_Line (Aff => "Le cap actuel vaut" & Float'Image(CapA) & " Le cap Voulut vaut:" & Float'Image(CapV) & " Delta Cap vaut:" & Float'Image(Ecart_Angle)) ;
|
||||
end Tester_Delta_Cap ;
|
||||
|
||||
--
|
||||
-- Mission 2, partie 2 : fonction Caps_Egaux
|
||||
function Caps_Egaux(Cap1:Float; Cap2:Float) return Boolean is
|
||||
Dif_Cap: Float;
|
||||
begin
|
||||
Dif_Cap:= abs((Delta_Cap(Cap1 , Cap2)));
|
||||
return Dif_Cap <= 5.0;
|
||||
end Caps_Egaux;
|
||||
|
||||
|
||||
--
|
||||
-- Mission 2, partie 2 : procédure de test de Caps_Egaux
|
||||
procedure Tester_Caps_Egaux(Cap1: Float; Cap2: Float) is
|
||||
Rep: Boolean;
|
||||
begin
|
||||
Rep := Caps_Egaux(Cap1 , Cap2);
|
||||
GAda.Text_IO.Put_Line(Aff => "Ecart:" & Boolean'Image(Rep));
|
||||
end Tester_Caps_Egaux;
|
||||
|
||||
--
|
||||
-- Mission 2, parties 1 et 2 : réalisation de plusieurs tests
|
||||
--
|
||||
procedure Tests_Unitaires is
|
||||
begin
|
||||
Tester_Delta_Cap (CapA => 0.0, CapV => 45.0) ;
|
||||
Tester_Delta_Cap (CapA => 45.0, CapV => 0.0) ;
|
||||
Tester_Delta_Cap (CapA => 350.0, CapV => 10.0) ;
|
||||
Tester_Delta_Cap (CapA => 10.0, CapV => 350.0) ;
|
||||
Tester_Delta_Cap (CapA => 30.0, CapV => 285.0) ;
|
||||
Tester_Delta_Cap (CapA => 178.0, CapV => 182.0) ;
|
||||
Tester_Caps_Egaux(Cap1 => 0.0, Cap2 => 5.0) ;
|
||||
Tester_Caps_Egaux(Cap1 => 2.0, Cap2 => 359.0) ;
|
||||
Tester_Caps_Egaux(Cap1 => 350.0, Cap2 => 10.0) ;
|
||||
Tester_Caps_Egaux(Cap1 => 10.0, Cap2 => 350.0) ;
|
||||
Tester_Caps_Egaux(Cap1 => 178.0, Cap2 => 182.0) ;
|
||||
|
||||
-- Ajouter vos propres tests unitaires
|
||||
end Tests_Unitaires ;
|
||||
|
||||
|
||||
--
|
||||
-- Mission 2, partie 3 : procédure Orienter_au_sol
|
||||
procedure Orienter_Au_Sol(Cap: Float) is
|
||||
Cap_Bon: Boolean;
|
||||
Delt_Cap: Float;
|
||||
begin
|
||||
Cap_Bon:= (Cap < 0.0) or (Cap > 360.0);
|
||||
Assert.Failif(Cap_Bon , "Le cap demandé ne correspond pas aux attentes");
|
||||
INSA_Air.Regler_Reacteur(1);
|
||||
while not Caps_Egaux(Cap , INSA_Air.Cap_Courant) loop
|
||||
Delt_Cap:= Delta_Cap(INSA_Air.Cap_Courant , Cap);
|
||||
if Delt_Cap <0.0 then
|
||||
Train.Positionner_A_Gauche;
|
||||
elsif Delt_Cap = 0.0 then
|
||||
Train.Positionner_A_Zero;
|
||||
else
|
||||
Train.Positionner_A_Droite;
|
||||
end if;
|
||||
INSA_Air.Attendre(0.05);
|
||||
end loop;
|
||||
Avion_Sol.Freiner;
|
||||
end Orienter_Au_Sol;
|
||||
|
||||
|
||||
--
|
||||
|
||||
|
||||
--
|
||||
-- Mission 2, partie 3 : procédure Tester_Cap
|
||||
--
|
||||
procedure Tester_Cap is
|
||||
begin
|
||||
Avion_Sol.Rouler_Vers('L');
|
||||
Avion_Sol.Rouler_Vers('M');
|
||||
Avion_Sol.Freiner;
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Mission3.Orienter_Au_Sol(0.0);
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Mission3.Orienter_Au_Sol(90.0);
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Mission3.Orienter_Au_Sol(270.0);
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Mission3.Orienter_Au_Sol(180.0);
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Avion_Sol.Rouler_Vers('L');
|
||||
Avion_Sol.Rouler_Vers('K');
|
||||
|
||||
end Tester_Cap;
|
||||
--
|
||||
-- Mission 2, partie 4 : procédure Orienter_en_vol
|
||||
--
|
||||
procedure Orienter_En_Vol(Cap: Float) is
|
||||
Cap_Bon: Boolean;
|
||||
Delt_Cap: Float;
|
||||
begin
|
||||
Cap_Bon:= (Cap < 0.0) or (Cap > 360.0);
|
||||
Assert.Failif(Cap_Bon , "Le cap demandé ne correspond pas aux attentes");
|
||||
while not Caps_Egaux(Cap , INSA_Air.Cap_Courant) loop
|
||||
Delt_Cap:= Delta_Cap(INSA_Air.Cap_Courant , Cap);
|
||||
if Delt_Cap <0.0 then
|
||||
INSA_Air.Positionner_Gouverne_A_Gauche;
|
||||
elsif Delt_Cap = 0.0 then
|
||||
INSA_Air.Positionner_Gouverne_A_Zero;
|
||||
else
|
||||
INSA_Air.Positionner_Gouverne_A_Droite;
|
||||
end if;
|
||||
|
||||
end loop;
|
||||
INSA_Air.Positionner_Gouverne_A_Zero;
|
||||
end Orienter_En_Vol;
|
||||
|
||||
--
|
||||
-- Mission 2, partie 4 : procédure Realiser_Vol_Demo
|
||||
--
|
||||
procedure Realiser_Vol_Demo is
|
||||
begin
|
||||
Carburant.Faire_Le_Plein;
|
||||
Tour.Attendre_Autorisation_Roulage;
|
||||
Avion_Sol.Rouler_Vers('L');
|
||||
Avion_Sol.Rouler_Vers('M');
|
||||
Avion_Sol.Rouler_Vers('E');
|
||||
Avion_Sol.Rouler_Vers('A');
|
||||
Tour.Attendre_Autorisation_Decollage;
|
||||
INSA_Air.Regler_Reacteur(8);
|
||||
Pilote_Automatique.Decoller;
|
||||
INSA_Air.Regler_Reacteur(6);
|
||||
Train.Deplacer_Train(FALSE);
|
||||
Mission3.Orienter_En_Vol(295.0);
|
||||
INSA_Air.Attendre(1200.0);
|
||||
Mission3.Orienter_En_Vol(115.0);
|
||||
INSA_Air.Attendre(900.0);
|
||||
INSA_Air.Regler_Reacteur(3);
|
||||
Train.Deplacer_Train(True);
|
||||
Tour.Attendre_Autorisation_Atterrissage;
|
||||
Pilote_Automatique.Atterrir;
|
||||
Avion_Sol.Rouler_Vers('N');
|
||||
Avion_Sol.Rouler_Vers('M');
|
||||
Avion_Sol.Rouler_Vers('L');
|
||||
Avion_Sol.Rouler_Vers('K');
|
||||
end Realiser_Vol_Demo;
|
||||
|
||||
procedure Info_Aeroport(CodeA:String) is
|
||||
begin
|
||||
GAda.Text_IO.Put_Line( Aff=> Cartographie.Nom_Aeroport(Code => CodeA));
|
||||
GAda.Text_IO.Put_Line(Float'Image(Cartographie.Coords_Aeroport(Code => CodeA).Long) & Float'Image(Cartographie.Coords_Aeroport(Code => CodeA).Lat));
|
||||
end Info_Aeroport;
|
||||
|
||||
procedure Tester_Carto is
|
||||
begin
|
||||
GAda.Text_IO.Put_Line( Aff=> Cartographie.Nom_Aeroport(Code => "LFBO"));
|
||||
GAda.Text_IO.Put_Line(Float'Image(Cartographie.Coords_Aeroport(Code => "LFBO").Long) & Float'Image(Cartographie.Coords_Aeroport(Code => "LFBO").Lat));
|
||||
GAda.Text_IO.Put_Line( Aff=> Cartographie.Nom_Aeroport(Code => "EGLL"));
|
||||
GAda.Text_IO.Put_Line(Float'Image(Cartographie.Coords_Aeroport(Code => "EGLL").Long) & Float'Image(Cartographie.Coords_Aeroport(Code => "EGLL").Lat));
|
||||
GAda.Text_IO.Put_Line( Aff=> Cartographie.Nom_Aeroport(Code =>"LFPG"));
|
||||
GAda.Text_IO.Put_Line(Float'Image(Cartographie.Coords_Aeroport(Code => "LFPG").Long) & Float'Image(Cartographie.Coords_Aeroport(Code => "LFPG").Lat));
|
||||
end Tester_Carto;
|
||||
|
||||
function Distance(P1: Cartographie.T_Coords; P2: Cartographie.T_Coords) return Float is
|
||||
Dist: Float;
|
||||
begin
|
||||
Dist := Cartographie.SQRT((P2.Long - P1.Long)**2 + (P2.Lat - P1.Lat)**2)*111.600;
|
||||
return Dist;
|
||||
end Distance;
|
||||
|
||||
function Cap_Cible(Code: String) return Float is
|
||||
Vecteur_X: Float;
|
||||
Vecteur_Y:Float;
|
||||
begin
|
||||
Vecteur_X:= (Cartographie.Coords_Aeroport(Code).Long - Cartographie.Coords_Avion.Long);
|
||||
Vecteur_Y:= (Cartographie.Coords_Aeroport(Code).Lat - Cartographie.Coords_Avion.Lat);
|
||||
return Cartographie.Cap_Vecteur(Vecteur_X , Vecteur_Y);
|
||||
end Cap_Cible;
|
||||
|
||||
function Aeroport_Proche return Integer is
|
||||
Aeroport_Max: Integer;
|
||||
Aeroport_Test: Integer;
|
||||
Aeroport_Proche: Integer;
|
||||
begin
|
||||
Aeroport_Max:= Cartographie.Nb_Aeroports;
|
||||
Aeroport_Test:=1;
|
||||
Aeroport_Proche:= 1;
|
||||
while Aeroport_Test <= Aeroport_Max loop
|
||||
if (Distance(Cartographie.Coords_Avion, Cartographie.Coords_Aeroport(Cartographie.Code_Aeroport(Aeroport_Test))) < Distance(Cartographie.Coords_Avion, Cartographie.Coords_Aeroport(Cartographie.Code_Aeroport(Aeroport_Proche)))) not in (Cartographie.Pays_Aeroport(Cartographie.Code_Aeroport(Aeroport_Test)) = "FR") then
|
||||
Aeroport_Proche := Aeroport_Test;
|
||||
end if;
|
||||
Aeroport_Test:= Aeroport_Test+1;
|
||||
end loop;
|
||||
return Aeroport_Proche;
|
||||
end Aeroport_Proche;
|
||||
|
||||
procedure Naviguer_Vers(Code: String) is
|
||||
Moy: Float;
|
||||
begin
|
||||
while Distance(Cartographie.Coords_Avion, Cartographie.Coords_Aeroport(Code)) >= 100.0 loop
|
||||
Orienter_En_Vol(Cap_Cible(Code));
|
||||
Cartographie.Placer_Marque(Cartographie.Coords_Aeroport(Cartographie.Code_Aeroport(Aeroport_Proche)));
|
||||
Moy:= (Distance(Cartographie.Coords_Avion, Cartographie.Coords_Aeroport(Cartographie.Code_Aeroport(Aeroport_Proche))) + Moy)/2.0;
|
||||
|
||||
end loop;
|
||||
GAda.Text_IO.Put_Line("La moyenne de l'aéroport le plus proche est:" & Float'Image(Moy));
|
||||
end Naviguer_Vers;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
begin
|
||||
|
||||
-- Effectuer tous les tests unitaires de Delta_Cap et Caps_Egaux
|
||||
Info_Aeroport("LFBD");
|
||||
Tester_Carto;
|
||||
GAda.Text_IO.Put_Line(Float'Image(Distance( P1 => Cartographie.Coords_Aeroport("LFBO"), P2 => Cartographie.Coords_Aeroport("EGLL"))));
|
||||
GAda.Text_IO.Put_Line(Float'Image(Cap_Cible("EGLL")));
|
||||
Carburant.Faire_Le_Plein;
|
||||
Tour.Attendre_Autorisation_Roulage;
|
||||
Avion_Sol.Rouler_Vers('L');
|
||||
Avion_Sol.Rouler_Vers('M');
|
||||
Avion_Sol.Rouler_Vers('E');
|
||||
Avion_Sol.Rouler_Vers('A');
|
||||
Tour.Attendre_Autorisation_Decollage;
|
||||
INSA_Air.Regler_Reacteur(8);
|
||||
Pilote_Automatique.Decoller;
|
||||
INSA_Air.Regler_Reacteur(6);
|
||||
Train.Deplacer_Train(FALSE);
|
||||
Naviguer_Vers("EGLL");
|
||||
Naviguer_Vers("LEBL");
|
||||
Naviguer_Vers("ELLX");
|
||||
Naviguer_Vers("LFML");
|
||||
Naviguer_Vers("LFBO");
|
||||
|
||||
INSA_Air.Regler_Reacteur(3);
|
||||
Train.Deplacer_Train(True);
|
||||
Tour.Attendre_Autorisation_Atterrissage;
|
||||
Pilote_Automatique.Atterrir;
|
||||
Avion_Sol.Rouler_Vers('N');
|
||||
Avion_Sol.Rouler_Vers('M');
|
||||
Avion_Sol.Rouler_Vers('L');
|
||||
Avion_Sol.Rouler_Vers('K');
|
||||
|
||||
end Mission3 ;
|
170
mission3.ali
Normal file
170
mission3.ali
Normal file
|
@ -0,0 +1,170 @@
|
|||
V "GNAT Lib v9"
|
||||
M P W=b
|
||||
P SS ZX
|
||||
|
||||
RN
|
||||
RV NO_DIRECT_BOOLEAN_OPERATORS
|
||||
RV NO_FLOATING_POINT
|
||||
RV NO_SECONDARY_STACK
|
||||
RV NO_DYNAMIC_SIZED_OBJECTS
|
||||
RV SPARK_05
|
||||
|
||||
U mission3%b mission3.adb 6033471e NE OO SU
|
||||
W assert%s assert.adb assert.ali
|
||||
W avion_sol%s avion_sol.adb avion_sol.ali
|
||||
W carburant%s carburant.adb carburant.ali
|
||||
W cartographie%s cartographie.adb cartographie.ali
|
||||
W gada%s gada.ads gada.ali
|
||||
W gada.text_io%s gada-text_io.adb gada-text_io.ali
|
||||
W insa_air%s insa_air.adb insa_air.ali
|
||||
W pilote_automatique%s pilote_automatique.adb pilote_automatique.ali
|
||||
Z system.concat_2%s s-conca2.adb s-conca2.ali
|
||||
Z system.concat_6%s s-conca6.adb s-conca6.ali
|
||||
Z system.img_bool%s s-imgboo.adb s-imgboo.ali
|
||||
Z system.img_real%s s-imgrea.adb s-imgrea.ali
|
||||
Z system.secondary_stack%s s-secsta.adb s-secsta.ali
|
||||
W tour%s tour.adb tour.ali
|
||||
W train%s train.adb train.ali
|
||||
|
||||
D assert.ads 20171011075454 7e627795 assert%s
|
||||
D avion_sol.ads 20171011075454 45c7a2a5 avion_sol%s
|
||||
D carburant.ads 20220829092117 e5bbfbdc carburant%s
|
||||
D cartographie.ads 20171011075454 703ea294 cartographie%s
|
||||
D gada.ads 20171011075454 65bf3563 gada%s
|
||||
D gada-text_io.ads 20171011075454 f74da4f3 gada.text_io%s
|
||||
D insa_air.ads 20171011075454 dbdc639f insa_air%s
|
||||
D mission3.adb 20221017134203 65811e56 mission3%b
|
||||
D pilote_automatique.ads 20171011075454 f2bc4282 pilote_automatique%s
|
||||
D system.ads 20210601075304 4635ec04 system%s
|
||||
D s-conca2.ads 20210601075304 02a0d7d0 system.concat_2%s
|
||||
D s-conca6.ads 20210601075304 d2c72db2 system.concat_6%s
|
||||
D s-imgboo.ads 20210601075304 f5d971eb system.img_bool%s
|
||||
D s-imgrea.ads 20210601075304 c7a851e2 system.img_real%s
|
||||
D s-parame.ads 20210601075304 48ec542b system.parameters%s
|
||||
D s-secsta.ads 20210601075304 20bbe636 system.secondary_stack%s
|
||||
D s-stoele.ads 20210601075304 2dc34a04 system.storage_elements%s
|
||||
D tour.ads 20171011075454 65261ee1 tour%s
|
||||
D train.ads 20171011075454 10994e3f train%s
|
||||
X 1 assert.ads
|
||||
1K9*Assert 11e11 8|5w6 95r7 144r7
|
||||
9U14*Failif 8|95s14 144s14
|
||||
X 2 avion_sol.ads
|
||||
5K9*Avion_Sol 26e14 8|4w6 108r7 120r8 121r8 122r8 123r8 125r8 127r8 129r8
|
||||
. 131r8 132r8 133r8 166r8 167r8 168r8 169r8 183r8 184r8 185r8 186r8 263r8
|
||||
. 264r8 265r8 266r8 282r8 283r8 284r8 285r8
|
||||
9U14*Rouler_Vers 8|120s18 121s18 132s18 133s18 166s18 167s18 168s18 169s18
|
||||
. 183s18 184s18 185s18 186s18 263s18 264s18 265s18 266s18 282s18 283s18 284s18
|
||||
. 285s18
|
||||
19U14*Freiner 8|108s17 122s18
|
||||
23U14*Attendre_Entree 8|123s18 125s18 127s18 129s18 131s18
|
||||
X 3 carburant.ads
|
||||
5K9*Carburant 37e14 8|6w6 164r8 261r11
|
||||
10U14*Faire_Le_Plein 8|164s18 261s21
|
||||
X 4 cartographie.ads
|
||||
6K9*Cartographie 56e17 8|9w6 191r38 192r43 192r107 197r38 198r43 198r108
|
||||
. 199r38 200r43 200r108 201r38 202r43 202r108 205r28 205r55 208r17 216r22
|
||||
. 216r64 217r22 217r63 218r16 226r24 230r25 230r52 230r81 230r136 230r163
|
||||
. 230r192 230r247 230r274 241r23 241r50 243r11 243r38 243r67 244r27 244r54
|
||||
. 244r83 259r54 259r98
|
||||
14R9*T_Coords 17e15 8|205r41 205r68
|
||||
15f7*Long{float} 8|192r87 198r88 200r88 202r88 208r39 208r49 216r57 216r90
|
||||
16f7*Lat{float} 8|192r151 198r153 200r153 202r153 208r64 208r73 217r57 217r89
|
||||
20V13*Coords_Avion{14R9} 8|216s77 217s76 230s38 230s149 241s36 244s40
|
||||
27V13*Nom_Aeroport{string} 8|191s51 197s51 199s51 201s51
|
||||
27a27 Code{string} 8|191r64 197r64 199r64 201r64
|
||||
31V13*Pays_Aeroport{string} 8|230s260
|
||||
34V13*Coords_Aeroport{14R9} 8|192s56 192s120 198s56 198s121 200s56 200s121
|
||||
. 202s56 202s121 216s35 217s35 230s65 230s176 241s63 243s51 244s67 259s67
|
||||
. 259s111
|
||||
34a30 Code{string} 8|192r72 192r136 198r72 198r137 200r72 200r137 202r72
|
||||
. 202r137
|
||||
38V13*Nb_Aeroports{integer} 8|226s37
|
||||
41V13*Code_Aeroport{string} 8|230s94 230s205 230s287 243s80 244s96
|
||||
44U14*Placer_Marque 8|243s24
|
||||
50V13*Cap_Vecteur{float} 8|218s29
|
||||
54V13*SQRT{float} 8|208s30
|
||||
X 5 gada.ads
|
||||
1K9*GAda 3e9 8|1r6 45r7 64r7 191r9 192r9 197r9 198r9 199r9 200r9 201r9 202r9
|
||||
. 247r8 259r4 260r4
|
||||
X 6 gada-text_io.ads
|
||||
1K14*Text_IO 32e17 8|1w11 45r12 64r12 191r14 192r14 197r14 198r14 199r14
|
||||
. 200r14 201r14 202r14 247r13 259r9 260r9
|
||||
7U14*Put_Line 8|45s20 64s20 191s22 192s22 197s22 198s22 199s22 200s22 201s22
|
||||
. 202s22 247s21 259s17 260s17
|
||||
7a24 Aff{string} 8|45r30 64r29 191r32 197r32 199r32 201r32
|
||||
X 7 insa_air.ads
|
||||
1K9*INSA_Air 49e13 8|2w6 96r7 97r34 98r31 106r10 145r34 146r31 148r13 150r13
|
||||
. 152r13 156r7 171r8 173r8 176r8 178r8 179r8 268r8 270r8 278r11
|
||||
9V13*Cap_Courant{float} 8|97s43 98s40 145s43 146s40
|
||||
15U14*Regler_Reacteur 8|96s16 171s17 173s17 179s17 268s17 270s17 278s20
|
||||
25U14*Positionner_Gouverne_A_Droite 8|152s22
|
||||
26U14*Positionner_Gouverne_A_Gauche 8|148s22
|
||||
27U14*Positionner_Gouverne_A_Zero 8|150s22 156s16
|
||||
46U14*Attendre 8|106s19 176s17 178s17
|
||||
X 8 mission3.adb
|
||||
10U11*Mission3 10b11 124r8 126r8 128r8 130r8 175r8 177r8 287l5 287t13
|
||||
19V13 Delta_Cap{float} 19b13 19>23 19>44 33l8 33t17 44s22 53s22 98s21 146s21
|
||||
19f23 Cap_Actuel{float} 23r34 44r32
|
||||
19f44 Cap_Voulu{float} 23r22 44r52
|
||||
20f7 Ecart_Angle{float} 23m7 25r10 26m10 26r25 28r10 29m10 29r25 32r14
|
||||
41U14 Tester_Delta_Cap 41b14 41>31 41>46 46l8 46t24 72s7 73s7 74s7 75s7 76s7
|
||||
. 77s7
|
||||
41f31 CapA{float} 44r46 45r72 72r25 73r25 74r25 75r25 76r25 77r25
|
||||
41f46 CapV{float} 44r65 45r117 72r40 73r40 74r40 75r40 76r40 77r41
|
||||
42f7 Ecart_Angle{float} 44m7 45r158
|
||||
50V13 Caps_Egaux{boolean} 50b13 50>24 50>36 55l8 55t18 63s14 97s17 145s17
|
||||
50f24 Cap1{float} 53r32
|
||||
50f36 Cap2{float} 53r39
|
||||
51f7 Dif_Cap{float} 53m7 54r14
|
||||
60U14 Tester_Caps_Egaux 60b14 60>32 60>45 65l8 65t25 78s7 79s7 80s7 81s7
|
||||
. 82s7
|
||||
60f32 Cap1{float} 63r25 78r25 79r25 80r25 81r25 82r25
|
||||
60f45 Cap2{float} 63r32 78r40 79r39 80r40 81r40 82r41
|
||||
61b7 Rep{boolean} 63m7 64r61
|
||||
70U14 Tests_Unitaires 70b14 85l8 85t23
|
||||
90U14 Orienter_Au_Sol 90b14 90>30 109l9 109t24 124s17 126s17 128s17 130s17
|
||||
90f30 Cap{float} 94r18 94r33 97r28 98r54
|
||||
91b7 Cap_Bon{boolean} 94m7 95r21
|
||||
92f7 Delt_Cap{float} 98m10 99r13 101r16
|
||||
118U15 Tester_Cap 118b15 135l8 135t18
|
||||
139U15 Orienter_En_Vol 139b15 139>31 157l9 157t24 175s17 177s17 242s11
|
||||
139f31 Cap{float} 143r18 143r33 145r28 146r54
|
||||
140b7 Cap_Bon{boolean} 143m7 144r21
|
||||
141f7 Delt_Cap{float} 146m10 147r13 149r16
|
||||
162U15 Realiser_Vol_Demo 162b15 187l10 187t27
|
||||
189U16 Info_Aeroport 189b16 189>30 193l10 193t23 257s4
|
||||
189a30 CodeA{string} 191r72 192r80 192r144
|
||||
195U16 Tester_Carto 195b16 203l10 203t22 258s4
|
||||
205V15 Distance{float} 205b15 205>24 205>51 210l10 210t18 230s16 230s127
|
||||
. 241s14 244s18 259s38
|
||||
205r24 P1{4|14R9} 208r46 208r70 259r48
|
||||
205r51 P2{4|14R9} 208r36 208r61 259r92
|
||||
206f9 Dist{float} 208m9 209r16
|
||||
212V15 Cap_Cible{float} 212b15 212>25 219l10 219t19 242s27 260s38
|
||||
212a25 Code{string} 216r51 217r51
|
||||
213f9 Vecteur_X{float} 216m9 218r41
|
||||
214f9 Vecteur_Y{float} 217m9 218r53
|
||||
221V20 Aeroport_Proche{integer} 221b20 236l10 236t25 243s94 244s110
|
||||
222i9 Aeroport_Max{integer} 226m9 229r32
|
||||
223i9 Aeroport_Test{integer} 227m9 229r15 230r108 230r301 231r34 233m12 233r28
|
||||
224i9 Aeroport_Proche{integer} 228m9 230r219 231m15 235r16
|
||||
238U16 Naviguer_Vers 238b16 238>30 248l10 248t23 272s4 273s4 274s4 275s4
|
||||
. 276s4
|
||||
238a30 Code{string} 241r79 242r37
|
||||
239f9 Moy{float} 244m11 244r131 247r92
|
||||
X 9 pilote_automatique.ads
|
||||
1K9*Pilote_Automatique 8|7w6 172r8 182r8 269r8 281r8 9|21e23
|
||||
9U14*Decoller 8|172s27 269s27
|
||||
18U14*Atterrir 8|182s27 281s27
|
||||
X 18 tour.ads
|
||||
4K9*Tour 8|8w6 165r8 170r8 181r8 262r8 267r8 280r8 18|22e9
|
||||
9U14*Attendre_Autorisation_Roulage 8|165s13 262s13
|
||||
14U14*Attendre_Autorisation_Decollage 8|170s13 267s13
|
||||
19U14*Attendre_Autorisation_Atterrissage 8|181s13 280s13
|
||||
X 19 train.ads
|
||||
1K9*Train 8|3w6 100r13 102r13 104r13 174r8 180r8 271r8 279r8 19|34e10
|
||||
4U14*Positionner_A_Gauche 8|100s19
|
||||
5U14*Positionner_A_Droite 8|104s19
|
||||
6U14*Positionner_A_Zero 8|102s19
|
||||
11U14*Deplacer_Train 8|174s14 180s14 271s14 279s14
|
||||
|
BIN
mission3.o
Normal file
BIN
mission3.o
Normal file
Binary file not shown.
Loading…
Reference in a new issue