Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris

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

Download "Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris"

Transcription

1 Objectifs du cours d aujourd hui Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris Continuer l approfondissement de la programmation de base en présentant d autres thèmes de l informatique : introduction aux structures de données abstraites : listes chaînées piles introduction aux algorithmes de tris Jamila Sam Haroud Laboratoire d Intelligence Artificielle Faculté I&C Informatique I Cours1 : S.D.A. & Tris 1 Informatique I Cours1 : S.D.A. & Tris Pourquoi modéliser les données? C est quoi une «structure de données abstraite»? L élaboration d un algorithme est grandement facilité par l utilisation de structures de données abstraites, de plus haut niveau, et de fonctions de manipulations associées. Une structure de données doit modéliser au mieux les informations à traiter pour en faciliter le traitement par l algorithme considéré. Choisir les bons modèles de données est aussi important que le choix de bons algorithmes Algorithme et structure de données abstraite sont intimement liés : Programme = algorithme + données Une structure de données abstraite (S.D.A.) est un ensemble organisé d informations (ou données) reliées logiquement et pouvant être manipulées non seulement individuellement mais aussi comme un tout. Exemples généraux : tableau (au sens général du terme) contenu : divers éléments de types à préciser interactions : demander la taille du tableau, accéder (lecture/écriture) à chaque élément individuellement,... vecteur (au sens général, pas C++) : formalisation mathématique d espace vectoriel sur un corps K contenu : n coordonnées (éléments de K) interactions : les propriétés élémentaires définissant un espace vectoriel Informatique I Cours1 : S.D.A. & Tris 3 Informatique I Cours1 : S.D.A. & Tris 4

2 C est quoi une «structure de données abstraite»? Une structure de données abstraite (S.D.A.) est un ensemble organisé d informations (ou données) reliées logiquement et pouvant être manipulées non seulement individuellement mais aussi comme un tout. Exemple informatique élémentaire : Vous connaissez déjà des structures de données abstraites, très simples : les types élémentaires. Par exemple, un int interactions : affectation, lecture de la valeur, +, -, *, / Spécifications des structures de données abstraites Une S.D.A. est caractérisée par : son contenu les interactions possibles (manipulation, accès,...) Du point de vue informatique, une structure de données abstraite peut être spécifiée à deux niveaux : niveau fonctionnel / logique : spécification formelle des données et des algorithmes de manipulation associés niveau physique (programmation) : comment est implémentée la structure de données abstraite dans la mémoire de la machine déterminant pour l efficacité des programmes utilisant ces données. Informatique I Cours1 : S.D.A. & Tris 4 Informatique I Cours1 : S.D.A. & Tris 5 Spécifications des S.D.A. [] Spécifications des S.D.A. [3] Au niveau formel (modèle), on veut généraliser cette idée «d objets» manipulables par des opérateurs propres, sans forcément en connaître la structure interne et encore moins l implémentation. Par exemple, vous ne pensez pas un int comme une suite de 3 bits, mais bien comme un «entier» (dans un certain intervalle) avec ses opérations propres : +, -, *, / Une structure de données abstraite définit une abstraction des données et cache les détails de leur implémentation. abstraction : identifier précisément les caractéristiques de l entité (par rapport à ses applications), et en décrire les propriétés. Informatique I Cours1 : S.D.A. & Tris Une structure de données abstraite modélise donc l «ensemble des services» désirés plutôt que l organisation intime des données (détails d implémentation) On identifie usuellement 4 types de «services» : 1. les modificateurs, qui modifient la S.D.A.. les sélecteurs, qui permettent «d interroger» la S.D.A. 3. les itérateurs, qui permettent de parcourir la structure 4. les constructeurs (que l on verra plus tard) Exemple : tableau dynamique modifieur : affectation d un élément (t[i]=a) sélecteur : lecture d un élément (t[i]) sélecteur : le tableau est-il vide? (t.size() == 0) itérateur : index d un élément ([i] ci-dessus) Informatique I Cours1 : S.D.A. & Tris 7

3 Divers exemples de S.D.A. Il y a beaucoup de structures de données abstraites en Informatique. Dans ce cours, nous n allons voir que les plus fondamentales (après les tableaux) : les listes et les piles Autres : files d attente (avec ou sans priorité) multi-listes arbres (pleins de sorte...) graphes tables de Hash Listes Spécification logique : Ensemble d éléments successifs (pas d accès direct), ordonnés ou non Interactions : accès au premier élément (sélecteur) accès à l élément suivant d un élément (sélecteur) modifier l élément courant (modificateur) insérer/supprimer un élément après(/avant) l élément courant (modificateur) tester si la liste est vide (sélecteur) parcourir la liste (itérateur) Informatique I Cours1 : S.D.A. & Tris 8 Informatique I Cours1 : S.D.A. & Tris 10 Listes Réalisations d une liste Exemple concret : Exemple informatique : visionneuse stéreo (essayez d accéder à la 3e image directement, sans passer par la e!) ( a ( b ( c (d)))) a b c d 0 Une liste peut être vu comme une structure récursive : liste = élément + liste OU liste = vide réalisation statique : tableau réalisation dynamique (liste chaînée) : ou vector (mais inconvénient 1 ci-après) structure : struct Element ; typedef Element* ListeChainee ; struct Element { type_el element; ListeChainee suivant; Informatique I Cours1 : S.D.A. & Tris 11 Informatique I Cours1 : S.D.A. & Tris 1

4 Pourquoi les listes dynamiques? Les tableaux sont un type de données très utile en programmation mais présentent limitations : 1. les données sont contiguës (les unes derrières les autres) et donc l insertion d un nouvel élément au milieu du tableau demande la recopie (le décalage) de tous les éléments suivants. = insertion en O(n). pour les tableaux statiques, augmenter la taille (par exemple si elle n est pas connue a priori) nécessite la création d un nouveau tableau = O(n) Complexité optimale des opérations insérer un élément : supprimer un élément : calculer la longueur : élémentaires sur les listes O(1) O(1) O(n) (voire O(1) si le stockage de cette valeur est effectué, en particulier si «longueur» a été spécifiée dans les «services» de la SDA «liste») vider la liste : parcourir la liste : O(n) O(n) Informatique I Cours1 : S.D.A. & Tris 13 Informatique I Cours1 : S.D.A. & Tris 14 Exemples d implémentation des opérations élémentaires sur les listes Exemples d insertion d un élément À des fins pédagogiques, voici une implémentation simple des listes dynamiques sous forme de listes chaînées struct Element; typedef Element* ListeChainee; struct Element { type_el element; ListeChainee suite; dans une liste void insere(listechainee& liste, type_el un_element) { if (est_vide(liste)) { liste = new Element; (*liste).element = un_element; // On peut aussi écrire liste->element = un_element; liste->suite = LISTE_VIDE; else insere(*liste, un_element); après un élément donné Informatique I Cours1 : S.D.A. & Tris 15 void insere(element& existant, type_el a_inserer) { Element* e(new Element); e->element = a_inserer; e->suite = existant.suite; existant.suite = e; Informatique I Cours1 : S.D.A. & Tris 1

5 de la tête de liste Exemples de suppression void supprime(listechainee& liste) { if (!est_vide(liste)) { ListeChainee nouvelle(liste->suite); delete liste; liste = nouvelle; Exemple de calcul de la longueur unsigned int taille(listechainee liste) { unsigned int taille(0); while (!est_vide(liste)) { ++taille; liste = liste->suite; return taille; d un élément suivant un élément donné void supprime(element& e) { // supprime le premier élément de la liste "suite" supprime(e.suite); Informatique I Cours1 : S.D.A. & Tris 17 Informatique I Cours1 : S.D.A. & Tris 18 Piles Piles : exemples Spécification : Une pile est une structure de données abstraite dynamique contenant des éléments homogènes (de type non précisé) à 1 point d accès et permettant d ajouter une valeur à la pile (empiler ou push) ; de lire la dernière valeur ajoutée ; d enlever la dernière valeur ajoutée (dépiler ou pop) ; de tester si la pile est vide. Exemples concrets : une pile d assiettes une tour dans le jeu des tours de Hanoi On ne «connait» donc de la pile que le dernier élément empilé (son sommet). Spécification physique : liste chaînée ou tableau dynamique (vector) Informatique I Cours1 : S.D.A. & Tris 0 Informatique I Cours1 : S.D.A. & Tris 1

6 Piles : exemples () Exemple d utilisation des piles Exemple d utilisation (formelle) : empiler x empiler a dépiler empiler b x a x x b x Le problème des parenthèses : étant donnée une expression avec des parenthèses, est-elle bien ou mal parenthésée? ((a + b) c (d + 4) (5 + (a + c))) (c + (d + (e + 5 g) f) a) (correct) (a + b)( (incorrect) Encore un peu plus complexe : différentes parenthèses Exemple avec [ et ( ([])[()(()[])] correct ([)] incorrect empiler y dépiler y b x b x Informatique I Cours1 : S.D.A. & Tris Autres exemples d utilisation des piles (non traités ici) : tours de Hanoi notation postfixée (ou «polonaise inverse») : ( 5 (4 + )) Informatique I Cours1 : S.D.A. & Tris 3 Vérification de parenthésage Deuxième Exemple Tant que lire caractère c Si c est ( ou [ empiler c Sinon Si c est ) ou ] Si pile vide ÉCHEC Sinon c lire la pile Si c et c correspondent dépiler Sinon ÉCHEC Si pile vide OK Sinon ÉCHEC Exemple Entrée : ([)] empile ( ( empile [ lu = ), top = [ ne correspond pas = ERREUR [ ( Entrée : ([()]) empile ( ( empile [ empile ( lu ) correspond = dépile lu ] correspond = dépile ( lu ) correspond = dépile [ ( ( [ ( [ ( Informatique I Cours1 : S.D.A. & Tris 4 pile vide = OK Informatique I Cours1 : S.D.A. & Tris 5

7 code C++ bool check(string s) { Pile p; for (unsigned int i(0); i < s.size(); ++i) { if ((s[i] == ( ) (s[i] == [ )) empile(p,s[i]); else if (s[i] == ) ) { if ((!est_vide(p)) && (top(p) == ( )) depile(p); else return false; else if (s[i] == ] ) { if ((!est_vide(p)) && (top(p) == [ )) depile(p); else return false; return est_vide(p); Plan Terminons nos approfondissements en nous intéressant au problème du tri d une S.D.A. Structures de données abstraites Listes Piles Tris Informatique I Cours1 : S.D.A. & Tris Informatique I Cours1 : S.D.A. & Tris 7 Algorithmes et données : les tris les tris Les méthodes de tris sont très importantes en pratique non seulement en soi, mais aussi parce qu elle interviennent dans beaucoup d autres algorithmes. Elles sont par exemple nécessaires pour faire une recherche efficace. Le problème du tri est également un problème intéressant en tant que tel et un bon exemple de problème pour lequel il existe de nombreux algorithmes. Spécification du problème : On considère une structure de données abstraite contenant des éléments que l on peut comparer (entre eux : relation d ordre totale sur l ensemble des éléments) On dira que la S.D.A est triée si ses éléments sont disposés par ordre croissant pour l opérateur de comparaison. Informatique I Cours1 : S.D.A. & Tris 8 Par exemple : on cherche à trier un tableau de taille fixe d entiers. Remarques : entrée 1 3 programme de tri un tri ne supprime pas les doublons sortie 1 3 quelque soit l algorithme de tri, une S.D.A. vide ou réduite à un seul élément est déjà triée!... On parle de tri interne (par opposition à tri externe) lorsque l on peut effectuer le tri en mémoire dans la machine, sans utiliser de support extérieur (fichier). Informatique I Cours1 : S.D.A. & Tris 9

8 Un premier exemple : le tri par insertion Exemple de déroulement du tri par insertion Le principe du tri par insertion est extrêmement simple : un élément mal placé dans le tableau va systématiquement être inséré à sa «bonne place» dans le tableau. Tant que il y a un élément mal placé on cherche sa bonne place on déplace l élément à sa bonne place Par «élément mal placé», on entend ici tout élément du tableau strictement plus petit que son prédécesseur. Tant que il y a un élément mal placé on cherche sa bonne place on déplace l élément à sa bonne place Informatique I Cours1 : S.D.A. & Tris 30 Informatique I Cours1 : S.D.A. & Tris 31 Tri par insertion : résolution globale Tri par insertion : résolution détaillée Le schéma général de l algorithme de tri par insertion est donc le suivant : tri insertion entrée : un tableau sortie : le tableau trié Tant que il y a un élément mal placé on cherche sa bonne place on déplace l élément à sa bonne place Il faut spécifier plus clairement les blocs ci-dessus. Le bloc mal placé entrée : un tableau tab sortie : indice du 1 er élément de tab de prédécesseur strictement plus grand Par convention, s il n y a pas d élément mal placé, la sortie sera l indice du premier élément du tableau (0 en C++). Comme le 1 er élément de tab ne peut être mal placé (car sans prédécesseur), le bloc mal placé parcourira donc les éléments de tab à partir du e. Le bloc mal placé effectue donc une itération sur les éléments de tab, du deuxième au dernier. Informatique I Cours1 : S.D.A. & Tris 3 Informatique I Cours1 : S.D.A. & Tris 33

9 Tri par insertion : résolution détaillée () Le bloc bonne place entrée : un tableau tab et l indice pos d un élément mal placé sortie : l indice newpos de la bonne place de l élément mal placé dans le tableau. La «bonne position» correspond à la plus grande position newpos (<pos) dans le tableau tab telle que tab[newpos-1] tab[pos]. Le bloc bonne place doit donc parcourir les positions de tab, entre le premier élément et pos, à la recherche d une bonne position. Le bloc bonne place effectue donc aussi une itération sur les éléments du tableau, du premier élément à celui d indice pos. Tri par insertion : résolution détaillée (3) Le bloc déplace entrée : un tableau tab, un indice d origine pos et un indice final newpos Il doit déplacer l élément d indice pos dans tab à l indice newpos. On peut effectuer cette opération par décalages successifs (en utilisant un stockage temporaire tmp). tmp tab... newpos newpos+1 pos Informatique I Cours1 : S.D.A. & Tris 34 Informatique I Cours1 : S.D.A. & Tris 35 Tri par insertion : codage Tri par insertion : codage (3) Codage de l algorithme de tri par insertion : void tri_insertion(int tab[], unsigned int taille) { for (int pos(mal_place(tab,taille)); pos > 0; pos = mal_place(tab,taille)) deplace(pos, bonne_place(pos,tab), tab); Codage de la fonction mal placé : unsigned int mal_place(int tab[], unsigned int taille) { for (unsigned int i(1); i < taille; ++i) if (tab[i-1] > tab[i]) return i; return 0; Informatique I Cours1 : S.D.A. & Tris 3 Codage de la fonction bonne place : unsigned int bonne_place(unsigned int pos, int tab[]) { // il est important de déclarer i avant : pourquoi? unsigned int i; for (i = 0; (i < pos) && (tab[i] <= tab[pos]); ++i); return i; Codage de la fonction déplace : void deplace(unsigned int pos, unsigned int newpos, int tab[]) { int tmp(tab[pos]); // stockage temporaire for (unsigned int i(pos); i > newpos; --i) { tab[i] = tab[i-1]; tab[newpos] = tmp; Informatique I Cours1 : S.D.A. & Tris 37

10 Version itérative : améliorations Version itérative : améliorations 1. Pour rechercher le prochain élément mal placé, ce n est pas la peine de recommencer du début à chaque fois. On peut partir de la dernière position mal placée.. On pourrait faire la recherche de la bonne place et le déplace ment à cette place en même temps (i.e. en 1 seule boucle) Si on regroupe tout ceci on arrive à l algorithme suivant : Pour i de à n pivot tableau[i] j i Tant que j et tableau[j 1]>pivot tableau[j] tableau[j 1] j j 1 tableau[j] pivot Informatique I Cours1 : S.D.A. & Tris 38 Et voici le code en C++ : void tri_insertion(int tab[], unsigned int taille) { for (unsigned int pos(1); pos < taille; ++pos) { int mal_place(tab[pos]); unsigned int j; for (j = pos; (j > 0) && (tab[j-1] > mal_place); --j) tab[j] = tab[j-1]; tab[j] = mal_place; Informatique I Cours1 : S.D.A. & Tris 39 Version récursive On peut aussi concevoir le tri par insertion de façon récursive : tri entrée : tableau de n éléments sortie : tableau trié condition arrêt : moins de éléments tri (instance réduite du problème) entrée : tableau de n 1 éléments sortie : tableau trié... insertion du n ème élément dans le tableau trié de n 1 éléments Version récursive : exemple tri insertion Informatique I Cours1 : S.D.A. & Tris 40 Informatique I Cours1 : S.D.A. & Tris 41

11 Implémentation récursive L algorithme de tri récursif sera implémenté en C++ par la fonction : // trie le tableau tab entre first et last void tri_recursif(int tab[], int first, int last) { if (last > first) // moins de éléments -> fini { tri_recursif(tab, first, last-1); deplace(last, bonne_place(last, tab), tab); Schéma des appels récursifs : exemple tri_recursif({3,,1,0,) {1,,3 tri_recursif({3,,1,0,1) ; deplace(, {,3,1) {,3,1 Appel de départ : tri_recursif(mon_tab, 0, taille-1) ; tri_recursif({3,,1,0,0) ; deplace(1,{3,,1) {3,,1 Informatique I Cours1 : S.D.A. & Tris 4 Informatique I Cours1 : S.D.A. & Tris 43 Conclusions sur les tris Conclusions sur les tris : comparaison Ce n était qu une brève introduction, du fait de l importance des tris. Il existe plein d autres algorithmes de tris : par sélection bulles tri shaker tri de Shell tri tournois tri fusion tri par tas quick sort («tri rapide»)... COMPLEXITÉ TEMPORELLE moyenne pire cas bulles O(n ) O(n ) par sélection O(n ) O(n ) insertion O(n ) O(n ) de Shell O(n 1.5 ) quick sort O(n log n) O(n ) par tas O(n log n) O(n log n) optimum théorique O(n log n) O(n log n) Mais en pratique : à partir de quelle taille les méthodes simples deviennent-elle vraiement plus mauvaises que les méthodes sophistiquées (quick sort ou tri par tas)? Informatique I Cours1 : S.D.A. & Tris 44 Informatique I Cours1 : S.D.A. & Tris 45

12 Conclusions sur les tris : comparaison () Cela dépend de nombreux facteurs, mais en général on peut dire que pour moins d une centaine d éléments les tris sophisitiqués n en valent pas la peine. Par ailleurs, Expérimentalement le quick sort est a 3 fois plus rapide que le tris par tas Ce que j ai appris aujourd hui les bases de la formalisation des données : les structures de données abstraites les deux structures de données abstraites les plus utilisées en informatique (en plus des tableaux et des types élémentaires) : les listes chaînées et les piles introduction aux algorithmes de tri Dans le cas de liste presque triées, les tris par insertion sont efficaces Le tri bulles, très simple à écrire, est le moins bon des tris : à proscrire (sauf à des fins pédagogiques) Informatique I Cours1 : S.D.A. & Tris 4 Informatique I Cours1 : S.D.A. & Tris 47

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

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

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation : Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de

Plus en détail

Algorithmique, Structures de données et langage C

Algorithmique, Structures de données et langage C UNIVERSITE PAUL SABATIER TOULOUSE III Algorithmique, Structures de données et langage C L3 IUP AISEM/ICM Janvier 2005 J.M. ENJALBERT Chapitre 1 Rappels et compléments de C 1.1 Structures Une structure

Plus en détail

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 1 de 46 Algorithmique Trouver et Trier Florent Hivert Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 2 de 46 Algorithmes et structures de données La plupart des bons algorithmes

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

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 des Systèmes d Information Architecture des Systèmes d Information

Architecture des Systèmes d Information Architecture des Systèmes d Information Plan... Tableaux et tris I3 - Algorithmique et programmation 1 Rappels Nicol Delestre 2 Tableaux à n dimensions 3 Initiation aux tris Tableaux - v2.0.1 1 / 27 Tableaux - v2.0.1 2 / 27 Rappels : tableau

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

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

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/??

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/?? Algorithmique I Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr Télécom 2006/07 Algorithmique I 20-09-06 p.1/?? Organisation en Algorithmique 2 séances par semaine pendant 8 semaines. Enseignement

Plus en détail

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

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

1 Recherche en table par balayage

1 Recherche en table par balayage 1 Recherche en table par balayage 1.1 Problème de la recherche en table Une table désigne une liste ou un tableau d éléments. Le problème de la recherche en table est celui de la recherche d un élément

Plus en détail

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

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

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

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

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

Génie Logiciel avec Ada. 4 février 2013

Génie Logiciel avec Ada. 4 février 2013 Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre

Plus en détail

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004 Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)

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. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

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

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

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre

Plus en détail

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun> 94 Programmation en OCaml 5.4.8. Concaténation de deux listes Définissons maintenant la fonction concat qui met bout à bout deux listes. Ainsi, si l1 et l2 sont deux listes quelconques, concat l1 l2 constitue

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

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2) Objectifs du cours d aujourd hui Informatique II : Cours d introduction à l informatique et à la programmation objet Complexité des problèmes Introduire la notion de complexité d un problème Présenter

Plus en détail

Chapitre 5 : Flot maximal dans un graphe

Chapitre 5 : Flot maximal dans un graphe Graphes et RO TELECOM Nancy A Chapitre 5 : Flot maximal dans un graphe J.-F. Scheid 1 Plan du chapitre I. Définitions 1 Graphe Graphe valué 3 Représentation d un graphe (matrice d incidence, matrice d

Plus en détail

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement des objets d'une classe Utilisation d'une classe Droit

Plus en détail

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

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

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

Programmation avec des objets : Cours 7. Menu du jour

Programmation avec des objets : Cours 7. Menu du jour 1 Programmation avec des objets : Cours 7 Menu du jour 1. Retour sur la classe Liste 2. Précisions sur l interface 3. Difficultés dans le cas d erreurs 4. Soulever des exceptions 5. Utilisation des Listes

Plus en détail

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. Encapsulation L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. La visibilité dépend des membres : certains membres peuvent être visibles et d'autres

Plus en détail

Initiation à LabView : Les exemples d applications :

Initiation à LabView : Les exemples d applications : Initiation à LabView : Les exemples d applications : c) Type de variables : Créer un programme : Exemple 1 : Calcul de c= 2(a+b)(a-3b) ou a, b et c seront des réels. «Exemple1» nom du programme : «Exemple

Plus en détail

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Jade. Projet Intelligence Artificielle «Devine à quoi je pense» Jade Projet Intelligence Artificielle «Devine à quoi je pense» Réalisé par Djénéba Djikiné, Alexandre Bernard et Julien Lafont EPSI CSII2-2011 TABLE DES MATIÈRES 1. Analyse du besoin a. Cahier des charges

Plus en détail

Représentation des Nombres

Représentation des Nombres Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?

Plus en détail

Objets et Programmation. origine des langages orientés-objet

Objets et Programmation. origine des langages orientés-objet Objets et Programmation origine des langages orientés-objet modularité, encapsulation objets, classes, messages exemples en Java héritage, liaison dynamique G. Falquet, Th. Estier CUI Université de Genève

Plus en détail

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation. Université du Québec à Chicoutimi Département d informatique et de mathématique Plan de cours Titre : Élément de programmation Sigle : 8inf 119 Session : Automne 2001 Professeur : Patrice Guérin Local

Plus en détail

Poker. A rendre pour le 25 avril

Poker. A rendre pour le 25 avril Poker A rendre pour le 25 avril 0 Avant propos 0.1 Notation Les parties sans * sont obligatoires (ne rendez pas un projet qui ne contient pas toutes les fonctions sans *). Celles avec (*) sont moins faciles

Plus en détail

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

V- Manipulations de nombres en binaire

V- Manipulations de nombres en binaire 1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,

Plus en détail

Les algorithmes de base du graphisme

Les algorithmes de base du graphisme Les algorithmes de base du graphisme Table des matières 1 Traçage 2 1.1 Segments de droites......................... 2 1.1.1 Algorithmes simples.................... 3 1.1.2 Algorithmes de Bresenham (1965).............

Plus en détail

Structure fonctionnelle d un SGBD

Structure fonctionnelle d un SGBD Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert

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

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

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite

Plus en détail

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)

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) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

Partie 7 : Gestion de la mémoire

Partie 7 : Gestion de la mémoire INF3600+INF2610 Automne 2006 Partie 7 : Gestion de la mémoire Exercice 1 : Considérez un système disposant de 16 MO de mémoire physique réservée aux processus utilisateur. La mémoire est composée de cases

Plus en détail

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Logiciel Libre Cours 3 Fondements: Génie Logiciel Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/

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

Cours d Algorithmique et de Langage C 2005 - v 3.0

Cours d Algorithmique et de Langage C 2005 - v 3.0 Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris

Plus en détail

EXCEL TUTORIEL 2012/2013

EXCEL TUTORIEL 2012/2013 EXCEL TUTORIEL 2012/2013 Excel est un tableur, c est-à-dire un logiciel de gestion de tableaux. Il permet de réaliser des calculs avec des valeurs numériques, mais aussi avec des dates et des textes. Ainsi

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

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

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores INTRODUCTION AUX SYSTEMES D EXPLOITATION TD2 Exclusion mutuelle / Sémaphores Exclusion mutuelle / Sémaphores - 0.1 - S O M M A I R E 1. GENERALITES SUR LES SEMAPHORES... 1 1.1. PRESENTATION... 1 1.2. UN

Plus en détail

2. Comprendre les définitions de classes

2. Comprendre les définitions de classes Conception objet en Java avec BlueJ une approche interactive 2. Comprendre les définitions de classes Analyser le contenu des classes David J. Barnes, Michael Kölling version française: Patrice Moreaux

Plus en détail

Programmes des classes préparatoires aux Grandes Ecoles

Programmes des classes préparatoires aux Grandes Ecoles Programmes des classes préparatoires aux Grandes Ecoles Filière : scientifique Voies : Mathématiques, physique et sciences de l'ingénieur (MPSI) Physique, chimie et sciences de l ingénieur (PCSI) Physique,

Plus en détail

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

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

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

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Cours de Programmation Impérative: Zones de mémoires et pointeurs Cours de Programmation Impérative: Zones de mémoires et pointeurs Julien David A101 - david@lipn.univ-paris13.fr Julien David (A101 - david@lipn.univ-paris13.fr) 1 / 1 Z`o n`e s `d`e m`é m`o i r`e Julien

Plus en détail

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation Complexité Objectifs des calculs de complexité : - pouvoir prévoir le temps d'exécution d'un algorithme - pouvoir comparer deux algorithmes réalisant le même traitement Exemples : - si on lance le calcul

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

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

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

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,

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

Chaînes de Markov au lycée

Chaînes de Markov au lycée Journées APMEP Metz Atelier P1-32 du dimanche 28 octobre 2012 Louis-Marie BONNEVAL Chaînes de Markov au lycée Andreï Markov (1856-1922) , série S Problème 1 Bonus et malus en assurance automobile Un contrat

Plus en détail

Conception des systèmes répartis

Conception des systèmes répartis Conception des systèmes répartis Principes et concepts Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Octobre 2012 Gérard Padiou Conception des systèmes répartis 1 / 37 plan

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

Corrigé des exercices sur les références

Corrigé des exercices sur les références Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

Programme Compte bancaire (code)

Programme Compte bancaire (code) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; Programme Compte bancaire (code) namespace compte_bancaire /// Classe Program public

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

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

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

Initiation à l algorithmique

Initiation à l algorithmique Informatique S1 Initiation à l algorithmique procédures et fonctions 2. Appel d une fonction Jacques TISSEAU Ecole Nationale d Ingénieurs de Brest Technopôle Brest-Iroise CS 73862-29238 Brest cedex 3 -

Plus en détail

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives introduction Chapitre 5 Images récursives http ://univ-tln.fr/~papini/sources/flocon.htm Récursivité http://www.poulain.org/fractales/index.html Image qui se contient elle-même 1 Exemples mathématiques

Plus en détail

Traduction des Langages : Le Compilateur Micro Java

Traduction des Langages : Le Compilateur Micro Java BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant

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

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

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

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

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; }; #include #include struct cell int clef; struct cell suiv; ; / longueur. pc->suiv est l abréviation de (pc).suiv. pour cette fonction comme pour les suivantes, on donne, lorsqu il existe

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

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Recherche opérationnelle Les démonstrations et les exemples seront traités en cours Souad EL Bernoussi Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Table des matières 1 Programmation

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

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

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

Projet de programmation (IK3) : TP n 1 Correction

Projet de programmation (IK3) : TP n 1 Correction Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

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

Corrigés des premiers exercices sur les classes

Corrigés des premiers exercices sur les classes Corrigés des premiers exercices sur les classes Exercice 2.1.1 utilisation d une classe Voici le texte d une classe représentant de façon sommaire un compte bancaire et les opérations bancaires courantes.

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

Algorithmes récursifs

Algorithmes récursifs Licence 1 MASS - Algorithmique et Calcul Formel S. Verel, M.-E. Voge www.i3s.unice.fr/ verel 23 mars 2007 Objectifs de la séance 3 écrire des algorithmes récursifs avec un seul test rechercher un élément

Plus en détail

Un ordonnanceur stupide

Un ordonnanceur stupide Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire

Plus en détail

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Chapitre V : La gestion de la mémoire Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Introduction Plusieurs dizaines de processus doivent se partager

Plus en détail

Ordonnancement temps réel

Ordonnancement temps réel Ordonnancement temps réel Laurent.Pautet@enst.fr Version 1.5 Problématique de l ordonnancement temps réel En fonctionnement normal, respecter les contraintes temporelles spécifiées par toutes les tâches

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

Initiation. àl algorithmique et à la programmation. en C

Initiation. àl algorithmique et à la programmation. en C Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,

Plus en détail