• Aucun résultat trouvé

5.13 Terminaison de la fonction f91.

N/A
N/A
Protected

Academic year: 2022

Partager "5.13 Terminaison de la fonction f91."

Copied!
2
0
0

Texte intégral

(1)

Lycée La Martinière Monplaisir

Informatique Commune 2eannée Fonctions récursives : exercices

Fonctions récursives : exercices

Judicaël Courant 2018-W36-2

5.11 Correction et terminaison de la fonction briques.

5.13 Terminaison de la fonction f91.

5.14 Complexité en temps et en espace de la fonction puissance (naïve).

5.15 Complexité en temps et en espace de la fonction puissance_rapide.

5.21 PGCD itératif. Correction et terminaison.

5.24 Fibonacci, version naïve récursive. Complexité ? 5.25 PGCD récursif. Correction et terminaison.

5.29 Flocon de Von Koch (utilise le module turtle, comportant les procédures forward, left et right, dont au trouvera une documentation ci-dessous et au verso).

Auxquels s’ajoutent deux défis :

Exercice 5.11 montrer que le temps de calcul de briques(n) est (asymptotiquement) au moins exponentiel en n, c’est-à-dire qu’il existe une constante

α, avec α >

1, tel que ce temps soit un Ω(α

n

), autrement dit en plus de cette constante il existe une constante

K >

0 et un rang

n0

tels que pour tout

nn0

, le temps de calcul de briques(n) est au moins

K·αn

.

Exercices 5.21 / 5.25 quelle est la complexité du calcul de ce PGCD (en nombre d’opé- rations effectuées) ?

Livre 16 septembre 2013 11:02 Page 380

✡✟

☛✡✟

✠ ☛

☛✡✟

380 Informatique pour tous

B.2.3 Écriture dans une image

On dispose ensuite d’une fonction qui permet de créer une image à partir du tableau de ses pixels :

In [10]:mbnew= Image.fromarray(mbtab)

Enfin, pour enregistrer une image, on utilise la méthodesave. L’extension donnée au nom du fichier détermine le format d’enregistrement, qui n’est pas forcément le même que celui de l’image d’origine :

In [11]:mbnew.save('luigi.jpg')

On consultera bien entendu la documentation en ligne deImagepour découvrir d’autres fonctions.

Exercice B.6Écrire une fonction qui ouvre une image et compte le nombre de pixels parfaitement noirs et de pixels parfaitement blancs dans celle-ci.

Exercice B.7Écrire une fonction qui ouvre une image et en enregistre une copie agrandie d’un facteur 2, en hauteur comme en largeur. Chaque pixel de l’image originelle est donc remplacé par quatre pixels identiques.

Exercice B.8 Écrire une fonction qui ouvre une image et affiche l’image symétrique par rapport à un axe vertical.

Même question en faisant subir cette fois à l’image une rotation de 90°.

Exercice B.9 Écrire une fonction qui prend pour arguments deux entiersnetpet crée l’image d’un damier de dimensionsn×p: les pixels sont alternativement noirs et blancs le long des lignes comme le long des colonnes.

B.3 Utilisation du module graphique turtle

Le moduleturtlesert à réaliser des tracés géométriques à l’aide d’un curseur appelétor- tue, comme dans le célèbre langage Logo mis au point en 1967 par Wally Feurzeig et Seymour Papert pour la première utilisation d’ordinateurs à des fins éducatives.

La tortue est symbolisée par une flèche, dispose d’un crayon et d’une « tête » qui fixe sa direction. Partout où elle passe, la tortue trace un trait si son crayon est baissé. Elle effectue les tracés suffisamment lentement pour que le programmeur puisse suivre la suite d’ins- tructions au fur et à mesure qu’elles s’exécutent. On dispose d’un ensemble d’instructions élémentaires pour déplacer la tortue ou tourner sa tête :

Judicaël Courant - 2018-W36-2 1/2 Document sous licence Art Libre (http://artlibre.org)

(2)

Lycée La Martinière Monplaisir

Informatique Commune 2eannée Fonctions récursives : exercices

Livre 16 septembre 2013 11:02 Page 381

✡✟

✟✠ ☛

✡✟

☛✡✟

B – Compléments sur les entrées/sorties 381

Les fonctions du moduleturtle(tortue Logo) reset() Effacer le dessin

goto(x,y) Aller au point de coordonnéesx, ysans tourner la tête forward(distance) Avancer d’une distance donnée

backward(distance) Reculer d’une distance donnée up() Lever le crayon (pour ne plus dessiner) down() Baisser le crayon (pour dessiner)

left(angle) Tourner la tête à gauche d’un angle exprimé en degrés right(angle) Tourner la tête à droite d’un angle exprimé en degrés

Toutes ces instructions sont à précéder du nom du module, qu’on aura donc intérêt à char- ger sous la formeimport turtle as t. On peut aussi taperfrom turtle import*pour utiliser ces instructions directement sans préfixe. Des fonctions plus avancées sont disponibles, que l’on retrouvera sur la documentation en ligne du module.

Pour que la fenêtre de tracé ne se bloque pas en fin d’exécution, il faut terminer le pro- gramme par l’instructiont.mainloop().

Le programme suivant produit le dessin figureB.1.

import turtle ast t.forward(100) t.left(120) t.forward(50) t.up()

t.goto(-50,-25) t.down() t.goto(0,-60) t.mainloop()

Figure B.1 Un tracé à l’aide du moduleturtle

Judicaël Courant - 2018-W36-2 2/2 Document sous licence Art Libre (http://artlibre.org)

Références

Documents relatifs

En multipliant les produits des deux sommets, nous déduisons du lemme que le produit du sommet 1 est

Cette troisième propriété implique que, si l'on place les nombres a, b, (a + p) et (b + p) aux sommets d'un graphe (un tétraèdre) dont on trace les arêtes correspondant aux

BCPST R´ esolution de syst` emes et inversions de matrice 2016-2017 Le but de ce TP est de finir le dernier TP en ´ ecrivant l’ensemble des algorithmes sur les matrices vus dans

[r]

En d´ eduire le tableau de variations sur ce mˆ eme

Cependant, d’une part l’analogue plan du segment, le rectangle, ne sera pas su¢ sant pour décrire tous les domaines sur lesquels on souhaitera intégrer (disques,

// on suppose que le tableau Note contient

Ecrire une fonction qui prend pour argument un tableau Note[ ] (qui contient les notes d’une classe) et n la taille du tableau (le nombre des notes) et elle retourne la moyenne de