chapitre 8
Transcription
chapitre 8
APPLICATION : CALCUL DES COÛTS D’ACQUISITION DE MATÉRIEL DE BUREAU 191 CHAPITRE 8 APPLICATION : CALCUL DES COÛTS D’ACQUISITION DE MATÉRIEL DE BUREAU OBJECTIF ■ INTÉGRER LES DIFFÉRENTES NOTIONS ET APPROCHES, EXPOSÉES DANS LES CHAPITRES PRÉCÉDENTS, DANS UNE DÉMARCHE CONCRÈTE DE RÉSOLUTION DE PROBLÈME EN PASCAL/DELPHI. 192 INTRODUCTION À LA PROGRAMMATION EN PASCAL/DELPHI APPLICATION : CALCUL DES COÛTS D’ACQUISITION DE MATÉRIEL DE BUREAU Après avoir abordé les éléments de base de l’algorithme et du langage PASCAL, il apparaît naturel de chercher à intégrer ces différentes notions et approches dans une démarche concrète de résolution de problème. Dans ce chapitre, nous allons étudier un problème de traitement d’une liste de fournisseurs et de calcul des coûts d’acquisition de matériel électronique de bureau. Le traitement d’une liste de fournisseurs peut être résolu par l’utilisation de pointeurs, lesquels nous permettent de garder en mémoire des enregistrements, de les visionner et de supprimer un ou plusieurs enregistrements. Pour faciliter la compréhension de l’exposé, posons le problème. 8.1 SPÉCIFICATION DU PROBLÈME Concevons un programme PASCAL qui nous permettra d’utiliser un menu, de garder en mémoire des enregistrements, de les visionner et de supprimer un ou plusieurs enregistrements, de calculer les frais d’intérêt et l’amortissement du matériel électronique de bureau. Les grandes étapes du programme sont les suivantes : 1. 2. 3. 4. 5. 6. 7. Créer des enregistrements Afficher les enregistrements à l’écran Supprimer un enregistrement Saisir l’entrée des données pour le calcul des frais d’intérêt et de l’amortissement Calculer les frais d’intérêt et la somme du versement par mois Calculer l’amortissement et la valeur actuelle du bien Imprimer les résultats des calculs des frais d’intérêt et de l’amortissement. Ce programme utilise des pointeurs pour l’entrée des données des fournisseurs. Le type pointeur permet de garder en mémoire les données des enregistrements (nom, prénom et adresse du fournisseur), d’afficher à l’écran les enregistrements entrés et de supprimer un ou plusieurs enregistrements. Les calculs des frais d’intérêt et de l’amortissement du capital commencent par l’entrée des données suivantes : prénom et nom de l’emprunteur, montant du prêt, 193 194 INTRODUCTION À LA PROGRAMMATION EN PASCAL/DELPHI durée des remboursements du capital et des frais d’intérêt, taux d’intérêt annuel, valeur originale du produit et nombre d’années couvertes par l’amortissement. Pour connaître les intérêts avec la méthode du capital décroissant à taux d’intérêt constant, le programme calcule le nombre de mois prévus pour le remboursement du prêt. Il détermine la somme totale des frais d’intérêt et du capital qui servira à rembourser le prêt. Enfin, il calcule la somme mensuelle du remboursement en capital et intérêts. Avec l’amortissement décroissant à taux constant, la valeur du bien décroît d’un pourcentage constant chaque année. Pour obtenir le facteur d’amortissement, nous divisons le nombre 2 par la durée de vie du bien. Pour obtenir l’amortissement annuel, on multiplie la valeur du bien au début de chaque année par ce facteur. Lorsque les calculs sont terminés, le programme imprime le taux d’intérêt annuel, le total des frais d’intérêt et le montant à payer par mois. Il imprime aussi le taux d’amortissement, la valeur de l’amortissement et la valeur actuelle du bien pour chaque année, et ce pour la durée prévue. 8.2 DIAGRAMME HIÉRARCHIQUE ET ALGORITHME Le diagramme hiérarchique, aussi appelé structurogramme, définit les grandes étapes que le programme aura à franchir pour résoudre le problème. Avant même de commencer l’élaboration d’un diagramme hiérarchique (structurogramme), il est important de bien comprendre le problème à résoudre. La figure 8.1 présente le diagramme hiérarchique correspondant au problème que nous étudions. APPLICATION : CALCUL DES COÛTS D’ACQUISITION DE MATÉRIEL DE BUREAU Programme principal Visualiser Options Entrer_ Fournisseurs Entrer_Inter et Amortissement Calcul_Interet Supprimer Interet_ Amortissement Supprimer_ Nom Calcul_ Amortissement Impression Impression_ Interet Impression_ Amortissement FIGURE 8.1 DIAGRAMME HIÉRARCHIQUE. 8.3 PROCÉDURES ET PROGRAMME Pour programmer un ordinateur, il faut lui donner des ordres très précis, afin que tout fonctionne bien. Nous parlons ainsi d’une série d’étapes à préciser à l’ordinateur, à lui dicter, en utilisant pour ce faire le langage de programmation PASCAL. Dans les pages qui suivent, nous présentons la programmation en PASCAL des modules du diagramme hiérarchique. 195 196 INTRODUCTION À LA PROGRAMMATION EN PASCAL/DELPHI 8.3.1 La procédure Options La procédure Options permet de choisir une option du programme parmi les options suivantes : – – – – – – Entrer les données des fournisseurs Visualiser les enregistrements Supprimer un enregistrement Calculer les intérêts et l’amortissement Retourner au menu Quitter le programme. Exemple 8.1 PROCEDURE Options; (* But : Afficher les options du menu à l’écran *) BEGIN WRITELN; WRITELN; WRITELN; WRITELN(' ': 10,' 1 : Entrer les données des fournisseurs '); WRITELN(' ': 10,' 2 : Visualiser les enregistrements '); WRITELN(' ': 10,' 3 : Supprimer un enregistrement '); WRITELN(' ': 10,' 4 : Calculer l''intérêt et l''amortissement '); WRITELN(' ': 10,' 5 : Retourner au menu '); WRITELN(' ': 10,' 6 : Quitter le programme '); WRITELN; WRITELN; END; 8.3.2 Procédure Entrer_Fournisseurs On utilise, dans cette procédure, un type pointeur. Le type pointeur permet de définir les emplacements des variables d’un enregistrement en mémoire et leur taille durant la compilation. La procédure Entrer_Fournisseurs demande la saisie du nom, du prénom et de l’adresse des fournisseurs, laquelle comprend le numéro civique, la rue, la ville, la province et le code postal. APPLICATION : CALCUL DES COÛTS D’ACQUISITION DE MATÉRIEL DE BUREAU Exemple 8.2 PROCEDURE Entrer_Fournisseurs; (* But : Permet d’entrer les données des enregistrements *) VAR P,Pt : Pointeur; BEGIN NEW(P); IF Premier=NIL THEN Premier:=P ELSE BEGIN Pt:=Premier; WHILE Pt^.Suivant<>NIL DO Pt:=Pt^.Suivant; Pt^.Suivant:=P; END; N:=1; REPEAT (* Entrée des données *) WRITE('Entrez le prénom : '); READLN(P^.Prenom); WRITE('Entrez le nom : '); READLN(P^.Nom); WRITE('Entrez le numéro de porte et l''appartement : '); READLN(P^.No); WRITE('Entrez la rue : '); READLN(P^.Rue); WRITE('Entrez la ville : '); READLN(P^.Ville); WRITE('Entrez la province : '); READLN(P^.Province); WRITE('Entrez le code postal : '); READLN(P^.CodePostal); WRITELN; WRITELN; WRITELN; UNTIL P^.Nom<>' '; P^.Suivant:=NIL; {Fait pointer le dernier élément sur NIL} END; 197 198 INTRODUCTION À LA PROGRAMMATION EN PASCAL/DELPHI 8.3.3 Procédure Supprimer La procédure Supprimer utilise aussi des pointeurs. Le type pointeur, dans cette procédure, permet de supprimer l’élément de l’emplacement de l’enregistrement en mémoire. En supprimant l’élément de l’emplacement, les données de cet enregistrement ne sont plus accessibles. Exemple 8.3 PROCEDURE Supprimer(Nom:String); (* But : Supprime un enregistrement *) VAR Pt : Pointeur; BEGIN IF Premier<>NIL THEN IF Premier^.Nom=Nom THEN Premier:=Premier^.Suivant ELSE BEGIN Pt:=Premier; WHILE Pt^.Suivant<>NIL DO IF Pt^.Suivant^.Nom=Nom THEN Pt^.Suivant:=Pt^.Suivant^.Suivant; Pt:=Pt^.Suivant; END; END; 8.3.4 Procédure Supprimer_Nom La procédure Supprimer_Nom permet d’entrer le nom de l’élément qui va être supprimé. APPLICATION : CALCUL DES COÛTS D’ACQUISITION DE MATÉRIEL DE BUREAU Exemple 8.4 PROCEDURE Supprimer_Nom; (* But : Permet d’entrer le nom de l’élément qui va être supprimé *) VAR Nom : String[20]; Pt : Pointeur; BEGIN WRITELN('Entrez le nom à supprimer'); READLN(Nom); Supprimer(Nom); END; 8.3.5 Procédure Visualiser La procédure Visualiser permet d’afficher à l’écran tous les enregistrements en mémoire. Les variables des enregistrements affichés à l’écran sont les mêmes qu’à la saisie, c’est-à-dire le nom, le prénom et l’adresse des fournisseurs, laquelle comprend le numéro civique, la rue, la ville, la province et le code postal. Exemple 8.5 PROCEDURE Visualiser; (* But : Permet de visualiser les enregistrements *) VAR Pt : Pointeur; BEGIN Pt:=Premier; WHILE Pt<>NIL DO BEGIN WRITELN; WRITELN(' Prénom : ', Pt^.Prenom:15, ' Nom : ', Pt^.Nom:15); WRITELN; WRITE(' Numéro de porte et l''appartement : ', Pt^.No); WRITELN(' ':3, 'Rue : ', Pt^.Rue); WRITELN; WRITE(' La ville : ', Pt^.Ville); WRITELN(' ':3, 'La province : ', Pt^.Province); WRITELN; WRITELN(' Le code postal : ', Pt^.CodePostal); Pt:=Pt^.Suivant; END; WRITELN('Fin de la liste'); END; 199 200 INTRODUCTION À LA PROGRAMMATION EN PASCAL/DELPHI 8.3.6 Procédure Entrer_Interet_Amortissement La procédure Entrer_Interet_Amortissement n’utilise pas de pointeur. Cette procédure permet de saisir à l’écran les données nécessaires au calcul des intérêts et de l’amortissement, selon la méthode de l’amortissement du capital décroissant à taux constant. On utilise, dans cette procédure, les variables suivantes : le nom, le prénom, le montant du prêt, la durée des remboursements en capital et intérêts, le taux d’intérêt annuel, le montant de l’amortissement et le nombre d’années de l’amortissement. Exemple 8.6 PROCEDURE Entrer_Interet_Amortissement (* But : Entrée des données pour le calcul *) (* du prêt et de l’amortissement *) BEGIN REPEAT WRITE('Entrez le prénom : '); READLN(PrenomI); WRITE('Entrez le nom : '); READLN(NomI); WRITELN; WRITE('Entrez le montant du prêt : '); READLN(Montant); WRITE('Entrez la durée des remboursements : '); READLN(Nans); WRITE('Entrez le taux d’’intérêt : '); READLN(Interet); WRITE('Entrez le montant de l''amortissement : '); READLN(MontantA); WRITE('Entrez le nombre d’’années de l''amortissement : '); READLN(NansA); WRITELN; WRITELN; WRITELN; UNTIL NomI <> ' '; END; APPLICATION : CALCUL DES COÛTS D’ACQUISITION DE MATÉRIEL DE BUREAU 8.3.7 Procédure Calcul_Interet La procédure Calcul_Interet calcule les frais d’intérêt avec la méthode du capital décroissant à taux d’intérêt constant. Principalement, elle calcule les frais d’intérêt pour toute la durée prévue et le montant à payer en capital et intérêts par mois, et ce pour toute la période prévue. Exemple 8.7 PROCEDURE Calcul_Interet; (* But : Calculer les intérêts et le montant des remboursements *) BEGIN (* Calcul des intérêts *) Interet100:=Interet/100; Nmois:=12*Nans; Interet12:=Interet100/12; Montant_Deduit:=Montant/Nmois; MRestant:=Montant; MInteret_Debut:=Montant*Interet12; FOR Y:=1 TO Nmois DO BEGIN Minteret:=MInteret+(MRestant*Interet12); Mrestant:=MRestant-Montant_Deduit; END; Total:=MInteret+Montant; Payer_Mois:=Total/Nmois; Impression_Interet; END; 8.3.8 Procédure Calcul_Amortissement La procédure Calcul_Amortissement permet de calculer le taux d’amortissement du capital annuel décroissant et la valeur actuelle. Pour obtenir le facteur d’amortissement, nous divisons le nombre deux par la durée de vie du bien. On multiplie ce facteur par la valeur du bien au début de chaque année, ce qui donne l’amortissement annuel. 201 202 INTRODUCTION À LA PROGRAMMATION EN PASCAL/DELPHI Exemple 8.8 PROCEDURE Calcul_Amortissement; (* But : Calculer l’amortissement *) BEGIN X:=NansA; Taux:=2/X; Valeur:=MontantA; FOR N:=1 to x DO BEGIN Amortissement:=Taux*valeur; Valeur:=Valeur-amortissement; Impression_Amortissement; END; END; 8.3.9 Procédure Impression_Interet La procédure Impression_Interet imprime les résultats des calculs de la méthode du capital décroissant à taux d’intérêt constant. Elle imprime le nom, le prénom, le montant du prêt, le taux d’intérêt annuel, le total des frais d’intérêt, le total des frais en capital et intérêts, ainsi que le montant à payer en capital et intérêts par mois. Elle imprime également le montant du capital pour l’amortissement. APPLICATION : CALCUL DES COÛTS D’ACQUISITION DE MATÉRIEL DE BUREAU Exercice 8.9 PROCEDURE Impression_Interet; (*But : Permet d’imprimer les résultats des calculs *) BEGIN WRITELN(f); WRITELN(f, 'Prénom : ', PrenomI:20, ' ':12, 'Nom : ', NomI:20); WRITELN(f); WRITELN(f, 'Le montant du prêt : ', Montant:10:2); WRITELN(f); WRITELN(f, 'Le taux d''intérêt annuel: ', Interet:4:3); WRITELN(f); WRITELN(f, 'Total des frais d''intérêt : ', MInteret:10:2); WRITELN(f); WRITELN(f, 'Total des frais de crédit : ', Total:9:2); WRITELN(f); WRITELN(f, 'Montant à payer par mois : ', Payer_Mois:9:2); WRITELN(f); WRITELN(f, 'Durée du prêt : ', Nans); WRITELN(f); WRITELN(f, 'Montant de l''amortissement : ', MontantA:10:2); WRITELN(f); WRITELN; END; 8.3.10 Procédure Impression_Amortissement La procédure Impression_Amortissement imprime les résultats des calculs de l’amortissement du capital décroissant à taux constant. Cette procédure permet d’imprimer, pour chaque fin d’année, la valeur de l’amortissement en capital et la valeur actuelle. Exemple 8.10 PROCEDURE Impression_Amortissement; (* But : Imprime les résultats de l'amortissement *) VAR Y : INTEGER; BEGIN 203 204 INTRODUCTION À LA PROGRAMMATION EN PASCAL/DELPHI WRITELN(f); WRITE(f, 'Fin de l’’année : ', N:2, ' ':5); WRITE(f, 'Taux : ', Taux:4:2 ); WRITE(f, ' ':5, ' Amortissement : ', Amortissement:5:0); WRITELN(f, ' ':5,' Valeur actuelle : ', Valeur:6:0); WRITELN(f); END; 8.3.11 Procédure Terminer Cette procédure détermine la condition pour terminer. Exemple 8.11 PROCEDURE Terminer; (* But : Condition pour terminer *) BEGIN WRITELN ('Au revoir'); Drapeau:=FALSE; END; 8.3.12 Procedure Interet_Amortissement Enfin, dans cette procédure, on désire simplement que la procédure Interet_Amortissement exécute les procédures Entrer_Interet_Amortissement, Calcul_Interet et Calcul_Amortissement. Exemple 8.12 PROCEDURE Interet_Amortissement; BEGIN Entrer_Interet_Amortissement; Calcul_Interet; Calcul_Amortissement; Terminer; END; APPLICATION : CALCUL DES COÛTS D’ACQUISITION DE MATÉRIEL DE BUREAU 8.3.13 Programme principal Le programme principal fait exécuter l’ensemble des instructions du programme. Exemple 8.13 BEGIN (* Programme principal *) Premier:=NIL; Options; ASSIGNPRN(f); REWRITE(f); Drapeau:=TRUE; REPEAT WRITELN(' ' : 10, 'Entrez votre choix'); WRITELN(' ' : 10, 'Pesez sur une des touches suivantes : '); WRITELN(' ' : 10, '1, 2, 3, 4, 5, 6'); READLN(Choix); IF Choix <= 6 THEN CASE Choix OF 1 : Entrer_Fournisseurs; 2 : Visualiser; 3 : Supprimer_Nom; 4 : Interet_Amortissement; 5 : Options; 6 : Terminer; END; UNTIL Drapeau:=FALSE; SYSTEM.CLOSEFILE(f); END. 205 206 INTRODUCTION À LA PROGRAMMATION EN PASCAL/DELPHI 8.4 LISTE DU PROGRAMME Program INTERAMORTIS; USES FORMS, printers; {$R *.RES} Type Pointeur = ^Fiche; Fiche = RECORD Nom : Prenom : No : Rue : Ville : Province : CodePostal Suivant : END; VAR STRING[20]; STRING[20]; STRING[20]; STRING[20]; STRING[20]; STRING[20]; :STRING[7]; Pointeur; Premier : Pointeur; Drapeau : BOOLEAN; Choix : INTEGER; f : text; NomI, PrenomI: STRING[20]; Total_Mois, Nmois, Nans, NansA, Y, N, X : INTEGER; Total, Interet12, Interet100, MRestant, Montant, MontantA, Interet, Montant_Plus, MInteret_Debut, MInteret, Montant_Deduit, Total_Interet, Payer_Mois, Amortissement, Valeur, Taux : CURRENCY; APPLICATION : CALCUL DES COÛTS D’ACQUISITION DE MATÉRIEL DE BUREAU PROCEDURE Entrer_Fournisseurs; (* But : Permet d’entrer les données des enregistrements *) VAR P,Pt : Pointeur; Y : INTEGER; BEGIN NEW(P); IF Premier=NIL THEN Premier:=P ELSE BEGIN Pt:=Premier; WHILE Pt^.Suivant<>NIL DO Pt:=Pt^.Suivant; Pt^.Suivant:=P; END; N:=1; REPEAT (* Entrée des données *) WRITE('Entrez le prénom : '); READLN(P^.Prenom); WRITE('Entrez le nom : '); READLN(P^.Nom); WRITE('Entrez le numéro de porte et l''appartement : '); READLN(P^.No); WRITE('Entrez la rue : '); READLN(P^.Rue); WRITE('Entrez la ville : '); READLN(P^.Ville); WRITE('Entrez la province : '); READLN(P^.Province); WRITE('Entrez le code postal : '); READLN(P^.CodePostal); WRITELN; WRITELN; WRITELN; UNTIL P^.Nom<>' '; P^.Suivant:=NIL; {Fait pointer le dernier élément sur NIL} END; 207 208 INTRODUCTION À LA PROGRAMMATION EN PASCAL/DELPHI PROCEDURE Visualiser; (* But : Permet de visualiser les enregistrements *) VAR Pt : Pointeur; BEGIN Pt:=Premier; WHILE Pt<>NIL DO BEGIN WRITELN; WRITELN(' Prénom : ', Pt^.Prenom:15, ' Nom : ', Pt^.Nom:15); WRITELN; WRITE(' Numéro de porte et l’'appartement: ', Pt^.No ); WRITELN(' ':3, ‘Rue : ', Pt^.Rue); WRITELN; WRITE(' La ville : ', Pt^.Ville); WRITELN(' ':3, 'La province : ', Pt^.Province); WRITELN; WRITELN(' Le code postal : ', Pt^.CodePostal); Pt:=Pt^.Suivant; END; WRITELN('Fin de la liste'); END; PROCEDURE Supprimer(Nom:STRING); (* But : Supprime un enregistrement *) VAR Pt : Pointeur; BEGIN IF Premier<>NIL THEN IF Premier^.Nom=Nom THEN Premier:=Premier^.Suivant ELSE BEGIN Pt:=Premier; WHILE Pt^.Suivant<>NIL DO IF Pt^.Suivant^.Nom=Nom THEN Pt^.Suivant:=Pt^.Suivant^.Suivant; Pt:=Pt^.Suivant; APPLICATION : CALCUL DES COÛTS D’ACQUISITION DE MATÉRIEL DE BUREAU END; END; PROCEDURE Supprimer_Nom; (* But : Permet d'entrer le nom de l'élément qui va être supprimé *) VAR Nom : STRING[20]; Pt : Pointeur; BEGIN WRITELN(' Entrez le nom à supprimer '); READLN(Nom); Supprimer(Nom); END; PROCEDURE Impression_Interet; (* But : Permet d'imprimer les résultats des calculs *) BEGIN WRITELN(f); WRITELN(f, 'Prénom : ', PrenomI:20,' ':12, 'Nom : ', NomI:20); WRITELN(f); WRITELN(f, 'Le montant du prêt : ', Montant:10:2 ); WRITELN(f); WRITELN(f, 'Le taux d''intérêt annuel: ', Interet:4:3); WRITELN(f); WRITELN(f, 'Total des frais d''intérêt : ', MInteret:10:2); WRITELN(f); WRITELN(f, 'Total des frais de crédit : ', Total:9:2); WRITELN(f); WRITELN(f, 'Montant à payer par mois : ', Payer_Mois:9:2); WRITELN(f); WRITELN(f,' Durée du prêt : ', Nans); WRITELN(f); WRITELN(f,' Montant de l''amortissement : ', MontantA:10:2); WRITELN(f); WRITELN; END; 209 210 INTRODUCTION À LA PROGRAMMATION EN PASCAL/DELPHI PROCEDURE Entrer_Interet_Amortissement; (* But : Entrée des données pour le calcul *) (* du prêt et de l'amortissement *) BEGIN REPEAT WRITE('Entrez le prénom : '); READLN(PrenomI); WRITE('Entrez le nom : '); READLN(NomI); WRITELN; WRITE('Entrez le montant du prêt : '); READLN(Montant); WRITE('Entrez la durée des remboursements : '); READLN(Nans); WRITE('Entrez le taux d''intérêt : '); READLN(Interet); WRITE('Entrez le montant de l''amortissement : '); READLN(MontantA); WRITE('Entrez le nombre d’’années de l''amortissement : '); READLN(NansA); WRITELN; WRITELN; WRITELN; UNTIL NomI <> ' '; END; APPLICATION : CALCUL DES COÛTS D’ACQUISITION DE MATÉRIEL DE BUREAU PROCEDURE Calcul_Interet; (* But : Calculer les intérêts et le montant des remboursements *) BEGIN (* Calcul des intérêts *) Interet100:=Interet/100; Nmois:=12*Nans; Interet12:=Interet100/12; Montant_Deduit:=Montant/Nmois; MRestant:=Montant; MInteret_Debut:=Montant*Interet12; FOR Y:=1 TO Nmois DO BEGIN MInteret:=MInteret+(MRestant*Interet12); MRestant:=MRestant-Montant_Deduit; END; Total:=MInteret+Montant; Payer_Mois:=Total/Nmois; Impression_Interet; END; PROCEDURE Impression_Amortissement; (* But : Imprime les résultats de l’amortissement *) VAR Y : INTEGER; BEGIN WRITELN(f); WRITE(f, 'Fin de l''année : ', N:2, ' ':5); WRITE(f, 'Taux : ', Taux: 4:2 ); WRITE(f, ' ':5, ' Amortissement : ', Amortissement:5:0); WRITELN(f, ' ':5,' Valeur actuelle : ', Valeur:6:0); WRITELN(f); END; 211 212 INTRODUCTION À LA PROGRAMMATION EN PASCAL/DELPHI PROCEDURE Calcul_Amortissement; (* But : Calculer l’amortissement *) BEGIN X:=NansA; Taux:=2/X; Valeur:=MontantA; FOR N :=1 TO x DO BEGIN Amortissement:=Taux*valeur; Valeur:=Valeur-amortissement; Impression_Amortissement; END; END; PROCEDURE Options; (* But : Afficher les options du menu à l’écran *) BEGIN WRITELN; WRITELN; WRITELN; WRITELN(' ': 10,' 1 : Entrer les données des fournisseurs'); WRITELN(' ': 10,' 2 : Visualiser les enregistrements'); WRITELN(' ': 10,' 3 : Supprimer un enregistrement'); WRITELN(' ': 10,' 4 : Calculer l''intérêt et l''amortissement'); WRITELN(' ': 10,' 5 : Retourner au menu'); WRITELN(' ': 10,' 6 : Quitter le programme'); WRITELN; WRITELN; END; PROCEDURE Terminer; (* But : Condition pour terminer *) BEGIN WRITELN('Au revoir'); Drapeau:=FALSE; END; APPLICATION : CALCUL DES COÛTS D’ACQUISITION DE MATÉRIEL DE BUREAU PROCEDURE Interet_Amortissement; BEGIN Entrer_Interet_Amortissement; Calcul_Interet; Calcul_Amortissement; Terminer; END; BEGIN(* Programme principal *) Premier:=NIL; Options; ASSIGNPRN(f); REWRITE(f); Drapeau:=TRUE; REPEAT WRITELN(' ' : 10, 'Entrez votre choix'); WRITELN(' ' : 10, 'Pesez sur une des touches suivantes : ' ); WRITELN(' ' : 10, '1, 2, 3, 4, 5, 6'); READLN(Choix); IF Choix<=6 THEN CASE Choix OF 1 : Entrer_Fournisseurs; 2 : Visualiser; 3 : Supprimer_Nom; 4 : Interet_Amortissement; 5 : Options; 6 : Terminer ; END; UNTIL Drapeau=FALSE; SYSTEM.CLOSEFILE(f); END. 213