algorithme & langage de programmation · langage de programmation philippe marquet maison pour...

21
algorithme & langage de programmation Philippe Marquet maison pour la science, 19 avril 2016

Upload: dinhdang

Post on 10-Sep-2018

256 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

algorithme &langage de

programmation

Philippe Marquetmaison pour la science, 19 avril 2016

Page 2: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

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

Page 3: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

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

Page 4: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

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

Page 5: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

procédé général

● rechercher le mot “algorithme” dans ce dictionnaire

● rechercher un mot dans un dictionnaire

Page 6: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

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

Page 7: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

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

Page 8: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

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)

Page 9: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

● problème → algorithme

● algorithme → programme

● programme → exécution sur une machine

Page 10: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

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

Page 11: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

● 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

Page 12: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

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

Page 13: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

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

Page 14: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

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

Page 15: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

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}

Page 16: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

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

Page 17: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

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

Page 18: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

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)

Page 19: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

— ?— … — !

Page 20: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

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/

Page 21: algorithme & langage de programmation · langage de programmation Philippe Marquet maison pour la science, 19 avril 2016. ... Objective-C · PHP · Python · Ruby · Scala · Simula

moreAlgorithme- complexité, coût-

Exemple instructions- séquence- affectation → notion variable-