Vous êtes sur la page 1sur 2

Premier cycle

Vendredi 23 Mai 2008

I3 - Algorithmique
Dur e : 1h30 e Documents autoris s : AUCUN (calculatrice comprise) e Remarques : Veuillez lire attentivement les questions avant de r pondre. e Le bar` me donn est un bar` me indicatif qui pourra evoluer lors de la correction. e e e Rendez une copie propre.

Questions de cours (5 points)


R pondez aux questions suivantes en 5 lignes maximum : e 1. Citez (en les expliquant) 4 crit` res permettant d valuer un bon programme. e e 2. Quest ce que le paradigme de la programmation imp rative ? e 3. Dans le cycle en V, quel est le r le de la conception d taill e ? o e e 4. Dans le cycle en V, quel est le r le des tests unitaires ? o 5. Quest-ce que lencapsulation ?

D veloppement limit (5 points) e e


Lorsque x est proche de 0, ln(1 + x) peut etre approxim a laide de la formule suivante : e`

n i=1

(1)i+1 i x i

Compl tez le corps de la fonction suivante qui calcule une approximation de ln(1 + x) jusquau rang e n. Utilisez uniquement les variables et param` tres donn s et nutilisez aucune autre fonction (pas danalyse e e descendante) : fonction ln1PlusX (x : Reel, n : Naturel) : Reel D claration i : Naturel e numerateur,xPuissanceI : Reel resultat : Reel debut ... n

3 estUnPrexe (6,5 points)


Pour cet exercice on consid` re que lon poss` de les fonctions suivantes : e e fonction longueur (uneChaine : Chaine de caracteres) : Naturel . . .avec longueur() = 0 fonction iemeCaractere (uneChaine : Chaine de caracteres, iemePlace : Naturel) : Caractere . . .avec 0 < iemeP lace longueur(uneChaine) Proposez la fonction estUnPrexe qui permet de savoir si une premi` re chane de caract` res est pr xe e e e dune deuxi` me chane de caract` res (par exemple pr est un pr xe de pr dire ). e e e e e 1

Jeu des 7 erreurs (3,5 points)

` Le programme pascal suivant comporte 7 erreurs de syntaxe. Identiez les en donnant a chaque fois le num ro de la ligne, lerreur commise et la solution. e
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 program n b p a r f a i t f u n c t i o n e s t U n D i v i s e u r ( a , b : I n t e g e r ) : Boolean ; begin e s t U n D i v i s e u r : = a mod b=0 end ; { e s t U n D i v i s e u r } f u n c t i o n sommeDesDiviseurs ( n : Integer ) : Integer ; v a r somme , i : I n t e g e r ; begin somme = 0 ; f o r i : = 1 t o n d i v 2 do i f estUnDiviseur (n , i ) then somme : = somme+ i ; s o m m e D e s D i v i s e u r s : = somme end ; { s o m m e D e s D i v i s e u r s } f u n c t i o n e s t P a r f a i t : Boolean ; begin e s t P a r f a i t : = ( n= s o m m e D e s D i v i s e u r s ( n ) ) end ; { e s t P a r f a i t } f o n c t i o n obtenirBorneMax ( ) ; v a r borneMax : Integer ; begin w r i t e ( V a l e u r maximale d a f f i c h a g e d e s nombres p a r f a i t s : ) ; r e a d l n ( borneMax ) ; o b t e n i r B o r n e M a x : = borneMax end ; { o b t e n i r B o r n e M a x } procedure afficherNombresParfaitsJusquA ( n : Integer ) ; var i : Integer ; begin f o r i : = 1 t o n do i f e s t P a r f a i t ( i ) then write ( i , ); writeln ( ) end ; { a f f i c h e r N o m b r e s P a r f a i t s J u s q u A } procedure afficherDesNombresParfaits ( ) ; v a r nb : Integer ; begin nb : = o b t e n i r B o r n e M a x ( ) ; a f f i c h e r N o m b r e s P a r f a i t s J u s q u A ( nb ) end ; { a f f i c h e r D e s N o m b r e s P a r f a i t s } begin afficherDesNombresParfaits () end

Vous aimerez peut-être aussi