Jeudi 16 février 2023
12h30 14h30
Hiver 2023
Examen intra-trimestriel
IFT1015 Programmation I (H23)
Identification
Nom de famille
Prénom
Matricule
Examinateur: Louis-Edouard LAFONTANT
Date : Jeudi 16 février 2023 @ 12h30 14h30
INSTRUCTIONS
1. Les ordinateurs, téléphones ou toute autre aide électronique ne sont pas permis.
2. Aucune documentation n’est permise.
3. L’examen comporte 6 questions sur 8 pages (incluant cette page).
4. Répondre à toutes les questions directement sur cette fiche d’examen (stylos ou crayons).
5. Essayer de répondre à toutes les questions : des notes partielles pourront être attribuées
pour des réponses justes, mais incomplètes. Mentionner toute hypothèse émise.
6. L’usage strict de Python n’est pas exigé. Les erreurs de syntaxe mineures ne sont pas pénalisées.
7. Les dernières pages (vides) peuvent être utilisées comme brouillons ou espace additionnel
pour répondre aux questions. Dans ce dernier cas, veuillez inscrire le numéro de la question.
Bonne chance!
Question
Points
Note
1
15
2
10
3
20
4
20
5
15
6
20
TOTAL
100
lOMoARcPSD|37983408
Page | 2
Pour chacune des affirmations suivantes, dis si elle VRAI ou FAUX.
a) Une syntaxe suffit à définir un langage de programmation
VRAI FAUX
b) Le paradigme de programmation procédural suit un style impératif
VRAI FAUX
c) Tout code produit avec un langage de haut-niveau est traduit en code machine
VRAI FAUX
d) Le type de données influence la quantité de mémoire que prend une variable
VRAI FAUX
e) L’évaluation d’une expression ne produit pas toujours une valeur
VRAI FAUX
f) Soit laffectation a = 4 / 2.0. La variable a est de type int (nombre entier)
VRAI FAUX
g) L’opérateur « + » peut être utilisé avec des nombres et des chaines de caractère
VRAI FAUX
h) L’utilisateur est le seul à pouvoir fournir des données à un programme
VRAI FAUX
i) Toute condition écrit avec un énoncé « switch » peut être traduit en « if-else »
VRAI FAUX
j) x /= 4 - y est équivalent à x = x / 4 - y
VRAI FAUX
k) L’énoncé continue met immédiatement fin à l’exécution d’une boucle
VRAI FAUX
l) Si le nombre d’itérations dépend du corps de la boucle, « for » est plus pratique
VRAI FAUX
m) Dans l’appel de fonction, tous les paramètres doivent recevoir une valeur
VRAI FAUX
n) Si les arguments sont passés par mots-clés, l’ordre n’a pas d’importance
VRAI FAUX
o) Un nombre positif est encodé de la même façon en complément à 2 et non signé
VRAI FAUX
lOMoARcPSD|37983408
Page | 3
a) Python est un langage interprété. Qu’est-ce que cela veut dire? Distingue un autre type de langage en
lien avec l’exécution du code.
4 points
L’appellation « langage interprété » fait référence au mode d’exécution du code. Pour ce type de langage, un interpréteur est
utilisé pour exécuter le code. L’interpréteur traduit progressivement chaque instruction du code source en instruction
machine, traduisant une phase menant à l’exécution. Ceci permet plus de flexibilité et facilite les tests. En comparaison,
d’autres langages dits « compilés » utilisent un compilateur qui transforme tout le code source avant de l’exécuter, traduisant
2 phases.
b) Python est un langage de programmation de haut niveau. Qu’est-ce que cela veut dire en termes
d’abstraction?
3 points
Le besoin d’abstraction est le principal facteur motivant la création des langages de programmation. Afin de faciliter lécriture
et la compréhension des programmes, des structures plus simples à comprendre sont introduites, dissimulant la complexité
matérielle ou de plus bas niveau. Ainsi un langage de haut niveau comme Python offre des éléments de construction
(syntaxe, structure, type de données) absents dans les langages de bas niveau comme le langage Assembleur.
c) De nombreux langages supportent la boucle do-while. Quelle est la différence avec une boucle while?
Est-il possible de faire une boucle do-while en Python?
3 points
Contrairement à la boucle « while », une boucle « do-while » effectue au minimum une itération sur le corps de la boucle.
Ceci est du à la vérification de la condition qui vient après l’exécution du corps de la boucle. Python ne supporte pas
nativement la boucle « do-while », mais il est possible de le simuler.
lOMoARcPSD|37983408
Page | 4
20 points
1
secret = "cr7_sos1!"
2
tour, point, fin = 1, 0, False
3
4
def jouer(tour, multiple = False):
5
global point, fin
6
dec = 1
7
while tour > 0:
8
point += tour
9
fin = fin or str(point) in secret
10
tour -= dec
11
12
while not fin:
13
jouer(tour)
14
15
point = max(point, 10.0)
16
print("Score:", point)
a) Identifie les variables globales et locales présentes dans ce programme.
7 points
Variables globales :
secret, tour, point, fin
Variables locales :
tour, multiple, dec
b) Pour chaque variable, indique les différentes valeurs prises au cours de l’exécution en précisant le type.
10 points
secret: cr7_sos1! [string]
tour (global): 1 [int]
point: 0 [int] > 1 [int] -> 10.0 [float]
fin: False [bool] > True [bool]
tour (local): 1 [int] > 0 [int]
multiple: False [bool]
dec: 1 [int]
c) Qu’affiche ce programme?
3 points
Score : 10.0
lOMoARcPSD|37983408
Page | 5
Pour chaque bloc de code ci-dessous, indique ce qu’affiche l’exécution du code.
a = 3 + 2.0
print(a)
x = 3 >> 2 == 12
print(x)
a) 5.0
/1
b) False (3 >> 2 = 0)
/1
a, b, c = 3, 5, 9
b, a, c = a * b, c, 0
print(a, b, c)
x, y, z = "ca", "o", 2
z = x * z + y
print(z)
c) 9 15 0
/2
d) cacao (ca*2 + o = caca + o = cacao)
/2
def echo():
print("Allo!")
return False
correct = "Bateau" > "Barc"
if correct & echo():
print("Ola!")
def knock():
print("knock knock")
return False
ouvert = 2 & 1 == 0
if ouvert or knock():
print("Yo!")
e) Allo!
/3
f) Yo! (knock n’est pas appelée)
/3
a = max(1 ** 10, 5, 20 >> 2)
b = "a" * a ** 2
if b > "b":
print("Vraiment?!")
elif len(b) < 50:
print(a // 2)
else:
print(a / 2.0)
a = min(3, 1 >> 5, 0) ** 10 + 1
b = "A" * 3 if a > 0 else "B"
match b:
case "AB" | "BA": print("100!")
case "A": print("Plus ultra!")
case "ABA": print(a)
case "B": print("OK")
case _: print("1" * 2 + str(float(1)))
g) 2
/4
h) 111.0
/4
= "a" * 5 ** 2 = "a" * 25 ="aaaa"
Division entière
echo() retourne False
Évaluation paresseuse
"1.0"
"11"
lOMoARcPSD|37983408
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !