Test

publicité
Licence Culture Humaniste et Scientifique, 2013–2014
Universités Bordeaux 3 & 1
Contrôle continu informatique — Durée : 2h
Répondre aux questions dans un seul fichier python, qu’on appellera prenom-nom.py.
Un fichier modèle est fourni. Il est demandé :
– de le récupérer ici http://www.labri.fr/~zeitoun/enseignement/13-14/CHS/Skel.py,
– de le sauvegarder sous le nom prenom-nom.py,
– de le compléter suivant les exercices ci-dessous.
Le fichier fourni contient :
– la première ligne de chaque fonction à écrire, mais le corps de chaque fonction ne contient
qu’une instruction return (sauf celle de l’exercice 5.2 qui contient plus), qu’il faut modifier.
– des lignes d’affichage, permettant de tester les fonctions une fois écrites. Pour pouvoir vérifier
les programmes, les résultats de ces tests sont fournis page suivante.
Exercice 1 Écrire une fonction f1 qui prend en argument 2 entiers a et b, et renvoie la valeur
ab − a − b.
On rappelle les opérateurs // et % : a // b retourne le quotient de la division entière de a par b et
a % b le reste de cette division.
Exercice 2 Écrire une fonction f2 qui prend en argument 3 entiers a, b et c, et renvoie la valeur
a + b si c est pair, et a − b si c est impair.
On rappelle les opérateurs suivants sur les listes (tous ne vous seront pas forcément nécessaires) :
◦
◦
◦
◦
len(L) renvoie la longueur de la liste L,
L[i] est le (i + 1)ème élément de la liste L (le premier élément étant L[0]),
L[-i] est l’élément L[len(L)-i] (par exemple, L[-1] est le dernier élément de la liste),
L1 + L2 est la liste formée des éléments de L1, suivis de ceux de L2. Par exemple, [1,2] + [3]
s’évalue en la liste [1,2,3],
◦ L[i:] est la liste L privée de ses i premiers éléments. Par exemple, si L vaut [1,2,3], L[1:] est
la liste [2, 3].
Exercice 3 Écrire une fonction longueur_paire qui prend en argument une liste L, et qui renvoie
True si cette liste est de longueur paire et False sinon.
Exercice 4
1. Écrire une fonction demi qui prend en argument un entier n > 0, et renvoie la
partie entière de n/2. Par exemple, si n vaut 6 ou 7, cette fonction doit renvoyer 3.
2. Écrire une fonction reste_et_parite qui prend en argument un entier n, et qui renvoie la
liste [n/2, 0] si n est pair, et la liste [E(n/2), 1] si n est impair, où E(n/2) désigne la partie
entière de n/2, calculée à la question 1.
3. Écrire une fonction decomposition_base_2 qui prend en argument un entier n, et renvoie la
liste de sa décomposition en base 2. Par exemple, decomposition_base_2(13) doit renvoyer
la liste [1, 1, 0, 1].
1
Exercice 5
1. Écrire une fonction non récursive double_liste qui prend en argument une liste
d’entiers L et renvoie la liste où chaque entier est doublé. Ainsi, double_liste[1,2,3,4,5]
doit renvoyer [2,4,6,8,10].
2. Écrire une fonction double_liste_rec faisant la même chose, de façon récursive.
Exercice 6
1. Écrire une fonction non récursive renverse_liste qui prend en argument une
liste d’entiers L et renvoie la liste renversée. Par exemple, renverse_liste[1,2,3,4,5] doit
renvoyer [5,4,3,2,1].
2. Écrire une fonction renverse_liste_rec faisant la même chose, de façon récursive.
Exercice 7
1. Écrire une fonction completer qui prend en argument 2 listes de chiffres entre 0
et 9, et qui renvoie ces 2 listes, la plus courte ayant été complétée par des 0 à gauche pour avoir
2 listes de même longueur. Par exemple, completer([1,2], [3,4,5]) doit renvoyer [0,1,2],
[3,4,5].
2. En utilisant la fonction précédente, écrire une fonction addition qui prend en argument 2 listes
de chiffres entre 0 et 9, et qui renvoie la liste représentant l’addition des deux nombres dont
la suite des chiffres est donnée par les arguments. Par exemple, avec les arguments [1,2,3]
et [2,0], qui représentent les entiers 123 et 20, elle doit renvoyer [1,4,3] qui représente
143 = 123 + 20.
Résultats attendus avec le fichier fourni.
f1 (3 ,8) = 13
f2 (2 ,3 ,4) = 5
f2 (3 ,4 ,5) = -1
demi (6) = 3
demi (7) = 3
reste_et_parite (6) = [3 , 0]
reste_et_parite (7) = [3 , 1]
d e c o m p o s i t i on _ b a s e _ 2 (13) = [1 , 0 , 1 , 1]
d e c o m p o s i t i on _ b a s e _ 2 (15) = [1 , 1 , 1 , 1]
double_liste ([1 ,2 ,3 ,4 ,5]) = [2 , 4 , 6 , 8 , 10]
double_liste_rec ([1 ,2 ,3 ,4 ,5]) = [2 , 4 , 6 , 8 , 10]
renverse_liste ([1 ,2 ,3 ,4 ,5]) = [5 , 4 , 3 , 2 , 1]
re nv er se_ li st e_r ec ([1 ,2 ,3 ,4 ,5]) = [5 , 4 , 3 , 2 , 1]
completer ([1 ,2 ,3] , [2 ,0]) = ([1 , 4 , 3] , [0 ,2 ,0])
addition ([1 ,2 ,3] , [2 ,0]) = [1 , 4 , 3]
2
Téléchargement