Previous Page

5.7 Un problème concret

Terminons ce chapitre par la discussion d'un problème concret tiré de la vie quotidienne. Supposons qu'on nous demande de réaliser un programme permettant de calculer le salaire brut d'un nombre déterminé d'individus connaissant leurs salaires horaire et le nombre d'heures de travail en indiquant une retenue plafonnée de P pour-cent sur la sécurité sociale.

Une première étape importante consiste dans le choix et la description des variables. Appelons:

H le salaire horaire,
T le nombre d'heures de travail,
B le salaire brut qui se calcule d'après la formule B = H * T,
P le pourcentage de la retenue,
R la retenue sur le salaire brut qui se calcule d'après la formule R = B * P,
N le salaire net ( N = B - R ),
Max le plafond de la retenue,
K le nombre d'individus.

Avec ces définitions, l'arbre programmatique décrivant le programme prend la forme de la figure 5.4. Dans cet arbre apparaît à côté de la structure répétitive, dont nous avons fait connaissance dans le paragraphe 5.6, une deuxième structure de base: la structure alternative. Dans le cas d'une structure alternative, le rond portera le mot réservé TEST suivi d'une condition donnée en clair par une expression booléenne. Ici NOP signifie "pas d'opération" [angl. No Operation]. Ecrivons enfin un programme Turbo-Pascal à partir de l'arbre programmatique de la figure 5.4:

PROGRAM Salaire;
USES Crt;
VAR P, Max, H, T, N: Real;
Count, K: Integer;

PROCEDURE Test ( VAR R: Real; Max: Real );
BEGIN
IF R > Max THEN BEGIN
R:=Max
END ELSE BEGIN
{No Operation}
END;
END; {-- Test }

FUNCTION Retenue ( B, P: Real ): Real;
VAR R: Real;
BEGIN
R := B*P;
Test( R, Max);
Retenue := R;
END; {-- Retenue }

FUNCTION SalaireBrut ( H, T: Real ): Real;
BEGIN
SalaireBrut := H*T;
END; {-- SalaireBrut }

FUNCTION SalaireNet ( H, T, P: Real ): Real;
VAR B: Real;
BEGIN
B := SalaireBrut ( H, T );
SalaireNet := B - Retenue( B, P );
END; {-- SalaireNet }

Undisplayed Graphic

Figure 5.4 Calcul du salaire brut de K individus . . .

BEGIN {main}
Write ( 'Entrer K, P, Max: ' ); ReadLn ( K, P, Max );
FOR Count:=1 TO K DO BEGIN
Write ( 'Entrer H, T: ' ); ReadLn ( H, T );
N := SalaireNet( H, T, P );
WriteLn ( N );
END;
END. {-- Salaire }

Nous constatons que le résultat est un programme très structuré, donc lisible, clair et par conséquent facilement extensible.

TERMES TECHNIQUES

ALGOL

arbre programmatique

bloc

bloc principal

concept de blocs

domaine de validité

entête

global

local

niveau d'emboîtement

partie de déclaration d'étiquettes

partie de déclaration de procédures et de fonctions

partie de déclaration de variables

partie de définition de constantes

partie de définition de types

programme principal

programmation structurée

structure alternative

structure à blocs emboîtés

structures de base

structure répétitive

Previous Page


© Aflo Informatique , 2003-2004