CPGE OUJDA
DS 2 (2TSI1)
PROBLEME1
Soit le schéma relationnel suivant :
REPRESENTATION (n°représentation,
titre_représentation, lieu)
MUSICIEN (nom, n°représentation*)
PROGRAMMER (date, n°représentation*, tarif)
Q1 - Donner la liste des titres des représentations.
Q2 - Donner la liste des titres des représentations ayant lieu à l'opéra Bastille.
Q3 - Donner la liste des noms des musiciens et des titres des représentations auxquelles ils participent.
Q4 - Donner la liste des titres des représentations, les lieux et les tarifs pour la journée du 14/09/96.
PROBLEME2
1. Écrire une fonction insertion_sort qui trie de manière croissante une liste donnée en pa- ramètre avec l’algorithme du tri par insertion.Compexité ?
2. Écrire une fonction in_list qui détermine si, oui ou non, une valeur donnée existe dans une liste triée. Utiliser la recherche dichotomique.Complexité ?
3. Écrire une fonction poly_sort qui reçoit une liste de polynômes, et une valeur x et qui trie cette liste en se basant sur l’ordre défini par la valeur des polynômes en x(Les polynômes sont représentés par les coefficients de leurs monômes). Par exemple :
p1
=
[4,
2,
3] ‘’’p1=4+2x+3x2 ’’’
p2 = [2, 1]
p3 = [2, -3, 4, 1]
p4 = [-1, 2]
ls = [p1, p2, p3, p4]
poly_sort(ls, 2)
print(ls) # ->[[-1, 2], [2, 1], [2, -3, 4, 1], [4, 2, 3]]
Vous utiliserez le tri par sélection.
Pour ce faire on décomposera la question en plusieurs fonctions :
a)Ecrire une fonction swap(ls, i1, i2): qui permute les éléments d’indices i1 et i2 de la liste ls
b)Ecrire une fonction min_pos_from(ls, i, x): qui retourne La position du min de ls en commençant en i.
c) Écrire une fonction p_eval qui évalue un polynôme en un x donné.
>>>
polynomial
=
[4,2,7,1]
>>> x = 2
>>> print(p_eval(polynomial,x))
44 ‘’’ .4*1+2*2+7*4+1*8=44’’’
d) Ecrire la fonction poly_sort(ls, x):
solutions
probleme1
Q1 - Donner la liste des titres des représentations.
R = PROJECTION(REPRESENTATION, titre_représentation)
Et en langage SQL...
SELECT
titre_représentation
FROM REPRESENTATION ;
Q2 - Donner la liste des titres des représentations ayant lieu à l'opéra Bastille.
R1 = SELECTION(REPRESENTATION, lieu="Opéra Bastille")
R2 = PROJECTION(R1, titre_représentation)
Et en langage SQL...
SELECT
titre_représentation
FROM REPRESENTATION
WHERE lieu="Opéra Bastille" ;
Q3 - Donner la liste des noms des musiciens et des titres des représentations auxquelles ils participent.
R1 = JOINTURE(MUSICIEN, REPRESENTATION, Musicien.n°représentation=Représentation.n°représentation)
R2 = PROJECTION(R1, nom, titre_représentation)
Et en langage SQL...
SELECT nom,
titre_représentation
FROM MUSICIEN INNER JOIN REPRESENTATION ON MUSICIEN.n°représentation =
REPRESENTATION.n°représentation ;
Q4 - Donner la liste des titres des représentations, les lieux et les tarifs pour la journée du 14/09/96.
R1 = SELECTION(PROGRAMMER, date=14/09/96)
R2 = JOINTURE(R1, REPRESENTATION,
R1.n°représentation=Représentation.n°représentation)
R3 = PROJECTION(R2, titre_représentation, lieu, tarif)
Et en langage SQL...
SELECT
titre_représentation, lieu, tarif
FROM REPRESENTATION INNER JOIN PROGRAMMER ON PROGRAMMER.n°représentation =
REPRESENTATION.n°représentation
WHERE date='14/06/96' ;