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