Correction du DS0100⚓︎
Exercice 1: TAD/Programmation⚓︎
-
Premier passage: 4-9-8-7-4-2 puis 4-8-7-4-2 puis 4-8-4-2
Deuxième passage: 4-4-2
Troisième passage: 4-2 (la pile est gagnante)
-
La pile gagnante est la pile B.
3.
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 |
|
-
a. Il faut au minimum 3 éléments pour pouvoir simplifier et qu'il n'en reste que deux.
b.
1 2 3 4 5 6 7 8 9
def parcourir_pile_en_reduisant(p): q = Pile() while taille(p) >= 3: reduire_triplet_au_sommet(p) elt = p.depiler() q.empiler(elt) while not est_vide(q): elt = q.depiler() p.empiler(elt)
c.
1 2 3 4 5 6 7
def jouer(p): t = taille(p) parcourir_pile_en_reduisant(p) if t == taille(p) : # si après réduction la taille est la même, c'est terminé return p # on renvoie la pile else: return jouer(p) # sinon on recommence
Exercice 2: Bases de données/SQL⚓︎
-
a. La clé primaire d’une relation est un attribut (ou plusieurs attributs) dont la valeur permet d'identifier de manière unique un enregistrement (p-uplet) de la relation.
b. Une clé étrangère est un attribut qui permet d’établir un lien entre deux relations.
c. Un abonné ne peut pas réserver plusieurs fois la même séance, car le couple
idAbonné, idSéance
est une clé primaire pour la relation Réservation. Il est donc impossible d’avoir deux fois la même séance pour le même abonné. -
a. On complète le tableau avec dans l'ordre les valeurs 13, 737, 3 et 2.
b. En SQL on obtient:
INSERT INTO Reservation VALUES (13, 737, 3, 2);
-
Cette requête permet de déterminer le nombre de séances proposées les 10 et 11 janvier 2023.
-
En SQL on obtient les requêtes:
a.
SELECT nom, prenom FROM Abonne;
b.
SELECT titre, realisateur FROM Film WHERE duree < 120;
c.
SELECT Film.titre, Film.duree FROM Film JOIN Seance ON Film.idFilm = Seance.idFilm WHERE Seance.date = '2023-01-14' AND Seance.heure = '21:00';
-
a. On obtient:
UPDATE Film SET duree = 161 WHERE titre = 'Wakanda forever';
b.
idSéance
est une clé étrangère pour la relation Réservation. La suppression d’une séance risque donc de provoquer des problèmes dans la relation Réservation (avec unRéservation.idSéance
ne correspondant à aucunSéance.idRéservation
). Cela pourrait enfreindre la contrainte de référence.c. On l'écrirait:
DELETE FROM Seance WHERE idSeance = 135;