-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path2001-Algo 2.algo
More file actions
1503 lines (1231 loc) · 34 KB
/
2001-Algo 2.algo
File metadata and controls
1503 lines (1231 loc) · 34 KB
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Algo Janvier 2020
[200102]
## Objet
### Déclaration
Classe Toto
var T: entier
var Q: reel
Fonction F1(...): NULL
...
FinFonction
FinClasse
var C1: Toto
### Initialisation
C1 = nouveau Toto()
### Utilisation
C1.T = 10
C1.F1(...)
### Mot-clé this
Référence l'instance en cours.
### Constructeur
Porte obligatoirement le nom de la classe. Renvoi la classe.
Fonction Toto(...):Toto
...
FinFonction
### Destructeur
Si elle existe, appelée automatiquement quand l'interpréteur tue l'instance.
Fonction ~Toto():NULL
Debut
// P est un pointeur de structure Point pour l'exemple.
Si P != NULL Alors
liberer(P)
FinSi
FinFonction
## Exo 1
Ecrire une classe voiture qui comprend les attributs suivants:
- couleur
- marque
-puissance
Et permet de changer les vitesses
### Ma version
Classe Voiture
var couleur: chaineCaractere
var marque: chaineCaractere
var puissance: entier
var rapports: tableau[7] de char
var idxVitesse: entier
Fonction Voiture(couleur: chaineCaractere, marque: chaineCaractere, puissance: entier): NULL
this.couleur = couleur
this.marque = marque
this.puissance = puissance
this.vitesse = 0
this.idxVitesse = 0
rapports[0] = '0' // Point mort
rapports[1] = '1'
rapports[2] = '2'
rapports[3] = '3'
rapports[4] = '4'
rapports[5] = '5'
rapports[6] = 'R' // Marche arrière
FinFonction
Fonction changerVitesse(vitesse: char): NULL
this.vitesse = vitesse
FinFonction
Fonction incrémenterVitesse(): NULL
Si idxVitesse < 6 Alors
idxVitesse = idxVitesse + 1
FinSi
FinFonction
Fonction decrementerVitesse(): NULL
Si idxVitesse > 1 Alors
idxVitesse = idxVitesse - 1
FinSi
FinFonction
FinClasse
### Correction
Classe Voiture
var couleur: chaineCaractere
var marque: chaineCaractere
var puissance: entier
var vitesseMax: entier
var vitesseActuelle: entier
Fonction Voiture(): Voiture
this.Voiture("noire", "renault", 100, 6)
FinFonction
Fonction Voiture(var couleur: chaineCaractere, var marque: chaineCaractere, puissance: entier, var vitesseMax: entier): Voiture
this.couleur = couleur
this.marque = marque
this.puissance = puissance
this.vitesseMax = vitesseMax
this.vitesseActuelle = 0
FinFonction
Fonction vitesseUp(): NULL
Si this.vitesseActuelle < this.vitesseMax Alors
this.vitesseActuelle = this.vitesseActuelle + 1
FinSi
FinFonction
Fonction vitesseDown(): NULL
Si vitesseActuelle > 1 Alors
this.vitesseActuelle = this.vitesseActuelle - 1
FinSi
FinFonction
FinClasse
## Exo 2
Ecrire un programme qui permet à un client d'ajouter plusieurs voitures à un panier.
Afficher la liste des voitures.
Afficher le total.
### Ma version
Debut Exo 2
Classe Voiture
var couleur: chaineCaractere
var marque: chaineCaractere
var puissance: entier
var vitesseMax: entier
var vitesseActuelle: entier
var prix: reel
Fonction Voiture(): Voiture
this.Voiture("noire", "renault", 100, 6)
FinFonction
Fonction Voiture(var couleur: chaineCaractere, var marque: chaineCaractere, puissance: entier, var vitesseMax: entier, prix: reel): Voiture
this.couleur = couleur
this.marque = marque
this.puissance = puissance
this.vitesseMax = vitesseMax
this.vitesseActuelle = 0
this.prix = prix
FinFonction
Fonction vitesseUp(): NULL
Si this.vitesseActuelle < this.vitesseMax Alors
this.vitesseActuelle = this.vitesseActuelle + 1
FinSi
FinFonction
Fonction vitesseDown(): NULL
Si vitesseActuelle > 1 Alors
this.vitesseActuelle = this.vitesseActuelle - 1
FinSi
FinFonction
Fonction getPrix(): reel
retourne this.prix
FinFonction
Fonction afficherVoiture(): NULL
afficherChaine(couleur)
afficherChaine(marque)
afficherEntier(puissance)
afficherEntier(vitesseMax)
afficherEntier(vitesseActuelle)
afficherReel(prix)
FinFonction
FinClasse
Classe Item
var v: Voiture
var quantite: entier
Fonction Item(var v: Voiture, var quantite: entier): Item
this.v = v
this.quantite = quantite
FinFonction
Fonction getVoiture(): Voiture
retourne this.v
FinFonction
Fonction getQuantite(): entier
retourne this.quantite
FinFonction
Fonction setVoiture(var v: Voiture): NULL
this.v = v
FinFonction
Fonction setQuantite(var quantite: entier)
this.quantite = quantite
FinFonction
FinClasse
Classe Panier
var tabItem: tableau[]: Item
var index: entier
var taille: entier
var total: reel
Fonction Panier()
this.index = 0
this.taille = 0
this.total = 0
FinFonction
Fonction ajouterItem(v: Voiture, quantite: entier): NULL
var itm: Item
Debut
itm = nouveau Item(v, quantite)
taille = taille + 1
redim(tabItem, taille)
tabItem[taille-1] = itm
FinFonction
Fonction retirerItem(var idx: entier): NULL
// Vérification si l'index passé est valide
Si ((idx >= 0) && (idx < taille)) Alors
Pour i allant de idx à taille par pas de 1 Faire
tabItem[i] = tabItem[i+1]
taille = taille - 1
redim(tabItem, taille)
FinPour
FinSi
FinFonction
Fonction afficherItems(): NULL
total = 0
Pour i allant de 0 à taille - 1 par pas de 1 Faire
tabItem[i].v.afficherVoiture()
afficherEntier(tabItem[i].quantite)
total = tabItem[i].v.getPrix()
FinPour
afficherReel(total)
FinFonction
FinClasse
var panier: Panier
var choix: char
// Variables liées à l'objet voiture
var v: Voiture
var couleur: chaineCaractere
var marque: chaineCaractere
puissance: entier
var vitesseMax: entier
prix: reel
// Variables nécessaires à l'objet Item
var quantite: entier
// Autre variables
var idx: entier
Debut
panier = nouveau Panier()
Faire
choix = saisirChar()
SelonQue
Cas 'a' // Ajout d'une voiture au panier
couleur: saisirChaine()
marque = saisirChaine()
puissance = saisirEntier()
vitesseMax = saisirEntier()
prix = saisirReel()
v = nouveau Voiture(couleur, marque, puissance, vitesseMax, prix)
quantite = saisirReel()
panier.ajouterItem(v,q)
FinCas
Cas 'r' // Retrait d'une voiture au panier
idx = saisirEntier()
panier.retirerItem(idx)
FinCas
Cas 'd' // Affichage des voitures du panier
panier.afficherItems()
FinCas
FinSelonQue
TantQue choix != '.'
FinFaire
Fin
## Correction
Debut Exo 2
Classe Voiture
var couleur: chaineCaractere
var marque: chaineCaractere
var puissance: entier
var vitesseMax: entier
var vitesseActuelle: entier
var prix: entier
Fonction Voiture(): Voiture
this.Voiture("noire", "renault", 100, 6)
FinFonction
Fonction Voiture(var couleur: chaineCaractere, var marque: chaineCaractere, puissance: entier, var vitesseMax: entier, prix: entier): Voiture
this.couleur = couleur
this.marque = marque
this.puissance = puissance
this.vitesseMax = vitesseMax
this.vitesseActuelle = 0
this.prix = prix
FinFonction
Fonction vitesseUp(): NULL
Si this.vitesseActuelle < this.vitesseMax Alors
this.vitesseActuelle = this.vitesseActuelle + 1
FinSi
FinFonction
Fonction vitesseDown(): NULL
Si vitesseActuelle > 1 Alors
this.vitesseActuelle = this.vitesseActuelle - 1
FinSi
FinFonction
FinClasse
var panier: tableau[]: Voiture
var nbPanier: entier
var inventaire: tableau[3]: Voiture
var total: entier
var choix: entier
Fonction creerInventaire(): tableau[]: Voiture
var inv: tableau[3]: Voiture
Debut
Pour i allant de 0 à 2 par pas de 1 Faire
inv[i] = nouveau Voiture(saisirChaine(), saisirChaine(), saisirEntier(), saisirEntier(), saisirEntier())
FinPour
Retourne inv
FinFonction
Fonction afficherVoiture(var v: Voiture): NULL
afficherChaine(v.marque)
afficherChaine(v.couleur)
afficherEntier(v.puissance)
afficherEntier(vitesseMax)
afficherEntier(v.prix)
FinFonction
Debut
inventaire = creerInventaire()
Faire
Pour i allant de 0 à 3 par pas de 1 Faire
afficherEntier(i)
afficherVoiture(inv[i])
FinPour
choix = saisir()
Si choix >= 0 && choix <= 2
nbPanier = nbPanier + 1
redim(panier, nbPanier)
panier[nbPanier -1] = nouveau Voiture(inv[choix].couleur, inv[choix].marque, inv[choix].puissance, inv[choix]..vitesseMax, inv[choix].prix)
FinSi
TantQue (choix >= 0 && choix < 3)
FinFaire
Pour i allant de 0 à nbPanier par pas de 1
afficherVoiture(panier[i])
total = total + panier[i].prix
FinPour
afficherEntier(total)
Fin
## Exo 3
Ecrire une classe de personnages de jeu. Un personnage à:
- nom
- PV
- ATK
- DEF
Ecrire un programme principal pour créer une équipe de 3 persos max
Afficher l'équipe
Ecrire un maximum de fonctions
### Ma Version
Debut Exo 3
Classe Personnage
var nom: chaineCaractere
var pv: entier
var atk: entier
var def: entier
Fonction Personnage(nom: chaineCaractere): Personnage
this.Personnage(nom, 100, 50, 50)
FinFonction
Fonction Personnage(nom: chaineCaractere, pv: entier, atk: entier, def: entier): Personnage
this.nom = nom
this.pv = pv
this.atk = atk
this.def = def
FinFonction
Fonction afficherPersonnage(): NULL
afficherChaine(this.nom)
afficherEntier(this.pv)
afficherEntier(this.atk)
afficherEntier(this.def)
FinFonction
FinClasse
var membresMax: entier
var equipe: tableau []: Personnage
var nbMembre: entier
var choix: char
Debut
membresMax = 3
nbMembre = 0
Faire
choix = saisirChar()
Si choix == 'a' Alors // Add
nbMembre = nbMembre + 1
redim(equipe, nbMembre)
equipe[nbMembre - 1] = nouveau Personnage(saisirChaine(), saisirEntier(), saisirEntier(), saisirEntier())
Sinon Si choix == 'd' Alors
Pour i allant de 0 à nbMembre - 1 par pas de 1 Faire
equipe[i].afficherPersonnage()
FinPour
FinSi
TantQue (nbMembre < membresMax && choix != '.')
FinFaire
Fin
### Correction
Debut Exo 3
Classe Personnage
var nom: chaineCaractere
var pv: entier
var atk: entier
var def: entier
Fonction Personnage(var nom: chaineCaractere): Personnage
this.nom = nom
this.pv = 10
this.atk = 20
this.def = 20
FinFonction
FinClasse
var compt: entier
var sortie: entier
var choix: chaineCaractere
var listePerso: tableau[4]: Personnage
Fonction affichage (var liste: tableau[4]: Personnage, compt: entier): NULL
Pour i de 0 à compt par pas de 1 Faire
afficherChaine(listePerso[i].nom)
afficherEntier(listePerso[i].pv)
afficherEntier(listePerso[i].atk)
afficherEntier(listePerso[i].def)
FinPour
FinFonction
Debut
sortie = 0
compt = 0
// Première boucle pour forcer la saisie minimale de deux persos)
Faire
listePerso[compt] = nouveau Personnage(saisirChaine())
compt = compt + 1
TantQue listePerso [1] == NULL
FinFaire
// Boucle complémentaire
Faire
choix = saisirChaine()
Si choix == "Sortir" Alors
affichage(listePerso, compt)
sortie = 1
Sinon
compt = compt + 1
listePerso[compt] = nouveau Personnage(saisirChaine())
FinSi
TantQue sortie == 0 || compt <=3
FinFaire
Fin
## Exo 4
Ecrire une classe Rectangle qui comprend des méthodes:
- calculer l'aire
- calculer le périmètre
- ajouter 2 rectangles -> Créer un rectangle englobant les deux (appelant plus celui donné en paramètres)
### Ma version
Debut Exo 4
Classe Rectangle
var x1: entier
var y1: entier
var x2: entier
var y2: entier
var largeur: entier
var hauteur: entier
Fonction abs(valeur: entier): entier
Si valeur < 0 Alors
valeur = 0 - valeur
FinSi
retourne valeur
FinFonction
Fonction valMin(v1: entier, v2: entier): entier
Si v2 < v1 Alors
retourne v2
FinSi
retourne v1
FinFonction
Fonction valMax(v1: entier, v2: entier): entier
Si v1 > v2 Alors
retourne v1
FinSi
retourne v2
FinFonction
Fonction Rectangle(x1: entier, y1: entier, x2: entier, y2: entier)
this.x1 = x1
this.y1 = y1
this.x2 = x2
this.y2 = y2
largeur = abs(x2 - x1)
hauteur = abs(y2 - y1)
FinFonction
Fonction calculerAire()
var largeur: entier
var hauteur: entier
Debut
retourne largeur * hauteur
FinFonction
Fonction calculerPerimetre()
retourne 2* (largeur + hauteur)
FinFonction
// J'ai mal compris l'énoncé. Il fallait juste ajouter les largeurs et les hauteurs
Fonction ajouterRectangle(rectangle: Rectangle): Rectangle
var xMin: entier
var yMin: entier
var xMax: entier
var yMax: entier
Debut
// Détermination du xMin
xMin = valMin(this.x1, this.x2)
xMin = valMin(xMin, rectangle.x1)
xMin = valMin(xMin, rectangle.x2)
// Détermination du yMin
yMin = valMin(this.y1, this.y2)
yMin = valMin (yMin, rectangle.y1)
yMin = valMin (yMin, rectangle.y2)
// Détermination du xMax
xMax = valMax(this.x1, this.x2)
xMax = valMax(xMax, rectangle.x1)
xMax = valMax(xMax, rectangle.x2)
// Détermination du yMax
yMax = valMax(this.y1, this.y2)
yMax = valMax(yMax, rectangle.y1)
yMax = valMax(yMax, rectangle.y2)
// Création du nouveau rectangle englobant
retourne nouveau Rectangle(xMin, yMin, xMax, yMax)
FinFonction
FinClasse
Debut
Fin
### Correction
Debut Exo 4
Classe Rectangle
var largeur: reel
var hauteur: reel
Fonction Rectangle(var largeur: reel, var hauteur: reel): Rectangle
this.largeur = largeur
this.hauteur = hauteur
FinFonction
Fonction getPerimetre(): reel
retourne 2* (largeur + hauteur)
FinFonction
Fonction getAire(): reel
retourne largeur * hauteur
FinFonction
Fonction add(var rect: Rectangle): NULL
largeur = largeur + rect.largeur
hauteur = hauteur + rect.hauteur
FinFonction
FinClasse
var choix: char
var rect: Rectangle
var rectAjout: Rectangle
Debut
rect = nouveau Rectangle(saisirReel(), saisirReel())
Faire
choix = saisirChar()
SelonQue choix
Cas 'A'
afficherReel(rect.largeur)
afficherReel(rect.hauteur)
FinCas
Cas '+'
rectAjout = nouveau Rectangle(saisirReel(), saisirReel())
rect.add(rectAjout)
FinCas
Cas 'P'
afficherReel(rect.getPerimetre())
FinCas
Cas 'S'
afficherReel(rect.getAire())
FinCas
FinSelonQue
TantQue choix != 'Q'
FinFaire
Fin
### Correction Vincent
Debut Exo 4
Structure PTS
var largeur
var hauteur
FinStructure
Classe Rectangle
var largeur: reel
var hauteur: reel
var P0: ^PTS
Fonction rectangle(var x: reel, var y: reel, var h: reel, var l: reel): Rectangle
P0 = malloc(PTS)
P0^.x = x
P0^.y = y
hauteur = h
largeur = l
FinFonction
Fonction Rectangle(): Rectangle
this.Rectangle(0,0,1,1)
FinFonction
Fonction ~Rectangle(): NULL
liberer(P0)
FinFonction
FinClasse
var toto: Rectangle
Debut
toto = nouveau Rectangle
// Reste de l'implémentation
Fin
[200106]
## Encapsulation
Les variables, fonctions et classes ont une accessibilité variable. Elles peuvent être soit privées, publiques ou restreintes.
Pour préciser ces accès ont introduit respectivement les mots-clé private, public et protected.
private → Inaccessible depuis l'extérieur de la classe
public → Accessible depuis l'extérieur de la classe
protected → Public pour les classes enfant. Privé pour les autres.
On accède à un attribut privé ou on le modifie avec des assesseurs (getter) et des modificateurs (setter). D'où le nom d'encapsulation (utilisation de méthodes intermédiaires).
Classe Personnage
private var hp: entier
public var nom: chaineCaractere
public Fonction Personnage(var hp: entier, var nom: chaineCaractere): Personnage
this.hp = hp
this.nom = nom
FinFonction
public Fonction Personnage(): Personnage
this.Personnage(100, "Perso")
FinFonction
public Fonction getHp(): entier
retourne hp
FinFonction
FinClasse
Classe Mage herite Personnage
public var mp: entier
public Fonction Mage(var nom: chaineCaractere): Mage
base(20,nom)
FinFonction
...
FinClasse
var p: Personnage
var m: Mage
Debut
p = nouveau Personnage()
m = nouveau Mage("toto")
afficherEntier(p.getHp())
afficherChaine(p.nom)
afficherEntier(mp)
afficherChaine(m.nom)
Fin
Classe Guerrier herite Personnage
private var atk: entier
public Fonction Guerrier(var nom: chaineCaractere): Guerrier
this.Guerrier(nom, 1000, 92)
FinFonction
public Fonction Guerrier(var nom: chaineCaractere, var hp: entier, var atk: entier): Guerrier
base(hp, nom)
setAtk(atk)
FinFonction
public Fonction getAtk(): entier
retourne this.atk
FinFonction
public Fonction setAtk(var atk: entier): NULL
this.atk = atk
FinFonction
FinClasse
## EXO 5
Ecrire une classe qui représente un compte bancaire.
Comprend une méthode qui permet d'ajouter des intérets.
Ecrire un programme qui
- affiche le solde.
- procède au versement + intérets
- procède au retrait + intérets
N'autorise pas à être débiteur.
### Ma version
Debut Exo 5
Classe CompteBancaire
private var solde: reel
private interet: reel // En pourcentage. ex: 2 pour 2%
public Fonction CompteBancaire(var solde: reel, var interet: reel): CompteBancaire
this.solde = solde
this.interet = interet
FinFonction
public Fonction getSolde(): reel
retourne this.solde
FinFonction
public Fonction setSolde(var solde: entier): NULL
this.solde = solde
FinFonction
private Fonction getInterets(): reel
var taux: reel
Debut
taux = interet /100
retourne solde * taux
FinFonction
public Fonction depot(var somme: reel): NULL
solde = solde + somme + getInterets()
FinFonction
public Fonction retrait(var somme: reel): NULL
Si somme > solde Alors
solde = 0 // On permet le retrait à hauteur du solde.
Sinon
solde = solde - somme + getInterets()
FinFonction
FinClasse
public var choix: char
public var cb: CompteBancaire
Debut
cb = nouveau CompteBancaire(1000, 0.25)
Faire
choix = saisirChar()
SelonQue choix
Cas 'a' // Affichage
afficherReel(cb.getSolde())
FinCas
Cas 'd' // Dépôt
cb.depot(saisirReel())
FinCas
Cas 'r' // Retrait
cb.retrait(saisirReel())
FinCas
FinSelonQue
TantQue choix = '.'
FinFaire
Fin
## Exo 6
Un service hospitalier gère les fiches de ses patients. Il contiennent:
- Nom
- Prénom
- Date de naissance (chaine de caractères)
Si le patient est mineur, il y a ajout d'un nom et prénom de tuteur légal
Si le patient est une femme, on ajoute un nom de jeune fille.
Debut Exo 6
Classe Personne
private var nom: chaineCaractere
private var prenom: chaineCaractere
private var dateNaissance: chaineCaractere
public Fonction Personne(var nom: chaineCaractere, var prenom: chaineCaractere): Personne
setNom(nom)
setPrenom(prenom)
FinFonction
public Fonction Personne(var nom: chaineCaractere, var prenom: chaineCaractere, var dateNaissance: chaineCaractere): Personne
this.Personne(nom, prenom)
setDateNaissance(dateNaissance)
FinFonction
public Fonction getNom():chaineCaractere
retourne this.nom
FinFonction
public Fonction getPrenom():chaineCaractere
this.prenom
FinFonction
public Fonction getDateNaissance():chaineCaractere
retourne this.dateNaissance
FinFonction
public Fonction setNom(var nom: chaineCaractere): NULL
this.nom = nom
FinFonction
public Fonction setPrenom(var prenom: chaineCaractere): NULL
this.prenom = prenom
FinFonction
public Fonction setDateNaissance(var dateNaissance: chaineCaractere): NULL
this.dateNaissance = dateNaissance
FinFonction
FinClasse
Classe Femme herite Personne
private var nomJF: chaineCaractere
public Fonction Femme(var nom: chaineCaractere, var prenom: chaineCaractere, var dateNaissance: chaineCaractere, var nomJF: chaineCaractere): Femme
base(nom, prenom, dateNaissance)
setNJF(nomJF)
FinFonction
public Fonction getNJF(): chaineCaractere
retourne this.nomJF
FinFonction
public Fonction setNJF(var nomJF: chaineCaractere): NULL
this.nomJF = nomJF
FinFonction
FinClasse
Classe Mineur herite Personne
private var tuteur: Personne
public Fonction Mineur(var nom: chaineCaractere, var prenom: chaineCaractere, var dateNaissance: chaineCaractere, var tuteur: Personne): Mineur
base(nom, prenom)
setTuteur(tuteur)
FinFonction
public Fonction getTuteur(): Personne
retourne this.tuteur
FinFonction
public Fonction setTuteur(var tuteur: Personne): NULL
this.tuteur = tuteur
FinFonction
FinClasse
Debut
Fin
[200108]
## Exo 7
Faire une calculatrice.
Debut Exo 7
Classe Calculatrice
private var resultat: reel
public Fonction Calculatrice(): Calculatrice
resultat = 0
FinFonction
public Fonction add(var operande: reel): reel
retourne resultat + operande
FinFonction
public Fonction sub(var operande: reel): reel
retourne resultat - operande
FinFonction
public Fonction mult(var operande: reel): reel
retourne resultat * operande
FinFonction
public Fonction div(var operande: reel): reel
Si operande != 0 Alors
retourne resultat / operande
FinSi
afficherChaine("Division par 0 impossible. Opération non réalisée.")
retourne resultat
FinFonction
public Fonction truc(var): NULL
FinFonction
FinClasse
var choix: char
var operande: reel
var calc: Calculatrice
Debut
calc = nouveau Calculatrice()
Faire
choix = saisieChar()
operande = saisirReel()
SelonQue choix
Cas 'a'
resultat = calc.add(operande)
FinCas
Cas 's'
resultat = calc.sub(operande)
FinCas
Cas 'm'
resultat = calc.mult(operande)
FinCas
Cas 'd'
resultat = calc.div(operande)
FinCas
FinSelonQue
TantQue choix != 'q'
FinFaire
Fin
### Correction
Classe Nombre
private var n: entier
public Fonction Nombre(var n: entier): Nombre
this.n = n
FinFonction
public Fonction add(var op: Nombre): Nombre
retourne nouveau op(this.n + op.n)
FinFonction
public Fonction supp(var op: Nombre): Nombre
retourne nouveau op(this.n - op.n)
FinFonction
public Fonction mult(var op: Nombre): Nombre
retourne nouveau op(this.n * op.n)
FinFonction
public Fonction div(var op: Nombre): Nombre
Si op.n != 0 Alors
retourne nouveau op(this.n - op.n)
FinSi
retourne NULL
FinFonction
public Fonction toString(): chaineCaractere
retourne this.n.toString() // ou ""+N ← Cast implicite de int vers String
FinFonction
FinClasse
## Exo 8
Ecrire une classe Vecteur2D définie par 2 valeurs x et y qui permet de faire des opérations sur vecteurs en entier ou réel.