uh
Cette révision appartient à :
Parent
1c09eb7819
révision
953fcc048a
7 fichiers modifiés avec 683 ajouts et 0 suppressions
170
mission4 .ali
Fichier normal
170
mission4 .ali
Fichier normal
|
@ -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 mission4%b mission4 .adb 3fc5f18d NE OO SU IL
|
||||
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 "mission4 .adb" 20221017135735 3a77a8c5 mission4%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 mission4 .adb
|
||||
10U11*mission4 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
mission4 .o
Fichier normal
BIN
mission4 .o
Fichier normal
Fichier binaire non affiché.
BIN
mission4-exe
Fichier exécutable
BIN
mission4-exe
Fichier exécutable
Fichier binaire non affiché.
324
mission4.adb
Fichier normal
324
mission4.adb
Fichier normal
|
@ -0,0 +1,324 @@
|
|||
with GAda.Text_IO ;
|
||||
with INSA_Air;
|
||||
with Train;
|
||||
with Avion_Sol;
|
||||
with Assert;
|
||||
with Carburant;
|
||||
with Pilote_Automatique;
|
||||
with Tour;
|
||||
with Cartographie;
|
||||
with GAda.Integer_Text_IO;
|
||||
procedure Mission4 is
|
||||
|
||||
package Int renames GAda.Integer_Text_IO;
|
||||
--
|
||||
-- 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;
|
||||
Mission4.Orienter_Au_Sol(0.0);
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Mission4.Orienter_Au_Sol(90.0);
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Mission4.Orienter_Au_Sol(270.0);
|
||||
Avion_Sol.Attendre_Entree;
|
||||
Mission4.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);
|
||||
Mission4.Orienter_En_Vol(295.0);
|
||||
INSA_Air.Attendre(1200.0);
|
||||
Mission4.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)))) then
|
||||
Aeroport_Proche := Aeroport_Test;
|
||||
end if;
|
||||
Aeroport_Test:= Aeroport_Test+1;
|
||||
end loop;
|
||||
return Aeroport_Proche;
|
||||
end Aeroport_Proche;
|
||||
|
||||
function Naviguer_Vers(Code: String) return Float is
|
||||
Dist_Max: Float := 0.0;
|
||||
Aeroport_Max: Integer:= 1;
|
||||
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)));
|
||||
if Distance(Cartographie.Coords_Avion, Cartographie.Coords_Aeroport(Cartographie.Code_Aeroport(Aeroport_Proche))) > Dist_Max then
|
||||
Dist_Max := Distance(Cartographie.Coords_Avion, Cartographie.Coords_Aeroport(Cartographie.Code_Aeroport(Aeroport_Proche)));
|
||||
Aeroport_Max := Aeroport_Proche;
|
||||
end if;
|
||||
|
||||
end loop;
|
||||
return Dist_Max;
|
||||
end Naviguer_Vers;
|
||||
|
||||
procedure Liste is
|
||||
Nb : Integer;
|
||||
Nb_Actuel: Integer := 1;
|
||||
begin
|
||||
Nb := Cartographie.Nb_Aeroports;
|
||||
while Nb > Nb_Actuel loop
|
||||
GAda.Text_IO.Put_Line(Cartographie.Nom_Aeroport(Cartographie.Code_Aeroport(Nb_Actuel)) & " " & Integer'Image(Nb_Actuel));
|
||||
Nb_Actuel := Nb_Actuel +1;
|
||||
end loop;
|
||||
end Liste;
|
||||
|
||||
procedure Voyage is
|
||||
Destination: Integer;
|
||||
Dist_Test: Float;
|
||||
Dist_Max_Totale: Float := 0.0;
|
||||
begin
|
||||
Destination := Int.FGet;
|
||||
while (Destination < 0) or (Destination > 0) loop
|
||||
if Destination <= Cartographie.Nb_Aeroports then
|
||||
Dist_Test := Naviguer_Vers(Cartographie.Code_Aeroport(Destination));
|
||||
if Dist_Test > Dist_Max_Totale then
|
||||
Dist_Max_Totale := Dist_Test;
|
||||
end if;
|
||||
else
|
||||
GAda.Text_IO.Put_Line("Numéro d'aéroport invalide");
|
||||
end if;
|
||||
Destination := Int.FGet;
|
||||
end loop;
|
||||
Dist_Test := Naviguer_Vers("LFBO");
|
||||
if Dist_Test > Dist_Max_Totale then
|
||||
Dist_Max_Totale := Dist_Test;
|
||||
end if;
|
||||
GAda.Text_IO.Put_Line("Durant ce voyage, l'avion a toujours été à moins de " & Float'Image(Dist_Max_Totale) & " km d'un aéroport");
|
||||
end Voyage;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
begin
|
||||
|
||||
-- Effectuer tous les tests unitaires de Delta_Cap et Caps_Egaux
|
||||
Liste;
|
||||
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);
|
||||
Voyage;
|
||||
|
||||
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 mission4 ;
|
189
mission4.ali
Fichier normal
189
mission4.ali
Fichier normal
|
@ -0,0 +1,189 @@
|
|||
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_STANDARD_STORAGE_POOLS
|
||||
RV NO_DYNAMIC_SIZED_OBJECTS
|
||||
RV SPARK_05
|
||||
|
||||
U mission4%b mission4.adb 0f252a84 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.integer_text_io%s gada-integer_text_io.adb gada-integer_text_io.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_3%s s-conca3.adb s-conca3.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_int%s s-imgint.adb s-imgint.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-integer_text_io.ads 20171011075454 b857ae47 gada.integer_text_io%s
|
||||
D gada-text_io.ads 20171011075454 f74da4f3 gada.text_io%s
|
||||
D insa_air.ads 20171011075454 dbdc639f insa_air%s
|
||||
D mission4.adb 20221024134224 b2c0dd8b mission4%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-conca3.ads 20210601075304 0b705ca5 system.concat_3%s
|
||||
D s-conca6.ads 20210601075304 d2c72db2 system.concat_6%s
|
||||
D s-imgboo.ads 20210601075304 f5d971eb system.img_bool%s
|
||||
D s-imgint.ads 20210601075304 02dbe0c2 system.img_int%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 9|5w6 96r7 145r7
|
||||
9U14*Failif 9|96s14 145s14
|
||||
X 2 avion_sol.ads
|
||||
5K9*Avion_Sol 26e14 9|4w6 109r7 121r7 122r7 123r7 124r7 126r7 128r7 130r7
|
||||
. 132r7 133r7 134r7 167r7 168r7 169r7 170r7 184r7 185r7 186r7 187r7 304r4
|
||||
. 305r4 306r4 307r4 319r4 320r4 321r4 322r4
|
||||
9U14*Rouler_Vers 9|121s17 122s17 133s17 134s17 167s17 168s17 169s17 170s17
|
||||
. 184s17 185s17 186s17 187s17 304s14 305s14 306s14 307s14 319s14 320s14 321s14
|
||||
. 322s14
|
||||
19U14*Freiner 9|109s17 123s17
|
||||
23U14*Attendre_Entree 9|124s17 126s17 128s17 130s17 132s17
|
||||
X 3 carburant.ads
|
||||
5K9*Carburant 37e14 9|6w6 165r7 302r4
|
||||
10U14*Faire_Le_Plein 9|165s17 302s14
|
||||
X 4 cartographie.ads
|
||||
6K9*Cartographie 56e17 9|9w6 192r36 193r41 193r105 198r36 199r41 199r106
|
||||
. 200r36 201r41 201r106 202r36 203r41 203r106 206r26 206r53 209r15 217r20
|
||||
. 217r62 218r20 218r61 219r14 227r22 231r23 231r50 231r79 231r134 231r161
|
||||
. 231r190 243r22 243r49 245r10 245r37 245r66 246r22 246r49 246r78 247r34
|
||||
. 247r61 247r90 259r13 261r32 261r58 273r28 274r37 300r54 300r98
|
||||
14R9*T_Coords 17e15 9|206r39 206r66
|
||||
15f7*Long{float} 9|193r85 199r86 201r86 203r86 209r37 209r47 217r55 217r88
|
||||
16f7*Lat{float} 9|193r149 199r151 201r151 203r151 209r62 209r71 218r55 218r87
|
||||
20V13*Coords_Avion{14R9} 9|217s75 218s74 231s36 231s147 243s35 246s35 247s47
|
||||
27V13*Nom_Aeroport{string} 9|192s49 198s49 200s49 202s49 261s45
|
||||
27a27 Code{string} 9|192r62 198r62 200r62 202r62
|
||||
34V13*Coords_Aeroport{14R9} 9|193s54 193s118 199s54 199s119 201s54 201s119
|
||||
. 203s54 203s119 217s33 218s33 231s63 231s174 243s62 245s50 246s62 247s74
|
||||
. 300s67 300s111
|
||||
34a30 Code{string} 9|193r70 193r134 199r70 199r135 201r70 201r135 203r70
|
||||
. 203r135
|
||||
38V13*Nb_Aeroports{integer} 9|227s35 259s26 273s41
|
||||
41V13*Code_Aeroport{string} 9|231s92 231s203 245s79 246s91 247s103 261s71
|
||||
. 274s50
|
||||
44U14*Placer_Marque 9|245s23
|
||||
50V13*Cap_Vecteur{float} 9|219s27
|
||||
54V13*SQRT{float} 9|209s28
|
||||
X 5 gada.ads
|
||||
1K9*GAda 3e9 9|1r6 10r6 13r24 46r7 65r7 192r7 193r7 198r7 199r7 200r7 201r7
|
||||
. 202r7 203r7 261r10 279r13 287r7 300r4 301r4
|
||||
X 6 gada-integer_text_io.ads
|
||||
1K14*Integer_Text_IO 12e25 9|10w11 13r29
|
||||
4V13*FGet{integer} 9|271s26 281s29
|
||||
X 7 gada-text_io.ads
|
||||
1K14*Text_IO 32e17 9|1w11 46r12 65r12 192r12 193r12 198r12 199r12 200r12
|
||||
. 201r12 202r12 203r12 261r15 279r18 287r12 300r9 301r9
|
||||
7U14*Put_Line 9|46s20 65s20 192s20 193s20 198s20 199s20 200s20 201s20 202s20
|
||||
. 203s20 261s23 279s26 287s20 300s17 301s17
|
||||
7a24 Aff{string} 9|46r30 65r29 192r30 198r30 200r30 202r30
|
||||
X 8 insa_air.ads
|
||||
1K9*INSA_Air 49e13 9|2w6 97r7 98r34 99r31 107r10 146r34 147r31 149r13 151r13
|
||||
. 153r13 157r7 172r7 174r7 177r7 179r7 180r7 309r4 311r4 315r4
|
||||
9V13*Cap_Courant{float} 9|98s43 99s40 146s43 147s40
|
||||
15U14*Regler_Reacteur 9|97s16 172s16 174s16 180s16 309s13 311s13 315s13
|
||||
25U14*Positionner_Gouverne_A_Droite 9|153s22
|
||||
26U14*Positionner_Gouverne_A_Gauche 9|149s22
|
||||
27U14*Positionner_Gouverne_A_Zero 9|151s22 157s16
|
||||
46U14*Attendre 9|107s19 177s16 179s16
|
||||
X 9 mission4.adb
|
||||
11U11*Mission4 11b11 125r7 127r7 129r7 131r7 176r7 178r7 324l5 324t13
|
||||
13K12 Int=13:29 271r22 281r25
|
||||
20V13 Delta_Cap{float} 20b13 20>23 20>44 34l8 34t17 45s22 54s22 99s21 147s21
|
||||
20f23 Cap_Actuel{float} 24r34 45r32
|
||||
20f44 Cap_Voulu{float} 24r22 45r52
|
||||
21f7 Ecart_Angle{float} 24m7 26r10 27m10 27r25 29r10 30m10 30r25 33r14
|
||||
42U14 Tester_Delta_Cap 42b14 42>31 42>46 47l8 47t24 73s7 74s7 75s7 76s7 77s7
|
||||
. 78s7
|
||||
42f31 CapA{float} 45r46 46r72 73r25 74r25 75r25 76r25 77r25 78r25
|
||||
42f46 CapV{float} 45r65 46r117 73r40 74r40 75r40 76r40 77r40 78r41
|
||||
43f7 Ecart_Angle{float} 45m7 46r158
|
||||
51V13 Caps_Egaux{boolean} 51b13 51>24 51>36 56l8 56t18 64s14 98s17 146s17
|
||||
51f24 Cap1{float} 54r32
|
||||
51f36 Cap2{float} 54r39
|
||||
52f7 Dif_Cap{float} 54m7 55r14
|
||||
61U14 Tester_Caps_Egaux 61b14 61>32 61>45 66l8 66t25 79s7 80s7 81s7 82s7
|
||||
. 83s7
|
||||
61f32 Cap1{float} 64r25 79r25 80r25 81r25 82r25 83r25
|
||||
61f45 Cap2{float} 64r32 79r40 80r39 81r40 82r40 83r41
|
||||
62b7 Rep{boolean} 64m7 65r61
|
||||
71U14 Tests_Unitaires 71b14 86l8 86t23
|
||||
91U14 Orienter_Au_Sol 91b14 91>30 110l8 110t23 125s16 127s16 129s16 131s16
|
||||
91f30 Cap{float} 95r18 95r33 98r28 99r54
|
||||
92b7 Cap_Bon{boolean} 95m7 96r21
|
||||
93f7 Delt_Cap{float} 99m10 100r13 102r16
|
||||
119U14 Tester_Cap 119b14 136l8 136t18
|
||||
140U14 Orienter_En_Vol 140b14 140>30 158l8 158t23 176s16 178s16 244s10
|
||||
140f30 Cap{float} 144r18 144r33 146r28 147r54
|
||||
141b7 Cap_Bon{boolean} 144m7 145r21
|
||||
142f7 Delt_Cap{float} 147m10 148r13 150r16
|
||||
163U14 Realiser_Vol_Demo 163b14 188l8 188t25
|
||||
190U14 Info_Aeroport 190b14 190>28 194l8 194t21 298s4
|
||||
190a28 CodeA{string} 192r70 193r78 193r142
|
||||
196U14 Tester_Carto 196b14 204l8 204t20 299s4
|
||||
206V13 Distance{float} 206b13 206>22 206>49 211l8 211t16 231s14 231s125 243s13
|
||||
. 246s13 247s25 300s38
|
||||
206r22 P1{4|14R9} 209r44 209r68 300r48
|
||||
206r49 P2{4|14R9} 209r34 209r59 300r92
|
||||
207f7 Dist{float} 209m7 210r14
|
||||
213V13 Cap_Cible{float} 213b13 213>23 220l8 220t17 244s26 301s38
|
||||
213a23 Code{string} 217r49 218r49
|
||||
214f7 Vecteur_X{float} 217m7 219r39
|
||||
215f7 Vecteur_Y{float} 218m7 219r51
|
||||
222V13 Aeroport_Proche{integer} 222b13 237l8 237t23 245s93 246s105 247s117
|
||||
. 248s29
|
||||
223i7 Aeroport_Max{integer} 227m7 230r30
|
||||
224i7 Aeroport_Test{integer} 228m7 230r13 231r106 232r32 234m10 234r26
|
||||
225i7 Aeroport_Proche{integer} 229m7 231r217 232m13 236r14
|
||||
239V13 Naviguer_Vers{float} 239b13 239>27 253l8 253t21 274s23 283s20
|
||||
239a27 Code{string} 243r78 244r36
|
||||
240f7 Dist_Max{float} 246r126 247m13 252r14
|
||||
241i7 Aeroport_Max{integer} 248m13
|
||||
255U14 Liste 255b14 264l8 264t13 297s4
|
||||
256i7 Nb{integer} 259m7 260r13
|
||||
257i7 Nb_Actuel{integer} 260r18 261r85 261r119 262m10 262r23
|
||||
266U14 Voyage 266b14 288l8 288t14 313s4
|
||||
267i7 Destination{integer} 271m7 272r14 272r35 273r13 274r64 281m10
|
||||
268f7 Dist_Test{float} 274m10 275r14 276r33 283m7 284r10 285r29
|
||||
269f7 Dist_Max_Totale{float} 275r26 276m14 284r22 285m10 287r101
|
||||
X 10 pilote_automatique.ads
|
||||
1K9*Pilote_Automatique 9|7w6 173r7 183r7 310r4 318r4 10|21e23
|
||||
9U14*Decoller 9|173s26 310s23
|
||||
18U14*Atterrir 9|183s26 318s23
|
||||
X 21 tour.ads
|
||||
4K9*Tour 9|8w6 166r7 171r7 182r7 303r4 308r4 317r4 21|22e9
|
||||
9U14*Attendre_Autorisation_Roulage 9|166s12 303s9
|
||||
14U14*Attendre_Autorisation_Decollage 9|171s12 308s9
|
||||
19U14*Attendre_Autorisation_Atterrissage 9|182s12 317s9
|
||||
X 22 train.ads
|
||||
1K9*Train 9|3w6 101r13 103r13 105r13 175r7 181r7 312r4 316r4 22|34e10
|
||||
4U14*Positionner_A_Gauche 9|101s19
|
||||
5U14*Positionner_A_Droite 9|105s19
|
||||
6U14*Positionner_A_Zero 9|103s19
|
||||
11U14*Deplacer_Train 9|175s13 181s13 312s10 316s10
|
||||
|
BIN
mission4.o
Fichier normal
BIN
mission4.o
Fichier normal
Fichier binaire non affiché.
BIN
upload-exe
Fichier exécutable
BIN
upload-exe
Fichier exécutable
Fichier binaire non affiché.
Chargement…
Référencer dans un nouveau ticket