Aller au contenu

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
Que retourne la commande suivante ?
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)
Quel affichage obtient-on en exécutant 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)
Que retourne l'instruction 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)
Quel affichage obtient-on en exécutant 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)
Que retourne l'instruction : 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)
Qu'obtient-on en exécutant la commande 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)
Que retourne la commande 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
Que retourne la commande : 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
Si o est une instance de la classe Objet_3D, pour calculer le volume de o, l'instruction correcte est :

  • 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)
Que contient la variable s à la fin de l’exécution de ce script ?

  • 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)
Que contient la variable s à la fin de l’exécution de ce script ?

  • 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
Que doit-on écrire à la place des pointillés ?

  • 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))
Que renvoi ce programme en console ?

  • 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++;
Que contient la variable a à la fin de l’exécution de ce programme ?

  • 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:
        ...
Parmi les lignes suivantes, quelle est la correcte ?

  • 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)
Parmi les réponses suivantes, quelle est sa version itérative ?

  • 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})'
Parmi les codes suivants lequel est le plus convenable pour la méthode change_r ?

  • 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
    ...
Parmi les lignes suivantes, quelle est la correcte ?

  •     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.