Projet Concept de Programmation

Documents pareils
Les structures de données. Rajae El Ouazzani

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

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)

Les arbres binaires de recherche

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

Recherche dans un tableau

Cours d algorithmique pour la classe de 2nde

Java Licence Professionnelle CISII,

Pourquoi l apprentissage?

Cours Informatique Master STEP

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

Corrigé des TD 1 à 5

Examen Médian - 1 heure 30

Compilation (INF 564)

Arbres binaires de recherche

Algorithmique et Programmation, IMA

Propagation sur réseau statique et dynamique

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

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

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

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

FctsAffines.nb 1. Mathématiques, 1-ère année Edition Fonctions affines

Organigramme / Algorigramme Dossier élève 1 SI

Introduction à MATLAB R

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Principes des langages de programmation INF 321. Eric Goubault

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Quatrième partie IV. Test. Test 15 février / 71

Initiation à l algorithmique

STAGE IREM 0- Premiers pas en Python

DG-ADAJ: Une plateforme Desktop Grid

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Licence Sciences et Technologies Examen janvier 2010

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Cours de Génie Logiciel

Cours 14 Les fichiers

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes


Cours de Programmation 2

I. Introduction aux fonctions : les fonctions standards

Qualité du logiciel: Méthodes de test

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

1. Structure d'un programme FORTRAN 95

Analyse de sécurité de logiciels système par typage statique

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

Les chaînes de caractères

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Chapitre 4 Pierre, papier, ciseaux

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

1 Modélisation d être mauvais payeur

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

Représentation d un entier en base b

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Java 1.5 : principales nouveautés

TD3: tableaux avancées, première classe et chaînes

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

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Les BRMS Business Rules Management System. Groupe GENITECH

INF 321 : mémento de la syntaxe de Java

Algorithmique I. Algorithmique I p.1/??

Continuité et dérivabilité d une fonction

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

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Introduction au langage C

Application 1- VBA : Test de comportements d'investissements

COURS ALGORITHMIE. Mathématiques. Le monde merveilleux des algorithmes!! Croyez-moi, vous allez les adorer. Julien Bordas T.S 3

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

Solutions du chapitre 4

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Guide de l utilisateur Faronics System Profiler Standard

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Problèmes liés à la concurrence

TP, première séquence d exercices.

Cours 7 : Utilisation de modules sous python

Jeux de caracte res et encodage (par Michel Michaud 2014)

Initiation à LabView : Les exemples d applications :

Algorithmique et programmation : les bases (VBA) Corrigé

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

progression premiere et terminale

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

ACTIVITÉ DE PROGRAMMATION

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

AWS avancé. Surveiller votre utilisation d EC2

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

Bernard HAMM, Évelyne LAVOISIER

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

ACQUISITION ANALYSE PRÉSENTATION

Algorithmique répartie

Les processus légers : threads. Système L3, /31

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Programmer en JAVA. par Tama

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

Algorithmes de recherche

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

L exclusion mutuelle distribuée

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

Transcription:

Projet Concept de Programmation plan du projet de l'année

Plan de la présentation Interface avec Caml et Java Calcul de l'abscisse Calcul de l'ordonnée Traçage effectif du graphe

Les constructeurs Il faut définir un constructeur par type de sommet C'est dans la partie Caml ou Java qu'il faut gérer la traduction du programme en un graphe répondant aux contraintes suivantes... Il manque le constructeur pour le goto_simple!

Assignation, return,... Liste complète : assignation, fin_programme (return), instr_skip Ces instructions n'ont pas de continuation Elles doivent etre composées avec des séquences, des if, etc. Leur label est la valeur de l'instruction : Assignation (i=3), label : i=3 fin_programme (return 0), label : 0 Skip, pas de label (NULL)

La séquence et le goto La séquence Le constructeur de séquence permet de composer deux instructions ou séquences d'instruction Après la dernière instruction du premier argument, on passe à la première instruction du second argument Le goto_simple Cette instruction n'apparait pas dans un programme de départ Elle a un fils (le sommet pointé) et pas de label Il faut l'ajouter à la fin d'un corps de boucle (elle pointe alors vers le sommet while correspondant) au à la fin d'une partie then d'une condition (elle pointe alors vers la continuation)

La condition Ce constructeur permet de coder un if... then... else...fi Pour le constructeur if, il faut ajouter une séquence entre la fin de la partie else et la continuation du if (ce qui suit le fi) Avant de faire un appel aux constructeurs C, il faut aussi ajouter un goto_simple à la fin de la partie else et qui pointe vers la continuation Pour faire cet ajout (en Caml et en Java), il faut faire un pré-traitement qui va ajouter aussi une opération de séquence.

La boucle Il s'agit du constructeur while qui a un fils, le corps de boucle L'insertion du goto_simple doit etre fait dans la partie Caml ou Java La valeur du successeur de ce goto_simple doit etre mise à jour lors de la construction du sommet while Il est conseillé d'utiliser un parcours récursif simple du corps de boucle

Plan de la présentation Interface avec Caml et Java Calcul de l'abscisse Calcul de l'ordonnée Traçage effectif du graphe

Interface du module Ce module doit définir deux fonctions : Place_abscisse Effectue un parcours du graphe pour calculer l'abscisse de chaque sommet Met à jour un tableau associant à l'id d'un sommet l'abscisse de ce sommet get_abscisse Lit le tableau calculé par place_abscisse Rend l'abscisse du sommet dont l'id est passée en paramètre

Placement de l'abscisse Point (592,812) Hauteur : 812 pts Largeur : 592 pts Point (0,0) Cible du traçage du graphe

Placement de l'abscisse Algorithme : Parcours récursif du graphe Cible du traçage du graphe

Placement de l'abscisse Algorithme : Asb_min Abs_max Parcours récursif du graphe Maintenance de : abs_min abs_max Ce sont des paramètres d'une fonction appelée récursivement! Cible du traçage du graphe

Placement de l'abscisse I= 3*j+2 Cible du traçage du graphe Algorithme : Parcours récursif du graphe Maintenance de : abs_min abs_max Cas terminal : on place le sommet au milieu de l'intervalle Cas sequentiel : on appelle la fonction sur les deux arguments avec les memes paramètres

Placement de l'abscisse a=a-b If a > b b=b-a Cible du traçage du graphe Algorithme : Parcours récursif du graphe Maintenance de : abs_min abs_max Cas If : On divise l'intervalle en deux Le traitement du goto_simple permet de revenir à l'intervalle initial

! " # $ % & Placement de l'abscisse Algorithme : a=a-b while a > b Parcours récursif du graphe Maintenance de : abs_min abs_max Cas while : On divise l'intervalle en deux pour le corps On part dans la partie gauche Cible du traçage du graphe

' ( ) * +, - Placement de l'abscisse Goto a=a-b Cible du traçage du graphe Algorithme : Parcours récursif du graphe Maintenance de : abs_min abs_max Cas goto_simple : On élargit l'intervalle à droite pour le fils Correction : dès qu'on tombe sur un sommet ayant déjà une abscisse, on s'arrete.

. / 0 1 Plan de la présentation Interface avec Caml et Java Calcul de l'abscisse Calcul de l'ordonnée Traçage effectif du graphe

2 3 4 5 6 7 Interface du module Ce module doit définir deux fonctions : Place_ordonnée Effectue un parcours du graphe pour calculer l'ordonnée de chaque sommet Met à jour un tableau associant à l'id d'un sommet l'ordonnée de ce sommet get_ordonnée Lit le tableau calculé par place_ordonnée Rend l'ordonnée du sommet dont l'id est passée en paramètre

8 9 : ; Placement de l'ordonnée Niveau 0 Niveau 1 Niveau 2 Algorithme : Parcours récursif du graphe pour calculer le niveau d'un sommet Le niveau vaut 0 tout en haut Plus le niveau est élevé, plus le sommet est bas La fonction rend la hauteur maximale du sous-graphe exploré

< = >? @ A B Placement de l'ordonnée Algorithme : Appel à un successeur Avec niveau+1 goto_simple : Jamais d'appel récursif Le niveau du successeur est mis à jour s'il n'est pas déjà défini Mise à jour : Choisir le maximum entre niveau courant et le paramètre niveau de la fonction

C D E F Plan de la présentation Interface avec Caml et Java Calcul de l'abscisse Calcul de l'ordonnée Traçage effectif du graphe

G H I Fichiers fournis Un certain nombre de fichiers sont fournis pour le traçage du graphe : Les fichiers noeud.c et noeud.h du module noeud Les fichiers postscript fin.ps et preambule.ps, qui doivent etre trouvés par le module noeud Un exécutable permettant d'afficher les fichiers postscript (gv ou ghostview)

J K Compilation du fichier noeud.c La constante symbolique REP_PS doit etre définie et etre le chemin (en chaine de caractères) du répertoire où se trouvent les fichiers postscript La constante symbolique CHEMIN_GV doit etre définie et valoir le chemin complet d'un interpreteur Postscript