: 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.