push(a)

publicité
Informatique commune - Lycée du parc
2ème année
DS 1
Exercice 1 Écrire les fonctions factorielle(n) en récursif et en itératif. Quelle est la complexité de
ces fonctions ? Donner un inconvénient de la version récursive : en python, pour quelles valeurs de n
aura-t-on un problème ?
Exercice 2 Quelles sont les fonctions de base (en français) permettant de manipuler une pile ? Citer
deux implémentations classiques pour les piles (ne pas détailler). Quelle est la plus contraignante ?
Exercice 3 Soit p une pile vide, et considérons la suite d'instructions suivantes eectuées sur la pile
p
:
push(12)
push(23)
a = pop()
push(100)
push(-4)
pop()
push(a)
Dessiner la pile p à la n de l'exécution de ces instructions et expliquer pourquoi. Idem avec une le f
vide au départ.
Exercice 4 Écrire une fonction partage(p) prenant en entrée une pile p et renvoyant une pile contenant les mêmes éléments, mais où tous les éléments strictement positifs sont "au dessus" de tous les
éléments négatifs. On ne demande pas de laisser p intacte.
Exercice 5 Écrire une fonction permettant de tester si deux piles sont égales (mêmes éléments dans
le même ordre).
Exercice 6 Écrire une fonction permettant de déterminer si un entier n est premier. De quel type est
la valeur renvoyée ? Expliquer les optimisations que vous avez faites.
Exercice 7 Écrire une fonction en python permettant de calculer le pgcd de deux entiers positifs a et
b.
En déduire une fonction permettant de calculer le pgcd d'un ensemble de nombres (donnés dans un
tableau).
Exercice 8 On considère des listes d'entiers (list en Python) triées dans l'ordre croissant. Écrire une
fonction intersection(a, b) qui renvoie l'intersection de deux listes a et b de même taille n (plusieurs
réponses possibles). Quelle est la complexité de votre fonction ?
Exercice 9 Écrire une fonction permettant de calculer f ibonacci(n) en utilisant la mémoïzation. Quelle
est la complexité de la version récursive (on en demande pas le calcul) ? et de la version mémoïzée ?
Dessiner l'arbre d'appel pour fibonacci(3) dans les deux cas.
Exercice 10 Soit un point M du plan de coordonnées (x, y) dans un repère orthonormé direct (O, I, J).
~ OM
~ )). On pourra utiliser la fonction sqrt
Écrire un bloc d'instruction permettant de calculer cos((OI,
qui renvoie la racine carrée d'un ottant.
Exercice 11 import matplotlib.pyplot as plt : écrire un bloc de code permettant d'acher une
courbe représentative de la fonction f : x → x2 + 1 sur [0; 1] (avec la précision que vous voulez).
Exercice 12 La fonction random() du module random renvoie une ottant aléatoire dans [0; 1[. En
déduire une fonction python alea(n) qui renvoie un entier tiré au hasard dans [|1;n|]. Écrire un bloc
de code qui demande un entier k à l'utilisateur et ache un entier tiré au hasard dans [|1; k|].
1
Téléchargement