La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Notions fondamentales d’Algorithmique

Présentations similaires


Présentation au sujet: "Notions fondamentales d’Algorithmique"— Transcription de la présentation:

1 Notions fondamentales d’Algorithmique
François Bonneville - ARICIA 1

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

3 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

4 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

5 Qualité d’un algoritme
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é : en temps : nombre d’instructions élémentaires, nécessaires à sa réalisation en mémoire occupée

6 L’algorithmique : un art plus qu’une technique
Pas de méthode générale Nécessite du talent = expérience + intuition Rechercher la simplicité : le simple est toujours beau Penser universel :savoir généraliser pour pouvoir réutiliser

7 Structures Un algorithme est une boite noire composée
de mécanismes d’entrée / sortie de données de structures de données permettant de mémoriser les données du problème Variables typées Tableaux Structures chaînées par des pointeurs de structures de contrôle permettant de manipuler ces données Tests Itérations de structures fonctionnelles permettant de décomposer et de formaliser la succession des traitements

8 Types de programmation
Programmation impérative décrit les opérations en séquences d'instructions Fortran, Cobol, Basic, Pascal, C, C++, Ada, Java, Python Programmation déclarative Programmation logique ensemble de règles et de fait Prolog Programmation fonctionnelle évaluation de fonctions Lisp, Scheme, Oz

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

10 Entrées-Sorties Obtenir des données afficher enregistrer des données
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

11 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

12 Structures de contrôles (2)
Tests conditionnels SI Test Instruction 1 SINON Instruction 2 FIN SI Instruction 3

13 Structures de contrôles (3)
Itérateur POUR compteur DE debut à fin Instruction 1 FIN POUR Instruction 2

14 Structures de contrôles (4)
Boucle "tant que" à précondition TANTQUE Test Instruction 1 FIN TANTQUE Instruction 2

15 Structures de contrôles (5)
Boucle "jusqu'à ce que" à postcondition REPETE Instruction 1 JUSQUACEQUE Condition 1 Instruction 2

16 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; }

17 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

18 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(max(a,b),c) Télémaintenance / contrôle à distance / Webcam

19 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

20 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

21 Récursivité Fonction inverse( mot ) { inverse=inverse(mot(2,fin))
}

22 Structures de données Variables simples Types composés
Types de données Nombres Entiers Réels Booléen Chaînes de caractères Types composés Langages objet : types composés + fonctions

23 Structures de données complexes
Tableau de données Données accessibles par un index Réservation en mémoire → taille figée Exemples : tableauEntier[] = {9,4,2,6,8,7} tableauChaine[] = {'Bonjour','Au revoir', 'Salut'} TableauReels[] = new float[20]

24 Structures de données complexes
Files et Piles File : premier arrivé, premier sorti Pile : dernier arrivé, premier sorti Collections Liste, ensemble

25 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


Télécharger ppt "Notions fondamentales d’Algorithmique"

Présentations similaires


Annonces Google