Notions fondamentales d’Algorithmique

Slides:



Advertisements
Présentations similaires
Cours de Langage C Récursivité. Objectifs de la séance 11 Connaître la récursivité. Mesurer un temps d’exécution. 2.
Advertisements

CHAftITREI ARCHITECTURE de BASE. Modèle de Von Neumann Langage d’assemblage1 John Von Neumann est à l'origine d'un modèle de machine universelle de traitement.
ALGORITHMES LANGAGES ALGORITHMIQUE. Qu'est-ce qu'un algorithme ? Un algorithme est une méthode décrite pas à pas pour « faire quelque chose ». Hors des.
Comment utiliser le débogueur de Visual Studio /8/2015 INF145 1 Créé par Julien Galarneau Allaire, révisé par Eric Thé S.E.G.
Volée 1316 S3 Cours No 2_3 : Le nombre en 1-2H. Les fonctions du nombre  Dénombrer, énumérer, décrire une collection. Aspect cardinal  Dater, classer,
Etat de l’art et recherche bibliographique L3EEA 3ème année – 2016.
MàN Info Licence acoustique
UE2 - M22 Licence acoustique
Exercice On considère un Système de contrôle de température composé de: Capteur, ordinateur Le capteur transmit à chaque heure de la journée la température.
JAVA.
CEMTEC Comment scénariser l’éclairage d’un escalier ?
Cycle 3 Cycle 4 Pilotage du robot mBot Site scratch :
Information, Communication, Calcul
Un Algorithme , c'est Quoi ?
LES TABLEAUX EN JAVA.
« 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.
Algorithme et programmation
Semaine #1 INF130 par Frédérick Henri.
Algorithmique AU El harchaoui noureddine
Algorithmique demander jeu du pendu.
Ajouter le code dans une page html
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Communication, Calcul
L’Instruction de Test Alternatif
JAVA et POO : Notion d'héritage
Javadoc et débogueur Semaine 03 Version A16.
Les Instructions – Organigramme
Bases de programmation en Python
Principes de programmation (suite)
Initiation à la programmation impérative et algorithmique
Activités algorithmiques
Plans d’expériences: Plans factoriels
Algorithmique & Langage C
Programmation Orientée Objet I. Introduction
VI. Tri par tas (Heap sort)
Programmation Impérative II
Semaine #4 INF130 par Frédérick Henri.
Implantation d’un îlot ou d’une Chaîne de Production
Science du traitement rationnel de l'information
Exercice 8 : Déterminez l’algorithme permettant à votre calculatrice de donner les racines de n’importe quel polynôme de degré 2.
Information, Communication, Calcul
Algorithmique & Langage C IUT GEII S1 Notes de cours (deuxième partie)
Création Et Modification De La Structure De La Base De Données
Programmation en C++ C++ de base
1.2 dénombrement cours 2.
PROGRAMMATION ET ENSEIGNEMENT
Exercice PHP DEUST TMIC
Réseaux de neurones appliqués à la reconnaissance de caractères
Exercice : le jeu. Vous devez concevoir l’algorithme permettant de jouer avec votre calculatrice : elle détermine au hasard un nombre caché entier entre.
Assembleur, Compilateur et Éditeur de Liens
B.Shishedjiev - Informatique
Introduction aux microprocesseurs
De Scratch à Python : une transition douce… COMMUNICATION
03- Evaluation Access 2003 Cette évaluation comporte des QCM (1 seule réponse) et des Zones à déterminer dans des copies d’écran.
Le code de Huffman: est une méthode de compression statistique de données qui permet de réduire la longueur du codage d'un alphabet. Le code de Huffman.
Chapitre 3: Les scriptes
Le programme informatique L’algorithme Le codage
PRO1026 Programmation et enseignement
H. Wertz -- Exécution Symbolique
ENSEIGNER L’ALGORITHMIQUE ET LA PROGRAMMATION AU COLLÈGE
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
PROGRAMMATION ET ENSEIGNEMENT
Les différents modes de démarrage de Windows
Le langage C# : Partie 1.
Chapter 11: Récursivité Java Software Solutions Second Edition
Python Nicolas THIBAULT
Type Tableau Partie 1 : Vecteurs
Les données structurées et leur traitement
Séquence 1:Analyse du système d’information comptable
Transcription de la présentation:

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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]

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

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