diff --git a/licorne-arc-en-ciel-licorne.jpg b/licorne-arc-en-ciel-licorne.jpg new file mode 100644 index 0000000..09029c5 Binary files /dev/null and b/licorne-arc-en-ciel-licorne.jpg differ diff --git a/mission1-exe b/mission1-exe new file mode 100755 index 0000000..f2aad3e Binary files /dev/null and b/mission1-exe differ diff --git a/mission1.adb b/mission1.adb new file mode 100644 index 0000000..82a2bb4 --- /dev/null +++ b/mission1.adb @@ -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 ; + + + + diff --git a/mission1.ali b/mission1.ali new file mode 100644 index 0000000..9159f36 --- /dev/null +++ b/mission1.ali @@ -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 + diff --git a/mission1.o b/mission1.o new file mode 100644 index 0000000..9c00655 Binary files /dev/null and b/mission1.o differ diff --git a/mission2a-exe b/mission2a-exe new file mode 100755 index 0000000..74fabed Binary files /dev/null and b/mission2a-exe differ diff --git a/mission2a.adb b/mission2a.adb new file mode 100644 index 0000000..699286e --- /dev/null +++ b/mission2a.adb @@ -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 ; + + + + diff --git a/mission2a.ali b/mission2a.ali new file mode 100644 index 0000000..12a748c --- /dev/null +++ b/mission2a.ali @@ -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 + diff --git a/mission2a.o b/mission2a.o new file mode 100644 index 0000000..7354c99 Binary files /dev/null and b/mission2a.o differ diff --git a/mission2b-exe b/mission2b-exe new file mode 100755 index 0000000..d426f53 Binary files /dev/null and b/mission2b-exe differ diff --git a/mission2b.adb b/mission2b.adb new file mode 100644 index 0000000..ed2031c --- /dev/null +++ b/mission2b.adb @@ -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 ; diff --git a/mission2b.ali b/mission2b.ali new file mode 100644 index 0000000..0178b9f --- /dev/null +++ b/mission2b.ali @@ -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 + diff --git a/mission2b.o b/mission2b.o new file mode 100644 index 0000000..24092e0 Binary files /dev/null and b/mission2b.o differ diff --git a/mission2c-exe b/mission2c-exe new file mode 100755 index 0000000..8b67402 Binary files /dev/null and b/mission2c-exe differ diff --git a/mission2c.adb b/mission2c.adb new file mode 100644 index 0000000..b2ce235 --- /dev/null +++ b/mission2c.adb @@ -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 ; diff --git a/mission2c.ali b/mission2c.ali new file mode 100644 index 0000000..c05face --- /dev/null +++ b/mission2c.ali @@ -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 + diff --git a/mission2c.o b/mission2c.o new file mode 100644 index 0000000..3a48519 Binary files /dev/null and b/mission2c.o differ diff --git a/mission3-exe b/mission3-exe new file mode 100755 index 0000000..83c7ff6 Binary files /dev/null and b/mission3-exe differ diff --git a/mission3.adb b/mission3.adb new file mode 100644 index 0000000..f3fd5b0 --- /dev/null +++ b/mission3.adb @@ -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 ; diff --git a/mission3.ali b/mission3.ali new file mode 100644 index 0000000..c814397 --- /dev/null +++ b/mission3.ali @@ -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 + diff --git a/mission3.o b/mission3.o new file mode 100644 index 0000000..8834008 Binary files /dev/null and b/mission3.o differ