Corrigé du contrôle N°1

publicité
P.C.
Corrig du DEVOIR D’INFORMATIQUE N◦ 1
2017
Exercice 1 : collisions entre avions
Les plans de vol gérés par Eurocontrol sont modélisés sous la forme d’une base de données
comportant deux tables :
⊲ la table vol qui répertorie les plans de vol déposés par les compagnies aériennes ; elle contient
les colonnes
• id vol : numéro du vol (chaı̂ne de caractères) ;
• depart : code de l’aéroport de départ (chaı̂ne de caractères) ;
• arrivee : code de laéroport d’arrivée (chaı̂ne de caractères) ;
• jour : jour du vol (de type date, affiché au format aaaa-mm-jj) ;
• heure : heure de décollage souhaitée (de type time, affiché au format hh :mi) ;
• niveau : niveau de vol souhaité (entier).
vol
id vol
AF1204
AF1205
AF1504
AF1505
depart
CDG
FCO
CDG
FCO
arrivee
FCO
CDG
FCO
CDG
jour
2016-05-02
2016-05-02
2016-05-02
2016-05-02
heure
07 :35
10 :25
10 :05
13 :00
niveau
300
300
310
310
⊲ la table aeroport qui répertorie les aéroports européens ; elle contient les colonnes :
• id aero : code de l’aéroport (chaı̂ne de caractères) ;
• ville : principale ville desservie (chaı̂ne de caractères) ;
• pays : pays dans lequel se situe l’aéroport (chaı̂ne de caractères).
aeroport
id aero
CDG
ORY
MRS
FCO
ville
Paris
Paris
Marseille
Rome
pays
France
France
France
Italie
1. Écrire une requête SQL qui fournit le nombre de vols qui doivent décoller dans la journée
du 2 mai 2016 avant midi :
SELECT COUNT *
FROM vol
WHERE jour = ’2016-05-02’ AND heure <= ’12 :00’
2. Écrire une requête SQL qui fournit la liste des numéros de vols au départ d’un aéroport
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ête :
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éros des vols intérieurs français opérés le 2 mai 2016.
4. Une clé primaire d’une relation est un attribut (ou un liste d’attributs) qui, s’il est connu,
1
définie un tuple et un seul de l’extension de cette relation. id vol une clé primaire de la table
vol, id aero une clé primaire de la table aeroport.
Exercice 2 : Écriture 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 N plus grand que 3, on fait 3 opérations, plus un ajout via append, donc 4 opérations
élémentaires. Elles sont effectuées N-1 fois, donc au total 4N-4 fois. Si on ajoute l’affectation
initiale, 4N-3 opérations élémentaires : la complexité est en O(N ).
Exercice 3 : Représentations 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ère 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 c après l’exécution ?
2 4 6 ou 8
2. On considère 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) S est une variable locale.
S n’est pas initialisée.
3. On considère 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 n ∈ N, le résultat renvoyé par catan est toujours un entier ;
B) si n ∈ N, le résultat renvoyé par catan est toujours un entier impair ;
C) si n ∈ N, le résultat renvoyé par catan est toujours un entier pair ;
D) si n ∈ N, le résultat renvoyé par catan n’est jamais nul.
4. On considère la fonction python suivante (N et L sont des chaı̂nes de caractères) :
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ères L et
N sont distinctes ;
B) test(L,N) renvoie True si, et seulement si, les deux chaı̂nes de caractères L et N
sont égales ;
C) test(”CONTROLE”,”CONTROLEUR”) renvoie True ;
D) test(”RIEN”,”AERIEN”) renvoie un message d’erreur.
5. On considère 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écution 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ère la fonction python suivante (o P est 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
Téléchargement