algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la...
Transcript of algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la...
algorithme &langage de
programmation
Philippe Marquetmaison 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)
● machine○ exécuter un algorithme écrit dans un langage qui traite de l’information
4
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
3principes
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● programmeur = humain
○ exprimer un programme dans un langage de programmation
LCFI1: subq $16, %rsp movl $0, -4(%rbp) jmp L2
addl $1, -4(%rbp)L2: cmpl $4942, -4(%rbp) jle L2 call _getpid
movq (%rax), %edx
forall pixel in image { if pixel.luminosité() > 127 pixel.couleur(noir) else pixel.couleur(blanc)}
● langages de programmation● autres langages
○ langages de requêtes○ langages de description
● pléthore de langages de programmation, toujours en évolution
langage(s) informatique(s)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
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
machine
langage
programme
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○ ...
l’affectation• v := expr v = expr v ← expr
• variable expression• la valeur de la variable prend la valeur de l’expression
exemple
langage de programmationlangage 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/
moreAlgorithme- complexité, coût-
Exemple instructions- séquence- affectation → notion variable-