-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.adb
170 lines (99 loc) · 4.97 KB
/
main.adb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
--Ecrire "modifier" dans main
--Verifier "afficher_algo"
WITH P_Traduction,P_Creation,P_Edition,Simple_Io;
USE P_Traduction,P_Creation,P_Edition,Simple_Io;
PROCEDURE Main IS
NomFichier:String(1..25):=(others=>' ');
CommandeAnnuler:CONSTANT String:="-annuler";--Commande pour annuler une action.
LongNomFichier,LongNumCommande:Integer:=0;
Erreur_Longueur,Erreur_Choix,Erreur_Fichier_Inexistant:EXCEPTION;
NumCommande:String(1..15);
BEGIN
New_Line;
Put_Line("Bienvenue dans le Createur - Editeur - Traducteur d'Algorithme");
Put_Line("Par BLANC Nathanael, GACA Sebastien et LIBERT Jeremy");
LOOP
BEGIN
New_Line;
Put("------------------------");New_Line;
Put("Que souhaitez-vous faire ?");New_Line;
Put("(1) : Creer un algorithme guide");New_Line;
Put("(2) : Modifier un algorithme (non guide)");New_Line;
Put("(3) : Traduire un algorithme en Ada");New_Line;
Put("(4) : Quitter");New_Line;
Put(" => ");
Get_Line(NumCommande, LongNumCommande);
EXIT WHEN NumCommande(1..LongNumCommande) = "4" OR NumCommande(1..LongNumCommande) = "-quitter";
IF NumCommande(1..LongNumCommande) = "1" AND NumCommande(1..LongNumCommande) = "2" AND NumCommande(1..LongNumCommande) = "3" AND NumCommande(1..LongNumCommande) = "4" THEN
RAISE Erreur_Choix;
ELSIF NumCommande(1..LongNumCommande) = "1" OR NumCommande(1..LongNumCommande) = "creer" THEN
LOOP
BEGIN
New_Line;
Put("Quel nom voulez-vous donner a votre fichier .txt qui contiendra l'algorithme ?");
New_Line;
Put(" => ");
Get_Line(NomFichier, LongNomFichier);
IF LongNomFichier = 0 THEN
RAISE Erreur_Longueur;
END IF;
EXIT WHEN LongNomFichier > 0 OR NomFichier(CommandeAnnuler'RANGE) = CommandeAnnuler;
EXCEPTION
WHEN Erreur_Longueur => Put(" Erreur : Saisissez au moins un caractere");New_line;
END;
END LOOP;
IF NomFichier(CommandeAnnuler'RANGE) /= CommandeAnnuler THEN
Creation_Fichier(NomFichier(1..LongNomFichier));New_Line;
END IF;
ELSIF NumCommande(1..LongNumCommande) = "2" OR NumCommande(1..LongNumCommande) = "modifier" THEN
LOOP
BEGIN
New_Line;
Put("Quel est le nom de votre fichier .txt a modifier ?");
New_Line;
Put(" => ");
Get_Line(NomFichier, LongNomFichier);
IF LongNomFichier = 0 THEN
RAISE Erreur_Longueur;
END IF;
IF NOT P_Traduction.Existence_Fichier(NomFichier(1..LongNomFichier) & ".txt") AND NomFichier(CommandeAnnuler'RANGE) /= CommandeAnnuler THEN
RAISE Erreur_Fichier_Inexistant;
END IF;
EXIT WHEN LongNomFichier > 0 OR NomFichier(CommandeAnnuler'RANGE) = CommandeAnnuler;
EXCEPTION
WHEN Erreur_Longueur => Put(" Erreur : Saisissez au moins un caractere");New_Line;
WHEN Erreur_Fichier_Inexistant => Put(" Erreur : Le fichier n'existe pas");New_line;
END;
END LOOP;
IF NomFichier(CommandeAnnuler'RANGE) /= CommandeAnnuler THEN
Edition_Fichier(NomFichier(1..LongNomFichier));New_Line;
END IF;
ELSIF NumCommande(1..LongNumCommande) = "3" OR NumCommande(1..LongNumCommande) = "traduire" THEN
LOOP
BEGIN
New_Line;
Put("Quel est le nom de votre fichier .txt a traduire ?");
New_Line;
Put(" => ");
Get_Line(NomFichier, LongNomFichier);
IF LongNomFichier = 0 THEN
RAISE Erreur_Longueur;
END IF;
IF NOT P_Traduction.Existence_Fichier(NomFichier(1..LongNomFichier) & ".txt") AND NomFichier(CommandeAnnuler'RANGE) /= CommandeAnnuler THEN
RAISE Erreur_Fichier_Inexistant;
END IF;
EXIT WHEN LongNomFichier > 0 OR NomFichier(CommandeAnnuler'RANGE) = CommandeAnnuler;
EXCEPTION
WHEN Erreur_Longueur => Put(" Erreur : Saisissez au moins un caractere");New_line;
END;
END LOOP;
IF NomFichier(CommandeAnnuler'RANGE) /= CommandeAnnuler THEN
Traduction_Fichier(NomFichier(1..LongNomFichier), NomFichier(1..LongNomFichier));New_Line;
END IF;
END IF;
EXCEPTION
WHEN Erreur_Choix => Put(" Erreur : Vous n'avez pas saisi un choix valide");New_Line;
WHEN Erreur_Fichier_Inexistant => Put(" Erreur : Le fichier n'existe pas");New_line;
END;
END LOOP;
END Main;