Vous êtes sur la page 1sur 8

Ministère de l'Enseignement Supérieur, de la Recherche Scientifique et de la Technologie

CONCOURS DE RECRUTEMENT DES TECHNOLOGUES EN INFORMATIQUE

SESSION 2008

Admissibilité Epreuve d'application : option « Informatique des Systèmes de Gestion »

Durée : 8 heures Documents non autorisés

IMPORTANT

La présente épreuve est composée de cinq parties. Il est recommandé de traiter les trois dernières parties dans l'ordre.

Le sujet de l'épreuve est sur un total de 7 pages.

Il est demandé de traiter chaque partie sur une copie distincte et de numéroter les feuilles de chaque

en mentionnait, Sous chaque numéro, le nombre total des feuilles

qui composent la copie (de la forme : nombre de la page/nombre total des pages). Ce mode de

numérotation permet au correcteur de s'assurer qu'aucune feuille de copie n'est égarée.

Aucun dessin, graphique, rédaction

Les candidats sont également invités à remplir de la façon la plus complète et la plus claire possible l'en-tête des feuilles de leurs copies. Le numéro du dossier d'inscription ainsi que le numéro de la carte d'identité nationale doivent être portés sur l'en-tête de chacune des feuilles constituant la copie.

copie dans l'ordre régulier 1,2,3,

,

au crayon n'est accepté. Les ratures sont à éviter.

Il est interdit aux candidats de signer leurs copies (en dehors de l'en-tête) ou d'y mettre un signe particulier pouvant renseigner sur la provenance de la copie.

Les candidats doivent émarger au moment où ils remettent leurs copies, même en cas de copie blanche.

Les réponses sur des feuilles de brouillon ne sont pas acceptées.

-----------------------------------------------------------------------------------------------------------------------------------

Bon Travail

CONCOURS DE RECRUTEMENT DES TECHNOLOGUES EN INFORMATIQUE

SESSION 2008

Admissibilité Epreuve d'application : option « Informatique des Systèmes de Gestion »

(Durée : 8 heures)

PARTIE 1 (30 points) - ALGORITHMIQUE ET STRUCTURE DE DONNEES -

1. Proposez une fonction qui reçoit un nombre N positif exprimé dans une base B (2B 10),

retourne sa conversion dans la base 10 et retourne -1 si ce nombre n'est pas correctement exprimé

dans la base B. (4points)

2. Proposez un algorithme qui lit un nombre binaire positif N et le convertit dans la base 10.

(2 points)

3. À partir de cette question, le nombre N sera exprimé dans la base 10. On cherche à déterminer si

un entier N saisi (N >9) est divisible par 9 ou non en appliquant la méthode suivante :

(i) On fait la somme du premier et du second chiffre de N. (ii) Si la somme obtenue est supérieure eu égale à 9, on lui soustrait 9.

(iii) On ajoute ensuite à cette somme le chiffre suivant et on lui applique la règle (ii) et ainsi

de suite jusqu'au dernier chiffre de N.

(iv) Si le résultat final est nul alors le nombre N est divisible par 9.

Exemple : Pour N=65493, l'algorithme effectuera les opérations suivantes :

6 + 5 = 11 (11 > 9, on lui soustrait 9, on obtient 2)

2

+ 4 =6 (6 < 9)

6

+ 9 = 15 (15 > 9, on lui soustrait 9, on obtient 6)

6

+ 3 = 9 (9 = 9, on lui soustrait 9, on obtient 0)

Le résultat est nul et tous les chiffres de N ont été traités; donc le nombre 65493 est divisible par 9.

3.1. Proposez une fonction qui reçoit un nombre N et retourne 1 si N est divisible par 9, 0

sinon, en n'utilisant que le type entier pour les différentes variables utilisées (variables simples ou

variables de type tableau). (2 points)

3.2. Proposez une fonction qui reçoit un nombre N et retourne 1 si N est divisible par 9, 0

sinon, en utilisant entre autres le type chaîne de caractères. On pourra utiliser les fonctions et les procédures prédéfinies suivantes : (2 points)

Fonction Longueur (ch : chaîne) : entier Fonction Concat (chl: chaîne, ch2 : chaîne) : chaîne Fonction Sous-chaîne (ch: chaîne, position : entier, nbcar : entier) : chaîne Fonction Position (chl: chaîne, chl : chaîne) : entier Procédure Effacer (donres ch: chaîne, don position : entier, don nbcar : entier) Procédure Insérer (don chl: chaîne, donres chl : chaîne, don position : entier) Procédure ConvChaîne (don d : entier, res ch: chaîne) Procédure Valeur (don ch : chaîne, res d : entier, res erreur : entier)

1/7

4.

Proposez une fonction qui reçoit un nombre N et retourne 1 si N est un nombre premier, 0 sinon.

Donnez la complexité en temps de calcul de cette fonction. (3 points)

5. Après avoir définie la structure de données d'une liste chaînée L, proposez une fonction qui

reçoit un nombre positif (N2), et crée une liste chaînée L contenant les nombres premiers compris

entre 2 et N et retourne un pointeur sur le premier élément de la liste. (3 points)

6. Soient N 1 et N 2 deux entiers tels que 1 < N 1 < N 2 N. Proposez une procédure permettant de

supprimer de la liste L, les nombres premiers compris entre N 1 et N 2 . (2 points)

7. Proposez une procédure permettant d'insérer avant le plus grand nombre premier Max_prem,

inférieur à N 1 de la liste L, tous les nombres inférieurs (ou égal) à N et divisibles par 9. Si un tel

nombre Max _prem de la liste L n'existe pas, l'insertion se fera en début de liste. (4points)

8. Proposez une procédure itérative permettant d'inverser la liste L, sans avoir recours à la création

d'une autre liste (par modification du chaînage entre les éléments seulement). (3 points)

9. Après avoir définie la structure de données d'un arbre binaire de recherche A, proposez une

procédure récursive permettant d'ajouter un élément X dans A. (3points)

10. Proposez une procédure permettant de stocker les éléments de la liste L dans un arbre binaire de recherche A. Cet arbre sera repéré par un pointeur racine. (2 points)

PARTIE 2 (15 points) - RESEAUX -

Les réponses à cette partie doivent être concises et ne dépassent pas 5 lignes maximum par question.

1. Comment s'appelle la communication «virtuelle» entre 2 couches de même niveau du modèle de référence OSI (Open Systems Interconnection)? Expliquez comment elle se déroule réellement ? (3 points)

2. Le modèle de référence OSI est construit à partir d'une architecture maillée où les équipements sont reliés par des liaisons point à point. Quels sont les principaux concepts devant être rajoutés au modèle pour qu'il s'adapte à des réseaux locaux où souvent les équipements se partagent le même support de transmission ? (2,5 points)

3. Pour utiliser la méthode CSMA/CD, nous savons qu'une trame doit avoir une longueur minimale. Expliquez pourquoi? (2 points)

4. Immédiatement après le démarrage d'une machine connectée à un réseau local Ethernet et possédant une configuration Internet, un message d'erreur réseau s'affiche. Quelle est la cause la plus probable de ce problème. Justifiez votre réponse. Quelle solution proposez vous pour éviter ce genre de problème? (2,5 points)

5. La machine A d'adresse IP 193.95.6.3 doit envoyer un paquet IP à la machine B 193.95.6.8 (du même réseau). Détaillez les opérations effectuées au niveau des couches 3 et 2 de la machine A. (3 points)

6. Quel protocole de transport de l'architecture TCP/IP est utilisé par le protocole http. Expliquez pourquoi ? (2 points)

*****************

2/7

ETUDE DE CAS Tech Web

Une société de services en informatique TechWeb désire proposer un service de prise de rendez- vous. Le premier marché visé est celui des médecins travaillant seuls. Ceux-ci n'ont en général pas de secrétariat. Les patients désirant prendre rendez-vous téléphonent alors directement au médecin. Ce dernier est donc dérangé fréquemment au cours d'une journée ce qui diminue sa disponibilité à ses patients. La société TechWeb souhaite leur proposer un service de prise de rendez-vous fonctionnant selon le principe suivant :

un service secrétariat assure les prises des Rendez-vous (RV) pour un grand nombre de médecins. Le salaire du service secrétariat est mutualisé entre tous les médecins utilisant ce service.

le service secrétariat et tous les médecins sont reliés à Internet.

les RV sont enregistrés dans une base de données centralisée, accessible via Internet, par le secrétariat et les médecins.

• la prise de RV est normalement faite par le secrétariat selon des créneaux où les RV sont possibles. Chaque créneau est indiqué par un début et une fin spécifiés en heures et minutes. En outre, la prise de RV peut être faite également par les médecins eux-mêmes. C'est le cas notamment lorsqu'à la fin d’une consultation, le médecin fixe lui-même un nouveau RV à son patient. Pour chaque patient, on souhaite garder trace de son nom, prénom, adresse, date de naissance, sexe et un numéro de téléphone. L'architecture du service de prise de RV est la suivante :

Secrétariat
Secrétariat

Médecin 1

Médecin 2

Internet

suivante : Secrétariat Médecin 1 Médecin 2 … Internet Base de données des RV Les médecins,
suivante : Secrétariat Médecin 1 Médecin 2 … Internet Base de données des RV Les médecins,
suivante : Secrétariat Médecin 1 Médecin 2 … Internet Base de données des RV Les médecins,

Base de données des RV

Les médecins, décrits par un nom, prénom, une spécialité, un ou plusieurs numéros de téléphones, un titre (Melle, Mme, Mr) et le coût payé pour une consultation, gagnent en efficacité s'ils n'ont plus à gérer les RVs. S'ils sont suffisamment nombreux, leur contribution aux frais du fonctionnement du secrétariat sera faible. La société TechWeb décide de vous confier l'élaboration d'une première maquette du service.

Travail demandé

PARTIE 3: Modélisation UML (15pts)

1.

Etablir les cas d'utilisation associés après avoir énuméré les acteurs intervenant dans ce

système. (6pts)

2.

Donner le digramme de classes correspondant. (6pts)

3.

Traduire le diagramme de classes en un schéma relationnel. (3pts)

7/7

PARTIE 4 : Bases de Données (20pts)

En se basant sur le schéma relationnel obtenu dans la partie 3 question 3 et en se référant à la table RV décrite principalement par les clés de médecin, patient, secrétaire, ainsi que l'horaire du RV, à laquelle on ajoute l'état qui prend P ou R selon que le RV est Planifié ou Réalisé

1. Donner la structure de la table RV. (1pt)

2. Ecrire la commande SQL permettant de créer la table RV en tenant compte des règles

d'intégrité structurelle et référentielle et en supposant que les autres tables ont été déjà créées.

(2pts)

3.

Créer les vues SQL nécessaires pour répondre aux requêtes suivantes :

a. Afficher le salaire par secrétaire pour le mois de Juin 2008 sachant que chaque secrétaire touche 10% du coût payé pour une consultation médicale qui a eu lieu et

qu'elle a planifiée. (3pts)

b. Afficher les caractéristiques des médecins qui ont cumulé plus que la moyenne des RV pendant le 1 er trimestre de l'année 2008. (3pts)

c. Sachant que les salaires des secrétaires sont mutualisés à part égale entre tous les médecins, afficher la contribution de chaque médecin pour le mois de juin 2008.

(3pts)

4.

PL-SQL

a. Elaborer une procédure cataloguée permettant d'éditer la liste ordonnée des RV d'un médecin donné (nom, prénom) pour la date du jour. (4pts)

b. Elaborer une procédure cataloguée permettant d'affecter un RV à partir d'une date et une plage horaire proposées par un patient donné (nom, prénom) pour consulter un médecin donné (nom, prénom). Le RV affecté correspond à la première disponibilité détectée du médecin. Remarque : on suppose que la durée de la consultation est de 30 minutes. (4pts)

6/7

PARTIE 5 : Programmation (20pts)

1. Quels sont les avantages de l'architecture 3-tiers comparée à l'architecture 2-tiers. (1pts)

2. On vous demande de développer la classe suivante, qui vous sera utile par la suite : (3pts) import java.sgl.* ; public class ConnexionBDBean implements java.io.Serializable { Connection con = null; ResultSet rs = null ; Statement stmt = null ; public ConnexionBDBean () {} ; public boolean driver() {} public boolean Open_connexion() {} public boolean close_Connection() {} public ResultSet select_exec(String sgl) {} public int update_exec(String sgl) {} public boolean close_ResultSet(){} public boolean close_Statement() {}

>

3. En utilisant des pages JSP ainsi que des Servlets, donner le code qui permet de:

a. Authentifier un médecin via un formulaire d'authentification html (Authentif.html). (2pts)

b. Invoquer une Servlet (Authentif.java) qui, une fois le formulaire est validé, va vérifier son

autorisation d'accès. Cette servlet doit utiliser la classe de connexion à une base de données (en utilisant le pont ODBC-JDBC). En outre, l'application doit toujours afficher le nom et le prénom du médecin dans chaque page qu'il visite tout le long de sa connexion.

(3pts)

c. Développer le code nécessaire qui permet, une fois qu'un médecin donné s'authentifie, de :

i. Afficher la liste des rendez-vous par ordre chronologique à partir de la date du jour. (3pts)

ii. Affecter un rendez-vous à un patient connu par son identifiant. (3pts)

d. Authentifier l'administrateur, qui souhaite avoir la main pour pouvoir visualiser la liste des

médecins ainsi que la possibilité d'ajouter un nouveau médecin dans la base. Donner le code nécessaire lui permettant de le faire. (5pts)

7/7

Annexe

public void static forName(String driver);// charger le driver

public static Connection getConnection (String url, String user, String password );

public Statement createStatement();

public Resultset executeQuery(String sql) ;

Les principales méthodes de l'objet ResultSet sont les suivantes :

getlnt(int) : récupère sous forme d'entier le contenu d'une colonne désignée par son numéro

getlnt(String) : récupère sous forme d'entier le contenu d'une colonne désignée par son nom

geiFloat(int) : récupère sous forme de flottant le contenu d'une colonne désignée par son numéro

getFloat(String) : récupère sous forme de flottant le contenu d'une colonne désignée par son nom

next() : déplace le pointeur de ligne sur la ligne suivante

close() : « ferme » l’ objet

getMetaData() : retourne les métadonnées de l'objet (l'objet ResultSetMetaData)

6/7

Le package java.sql

Classes

Interfaces

Exceptions

Date

Array Blob CallableStatement Clob Connection DatabaseMetaData Driver PreparedStatement Ref ResultSet ResuitSetMetaData SQLData SQLInput SQLOutput Statement Struct

BatchUpdateException

DriverManager

DataTruncation

DriverPropertylnfo

SQLException

Time

SQLWarning

Timestamp

Types

7/7