Notes de cours. Introduction

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

Download "Notes de cours. Introduction"

Transcription

1 Notes de cours GEI 44 : STRUCTURES DE DONNÉES ET ALGORITHMES Chapitre 3 Algorithmes de tri 1 Introduction Tri = application fondamentale en informatique Pour effectuer un traitement donné sur des données, il existe généralement des algorithmes plus performants lorsque ces données sont triées Nous nous intéressons au tri d un tableau d éléments Nous présenterons différents algorithmes de tri Nous considérons uniquement les algorithmes s exécutant entièrement en mémoire centrale. Cela implique que le nombre d éléments à trier est relativement faible ( < quelques millions )

2 Importance du tri Traitement d un tableau trié est beaucoup plus facile que traitement d un tableau non trié Les résultats d un programme qui ont une taille importante sont généralement triés pour faciliter des traitements ultérieurs sur ces résultats Exemples : - Recherche dans un annuaire téléphonique - chercher numéro à partir d un nom : facile car noms triés - l inverse est pratiquement impossible car numéros non triés - Recherche dans un dictionnaire - chercher signification d un mot : facile car mots triés - l inverse est pratiquement impossible car significations non triées - Liste de fichiers dans un répertoire - Organisation des livres dans une bibliothèque 3 Contraintes imposées par algorithmes présentés Les éléments d un tableau à trier doivent être des objets qui implantent l interface Comparable ([1], page 91) qui contient deux opérations Les objets à trier doivent donc implanter les deux méthodes : lessthan et compares Soient a et b deux objets d une classe K qui implante l interface Comparable Supposons qu une relation d ordre a été définie et implantée dans K a.lessthan( b ) retourne : true si a est inférieur à b false si a est supérieur ou égal à b a.compares( b ) retourne : une valeur > 0 si a est supérieur à b une valeur = 0 si a est égal à b une valeur < 0 si a est inférieur à b 4

3 Tri par insertion : algorithme ([1], Sect , Fig. 8.) public static void insertionsort( Comparable [ ] a ) { for( int p = 1; p < a.length; p++ ) { Comparable tmp = a[ p ]; int j = p; for( ; j > 0 && tmp.lessthan( a[ j - 1 ] ); j-- ) a[ j ] = a[ j - 1 ]; a[ j ] = tmp; Deux boucles imbriquées : - Boucle externe : au début de l itération p, les éléments dans les positions 0 à p-1 ont déjà été triés. Le but est alors : - d intégrer l élément en position p au tableau trié de taille p - d obtenir un tableau trié de taille p+1 Cette tâche est effectuée par la boucle interne - Boucle interne : Compare l élément en position p aux éléments en positions p-1, p-,, jusqu à ce que cet élément soit inséré 5 Tri par insertion : temps d exécution Soit N la taille du tableau à trier Cas général : O(N ) Si tableau initialement en ordre inverse : ( p + 1) = ( N 1) = θ(n ) p 1 car à l itération p de la boucle externe, le test de la boucle interne est effectué p+1 fois Si tableau déjà trié : O(N) car à chaque itération de la boucle externe, le test de la boucle interne est effectué une seule fois Temps d exécution moyen : θ(n ) N 1 = 6

4 Tri par insertion : inversion Inversion : paire d éléments ( A i, A j ) d un tableau telle que : i < j et A i > A j Exemple : Le tableau { 8, 5, 9,, 6, 3 contient les dix inversions suivantes : ( 8,5 ), ( 8, ), ( 8,6 ), ( 8,3 ), ( 5, ), ( 5,3 ), ( 9, ), ( 9,6 ), ( 9,3 ), ( 6,3 ) Nombre d inversions : nombre de fois où boucle interne est effectuée Si un tableau contient O(N) inversions : alors temps d exécution de l algorithme de tri est O(N) N(N 1) Nombre moyen d inversions dans un tableau de taille N : ([1], page 6) 4 Ce qui implique que le temps moyen du tri par insertion est θ(n ) 7 Tri par permutation d éléments adjacents Tout algorithme qui effectue un tri en permutant des éléments adjacents est en moyenne Ω(N ) ([1], page 7) L algorithme de tri par insertion en est un exemple : - la permutation est effectuée implicitement - comme il est Ο(N ) et Ω(N ), alors il est θ(n ) 8

5 - Proposé par Donald Shell en 1959 ShellSort - Plus rapide que tri par insertion - Parmi les algorithmes plus rapides que tri par insertion : - ShellSort est le plus simple : un petit peu plus long (en code) que tri par insertion - ShellSort n est pas le plus rapide - Idée est de trier : - d abord éléments lointains - ensuite éléments moins lointains - enfin éléments adjacents (tri par insertion) - Avantage : tri d éléments lointains donne la possibilité de supprimer plusieurs inversions en une seule permutation Exemple : { 8, 5, 9,, 6, 3 Permutation entre et 8 : - supprime les inversions (8,), (9,), (5,) - ajoute inversion (9,8) 9 ShellSort : principe - Utilise une séquence h 1, h,, h t appelée séquence d incréments - Toute séquence est valide à condition que h 1 = 1 - h k -tri consiste à effectuer un tri : - en comparant chaque paire d éléments distants de h k, et - en permutant les éléments si nécessaire Donc h 1 -tri est équivalent au tri par insertion - Effectue la séquence de tri : h t -tri, h t-1 -tri, h 1 -tri - Propriété : Un tableau h k -trié qui est ensuite h k-1 -trié reste toujours h k -trié - Si h 1 1, alors il existe au moins un tableau sur lequel le ShellSort n est pas applicable - Performance de ShellSort dépend beaucoup du choix de la séquence d insertion h 1, h,, h t 10

6 ShellSort : exemple ([1], Fig. 8.3) ([1], Fig. 8.3) 11 ShellSort : algorithme ([1], Fig. 8.4) public static void shellsort( Comparable [ ] a ) { for( int gap = a.length / ; gap > 0; gap = gap ==? 1 : (int) ( gap /. ) ) for( int i = gap; i < a.length; i++ ) { Comparable tmp = a[ i ]; int j = i; Algorithme ressemble au tri par insertion Lignes 9-19 : Application de h k -tri, avec h k = gap Analogue au tri par insertion lorsque gap = 1 Lignes 7-8 : Boucle pour appliquer la séquence h t -tri, h t-1 -tri, h 1 -tri hi 1 si h i-1 = N avec h t = h i = h 1 = 1 hi 1 sinon. for( ; j >= gap && tmp.lessthan( a[ j - gap ] ); j -= gap ) a[ j ] = a[ j - gap ]; a[ j ] = tmp; 1

7 ShellSort : performance N hi h Séquence d incréments : h t =, h i-1 =... h 1 = = 1 Pire cas : O(N ) se produit si : - N= u - tous les grands éléments en positions paires - tous les petits éléments en positions impaires Chaque h k -tri consiste à trier h k ensembles de Donc complexité de h k -tri est O( h k ( ) ) = O( ) D où complexité de ShellSort est O( ) = O(N ) En moyenne : O(N 3/ ) N hk N h 1 k N hk éléments chacun N h k 13 ShellSort : performance (suite) Première amélioration : h t toujours impair h i-1 = hi hi + 1 si si hi hi impair pair Pire cas : O(N 3/ ) Amélioration due au fait que : i < t : h i et h i+1 n ont aucun facteur en commun En moyenne : O(N 5/4 ) - non démontré - basé sur des simulations 14

8 ShellSort : performance (suite) Seconde amélioration : h i-1 = hi. 1 si h i si h i = Temps moyen < O(N 5/4 ) et peut-être < O(N 7/6 ) - aucune base théorique - améliore performance de 5 à 35 % pour N = 10 5 à ShellSort : temps d exécution ([1], Fig. 8.5) ([1], Fig. 8.5) Ce tableau confirme que : - ShellSort est plus performant que InsertionSort - Performance de ShellSort dépend de la séquence d incréments 16

9 Tri par fusion (MergeSort( MergeSort) Idée : - diviser pour mieux maîtriser - ensuite faire une fusion Trois étapes : 1) si nombre d items à trier est 0 ou 1, alors terminé ) trier séparément et récursivement les première et deuxième moitiés 3) fusionner les deux moitiés 17 Tri par fusion : temps d exécution Tri d un tableau de taille N se fait en un temps égal à Tt 0 Tri d un tableau de taille N/ se fait en un temps égal à Tt 1 Tri d un tableau de taille N/( k ) se fait en un temps égal à Tt k Fusionner deux tableaux triés de taille N/ se fait en un temps égal à Tf 1 Fusionner deux tableaux triés de taille N/( k ) se fait en un temps égal à Tf k On a Tt k = Tt k+1 + Tf k+1 pour k = 0, 1, D où Tt 0 = k Tt k + Tf 1 + Tf + + k Tf k avec : k N car on divise N par jusqu à ce qu on arrive à 1 Tt k est le temps pour trier un tableau de un élément (Donc Tt k 0) 18

10 Tri par fusion : la fusion Estimation de Tf i : temps pour fusionner deux tableaux triés de taille N/( i ) Exemple : ( [1], Sect ) soient les tableaux A et B triés suivants A ref B ref C ref Étape 1 : A ref Étape : B ref C ref 1 A ref Étape 3 : B ref C ref 1 13 A ref B ref C ref 19 Tri par fusion : la fusion (suite) Étape 4 : A ref Étape 5 : B ref C ref A ref Étape 6 : B ref C ref A ref B ref C ref Ensuite le reste du tableau est copié et on obtient : C ref 0

11 Tri par fusion : temps d exécution Fusion de deux tableaux triés est donc linéaire car : - comparer deux valeurs de A et B - copier dans C une valeur de A ou B effectués : - avancer un pointeur - en temps borné par une constante - u fois, avec u = taille de chacun des deux tableaux D où : Tf i = O( N/( i ) ) i Tf i = O( N ) k i Tf i i= 1 = O( N k ) = O( N logn ) k Tf i Et alors Tt = k i Tt k + = O( N logn ) i= 1 Pire cas = cas moyen = O( N logn ) 1 Tri par fusion : algorithme de tri ([1], Fig. 8.6) public static void mergesort( Comparable [ ] a ) { Comparable [ ] tmparray = new Comparable[ a.length ]; mergesort( a, tmparray, 0, a.length - 1 ); private static void mergesort( Comparable [ ] a, Comparable [ ] tmparray, int left, int right ) { if( left < right ) { int center = ( left + right ) / ; mergesort( a, tmparray, left, center ); mergesort( a, tmparray, center + 1, right ); merge( a, tmparray, left, center + 1, right );

12 Tri par fusion : algorithme de fusion ([1], Fig. 8.7) Fusion de deux tableaux triés private static void merge( Comparable [ ] a, Comparable [ ] tmparray, int leftpos, int rightpos, int rightend ) { int leftend = rightpos - 1; int tmppos = leftpos; int numelements = rightend - leftpos + 1; // Main loop while( leftpos <= leftend && rightpos <= rightend ) if( a[ leftpos ].lessthan( a[ rightpos ] ) ) tmparray[ tmppos++ ] = a[ leftpos++ ]; else tmparray[ tmppos++ ] = a[ rightpos++ ]; while( leftpos <= leftend ) // Copy rest of first half tmparray[ tmppos++ ] = a[ leftpos++ ]; while( rightpos <= rightend ) // Copy rest of right half tmparray[ tmppos++ ] = a[ rightpos++ ]; // Copy TmpArray back for( int i = 0; i < numelements; i++, rightend-- ) a[ rightend ] = tmparray[ rightend ]; 3 Tri par fusion : inconvénients - Nécessite l utilisation d un tableau temporaire de taille N (tableau C) C est un problème lorsque N est grand - Temps passé dans copie entre tableau principal et tableau temporaire 4

13 Tri rapide (QuickSort( QuickSort) Algorithme le plus rapide parmi les algorithmes connus Temps moyen : O( N logn ) Pire cas : O( N ) peut être facilement rendu très peu probable Basé sur récursivité : ce qui le rend facile : - à comprendre - à prouver qu il est correct Petits changement dans le code peuvent grandement modifier le temps d exécution 5 Soit S le tableau à trier QuickSort L algorithme QuickSort( S ) est constitué des quatre étapes suivantes : 1) Si nombre d items à trier est 0 ou 1, alors : terminé ) Prendre n importe quel élément v de S Cet élément est appelé pivot 3) Faire la partition suivante : L = { x S { v x v L contient les éléments plus petits que le pivot R = { x S v x R contient les éléments plus grands que le pivot { v 4) Retourner : - résultat de QuickSort( L ) - v - résultat de QuickSort( R ) Tout élément peut être choisi comme pivot, mais nous verrons que certains choix sont meilleurs que d autres Si S contient v en plusieurs exemplaires, l algorithme permet de mettre ces exemplaires aussi bien dans L que dans R. Nous reviendrons sur ce point. 6

14 QuickSort : exemple ( [1], Fig. 8.8 ) Choisir le pivot Partition QuickSort sur QuickSort sur petits éléments grands éléments QuickSort : par rapport à MergeSort Ressemblances avec MergeSort - Diviser pour mieux maîtriser - Récursif Différences : - Les deux sous-problèmes : - sont de même taille avec MergeSort - ne sont pas forcément de même taille avec QuickSort Ceci est un inconvénient pour QuickSort - Étape de partition de QuickSort peut être améliorée beaucoup plus que l étape de fusion de MergeSort Cet avantage dépasse l inconvénient dû à l inégalité des tailles des deux sous-problèmes 8

15 Analyse de QuickSort Meilleur cas : - pivot partitionne S en deux sous-problèmes de même taille, et ceci à chaque étape de la récursivité - Temps d exécution = O( N logn ) Pire cas : - un des deux ensembles L ou R est vide, et ceci à chaque étape de la récursivité - Temps d exécution : - Soit T( N ) temps de trier S de N éléments - Hypothèse : temps pour partitionner un ensemble de N éléments N - T( i ) = T( i-1 ) + i, pour i=1,, N On obtient alors : T( N ) = N (N + 1)/ = O(N ) 9 Analyse de QuickSort : cas moyen (voir [1], pages 39-40) T(0) T(N 1) T( L ) = T( R ) = N T( N ) = T( L ) + T( R ) + N À partir de ces deux équations, on peut montrer que : T(N) T(N 1) = + N + 1 N N + 1 T(N) On peut ensuite montrer que: = ( ) = O( logn ) N N + 1 Donc le temps d exécution est O( N logn) 30

16 QuickSort : choix du pivot À ne pas faire : pivot est le premier ou dernier élément du tableau Si éléments initialement : - disposés aléatoirement : choix est correct - triés ou inversement triés : choix est mauvais, et temps d exécution = O(N ) Choix sécuritaire : pivot au milieu Lorsque éléments déjà triés : pivot parfait à toutes les étapes de la récursivité Choix Median-of-three : On considère les trois éléments premier, milieu et dernier du tableau On prend le median, càd celui qui n est ni le plus petit ni le plus grand des trois Par rapport au choix sécuritaire, cela apporte une légère amélioration sur le temps d exécution Lorsque la taille du tableau est paire = k, alors le milieu est le k ième élément 31 QuickSort : partition Hypothèse : aucun élément n est dupliqué Principe : consiste à mettre : - les petits éléments (< pivot) à gauche - les grands éléments (> pivot) à droite dans le tableau Utilise deux indices : i pour rechercher les grands éléments de gauche à droite j pour rechercher les petits éléments de droite à gauche Algorithme de partition : Étapes 0) Initialisations : i initialisé à la première position du tableau j initialisé à l avant dernière position du tableau 1) Échange pivot et dernier élément du tableau ) i est déplacé vers la droite jusqu à ce qu il rencontre un grand élément j est déplacé vers la gauche jusqu à ce qu il rencontre un petit élément Si i et j ne se sont pas croisés, alors inverser les items et reprendre l étape Sinon aller à l étape 3 3) Échanger l élément en position i avec le pivot 3

17 QuickSort : exemple de partition ([1], Fig. 8.9 à 8.15) Soit l entrée : Initialement : i = 0 et j = 8 Étape 1 : ([1], Fig. 8.9) Étape : i = 0 rencontre grand élément 8 j = 7 rencontre petit élément ([1], Fig. 8.10) et sont échangés ([1], Fig. 8.11) i = 3 rencontre grand élément 9 j = 6 rencontre petit élément 5 ([1], Fig. 8.1) et 5 sont échangés ([1], Fig. 8.13) QuickSort : exemple de partition (suite) Étape (suite) i = 6 rencontre grand élément 9 j = 5 rencontre petit élément 3 ([1], Fig. 8.14) Comme i et j se sont croisés, alors on termine l étape Étape 3 On échange le pivot 6 (en position 9) avec l élément 9 (en position i=6) ([1], Fig. 8.15)

18 QuickSort : partition lorsque pivot en plusieurs exemplaires L étape de l algorithme devient : i est déplacé vers la droite jusqu à ce qu il rencontre un grand élément ou un élément égal au pivot j est déplacé vers la gauche jusqu à ce qu il rencontre un petit élément ou un élément égal au pivot Si i et j ne se sont pas croisés, alors inverser les items et reprendre l étape Sinon aller à l étape 3 Si on n effectue pas cette modification, on obtient un temps d exécution quadratique lorsque le pivot est en plusieurs exemplaires 35 QuickSort : partition Median-of- -of-three Voici une amélioration de la partition proposée Soient les trois éléments median-of-three (voir page 31) 1) On place : - le plus petit élément au début du tableau - le plus grand élément à la fin du tableau - le median au milieu du tableau ) On échange le pivot avec l avant dernier élément du tableau (au lieu du dernier) 3) i initialisé à la seconde position du tableau (au lieu de la première) j initialisé à l avant avant dernière position du tableau (au lieu de l avant dernière) Avantages : - i s arrêtera à coup sûr car, dans le pire cas le pivot l arrêtera - j s arrêtera à coup sûr car, dans le pire cas le premier élément l arrêtera - code simplifié - temps d exécution légèrement amélioré 36

19 QuickSort : tableaux de petite taille Le tri par insertion est en général plus rapide 37 QuickSort : implantation ([1], Fig. 8.19) public static void quicksort( Comparable [ ] a ) { quicksort( a, 0, a.length - 1 ); private static final int CUTOFF = 10; public static void swapreferences( Object [ ] a, int index1, int index ) { Object tmp = a[ index1 ]; a[ index1 ] = a[ index ]; a[ index ] = tmp; private static void quicksort( Comparable [ ] a, int low, int high ) { if( low + CUTOFF > high ) insertionsort( a, low, high ); else { // Sort low, middle, high int middle = ( low + high ) / ; if( a[ middle ].lessthan( a[ low ] ) ) swapreferences( a, low, middle ); if( a[ high ].lessthan( a[ low ] ) ) swapreferences( a, low, high ); if( a[ high ].lessthan( a[ middle ] ) ) swapreferences( a, middle, high ); // Place pivot at position high - 1 swapreferences( a, middle, high - 1 ); Comparable pivot = a[ high - 1 ]; // Begin partitioning int i, j; for( i = low, j = high - 1; ; ) { while( a[ ++i ].lessthan( pivot ) ) ; while( pivot.lessthan( a[ --j ] ) ) ; if( i < j ) swapreferences( a, i, j ); else break; // Restore pivot swapreferences( a, i, high - 1 ); quicksort( a, low, i - 1 ); // Sort small elements quicksort( a, i + 1, high ); // Sort large elements 38

20 QuickSelect But : sélectionner k ième plus petit élément d un tableau Une approche intuitive mais non performante consiste à : - trier le tableau - rechercher le k ième élément du tableau trié Le temps d exécution avec une telle approche est donc du même ordre que le temps pour trier le tableau Algorithme performant : QuickSelect - plus performant qu un algorithme de tri - Pire cas : O(N ) - Cas moyen : O(N) 39 QuickSelect : algorithme Soit : - S le tableau - k tel que on veut rechercher le k ième plus petit élément de S Algorithme QuickSelect( S, k ) : 1) Si S contient un élément alors : - k doit être égal à 1 - retour de l unique élément de S ) Prendre n importe quel élément v de S Cet élément est appelé pivot 3) Faire la partition suivante : L = { x S { v x v L contient les éléments plus petits que le pivot R = { x S { v x v R contient les éléments plus grands que le pivot 4) Si k L (ce qui implique que l élément recherché est dans L) alors on effectue un appel récursif à QuikSelect( L, k ) Sinon si k = 1+ L : alors l élément recherché est le pivot Sinon on effectue un appel récursif à QuikSelect( R, k - L - 1 ) 40

21 QuickSelect : implantation ([1], Fig. 8.0) public static void quickselect( Comparable [ ] a, int k ) { quickselect( a, 0, a.length - 1, k ); private static void quickselect( Comparable [ ] a, int low, int high, int k ) { if( low + CUTOFF > high ) insertionsort( a, low, high ); else { // Sort low, middle, high int middle = ( low + high ) / ; if( a[ middle ].lessthan( a[ low ] ) ) swapreferences( a, low, middle ); if( a[ high ].lessthan( a[ low ] ) ) swapreferences( a, low, high ); if( a[ high ].lessthan( a[ middle ] ) ) swapreferences( a, middle, high ); // Place pivot at position high - 1 swapreferences( a, middle, high - 1 ); Comparable pivot = a[ high - 1 ]; // Begin partitioning int i, j; for( i = low, j = high - 1; ; ) { while( a[ ++i ].lessthan( pivot ) ) ; while( pivot.lessthan( a[ --j ] ) ) ; if( i < j ) swapreferences( a, i, j ); else break; // Restore pivot swapreferences( a, i, high - 1 ); // Recurse; only this part changes if( k <= i ) quickselect( a, low, i - 1, k ); else if( k > i + 1 ) quickselect( a, i + 1, high, k ); 41

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

Chapitre 7. Récurrences

Chapitre 7. Récurrences Chapitre 7 Récurrences 333 Plan 1. Introduction 2. Applications 3. Classification des récurrences 4. Résolution de récurrences 5. Résumé et comparaisons Lectures conseillées : I MCS, chapitre 20. I Rosen,

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

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

# 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

Résolution de systèmes linéaires par des méthodes directes

Résolution de systèmes linéaires par des méthodes directes Résolution de systèmes linéaires par des méthodes directes J. Erhel Janvier 2014 1 Inverse d une matrice carrée et systèmes linéaires Ce paragraphe a pour objet les matrices carrées et les systèmes linéaires.

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

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

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

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing 3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps

Plus en détail

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2. Eo7 Calculs de déterminants Fiche corrigée par Arnaud Bodin Eercice Calculer les déterminants des matrices suivantes : Correction Vidéo ( ) 0 6 7 3 4 5 8 4 5 6 0 3 4 5 5 6 7 0 3 5 4 3 0 3 0 0 3 0 0 0 3

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

Algorithmique et structures de données I

Algorithmique et structures de données I Algorithmique et structures de données I Riadh Ben Messaoud Université 7 novembre à Carthage Faculté des Sciences Économiques et de Gestion de Nabeul 1ère année Licence Fondamentale IAG 1ère année Licence

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

Quelques algorithmes simples dont l analyse n est pas si simple

Quelques algorithmes simples dont l analyse n est pas si simple Quelques algorithmes simples dont l analyse n est pas si simple Michel Habib habib@liafa.jussieu.fr http://www.liafa.jussieu.fr/~habib Algorithmique Avancée M1 Bioinformatique, Octobre 2008 Plan Histoire

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

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

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011 Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 9 février 2011 Arnaud Labourel (Université de Provence) Exclusion Mutuelle 9 février 2011 1 / 53 Contexte Epistémologique

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

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

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année 2003-2004 Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES Maude Manouvrier La reproduction de ce document par

Plus en détail

ARBRES BINAIRES DE RECHERCHE

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

Plus en détail

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

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

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

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

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

TD3: tableaux avancées, première classe et chaînes TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première

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

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

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

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

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE ARDUINO DOSSIER RESSOURCE POUR LA CLASSE Sommaire 1. Présentation 2. Exemple d apprentissage 3. Lexique de termes anglais 4. Reconnaître les composants 5. Rendre Arduino autonome 6. Les signaux d entrée

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

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

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

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

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

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

Organigramme / Algorigramme Dossier élève 1 SI

Organigramme / Algorigramme Dossier élève 1 SI Organigramme / Algorigramme Dossier élève 1 SI CI 10, I11 ; CI 11, I10 C24 Algorithmique 8 février 2009 (13:47) 1. Introduction Un organigramme (ou algorigramme, lorsqu il est plus particulièrement appliqué

Plus en détail

4. Groupement d objets

4. Groupement d objets Conception objet en Java avec BlueJ une approche interactive 4. Groupement d objets Collections et itérateurs David J. Barnes, Michael Kölling version française: Patrice Moreaux Rédigé avec 1.0 Principaux

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

Résolution d équations non linéaires

Résolution d équations non linéaires Analyse Numérique Résolution d équations non linéaires Said EL HAJJI et Touria GHEMIRES Université Mohammed V - Agdal. Faculté des Sciences Département de Mathématiques. Laboratoire de Mathématiques, Informatique

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

Corrigé des TD 1 à 5

Corrigé des TD 1 à 5 Corrigé des TD 1 à 5 1 Premier Contact 1.1 Somme des n premiers entiers 1 (* Somme des n premiers entiers *) 2 program somme_entiers; n, i, somme: integer; 8 (* saisie du nombre n *) write( Saisissez un

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

Qualité du logiciel: Méthodes de test

Qualité du logiciel: Méthodes de test Qualité du logiciel: Méthodes de test Matthieu Amiguet 2004 2005 Analyse statique de code Analyse statique de code Étudier le programme source sans exécution Généralement réalisée avant les tests d exécution

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

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

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

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

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

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

Plus en détail

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII ALGORITHMIQUE II NOTION DE COMPLEXITE 1 2 Comment choisir entre différents algorithmes pour résoudre un même problème? Plusieurs critères de choix : Exactitude Simplicité Efficacité (but de ce chapitre)

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

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

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

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

CHAPITRE V. Recherche et tri

CHAPITRE V. Recherche et tri Cherchez et vous trouverez,... car qui cherche trouve. Matthieu 7 7-8 et Luc 11 9-10 CHAPITRE V Recherche et tri Objectif. Comprendre les techniques de base pour organiser des données ordonnées. Ce chapitre

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

TP, première séquence d exercices.

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

Plus en détail

L exclusion mutuelle distribuée

L exclusion mutuelle distribuée L exclusion mutuelle distribuée L algorithme de L Amport L algorithme est basé sur 2 concepts : L estampillage des messages La distribution d une file d attente sur l ensemble des sites du système distribué

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Plus en détail

CCP PSI - 2010 Mathématiques 1 : un corrigé

CCP PSI - 2010 Mathématiques 1 : un corrigé CCP PSI - 00 Mathématiques : un corrigé Première partie. Définition d une structure euclidienne sur R n [X]... B est clairement symétrique et linéaire par rapport à sa seconde variable. De plus B(P, P

Plus en détail

Cours d algorithmique pour la classe de 2nde

Cours d algorithmique pour la classe de 2nde Cours d algorithmique pour la classe de 2nde F.Gaudon 10 août 2009 Table des matières 1 Avant la programmation 2 1.1 Qu est ce qu un algorithme?................................. 2 1.2 Qu est ce qu un langage

Plus en détail

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

Programmation C++ (débutant)/instructions for, while et do...while Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de

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

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

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

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

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

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

Algorithmique et Programmation

Algorithmique et Programmation École Supérieure d Ingénieurs de Poitiers Gea Algorithmique et Programmation Laurent Signac ii Algorithmique et programmation Gea Table des matières Avant Propos v Structures de données Notion de pointeur..............................................

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

Cryptologie et physique quantique : Espoirs et menaces. Objectifs 2. distribué sous licence creative common détails sur www.matthieuamiguet.

Cryptologie et physique quantique : Espoirs et menaces. Objectifs 2. distribué sous licence creative common détails sur www.matthieuamiguet. : Espoirs et menaces Matthieu Amiguet 2005 2006 Objectifs 2 Obtenir une compréhension de base des principes régissant le calcul quantique et la cryptographie quantique Comprendre les implications sur la

Plus en détail

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

SNT4U16 - Initiation à la programmation 2014-2015. TD - Dynamique de POP III - Fichiers sources SNT4U16 - Initiation à la programmation Licence SVT 2 ème année 2014-2015 TD - Dynamique de POP III - Fichiers sources contacts : mathias.gauduchon@univ-amu.fr, melika.baklouti@univ-amu.fr, xavier.giraud@univ-amu.fr,

Plus en détail

SUPPORT DE COURS. Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : omarinmt@gmail.com

SUPPORT DE COURS. Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : omarinmt@gmail.com Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : omarinmt@gmail.com SUPPORT DE COURS Matière : Algorithmiques et Structures de Données 1 Niveau : 2 ème Année Licence en Informatique

Plus en détail

Examen Médian - 1 heure 30

Examen Médian - 1 heure 30 NF01 - Automne 2014 Examen Médian - 1 heure 30 Polycopié papier autorisé, autres documents interdits Calculatrices, téléphones, traducteurs et ordinateurs interdits! Utilisez trois copies séparées, une

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

Découverte de Python

Découverte de Python Découverte de Python Python est un des langages informatiques au programme des concours à partir de la session 2015. Ce tutoriel vous permettra de vous mettre à peu près à niveau de ce qui a été fait en

Plus en détail

Gestion mémoire et Représentation intermédiaire

Gestion mémoire et Représentation intermédiaire Gestion mémoire et Représentation intermédiaire Pablo de Oliveira March 23, 2015 I Gestion Memoire Variables locales Les variables locales sont stockées: Soit dans un registre,

Plus en détail

Cours de Systèmes d Exploitation

Cours de Systèmes d Exploitation Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation

Plus en détail

LES DECIMALES DE π BERNARD EGGER

LES DECIMALES DE π BERNARD EGGER LES DECIMALES DE π BERNARD EGGER La génération de suites de nombres pseudo aléatoires est un enjeu essentiel pour la simulation. Si comme le dit B Ycard dans le cours écrit pour le logiciel SEL, «Paradoxalement,

Plus en détail

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai. Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai. 1 Introduction On considère une grille de 20 lignes 20 colonnes. Une case de la grille peut être vide, ou contenir une et une

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

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

Problèmes liés à la concurrence

Problèmes liés à la concurrence ENS Cachan Problématique Difficile de gérer la concurrence : Pas toujours facile d avoir des fonctions réentrantes. Risque de race condition : ex : x :=x+1 x :=x+1 On voudrait des blocs d instructions

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

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

Temps Réel. Jérôme Pouiller <j.pouiller@sysmic.org> Septembre 2011

Temps Réel. Jérôme Pouiller <j.pouiller@sysmic.org> Septembre 2011 Temps Réel Jérôme Pouiller Septembre 2011 Sommaire Problèmatique Le monotâche Le multitâches L ordonnanement Le partage de ressources Problèmatiques des OS temps réels J. Pouiller

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

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

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

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

Plus en détail

Traitement des données avec Microsoft EXCEL 2010

Traitement des données avec Microsoft EXCEL 2010 Traitement des données avec Microsoft EXCEL 2010 Vincent Jalby Septembre 2012 1 Saisie des données Les données collectées sont saisies dans une feuille Excel. Chaque ligne correspond à une observation

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

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Table des matières 1 Les bases 3 2 Variables et constantes 5 3 Quelques fonctions indispensables

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

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

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

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