DEVOIR 1. Exercice 1 : édition de liens. On dispose d'un ensemble de modules définis comme suit:

Documents pareils
Quelques éléments de compilation en C et makefiles

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours Langage C/C++ Programmation modulaire

Introduction au langage C

Cours de Programmation 2

Rappels Entrées -Sorties

Cours 1 : La compilation

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Systeme d'exploitation

Cours 1 : Qu est-ce que la programmation?

Le chiffre est le signe, le nombre est la valeur.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Programmation C++ (débutant)/instructions for, while et do...while

STAGE IREM 0- Premiers pas en Python

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

NOM : Prénom : Date de naissance : Ecole : CM2 Palier 2

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours Informatique Master STEP

Attestation de maîtrise des connaissances et compétences au cours moyen deuxième année

Traduction des Langages : Le Compilateur Micro Java

ALGORITHMIQUE ET PROGRAMMATION En C

ACTIVITÉ DE PROGRAMMATION

I. Introduction aux fonctions : les fonctions standards

Initiation à la programmation en Python

Rechercher et supprimer les doublons!

Initiation à l algorithmique

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Cours d algorithmique pour la classe de 2nde

Les structures. Chapitre 3

Programmation en langage C

Générer du code à partir d une description de haut niveau

UTILISER UN SITE COLLABORATIF

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)


Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

AC AB. A B C x 1. x + 1. d où. Avec un calcul vu au lycée, on démontre que cette solution admet deux solutions dont une seule nous intéresse : x =

Évaluation et implémentation des langages

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

C f tracée ci- contre est la représentation graphique d une

chapitre 4 Nombres de Catalan

Solutions du chapitre 4

Algorithmique et Programmation, IMA

Le langage C. Séance n 4

1. Structure d'un programme FORTRAN 95

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours d Algorithmique et de Langage C v 3.0

Pourquoi l apprentissage?

C.F.A.O. : Conception et Fabrication Assistées par Ordinateur.

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar

TP1 : Initiation à Java et Eclipse

EXERCICES DE REVISIONS MATHEMATIQUES CM2

Logiciel Libre Cours 3 Fondements: Génie Logiciel

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Document d aide au suivi scolaire

Présentation du langage et premières fonctions

Entraînement au concours ACM-ICPC

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Utilisation des tableaux sémantiques dans les logiques de description

Concevoir sa stratégie de recherche d information

Dossier projet isn 2015 par Victor Gregoire

Les dossiers, sous-dossiers, fichiers

Introduction à l algorithmique et à la programmation M1102 CM n 3

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Logistique, Transports

Organigramme / Algorigramme Dossier élève 1 SI

V- Manipulations de nombres en binaire

Diviser un nombre décimal par 10 ; 100 ; 1 000

Cours d initiation à la programmation en C++ Johann Cuenin

Chapitre 10 Arithmétique réelle

SUPPORT DE COURS. Langage C

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

Utiliser le service de messagerie électronique de Google : gmail (1)

DESCRIPTEURS NIVEAU A2 du Cadre européen commun de référence pour les langues

Calcul Formel et Numérique, Partie I

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Le prototype de la fonction main()

Chapitre 2. Classes et objets

TP : Gestion d une image au format PGM

MANUEL TBI - STARBOARD

UE Programmation Impérative Licence 2ème Année

Sélection du contrôleur

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Logiciel de Base. I. Représentation des nombres

Compilation (INF 564)

Resolution limit in community detection

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

OCL - Object Constraint Language

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

M06/5/COMSC/SP1/FRE/TZ0/XX INFORMATIQUE NIVEAU MOYEN ÉPREUVE 1. Mardi 2 mai 2006 (après-midi) 1 heure 30 minutes INSTRUCTIONS DESTINÉES AUX CANDIDATS

Transcription:

DEVOIR 1 Noté sur 5 points Exercice 1 : édition de liens On dispose d'un ensemble de modules définis comme suit: module GEOMETRIE taille 1242 liens à satisfaire TRIANGLE_SURFACE CARRE_PERIMETRE DIAGONALE ERREUR_CALCUL adresse lancement 612 (2 points) module TRIANGLE taille 548 liens utilisables TRIANGLE_SURFACE 257 TRIANGLE_PERIMETRE 412 HAUTEUR 124 module CARRE taille 2120 liens utilisables CARRE_PERIMETRE 1200 liens à satisfaire DIAGONALE LONGUEUR_COTE ERREUR_CALCUL module UTIL taille 532 liens utilisables ERREUR_CALCUL 213 DIAGONALE 144 LONGUEUR_COTE 513 liens à satisfaire ECRIRE module E/S taille 128 liens utilisables ECRIRE 64 LIRE 104 On effectue l'édition de liens de tous ces modules. Donnez en justifiant brièvement votre réponse: les adresses d'implantation de ces modules, la taille totale du programme résultant, la table des liens, l'adresse de lancement du programme résultant. 1

Exercice 2 : Compilation (3 points) Soit la langage suivant : <programme> ::= PROGRAM <identificateur> <suite de phrases> FIN <suite de phrases> ::= <phrase> <phrase><suite de phrases> <phrase> ::= <déclaration> ; <instruction> ; <déclaration>::= <identificateur> : <type> <type>::= réel entier <instruction> ::= <identificateur> = <expression> <expression> ::= <facteur> { + - } <expression> <facteur> <facteur> ::= <terme> { * / } <facteur> <terme> <terme> ::= <identificateur> <nombre> ( <expression> ) <nombre> ::= <nombre entier> <nombre réel> De ces règles, on peut déduire qu un tel langage contient déjà les unités lexicales suivantes: = + - * / ( ) réel entier PROGRAM FIN ; : De plus, les identificateurs sont des unités lexicales constituées d une lettre. Les nombres entiers sont des unités lexicales constituées d un chiffre et les nombres réels sont des unités lexicales constituées de deux chiffres séparés par une virgule. Ceci peut donc se décrire comme suit: <nombre entier> ::= <chiffre> <nombre réel> ::= <chiffre>, <chiffre> <identificateur> ::= <lettre> <chiffre> ::= 1 2 3 4 5 6 7 8 9 <lettre> ::= A B... Z L'espace (blanc) est sans signification, mais ne peut se trouver à l intérieur d une unité lexicale. Les espaces ne peuvent se trouver à l'intérieur d'une unité lexicale, et n'ont pas de signification. Une instruction doit se trouver toute entière sur une même ligne, et une ligne ne peut contenir qu'une seule instruction. A- On s'intéresse d abord à l'analyse lexicale. Présentez le découpage en unités lexicales en enfermant celles-ci dans des rectangles. Donner le résultat fourni par l'analyseur lexical pour les lignes suivantes, en justifiant votre raisonnement. Signalez les éventuelles erreurs lexicales. 2

PROGRAM X A : entier $ C : réel ; b = 3 * C 1 FIN B - Donner le résultat de l analyse syntaxique sur les 4 lignes suivantes, en justifiant votre raisonnement. B = 3 * C 1 On exprimera cette analyse sous la forme d arbres de syntaxe. C. Analyse sémantique. L'analyse sémantique doit vérifier pour notre langage, les règles suivantes : Tout identificateur, utilisé dans une instruction, doit être déclaré. Tout identificateur déclaré doit être utilisé dans une instruction ; Dans une instruction, si l'identificateur à gauche de "=" est déclaré de type "entier" alors l expression à droite ne doit comporter que des valeurs entières. De même, si l'identificateur à gauche de "=" est déclaré de type "réel" alors alors l expression à droite ne doit comporter que des valeurs réelles. Quelles sont les erreurs signalées par l'analyse sémantique pour notre programme corrigé? Justifiez votre réponse. PROGRAM X A : entier ; C : réel ; B = 3 * C ; FIN 3

Exercice BONUS L exercice BONUS est un exercice complémentaire utilisant des notions non étudiées en cours mais faisant l objet d un complément écrit déposé sur le site http://deptinfo.cnam.fr et sur pleiad. Cet exercice n est pas formellement noté. Le fait de le résoudre correctement apporte un bonus pour la note finale de l examen pris en compte pour relever les notes finales comprises entre 8 <= NF <10. Rappel NF valeur sur 20 = NExamen noté sur 15 + Moyenne devoirs sur 5 On dispose de cinq fichiers sources, dont des extraits sont donnés ci-dessous. Ils définissent une collection de modules qui, avec d autres modules de bibliothèque, constituent un programme appelé init_ordi. proc.h #ifdef PROC_86 long cache[512]; long memoire[512,512]; #else long cache[128]; long memoire[128,128]; #endif interrupt.h #define NB_INTERRUPT 256 peripherique.h #ifdef BUS_IDE int nb_disque; #else int nb_dma; #endif init_proc.c #define PROC_86 #include "proc.h" main() {... } init_autre.c #include "peripherique.h" #include "interrupt.h" int tab_interrupt [NB_INTERRUPT] 4

main() {... } A Ces fichiers contiennent des directives qui doivent faire l objet d un traitement par un préprocesseur avant d être compilé. Donnez le résultat du traitement du préprocesseur sur chacun des fichiers «.c». B.Pour obtenir le programme init_ordi, il faut exécuter les commandes suivantes, correspondant à la compilation des modules suivie de l édition des liens: cc -c init_autre.c cc -c init_proc.c ld -o init_ordi init_autre.o init_proc.o Définissez le graphe de dépendance relatif au programme init_ordi, et construisez le fichier Makefile correspondant. C Le fichier interrupt.h est modifié comme suit: interrupt.h #define NB_INTERRUPT 512 Expliquer ce qui se passe lorsque l'on lance ensuite la commande make. 5