Genie logiciel igl234
Thème :
Junior
1 vues ·15/19 leçons

EXAMEN NORMAL — IGL234 : GÉNIE LOGICIEL & BASES DE DONNÉES

Session 2

Module : IGL234 — Génie Logiciel & Bases de Données
Niveau : Licence en Informatique
Durée : 3 heures | Note totale : 20 points
Année académique : 2025–2026

Consignes générales : Les quatre (4) parties sont indépendantes. Toutes les questions sont obligatoires. Soignez la présentation, justifiez vos réponses et rédigez les algorithmes dans le formalisme pseudo-code vu en cours.



PARTIE I — Techniques de Tris et de Recherche

Barème : 5 points | Durée conseillée : 45 min

Contexte professionnel

Vous êtes développeur(se) dans la direction informatique de la Banque Atlantique Yaoundé. Le directeur des opérations vous demande de concevoir deux modules algorithmiques pour traiter la liste des numéros de comptes clients (représentés par des entiers) stockés dans un tableau en mémoire vive. Il s’agit d’optimiser les traitements quotidiens de la banque.


Exercice 1 — Technique de Tri à Bulle (2,5 points)

Le service informatique dispose d’un tableau Comptes[1..80] contenant les numéros de 80 comptes bancaires (des entiers naturels) dans un ordre quelconque.

Travail demandé :

  1. (0,5 pt) Expliquez en vos propres mots le principe du tri à bulle (3 à 5 lignes). Pourquoi appelle-t-on cet algorithme « tri à bulle » ?

  2. (1,5 pt) Écrivez une procédure algorithmique TrierComptes qui :

    • Prend en entrée le tableau Comptes[1..80] d’entiers naturels et la taille n = 80.
    • Applique le tri à bulle pour classer les numéros de comptes dans l’ordre croissant (du plus petit au plus grand).
    • Affiche tous les numéros triés à l’écran.

    Utilisez les variables i, j, temp (entiers) conformément à l’algorithme du cours.

  3. (0,5 pt) Un collègue propose d’utiliser le tri par sélection à la place. Donnez une différence fondamentale entre le tri à bulle et le tri par sélection du point de vue du nombre d’échanges effectués.


Exercice 2 — Technique de Recherche Séquentielle avec Sentinelle (2,5 points)

Un conseiller clientèle cherche rapidement dans le tableau Comptes[1..80] (non trié à ce stade) si le compte numéro N_Cible existe parmi les comptes de la banque.

Travail demandé :

  1. (0,5 pt) Expliquez le rôle de la sentinelle dans la recherche séquentielle. Quel problème technique résout-elle par rapport à la recherche séquentielle simple ?

  2. (1,5 pt) Écrivez une fonction RechercherCompte qui :

    • Prend en paramètres : le tableau Comptes[1..80], la taille N = 80, la valeur cible N_Cible (entier), et une variable pos (entier, passé en référence).
    • Place la sentinelle à la position N+1 du tableau.
    • Retourne Vrai et mémorise la position dans pos si le compte est trouvé, Faux sinon.
  3. (0,5 pt) La recherche séquentielle avec sentinelle est-elle applicable si le tableau est trié ? Est-elle plus efficace que la recherche dichotomique dans ce cas ? Justifiez brièvement.



PARTIE II — Concepts de Normalisation (1NF, 2NF, 3NF)

Barème : 5 points | Durée conseillée : 50 min

Contexte professionnel

Vous rejoignez le service informatique de l’Hôpital Central de Bafoussam. Le médecin-chef souhaite informatiser le suivi des consultations médicales. Une secrétaire a tenu jusqu’ici un registre papier retranscrit dans Excel, que l’on vous remet pour créer la base de données relationnelle du service.


Exercice 1 — Vérification de la 1NF et passage à la 2NF (2,5 points)

Voici la table brute issue du registre Excel :

Table CONSULTATION (non normalisée) :

N°Consult DateConsult Matricule_Pat NomPatient Maladies_Diagnostiquées Code_Med NomMédecin Service_Med
C001 2026-01-10 PAT001 TCHINDA Marc Paludisme, Anémie MED01 Dr. FOTSO Médecine Interne
C002 2026-01-11 PAT002 ONDOA Rose Hypertension MED02 Dr. ABENA Cardiologie
C003 2026-01-12 PAT001 TCHINDA Marc Paludisme MED01 Dr. FOTSO Médecine Interne

La clé supposée est (N°Consult, Code_Med).

Travail demandé :

  1. (0,5 pt) Cette table respecte-t-elle la 1NF ? Identifiez précisément la ou les violations et proposez comment les corriger pour mettre la table en 1NF.

  2. (1,0 pt) Une fois la table en 1NF, identifiez toutes les dépendances fonctionnelles partielles (attributs qui dépendent d’une seule partie de la clé composée (N°Consult, Code_Med)). Présentez-les sous la forme :

    Attribut → [N°Consult | Code_Med] : explication
    
  3. (1,0 pt) Décomposez la table en 2NF : donnez le schéma complet de chaque table obtenue (nom, attributs, clé primaire soulignée, clés étrangères éventuelles).


Exercice 2 — Passage à la 3NF (2,5 points)

À l’issue de l’exercice 1, on suppose que vous avez obtenu la table suivante en 2NF :

Table MEDECIN :

Code_Med NomMédecin Code_Service Nom_Service Chef_Service Bureau_Chef
MED01 Dr. FOTSO SRV_MED Médecine Interne Pr. NJIEMO Bât. A - B1
MED02 Dr. ABENA SRV_CARD Cardiologie Pr. MEUGANG Bât. B - C2
MED03 Dr. KENNE SRV_MED Médecine Interne Pr. NJIEMO Bât. A - B1

La clé primaire est Code_Med.

Travail demandé :

  1. (0,5 pt) Vérifiez si la table MEDECIN est en 2NF (argumentez en vérifiant si tous les attributs dépendent de la totalité de la clé Code_Med).

  2. (1,0 pt) Identifiez les dépendances transitives dans cette table.

    • Représentez-les sous la forme Clé → A → B.
    • Décrivez l’anomalie de mise à jour concrète qui en résulte (exemple : que se passe-t-il si le chef du service Médecine Interne change ?).
  3. (1,0 pt) Décomposez la table MEDECIN pour obtenir un schéma en 3NF. Donnez le schéma complet de chaque table (nom, attributs, clé primaire soulignée, clés étrangères).



PARTIE III — Tri à Bulles

Barème : 5 points | Durée conseillée : 40 min

Contexte professionnel

Vous travaillez comme ingénieur(e) logiciel pour AgroTech SARL, une entreprise agro-alimentaire de la région de l’Ouest Cameroun qui gère des tournées de collecte de récoltes chez des agriculteurs. Chaque semaine, les quantités récoltées (en kilogrammes) sont saisies dans un tableau. Votre rôle est d’écrire les algorithmes de traitement de ces données.


Exercice 1 — Trace manuelle et algorithme du Tri à Bulles (2,5 points)

Le tableau des quantités récoltées (en kg) cette semaine auprès de 7 agriculteurs est :

Récolte = [32, 75, 18, 94, 47, 12, 60]

Travail demandé :

  1. (1,0 pt) Effectuez manuellement les deux premiers passages complets du tri à bulles sur ce tableau (passage i = 7, puis i = 6). Pour chaque passage, listez toutes les comparaisons effectuées et indiquez les échanges réalisés en montrant l’état du tableau après chaque échange.

  2. (1,0 pt) Écrivez la procédure algorithmique TrierRécoltes qui :

    • Prend en entrée un tableau Récolte[1..n] d’entiers et la taille n.
    • Applique le tri à bulle pour trier les quantités en ordre croissant.
    • Affiche le tableau trié.
  3. (0,5 pt) Pour un tableau déjà trié de taille n, combien de comparaisons le tri à bulles standard (sans optimisation) effectue-t-il ? Donnez la valeur numérique pour n = 7.


Exercice 2 — Tri à Bulles modifié et analyse (2,5 points)

Le directeur d’AgroTech veut afficher les quantités récoltées du maximum au minimum pour récompenser les meilleurs agriculteurs en priorité. Il veut également un algorithme capable de s’interrompre dès que les données sont triées.

Travail demandé :

  1. (0,5 pt) Pour trier en ordre décroissant avec le tri à bulle, quelle modification doit-on apporter à la condition d’échange ? Donnez la condition originale et la condition modifiée.

  2. (1,5 pt) Écrivez la procédure algorithmique TrierRécoltesDescendant qui :

    • Prend en entrée un tableau Récolte[1..n] et la taille n.
    • Implémente le tri à bulles optimisé (avec un booléen échangé) en ordre décroissant.
    • Si aucun échange n’a été effectué lors d’un passage, la procédure s’arrête immédiatement.
    • Affiche le tableau résultant après le tri.
  3. (0,5 pt) Supposons que le tableau Récolte soit déjà trié par ordre décroissant dès le départ. Combien de passages la version optimisée effectue-t-elle ? Combien de comparaisons sont réalisées ? Donnez la complexité dans ce cas.



PARTIE IV — Administration de Bases de Données et SQL

Barème : 5 points | Durée conseillée : 45 min

Contexte professionnel

Vous êtes DBA (Administrateur de Bases de Données) de la société TelecomBTP Cameroun, une entreprise de génie civil qui gère des chantiers à travers le pays. Le directeur informatique vous confie la création et l’administration de la base de données GestionChantiers_DB, ainsi que la rédaction de requêtes SQL pour le tableau de bord mensuel.


Exercice 1 — Création, Sécurité et Stratégie de Haute Disponibilité (2,5 points)

Travail demandé :

  1. (1,0 pt) Rédigez les instructions SQL (DDL) pour :

    • Créer la base GestionChantiers_DB.
    • Créer la table Chantiers avec les colonnes : ID_Chantier (entier, clé primaire, auto-incrémenté), Nom_Chantier (chaîne 150 caractères, non null), Ville (chaîne 80 caractères), Budget_FCFA (décimal 15,2, valeur > 0), Date_Debut (date), Date_Fin_Prevue (date).
    • Créer la table Employes_Chantier avec : ID_Employe (entier, clé primaire, auto-incrémenté), Nom_Employe (chaîne 100 caractères, non null), Poste (chaîne 80 caractères), Salaire_Mensuel (décimal 10,2), ID_Chantier (entier, clé étrangère vers Chantiers).
  2. (0,5 pt) Rédigez la commande SQL pour :

    • Accorder les droits SELECT et INSERT sur la table Chantiers à l’utilisateur chef_projet.
    • Révoquer uniquement le droit INSERT de ce même utilisateur par la suite.
  3. (1,0 pt) La direction craint une perte de données en cas de panne serveur. Expliquez les concepts de RPO (Recovery Point Objective) et RTO (Recovery Time Objective) vus en cours. Proposez, pour TelecomBTP, une politique de sauvegarde concrète (fréquence, type) en justifiant votre choix.


Exercice 2 — Requêtes SQL d’Interrogation et de Manipulation (2,5 points)

Table Chantiers :

ID_Chantier Nom_Chantier Ville Budget_FCFA Date_Debut Date_Fin_Prevue
1 Route Bafoussam-Mbouda Bafoussam 500000000.00 2025-01-15 2026-06-30
2 Pont Wouri Extension Douala 1200000000.00 2025-06-01 2027-12-31
3 École Primaire Dschang Dschang 45000000.00 2026-01-10 2026-09-30
4 Centre de Santé Limbé Limbé 78000000.00 2026-02-01 2026-11-15

Table Employes_Chantier :

ID_Employe Nom_Employe Poste Salaire_Mensuel ID_Chantier
1 NGUEMY Bertrand Ingénieur 450000.00 1
2 DJOUMBI Awa Contremaître 280000.00 1
3 SIMO Patrick Ingénieur 480000.00 2
4 MBASSA Claire Architecte 520000.00 2
5 ETONA Jules Contremaître 260000.00 3
6 NDONGO Pierre Ingénieur 470000.00 4

Travail demandé :

  1. (0,5 pt) Rédigez la requête SQL qui affiche pour chaque chantier le nom du chantier, le nombre d’employés affectés et la masse salariale mensuelle totale, triés par masse salariale décroissante.

  2. (0,5 pt) Rédigez la requête SQL qui liste les chantiers dont le budget dépasse 100 000 000 FCFA, en affichant le nom du chantier, la ville et le budget, triés par budget décroissant.

  3. (0,5 pt) Rédigez la requête SQL qui affiche le salaire moyen, le salaire minimum et le salaire maximum parmi tous les employés ayant le poste 'Ingénieur'.

  4. (1,0 pt) Le chantier 'École Primaire Dschang' est terminé avec un mois d’avance. Rédigez les instructions SQL pour :

    • Mettre à jour la Date_Fin_Prevue du chantier 3 à la date '2026-08-30'.
    • Supprimer de la table Employes_Chantier tous les employés affectés au chantier 3.
    • Encapsuler ces deux opérations dans une transaction (START TRANSACTION, COMMIT).

— Fin de l’examen Session 2 — Bon courage à toutes et à tous —


Barème récapitulatif :

Partie Thème Exercice 1 Exercice 2 Total
I Tri à Bulle & Recherche avec Sentinelle 2,5 pts 2,5 pts 5 pts
II Normalisation 1NF → 2NF → 3NF 2,5 pts 2,5 pts 5 pts
III Tri à Bulles (Trace & Optimisation décroissante) 2,5 pts 2,5 pts 5 pts
IV Administration BD & SQL 2,5 pts 2,5 pts 5 pts
Total 10 pts 10 pts 20 pts

Prêt à passer à la suite ?

Vous avez terminé cette leçon sur EXAMEN NORMAL — IGL234 : GÉNIE LOGICIEL & BASES DE DONNÉES. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.