Вы находитесь на странице: 1из 7

Premier cycle

Jeudi 25 Juin

I3 - Algorithmique
Dur e : 3h00 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. ` Nutilisez pas de crayon a papier.

1
1.1

Distance de Hamming (5 points)


Distance de Hamming entre deux mots

La distance de Hamming entre deux chanes de caract` res, appel es mots , de m me longueur est egale e e e ` au nombre de caract` res, a la m me position, qui diff` re. Par exemple la distance de Hamming entre rose et e e e ruse est de 1, alors que la distance de Hamming entre 110110 et 000101 est de 4. Proposez lalgorithme de la fonction it rative suivante qui permet de calculer la distance de Hamming de e deux mots, non vides, que lon sait de m me longueur1 : e fonction distanceHammingDeuxMots (mot1,mot2 : Chaine de caracteres) : Naturel Solution propos e : e fonction distanceHammingDeuxMots (mot1,mot2 : Chaine de caracteres) : Naturel D claration i,resultat : Naturel e debut resultat 0 ` pour i 1 a longueur(mot1) faire si iemeCaractere(mot1,i)=iemeCaractere(mot2,i) alors resultat resultat+1 nsi npour retourner resultat n

1.2

Distance de Hamming dun langage

Un langage est un ensemble de mots. La distance de Hamming dun langage est egale au minimum des ` distances de Hamming entre deux mots de ce langage diff rents deux a deux. e Proposez le corps de la fonction it rative suivante qui permet de calculer la distance de Hamming dun e ` langage dau moins 2 mots qui poss` de uniquement des mots de m me longueur et tous diff rents deux a e e e deux1 : fonction distanceHammingLangage (leLangage : Tableau[1..MAX] de Chaine de caracteres , nbMots : Naturel) : Naturel Solution propos e : e fonction distanceHammingLangage (leLangage : Tableau[1..MAX] de Chane , nbMots : Naturel) : Naturel D claration i,j,min,temp : Naturel e
1

` Cela signie que vous navez pas a faire ce(s) test(s) dans votre algorithme

debut min distanceHammingDeuxMots(leLangage[1],leLangage[2]) ` pour i 1 a nbMots-1 faire ` pour j i+1 a nbMots faire temp distanceHammingDeuxMots(leLangage[i],leLangage[j]) si temp<min alors min temp nsi npour npour retourner min n

Somme des chiffres dun naturel (3 points)

Proposez lalgorithme de la fonction r cursive suivante qui permet de calculer la somme des chiffres dun e naturel. Par exemple sommeChif f res(524) retournera la valeur 11. fonction sommeChiffres (n : Naturel) : Naturel Solution propos e : e fonction sommeChiffres (n : Naturel) : Naturel debut si n=0 alors retourner 0 sinon retourner n mod 10+sommeChiffres(n div 10) nsi n

3
3.1

Un petit dessin (3 points)


Rappels et pr requis e

Nous avons vu en cours quun ecran graphique dordinateur (repr sent par une variable de type Ecran) e e ` est un quadrillage de pixels. Nous avons vu aussi que lon pouvait obtenir ou modier la couleur dun pixel a laide des deux proc dures suivantes : e proc dure xerCouleurPixel (E/S e : Ecran,E x,y : Naturel, c : Couleur) e fonction obtenirCouleurPixel (e : Ecran,x,y : Naturel) : Couleur Pour le type Ecran, on consid` re avoir aussi la proc dure suivante : e e proc dure segment (E/S e : Ecran,E x1,y1,x2,y2 : Naturel, c : Couleur) e qui permet dessiner sur l cran un segment de droite de couleur c entre les pixels de coordonn es e e (x1, y1) et (x2, y2) Enn, on consid` re avoir en plus les proc dures math matiques suivantes : e e e proc dure rotation (E xc,yc,x1,y1 : Naturel, angle : Reel, S x2,y2 : Naturel) e qui permet de calculer les coordonn es de limage (de coordonn es (x2, y2) dun pixel de coordonn es e e e (x1, y1) par une rotation de centre de coordonn es (xc, yc) et dangle angle (exprim en degr s). Pour e e e rappel, limage M dun point M par une rotation de centre C et de rayon est d ni par M CM = . e proc dure homothetie (E xc,yc,x1,y1 : Naturel, k : Reel, S x2,y2 : Naturel) e qui permet de calculer les coordonn es de limage (de coordonn es (x2, y2) dun pixel de coordonn es e e e (x1, y1) par une homoth tie de centre de coordonn es (xc, yc) et de rapport k. Pour rappel, limage e e M dun point M par une homoth tie de centre C et de rapport k est d ni par CM = k CM . e e 2

` Par exemple lex cution de la proc dure exemple (donn e uniquement a titre dillustration) avec les pae e e ram` tres effectifs e, 100, 100, c donne la gure 1 e

600,300 100,100 400,100

700,300

F IG . 1 Exemple dutilisation des proc dures segment, rotation et homothtie (les coordonn es des e e e points sont donn es a titre indicatif e ` proc dure exemple (E/S e : Ecran, E x,y : Naturel, c : Couleur) e D claration x3,y3,x4,y4 : Naturel e debut segment(e,x,y,x+300,y,c) rotation(x+300,y,x+300+283,y,45,x3,y3) homothetie(x3,y3,x3+200,y3,0.5,x4,y4) segment(e,x+300,y,x3,y3,c) segment(e,x3,y3,x4,y4,c) n

3.2

Proc dure myst` re e e

Soit la proc dure mystere suivante : e proc dure mystere (E/S e : Ecran, E x1,y1,x2,y2,n : Naturel, c : Couleur) e D claration x3,y3,x4,y4,x5,y5 : Naturel e debut si n=0 alors segment(e,x1,y1,x2,y2,c) sinon homothetie(x1,y1,x2,y2,0.33,x3,y3) homothetie(x1,y1,x2,y2,0.66,x5,y5) rotation(x3,y3,x5,y5,60,x4,y4) mystere(e,x1,y1,x3,y3,n-1,c) mystere(e,x3,y3,x4,y4,n-1,c) mystere(e,x4,y4,x5,y5,n-1,c) mystere(e,x5,y5,x2,y2,n-1,c) nsi n Dessiner lex cution de cette proc dure avec les param` tres effectifs e, 0, 0, 1000, 0, 2, c. e e e Solution propos e : e

Traitement du Signal (9 points)


Un signal est une suite num rique (des r elles). Les op rations habituelles sur un signal sont : e e e initialiser un signal avec n fois la m me valeur (n de type Naturel) ; e obtenir le nombre de valeur dun signal ; obtenir la i` me valeur dun signal (avec 0 i n) ; e xer la i` me valeur dun signal (avec 0 i n) ; e ` ajouter une nouvelle valeur a la n dun signal (si le signal avait au pr alable n valeurs, il en poss` de e e ensuite n + 1).

4.1

Conception pr liminaire (1,5 point) e

On consid` re poss der le type Signal. Proposer les signatures des fonctions et proc dures, correspondant e e e aux op rations pr c dentes permettant de manipuler un signal. e e e Solution propos e : e fonction signal (nbValeurs : Naturel ; valeur : Reel) : Signal fonction longueur (s : Signal) : Signal fonction obtenirValeur (s : Signal, i : Naturel) : Reel proc dure xerValeur (E/S s : Signal, E i : Naturel, v : Reel) e proc dure ajouterValeur (E/S s : Signal, E v : Reel) e

4.2

Conception d taill e (2 points) e e

On d cide de repr senter le type Signal de la facon suivante : e e Type Signal = Structure donnees : Tableau[1..MAX] de Reel nbDonnees : Naturel nstructure Donner les algorithmes des fonctions et proc dures de la conception pr liminaire. e e Solution propos e : e fonction signal (nbValeurs : Naturel ; valeur : Reel) : Signal D claration resultat : Signal e i : Naturel debut resultat.nbDonnees nbValeurs ` pour i 1 a nbValeurs faire resultat.donnees[i] valeur npour retourner resultat n

fonction longueur (s : Signal) : Signal debut retourner s.nbDonnees n fonction obtenirValeur (s : Signal, i : Naturel) : Reel debut retourner s.donnees[i] n proc dure xerValeur (E/S s : Signal, E i : Naturel, v : Reel) e debut s.donnees[i] v n proc dure ajouterValeur (E/S s : Signal, E v : Reel) e debut s.nbDonnees s.nbDonnees+1 xerValeur(s,s.nbDonnees,v) n

4.3

Utilisation du type Signal

Pour rappel dans cette partie, nous sommes utilisateur du type Signal. Pour manipuler un signal, nous nutilisons donc que les fonctions et proc dures propos es par la conception pr liminaire. e e e 4.3.1 Min et max (2 points)

Proposer lalgorithme dune proc dure calculerMinMax qui permettra dobtenir la plus petite et la plus e grande valeur dun signal (que lon suppose poss d au moins une valeur). e e Solution propos e : e proc dure calculerMinMax (E s : Signal,S min, max : Reel) e D claration i : Naturel e temp : Reel debut min obtenirValeur(s,1) max obtenirValeur(s,1) ` pour i 2 a longueur(s) faire si obtenirValeur(s,i)min alors min obtenirValeur(s,i) sinon si obtenirValeur(s,i)max alors max obtenirValeur(s,i) nsi nsi npour n 4.3.2 Lissage de courbe (3,5 points)

Lobjectif ici est de d velopper un ltre non causal , cest-` -dire une fonction qui lisse un signal en e a eme valeur du nouveau signal est la moyenne des utilisant une fen tre glissante pour moyenner les valeurs : la i e ` valeurs du signal source se trouvant a lint rieur dune fen tre glissante centr e en i (Cf. gure 2). Pour les e e e premi` res et derni` res valeurs, seules les valeurs dans la fen tre sont prises en compte. e e e

Fentre glissante

Signal source Signal calcul

1.5

1.5 2.3 3.3 4 4.7

1.5 2.3 3.3 4 4.7 4 5.3 5

F IG . 2 Lissage dun signal avec une fen tre de taille 3 e Apr` s avoir fait une analyse descendante du probl` me, proposer lalgorithme de la fonction filtreNonCausal e e ` avec la signature suivante sachant que le nombre de valeur dun signal est obligatoirement sup rieur a 1 et que e la taille de la fen tre est obligatoirement impaire1 : e fonction ltreNonCausal (signalNonLisse : Signal, tailleFenetre : Naturel) : Signal Solution propos e : e Analyse descencante : f iltreN onCausale : Signal Naturel Signal min : Naturel Naturel Naturel max : Naturel Naturel Naturel moyenne : Signal Naturel Naturel Reel somme : Signal Naturel Naturel Reel Algorithmes : fonction somme (unSignal : Signal, debut, n : Naturel) : Reel D claration resultat : Reel e i : Naturel debut resultat 0 ` pour i debut a n faire resultat resultat+ obtenirValeur(unSignal,i) npour retourner resultat n fonction moyenne (unSignal : Signal, debut, n : Naturel) : Reel debut retourner somme(unSignal,debut,n)/(n-debut+1) n fonction ltreNonCausal (unSignal : Signal, tailleFenetre : Naturel) : Signal D claration resultat : Signal e i : Naturel debut resultat signal(longueur(unSignal),0) ` pour i 1 a longueur(unSignal) faire xerValeur(resultat,i,moyenne(unSignal,max(1,i-tailleFenetre div 2), min(unSignal.nbDonnees,i+tailleFenetre div 2))) npour retourner resultat 6

Вам также может понравиться