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

Machine de Turing. Informatique II Algorithmique 1

Machine de Turing. Informatique II Algorithmique 1 Machine de Turing Nous avons vu qu un programme peut être considéré comme la décomposition de la tâche à réaliser en une séquence d instructions élémentaires (manipulant des données élémentaires) compréhensibles

Plus en détail

Introduction Tableaux / Vecteurs Listes chaînées Un principe général Quelques algorithmes de tri À faire pour lundi prochain. Tableaux VS Listes

Introduction Tableaux / Vecteurs Listes chaînées Un principe général Quelques algorithmes de tri À faire pour lundi prochain. Tableaux VS Listes Tableaux VS Listes Tableaux VS Listes Petit chapitre. Plan Introduction Tableaux / Vecteurs Définition abstraite Qu a-t-on fait avec des vecteurs? Que peut-on faire avec des vecteurs? Listes chaînées Définition

Plus en détail

3 Structures de données Tableaux Listes. Problème du tri. Tri rapide

3 Structures de données Tableaux Listes. Problème du tri. Tri rapide Cours 2 Algorithmique IN102-02 Michel Mauny ENSTA Prénom.Nom@ensta.fr 1 Tris Retour sur fusion et quicksort Complexité minimale Efficacité 2 Récursivité 3 Structures de données Tableaux Listes Michel Mauny

Plus en détail

Chapitre 3 Structures de données linéaires : listes, piles et files

Chapitre 3 Structures de données linéaires : listes, piles et files Chapitre 3 Structures de données linéaires : listes, piles et files 1. Introduction Le but de ce chapitre est de décrire des représentations des structures de données de base telles les listes en général

Plus en détail

Série d exercices N 9 Arbres

Série d exercices N 9 Arbres Série d exercices N 9 Arbres Exercice 1 a) Ecrire une fonction ARBIN creerarbreentiers() qui permet de créer et de renvoyer l arbre d entiers suivant : b) Ecrire une fonction int feuilles(arbin a) qui

Plus en détail

Algorithmique et Analyse d Algorithmes

Algorithmique et Analyse d Algorithmes Algorithmique et Analyse d Algorithmes L3 Info Cours 5 : Structures de données linéaires Benjamin Wack 2015-2016 1 / 37 La dernière fois Logique de Hoare Dichotomie Aujourd hui Type Abstrait de Données

Plus en détail

Trier des tableaux en C++ : efficacité du std::sort (STL) et tris paramétrés

Trier des tableaux en C++ : efficacité du std::sort (STL) et tris paramétrés Trier des tableaux en C++ : efficacité du std::sort (STL) et tris paramétrés Hélène Toussaint, juillet 2014 Sommaire 1. Efficacité du std::sort... 1 1.1. Conditions expérimentales... 1 1.2. Tableaux de

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

Objectifs. Pointeurs et tableaux. Arithmétique des pointeurs et sizeof. sizeof. Exemple : liste chaînées. Cast. Débordement de tampons

Objectifs. Pointeurs et tableaux. Arithmétique des pointeurs et sizeof. sizeof. Exemple : liste chaînées. Cast. Débordement de tampons du cours d aujourd hui Programmation «orientée système» LANGAGE C POINTEURS (5/5) des pointeurs Complément (et mise en garde) sur Exemple pratique : listes Forçage de type (casting) Laboratoire d Intelligence

Plus en détail

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3 I Arbres binaires 2014-2015 Table des matières 1 Rappels 2 1.1 Définition................................................ 2 1.2 Dénombrements............................................ 2 1.3 Parcours.................................................

Plus en détail

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014 Langage C/C++ TD 3-4 : Création dynamique d objets Hubert Godfroy 7 novembre 014 1 Tableaux Question 1 : Écrire une fonction prenant un paramètre n et créant un tableau de taille n (contenant des entiers).

Plus en détail

1. Les fondements de l informatique 13

1. Les fondements de l informatique 13 Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Résumé du document «Programmes des classes préparatoires aux Grandes Écoles ; Discipline : Informatique ; Première et seconde années - 2013»

Résumé du document «Programmes des classes préparatoires aux Grandes Écoles ; Discipline : Informatique ; Première et seconde années - 2013» Résumé du document «Programmes des classes préparatoires aux Grandes Écoles ; Discipline : Informatique ; Première et seconde années - 2013» I Objectifs Niveau fondamental : «on se fixe pour objectif la

Plus en détail

Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Types avancés (1)

Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Types avancés (1) Objectifs du cours d aujourd hui Informatique I : Cours d introduction à l informatique et à la programmation Types avancés (1) Jamila Sam Haroud Présenter des structures de données plus avancées (que

Plus en détail

Tableaux (introduction) et types de base

Tableaux (introduction) et types de base Tableaux (introduction) et types de base A. Motivation..................................................... 4 B. Les tableaux.................................................... 5 C. Construction des tableaux.......................................

Plus en détail

Cours 01 - Les structures de données

Cours 01 - Les structures de données Cours 01 - Les structures de données MPSI - Prytanée National Militaire Pascal Delahaye 1 er mars 2015 Les programmes informatiques, traitent des données, créent des données et renvoient des données. Pour

Plus en détail

Enveloppes convexes dans le plan

Enveloppes convexes dans le plan ÉCOLE POLYTECHNIQUE ÉCOLES NORMALES SUPÉRIEURES ÉCOLE SUPÉRIEURE DE PHYSIQUE ET DE CHIMIE INDUSTRIELLES CONCOURS D ADMISSION FILIÈRE MP HORS SPÉCIALITÉ INFO FILIÈRE PC COMPOSITION D INFORMATIQUE B (XECLR)

Plus en détail

Structures de données non linéaires

Structures de données non linéaires Structures de données non linéaires I. Graphes Définition Un graphe (simple) orienté G est un couple (S, A), où : S est un ensemble dont les éléments sont appelés les sommets. A est un ensemble de couples

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

IN 101 - Cours 05. 7 octobre 2011. Un problème concret Recherche de collisions

IN 101 - Cours 05. 7 octobre 2011. Un problème concret Recherche de collisions Un problème concret Recherche de collisions IN 101 - Cours 05 7 octobre 2011 Le paradoxe des anniversaires dit que 365 élèves sont suffisants (en moyenne) pour avoir une collision d anniversaire, deux

Plus en détail

TD 1 de Langage C module Outils pour l'informatique Industrielle - Corrigés des Tds : http://www-lagis.univ-lille1.fr/~macaire/td.

TD 1 de Langage C module Outils pour l'informatique Industrielle - Corrigés des Tds : http://www-lagis.univ-lille1.fr/~macaire/td. Exercice 1 TD 1 de Langage C module Outils pour l'informatique Industrielle - Corrigés des Tds : http://www-lagis.univ-lille1.fr/~macaire/td.htm Exercices de base de Programmation Arbre Programmatique

Plus en détail

Les tableaux. Chapitre 3

Les tableaux. Chapitre 3 Chapitre 3 Les tableaux 3.1 Généralités Les tableaux en PERL sont identifiés par le symbole @ à l image du $ pour les variables. Comme ces dernières, les tableaux ne sont pas typés et un même tableau peut

Plus en détail

EXAMEN FINAL. 2 Février 2006-2 heures Aucun document autorisé

EXAMEN FINAL. 2 Février 2006-2 heures Aucun document autorisé MIE - E ANNÉE ALGORITHMIQUE GÉNÉRALE Vincent Mousseau EXAMEN FINAL Février 006 - heures Aucun document autorisé Exercice : On s intéresse à la gestion informatique des réservations sur l année d une salle

Plus en détail

Systèmes de Fichiers

Systèmes de Fichiers Systèmes de Fichiers Hachage et Arbres B Serge Abiteboul INRIA February 28, 2008 Serge Abiteboul (INRIA) Systèmes de Fichiers February 28, 2008 1 / 26 Systèmes de fichiers et SGBD Introduction Hiérarchie

Plus en détail

INF601 : Algorithme et Structure de données

INF601 : Algorithme et Structure de données Cours 2 : TDA Liste B. Jacob IC2/LIUM 15 février 2010 Plan 1 Définition du TDA Liste 2 Réalisation du TDA Liste 3 Type de stockage des éléments 4 Recherche d un élément Dans une liste non triée Dans une

Plus en détail

Algorithmes de tri. 1 Introduction

Algorithmes de tri. 1 Introduction Algorithmes de tri L objectif de ce document est de présenter plusieurs algorithmes classiques de tri. On commence par présenter chaque méthode de manière intuitive, puis on détaille un exemple d exécution

Plus en détail

Compilation séparée. Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1

Compilation séparée. Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Compilation séparée Compilation séparée ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Compilation séparée Modularité GCC : 4 millions de lignes de code Noyau

Plus en détail

Listes de personnes et calculatrice polonaise inverse en Java

Listes de personnes et calculatrice polonaise inverse en Java Listes de personnes et calculatrice polonaise inverse en Java Université Paris Sud Motivation Le but de cet exercice est de manipuler les listes chaînées et les piles et de voir leur application en analyse

Plus en détail

Programmation avancée

Programmation avancée Programmation avancée Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) 1 1 IFSIC Université de Rennes-1 M2Crypto, octobre 2011 Plan du cours 1 2 3 4 5 6 7 8 9 10 Algorithmes Définition

Plus en détail

Introduction à l Informatique (INF 311) Amphi 9 : stockage efficace de l information. Amphi 9: stockage efficace de l information

Introduction à l Informatique (INF 311) Amphi 9 : stockage efficace de l information. Amphi 9: stockage efficace de l information F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X2013 3/46 F. Morain École polytechnique Introduction à l Informatique (INF 311) Promo X2013 4/46 Introduction à l Informatique

Plus en détail

ALGORITHMIQUE II. Récurrence et Récursivité. SMI AlgoII

ALGORITHMIQUE II. Récurrence et Récursivité. SMI AlgoII ALGORITHMIQUE II Récurrence et Récursivité Récurrence Suite récurrente: la déition d une suite est la donnée d un terme général déi en fonction du (ou des) terme(s) précédant(s) D un terme initial qui

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

Listes et arbres binaires

Listes et arbres binaires Des structures de données dynamiques Listes, Listes ordonnées Arbres binaires, arbre binaires de recherche Listes chaînées Utile si le nombre d éléments n est pas connu à l avance et évolue beaucoup. Permet

Plus en détail

Ecole Nationale Polytechnique Département Génie Industriel Année Universitaire 2011/2012. Les Files

Ecole Nationale Polytechnique Département Génie Industriel Année Universitaire 2011/2012. Les Files . Ecole Nationale Polytechnique Département Génie Industriel Année Universitaire 2011/2012 Algorithmique et Programmation Les structures de données Les Files Introduction Une File ressemble fortement à

Plus en détail

Algorithmique et Analyse d Algorithmes

Algorithmique et Analyse d Algorithmes Algorithmique et Analyse d Algorithmes L3 Info Cours 11 : Arbre couvrant Prétraitement Benjamin Wack 2015-2016 1 / 32 La dernière fois Rappels sur les graphes Problèmes classiques Algorithmes d optimisation

Plus en détail

Héritage en java : Calculatrice SDC

Héritage en java : Calculatrice SDC Programmation orientée objet L3 MIAGE Héritage en java : Calculatrice SDC Travail à rendre : le code complet du projet SDC sous forme d une archive tar.gz. L archive comportera trois répertoires : un répertoire

Plus en détail

Présentation du programme d informatique

Présentation du programme d informatique Présentation du programme d informatique UPS 31 mai 2015 Table des matières 1 Introduction 2 1.1 Présentation.................................. 2 1.2 Représentation des nombres.........................

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

Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A

Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A Djamel Aouane, Frederic Devernay, Matthieu Moy Mars - avril 2015 1 Manipulations de fichiers Pour organiser des

Plus en détail

C, seconde séance. le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de:

C, seconde séance. le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de: C, seconde séance le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de: false, c est 0 ( \0 aussi) test d égalité: == pour printf: %d entier, %f flottant, %c caractère,

Plus en détail

Programmation Par Objets et Langage Java

Programmation Par Objets et Langage Java Programmation Par Objets et Langage Java Partie I. Fondement de la POO (Modularité/Abstraction) Najib Tounsi Ecole Mohammadia d'ingénieurs, Rabat Année 2011/2012 1ère année Génie Informatique http://www.emi.ac.ma/ntounsi/cours/java/poojavapart-1.pdf

Plus en détail

ECOLE POLYTECHNIQUE DE MONTREAL DEPARTEMENT DE GENIE ELECTRIQUE ET DE GENIE INFORMATIQUE Section informatique. Cours 3.307P: INFORMATIQUE EXAMEN FINAL

ECOLE POLYTECHNIQUE DE MONTREAL DEPARTEMENT DE GENIE ELECTRIQUE ET DE GENIE INFORMATIQUE Section informatique. Cours 3.307P: INFORMATIQUE EXAMEN FINAL ECOLE POLYTECHNIQUE DE MONTREAL DEPARTEMENT DE GENIE ELECTRIQUE ET DE GENIE INFORMATIQUE Section informatique Cours 3.307P: INFORMATIQUE EXAMEN FINAL DATE : Dimanche 8 décembre 1996 HEURE: DE 13h30 A 16h00

Plus en détail

CONTRÔLE HORS-CLASSEMENT ÉCOLE POLYTECHNIQUE INFORMATIQUE COURS INF 431

CONTRÔLE HORS-CLASSEMENT ÉCOLE POLYTECHNIQUE INFORMATIQUE COURS INF 431 CONTRÔLE HORS-CLASSEMENT ÉCOLE POLYTECHNIQUE INFORMATIQUE COURS INF 431 GUILLAUME HANROT ET JEAN-JACQUES LÉVY On se propose de résoudre le problème de l affectation de k tâches à n employés (k > 0, n >

Plus en détail

Exercice 1 : Questions diverses (5 points)

Exercice 1 : Questions diverses (5 points) Université Claude Bernard Lyon 1 Licence Sciences, Technologies, Santé L2 Année 2010-2011, 2ème semestre LIF5 Algorithmique & Programmation procédurale Contrôle final du 20 juin 2011 Durée : 1h30 Note

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

Correction langage Java

Correction langage Java MINISTÈRE DE L ÉCOLOGIE, DU DÉVELOPPEMENT DURABLE, DES TRANSPORTS ET DU LOGEMENT EXAMEN PROFESSIONNEL DE VÉRIFICATION D APTIDUDE AUX FONCTIONS DE PROGRAMMEUR Session 2010 Correction langage Java Langage:

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

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 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

C12. Les structures arborescentes. Août 2006

C12. Les structures arborescentes. Août 2006 Les structures arborescentes Août 2006 Objectifs du C12 Connaître le principe de la structure d arbre binaire Connaître les détails d implémentation de la structure d arbre binaire de recherche Les structures

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 IN102 TD 3

Algorithmique IN102 TD 3 Algorithmique IN10 TD 16 décembre 005 Exercice 1 Clairement, il existe des arbres de hauteur h à h + 1 éléments : il sut pour cela que leurs n uds internes aient au plus un ls non vide. On a alors un arbre

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

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

Algorithmique avancée en Python

Algorithmique avancée en Python Algorithmique avancée en Python... et non pas Python avancé Denis Robilliard sept. 2014 1 Introduction Objectifs du cours connaître un panel d algorithmes standards : énumération, tris, backtracking, listes,

Plus en détail

TP1 - Introduction au langage C

TP1 - Introduction au langage C ENS Lyon L-Info PROJ1 2014-2015 TP1 - Introduction au langage C Sujet à terminer pour le dimanche 20 à 2h59, sous forme d une archive.zip contenant votre code source, par email à aurelien.cavelan@ens-lyon.fr.

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Structures de données linéaires

Structures de données linéaires Structures de données linéaires I. Liste, Pile et file. Une liste linéaire est la forme la plus simple et la plus courante d'organisation des données. On l'utilise pour stocker des données qui doivent

Plus en détail

P R O G R A M M E E T I N S T R U C T I O N S O F F I C I E L L E S

P R O G R A M M E E T I N S T R U C T I O N S O F F I C I E L L E S P R O G R A M M E E T I N S T R U C T I O N S O F F I C I E L L E S POUR L ENSEIGNEMENT DE L INFORMATIQUE MPSI première année I. Objectifs de la formation II-1 Développement de compétences et d aptitudes

Plus en détail

} 7 Variables (composantes)

} 7 Variables (composantes) Chapitre 4 Tableaux Jusqu ici, nous avons employé les variables pour stocker les valeurs individuelles de types primitifs : une variable de type int pour stocker un entier, une variable de type boolean

Plus en détail

Arbres de segments. Plan. Arbres de segments. Arbres de sélection Listes à saut Compléments de Java Dictionnaires Automates. Solution.

Arbres de segments. Plan. Arbres de segments. Arbres de sélection Listes à saut Compléments de Java Dictionnaires Automates. Solution. Plan Arbres de segments Arbres de segments Arbres de sélection Listes à saut Compléments de Java Dictionnaires Automates Problème : Chercher, dans un ensemble d intervalles de la droite réelle, les intervalles

Plus en détail

Arbres binaires et codage de Huffman

Arbres binaires et codage de Huffman MP Option Informatique Premier TP Caml Jeudi 8 octobre 2009 Arbres baires et codage de Huffman 1 Arbres baires Soit E un ensemble non vide. On défit la notion d arbre baire étiqueté (aux feuilles) par

Plus en détail

Examen de Langage C Vendredi 2 Décembre 2011

Examen de Langage C Vendredi 2 Décembre 2011 Année 2011-2012 Examen de Langage C Vendredi 2 Décembre 2011 Promotion Guichet 1 ière année É. Salvat Modalités : Durée : 2 heures Seul document autorisé : carte de référence du C, pas de machine à calculer,

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

PC* Structure de pile

PC* Structure de pile Structure de pile I. Définition........................................... 2 I.1 Introduction..................................... 2 I.2 Opérations caractérisant une structure de pile...................

Plus en détail

Langages et concepts de programmation

Langages et concepts de programmation Langages et concepts de programmation Séances 3 et 4 Tri d un fichier de voitures Une correction possible 1 Le sujet On dispose d un fichier contenant des informations sur des voitures d occasion : le

Plus en détail

Algorithmie ISI301 TP 1 : Python et premiers algorithmes

Algorithmie ISI301 TP 1 : Python et premiers algorithmes Algorithmie ISI301 TP 1 : Python et premiers algorithmes 1 Python : apprentissage Pour avoir une vision plus large des différentes possibilités du langage Python, nous ne pouvons que vous conseiller d

Plus en détail

NFP136- Cours 2 ALGORITHMES ET COMPLEXITÉ. Définition d'un algorithme Un exemple Présentation des algorithmes Évaluation d'un algorithme Complexité

NFP136- Cours 2 ALGORITHMES ET COMPLEXITÉ. Définition d'un algorithme Un exemple Présentation des algorithmes Évaluation d'un algorithme Complexité NFP136- Cours 2 ALGORITHMES ET COMPLEXITÉ PLAN Définition d'un algorithme Un exemple Présentation des algorithmes Évaluation d'un algorithme Complexité 1 DÉFINITION D'UN ALGORITHME Procédure de calcul

Plus en détail

C ellules. Gestion et récupération automatique de mémoire. Principes des lang. de progr. INE 11. Allocation dynamique de mémoire.

C ellules. Gestion et récupération automatique de mémoire. Principes des lang. de progr. INE 11. Allocation dynamique de mémoire. Principes des lang. de progr. INE 11 Michel Mauny ENSTA ParisTech Prénom.Nom@ensta.fr Michel Mauny (ENSTA ParisTech) INE 11 Prénom.Nom@ensta.fr 1 / 37 Gestion et récupération automatique de mémoire lanage

Plus en détail

INF121: Algorithmique et Programmation Fonctionnelle

INF121: Algorithmique et Programmation Fonctionnelle INF121: Algorithmique et Programmation Fonctionnelle Cours 1: Identificateurs, types de base et fonctions Année 2013-2014 Identificateurs La notion d identificateur Un concept fondamental dans les langages

Plus en détail

Programmation I : Cours d introduction à la programmation Pointeurs

Programmation I : Cours d introduction à la programmation Pointeurs Programmation I : Cours d introduction à la programmation Pointeurs Laboratoire d Intelligence Artificielle Faculté I&C Programmation I Pointeurs 1 / 23 Rappel du calendrier Programmation I Pointeurs 2

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

Algorithmique avancée en Python TDs

Algorithmique avancée en Python TDs Algorithmique avancée en Python TDs Denis Robilliard sept. 2014 1 TD 1 Révisions 1. Ecrire un programme qui saisit un entier, et détermine puis affiche si l entier est pair où impair. 2. Ecrire un programme

Plus en détail

Cours 1: Introduction à l algorithmique

Cours 1: Introduction à l algorithmique 1 Cours 1: Introduction à l algorithmique Olivier Bournez bournez@lix.polytechnique.fr LIX, Ecole Polytechnique 2011-12 Algorithmique 2 Aujourd hui Calcul de x n Maximum Complexité d un problème Problème

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 =

# 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

L2 - Algorithmique et structures de données (Année 2010/2011) Examen (2 heures)

L2 - Algorithmique et structures de données (Année 2010/2011) Examen (2 heures) L2 - lgorithmique et structures de données (nnée 2010/2011) Delacourt, Phan Luong, Poupet xamen (2 heures) Les documents (cours, TD, TP) sont autorisés. Les quatre exercices sont indépendants. À la fin

Plus en détail

Tri en Python. # on cherche k tel que a k = min(a j ) ji

Tri en Python. # on cherche k tel que a k = min(a j ) ji Tri en Python On considère ici des tableaux ou listes d entiers ou de ottants. En Python, on peut trier une liste à l aide de la méthode sort : si a est une liste d entiers ou de ottants, a.sort() modi

Plus en détail

Organisation des données et structures de stockage

Organisation des données et structures de stockage ING2 - ING3 Nvx 2009-2010 Organisation des données et structures de stockage I. Stockage de l information en C Ce chapitre rappelle brièvement et complète certaines notions de base vues en première année

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

Soutien Informatique

Soutien Informatique 1/51 Soutien Informatique Nicolas Castagné et François Portet PHELMA 2/51 Sommaire Allocation Mémoire Les types abstraits de données 3/51 Allocation dynamique de mémoire (stdlib.h,string.h) Réserver un

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

Fiche de révisions - Algorithmique

Fiche de révisions - Algorithmique Fiche de révisions - Algorithmique Rédigé par : Jimmy Paquereau 1. Généralités Algorithme : un algorithme est la description d une procédure à suivre afin de résoudre un problème donné. Il n est pas nécessairement

Plus en détail

Les références et la mémoire

Les références et la mémoire Chapitre 3 Les références et la mémoire 3.1 Introduction En Java, pour déclarer une variable, il faut donner son nom, précédé du type qu on souhaite lui attribuer. Ces types peuvent être des types primitifs

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

Les arbres Florent Hivert

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

Plus en détail

Langage C et aléa, séance 4

Langage C et aléa, séance 4 Langage C et aléa, séance 4 École des Mines de Nancy, séminaire d option Ingénierie Mathématique Frédéric Sur http://www.loria.fr/ sur/enseignement/courscalea/ 1 La bibliothèque GMP Nous allons utiliser

Plus en détail

Initiation aux algorithmes des arbres binaires

Initiation aux algorithmes des arbres binaires Initiation aux algorithmes des arbres binaires Plan I. Les arbres biniaires I. Définition II. Représentation graphique d un arbre III. Terminologie IV. Représentation en mémoire des arbres binaires V.

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 5. Tableaux

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

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

Représentation des nombres entiers et réels. en binaire en mémoire

Représentation des nombres entiers et réels. en binaire en mémoire L3 Mag1 Phys. fond., cours C 15-16 Rep. des nbs. en binaire 25-09-05 23 :06 :02 page 1 1 Nombres entiers 1.1 Représentation binaire Représentation des nombres entiers et réels Tout entier positif n peut

Plus en détail

Plan. Cours 4 : Méthodes d accès aux données. Architecture système. Objectifs des SGBD (rappel)

Plan. Cours 4 : Méthodes d accès aux données. Architecture système. Objectifs des SGBD (rappel) UPMC - UFR 99 Licence d informatique 205/206 Module 3I009 Cours 4 : Méthodes d accès aux données Plan Fonctions et structure des SGBD Structures physiques Stockage des données Organisation de fichiers

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

TP 8 : Arbres binaires de recherche

TP 8 : Arbres binaires de recherche TP 8 : Arbres binaires de recherche Semaine du 17 Mars 2008 Exercice 1 Dénir une structure struct noeud_s permettant de coder un n ud d'un arbre binaire contenant une valeur entière. Ajouter des typedef

Plus en détail

Algorithmique Partie 1

Algorithmique Partie 1 Algorithmique Partie 1 IUT Informatique de Lens, 1ère Année Université d Artois Frédéric Koriche koriche@cril.fr 2011 - Semestre 1 Modalités Sommaire 1 Modalités 2 Programmation 3 Données 4 Opérateurs

Plus en détail

L enseignement de l algorithmique au Lycée

L enseignement de l algorithmique au Lycée L enseignement de l algorithmique au Lycée Sisteron 12 novembre 2009 Fernand Didier didier@irem.univ-mrs.fr Approche naïve C est une méthode, une façon systématique de procéder, pour faire quelque chose

Plus en détail

Algorithmique et Structures de Données

Algorithmique et Structures de Données Plan du cours Algorithmique et Structures de Données Akkouche Samir : E-mail : samir.akkouche@liris.cnrs.fr Knibbe Carole: E-mail : carole.knibbe@univ-lyon1.fr 1. Rappels 2. Tableaux dynamiques a. Introduction

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

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5 Introduction à l algorithmique et à la programmation IUT 1ère année 2013-2014 Cyril Nicaud Cyril.Nicaud@univ-mlv.fr Cours 1 / 5 Déroulement du cours Organisation : 5 séances de 2h de cours 10 séances de

Plus en détail