Sujet d’examen écrit · Haut-Commissariat au Plan — Ingénieurs d'État 1er grade (informatique) · 2012
Sujet réel transcrit depuis la copie publiée, avec un corrigé proposé par l'équipe KounKour (pas de corrigé officiel).
PDF de la copie (4 pages) publié par alwadifa-maroc.com ; la copie porte des annotations manuscrites d'un candidat, non reprises ici. Durée non indiquée. Aucun corrigé officiel.
المملكة المغربية — المندوبية السامية للتخطيطمباراة توظيف مهندسي الدولة من الدرجة الأولى (تخصص المعلوميات) — دورة 15 دجنبر 2012L'épreuve comprend 4 parties (A, B, C et D) toutes obligatoires.
Description :L'application à réaliser simule la gestion d'une partie du système d'information d'un institut d'enseignement supérieur. On se limite à une gestion partielle concernant les cours, les professeurs et les étudiants.
- Un cours a les propriétés suivantes : - Numéro du cours : entier ; (identifiant) - Intitulé du cours : chaîne de caractères ; - Filière : chaîne de caractères ('Filière 1', 'Filière 2', 'Filière 3', 'Filière 4') ; - Niveau : entier (1 pour '1re année', 2 pour '2e année', 3 pour '3e année') ; - Nombre d'heures : entier.- Un professeur a les propriétés suivantes : - Numéro : entier ; (identifiant) - Nom : chaîne de caractères ; - Email : chaîne de caractères ; - Cours dispensés par le professeur : une liste d'entiers contenant les numéros des cours dispensés par le professeur.- Un étudiant a les propriétés suivantes : - Numéro : entier ; (identifiant) - Nom : chaîne de caractères ; - Email : chaîne de caractères ; - Filière : chaîne de caractères ('Filière 1', 'Filière 2', 'Filière 3', 'Filière 4') ; - Niveau : entier (1 pour '1re année', 2 pour '2e année', 3 pour '3e année').
Travail à faire :Utiliser un seul langage orienté objet parmi (C++, Java, C#, Visual Basic) de votre choix en précisant son nom et respectant sa syntaxe dans tout ce qui suit.Toutes les classes sont publiques. Toutes les propriétés doivent être déclarées en PRIVATE. Ajouter des commentaires lorsque cela est nécessaire.
1) Réaliser la classe 'Cours' avec un constructeur par défaut (pas d'argument) et un constructeur initialisant toutes les propriétés. Ajouter les méthodes d'accès aux propriétés.2) Réaliser la classe 'Personne' qui sera la classe mère (héritage) des classes 'Professeur' et 'Etudiant'. La classe doit avoir un constructeur par défaut (pas d'argument) et un constructeur initialisant toutes les propriétés. Ajouter les méthodes d'accès aux propriétés.3) Réaliser la classe 'Etudiant' dérivée de la classe 'Personne'. La classe doit avoir un constructeur par défaut (pas d'argument) et un constructeur initialisant toutes les propriétés. Ajouter les méthodes d'accès aux propriétés.4) Réaliser la classe 'Professeur' dérivée de la classe 'Personne'. La classe doit avoir un constructeur par défaut (pas d'argument) et un constructeur initialisant toutes les propriétés. Ajouter les méthodes d'accès aux propriétés.5) Réaliser la classe 'List_Cours' dérivée d'une classe système (contenue dans la bibliothèque du langage utilisé) gérant une liste d'objets. Tous les cours créés doivent être contenus dans une instance de cette classe 'List_Cours'.6) Ajouter la méthode 'Ajouter' à la classe 'List_Cours', ayant les caractéristiques suivantes : - Type de retour : 'booléen' ; - Arguments de la méthode : un seul argument (argCours) de type 'Cours' ; - Objet de la méthode : ajouter le cours argCours à la liste de cours. Si le cours existe, ce dernier ne sera pas ajouté et la méthode retourne 'FAUX', sinon le cours sera ajouté et la méthode retourne 'VRAI'.7) Ajouter la méthode 'Supprimer' à la classe 'List_Cours', ayant les caractéristiques suivantes : - Type de retour : sans type ; - Arguments de la méthode : un seul argument (argNumCours) de type entier indiquant le numéro du cours à supprimer ; - Objet de la méthode : supprimer le cours identifié par le numéro argNumCours de la liste de cours. Si le cours n'existe pas, une exception, signalant sa non-existence, est déclenchée. L'exception ne sera pas gérée (attrapée) dans la méthode, mais dans le sous-programme appelant la méthode.8) Ajouter la méthode 'Obtenir' à la classe 'List_Cours', ayant les caractéristiques suivantes : - Type de retour : 'Cours' ; - Arguments de la méthode : un seul argument (argNumCours) de type entier indiquant le numéro du cours à obtenir ; - Objet de la méthode : retourner le cours identifié par le numéro (argNumCours) de la liste de cours. Si le cours n'existe pas, une exception, signalant sa non-existence, est déclenchée. L'exception ne sera pas gérée (attrapée) dans la méthode, mais dans le sous-programme appelant la méthode.9) Faire les modifications nécessaires de la classe 'List_Cours' pour que ses instances puissent contenir et gérer aussi les objets 'Professeur' et 'Etudiant'.10) Dans la classe 'Test' qui contient la méthode principale 'main' : - Déclarer 3 objets ('OList_Cours', 'Olist_Professeur', 'Olist_Etudiant') de type 'List_Cours'. - Ajouter 3 cours à la liste 'OList_Cours', un professeur à 'Olist_Professeur' et un étudiant à 'Olist_Etudiant'. - Supprimer un cours et obtenir un autre. - Ne pas oublier la gestion d'exceptions.
Description :Un institut d'enseignement supérieur dispose d'une bibliothèque prêtant des revues spécialisées aux professeurs et étudiants de l'institut.Une revue est identifiée par une référence (RefRevue) et possède un titre et une périodicité (quotidienne, hebdomadaire, bimensuelle, mensuelle, trimestrielle, semestrielle, annuelle).Chaque revue paraît sous la forme de numéros, chaque numéro est identifié par un nombre (NumRevue) relatif à la revue et à l'année en cours : (ex. le numéro N° 12 d'une revue « R » paru en 2012 est différent du numéro N° 12 de la même revue paru en 2011). Le numéro de la revue est disponible en plusieurs exemplaires et contient des articles écrits par un ou plusieurs auteurs.Chaque article est identifié par un numéro (NumArticle) et possède un titre et un thème.Un auteur est identifié par un numéro (NumAuteur) et possède un nom, un prénom et un email.Un professeur est identifié par un numéro (NumProf) et possède un nom, un prénom et un email.Un étudiant est identifié par un numéro (NumEtudiant) et possède un nom, un prénom, un email, une filière suivie ('Filière 1', 'Filière 2', 'Filière 3', 'Filière 4') et un niveau (1re année, 2e année, 3e année).
Règles supplémentaires : Un étudiant ne doit pas emprunter un numéro d'une revue plus que 7 jours (date retour – date d'emprunt <= 7). Il ne doit emprunter plus que 2 numéros à la fois.Un professeur ne doit pas emprunter un numéro d'une revue plus que 14 jours (date retour – date d'emprunt <= 14). Il ne doit emprunter plus que 3 numéros à la fois.
Travail à faire :1. Donner la définition des termes suivants : (SGBDR, Procédure stockée, Déclencheur (Trigger)) et citer d'autres objets standards d'une base de données.2. Réaliser le schéma présentant la modélisation Entité/association (format Merise) correspondant à la base de données de la bibliothèque. Mentionner les cardinalités.3. En déduire le modèle physique de données relationnelles (Tables) de la base de données correspondante.Chaque table doit être spécifiée de la manière suivante : (Respecter les noms donnés entre parenthèses dans la description lorsqu'ils existent)RNom(att1, att2, … , attn) où RNom est le nom de la table et att1, …, attn sont des noms d'attributs. Précisez les clés primaires des tables en les soulignant ainsi que les clés étrangères en les précédant par un # et en précisant, entre parenthèses, à quoi elles font référence.Ex : RTable1Name ( numPk1, … , #numTbl2 (RTable2Name.numPk2), … ).4. Lister l'ensemble des 'Triggers' nécessaires pour respecter les règles citées ci-dessus.Pour chaque 'Trigger' indiquer son objectif (en langage algorithmique), le moment et l'évènement auquel il est associé (insertion, modification ou suppression) et la table correspondante.5. On souhaite interroger la base de données précédemment créée pour répondre à certaines questions. Rédiger en langage SQL standard les requêtes suivantes :5.1. La bibliothèque a reçu une livraison de 25 exemplaires du numéro "10" paru en "2012" de la revue mensuelle dont le titre est "Gestion de bases de données" référence "R125". Que faut-il vérifier pour mettre à jour la base de données par ces informations ? Écrire les requêtes SQL nécessaires.5.2. Nous souhaitons rechercher des thèmes correspondant à des articles rédigés par un auteur dont nous ignorons le numéro "NumAuteur", nous savons uniquement que son nom commence par la lettre "A". Utiliser une requête « SELECT » pour récupérer les titres et les thèmes des articles écrits par tous les auteurs dont le nom commence par "A".5.3. Quel est le nombre d'exemplaires du numéro "5" de la revue dont la référence est "R123" parue en "2012" empruntés par les professeurs.5.4. Quels sont les étudiants en "3e année", filière "Filière 1" qui n'ont jamais emprunté un numéro quelconque de la revue dont le titre est "Structured Query Language" ?
Dans le cadre de ses missions, le Haut-Commissariat au Plan réalise des enquêtes statistiques auprès des ménages qui se déroulent en trois tâches principales :a) Enquêter une personne du ménage et inscrire les réponses sur un questionnaire papier propre à l'enquête en question ;b) Saisir manuellement les informations contenues dans le questionnaire et les mettre sous un format électronique (fichier informatique). C'est une saisie de masse où les contrôles sont réduits à un minimum ;c) Apurement des données (fichier obtenu par la tâche précédente) : une application informatique détecte les informations invalides et incohérentes et permet à son utilisateur de les corriger.Une autre approche peut être plus utile pour la réalisation d'une enquête statistique, en l'occurrence l'utilisation d'un ordinateur de poche (PDA), un ordinateur portable ou une tablette.
Questions :1. Parmi les 3 tâches (a, b, et c) citées ci-dessus, lesquelles peuvent être réalisées en utilisant le matériel informatique cité précédemment (PDA, ordinateur portable ou une tablette).2. Relativement à l'utilisation du questionnaire papier, indiquer les avantages tirés de l'utilisation de l'un des matériels informatiques cités précédemment (PDA, ordinateur portable ou une tablette).3. Parmi les matériels informatiques cités précédemment (PDA, ordinateur portable, une tablette), indiquer le matériel le plus adapté à la réalisation d'une enquête statistique. Justifier votre réponse.4. Lister les principaux systèmes d'exploitation utilisés dans les tablettes et indiquer, pour chaque système d'exploitation, l'environnement logiciel nécessaire pour la réalisation des applications informatiques destinées à la tablette correspondante.
1. Définir les termes suivants : DHCP, VLAN, virus et cheval de Troie.2. Comparer le modèle OSI avec le modèle TCP/IP.3. Qu'est-ce que la virtualisation. Indiquer ses avantages et citer quelques logiciels de virtualisation.4. Dessiner trois topologies physiques d'un réseau informatique. Citer quelques avantages et inconvénients de chacune de ces topologies.5. Déterminer, pour ces adresses hôte IP : 216.14.55.137, 123.1.1.15, 150.127.221.244, 175.12.239.244, les éléments suivants : a. La classe de chaque adresse. b. L'adresse réseau. c. La partie hôte. d. Le masque de sous-réseau par défaut. e. Le nombre de machines qu'on peut adresser (adressage IP) pour chacune de ces classes.6. Une entreprise possédant la plage d'adresses 10.0.0.0/16 et ayant 3 catégories d'employés : 1000 techniciens, 200 commerciaux et 20 directeurs.Au sein de la grande plage d'origine, définir une plage pour chaque catégorie. Les adresses devant être successives en commençant par l'adresse la plus basse et en respectant l'ordre suivant : les techniciens, les commerciaux, les directeurs.
Ce n’est pas un corrigé officiel : il a été rédigé par les administrateurs KounKour. Les points que la copie publiée ne permet pas de trancher sont signalés.
Choix du langage : Java. Une interface commune permet à List_Cours de gérer aussi des professeurs et des étudiants (question 9).
// Tout élément géré par la liste possède un numéro identifiantpublic interface Identifiable { int getNumero(); }
// 1) Classe Courspublic class Cours implements Identifiable { private int numero; private String intitule; private String filiere; private int niveau; private int nbHeures; public Cours() { } public Cours(int numero, String intitule, String filiere, int niveau, int nbHeures) { this.numero = numero; this.intitule = intitule; this.filiere = filiere; this.niveau = niveau; this.nbHeures = nbHeures; } public int getNumero() { return numero; } public void setNumero(int n) { numero = n; } public String getIntitule() { return intitule; } public void setIntitule(String s) { intitule = s; } public String getFiliere() { return filiere; } public void setFiliere(String s) { filiere = s; } public int getNiveau() { return niveau; } public void setNiveau(int n) { niveau = n; } public int getNbHeures() { return nbHeures; } public void setNbHeures(int n) { nbHeures = n; }}
// 2) Classe mère Personnepublic class Personne implements Identifiable { private int numero; private String nom; private String email; public Personne() { } public Personne(int numero, String nom, String email) { this.numero = numero; this.nom = nom; this.email = email; } public int getNumero() { return numero; } public void setNumero(int n) { numero = n; } public String getNom() { return nom; } public void setNom(String s) { nom = s; } public String getEmail() { return email; } public void setEmail(String s) { email = s; }}
// 3) Etudiantpublic class Etudiant extends Personne { private String filiere; private int niveau; public Etudiant() { super(); } public Etudiant(int numero, String nom, String email, String filiere, int niveau) { super(numero, nom, email); this.filiere = filiere; this.niveau = niveau; } public String getFiliere() { return filiere; } public void setFiliere(String s) { filiere = s; } public int getNiveau() { return niveau; } public void setNiveau(int n) { niveau = n; }}
// 4) Professeurpublic class Professeur extends Personne { private java.util.List<Integer> coursDispenses = new java.util.ArrayList<>(); public Professeur() { super(); } public Professeur(int numero, String nom, String email, java.util.List<Integer> cours) { super(numero, nom, email); this.coursDispenses = cours; } public java.util.List<Integer> getCoursDispenses() { return coursDispenses; } public void setCoursDispenses(java.util.List<Integer> l) { coursDispenses = l; }}
// Exception signalant un élément absentpublic class ElementInexistantException extends Exception { public ElementInexistantException(int num) { super("Élément n° " + num + " inexistant"); }}
// 5) à 9) List_Cours dérive de ArrayList. Le type générique Identifiable lui permet de contenir des Cours, des Professeur et des Etudiant (question 9).public class List_Cours extends java.util.ArrayList<Identifiable> { // 6) Ajouter : faux si un élément de même numéro existe déjà public boolean Ajouter(Identifiable arg) { for (Identifiable e : this) if (e.getNumero() == arg.getNumero()) return false; return add(arg); } // 7) Supprimer : l'exception est propagée à l'appelant public void Supprimer(int argNum) throws ElementInexistantException { remove(Obtenir(argNum)); } // 8) Obtenir public Identifiable Obtenir(int argNum) throws ElementInexistantException { for (Identifiable e : this) if (e.getNumero() == argNum) return e; throw new ElementInexistantException(argNum); }}Avant la question 9, les méthodes manipulent directement le type Cours (Ajouter(Cours argCours), Cours Obtenir(int)). Le passage à Identifiable est la modification demandée en 9.
// 10) Classe Testpublic class Test { public static void main(String[] args) { List_Cours OList_Cours = new List_Cours(), Olist_Professeur = new List_Cours(), Olist_Etudiant = new List_Cours(); OList_Cours.Ajouter(new Cours(1, "Algorithmique", "Filière 1", 1, 40)); OList_Cours.Ajouter(new Cours(2, "Bases de données", "Filière 1", 2, 30)); OList_Cours.Ajouter(new Cours(3, "Réseaux", "Filière 2", 3, 30)); Olist_Professeur.Ajouter(new Professeur(10, "Alami", "alami@inst.ma", java.util.Arrays.asList(1, 2))); Olist_Etudiant.Ajouter(new Etudiant(100, "Bennani", "bennani@inst.ma", "Filière 1", 2)); try { OList_Cours.Supprimer(3); Cours c = (Cours) OList_Cours.Obtenir(2); System.out.println(c.getIntitule()); } catch (ElementInexistantException ex) { System.out.println("Erreur : " + ex.getMessage()); } }}
1. Définitions :- SGBDR : système de gestion de bases de données relationnelles, comme Oracle, SQL Server, MySQL ou PostgreSQL. Il stocke les données en tables reliées par des clés et les interroge en SQL.- Procédure stockée : programme (SQL procédural) enregistré dans la base, exécuté côté serveur sur appel.- Déclencheur (trigger) : programme stocké exécuté automatiquement avant ou après un événement (INSERT, UPDATE, DELETE) sur une table.- Autres objets : tables, vues, index, séquences, contraintes, fonctions, synonymes, utilisateurs et rôles.2. Modèle entité-association (cardinalités) :- REVUE (RefRevue, Titre, Periodicite) 1,n — PARAÎTRE — 1,1 NUMERO (NumRevue, Annee). NUMERO est une entité faible, identifiée relativement à la revue et à l'année.- NUMERO 1,n — EXISTER — 1,1 EXEMPLAIRE (NumExemplaire).- NUMERO 1,n — CONTENIR — 1,1 ARTICLE (NumArticle, Titre, Theme).- ARTICLE 1,n — ÉCRIRE — 0,n AUTEUR (NumAuteur, Nom, Prenom, Email).- EXEMPLAIRE 0,n — EMPRUNTER_P (DateEmprunt, DateRetour) — 0,n PROFESSEUR (NumProf, Nom, Prenom, Email).- EXEMPLAIRE 0,n — EMPRUNTER_E (DateEmprunt, DateRetour) — 0,n ETUDIANT (NumEtudiant, Nom, Prenom, Email, Filiere, Niveau).3. Modèle physique (clés primaires soulignées dans la copie ; # = clé étrangère) :- RRevue (RefRevue, Titre, Periodicite)- RNumero (#RefRevue (RRevue.RefRevue), NumRevue, Annee). Clé primaire : (RefRevue, NumRevue, Annee).- RExemplaire (NumExemplaire, #RefRevue, #NumRevue, #Annee (RNumero))- RArticle (NumArticle, Titre, Theme, #RefRevue, #NumRevue, #Annee (RNumero))- RAuteur (NumAuteur, Nom, Prenom, Email)- REcrire (#NumArticle (RArticle.NumArticle), #NumAuteur (RAuteur.NumAuteur))- RProfesseur (NumProf, Nom, Prenom, Email)- REtudiant (NumEtudiant, Nom, Prenom, Email, Filiere, Niveau)- REmpruntProf (#NumExemplaire (RExemplaire.NumExemplaire), #NumProf (RProfesseur.NumProf), DateEmprunt, DateRetour). Clé primaire : (NumExemplaire, NumProf, DateEmprunt).- REmpruntEtud (#NumExemplaire (RExemplaire.NumExemplaire), #NumEtudiant (REtudiant.NumEtudiant), DateEmprunt, DateRetour). Clé primaire : (NumExemplaire, NumEtudiant, DateEmprunt).4. Triggers nécessaires :- T1, BEFORE INSERT OR UPDATE sur REmpruntEtud : si DateRetour − DateEmprunt > 7, rejeter.- T2, BEFORE INSERT sur REmpruntEtud : compter les emprunts en cours de l'étudiant (DateRetour nulle ou postérieure à aujourd'hui) ; si le nombre est ≥ 2, rejeter.- T3, BEFORE INSERT OR UPDATE sur REmpruntProf : si DateRetour − DateEmprunt > 14, rejeter.- T4, BEFORE INSERT sur REmpruntProf : si le professeur a déjà 3 emprunts en cours, rejeter.- T5, BEFORE INSERT sur les deux tables d'emprunt : si l'exemplaire est déjà emprunté (dans l'une ou l'autre table), rejeter.5. Requêtes SQL :5.1. Vérifier que la revue R125 existe (sinon la créer), puis que le numéro 10 de 2012 existe (sinon le créer), puis insérer les 25 exemplaires.SELECT COUNT(*) FROM RRevue WHERE RefRevue = 'R125';INSERT INTO RRevue VALUES ('R125', 'Gestion de bases de données', 'mensuelle'); -- si absenteSELECT COUNT(*) FROM RNumero WHERE RefRevue = 'R125' AND NumRevue = 10 AND Annee = 2012;INSERT INTO RNumero VALUES ('R125', 10, 2012); -- si absentINSERT INTO RExemplaire (NumExemplaire, RefRevue, NumRevue, Annee) VALUES (:n, 'R125', 10, 2012); -- répété 25 fois (boucle ou séquence)5.2. SELECT DISTINCT a.Titre, a.Theme FROM RArticle a JOIN REcrire e ON e.NumArticle = a.NumArticle JOIN RAuteur au ON au.NumAuteur = e.NumAuteur WHERE au.Nom LIKE 'A%';5.3. SELECT COUNT(DISTINCT p.NumExemplaire) FROM REmpruntProf p JOIN RExemplaire x ON x.NumExemplaire = p.NumExemplaire WHERE x.RefRevue = 'R123' AND x.NumRevue = 5 AND x.Annee = 2012;5.4. SELECT e.NumEtudiant, e.Nom, e.Prenom FROM REtudiant e WHERE e.Niveau = 3 AND e.Filiere = 'Filière 1' AND NOT EXISTS (SELECT 1 FROM REmpruntEtud m JOIN RExemplaire x ON x.NumExemplaire = m.NumExemplaire JOIN RRevue r ON r.RefRevue = x.RefRevue WHERE m.NumEtudiant = e.NumEtudiant AND r.Titre = 'Structured Query Language');
1. Les tâches a et c peuvent se faire sur le terminal : l'enquêteur saisit directement les réponses, et des contrôles de validité et de cohérence s'appliquent pendant la saisie. La tâche b (saisie de masse) disparaît.2. Avantages par rapport au questionnaire papier :- suppression de la saisie a posteriori, et donc des erreurs de transcription ;- contrôles immédiats et filtres ou sauts automatiques ;- données disponibles plus vite (transmission électronique) ;- coordonnées GPS et horodatage pour le contrôle du terrain ;- moins de papier, d'archivage et de transport ;- meilleure qualité des données et coût réduit à grande échelle.3. La tablette est la plus adaptée :- légère, autonome et tactile, avec un écran plus lisible que celui d'un PDA ;- plus maniable qu'un portable lors d'un entretien à domicile ;- GPS et connectivité intégrés ;- coût raisonnable.Le PDA a un écran trop petit et il est obsolète ; l'ordinateur portable est plus lourd et moins autonome.4. Systèmes des tablettes et environnements de développement :- Android : Java avec le SDK Android (Eclipse et ADT en 2012, Android Studio depuis) ;- iOS : Objective-C (et Swift depuis 2014) avec Xcode et le SDK iOS, sous macOS ;- Windows (8 et RT) : C# ou VB.NET avec Visual Studio et le SDK Windows.Pour les enquêtes, on cite aussi des outils dédiés, comme CSPro (module de collecte assistée par ordinateur).
1. Définitions :- DHCP : protocole qui attribue automatiquement aux postes leur configuration IP (adresse, masque, passerelle, DNS).- VLAN : réseau local virtuel, c'est-à-dire une segmentation logique d'un réseau commuté en domaines de diffusion séparés.- Virus : programme malveillant qui se réplique en s'attachant à des fichiers.- Cheval de Troie : programme d'apparence légitime qui cache une fonction malveillante (porte dérobée).2. OSI et TCP/IP :- OSI compte 7 couches : physique, liaison, réseau, transport, session, présentation, application. C'est un modèle de référence théorique.- TCP/IP compte 4 couches : accès réseau, Internet, transport, application. C'est le modèle réellement mis en œuvre sur Internet.- Les couches session, présentation et application de l'OSI sont regroupées dans la couche application de TCP/IP.3. La virtualisation consiste à faire fonctionner plusieurs systèmes (machines virtuelles) sur une même machine physique, grâce à un hyperviseur.- Avantages : meilleure utilisation du matériel, économies (énergie, place), déploiement rapide, isolation, sauvegarde et migration faciles, plans de reprise.- Logiciels : VMware (vSphere/ESXi, Workstation), Microsoft Hyper-V, Oracle VirtualBox, KVM, Xen.4. Topologies (schémas à dessiner) :- bus : simple et peu coûteux, mais une coupure arrête tout et il y a des collisions ;- étoile : facile à gérer, et une panne de poste reste isolée, mais l'équipement central est un point unique de défaillance ;- anneau : accès déterministe, mais une coupure peut interrompre le réseau sans double anneau ;- maillée : très fiable, mais coûteuse.5. Adresses :- 216.14.55.137 : classe C ; réseau 216.14.55.0 ; partie hôte .137 ; masque 255.255.255.0 ; 254 hôtes.- 123.1.1.15 : classe A ; réseau 123.0.0.0 ; partie hôte 1.1.15 ; masque 255.0.0.0 ; 16 777 214 hôtes.- 150.127.221.244 : classe B ; réseau 150.127.0.0 ; partie hôte 221.244 ; masque 255.255.0.0 ; 65 534 hôtes.- 175.12.239.244 : classe B ; réseau 175.12.0.0 ; partie hôte 239.244 ; masque 255.255.0.0 ; 65 534 hôtes.6. Découpage de 10.0.0.0/16 (VLSM, adresses successives) :- techniciens (1 000 postes, il faut 10 bits d'hôte, soit 1 022 hôtes) : 10.0.0.0/22, de 10.0.0.1 à 10.0.3.254, diffusion 10.0.3.255 ;- commerciaux (200 postes, /24, soit 254 hôtes) : 10.0.4.0/24, de 10.0.4.1 à 10.0.4.254, diffusion 10.0.4.255 ;- directeurs (20 postes, /27, soit 30 hôtes) : 10.0.5.0/27, de 10.0.5.1 à 10.0.5.30, diffusion 10.0.5.31.
Corrigé proposé par l'équipe KounKour (administrateurs de la plateforme). Ce n'est pas un corrigé officiel : les points que la copie ne permet pas de trancher (figures, plans, énoncés coupés) sont signalés.