Langages et programmation Terminale
Langages et programmation (Terminale) - Récursivité
n°1397
Test récursif
On a saisi le code suivant :
def mystere(n):
if n>0 :
return mystere(n-2)
else :
return n==0
mystere(4)
- 0
- False
- True
- L'exécution génère une erreur.
Langages et programmation (Terminale) - Récursivité
n°1398
Fonction récursive
Laquelle de ces fonctions retourne True lorsqu'on exécute :
f(5)
-
def f(n): if n==0 : return True else : return f(n-2)
-
def f(n): if n<=0 : return True else : f(n-2)
-
def f(n): if n<=0 : return True return f(n-2)
-
def f(n): if n==0 : return True f(n-2)
Langages et programmation (Terminale) - Récursivité
n°1399
Affichages récursifs
On a saisi le code suivant :
def affiche(n):
print(n)
if n>=0:
affiche(n-1)
affiche(3)
-
3 2 1 0
-
0 1 2 3
-
3 2 1 0 -1
-
3
Langages et programmation (Terminale) - Récursivité
n°1400
Fonction récursive de deux variables
Une seule des fonctions définies ci-dessous retourne 'ccccc'
Ă l'appel de replique(5,'c')
. Déterminer laquelle.
-
def replique(a,b): if a==1: return b else : return replique( a-1 , b+b)
-
def replique(a,b): if a==1: return b elif a%2 == 0: return replique( a-2 , b+b) else : return b + replique( a-2 , b+b)
-
def replique(a,b): if a==1: return b elif a%2 == 0: return replique( a//2 , b+b) else : return b + replique( a//2 , b+b)
-
def replique(a,b): if a==1: return b else : replique( a-1 , b+b)
Langages et programmation (Terminale) - Récursivité
n°1401
Fonction récursive et type str
On a saisi le code suivant :
def copy(n,s):
if n==0:
return s
return copy(n-1, s+s)
copy(3,'A')
?
-
'AAA'
-
'AAAAAA'
-
'AAAAAAAA'
-
'3A'
Langages et programmation (Terminale) - Récursivité
n°1402
Affichages récursifs
On a saisi le code suivant :
def affiche(n):
if n>0:
affiche(n-1)
print(n)
affiche(3)
-
3 2 1 0
-
3 2 1
-
0 1 2 3
-
1 2 3
Langages et programmation (Terminale) - Récursivité
n°1403
Fonction récursive et type str
On a saisi le code suivant :
def mystere(n,s):
if n==0:
return s
return s + mystere(n-1, s)
mystere(3,'$')
?
-
'$$$'
-
'$2$'
-
'$$$$'
- L'exécution déclenche une erreur
Langages et programmation (Terminale) - Récursivité
n°1404
Fonction récursive et assertion
On a saisi le code suivant :
def g(n):
assert n>=0
if n==0 :
return 1789
else :
return g(n-2)
g(3)
?
-
1789
-
1
-
AssertionError
-
RecursionError
Langages et programmation (Terminale) - Récursivité
n°1405
Fonction récursive de deux variables
On a saisi le code suivant :
def f(a,b):
if a == 0 :
return b
return f(a-1, b+1)
f(3,4)
?
- 4
- 5
- 6
- 7
Langages et programmation (Terminale) - Récursivité
n°1406
Test récursif
On a saisi le code suivant :
def mystere(n):
if n>0 :
return mystere(n-2)
else :
return n==0
mystere(3)
- True
- False
- RecursionError
- 0
Langages et programmation (Terminale) - Modularité
n°1504
Modularité
Parmi les lignes suivantes, trouver celle qui ne permet pas d'importer et d'utiliser la totalité du module itertools :
- import itertools
- import itertools as itt
- from itertools import cycle
- Je ne sais pas...
Langages et programmation (Terminale) - Modularité
n°1505
Débogage
Quel message d'exception s'affiche si on tente d'exécuter le code suivant ?
a = 1
for i in range(3):
print('i = {}, a = {}'.format(i, a)
a = 2 * a
- NameError
- SyntaxError
- IndexError
- IndentationError
Langages et programmation (Terminale) - Modularité
n°1506
Messsage d'erreur
Quel message d'exception s'affiche si on tente d'exécuter le code suivant ?
v = 1
while v < 100:
if v % 7 == 0:
print(v, 'est un multiple de 7')
else:
print(v, 'n'est pas un multiple de 7')
v = v + 1
- NameError
- SyntaxError
- IndexError
- IndentationError
Langages et programmation (Terminale) - Paradigmes
n°1518
Auteur G. Conan
On considère la classe Objet_3D suivante : :
class Objet_3D:
def __init__(self, xVal, yVal, zVal, L, H, P):
self.x = xVal
self.y = yVal
self.z = zVal
self.Longueur = L
self.Hauteur = H
self.Profondeur = P
def Volume(self):
return self.Longueur * self.Hauteur * self.Profondeur
def Translation(self, dx, dy, dz):
self.x = self.x + dx
self.y = self.y + dy
self.z = self.z + dz
- Volume(o)
- o.Volume(self)
- o.Volume()
- Volume(self)
Langages et programmation (Terminale) - Paradigmes
n°1521
On a saisi le code suivant :
class Point :
def __init__(self, x, y) :
self.px, self.py = x, y
class Segment :
”””Classe conteneur utilisant la classe Point.”””
def __init__(self, x1, y1, x2, y2) :
self.orig = Point(x1, y1)
self.extrem = Point(x2, y2)
def __str__(self) :
return (”Segment : [({ :g}, { :g}), ({ :g}, { :g})]”
.format(self.orig.px, self.orig.py,
self.extrem.px, self.extrem.py))
s = Segment(1.0, 2.0, 3.0, 4.0)
print(s)
- Segment : [(1, 2), (3, 4)]
- Segment : [(1.0, 2.0), (3.0, 4.0)]
- Segment : 1, 2, 3, 4
- Segment : [(4, 3), (2, 1)]
Langages et programmation (Terminale) - Paradigmes
n°1522
On a saisi le code suivant :
class Point :
def __init__(self, x, y) :
self.px, self.py = x, y
class Segment :
”””Classe conteneur utilisant la classe Point.”””
def __init__(self, x1, y1, x2, y2) :
self.orig = Point(x1, y1)
self.extrem = Point(x2, y2)
def __str__(self) :
return (”Segment : [({ :g}, { :g}), ({ :g}, { :g})]”
.format(self.orig.px, self.orig.py,
self.extrem.px, self.extrem.py))
s = Segment(4.0, 3.0, 2.0, 1.0)
print(s)
- Segment : [(1, 2), (3, 4)]
- Segment : [(4, 3), (2, 1)]
- Segment : [(1.0, 2.0), (3.0, 4.0)]
- Segment : 1, 2, 3, 4
Langages et programmation (Terminale) - Récursivité
n°1571
Compléter la fonction
On propose de créer une fonction récursive permettant de calculer \(x^n\)
Pour compléter la fonction proposée :
def puissance(x,n):
if n > 0 :
return .......
return 1
-
puissance(x,n-1)
-
x*puissance(x,n-1)
- Quoi que l'on écrive, cette fonction ne donnera pas le résultat attendu.
-
x**(n-1)*puissance(x,n-1)
Langages et programmation (Terminale) - Récursivité
n°1572
Que fait cette fonction ?
On exécute les lignes suivantes :
def ed(L,M=[]):
if len(L) == 0 : return M
a=L.pop()
if a not in M : M.append(a)
return ed(L,M)
L=[2, 3, 2, 6, 8, 9, 9, 10, 9, 3, 6, 7, 8, 8, 9]
print(ed(L))
-
None
-
[9, 8, 7, 6, 3, 10, 2]
-
[9, 8, 8, 7, 6, 3, 9, 10, 9, 9, 8, 6, 2, 3, 2]
-
[2, 10, 3, 6, 7, 8, 9]
Langages et programmation (Terminale) - Récursivité
n°1573
Que retourne le programme suivant ?
def A(x):
if x <= 1 : return x
return B(x+1)
def B(x) :
return A(x-2)+4
print(A(4))
-
13
-
1
-
12
- Une erreur de type : 'RecursionError: maximum recursion depth exceeded in comparison '
Langages et programmation (Terminale) - Autres
n°1605
Langage C
Quel est le contenu du tableau tab Ă la fin de ce programme ?
unsigned int i;
unsigned int tab[5] = {1,2,3,4,5};
for (i=0;i<5;i++) {
tab[i] = tab[i]*i;
}
- {2,3,4,5,6}
- {0,2,6,12,20}
- {5,4,3,2,1}
- {1,2,3,4,5}
Langages et programmation (Terminale) - Autres
n°1606
Langage C
Que va afficher ce programme ?
unsigned int i, j;
i=0;
j=0;
while (i<3) {
j=j+i;
i++;
}
printf('%d',j);
- 6
- 0
- 3
- %d,3
Langages et programmation (Terminale) - Autres
n°1607
Langage C
Le langage C est un langage ...
- compliqué.
- interprété.
- compilé.
- de l'antiquité.
Langages et programmation (Terminale) - Autres
n°1615
On a saisi le code suivant en langage C :
unsigned char a;
unsigned char i;
a=5;
for(i=0;i<2;i++)
a=2*a;
a++;
- 0
- 21
- 23
- 5
Langages et programmation (Terminale) - Récursivité
n°1743
Algorithme d'Euclide
Rappel : Cet algorithme permet de déterminer le Plus Grand Diviseur Commun de deux nombres entiers non nuls.
Il agit par divisions euclidiennes successives, par exemple avec 42 et 24 :
\(42=1\times24 + 18\)\(24=1\times18 + 6\)\(18=3\times6 + 0\)
Le dernier reste non nul est le PGCD des deux nombres ; dans l'exemple : 6 est le PGCD de 42 et 24.
Le code suivant est incomplet, il manque l'appel récursif :
def pgcd_recursif(a, b):
if b == 0:
return a
else:
...
-
return pgcd_recursif(a, b)
-
return pgcd_recursif(b, a % b)
-
return pgcd_recursif(a % b, b)
-
return pgcd_recursif(a // b, a % b)
Langages et programmation (Terminale) - Récursivité
n°1744
Pas récursif alors...
Un algorithme contenant des boucles sans appels récursifs est dit :
- itératif
- instructif
- impératif
- peu élégant
Langages et programmation (Terminale) - Récursivité
n°1745
À partir de la version récursive
On a créé une fonction récursive mystere :
def mystere(T, n=0):
if n == len(T) // 2: return T
T[n], T[-1 - n] = T[-1 - n], T[n]
return mystere(T, n + 1)
-
def mystere(T): n = len(T) // 2 for i in range(n): T[i], T[-1 - i] = T[-1 - i], T[i] return T
-
def mystere(T): n = len(T) // 2 for i in range(n): T[i], T[-n - i] = T[-n - i], T[i] return T
-
def mystere(T): n = len(T) for i in range(n): T[i], T[-1 - i] = T[-1 - i], T[i] return T
-
def mystere(T): n = len(T) // 2 for i in range(n): T[i], T[n - i] = T[n - i], T[i] return T
Langages et programmation (Terminale) - Mise au point
n°1747
Mutateur d'un attribut
Voici la définition incomplète d'une classe Couleur.
class Couleur:
def __init__(self, t):
self.r, self.g, self.b = t
def rgb_vers_hex(self):
return f'#{self.r:02x}{self.g:02x}{self.b:02x}'
def change_r(self, nouveau_r):
'''Permet de changer la composante rouge de la couleur
précondition: nouveau_r doit être un entier
'''
...
def __str__(self):
return f'({self.r}, {self.g}, {self.b})'
-
assert isinstance(nouveau_r, int) if nouveau_r >= 0 and nouveau_r <= 255: self.r = nouveau_r else: raise ValueError('Valeur inappropriée')
-
if nouveau_r >= 0 and nouveau_r <= 255 and isinstance(nouveau_r, int): self.r = nouveau_r else: raise ValueError('Valeur inappropriée')
-
self.r = nouveau_r
-
if nouveau_r >= 0 and nouveau_r <= 255: self.r = nouveau_r else: raise ValueError('Valeur inappropriée')
Langages et programmation (Terminale) - Autres
n°1854
Algorithme d'Euclide
Rappel : Cet algorithme permet de déterminer le Plus Grand Diviseur Commun de deux nombres entiers non nuls.
Il agit par divisions euclidiennes successives, par exemple avec 42 et 24 :
\(42=1\times24 + 18\)\(24=1\times18 + 6\)\(18=3\times6 + 0\)
Le dernier reste non nul est le PGCD des deux nombres ; dans l'exemple : 6 est le PGCD de 42 et 24.
Le code suivant est incomplet, que manque-til ?:
def pgcd(a, b):
if a < b:
a, b = b , a
...
-
while b > 0: a, b = a // b, a % b return a
-
while b > 0: a, b = a, a % b return a
-
while b < 0: a, b = a, a % b return a
-
while b > 0: a, b = b, a % b return a
Langages et programmation (Terminale) - Modularité
n°1935
Module
Le module module2 contient la fonction ma_fonction.
Dans un programme, on trouve l'instruction suivante : import module2
Quelle instruction permet alors d'accéder à ma_fonction dans le programme ?
- module2.ma_fonction()
- ma_fonction()
- module2->ma_fonction()
- On ne peut pas y accéder car elle n'est pas dans l'espace de nommage.
Langages et programmation (Terminale) - Modularité
n°1936
Module
En Python, un module :
- est forcément un programme compilé en C
- peut ĂŞtre n'importe quel fichier d'extension .py
- doit être installé dans le répertoire de l'interpréteur
- ne peut contenir que des fonctions
Langages et programmation (Terminale) - Modularité
n°1937
Module
Parmi ces affirmations sur les espaces de noms, laquelle sont vraie ?
- Ils lient les noms de variables avec leur valeur.
- Ils ne sont utilisés que pour les fonctions contenues dans les modules.
- Ils persistent après la fin de l'exécution du programme.
- Ils assurent l'unicité des noms de variables.