algorithme & langage de programmation Philippe Marquet maison pour la science, 19 avril 2016
concepts de l informatique algorithme bien avant début de l informatique langage programme exprimé dans un langage information numériser = abstraire / représenter objets réels (math = manipuler des notions abstraites) 4 machine exécuter un algorithme écrit dans un langage qui traite de l information
algorithmique algorithme méthode de résolution de problèmes entre problème trier une liste de valeurs faire des crêpes et programme mon tri quicksort en Python qsort3.py ma f.meuse recette de crêpes véganes plusieurs algorithmes possibles pour un problème plusieurs programmes possibles pour un algorithme
résolution systématique algorithme = recette applicable mécaniquement suite d'actions / de manipulations précises, élémentaires à accomplir les unes après les autres Évacuer la pensée du calcul, afin de le rendre exécutable par une machine numérique Gérard Berry décomposition décomposer chaque action en actions élémentaires pour mieux les recombiner ensuite
procédé général rechercher le mot algorithme dans ce dictionnaire rechercher un mot dans un dictionnaire
ingrédients des algorithmes - 1 domaine des mathématiques, de l informatique nombres, matrices, équations représentation numérique, symbolique mais pas que! un algorithme de tri des valeurs, des listes une recette de crêpes des ingrédients, des instruments la recherche d un mot dans un dictionnaire... des mots, des dictionnaires, leurs pages
ingrédients des algorithmes - 2 combiner les opérations faire ci puis ça introduire des branchements si ceci alors cela utiliser des boucles ou des récursions répéter ceci autant de fois traiter la 1re puis traiter le reste s il existe 3 principes
coût complexité temps nécessaire pour résoudre le problème combien d opérations coût opérations élémentaires ordre de grandeur complexité fonction de la taille N des données en entrée complexité en moyenne, dans le pire des cas linéaire, quadratique, polynomial ordre N, carré de N exponentiel comparaison d algorithmes différents algorithmes de tri naïf quadratique / optimal n log(n)
problème algorithme algorithme programme programme exécution sur une machine
ordinateur = machine programmée ordinateur = machine universelle toutes les machines informatiques ne sont pas des ordinateurs universelle programmable expliciter à la machine ce qu elle doit faire programmable programme machine instruction machine LCFI1: subq movl jmp addl L2: cmpl jle call movq programmeur = humain exprimer un programme dans un langage de programmation $16, %rsp $0, -4(%rbp) L2 $1, -4(%rbp) $4942, -4(%rbp) L2 _getpid (%rax), %edx forall pixel in image { if pixel.luminosité() > 127 pixel.couleur(noir) else pixel.couleur(blanc) }
langage(s) informatique(s) langages de programmation autres langages langages de requêtes langages de description Algol APL ASP Assembleur BASIC BCPL Shell Unix C COBOL Natural Forth Fortran Go Limbo Lua Modula-2 NQC NXC OPL Pascal Perl PHP Rust PL/I Tcl / C++ C# CoffeeScript D Delphi Eiffel Groovy Java JavaScript Lisaac Logo Objective-C PHP Python Ruby Scala Simula Smalltalk Visual Basic / Haskell Lisp Common Lisp ML OCaml Gallina F# Standard ML Opa Scheme XSLT / Clips Prolog / Ada Erlang pléthore de langages de programmation, toujours en évolution
langage de programmation mais des notions universelles, pérennes apprendre un langage de programmation écrire des programmes central en informatique (les 4 concepts) autonomie, s exerciser, créer... information algorithme programme machine langage
programme programme = suite d instructions instruction = mot / construction du langage programme est donc un texte qui respecte une syntaxe donnée les règles du langage sémantique d un programme exécution des instructions
instruction syntaxe d une instruction sucre syntaxique quels éléments sémantique d une instruction effet de l exécution de l instruction effet sur un environnement, sur un état position / orientation du robot la valeur des variables... exemple l affectation v := expr v = expr v expr variable expression la valeur de la variable prend la valeur de l expression
langage de programmation langage de programmation défini par la définition de ses instructions par la définition d un environnement exemples (avancer reculer aller-à-droite aller-à-gauche) {position robot} (avancer pivoter-droite pivoter-gauche) {position robot, orientation robot}
programme erroné bug au niveau syntaxique erreur lexicale symbole ; attendu instruction faire-demi-tour inconnue erreur syntaxique nom de variable attendu au niveau sémantique valeur erronée de l environnement, de l état robot à une position impossible valeur d une variable incorrecte mais l exécution peut / va continuer...
état notion de variable ensemble de variables : nom, valeur ensemble des valeurs de chaque variable la valeur d une variable x dépend de l état donc dépend du temps ne change pas sans qu une instruction ne soit exécutée (bien différent des variables x en mathématique)
programme suite d instructions exprimées dans un langage de programmation dont l exécution permet de passer d un état initial à l état final (à un état final)
?!
crédits )i(nterstices http://interstices.info - Qu est-ce qu un algorithme? Philippe Flajolet, Étienne Parizot - Les ingrédients des algorithmes, Gilles Dowek, Thierry Viéville et al. images - https://commons.wikimedia.org/wiki/file:shell_sorting_algorithm_color_bars.svg - https://pixabay.com/fr/dictionnaire-mots-grammaire-abc-390055/ - https://pixabay.com/fr/roue-dent%c3%a9e-engins-cg-cog-310906/
more Algorithme - complexité, coût - Exemple instructions - séquence - affectation notion variable -