Vous êtes sur la page 1sur 11
Ay fall Actaall ROYAUME DU MAROC = Ministére de !’Enseignement Supérieur de la Recherche Scientifique de la Formation des Cadres Présidence du Concours National Commun Ecole Hassania des Travaux Publics A CONCOURS NATIONAL COMMUN d’admission aux Etablissements de Formation d’Ingénieurs et Etablissements Assimilés Session 2013 EPREUVE D’ INFORMATIQUE Filigre MP Durée 2 heures Cette épreuve comporte 10 pages au format A4, en plus de cette page de garde L’usage de Ia caleulatrice est interdit page de garde Epreuve d'informatique ~ Session 2013 — Fil Eprouve d'informatique ~ Session 2018 — Fille MP/PSUTS! Concours National Commun Lénoneé de cette 6preuve, commune aux candidats des filiéres MP/ PSI/ TSI, comporte 10 pages. Lusage de Ia calculatrice est interdit . Les candidats sont informeés que la précision des raisonnements algorithmiques ainsi que lesoin apporté a la rédaction et @ la présentation des copies seront des éléments pris en compte dans a notation. Il convient en particulier de rappeler avec précision les [références] des questions abordées. Si, au cours de l’épreuve, un candidat repére ce qui peut lui sembler étre une erreur «énoneé, il le signale sur sa copie et poursuit sa composition en expliquant les raisons des initiatives qu'il est amené a prendre. Remarques générales : - Léépreuve se compose de deux problémes indépendants. ~ Toutes les instructions et les fonctions demandées seront écrites en langage C. Les questions non traitées peuvent étre admises pour aborder les questions ultérieures. (Sfoute fonction peut etre décomposée, sinécessaire, en plusieurs fonctions PROBLEME I: ANALYSEUR LEXICAL D’UN LANGAGE at Présentation du probleme: Avant son exécution, tout code source d'un programme informatique doit étre traduit en un autre code appelé code machine. Cette traduction est réalisée par un compilateur dont le role est de transformer le code source en une suite d’instructions élémentaires directement cexécutables parle processeur. Ainsi le role de Vanalyse lexicale est d'identifier puis supprimer les caractéres superthis du code source (commentaires, espaces,...), de reconnaitre les mots-clés, es identificateutrs, les opérateurs, ect qui sont définies par un ensemble de régles. En plus, 'analyseur lexical signale les éventuelles erreurs de syntaxe et associe a chaque erreur Je numéro de a ligne dans laquelle elle intervient. Dans le probléme qui suit, on se propose de ‘mettre en oeuvre un analyseur lexical. Mise en oeuvre d'un analyseur lexical : Il s'agit d'implémenter des fonctions en langage C pour un analyseur lexical d'un pseudo Jangage informatique cao) Rappels: Les fonctions suivantes définies dans la bibliotheque du langage C peuvent étre appelées au besoin sans étre definies: Fonetions définies dans le fichier stdio.h = int printf{const char* format, ...):affiche sur '6cran la chatine en paramétre page 1 sur 10 1 Eprewve d'informatique ~ Session 2013 ~ Filiére MP/ PSU TSI Concours National Commun - FILE “fopen(char ‘nom, char *m) ; ouvre le fichier nom avec le mode d'ouverture m (m="F" pourla lecture etm="w" pour'écritare) “int fgete(FILE*):litn caractére du fichier texte fet le retourne - char *gets(char* ligne, int max, FILE *f) = lit une ligne du fichier texte f, et la met dans la chaine ligne, max est le nombre maximum de caractéres dela ligne. fgets retourne 'adresse de laligne lue ou NULL Alla fin de fichier, Fonctions définies dans le fichier string.h int strlen (const char") retoure la longueur de la chaine en paramétre ¥ an ons char*, const char*) compare les 2 chaines en paramétres et retourne 0 sielles sontidentiques. A: Gestion des commentaires et des espaces. @ Question A-1 : Test d'un Commentaire Un commentaire est une instruction qui n’est pas traduite par le compilateur. Pour ce pseudo langage PL, un commentaire est une chaine de caractéres qui doit commencer obligatoirement par les 2 caractéres \* (slash étoile) et se terminer par les 2.caractéres *\ (Gtoile stash), 4 Becrire le code de la fonction dentéte : int comment(char instr{ }) qui retourne 1 sila chaine instr en paramétre est un commentaire de PL ou 0 (zér0) sinon, Exemple : - Soit la chaine de caractores instr="\* explication *\" lors T'appel de la fonction comment(instr) retourne 1. - Sila chaine de caractéres instr="explication” alors l'appel comment (aniste) retourne 0. Question A-2- Suppression d’espaces multiples dans une instruction 4Gcrire une fonction d’entéte : void supprim_espaces(char instr| }) qui supprime les espaces multiples consécutifs( qui se suivent) entre les caractéres de la chaine instr en paramétre. S'il y’a N (1

Vous aimerez peut-être aussi