: le programme doit se ramener à une succession d'appels de procédures.
On va essayer d'appliquer cette règle sur un exemple simple, la résolution d'une équation du second degré
Ce problème peut être décomposé en plusieurs sous-problèmes :
program equ2dg; var coeff1, coeff2, coeff3, discriminant : real; reelle, imaginaire : real; procedure lecturedonnees(var a, b, c : real); begin writeln('c1='); readln(a); writeln('c2='); readln(b); writeln('c3='); readln(c); end; procedure calculdelta(a, b, c : real; var delta : real); begin delta:=sqr(b)-4*a*c; end; procedure calculx(a, b : real; var x : real); begin x:=-b/(2*a); end; procedure calculy(a, delta : real; var y : real); begin y:=sqrt(abs(delta))/(2*a); end; procedure affichage(x, y, delta : real); begin if delta>0 then writeln('solutions reelles X1=', x+y,'; X2=',x-y); if delta<0 then writeln('solutions complexes Z1=', x,'+i',y,';Z2=',x,'-i',y); if delta=0 then writeln('solution double X=',x); end; (* programme principal *) begin lecturedonnees(coeff1, coeff2, coeff3); calculdelta(coeff1, coeff2, coeff3, discriminant); calculx(coeff1, coeff2, reelle); calculy(coeff1, discriminant, imaginaire); affichage(reelle, imaginaire, discriminant); end.