1 Introduction : codage ASCII vs codage de Huffman

Dimension: px
Commencer à balayer dès la page:

Download "1 Introduction : codage ASCII vs codage de Huffman"

Transcription

1 RICM3-2010/2011 Langage et Programmation 2, TP2 Code de Huffman Il est fortement conseillé de tester vos fonctions avec des entrées judicieusement choisies. Objectifs : Construire et utiliser des arbres de Huffman afin de coder efficacement des messages. 1 Introduction : codage ASCII vs codage de Huffman Tout type d information est représenté par une suite de bits, 0 ou 1. En particulier la table ASCII permet de coder l alphabet latin et bien d autres caractères (256 en tout) sur 8 bits. Ce codage est dit de longueur fixe car chaque caractère, une fois codé, a la même longueur. Par exemple, le code de a est On présente également souvent le code interprété comme un nombre en base 2, ce qui dans le cas de a donne = 97. Il existe également des codes à longueur variable, comme le code de Huffman qui est l objet de ce TP. Dans ce cas (comme pour le Morse), les caractères les plus fréquents sont codés de manière plus concise que ceux qui sont rares. Par exemple, en Morse la lettre E est codée par un. (un seul symbole) alors que la lettre Y est codée par -.-- (4 symboles). Ainsi, le code d un message quelconque sera en moyenne plus court que si l on avait utilisé un code de longueur fixe. Mais cela introduit une problématique nouvelle : puisque la longueur des codes des différents caractères n est pas toujours la même, comment déterminer où s arrête le code d un caractère et où commence le code du suivant? Le code de Huffman répond à cette question grâce à la propriété suivante : le code d un caractère n est jamais le préfixe du code d un autre caractère (on dit que le code de Huffman est un code préfixe). Le code de Huffman repose sur la construction et l utilisation d un arbre de Huffman qui est soit une feuille, soit un nœud auquel on associe un entier et deux arbres appelés fils. Les nœuds pères sont reliés à leurs nœuds fils par une arête. La racine de l arbre est l unique nœud ne possédant pas de parent. La hauteur d un arbre est la plus grande distance en nombre d arêtes de la racine à une feuille. Un arbre de Huffman est construit en se basant sur la fréquence de chaque caractère dans le message à coder, et indique comment coder ce message. On appelle fréquence d un caractère dans un texte le nombre d occurrences de ce caractère dans le texte considéré. Les caractères à coder sont portés par les feuilles de l arbre et le code associé à un caractère est déterminé à partir du chemin entre la racine et la feuille portant ce caractère. Voici par exemple un arbre de Huffman servant au codage du message hello leo. /--(2, o ) /--4 \--(2, e ) --9 /--(3, l ) \--5 /--(1, ) \--2

2 À chaque nœud est associé un poids, qui est la somme des fréquences des caractères portés par les feuilles qui dépendent de ce nœud. Quand on parle du poids d un arbre, on fait référence au poids de sa racine. On convient que la racine est en haut d un arbre et que la branche de gauche d un arbre (en bas sur le dessin ) correspond à un 0 et celle de droite à un 1. Ainsi la lettre h est codée par 000 tandis que la lettre e est codée par 10. Le message entier, hello leo, sera codé par Remarques : il existe plusieurs arbres de Huffman équivalents pour un même texte. Par exemple, échanger dans l arbre ci-dessus les feuilles contenant les lettres o et e donne un arbre de Huffman équivalent pour ce texte. D autre part, les étiquettes portées par les nœuds ne servent qu à la construction de l arbre. Lors du codage et du décodage d un texte, seules les informations contenues par les feuilles sont utilisées. Exercice 1 (1 point) Quelle taille a le code ASCII du message hello leo? Comparer à la taille du codage de Huffman de ce même message. En utlisant l arbre de de Huffman associé à hello leo, coder les mots lolo et ole ole. Pour l arbre fourni en exemple, de quelle longueur diffèrent les deux codages (séquences de bits) les plus longs d un code de Huffman pour une lettre? Combien de bits ces deux codages ont-ils en commun? 2 Manipulation d un arbre de Huffman Les fichiers affichage.cmi et affichage.cmo, disponibles sur le site de l UE (http: //www-verimag.imag.fr/ plafourc/teaching/lp2_ricm3_2010_2011.php). Ces fichiers fournissent le type arbre de Huffman et une fonction afficher_arbre qui permet d afficher de tels arbres. Le type arbre de Huffman défini est le suivant : type arbrehuffman = Feuille of int * char Noeud of arbrehuffman * int * arbrehuffman Nous reviendrons dans le TP3 sur la compilation de programmes CAML. Noter pour l instant qu un fichier.cmo contient le bytecode (code intermédiaire portable) correspondant à la compilation d un fichier.ml, tandis qu un fichier.cmi rend visibles toutes les définitions décrites dans un fichier d interface.mli (par défaut, toutes les définitions du fichier.ml). Pour pouvoir les utiliser, copier affichage.cmi et affichage.cmo dans votre répertoire courant et rajouter en entête de votre fichier tp2.ml les commandes #load "affichage.cmo" puis open Affichage. Exercice 2 (0,5 point) Définir le type foret en représentant une forêt par une liste d arbres de Huffman. Exercice 3 (0,5 point) Construire et afficher l arbre présenté en introduction. 2

3 2.1 Décodage d un message On définit le type bit de la façon suivante : type bit = Zero Un Exercice 4 (2 points) Écrire la fonction decodage, qui prend en entrée un arbre de Huffman et un message sous forme de liste de bits et qui rend le message décodé sous forme de chaîne de caractères. Pour cela vous aurez besoin des primitives fournies par CAML, ˆ qui concaténe deux chaînes strings et String.make 1 c qui construit la chaîne c Codage d un message À partir d un arbre de Huffman, pour connaître le code d un caractère, il faut parcourir l arbre en recherchant quelle feuille porte le caractère que l on veut coder et quel est le chemin qui y mène. Cela n est pas réaliste pour coder un message. Nous allons donc construire à partir d un arbre de Huffman une liste d associations entre caractère et code, en utilisant les fonctions offertes par le module List de CAML (cf. documentation). Exercice 5 (1 points) Écrire la fonction associer qui prend un arbre de Huffman et qui rend une liste de couples (caractère, code associé). Exercice 6 (3 points) En créant et en utilisant une liste d associations comme ci-dessus, écrire la fonction de codage qui prend un arbre de Huffman et un texte et qui rend le texte codé par l arbre donné. Utiliser les primitives suivantes : String.length s donne la longueur de la chaîne s. s.[k], pour s une chaîne donnée et k un entier entre 0 et (String.length s - 1), rend le (k + 1)-ème élément de s (l indiçage commence à 0). 3 Construction des arbres de Huffman Pour construire l arbre de Huffman correspondant à un texte, on procède de la manière suivante : On calcule la fréquence de chaque caractère présent dans le texte. On crée une forêt contenant un arbre pour chaque caractère présent dans le texte. Chaque arbre est constitué d une unique feuille portant le caractère traité et son poids. La forêt doit être triée par poids croissant des arbres. On fusionne les deux feuilles ayant le poids le plus petit de telle sorte que l arbre obtenu ait pour sous-arbres les deux feuilles fusionnées et pour racine un nœud de poids la somme des poids des feuilles. On insère cet arbre dans la forêt de sorte qu elle reste triée. On prend soin d insérer l arbre le plus loin possible dans la forêt car cela permettra d obtenir à la fin un arbre le plus équilibré possible. On recommence avec les deux arbres qui sont désormais de poids minimal, et on itère ce processus jusqu à ce qu il n y ait plus qu un seul arbre dans la forêt. Cet arbre est l arbre de Huffman recherché. Ainsi, sur l exemple, la construction de l arbre de Huffman s effectuera de la façon suivante : 1 Pour plus de précisions référez-vous à la documentation en ligne dans «resources» suivre «Objective Caml manual» puis «The core language» 3

4 Étape 1 : [--(1, h ); --(1, ); --(2, e ); --(2, o ); --(3, l )] Étape 2 : /--(1, ) [--(2, e ); --(2, o ); --2 ; --(3, l )] Étape 3 : /--(1, ) /--(2, o ) [--2 ; --(3, l ); --4 ] \--(2, e ) Étape 4 : /--(2, o ) /--(3, l ) [--4 ; --5 ] \--(2, e ) /--(1, ) \--2 Étape 5 : /--(2, o ) /--4 \--(2, e ) [--9 ] /--(3, l ) \--5 /--(1, ) \--2 Sur le site web, on donne les fichiers de la fonction frequence qui prend en entrée un texte et retourne une liste d associations représentant chaque caractère associé à sa fréquence dans le texte. Exercice 7 (0,5 point) Donner l arbre de Huffman associé à babar et le codage de raba. Si toutes les fréquences sont égales, quelle sera la hauteur de l arbre de Huffman correspondant? Exercice 8 (1 point) Écrire une fonction poids qui vous aidera à répondre à la question cidessous. Adapter la fonction du TP1 inserer dans une liste triée pour qu elle manipule des listes d arbres. L ordre utilisé sera l ordre sur le poids des racines des arbres considérés. L arbre à insérer le sera le plus loin possible dans la liste (dans le cas d une égalité). Exercice 9 (0,5 point) En utilisant inserer, créer la forêt initiale à partir d une liste d associations indiquant les fréquences de chaque caractère. 4

5 Exercice 10 (3 points) Écrire la fonction fusion qui fusionne deux arbres comme indiqué cidessus. Écrire la fonction huffman qui prend un texte et rend l arbre de Huffman correspondant. Exercice 11 (0,5 point) Le fichier lp2_code.ml sur la page web du cours contient un arbre de Huffman et un message sous forme de liste de bits. Décoder le message. Comme vous pouvez le remarquer, pour décoder un message on a besoin de l arbre ayant servi à son codage. Il faudra donc trouver un moyen d exprimer cet arbre par une suite de bits compacte (notre objectif est de compresser un message) pour pouvoir le transmettre en même temps que notre message, ce qui n est pas le cas pour un message codé en ASCII ou morse. Ce problème n est pas traité dans ce TP mais il existe sur internet de nombreuses références à ce sujet. 4 Transformation BWT Pour un mot w sur un alphabet A on définit sa rotation r(w) par : { ε si w = ε, r(w) = w a si w = aw avec a A, w A. L opération r effectue une rotation du mot en déplaçant la lettre initiale en fin de mot. Pour un mot w de taille n on appelle w, r(w), r(r(w)),..., r n 1 (w) les rotations de w. La transformation BWT considère les n rotations possibles du mot w, les trie, et renvoie le mot formé des dernières lettres des rotations triées, ainsi que la position de la première occurence du mot initial dans la liste triée de ses rotations. Une description plus complète est donnée sur la page Exercice 12 (2,5 points) Écrire une fonction rotations qui pour un mot de taille n quelconque calcule la liste de ses n rotations (non nécessairement distinctes). Exercice 13 (1 points) Écrire une fonction bwt qui calcule la transformée BWT d un mot. Exercice 14 (3 points) Écrire une fonction bwti qui calcule la transformée BWT inverse. 5 Transformation MTF (Bonus) La transformation MTF (pour Move To Front) code un mot sur un alphabet quelconque de taille n en une suite d entiers entre 0 et n 1. La procédure est décrite à la page suivante : Exercice 15 (2 points) Écrire une fonction mtf calculant la transformée MTF d une chaîne. Vous pourrez utiliser Char.code et Char.chr. 5

6 Exercice 16 (1 points) Écrire une fonction mtfi calculant la transformée MTF inverse. Exercice 17 (1 points) Écrire une fonction qui pour une chaîne calcule sa transformée BWT, puis MTF, applique le codage de Huffman, et retourne tout ce qui est nécessaire pour calculer le décodage inverse. 6

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes

Plus en détail

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

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

modules & compilation

modules & compilation Programmation fonctionnelle avec OCaml 3ème séance, 19 mars 2015 modules & compilation samuel.hornus@inria.fr http ://www.loria.fr/ shornus/ocaml/ Modules Un module regroupe un ensemble de définitions

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

PROJET ALGORITHMIQUE ET PROGRAMMATION II

PROJET ALGORITHMIQUE ET PROGRAMMATION II PROJET 1 ALGORITHMIQUE ET PROGRAMMATION II CONTENU DU RAPPORT A RENDRE : o Fiche signalétique du binôme o Listing des différents fichiers sources o CD sources o Il sera tenu compte de la présentation du

Plus en détail

Formats d images. 1 Introduction

Formats d images. 1 Introduction Formats d images 1 Introduction Lorsque nous utilisons un ordinateur ou un smartphone l écran constitue un élément principal de l interaction avec la machine. Les images sont donc au cœur de l utilisation

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Définitions. Numéro à préciser. (Durée : )

Définitions. Numéro à préciser. (Durée : ) Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.

Plus en détail

1 Introduction au codage

1 Introduction au codage CélestineOscarDésiréAnatoleGastonEugène 1 Introduction au codage 1.1 Les ensembles L ensemble de tout les ensembles est Dieu lui-même. Kantor Ensemble des parties d un ensemble désigne l ensemble des sous-ensembles

Plus en détail

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

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. Sciences et Technologies de l Industrie et du Développement Durable Formation des enseignants parcours : ET24 Modèle de

Plus en détail

Les arbres binaires de recherche

Les arbres binaires de recherche Institut Galilée Année 2010-2011 Algorithmique et arbres L2 TD 6 Les arbres binaires de recherche Type en C des arbres binaires (également utilisé pour les ABR) : typedef struct noeud_s { struct noeud_s

Plus en détail

Conversion d un entier. Méthode par soustraction

Conversion d un entier. Méthode par soustraction Conversion entre bases Pour passer d un nombre en base b à un nombre en base 10, on utilise l écriture polynomiale décrite précédemment. Pour passer d un nombre en base 10 à un nombre en base b, on peut

Plus en détail

TP3 : Manipulation et implantation de systèmes de fichiers 1

TP3 : Manipulation et implantation de systèmes de fichiers 1 École Normale Supérieure Systèmes et réseaux Année 2012-2013 TP3 : Manipulation et implantation de systèmes de fichiers 1 1 Répertoire de travail courant Le but de l exercice est d écrire une commande

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Programmation en Java IUT GEII (MC-II1) 1

Programmation en Java IUT GEII (MC-II1) 1 Programmation en Java IUT GEII (MC-II1) 1 Christophe BLANC - Paul CHECCHIN IUT Montluçon Université Blaise Pascal Novembre 2009 Christophe BLANC - Paul CHECCHIN Programmation en Java IUT GEII (MC-II1)

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Les chaînes de caractères

Les chaînes de caractères Les chaînes de caractères Dans un programme informatique, les chaînes de caractères servent à stocker les informations non numériques comme par exemple une liste de nom de personne ou des adresses. Il

Plus en détail

Les structures. Chapitre 3

Les structures. Chapitre 3 Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

TIC. Tout d abord. Objectifs. L information et l ordinateur. TC IUT Montpellier

TIC. Tout d abord. Objectifs. L information et l ordinateur. TC IUT Montpellier Tout d abord TIC TC IUT Montpellier Nancy Rodriguez Destruel Dans la salle de cours (et partout ailleurs ) : Ponctualité et assiduité exigées Ne pas manger, ni boire, ni dormir, ni travailler à autre chose

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

Transmission d informations sur le réseau électrique

Transmission d informations sur le réseau électrique Transmission d informations sur le réseau électrique Introduction Remarques Toutes les questions en italique devront être préparées par écrit avant la séance du TP. Les préparations seront ramassées en

Plus en détail

IV- Comment fonctionne un ordinateur?

IV- Comment fonctionne un ordinateur? 1 IV- Comment fonctionne un ordinateur? L ordinateur est une alliance du hardware (le matériel) et du software (les logiciels). Jusqu à présent, nous avons surtout vu l aspect «matériel», avec les interactions

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

Approche Contract First

Approche Contract First Exemple HelpDesk Approche Contract First Développement d un premier web service en utilisant l approche contract first (ou WSDL First) Écriture du wsdl avant d écrire le code java Autre possibilité implementation

Plus en détail

ARBRES BINAIRES DE RECHERCHE

ARBRES BINAIRES DE RECHERCHE ARBRES BINAIRES DE RECHERCHE Table de symboles Recherche : opération fondamentale données : éléments avec clés Type abstrait d une table de symboles (symbol table) ou dictionnaire Objets : ensembles d

Plus en détail

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

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Ces exercices portent sur les items 2, 3 et 5 du programme d informatique des classes préparatoires,

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

TP Codage numérique des caractères. Un ordinateur ne manipule que des 0 et des 1 : Comment alors code-t-il du texte?

TP Codage numérique des caractères. Un ordinateur ne manipule que des 0 et des 1 : Comment alors code-t-il du texte? TP Codage numérique des caractères Un ordinateur ne manipule que des 0 et des 1 : Comment alors code-t-il du texte? I Le code ASCII 1. Une première approche Ouvrir un fichier Excell Sur la ligne 1 du tableau,

Plus en détail

1.1 L EXPLORATEUR WINDOWS

1.1 L EXPLORATEUR WINDOWS Gérer les fichiers et les dossiers Cette partie du T.P. a pour objectifs de vous familiariser avec les méthodes pour copier, déplacer, effacer, renommer des dossiers et des fichiers. 1.1 L EXPLORATEUR

Plus en détail

1 Introduction et installation

1 Introduction et installation TP d introduction aux bases de données 1 TP d introduction aux bases de données Le but de ce TP est d apprendre à manipuler des bases de données. Dans le cadre du programme d informatique pour tous, on

Plus en détail

chapitre 4 Nombres de Catalan

chapitre 4 Nombres de Catalan chapitre 4 Nombres de Catalan I Dénitions Dénition 1 La suite de Catalan (C n ) n est la suite dénie par C 0 = 1 et, pour tout n N, C n+1 = C k C n k. Exemple 2 On trouve rapidement C 0 = 1, C 1 = 1, C

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Polymorphisme, la classe Object, les package et la visibilité en Java... 1 Polymorphisme, la classe Object, les package et la visibilité en Java. Polymorphisme, la classe Object, les package et la visibilité en Java.... 1 Polymorphisme.... 1 Le DownCast... 4 La Classe Object....

Plus en détail

Chapitre I Notions de base et outils de travail

Chapitre I Notions de base et outils de travail Chapitre I Notions de base et outils de travail Objectifs Connaître les principes fondateurs et l historique du langage Java S informer des principales caractéristiques du langage Java Connaître l environnement

Plus en détail

Console IAP Manuel d utilisation

Console IAP Manuel d utilisation Console IAP Manuel d utilisation Préface Cette application fut un projet lancé à l initiative du service IAP (Industrialisation Automatisation et Projet) de l entreprise SEA TPI, composé de développeurs

Plus en détail

Étude de l application DNS (Domain Name System)

Étude de l application DNS (Domain Name System) Étude de l application DNS (Domain Name System) RICM 4 - Option Réseaux Pascal Sicard Introduction Le but de ce TP est de comprendre l utilisation et le fonctionnement de l application réseau DNS (Domain

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Informatique Générale

Informatique Générale Informatique Générale Guillaume Hutzler Laboratoire IBISC (Informatique Biologie Intégrative et Systèmes Complexes) guillaume.hutzler@ibisc.univ-evry.fr Cours Dokeos 625 http://www.ens.univ-evry.fr/modx/dokeos.html

Plus en détail

Codage d information. Codage d information : -Définition-

Codage d information. Codage d information : -Définition- Introduction Plan Systèmes de numération et Représentation des nombres Systèmes de numération Système de numération décimale Représentation dans une base b Représentation binaire, Octale et Hexadécimale

Plus en détail

Compression de Données - Algorithme de Huffman Document de Conception

Compression de Données - Algorithme de Huffman Document de Conception ROLLET Samuel SALLE Jennifer Compression de Données - Algorithme de Huffman Document de Conception Projet d'algorithmique et Structure des Données 1 SOMMAIRE 1. Domaine d application....4 1.1 Objectifs

Plus en détail

TP, première séquence d exercices.

TP, première séquence d exercices. TP, première séquence d exercices. Benoît Valiron benoit.valiron@lipn.univ-paris13.fr 7 novembre 2010 Introduction Vous écrirez les réponses aux questions courtes sur une feuille à rendre à la fin de la

Plus en détail

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

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

UE C avancé cours 1: introduction et révisions

UE C avancé cours 1: introduction et révisions Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple

Plus en détail

Machines virtuelles Cours 1 : Introduction

Machines virtuelles Cours 1 : Introduction Machines virtuelles Cours 1 : Introduction Pierre Letouzey 1 pierre.letouzey@inria.fr PPS - Université Denis Diderot Paris 7 janvier 2012 1. Merci à Y. Régis-Gianas pour les transparents Qu est-ce qu une

Plus en détail

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

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

Licence de Biologie, 1ère année. Aide. [Aide 1] Comment utiliser l'explorateur Windows? Comment créer des dossiers?

Licence de Biologie, 1ère année. Aide. [Aide 1] Comment utiliser l'explorateur Windows? Comment créer des dossiers? Aide [Aide 1] Comment utiliser l'explorateur Windows? Comment créer des dossiers? Au sein d'un ordinateur, les données et les fichiers sont stockés suivant une structure d'arbre appelée arborescence. Pour

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

UML (Paquetage) Unified Modeling Language

UML (Paquetage) Unified Modeling Language UML (Paquetage) Unified Modeling Language Sommaire Introduction Objectifs Paquetage Espace de nommage d un paquetage Dépendances entre paquetages 2 Notion introduite véritablement par UML car superficiellement

Plus en détail

Installer Joomla. 2013 Pearson France Joomla! Le guide officiel Jennifer Marriott, Elin Waring

Installer Joomla. 2013 Pearson France Joomla! Le guide officiel Jennifer Marriott, Elin Waring 3 Installer Joomla Dans ce chapitre, nous procéderons au téléchargement et à l installation manuelle de Joomla, et nous expliquerons la configuration de base. Les captures d écran et les instructions font

Plus en détail

ISO/CEI 11172-3 NORME INTERNATIONALE

ISO/CEI 11172-3 NORME INTERNATIONALE NORME INTERNATIONALE ISO/CEI 11172-3 Première édition 1993-08-01 Technologies de l information - Codage de l image animée et du son associé pour les supports de stockage numérique jusqu à environ Ii5 Mbit/s

Plus en détail

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

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1 Chap 4: Analyse syntaxique 1 III- L'analyse syntaxique: 1- Le rôle d'un analyseur syntaxique 2- Grammaires non contextuelles 3- Ecriture d'une grammaire 4- Les méthodes d'analyse 5- L'analyse LL(1) 6-

Plus en détail

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

TP réseaux 4 : Installation et configuration d'un serveur Web Apache TP réseaux 4 : Installation et configuration d'un serveur Web Apache Objectifs Installer, configurer, lancer et administrer le serveur Web Apache sous Linux Données de base machine fonctionnant sous Linux

Plus en détail

21 mars 2012. Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

21 mars 2012. Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire. de 21 mars 2012 () 21 mars 2012 1 / 6 de 1 2 3 4 5 () 21 mars 2012 2 / 6 1 de 2 3 4 5 () 21 mars 2012 3 / 6 1 2 de 3 4 5 () 21 mars 2012 4 / 6 1 2 de 3 4 de 5 () 21 mars 2012 5 / 6 de 1 2 3 4 5 () 21 mars

Plus en détail

Chaque ordinateur est constitué de différentes unités de stockage de données (Disque dur, Graveur ) que l on peut imaginer comme de grandes armoires.

Chaque ordinateur est constitué de différentes unités de stockage de données (Disque dur, Graveur ) que l on peut imaginer comme de grandes armoires. Chaque ordinateur est constitué de différentes unités de stockage de données (Disque dur, Graveur ) que l on peut imaginer comme de grandes armoires. Il est important de savoir les identifier, de connaître

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

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

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr 6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr Interface d un SGF Implémentation d un SGF Gestion de la correspondance entre la structure logique et la structure

Plus en détail

La mémoire. Un ordinateur. L'octet. Le bit

La mémoire. Un ordinateur. L'octet. Le bit Introduction à l informatique et à la programmation Un ordinateur Un ordinateur est une machine à calculer composée de : un processeur (ou unité centrale) qui effectue les calculs une mémoire qui conserve

Plus en détail

TCHATONS PAR LIAISON SANS FIL BLUETOOTH

TCHATONS PAR LIAISON SANS FIL BLUETOOTH TCHATONS PAR LIAISON SANS FIL BLUETOOTH RESUME Le fichier exécutable «com_bluetooth_v5.exe», téléchargeable sur le site, est un logiciel de démonstration permettant de faire passer un message en toutes

Plus en détail

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (www.mathenvideo.comuv.com)

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (www.mathenvideo.comuv.com) TABLE DES MATIERES I) Le logiciel JADE 2 II) Etablissements 3 1) Configuation de l établissement 3 2) Importation des classes avec SCONET 4 3) Les groupes d élèves 6 4) Les variables supplémentaires 6

Plus en détail

Quelques Algorithmes simples

Quelques Algorithmes simples Quelques Algorithmes simples Irène Guessarian ig@liafa.jussieu.fr 10 janvier 2012 Je remercie Patrick Cegielski de son aide efficace pour la programmation Java ; la section sur le codage de Huffman a été

Plus en détail

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34 Capacité d un canal Second Théorème de Shannon Théorie de l information 1/34 Plan du cours 1. Canaux discrets sans mémoire, exemples ; 2. Capacité ; 3. Canaux symétriques ; 4. Codage de canal ; 5. Second

Plus en détail

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être

Plus en détail

Connexion sur REDLION G-308 avec le modem GSM GDW-11 pour envoi de SMS

Connexion sur REDLION G-308 avec le modem GSM GDW-11 pour envoi de SMS Connexion sur REDLION G-308 avec le modem GSM GDW-11 pour envoi de SMS Paramétrage du GDW-11 avec l utilitaire GD-Tool fourni avec le modem: 1. En utilisant GD-TOOL (connecté le modem sur le port série

Plus en détail

GOL502 Industries de services

GOL502 Industries de services GOL502 Industries de services Conception d un service Partie IIb Version 2013 Introduction Conception d un service partie IIb Nous verrons dans ce chapitre Modélisation d un service; Langage de modélisation

Plus en détail

Table des matières. Introduction

Table des matières. Introduction Table des matières 1 Formalisation des virus informatiques 2 1.1 Les machines de Turing........................ 2 1.2 Formalisation de Fred Cohen..................... 2 1.2.1 Définition d un virus informatique..............

Plus en détail

Chapitre 10 Arithmétique réelle

Chapitre 10 Arithmétique réelle Chapitre 10 Arithmétique réelle Jean Privat Université du Québec à Montréal INF2170 Organisation des ordinateurs et assembleur Automne 2013 Jean Privat (UQAM) 10 Arithmétique réelle INF2170 Automne 2013

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

Représentation d un entier en base b

Représentation d un entier en base b Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir

Plus en détail

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

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

Tp 1 correction. Structures de données (IF2)

Tp 1 correction. Structures de données (IF2) Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que

Plus en détail

Démonstration d utilisation De NesmaCom

Démonstration d utilisation De NesmaCom Démonstration d utilisation De NesmaCom Envoi : SMS Marketing - 1 - Démonstration : NesmaCom I. Connexion à NesmaCom Entrer votre Email et votre mot de passe pour accéder à votre compte sur notre solution

Plus en détail

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France. La NP-complétude Johanne Cohen PRISM/CNRS, Versailles, France. Références 1. Algorithm Design, Jon Kleinberg, Eva Tardos, Addison-Wesley, 2006. 2. Computers and Intractability : A Guide to the Theory of

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Généralités sur le Langage Java et éléments syntaxiques.

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

Chap III : Les tableaux

Chap III : Les tableaux Chap III : Les tableaux Dans cette partie, on va étudier quelques structures de données de base tels que : Les tableaux (vecteur et matrice) Les chaînes de caractères LA STRUCTURE DE TABLEAU Introduction

Plus en détail

Rappels Entrées -Sorties

Rappels Entrées -Sorties Fonctions printf et scanf Syntaxe: écriture, organisation Comportement Données hétérogènes? Gestion des erreurs des utilisateurs 17/11/2013 Cours du Langage C ibr_guelzim@yahoo.fr ibrahimguelzim.atspace.co.uk

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Programmation système I Les entrées/sorties

Programmation système I Les entrées/sorties Programmation système I Les entrées/sorties DUT 1 re année Université de Marne La vallée Les entrées-sorties : E/O Entrées/Sorties : Opérations d échanges d informations dans un système informatique. Les

Plus en détail

PG208, Projet n 3 : Serveur HTTP évolué

PG208, Projet n 3 : Serveur HTTP évolué PG208, Projet n 3 : Serveur HTTP évolué Bertrand LE GAL, Serge BOUTER et Clément VUCHENER Filière électronique 2 eme année - Année universitaire 2011-2012 1 Introduction 1.1 Objectif du projet L objectif

Plus en détail

TP Contraintes - Triggers

TP Contraintes - Triggers TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution

Plus en détail

TP1. Outils Java Eléments de correction

TP1. Outils Java Eléments de correction c sep. 2008, v2.1 Java TP1. Outils Java Eléments de correction Sébastien Jean Le but de ce TP, sur une séance, est de se familiariser avec les outils de développement et de documentation Java fournis par

Plus en détail

Cours 1 : Qu est-ce que la programmation?

Cours 1 : Qu est-ce que la programmation? 1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre

Plus en détail

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code Généralités javadoc Université de Nice - Sophia Antipolis Richard Grin Version 1.4.1 8/2/11 javadoc produit de la documentation en partant de commentaires particuliers insérés dans le code source des classes

Plus en détail

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

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

Algorithme. Table des matières

Algorithme. Table des matières 1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............

Plus en détail

Support de TD ArcGIS 10.1. Introduction à l automatisation et au développement avec ArcGIS 10.1 JEAN-MARC GILLIOT 2014-2015. 3 e année ingénieur

Support de TD ArcGIS 10.1. Introduction à l automatisation et au développement avec ArcGIS 10.1 JEAN-MARC GILLIOT 2014-2015. 3 e année ingénieur JEAN-MARC GILLIOT 2014-2015 Durée 1,5 heures Introduction à l automatisation et au développement avec ArcGIS 10.1 3 e année ingénieur Support de TD ArcGIS 10.1 Grande école européenne d'ingénieurs et de

Plus en détail

Travaux Dirigés n 1 : chaînes de caractères

Travaux Dirigés n 1 : chaînes de caractères UE LE315 Travaux Dirigés n 1 : chaînes de caractères Exercice 1 Ecrire une fonction int nombre_caract(char *chaîne) qui retourne la taille d une chaîne de caractères. Exercice 2 Ecrire la fonction void

Plus en détail

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

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

CH.6 Propriétés des langages non contextuels

CH.6 Propriétés des langages non contextuels CH.6 Propriétés des langages non contetuels 6.1 Le lemme de pompage 6.2 Les propriétés de fermeture 6.3 Les problèmes de décidabilité 6.4 Les langages non contetuels déterministes utomates ch6 1 6.1 Le

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Architecture de l ordinateur

Architecture de l ordinateur Architecture de l ordinateur Emmanuel Lazard Université Paris-Dauphine mars 2011 Computers are my forte! BRAZIL (Terry Gilliam, 1985) Ce document a initialement été publié sous forme de livre : Emmanuel

Plus en détail

ASR1 TD7 : Un microprocesseur RISC 16 bits

ASR1 TD7 : Un microprocesseur RISC 16 bits {Â Ö Ñ º ØÖ Ý,È ØÖ ºÄÓ Ù,Æ ÓÐ ºÎ ÝÖ Ø¹ ÖÚ ÐÐÓÒ} Ò ¹ÐÝÓÒº Ö ØØÔ»»Ô Ö Óº Ò ¹ÐÝÓÒº Ö» Ö Ñ º ØÖ Ý»¼ Ö½» ASR1 TD7 : Un microprocesseur RISC 16 bits 13, 20 et 27 novembre 2006 Présentation générale On choisit

Plus en détail

Exercices sur les interfaces

Exercices sur les interfaces Exercices sur les interfaces Fabrice Rossi 18 octobre 1999 1 Le type Object 1.1 Manipulations élémentaires Exercice 1.1 : Indiquer l affichage produit par le programme suivant : public class UpCast1 {

Plus en détail