Enoncé précédent Enoncé suivant

 

C24. Programmation PASCAL – Programmation modulaire - Vecteurs  Corrigé  

Exercice 1 : Visibilité des objets

Soit le programme PASCAL suivant :

    program p;

        var a, b, c, d : integer;

        procedure p1 ( i, j : integer ; var a : integer );

            begin

                writeln('* i = ', i);

                a := (i + j ) * b

            end;

        Procedure p2;

            begin

                a := b div c;

                b := a;

                writeln('** b = ', b);

            end;

        Procedure p3 ( a, b, c : integer);

            begin

                c := 2 ;

                c := a + b + c;

                writeln('*** c = ', c);

            end;

        begin

            read(a, b, c, d);

            p2; writeln('Apres p2, a = ', a);

            p3 (a, b, d); writeln('Apres p3, d = ', d);

            p1 (a, b, d); writeln('Apres p1, d = ', d);

            Writeln(' Contenu des variables ', a, b, c, d);

        end.

- Quelle est la portée de tous les objets définis dans le programme.

- Dérouler le programme pour a = 2; b = 3, c = 4 et d = 5.

Exercice 2 : Opérations sur les chaînes de caractères

on peut représenter un mot ( chaîne de caractères ne contenant pas de blancs) dans un vecteur MOT(1..N) o� chaque élément contient un caractère étant la taille maximale des mots.

par exemple le mot 'abcdeabf' est représenté dans le tableau comme suit :

Ecrire les modules suivants :

(i) Longueur ( MOT) : pour déterminer la longueur du mot MOT.

(ii) Extract( MOT, i, j ) : pour extraire le sous-mot du mot MOT commençant à la position i et ayant j comme longueur. O sinon.

(iii) Index( MOT2, MOT1) : pour déterminer la position du mot MOT1 dans le mot MOT2. 0 sinon.

 

Exemples :

Longueur( MOT) = 8

Extract(MOT, 5, 2) = 'ef'

Extract(MOT, 2, 5) = 'bcdea'

Si T est le vecteur contenant la chaîne 'ab', Index(MOT, T)=1

Si T est le vecteur contenant la chaîne 'abf', Index(MOT, T)=6

Si T est le vecteur contenant la chaîne 'abx', Index(MOT, T)=0