Introduction à l’algorithmique et à la programmation Modified by Dr. Mhamed Zineddine INSA Euro-Med Taken from:INSA de Lyon, Departement Telecommunications,

Slides:



Advertisements
Présentations similaires
Formation des enseignants Formation MATLAB. Formation des enseignants MATLAB® (pour MATrix LABoratory) est un logiciel scientifique de calcul numérique.
Advertisements

Le débogage Semaine 12 Version A15. Plan de leçon - Débogage  Commentaire javadoc  Définition  Fonctionnement  Point d’arrêt  Exécution  Contrôler.
C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
1 Chapitre 2 La numération binaire. 2 Chapitre 2 : La numération binaire Introduction 1 - Le système binaire 2 - La conversion des nombres entiers 2.1.
I21 Algorithmique et programmation II David Gross-Amblard, Joël Savelli IEM-uB GFDL 1.2 CM 6/8 v1.1.
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
Tableaux et Pointeurs Chaînes de Caractères Programmation Impérative II.
CINI – Li115 1 Semaine 3 Boucles (suite), tirages aléatoires, bibliothèque graphique ● Imbrication d'instructions if et for ● Boucles for imbriquées ●
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
Algorithmique ‘’ Un algorithme est une suite finie et non-ambiguë d’instructions permettant de donner la réponse à un problème. ‘’ Niveau de difficulté.
Tableaux en C Mardi 2/05.
Semaine 8 Retour sur les tableaux : fonctions et récursivité
Initiation à la conception des systèmes d'informations
Ajouter le code dans une page html
Les tableaux différencier les variables simples des variables indicées (ordonnées et numérotées) un identificateur unique désigne un ensemble, une collection.
Les Instructions Itératives (Les Boucles)
Introduction au Langage Pascal
Quelques Termes INFORMATIQUE ? ORDINATEUR ( Système Informatique)?
Algorithmiques Abdelbasset KABOU
« Un langage de programmation est une convention pour donner des ordres à un ordinateur. Ce n’est pas censé être obscur, bizarre et plein de pièges subtils.
Pointeurs et langage C.
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Techniques de décomposition
Semaine #1 INF130 par Frédérick Henri.
Algorithmique Avancée et Complexité Chap2:Complexité et Optimalité
Javadoc et débogueur Semaine 03 Version A17.
Cours 4 : Tris de Tableaux
Collecte de données CAPI
Algorithmique demander jeu du pendu.
AO (Architecture des ordinateurs)
I21 Algorithmique et programmation II
Principes de programmation (suite)
Algorithmique Avancée et Complexité Chap3:Diviser pour Régner
Semaine 11 Les pointeurs (suite)
Les fonctions.
Les fonctions.
Algorithmiques Abdelbasset KABOU
Centralisation de logs
Buffer Overflow Anatomy of an exploit.
Un Algorithme , c'est Quoi ?
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Excel (et toute l’informatique) :
République Algérienne Démocratique et Populaire Ministère de l'Enseignement Supérieur et de la Recherche Scientifique Université Saad.
Cours N°6: Algorithmiques Structures Conditionnelles
L E C ORPS D ’ UN A LGORITHME / P ROGRAMME – L A PARTIE I NSTRUCTION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie.
L’I NSTRUCTION DE T EST A LTERNATIF Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira, Bejaia Année.
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
Science du traitement rationnel de l'information
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Cours N°9: Algorithmiques Les Tableaux 1
Les tableaux.
Programmation en C++ C++ de base
Introduction à l’algorithmique et à la programmation Modified by Dr. Mhamed Zineddine INSA Euro-Med Taken from:INSA de Lyon, Departement Telecommunications,
1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité.
Type Concret – Type Abstrait
Calcul Scientifique Initiation à SCILB
Chapitre2: SGBD et Datawarehouse. On pourrait se demander pourquoi ne pas utiliser un SGBD pour réaliser cette structure d'informatique décisionnelle.
Position, dispersion, forme
Information, Calcul, Communication
CSI 3505 Algorithmes Voraces
RABAH M ed Ali 2018/2019
Flowchart Itération Cours 04.
Principes de programmation (suite)
Piles et files.
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
Encadré par : M. Mohammad EL GHABZOURI Elaboré par : - AZEGAMOUT Mohamed - ABOULKACEM abdelouahed - GOUN Ayoub EXPOSÉ Sous le thème : SER 2018 Parallélisme.
Listes Chaînées.
Tableau de bord d’un système de recommandation
Boulain Joris, Handouz Yassine, Regnier Fabien, Giraud Antoine
Contenu Systèmes de test parallèles Multithreading Synchronisation
Transcription de la présentation:

Introduction à l’algorithmique et à la programmation Modified by Dr. Mhamed Zineddine INSA Euro-Med Taken from:INSA de Lyon, Departement Telecommunications, Services et Usages Introduction a` l’algorithmique et a` la programmation – p. 1 Algorithmique Introduction a` l’algorithmique et a` la programmation – p. 2 Algorithmique : Science qui étudie l’application des algorithmes à l’informatique Algorithme : Suite finie, séquentielle de règles que l’on applique à un nombre fini de données, permettant de résoudre des classes de problèmes semblables. L’algorithme d’Euclide permet de trouver le plus grand commun diviseur (P.G.C.D) plus grand commun diviseur de deux nombre – Calcul, enchaînement des actions nécessaires à l’accomplissement d’une tâche. Le Petit Robert

Presentation Introduction Bases de l’algotithmique ◦◦◦◦ Structure des données Structure des opérations Quelques méthodes de tri Gestion des listes Introduction a` l’algorithmique et a` la programmation – p. 3 Introduction Introduction a` l’algorithmique et a` la programmation – p. 4 Un algorithme est motivé par la résolution d’une tâche ◦◦◦◦◦◦ méthode indépendante de la machine méthode indépendante du langage de programmation résolution structurée Algorithme = description des étapes de la méthode utilisée

Pourquoi utiliser un algorithme ? L’algorithme décrit formellement ce que doit faire l’ordinateur pour arriver à un but bien précis. Ce sont les instructions qu’on doit lui donner. Ces instructions sont souvent décrites dans un langage clair et compréhensible par l’être humain:faire ceci, faire cela si le résultat a telle valeur, et ainsi de suite.

Algorithmique et programmation 1. Analyse du problème 2. Conception d’une solution : algorithmique choix de la représentation des données, choix de la méthode utilisée 3. Développement : programmation choix du langage de programmation choix de la machine utilisée 4. Tests On ne s’intéressera donc ici qu’à la partie algorithmique, ou plutôt aux structures de données ainsi qu’aux opérations de calcul utilsées en algorithmique. Introduction a` l’algorithmique et a` la programmation – p. 5 Quelques themes Introduction a` l’algorithmique et a` la programmation – p. 6 Tri : permet de réarranger et de classer des données. De nombreuses méthodes existent pour trier un ensemble, elles se différencient par la suite des étapes effectuées. Recherche : localiser des données dans un fichier. Les méthodes sont très variées et dépendent de l’organisation des données dans la mémoire. Traitement de chaines : manipulation de (longues) chaines de caractères. recherche de motifs dans des chaines (pattern matching), compression de fichiers, cryptographie.

Est un algorithme de tri par comparaison. Cet algorithme est simple, mais considéré comme inefficace, car il s'exécute en temps quadratique ( T(n) = O(n^2)) en le nombre d'éléments à trier, et non en temps pseudo linéaire. Le tri par sélection (ou tri par extraction) Description, pseudo-code et variantes Sur un tableau de n éléments (numérotés de 1 à n), le principe du tri par sélection est le suivant : rechercher le plus petit élément du tableau, et l'échanger avec l'élément d'indice 1 ; rechercher le second plus petit élément du tableau, et l'échanger avec l'élément D'indice 2 ; continuer de cette façon jusqu'à ce que le tableau soit entièrement trié. En pseudo-code, l'algorithme s'écrit ainsi : procédure tri_selection(tableau t, entier n) pour i de 1 à n - 1 min ← i pour j de i + 1 à n si t[j] < t[min], alors min ← j fin pour si min ≠ i, alors échanger t[i] et t[min] fin pour fin procédure

Quelques themes (2) Algorithmes sur graphes : résolution de problèmes complexes pouvant être représentés par une structure de données particulière (par exemple le problème du voyageur de commerce). Algorithmes mathématiques : méthodes provenant de l’analyse numérique et de l’arithmétique. Problèmes traitant de l’arithmétique des entiers, des polynômes, des matrices.... Introduction a` l’algorithmique et a` la programmation – p. 7 Bases de l’algorithmique Données Introduction a` l’algorithmique et a` la programmation – p. 8 ◦◦◦◦◦◦◦◦◦◦ variables structures tableaux pointeurs modèles dynamiques Calcul ◦◦◦◦◦◦◦◦◦◦ instructions conditions boucles fonctions récursion l’algorithmique c’est : le choix d’un algorithme le choix d’une structure de données les deux sont indissociables

Structures de donnees Un algorithme manipule des données : Constante : nombres, chaînes de caractères ◦◦◦◦◦◦ 1, 2, 3, ,1415 “bonjour” Variable : nom d’une valeur en mémoire ◦◦◦◦◦◦◦◦ caractère entier nombre à virgule... Introduction a` l’algorithmique et a` la programmation – p. 9 Structures de donnees Variable = nom d’un espace en mémoire 1 octet caractère "C" entier "X" Introduction a` l’algorithmique et a` la programmation – p. 10

Structures de donnees : types de base Les donneés sont finies : elles ont donc une taille maximale. Par exemple, les tailles usuelles des variables en C sont les suivantes: Introduction a` l’algorithmique et a` la programmation – p. 11 Structures de donnees Introduction a` l’algorithmique et a` la programmation – p. 12 Type construit : structure regroupant plusieurs variables. date = ( jour mois annee structure entier entier entier )... structure rendez vous = ( structure structure structure date personne nom adresse lieu )

Structures de donnees Type structuré = création d’un nouveau type de variable = nom d’un espace en mémoire Introduction a` l’algorithmique et a` la programmation – p. 13 Types de base Introduction a` l’algorithmique et a` la programmation – p. 14 La contrusction de types peut être faite en combinant tous les types de base et les types déjà définis. L’utilisation se fait en utilisant le point “.” date (jour mois année structure entierentier ) structure t1.jour = t1.mois = Date t1,t t1.annee = t2 = t1 (copie de toute la structure = 3 variables)

Structures de donnees : tableaux Collections de variables : Tableaux : structure permettant d’accéder de façon indépendante à un ensemble de variables de même type. entier t[12] tableau t contenant 12 entiers entier x x = t[5] copie du 6 e ` me élément de t dans la variable x t[6] = 42 modification du 7 e ` me élément Un tableau est de taille fixe et ses données son contiguës en mémoire. Attention : le premier élément d’un tableau est souvent numéroté 0 en informatique. Introduction a` l’algorithmique et a` la programmation – p. 15 Structures de donnees : tableaux (2) 4 octets t[0] t[1] Introduction a` l’algorithmique et a` la programmation – p. 16 t[5] Tableaut [6] t[11] t

Bases de l’algorithmique Structures de données ◦◦◦◦◦◦ variables structures tableaux Structures de contrôle ◦... Introduction a` l’algorithmique et a` la programmation – p. 17 Structures de controle Organisation des opérations : Introduction a` l’algorithmique et a` la programmation – p. 18 Opérations : + - * / = !=... ◦◦◦◦◦◦◦◦ + − ∗ / : opérations usuelles comparaisons sur les types simples opérateurs logiques (et, ou, négation) la priorité, l’associativité et la commutativité des opérations sont respectées Instructions simples et expressions ◦◦◦◦ x = 123 y = x+w*3

Execution conditionnelle alors Exécution conditionnelle : si [test est vrai] instructions sinon Instructions fin si instruction Exemple : si a < b alors a = b sinon b = a finsi Introduction a` l’algorithmique et a` la programmation – p. 19 Execution repetitive instruction Introduction a` l’algorithmique et a` la programmation – p. 20 Boucle de répétition fixe: pour [ensemble de valeurs] faire instructions fin pour Exemple : pour i=0 jusqu’a i<12 faire afficher t[i] fin pour

Execution repetitive Boucle de répétition “tant que”: faire instruction tant que [test vrai] instructions fin tant que Exemple : i = 0 tant que i < 12 faire afficher t[i] i = i + 1 fin tant que Introduction a` l’algorithmique et a` la programmation – p. 21 Structure de controle : fonctions Découpage d’un programme en blocs ou fonctions. Introduction a` l’algorithmique et a` la programmation – p. 22 Permet de regrouper et nommer un ensemble d’instructions. Permet d’utiliser des paramètres. Permet de réutiliser une même portion de programme depuis plusieurs endroits. Interface = paramètres et valeur renvoyée. La valeur renvoyée peut être ignorée si on ne l’utilise pas. passage des paramètres ◦ ◦ passage par valeur : seule la valeur de la variable est importante passage par adresse : la variable peut être modifiée par la fonction

Exemple de fonction entier TrouveMaximum(entier a, entier b) { ( variablelocale m )entier m si a < b alors m = b sinon m = a fin si renvoyer m }... i = TrouveMaximum(1,100) j = TrouveMaximum(i,120)... Introduction a` l’algorithmique et a` la programmation – p. 23 Structure d’une fonction entierTrouverMaximum(entiera,entierb ) { entier m si a < b alors m = b sinon m = a fin si renvoyer m } Introduction a` l’algorithmique et a` la programmation – p. 24

Fonctions recursives itérative : exécution répétitive sur des ensembles de données récursive : une fonction s’appelle elle même avec un ensemble de données à traiter plus petit entier f(entier n) { alors n * f(n-1) entier r si n = 0 r = 1 sinon r = fin si renvoyer r } Introduction a` l’algorithmique et a` la programmation – p. 25 Structure d’un programme Introduction a` l’algorithmique et a` la programmation – p. 26 On peut utiliser une variable ou une fonction uniquement si elle est déjà définie dans le programme Visibilité des variables ◦◦◦◦ variables locales : internes à un bloc variables globales : visibles dans tout le programme Le déroulement d’un programme commence ◦◦◦◦ à la première instruction isolée en appelant une fonction dont le nom est fixé à l’avance

Bases de l’algorithmique Structures de données ◦◦◦◦◦◦◦◦ variables structures tableaux... Structures de contrôle ◦◦◦◦◦◦◦◦◦◦ instructions conditions boucles fonctions récursion Quelques méthodes de tri Introduction a` l’algorithmique et a` la programmation – p. 27 Tri par selection on cherche l’élément de plus petite valeur dans le tableau le placer en tête du tableau recommencer avec le tableau moins la première case Introduction a` l’algorithmique et a` la programmation – p

Tri par selection TriSelection(entier t[], entier taille) { entier i,j,min,tmp pour i=0 jusqu’a j < taille-2 faire min = i pour j = i+1 jusqu’a j < taille faire alors si t[j] < t[min] min = j fin si fin pour tmp = t[min] t[min] = t[i] t[i] = tmp fin pour } Introduction a` l’algorithmique et a` la programmation – p. 29 Autres tris Introduction a` l’algorithmique et a` la programmation – p. 30 insertion : méthode utilisée pour trier une main de jeu de carte. On prend les cartes une par une de la gauche vers la droite. Pour chaque carte on la place au bon ordre parmi les précédentes. bulle : les éléments les plus petits se «déplacent» vers le début du tableau. Les éléments contiguës sont échangés 2 à 2 ( ng_bubblesort_anim.gif) par segmentation (ou tris rapide) : faire 2 ensembles séparés par une valeur pivot. Tous les éléments inférieurs au pivot sont rangés à gauche, tous les éléments supérieurs à droite, puis trier les deux nouveaux tableaux de la même manière (on s’arrête lorsque les tableaux ont un seul élément).

Tri par insertion TriInsertion(entier t[], entier taille) { entier i,j,tmp faire > tmp faire pour i=0 jusqu’`a i<taille tmp = t[i] j = i tant que j>0 et t[j-1] t[j] = t[j-1] j = j-1 fin tant que t[j] = tmp fin pour } Introduction a` l’algorithmique et a` la programmation – p. 31 Tri bulle entier Introduction a` l’algorithmique et a` la programmation – p. 32 taille) TriBulle(entier t[], { entier i,j,tmp pour i = taille jusqu’`a i>1 avec i = i-1 faire pour j = 1 jusqu’`a j<i faire si t[j-1] > t[j] alors tmp = t[j-1] t[j-1] = t[j] t[j] = tmp fin si fin pour }

Cout des algorithmes Plusieurs algorithmes peuvent faire la même chose mais en effectuant un nombre d’opérations différent. → Différencier leurs coûts : coût en temps d’exécution coût en place mémoire nombre de transferts mémoire Le nombre d’étapes et la place mémoire dépendent le plus souvent de la taille des entrées de l’algorithme (la taille des tableaux par exemple). Introduction a` l’algorithmique et a` la programmation – p. 33 Complexite des algorithmes Tris par sélection : il y a 2 boucles imbriquées et le nombre d’opérations effectuées est proportionnel à n ^ 2. On peut différencier l’analyse pour Introduction a` l’algorithmique et a` la programmation – p. 34 meilleur cas cas moyen pire cas Le tri par insertion a la même complexité dans les 3 cas mais pas le tris bulle dont la complexité peut varier.

La complexité est noté O(f(n)) où le O (grand O) veut dire "d’ordre" et f est la fonction mathématique de n qui est la quantité d’informations manipulée dans l’algorithme. Exemple: soit un algorithme qui compte de 1 à n et qui affiche les val eurs correspondantes. Dans la pratique, vous allez utiliser une boucle allant de 1 à n. Il faudra faire n passages pour tout afficher et donc vous aller manipu ler n fois l’information. La fonction mathématique donnant le coût sera alors f(n)=n. La complexité est alors linéaire et vous la noterez O(n).

Differentes complexite ´ x log(x) x*log(x) x*x x*x*x exp(x) 300 Introduction a` l’algorithmique et a` la programmation – p. 35 Comparaison des ordres de grandeur Introduction a` l’algorithmique et a` la programmation – p. 36 taille du problème / temps d’exécution

Algorithmique pratique L’algorithme reste le même quel que soit la nature des données à traiter. Les modifications sont à faire dans des points très précis : ceux où l’on regarde le contenu des données. Pour changer le type des tableaux que nous savons pour l’instant trier et avoir, par exemple, des tableaux de carte de visite il suffit de changer les endroits où l’on compare les éléments des tableaux. Introduction a` l’algorithmique et a` la programmation – p. 37 Les tris externes Introduction a` l’algorithmique et a` la programmation – p. 38 On peut vouloir avoir simultanément plusieurs classements sur un même ensemble de données (par nom, par ville, par date pour des rendez vous par exemple) On peut également vouloir avoir l’ordre des éléments d’un ensemble sans les changer de place Utilisation d’index pour avoir des classements sans modifier les données.

Bases de l’algorithmique Structures de données ◦◦◦◦◦◦◦◦ variables structures tableaux pointeurs Introduction a` l’algorithmique et a` la programmation – p. 39 Pointeurs Introduction a` l’algorithmique et a` la programmation – p. 40 Un pointeur est une variable contenant une adresse Les pointeurs permettent de manipuler des objets sans avoir à les nommer (comme les tableaux !). Mais on peut allouer dynamiquement les de nouvelles variables. Les pointeurs peuvent être construits à partir de n’importe quel type entier *pi :pi contient l’adresse d’un entier structure date *t :t contient l’adresse d’une date On peut obtenir l’addresse d’un objet avec l’opérateur & entier i entier *pi = &i i = 3 (*pi) = 4 :i est ´egal `a 4

Modelés de données dynamiques Structures dynamiques : Arbres, listes chaînées, piles, files... structures dynamiques dont la taille peut varier au cours de l’exécution du programme. L’accès aux informations stockées dépend de la structure. Ce type de structure utilise des pointeurs structure elmt liste { int valeur; structure elmt liste *suivant; } Introduction a` l’algorithmique et a` la programmation – p. 41 Structures de données : liste (2) 4 octets Liste chaînéeL Introduction a` l’algorithmique et a` la programmation – p. 42 L

Structures de donnees: liste (3) 4 octets L Liste chaînéeL ajout d’un élément Introduction a` l’algorithmique et a` la programmation – p. 43 Structures de donnees Introduction a` l’algorithmique et a` la programmation – p. 44 Choix de manipulation des structures ◦◦◦◦◦◦ Listes Piles (Last In First Out) Files (First In First Out)

Structures de données : Piles Pile ajouter toujours au sommet seul le sommet est visible retirer toujours au sommet Introduction a` l’algorithmique et a` la programmation – p. 45 Structures de donnees : Files Pile Introduction a` l’algorithmique et a` la programmation – p. 46 ajouter toujours au sommet seul le dernier est visible retirer toujours à la fin on peut garder un pointeur sur la fin pour être plus efficace

Structures de donnees PileArbre Introduction a` l’algorithmique et a` la programmation – p. 47 Conclusion Introduction a` l’algorithmique et a` la programmation – p. 48 données ◦◦◦◦◦◦◦◦◦◦ variables structures tableaux pointeurs modèles dynamiques calcul ◦◦◦◦◦◦◦◦◦◦ instructions conditions boucles fonctions récursion l’algorithmique c’est : le choix d’un algorithme le choix d’une structure de données les deux sont indissociables

Conclusion Dans un programme de grande taille le temps d’exécution est dominé par un poignée d’algorithmes Beaucoup de programmes sont sur-optimisés. Il n’est pas indispensable de trouver tout le temps le «meilleur» algorithme partout, sauf si ces derniers sont des tâches conséquentes ou très répétitives. Un mauvais choix d’algorithme pour une partie critique peut rendre le programme entier inutilisable. Introduction a` l’algorithmique et a` la programmation – p. 49 Quelques livres Introduction a` l’algorithmique et a` la programmation – p. 50 Introduction to the Design and Analysis of Algorithms, Ed Edition, Levitin, Algorithms, Fourth Edition (Deluxe): Book and 24-Part Lecture Series, Sedgewick & Wayne, Engineering Problem Solving with C, 4th Edition, Etter, 2013.