ALGORITHMIQUE IUT Vélizy – DUT Info - 1ère année Laurent Marsan Algorithmique - Cours 1 - Introduction 1 1 – Introduction Problème Algorithme Programme Programme Solution Algorithmique - Cours 1 - Introduction 2 1 – Introduction Qu’est-ce qu’un algorithme? • Étape préliminaire au programme: expose les mécanismes du programme final, en particulier les points délicats. • Permet de décrire une solution d’un problème en mettant « de côté » les aspects techniques (langage de programmation et architecture de l’ordinateur). • Permet d’estimer le coût théorique (complexité) d’une solution en temps et en mémoire, et donc de comparer deux solutions. Quand doit-on écrire l’algorithme d’un problème? • Étape obligatoire dans la résolution d’un problème présentant un certain niveau de difficulté. • Dépend de l’importance d’un éventuel gain de performance pour l’utilisateur. Algorithmique - Cours 1 - Introduction 3 1 – Introduction Objectifs du cours d’algorithmique première année • Vous apprendre à : organiser votre réflexion expliquer clairement une solution Ex: Interro, sortez une feuille • Commencer à découvrir les algorithmes et structures qui constituent le bagage minimal d’un programmeur en programmant, vous aurez parfois à inventer des algorithmes nouveaux (tout • Vous convaincre que : n’est pas déjà dans les livres) il faut tout prixpas éviter depasser réinventer l’eau chaude! 1. vous neàpouvez vous de ce bagage minimal, vous ne pouvez pas tout réinventer 2. pour accélérer un programme, une optimisation algorithmique est généralement beaucoup plus intéressante que l’achat d’un ordinateur plus puissant Algorithmique - Cours 1 - Introduction 4 Un exemple: le tri d’entiers Tri naïf Tri naïf Tri optimal Tri naïf « Quick sort » n.m. n.m. 4.000 0.01 sec. n.m. 100000 40.000 1.59 sec. Algos de haut niveau0.03 sec. Nb d'opérations 200000 Nb entiers 400 150000 Bac+4, Bac+5: (ex: graphisme:Bresenham) 400.000 50000 4.000.000 0 40.000.000 50 3 mn. 40 0.32 sec. Trop long! (~ 5 h.) 3.64 sec. Trop long! (~ 20 j.) 36.7 sec. 100 150 200 250 300 350 400 Nb d'entiers à trier Algorithmique - Cours 1 - Introduction 5 2 – Qu’est-ce qu’un algorithme? Un algorithme décrit une façon de résoudre un problème sous la forme d’une suite d’opérations à effectuer. Contraintes: • Opérations non ambiguës. • Opérations réalisables par la machine virtuelle. • La machine virtuelle sur laquelle on simule l’exécution des algorithmes est composée : d’un clavier (lire); d’un écran (écrire); d’une mémoire pour stocker et manipuler les données d’une unité de calcul qui effectue les opérations arithmétiques et logiques. Elle ne peut traiter qu’une seule opération à la fois (pas de parallèlisme). • L’algorithme doit se terminer et fournir un résultat. Algorithmique - Cours 1 - Introduction 6 2 – Qu’est-ce qu’un algorithme? Avantages par rapport à un vrai programme : Syntaxe souple. Ne nécessite pas de connaissances techniques (C, C++, Java…) Ne détaille pas nécessairement tout le contenu d’une solution. On peut décider de remettre l’écriture de certaines parties à plus tard sans bloquer l’avancement général. Ex: bâtiment Une difficulté réside dans le choix du niveau de détail à employer: seules les informations pertinentes doivent apparaître. Ex: café Algorithmique - Cours 1 - Introduction 7 3 – Nomenclatures Une variable représente une portion de la mémoire dans laquelle on peut • stocker une valeur (Ex: t:=3) • lire et afficher la valeur contenue dans la variable (Ex: écrire(t) ) en indiquant l'identificateur de cette variable. Par convention, lorsque aucune valeur n’a été attribuée à une variable, celle-ci est indéfinie. Un identificateur est un nom (variable, programme, sous-programme…). Le type d’une variable détermine les valeurs possibles de cette variable, les opérations que l’on peut lui appliquer, et, d’un point de vue plus interne, la représentation en mémoire de la variable. (Ex: entier, flottant, booléen…) Algorithmique - Cours 1 - Introduction 8 3 – Nomenclatures Une instruction est un ordre qui sera exécuté par la machine virtuelle: Ex: lire(a); t:=2; Chaque instruction se termine par un « ; ». On précise toujours : • le nom de l’instruction (ici lire ou :=) ; • les données sur lesquelles agit l’instruction, ces données pouvant être : des variables (Ex: t:=a;) des constantes (Ex: t:=7;) des expressions* dont la valeur est calculée avant l’exécution de l’instruction (Ex: t:=a+7;) * une expression étant elle-même composée de variables et/ou de constantes liées entre elles par des opérations. Algorithmique - Cours 1 - Introduction 9 Pour écrire des algorithmes, nous utiliserons les notations suivantes : Algorithme <nom> { … } contient, si nécessaire, des contraintes de nature logique que les entrées (paramètres) et sorties doivent remplir. // … commentaire décrivant ce que fait l’algorithme, les saisies requises, les affichages obtenus, ou la nature des paramètres. aux … déclaration des variables auxiliaires utilisées par l’algorithme. début … fin <nom> instructions à exécuter (corps de l’algorithme). Algorithmique - Cours 1 - Introduction < liste de paramètres > 10 Exemple Algorithme moyenne_deux_notes // calcule la moyenne de deux notes sur 20 aux a,b,m : flottant; // on stockera la moyenne dans m début écrire (“ Entrez 2 notes ” ) ; lire (a,b); // lecture au clavier m:=(a+b)/2; écrire (“ Voici la moyenne :”, m ); fin moyenne_deux_notes Algorithmique - Cours 1 - Introduction 11