Notions fondamentales dAlgorithmique Franois Bonneville ARICIA 1 Ethymolologie
Notions fondamentales d’Algorithmique François Bonneville - ARICIA 1
Ethymolologie Algorithme : du mathématicien perse Al-Khawarizmi (mort en 850 à Bagdad), le « père » de l’algèbre l’algo n’est donc pas « rythmique » , à la différence du rock’n roll. Avez-vous déjà indiqué un chemin à un touriste égaré ? Avez vous fait cher un objet à quelqu’un par téléphone ? Avez-vous déjà suivi une recette de cuisine ? Si oui, vous avez déjà conçu et fait exécuter des algorithmes. 2 2
Définition d’un algorithme Suite finie de règles à appliquer dans un ordre donné à un nombre fini de données pour arriver en un nombre fini d’étapes à un résultat Un algorithme est indépendant du langage dans lequel il est écrit et de l’ordinateur qui l’exécute 3
Qualités nécessaires pour concevoir un algorithme Avoir une certaine intuition : aucune méthode ne permet de savoir quelles instructions permettront d’obtenir le résultat voulu. Suivre le paradigme « diviser pour régner » : réduire chaque problème en problèmes plus petits Etre méthodique : évitez de sauter les étapes. Être rigoureux : chaque fois qu’on écrit une série d’instructions qu’on croit justes, vérifier systématiquement en se plaçant mentalement comme la machine qui va les exécuter. 4 4
Qualité d’un algoritme 1. 2. 3. 4. Lisibilité : respecter l’indentation, choisir judicieusement les noms de variables et de fonctions Terminaison : atteindre le résultat en un nombre fini d’étapes Validité : le résultat doit répondre au problème posé Faible complexité : 1. en temps : nombre d’instructions élémentaires, nécessaires à sa réalisation 2. en mémoire occupée 5
L’algorithmique : un art plus qu’une technique Pas de méthode générale Nécessite du talent = expérience + intuition Recher la simplicité : le simple est toujours beau Penser universel : savoir généraliser pouvoir réutiliser 6
Structures Un algorithme est une boite noire composée de mécanismes d’entrée / sortie de données 2. de structures de données permettant de mémoriser les données du problème 1. Variables typées 2. Tableaux 3. Structures chaînées par des pointeurs 3. de structures de contrôle permettant de manipuler ces données 1. Tests 2. Itérations 4. de structures fonctionnelles permettant de décomposer et de formaliser la succession des traitements 7
Types de programmation 1. Programmation impérative 2. décrit les opérations en séquences d'instructions 3. Fortran, Cobol, Basic, Pascal, C, C++, Ada, Java, Python 4. Programmation déclarative 1. 2. Programmation logique ensemble de règles et de fait Prolog Programmation fonctionnelle 8
Programmation impérative 2 types d'instructions : affectations et structures de contrôle L'affectation : opération qui permet d'attribuer une valeur à une variable. $variable = 4; (affectation d'une valeur) $variable = 4 + 3; (affectation d'une expression) $variable = 'Je suis '. $pseudo (utilisation d'une autre variable) 9
Entrées-Sorties Méthodes pour accéder aux périphériques : Clavier, souris, écran, réseau, fichiers, cartes E/S Obtenir des données afficher enregistrer des données 10
Structures de contrôles (1) programme impératif = séquence d'instructions séquence = structure de contrôle implicite qui donne l'ordre d'exécution des instructions, souvent séparées par un point-virgule ou par des retours chariots. Bloc d'instruction : encadré par {} ou par des déclarations de fonctions ou de procédures 11
Structures de contrôles (2) Tests conditionnels SI Test Instruction 1 SINON Instruction 2 FIN SI Instruction 3 12
Structures de contrôles (3) Itérateur POUR compteur DE debut à fin Instruction 1 FIN POUR Instruction 2 13
Structures de contrôles (4) Boucle "tant que" à précondition TANTQUE Test Instruction 1 FIN TANTQUE Instruction 2 14
Structures de contrôles (5) Boucle "jusqu'à ce que" à postcondition REPETE Instruction 1 JUSQUACEQUE Condition 1 Instruction 2 15
Fonctions Une fonction possède : Un nom Des paramètres Un bloc de code Une valeur de retour int max(int a, int b) { if a > b return a else return b; } 16
Quelques exemples marquants Trouver le plus grand de 3 nombres a, b, c Mauvais réflexe : se précipiter sur la solution « évidente » Si a > b alors max_temp = a sinon max_temp=b Si c > max_temp alors max = c sinon max= max_temp 17
Règle n° 1 : DIVISER POUR REGNER Réduire le problème en un problème plus simple : écrire une fonction Max Fonction max (n , m) { Si n>m alors max=n sinon max=m } La solution apparait alors simple et belle Maximum = max(a, b), c) 18
Règle n° 2 : réfléchir avant de coder Problème : Ecrire une fonction qui teste si un mot est un palindrome (mot qui peut se lire de la même manière de gauche à droite ou de droite à gauche) Exemple : radar Mauvaise méthode : se précipiter à comparer la première lettre avec la dernière, puis la seconde avec l’avant dernière, etc… Réfléchir et constater qu’un palindrome est égal à son inverse Appliquer la règle n° 1 : écrire une fonction inverse 19
Palindrome (itératif) Fonction inverse( mot ) { resultat= '' ; Pour i=1 à longueur(mot) resultat=char(mot, i)+resultat ; } Fonction palindrome( mot ) { si mot=inverse(mot) alors palindrome= vrai sinon palindrome=faux 20
Récursivité Fonction inverse( mot ) { inverse=inverse(mot(2, fin)) + mot(1); } 21
Structures de données Variables simples Types de données Nombres Entiers Réels Booléen Chaînes de caractères Types composés Langages objet : types composés + fonctions 22
Structures de données complexes Tableau de données Données accessibles par un index Réservation en mémoire → taille figée Exemples : tableau. Entier[] = {9, 4, 2, 6, 8, 7} tableau. Chaine[] = {'Bonjour', 'Au revoir', 'Salut'} Tableau. Reels[] = new float[20] 23
Structures de données complexes Files et Piles File : premier arrivé, premier sorti Pile : dernier arrivé, premier sorti Collections Liste, ensemble 24
Conclusion Un bon algorithme est comme un couteau tranchant il fait exactement ce que l’on attend de lui, avec un minimum d’efforts. L’emploi d’un mauvais algorithme pour résoudre un problème revient à essayer de couper un steak avec un tournevis : vous finirez sans doute par obtenir un résultat digeste, mais vous accomplirez beaucoup plus d’efforts que nécessaire, et le résultat aura peu de chances d’être esthétiquement satisfaisant 25
- Slides: 25