Cours d`algorithmique - e
Transcription
Cours d`algorithmique - e
Cours d’algorithmique et programmation Chapitre 1 : Introduction I. Algorithme / programme II. Fonctionnement d’un ordinateur III. Démarche de conception I. Algorithme / programme Algorithme ? Suite ordonnée d’actions à réaliser pour aboutir à la résolution d’un problème, pour obtenir un résultat. Programmation ? Traduction des algorithmes en instructions que pourra «comprendre » et exécuter un ordinateur. Exemples d’algorithmes : • dans la vie courante - une recette de cuisine, chercher un mot dans le dico … • les premiers algos - Euclide (~ 300 av. J.C !) : calcul du PGCD de 2 entiers - Al Khuwarizmi (IXème) : résolution équation second degrés - Ada Lavelace (XIXème) : 1er algo destiné à être exécutée par une machine (calculs des nbres de Bernouilli) • quelques algos classiques en info : - trouver le min/le max de n valeurs - trier une suite de n valeurs - rechercher une valeur dans un ensemble de n valeurs Ex. d’algorithme : calcul du PGCD de 2 entiers positifs par la méthode des différences successives • Postulats (mathématiques) : Si a et b sont 2 entiers positifs tels que a>=b : PGCD(a,b)= PGCD(b,a-b) Si a est un entier PGCD(a,0)=a début • Algorithme : On a 2 entiers test Boucle : on recommence Faux sont-ils égaux ? Vrai On calcule la différence du plus grand et du plus petit Cet entier est le PGCD recherché On remplace le plus grand par cette différence fin Informatique ? L’informatique est la science du traitement automatique de l’information. Algorithme ? Suite de traitements (calculs, tests …) à effectuer sur des données (informations) pour obtenir un résultat. Programme ? Ensemble structuré d’instructions de traitements de données à faire réaliser par un matériel informatique. II. Fonctionnement d’un ordinateur Système informatique (ordinateur) : • Ensemble de dispositifs matériels et logiciels permettant de : - Stocker et restituer des données - Transmettre des données - Traiter des données (calculs, tests …) utilisateur • 2 niveaux : - Matériel - Logiciel (programmes ) services Navigateur Bloc-notes Word Logiciels services Matériel Processeur Mémoire vive Disque dur L'ordinateur : matériel • Stockage de l'information - Mémoire vive (RAM) : - programmes en cours d'exécution - données temporaires utilisées par les programmes en cours d'exécution - Disque dur et/ou mémoire flash : - programmes installés - données enregistrées • Transmission de l'information - La carte mère (pistes), les bus, les ports … • Traitement de l'information - Le processeur - Coprocesseurs ( carte graphique ... ) Architecture de von Neumann La machine : que peut-elle « comprendre » ? Un ordinateur est un assemblage de composants électroniques : le courant passe ou ne passe pas. Le seul langage que peut « comprendre » un ordinateur est le langage binaire (des suites de 0 et de 1) • Toutes les données stockées en mémoire sont codées en binaire • Toutes les instructions que devra exécuter le processeur devront au préalable avoir été traduites en langage binaire. La machine : que sait-elle faire? Stocker et aller chercher une information en mémoire et faire quelques calculs simples … Jeu d’ instructions de base d’un microprocesseur : - Les opérations arithmétiques (+,- ,,/ …) - Les opérations logiques ( et, ou, non …) - les instructions de contrôles (branchements conditionnels, boucles, appels de fonctions …) - les instructions de transferts de données - Les instructions d’entrée-sortie III. Démarche de conception d’un logiciel 1. Etude du cahier des charges (CDC) Objectifs : Pour quoi faire ? Pour qui ? (utilisateurs ?) 2. Les données : Identifier les données principales • • sur lesquelles s’effectueront les traitements (données en entrée) les résultats (données en sortie) 3. Les traitements • Cas d’utilisations / scénarios • Analyse chronologique descendante Quels traitements sur quelles données ? • Algorithmes / organigrammes 4. L’interface (IHM) Programmer : de l’algorithme au code exécutable (langages compilés) Que faire ? Problème à résoudre Objectifs à atteindre Comment ? réfléchir, analyser Conception des algorithmes. Pseudo-code/Organigrammes choisir un langage et coder ! Programmation dans un langage de haut niveau Code source (monProg.c) compiler Traduction en langage machine Code exécutable (monProg.exe) sur « papier » En utilisant un éditeur ou un logiciel de développement En utilisant un compilateur (logiciel de compilation) (gcc) qui bosse ? vous le programmeur (vous) la machine Le programme est prêt. Vous pouvez le lancer comme n’importe quelle appli ! Qu’est-ce qu’un bon algorithme ? • validité : réalise-t-il exactement la tâche pour laquelle il a été conçu ? • robustesse : toutes les conditions exceptionnelles ou anormales d’utilisation ont-elles été envisagées ? • efficacité charge mémoire, complexité • Ré-utilisabilité