P.C. Corrig du DEVOIR D’INFORMATIQUE N12017
Exercice 1 : collisions entre avions
Les plans de vol g´er´es par Eurocontrol sont mod´elis´es sous la forme d’une base de donn´ees
comportant deux tables :
la table vol qui r´epertorie les plans de vol d´epos´es par les compagnies a´eriennes ; elle contient
les colonnes
id vol : num´ero du vol (chaˆıne de caract`eres) ;
depart : code de l’a´eroport de epart (chaˆıne de caract`eres) ;
arrivee : code de la´eroport d’arriv´ee (chaˆıne de caract`eres) ;
jour : jour du vol (de type date, affich´e au format aaaa-mm-jj) ;
heure : heure de d´ecollage souhait´ee (de type time, affich´e au format hh :mi) ;
niveau : niveau de vol souhait´e (entier).
vol id vol depart arrivee jour heure niveau
AF1204 CDG FCO 2016-05-02 07 :35 300
AF1205 FCO CDG 2016-05-02 10 :25 300
AF1504 CDG FCO 2016-05-02 10 :05 310
AF1505 FCO CDG 2016-05-02 13 :00 310
la table aeroport qui r´epertorie les a´eroports europ´eens ; elle contient les colonnes :
id aero : code de l’a´eroport (chaˆıne de caract`eres) ;
ville : principale ville desservie (chaˆıne de caract`eres) ;
pays : pays dans lequel se situe l’a´eroport (chaˆıne de caract`eres).
aeroport id aero ville pays
CDG Paris France
ORY Paris France
MRS Marseille France
FCO Rome Italie
1. ´
Ecrire une requˆete SQL qui fournit le nombre de vols qui doivent d´ecoller dans la journ´ee
du 2 mai 2016 avant midi :
SELECT COUNT *
FROM vol
WHERE jour = ’2016-05-02’ AND heure <= ’12 :00’
2. ´
Ecrire une requˆete SQL qui fournit la liste des num´eros de vols au d´epart d’un a´eroport
desservant Paris le 2 mai 2016 :
SELECT id vol
FROM vol JOIN aeroport ON depart=id aero
WHERE jour = ’2016-05-02’ AND ville=’Paris’
3. La requˆete :
SELECT id vol
FROM vol JOIN aeroport AS d ON d.id aero = depart JOIN aeroport AS a ON a.id aero = arrivee
WHERE d.pays = ’France’ AND a.pays = ’France’ AND jour = ’2016-05-02’
donne la liste des num´eros des vols int´erieurs fran¸cais op´er´es le 2 mai 2016.
4. Une cl´e primaire d’une relation est un attribut (ou un liste d’attributs) qui, s’il est connu,
1
d´efinie un tuple et un seul de l’extension de cette relation. id vol une cl´e primaire de la table
vol,id aero une cl´e primaire de la table aeroport.
Exercice 2 : ´
Ecriture d’une fonction Python
from fractions import Fraction
def suite(N):
if N==0:
return [Fraction(4,1)]
if N==1:
return [Fraction(4,1),Fraction(3,1)]
else:
L=[Fraction(4,1),Fraction(3,1)]
for i in range(2,N+1):
L.append(L[-2]*Fraction(1,2)+L[-1]*Fraction(1,4))
return L
Pour Nplus grand que 3, on fait 3 op´erations, plus un ajout via append, donc 4 op´erations
´el´ementaires. Elles sont effectu´ees N-1 fois, donc au total 4N-4 fois. Si on ajoute l’affectation
initiale, 4N-3 op´erations ´el´ementaires : la complexit´e est en O(N).
Exercice 3 : Repr´esentations graphiques avec matplotlib.pyplot
import numpy as np
import matplotlib.pyplot as plt
def f(n,x):
return np.exp(-n*x)/(1+x+n)
X=np.linspace(0,5,50)
L=[0,1,5,10]
C=[’r’,’b’,’y’,’g’]
for i in range(4):
Y=f(L[i],X)
plt.plot(X,Y,C[i])
plt.show()
Exercice 4 : Lecture de scripts python
1. On consid`ere le script python suivant :
a=5
b=2
c=a
a=b
b=a
a=a+b
c=b+a
Quelle est la valeur de la variable capr`es l’ex´ecution ?
2 4 6 ou 8
2. On consid`ere la fonction python suivante :
2
def somme(L) :
for i in range(len(L)-1) :
S=S+L[i]
return S
Parmi les affirmations suivantes, indiquez celle ou celles qui sont vraies
A) somme([1,2,3,4]) renvoie 10 ;
B) somme([1,2,3,4]) renvoie 6;
C)somme([1,2,3,4]) renvoie un message d’erreur ;
D)Sest une variable locale.
S n’est pas initialis´ee.
3. On consid`ere la fonction python suivante :
def catan(n) :
if n%2==0 :
return n//2
else :
return 2*n+1
Parmi les affirmations suivantes, indiquez celle ou celles qui sont vraies
A) si nN, le r´esultat renvoe par catan est toujours un entier ;
B) si nN, le r´esultat renvoy´e par catan est toujours un entier impair ;
C) si nN, le r´esultat renvoe par catan est toujours un entier pair ;
D) si nN, le r´esultat renvoe par catan n’est jamais nul.
4. On consid`ere la fonction python suivante (Net Lsont des chaˆınes de caract`eres) :
def test(L,N) :
if len(L)<=len(N) :
bool=True
for i in range(len(L)) :
if L[i] !=N[i] :
bool=False
return bool
else :
return False
Parmi les affirmations suivantes, indiquez celle ou celles qui sont vraies
A) test(L,N) renvoie True si, et seulement si, les deux chaˆınes de caract`eres Let
Nsont distinctes ;
B) test(L,N) renvoie True si, et seulement si, les deux chaˆınes de caract`eres Let N
sont ´egales ;
C)test(”CONTROLE”,”CONTROLEUR”) renvoie True ;
D) test(”RIEN”,”AERIEN”) renvoie un message d’erreur.
5. On consid`ere le script python suivant :
L=[]
L.append(2)
L.append(3)
p=L.pop()
q=L.pop()
L.append(p)
L.append(q)
print (L)
Parmi les affirmations suivantes, indiquez celle ou celles qui sont vraies.
3
A) L’ex´ecution de ce script provoque une erreur ;
B) ce script affiche [2,3] ;
C)ce script affiche [3,2] ;
D) ce script affiche [2,3,2,3].
6. On consid`ere la fonction python suivante (o Pest une liste non vide d’entiers) :
def maxi(P):
m=P.pop()
while len(P)>0:
if m<P.pop():
m=P.pop()
return m
Parmi les affirmations suivantes, indiquez celle ou celles qui sont vraies.
A)maxi([3,2,1]) renvoie 3 ;
B)maxi([1,3,2]) renvoie 1 ;
C) maxi(P) renvoie le maximum des nombres de la liste P;
D) maxi([2,3]) renvoie une erreur.
4
1 / 4 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 !