Enoncé précédent Enoncé suivant

  

 C10. Programmation modulaire - Vecteurs - Programmation PASCAL Corrigé  

Exercice 1 : Variétés

Considérons une liste de N nombres entiers ( N>1). On veut écrire un algorithme qui répond aux questions suivantes :

- déterminer le troisième nombre premier s'il existe,

- déterminer le deuxième carré parfait s'il existe,

- déterminer le nombre des diviseurs du premier nombre pair et du dernier nombre impair.

Pour le faire on définit les modules suivants :

a) PREM(Nbr, Bool) :

En entrée : un nombre quelconque Nbr.

En sortie : Bool <-- VRAI si Nbr est premier,

Bool <-- FAUX si Nbr est non premier.

Rôle : reconnaît si un nombre est premier ou non.

b) CARRE(Nbr, Bool) :

En entrée : un nombre quelconque Nbr.

En sortie : Bool <-- VRAI si Nbr est un carré parfait,

Bool <-- FAUX sinon.

Rôle : reconnaît si un nombre est carré parfait ou non.

c) PAIR ( Nbr) :

En entrée : un nombre quelconque Nbr.

en sortie : VRAI si Nbr est un carré parfait, FAUXsinon.

Rôle : reconnaît si un nombre est pair ou non.

NBDIV( Nbr, Ndiviseurs) :

En entrée : un nombre quelconque Nbr.

En sortie : le nombre des diviseurs de Nbr est rangé dans la variable Ndiviseurs.

Rôle : détermine le nombre de diviseurs d'un nombre donné.

QUESTIONS :

a) Ecrire séparément les 4 actions ainsi définies.

b) Utiliser ces actions pour écrire UN SEUL algorithme qui répond aux questions posées.

Remarques :

a) Ne pas utiliser 'opérateur "racine carrée".

b) Chaque nombre de la liste est délivré par un ordre de lecture.

c) Les questions a) et b) sont indépendantes.

Exercice 2 : Norme euclidienne

Etant donnés P vecteurs (X1, X2, . . , XN) de dimension N. ( P et N donnés).Quel est le rang du vecteur qui possède la plus grande norme euclidienne ?

Vous devez répondre à cette question :

a) en énonçant d'abord le principe que vous utilisez en langage naturel,

b) puis, en écrivant un algorithme.

Rappel : la norme euclidienne d'un vecteur est donnée par la formule :

Racine carré ( somme (X12+X22+ ....... XN2) )

Exercice 3 : Id ?

Soit le programme PASCAL suivant :

PROGRAM Id;

    VAR

        N, X, I, P, K, W : INTEGER;

        S : REAL;

        PROCEDURE Y ( VAR A, B : INTEGER);

            VAR L : INTEGER;

            BEGIN

                B := 1;

                FOR L:=2 TO A DO B := B * L

            END;

        BEGIN

            READ(X); READ(N);

            S := 1;

            FOR I:=1 TO N DO

                BEGIN

                    Y(I, P);

                    W:= 1;

                    FOR K:=1 TO I DO W := W * X;

                    S := S + ( W/ P)

            END

END.

Questions :

a) Dérouler le programme pour X=3 et N = 4

b) Donner les contenus des variables P, S et W.

c) Que fait le programme ?