FEDERATION EUROPEENNE DES ECOLES FEDERATION FOR EDUCATION IN EUROPE OING dotée
FEDERATION EUROPEENNE DES ECOLES FEDERATION FOR EDUCATION IN EUROPE OING dotée du statut participatif auprès du Conseil de l’Europe INGO enjoying participatory status with the Council of Europe © Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018 UC D31 Etude de cas informatique et réseaux - Epreuve commune - Sujet UE D - TECHNIQUES PROFESSIONNELLES Bachelor européen en informatique et réseaux UC D31 - Epreuve commune Matériel autorisé : Calculatrice standard/scientifique non programmable et non graphique Règle à dessiner les symboles informatiques Oracle SQL (Versions 9i et 10g) Mémento MySQL 5 Type d’épreuve : Rédaction (Etude de cas) Durée : 2 heures Session : Juin 2018 © Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018 UC D31 Etude de cas informatique et réseaux - Epreuve commune - Sujet 2/7 UC D31 - INFORMATIQUE ET RESEAUX EPREUVE COMMUNE BAREME DE NOTATION Dossier 1 - SQL et algèbre relationnelle 50 points Dossier 2 - Diagramme PERT 20 points Dossier 3 - Programmation 40 points Présentation et orthographe 10 points Total 120 points © Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018 UC D31 Etude de cas informatique et réseaux - Epreuve commune - Sujet 3/7 Dossier 1 - SQL et algèbre relationnelle La mairie du village de Cordes-sur-Ciel gère l’occupation des places de son marché, qui se tient tous les samedis, avec un SGBD contenant les tables relationnelles suivantes : Places(noP, noCat, surface, distance) Categories(noCat, libCat, prixJ) Marchands(noM, nomM, addM, speM) Occupations(noPP, noMM, date_Occup) Bien que pour un jour du marché donné, un marchand n’occupe qu’une seule place et qu’une place du marché n’est occupée que par un seul marchand, la mairie impose que la base de données prenne en compte les occupations des places du marché dans le temps. La mairie exige de pouvoir enregistrer qu’un marchand a occupé la même place plusieurs jours de marché dans l’année. De même, qu’une place du marché peut être occupée par plusieurs marchands dans plusieurs jours de marché dans l’année. Toutes les places du marché sont stockées dans la table Places. Chaque place est identifiée par un numéro (noP) et appartient à une catégorie de prix (noCat) qui dépend de la surface (surface) de la place (en m2) et de la distance (distance) de la place de la supérette du village (en m). Les différentes catégories de prix sont stockées dans la table Categories. Chaque catégorie est identifiée par un numéro (noCat), par un libellé (libCat) et est défini par le prix journalier (prixJ) en euros. Les données sur les marchands sont stockées dans la table Marchands. Chaque marchand est identifié par son numéro (noM), son nom (nomM), son adresse (addM) et sa spécialité (speM). Les données d’occupation sont stockées dans la table Occupations. Chaque occupation est définie par le numéro de la place (noPP), le numéro du marchand (noMM) et la date d’occupation (date_Occup). Question 1 Dessinez un schéma entité-association du schéma relationnel précédent. Question 2 Quelle est la commande, en algèbre relationnelle, qui permet de donner les numéros des places avec une surface supérieure à 20 m2 et une distance inférieure à 100 mètres de la supérette du village ? Question 3 Quelle est la commande, en SQL, qui permet de donner les numéros et la surface des places dont le prix est de 20 euros et qui se trouvent à moins de 100 mètres de la supérette du village ? Question 4 Quelle est la commande, en SQL et en algèbre relationnelle, qui permet de donner toutes les places qui n’ont pas été occupées depuis le 20 mars 2015 ? Question 5 Quelle est la commande, en SQL, qui permet de trouver le numéro de la place qui est la plus proche de la supérette du village ? Question 6 Quelle est la commande, en SQL, qui permet de calculer la surface totale des places non- occupées du marché ? © Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018 UC D31 Etude de cas informatique et réseaux - Epreuve commune - Sujet 4/7 Soit les deux requêtes en algèbre relationnelle : a) π [nomM] (σ [date_occup = ‘22/10/2016’ ∧ speM = ‘Boulanger’]( Marchands* ( noM = noMM ) Occupations )) b) π [nomM] ((σ [date_occup = ‘22/10/2016’] Marchands)* ( noM = noMM) (σ [speM = ‘Boulanger’] Occupations)) Question 7 Que calcule la requête algébrique a) ? Question 8 Est-ce que les requêtes a) et b) retournent le même résultat ? Citez au moins une règle qui justifie votre réponse. Question 9 Est-ce que l’une des deux requêtes est meilleure que l’autre si on considère leurs deux plans d’exécution ? Expliquez votre réponse. Question 10 Quelle est la commande qui permet d’afficher pour chaque marchand le nom, le numéro de place et le nombre de fois où il occupe cette place ? Question 11 Quelle est la commande, en SQL, qui permet d’afficher le prix moyen des places occupées par le marchand numéro 33 ? Question 12 Quelle est la commande qui permet d’afficher le numéro de place et son type ? Les places sont regroupées en types de la façon suivante : type 1 pour les places dont le prix est de ]0 à 100], type 2 pour les places dont le prix est supérieur à 100. Rappel : ✓ SIGN(x) est une fonction SQL qui donne -1 si x<0, 0 si x=0 et +1 si x>0 ; ✓ DECODE(x, Val1, RES1, Val2, RES2, .., Valn, RESn, Default) est une fonction SQL. Si x=Val1, DECODE retourne RES1, …, Si x=Valn, DECODE retourne RESn. Si x n’est pas égal à Val1, Val2, ., ou Valn alors DECODE retourne la valeur par défaut Default. © Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018 UC D31 Etude de cas informatique et réseaux - Epreuve commune - Sujet 5/7 Dossier 2 - Diagramme PERT La mairie du village de Cordes-sur-Ciel a décidé de construire un marché en dur pour loger les marchands plusieurs jours par semaine. Tableau des tâches Les tâches La durée des tâches en jours A. Etude, réalisation et acceptation des plans 4 B. Préparation du terrain 2 C. Commande matériaux (bois, briques, ciment, tôle, etc.) 1 D. Creusage des fondations 1 E. Commandes portes, fenêtres 2 F. Livraison des matériaux 2 G. Coulage des fondations 2 H. Livraison portes, fenêtres 10 I. Construction des murs, du toit 4 J. Mise en place des portes et des fenêtres 1 Question 1 Donnez le tableau des antériorités des tâches. Question 2 Tracez le réseau PERT de construction du marché. Question 3 Expliquez et donnez le chemin critique. © Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018 UC D31 Etude de cas informatique et réseaux - Epreuve commune - Sujet 6/7 Dossier 3 - Programmation Soit le programme en langage C suivant : #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <pthread.h> extern void gros_calcul(); extern void petit_calcul(); extern void modifie_compteurs(int *, int *); extern int on_continue(int); pthread_mutex_t Mut1=PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t Mut2=PTHREAD_MUTEX_INITIALIZER; void *second_thread() { while (on_continue(compteur_commun1)) { gros_calcul(); pthread_mutex_lock(&Mut2); pthread_mutex_lock(&Mut1); modifie_compteurs(&compteur_commun1, &compteur_commun2); pthread_mutex_unlock(&Mut1); pthread_mutex_unlock(&Mut2); } pthread_exit(NULL); return(NULL); } int main() { pthread_t th; int compteur_commun1 = 0; int compteur_commun2 = 0; /* On crée le second thread */ if ((pthread_create(&th, NULL, second_thread, NULL))!=0) { fprintf(stderr, "Erreur pthread_create()\n"); exit(-1); } while (on_continue(compteur_commun1)) { pthread_mutex_lock(&Mut1); pthread_mutex_lock(&Mut2); modifie_compteurs(&compteur_commun1, &compteur_commun2); pthread_mutex_unlock(&Mut2); pthread_mutex_unlock(&Mut1); petit_calcul(); pthread_mutex_lock(&Mut1); compteur_commun1++; pthread_mutex_unlock(&Mut1); } pthread_join(th, NULL); pthread_mutex_destroy(&Mut1); pthread_mutex_destroy(&Mut2); © Fédération Européenne Des Ecoles - Federation for EDucation in Europe - Juin 2018 UC D31 Etude de cas informatique et réseaux - Epreuve commune - Sujet 7/7 return(0); } Dans ce programme, les fonctions gros_calcul() et petit_calcul() effectuent quelques calculs pendant une durée indéterminée. La fonction on_continue() retourne 0 quand le programme doit se terminer. Rien ne nous permet de savoir à l'avance combien de fois cette fonction sera appelée avant de retourner un nombre nul qui permettra aux deux threads de sortir de leur boucle. Enfin, la fonction modifie_compteurs() modifie les deux variables compteur_commun1 et compteur_commun2. Question 1 Qu'est-ce qu'un thread ? Quel est l'avantage d'un thread par rapport à un processus classique ? Question 2 Quels sont les deux types de thread ? Pour chacun d'eux, précisez les avantages/inconvénients. Question 3 Dans le code donné, le programmeur a effectué deux erreurs conceptuelles fondamentales. Une d'entre elles sera d'ailleurs détectée par le compilateur. La seconde pourra engendrer un comportement non désiré. Quelles sont ces deux erreurs ? Proposez une correction au code pour les éviter. uploads/Ingenierie_Lourd/ deesinf-d31-a-cpreuve-commune-sujet-juin-2018.pdf
Documents similaires










-
24
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jul 08, 2022
- Catégorie Heavy Engineering/...
- Langue French
- Taille du fichier 0.2644MB