APPLICATION : CALCUL DES COÛTS D ACQUISITION DE MATÉRIEL DE BUREAU



Documents pareils
Examen Médian - 1 heure 30

Corrigé des TD 1 à 5

Enseignement secondaire technique

Algorithmes et programmation en Pascal. Cours

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Programmation structurée et algorithmes de base en Pascal

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Document fonctionnel Prêts hypothécaires variables : évaluations des versements et les hypothèses

Cours d algorithmique pour la classe de 2nde

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Algorithmique & programmation

Le Système. QuickWrite. Cautionnements commerciaux. Guide d utilisateur. Utilisez la page de défilement pour en connaître davantage...

La clôture annuelle EBP V11

MODE D EMPLOI DU MODULE D E-COMMERCE

Cours Informatique Master STEP

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Organigramme / Algorigramme Dossier élève 1 SI

INSCRIPTION EN LIGNE ET PAIEMENT PAR CARTE DE CRÉDIT:

PUBLIPOSTAGE DANS WRITER

Programmer en JAVA. par Tama

Rapports d activités et financiers par Internet. Manuel Utilisateur

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

3 ème Partie : Vérification par tests

TP1 : Initiation à Java et Eclipse

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Ingénérie logicielle dirigée par les modèles

Calculateur de primes de l'ofsp Manuel

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Algorithmique et programmation : les bases (VBA) Corrigé

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

MINISTERE DE L ENSEIGNEMENT TECHNIQUE ET DE LA FORMATION PROFESSIONNELLE. (Pour l obtention du diplôme d analyste programmeur)

Compilation (INF 564)

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Guide d utilisation Billetterie FFR. Avril 2014 V0

OBLIGATIONS D ÉPARGNE DU CANADA GUIDE DE TRANSMISSION WEB oec.gc.ca PROGRAMME D ÉPARGNE-SALAIRE 20$ 40$ 80$ 50 $ 30$ WEBGUIDE-14

Vue d ensemble de Windows PowerShell

Comment accéder à d Internet Explorer

PRÉSENTÉ PAR : NOVEMBRE 2007

Guide plate-forme irptesting.com

Solutions en ligne Guide de l utilisateur

CAISSE. Ce logiciel nécessite une licence pour fonctionner.

Générateur de Croisades AIDE EXPRESS. Votre première visite? Vous devez créer un compte d auteur.

Utilitaires méconnus de StrataFrame

OCL - Object Constraint Language

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Pensionnaire. Nom : Prénom : Date de naissance : No AVS/AI : Origine : Etat civil : Domicile légal : Rue : Etablissement de placement :

Retour table des matières

Bernard HAMM, Évelyne LAVOISIER

GESTION WINPRO ** PRISE EN MAIN RAPIDE **

Propagation sur réseau statique et dynamique

MODULE DES ENCAISSEMENTS. Outil de comptabilisation et de transfert de revenus des établissements au Service des finances GUIDE TECHNIQUE

TRIGONOMETRIE Algorithme : mesure principale

GUIDE DE L UTILISATEUR DE CONNEXION HOOPP

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

Guide d utilisation pour W.access - Client

Création d installateurs pour Windows avec InnoSetup

1. Entrez le code client dans le champ << Code client >> si requis. Le code client est optionnel, on peut donc entrer simplement le nom du client.

Livret de stage Canadien: Formulaire d enregistrement de l expérience en architecture

GUIDE D UTILISATION. Gestion de compte. à destination des CFA

Manuel de l utilisateur à l intention des candidats externes

SIGAFINANCE. Quoi de neuf et correctifs Version (20 février 2015)

Création d un site Internet

Atelier n 12 : Assistance à distance

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Guide concernant l accès au service TFP Internet pour les. notaires, institutions financières et les représentants légaux.

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var - E mail : bij@agasc.fr / Tel : CONSIGNE N 1 :

Nom de la procédure : Utilisation du nouveau système d impression Produit(s) affecté(s) :

Guide de démarrage rapide Centre de copies et d'impression Bureau en Gros en ligne

GUIDE D'UTILISATION DU LOGICIEL DU TRIDENT GRAPHIQUE : TRG_REPORT

ACCUEIL / Introduction. Introduction. Présentation de StarBoard Software Éléments de l écran Guide de démarrage rapide

CAPTURE DES PROFESSIONNELS

MANUEL OPEN PRO CHAMBRES D HOTES

Application Stage Gestion des Conventions de Stages et des Offres de stages SOMMAIRE

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

1. Structure d'un programme FORTRAN 95

Les bases de données. Se familiariser avec Base. Figure 1.1A Ouvre le fichier dont tu as besoin. Lance OpenOffice Base.

Manuel d utilisation du logiciel

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

Base de données Guide de l utilisateur

GUIDE D UTILISATION DU BROWSER DE BEYOND 20/20

Programmation C++ (débutant)/instructions for, while et do...while

NETWORK & SOFTWARE ENGINEERING MANUEL D UTILISATEUR. Logiciel TIJARA. NETWORK AND SOFTWARE ENGINEERING Manuel d'utilisateur "TIJARA" 1

Volume 2 Guide d ouverture et de gestion de compte

Pratique mensuelle de dakshina du Siddha Yoga Commencez ou modifiez en ligne

Programmation sous Delphi

EDC en Direct Guide du Centre d assurance comptes clients

Tableau et enregistrement en Pascal et Première version du jeu du puissance 4 I3 - Algorithmique et programmation

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Si vous décidez d utiliser un autre chemin, c est ce nouveau chemin qu il faudra prendre en compte pour la sauvegarde. Cf. : Chapitre 9 Sauvegarde

INSTRUCTIONS POUR LA PRISE D APPEL INTERNET

La Clé informatique. Formation Excel XP Aide-mémoire

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Utilisation des listes de diffusion Sympa (propriétaire)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

GUIDE D UTILISATION DU CENTRE DE DONNÉES DE L ISU

ACCÈS AUX COMPTES EN LIGNE : VOTRE GUIDE D UTILISATION. pour un accès à votre portefeuille partout et en tout temps

Chapitre 6 : Fonctions financières et d amortissement

Transcription:

APPLICATION : CALCUL DES COÛTS D ACQUISITION DE MATÉRIEL DE BUREAU 191 APPLICATION : CALCUL DES COÛTS D ACQUISITION DE MATÉRIEL DE BUREAU CHAPITRE 8 OBJECTIF INTÉGRER LES DIFFÉRENTES NOTIONS ET APPRO- CHES, 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 193 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. Créer des enregistrements 2. Afficher les enregistrements à l écran 3. Supprimer un enregistrement 4. Saisir l entrée des données pour le calcul des frais d intérêt et de l amortissement 5. Calculer les frais d intérêt et la somme du versement par mois 6. Calculer l amortissement et la valeur actuelle du bien 7. 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,

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 195 Programme principal Options Visualiser Supprimer Interet_ Amortissement Entrer_ Fournisseurs Supprimer_ Nom Entrer_Inter et Amortissement Calcul_Interet 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.

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 *) 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 '); 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 197 Exemple 8.2 PROCEDURE Entrer_Fournisseurs; (* But : Permet d entrer les données des enregistrements *) VAR P,Pt : Pointeur; NEW(P); IF Premier=NIL THEN Premier:=P ELSE Pt:=Premier; WHILE Pt^.Suivant<>NIL DO Pt:=Pt^.Suivant; Pt^.Suivant:=P; 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); UNTIL P^.Nom<>' '; P^.Suivant:=NIL; {Fait pointer le dernier élément sur NIL}

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; IF Premier<>NIL THEN IF Premier^.Nom=Nom THEN Premier:=Premier^.Suivant ELSE Pt:=Premier; WHILE Pt^.Suivant<>NIL DO IF Pt^.Suivant^.Nom=Nom THEN Pt^.Suivant:=Pt^.Suivant^.Suivant; Pt:=Pt^.Suivant; 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 199 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; WRITELN('Entrez le nom à supprimer'); READLN(Nom); Supprimer(Nom); 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; Pt:=Premier; WHILE Pt<>NIL DO WRITELN(' Prénom : ', Pt^.Prenom:15, ' Nom : ', Pt^.Nom:15); WRITE(' Numéro de porte et l''appartement : ', Pt^.No); WRITELN(' ':3, 'Rue : ', Pt^.Rue); WRITE(' La ville : ', Pt^.Ville); WRITELN(' ':3, 'La province : ', Pt^.Province); WRITELN(' Le code postal : ', Pt^.CodePostal); Pt:=Pt^.Suivant; WRITELN('Fin de la liste');

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 *) REPEAT WRITE('Entrez le prénom : '); READLN(PrenomI); WRITE('Entrez le nom : '); READLN(NomI); 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); UNTIL NomI <> ' ';

APPLICATION : CALCUL DES COÛTS D ACQUISITION DE MATÉRIEL DE BUREAU 201 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 *) (* 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 Minteret:=MInteret+(MRestant*Interet12); Mrestant:=MRestant-Montant_Deduit; Total:=MInteret+Montant; Payer_Mois:=Total/Nmois; Impression_Interet; 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.

202 INTRODUCTION À LA PROGRAMMATION EN PASCAL/DELPHI Exemple 8.8 PROCEDURE Calcul_Amortissement; (* But : Calculer l amortissement *) X:=NansA; Taux:=2/X; Valeur:=MontantA; FOR N:=1 to x DO Amortissement:=Taux*valeur; Valeur:=Valeur-amortissement; Impression_Amortissement; 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 203 Exercice 8.9 PROCEDURE Impression_Interet; (*But : Permet d imprimer les résultats des calculs *) WRITELN(f, 'Prénom : ', PrenomI:20, ' ':12, 'Nom : ', NomI:20); WRITELN(f, 'Le montant du prêt : ', Montant:10:2); WRITELN(f, 'Le taux d''intérêt annuel: ', Interet:4:3); WRITELN(f, 'Total des frais d''intérêt : ', MInteret:10:2); WRITELN(f, 'Total des frais de crédit : ', Total:9:2); WRITELN(f, 'Montant à payer par mois : ', Payer_Mois:9:2); WRITELN(f, 'Durée du prêt : ', Nans); WRITELN(f, 'Montant de l''amortissement : ', MontantA:10:2); 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;

204 INTRODUCTION À LA PROGRAMMATION EN PASCAL/DELPHI 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); 8.3.11 Procédure Terminer Cette procédure détermine la condition pour terminer. Exemple 8.11 PROCEDURE Terminer; (* But : Condition pour terminer *) WRITELN ('Au revoir'); Drapeau:=FALSE; 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; Entrer_Interet_Amortissement; Calcul_Interet; Calcul_Amortissement; Terminer;

APPLICATION : CALCUL DES COÛTS D ACQUISITION DE MATÉRIEL DE BUREAU 205 8.3.13 Programme principal Le programme principal fait exécuter l ensemble des instructions du programme. Exemple 8.13 (* 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; UNTIL Drapeau:=FALSE; SYSTEM.CLOSEFILE(f); END.

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 : STRING[20]; Prenom : STRING[20]; No : STRING[20]; Rue : STRING[20]; Ville : STRING[20]; Province : STRING[20]; CodePostal :STRING[7]; Suivant : Pointeur; VAR 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 207 PROCEDURE Entrer_Fournisseurs; (* But : Permet d entrer les données des enregistrements *) VAR P,Pt : Pointeur; Y : INTEGER; NEW(P); IF Premier=NIL THEN Premier:=P ELSE Pt:=Premier; WHILE Pt^.Suivant<>NIL DO Pt:=Pt^.Suivant; Pt^.Suivant:=P; 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); UNTIL P^.Nom<>' '; P^.Suivant:=NIL; {Fait pointer le dernier élément sur NIL}

208 INTRODUCTION À LA PROGRAMMATION EN PASCAL/DELPHI PROCEDURE Visualiser; (* But : Permet de visualiser les enregistrements *) VAR Pt : Pointeur; Pt:=Premier; WHILE Pt<>NIL DO WRITELN(' Prénom : ', Pt^.Prenom:15, ' Nom : ', Pt^.Nom:15); WRITE(' Numéro de porte et l 'appartement: ', Pt^.No ); WRITELN(' ':3, Rue : ', Pt^.Rue); WRITE(' La ville : ', Pt^.Ville); WRITELN(' ':3, 'La province : ', Pt^.Province); WRITELN(' Le code postal : ', Pt^.CodePostal); Pt:=Pt^.Suivant; WRITELN('Fin de la liste'); PROCEDURE Supprimer(Nom:STRING); (* But : Supprime un enregistrement *) VAR Pt : Pointeur; IF Premier<>NIL THEN IF Premier^.Nom=Nom THEN Premier:=Premier^.Suivant ELSE 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 209 PROCEDURE Supprimer_Nom; (* But : Permet d'entrer le nom de l'élément qui va être supprimé *) VAR Nom : STRING[20]; Pt : Pointeur; WRITELN(' Entrez le nom à supprimer '); READLN(Nom); Supprimer(Nom); PROCEDURE Impression_Interet; (* But : Permet d'imprimer les résultats des calculs *) WRITELN(f, 'Prénom : ', PrenomI:20,' ':12, 'Nom : ', NomI:20); WRITELN(f, 'Le montant du prêt : ', Montant:10:2 ); WRITELN(f, 'Le taux d''intérêt annuel: ', Interet:4:3); WRITELN(f, 'Total des frais d''intérêt : ', MInteret:10:2); WRITELN(f, 'Total des frais de crédit : ', Total:9:2); WRITELN(f, 'Montant à payer par mois : ', Payer_Mois:9:2); WRITELN(f,' Durée du prêt : ', Nans); WRITELN(f,' Montant de l''amortissement : ', MontantA:10:2);

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 *) REPEAT WRITE('Entrez le prénom : '); READLN(PrenomI); WRITE('Entrez le nom : '); READLN(NomI); 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); UNTIL NomI <> ' ';

APPLICATION : CALCUL DES COÛTS D ACQUISITION DE MATÉRIEL DE BUREAU 211 PROCEDURE Calcul_Interet; (* But : Calculer les intérêts et le montant des remboursements *) (* 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 MInteret:=MInteret+(MRestant*Interet12); MRestant:=MRestant-Montant_Deduit; Total:=MInteret+Montant; Payer_Mois:=Total/Nmois; Impression_Interet; PROCEDURE Impression_Amortissement; (* But : Imprime les résultats de l amortissement *) VAR Y : INTEGER; 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);

212 INTRODUCTION À LA PROGRAMMATION EN PASCAL/DELPHI PROCEDURE Calcul_Amortissement; (* But : Calculer l amortissement *) X:=NansA; Taux:=2/X; Valeur:=MontantA; FOR N :=1 TO x DO Amortissement:=Taux*valeur; Valeur:=Valeur-amortissement; Impression_Amortissement; PROCEDURE Options; (* But : Afficher les options du menu à l écran *) 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'); PROCEDURE Terminer; (* But : Condition pour terminer *) WRITELN('Au revoir'); Drapeau:=FALSE;

APPLICATION : CALCUL DES COÛTS D ACQUISITION DE MATÉRIEL DE BUREAU 213 PROCEDURE Interet_Amortissement; Entrer_Interet_Amortissement; Calcul_Interet; Calcul_Amortissement; Terminer; (* 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 ; UNTIL Drapeau=FALSE; SYSTEM.CLOSEFILE(f); END.