solution TD2 procédures et fonctions

Embed Size (px)

Citation preview

  • 8/13/2019 solution TD2 procdures et fonctions

    1/13

    SERIE DEXERCICES:

    LES SOUS-PROGRAMMES

    Exercice n1 :

    Enonc :

    1) Factorielle

    Faire une fonction facto(n)qui renvoie n!.

    2) Puissance

    Faire une fonction puiss(x,n)qui renvoie xn.

    3) Exponentielle

    Solution :

    1) Factorielle

    FONCTION facto(n: entier):entier

    VAR

    f, i : entier

    DEBUT

    f

  • 8/13/2019 solution TD2 procdures et fonctions

    2/13

    2) Puissance

    FONCTIONpuiss (x, n : entier):entier

    VAR

    i, p: entier

    DEBUT

    p

  • 8/13/2019 solution TD2 procdures et fonctions

    3/13

    Exercice n2 :Enonc :

    1-Ecrire une procdure trois paramtres entiers qui fait la somme des deux premiers et range cette valeur

    dans le troisime.

    2-Transformer la procdure prcdente en fonction.

    Solution :1)

    PROCEDURE sommeRange(n1, n2 : entier, VAR n3 : entier)

    DEBUT

    n3

  • 8/13/2019 solution TD2 procdures et fonctions

    4/13

    1)

    FONCTION calcPi(epsilon : rel):rel

    VAR

    valeur : rel

    signe : entier

    DEBUT

    valeur

  • 8/13/2019 solution TD2 procdures et fonctions

    5/13

    Exercice n4 :Enonc :Soit la suite rcurrente U suivante dfinie par

    1

    2

    3

    3 1 2

    4

    2

    1

    2n n n n

    U

    U

    U

    U U U U

    Ecrire une procdure algorithmique nomme PSuitequi calcule le n-imeterme de U.

    Solution :PROCEDURE PSuite(n : entier)

    VAR

    u, u1, u2, u3 : rel

    DEBUT

    u1

  • 8/13/2019 solution TD2 procdures et fonctions

    6/13

    Sinon

    crire ("argument invalide")

    Fin si

    FIN

    Exercice n5 :Enonc :A partir dun entier n strictement positif, on cherche se ramener 1, pour cela on applique la mthode

    suivante : Suite de SYRACUS

    Si n est pair on le remplace par2

    n

    Si n est impair on le remplace par 3 1n Et ainsi de suite jusqu ce que lon arrive 1.

    Ecrire une procdure algorithmique SYRACUS, permettant de compter et dafficher le nombre ditrations

    ncessaires pour le ramener un entiern strictement positif 1.

    Solution :PROCEDURE SYRACUS(n : entier)

    VAR

    nb_it : entierDEBUT

    nb_it

  • 8/13/2019 solution TD2 procdures et fonctions

    7/13

    Exercice n6 : Algorithmes des babyloniens Enonc :Supposons que lon cherche calculer une valeur approche de la racine carre a du nombre a . On

    considre la suite rcurrente suivante :

    0

    1

    1

    1

    2n n

    n

    u

    a

    u u

    u

    Le calcul des termes sarrte lorsque la diffrence entre deux termes conscutifs soit infrieure 8

    10

    .

    Ecrire une procdure algorithmique BABYLONEqui permet de calculer puis dafficher la racine carre

    dun rel positif a donn.

    Solution:PROCEDURE BABYLONE(a: rel)CONST

    VALEUR = 10 ^ (-8)

    VARIABLES

    u, up : rel

    DEBUT

    u

  • 8/13/2019 solution TD2 procdures et fonctions

    8/13

    Exercice n7 : Suite de Feigenbaum

    Enonc:On considre la suite rcurrente (suite de Feigenbaum) dfinie par :

    0

    1 1

    n n n

    u

    u au u

    Ecrire une procdure algorithmique FEIGNBAUM, qui partir dun rel a, un rel u0 et un entier n

    calcule et affiche la valeur denu .

    Solution:PROCEDURE FEIGNBAUM(n : entier, a, u : rel)

    VAR

    I : entier

    DEBUT

    Pour I de 1 n faire

    u

  • 8/13/2019 solution TD2 procdures et fonctions

    9/13

    Dans ce cas, l'autre nombre est le PGCD.Ecrire une procdure permettant calculer et afficher le PGCD de deux nombres a et b en utilisant

    lalgorithme lEuclide.

    Solution :

    PROCEDUREAlgorithme_Euclide(a, b: entier)VARIABLES

    pgcd : entier

    DEBUT

    Si (a = 0) alors

    pgcd

  • 8/13/2019 solution TD2 procdures et fonctions

    10/13

    Exercice n9 : Polynmes de TChebychev Enonc :Soit XIRT

    nn dfini par :

    10 T , XT

    1et ,2n

    212

    nnn TXTT .

    Ecrire une procdure permettant de calculer le men polynme de Tchebychev avec n donn tel que 2n .

    Solution :REMARQUE:

    Cest une procdure qui manipule des expressions formelles, donc ne peut pas tre implmenteque sur des logiciels de calcul formel tel que MAPLE.

    Le type de T(i) dpend de types des valeurs de x. On va choisir dans notre solution le type rel pour toutes les variables.

    PROCEDURE Tchebychev(n : Entier)

    VAR

    T, Tn_1, Tn_2, X : rel

    DEBUT

    Tn_2 1 // Tn_2 = T0

    Tn_1 X // Tn_1 = T1

    Pour I de 2 n faire

    T 2 * X * Tn_1 Tn_2

    Tn_2 Tn_1

    Tn_1 T

    Fin pour

    Ecrire ("le ", n," me polynme de Tchebychev =", T)

    FIN

  • 8/13/2019 solution TD2 procdures et fonctions

    11/13

    Traduction en langage formelle (MAPLE):> t2 := 1:

    t1 := x:n := 12:for i from 2 to n do

    t := 2 * x * t1 - t2:t2 := t1:t1 := t:

    od:print('t'=t):

    Exercice n1 :Enonc:- On appelle diviseur propre de n, un diviseur quelconque de n, n exclu; Exemple : 6 = 1 + 2 + 3- Un entier est dit parfaitsil est gal la somme de tous ses diviseurs propres- On appelle nombre premiertout entier naturel suprieur a 1 qui possde exactement deux diviseurs, lui-

    mme et 1 ;

    - Les nombres premiers a tel que : (a+n+n2) est premier pour tout n tel que 0 n (a-1) sont appelesnombres chanceux.

    1. Ecrire une procdure nomme, SOMDIV qui calcule et renvoie dans sdla somme des diviseurs propresdun entier n donne.

    PROCEDURE SOMDIV(n : entier, VAR sd : entier)

    VAR

    i : entier

    DEBUT

    sd

  • 8/13/2019 solution TD2 procdures et fonctions

    12/13

    2. Ecrire les instructions algorithmiques (on ne demande pas dcrire un algorithme principal) permettantdafficher les nombres parfaits de lintervalle [2,1000].

    Pour I de 2 1000 faire

    SOMDIV (I, sd)

    Si (I = sd) alors

    crire (I, "est un nombre parfait")

    Fin si

    Fin pour

    3. Ecrire une fonction nomme, estpremier, rsultat boolen permettant de vrifier si un entier edonnest premier ou non.

    FONCTION estPremier(n : entier) : boolen

    VAR sd : entier

    DEBUT

    SOMDIV (n, sd)

    Si (sd 1) alors

    Retourner FAUX

    Fin siRetourner VRAI

    FIN

    4. Ecrire une fonction nomme, estchanceux, rsultat boolen permettant de vrifier si un entier adonn est chanceux ou non.

  • 8/13/2019 solution TD2 procdures et fonctions

    13/13

    FONCTION estChanceux(a : entier) : boolen

    VAR

    n : entier

    DEBUT

    Si estPremier(a) alors

    Pour n de 0 (a - 1) faire

    Si (non estPremier (a + n + n^2)) alors

    estChanceux