PASCAL
Il y a 2 catégories de tableaux: les compressés et les autres:
- Type
- TypeTableauNormal = ARRAY [DEBUT..FIN] of integer;
- TypeTableauCompresse = PACKED ARRAY [DEBUT..FIN] of integer;
On peut passer un tableau comme paramètre de procédure ou function. Dans ce cas on doit au préalable avoir déclarer le type de ce tableau. Comme ici :
procedure (t1 : TypeTableauNormal; VAR t2 : TypeTableauNormal)
begin
end;
Dans l'exemple précédent il faut noter que le paramètre t2 est un paramètre variable, ie les modifications réalisées à l'intérieur de celle-ci seront visibles à l'extèrieur.
- program test0 (input, output );
- type
- longueur = 1..80;
- longueurBig = 1..800;
- var
- tab1 : array [1..80] of integer;
- tab2 : array [1..800] of integer;
- procedure PseudoPolymorphisme ( Tab : array [debut .. fin : longueurBig] of integer );
- begin
- {....}
- end;
- begin
- PseudoPolymorphisme(tab1);
- PseudoPolymorphisme(tab2);
- end.
Appel récursif sur des tableaux
Il faut dans la plupart des cas, impérativement déclarer vos tableaux en var...
- program test (input, output);
- type
- myTab = array [0..20] of integer;
- var
- i : longint;
- tub : myTab ;
- procedure ecrire (var t : myTab);
- begin
- t[1]:=11;
- t[2]:=12;
- end;
- procedure reducRecursifEtVar (var t :myTab);
- begin
- writeln('At[1]=',t[1],' i=',i);
- if i>1 then
- begin
- t[1]:=t[1]-1;
- i:=i-1;
- reducRecursifEtVar (t);
- end;
- writeln('Bt[1]=',t[1],' i=',i);
- end;
- begin
- ecrire(tub);
- writeln('tub[1]=',tub[1]);
- writeln('tub[2]=',tub[2]);
- i:=5;
- reducRecursifEtVar (tub);
- writeln('tub[1]=',tub[1]); {affiche 6}
- end.
Exemple d'utilisation avec une structure
Philippe Rolland-01/04/98