Introduction ` a l’algorithmique et ` a Java
Licence 1 MASS, parcours SEMS et ESD Introduction `a Java et `a l’algorithmique
S´ebastien Verel [email protected] www.i3s.unice.fr/∼verel
´Equipe ScoBi - Universit´e Nice Sophia Antipolis
1er f´evrier 2013
Bonjour !
Maˆıtre de conf´erences depuis septembre 2006.
Recherche : Conception et ´etude d’algorithmes d’optimisation inspir´es de la biologie, ...
algorithmes : voir plus loin
optimisation : trouver les meilleures solutions possibles `a un probl`eme (transport, emploi du temps, design, r´eglage de proth`eses, conception de th´eorie cognitive,...)
bio-inspir´e :”extraire les principes actifs de syst`eme
biologique”th´eorie de l’´evolution, fouragement des fourmis, d´eplacement d’oiseaux,....
conception : cr´eer et tester de nouveaux algorithmes
´
etude : comprendre et pr´edire pourquoi cela marche, ou mieux, pourquoi ¸ca rate !
Au laboratoire I3S (universit´e/CNRS) `a Sophia-Antipolis, equipe DOLPHIN, INRIA Lille Nord Europe.
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Bonjour !
Enseignement : vous,
prj. scient. info, L2 ; intro Syst. complexes, L3 info ; r´eseaux, L3 ; syst. art. complexes, M1 info ; mod´elisation, M2 psy.
Contact : pour tout ce qui concerne l’enseignement
(corrections, absences, demande d’explication, compl´ements, orientation, ...)
[email protected] www.i3s.unice.fr/∼verel
bureau 426, Petit Valrose tel. 04.94.92.07.69.83
Bonjour !
Motivation pour cet enseignement :
enseigner les bases de la r´esolution de certains probl`emes par m´ethode algorithmique
enseigner la science informatique en tant que langue capable d’exprimer le traitement d’information
enseigner `a des ´etudiants dont le coeur de l’enseignement n’est pas seulement l’informatique
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Information sur l’enseignement
but, objectifs, etc.
cf :www.i3s.unice.fr/∼verel
D´ eroulement d’un cours
1 Pr´esentation d’une r´ealisation en processing :
Apr`es l’envoi d’une de vos r´ealisations par email (publication sur page web)
Courte pr´esentation orale en CM (1 slide) x ´etudiants
2 Le coeur du cours
3 Synth`eseorale et ´ecrite :
A la fin du cours synth`ese orale des points importants Ecriture de cette synth`ese dans le forum jalon de l’enseignement
3 ´etudiants
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Objectifs de la s´ eance 1
1 Connaˆıtre des algorithmes “historiques”
2 Connaˆıtre une d´efinition d’algorithme
3 Connaitre l’environnement Processing
4 Editer et commenter un code java avec processing
5 Savoir afficher un texte
6 Savoir afficher des formes graphiques simples Question principale du jour :
Qu’est-ce qu’un algorithme ?
Plan
1 Exemples d’algorithmes de l’histoire et du quotidien
2 Une tr`es courte histoire de l’algorithmique
3 Une courte histoire de l’informatique et des ordinateurs
4 D´efinitions d’Algorithme
5 Le langage Java
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Algorithme d’Euclide (´ el´ ements, VII, -325/-265 av. JC)
Probl`eme
Trouver une ”unit´e de mesure” commune pour deux longueurs de segmentsi.e.trouver le pgcd deux nombres entiers.
Algorithme PGCD(a,b : entier) : entier d´ebut
sib = 0 alors PGCD = a sinon
c ← reste de la division de apar b PGCD = PGCD(b,c)
fin si
Ex´ ecution de l’algorithme PGCD(72, 34)
Poura= 72 etb = 34 1. PGCD(72, 34) 4. b 6= 0
7. c = 4
8. PGCD(34, 4) 4. b 6= 0
7. c = 2 8. PGCD(4, 2) 4. b 6= 0 7. c = 0 8. PGCD(2, 0) 4. b = 0 5. PGCD = 2
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Crible d’Erastoth` ene (III
eavant J.-C.)
Probl`eme
D´eterminer tous les nombres premiers inf´erieurs `a un nombre donn´e.
Algorithme Erastothene(N : entier) : tableau d’entiers d´ebut
Ecrire sous forme de tableau les nombres entiers compris entre 2 etN.
tant que carr´e du plus petit nombre non ray´e et non marqu´e est plus petit queN faire
Marquer le plus petit nombre du tableau non ray´e et non marqu´e Rayer du tableau tous les multiples de ce nombre
fin tant que
Crible d’Erastoth` ene (III
eavant J.-C.)
Remarques
Possibilit´e d’am´elioration de l’algorithme :
−→ne pas ´ecrire les multiples de 2 et les multiples de 5.
Avantage :
plus rapide `a ´ecrire au d´ebut parce que moins de place utilis´e sur une feuille Inconv´enient :
plus long `a rayer : il faut r´efl´echir plus longtemps pour rayer les nombres ad´equates !
Version moderne de l’algorithme : Crible d’Atkin (1999)
R´ef´erence : A.O.L. Atkin, D.J. Bernstein, Prime sieves using binary quadratic forms, Math. Comp. 73 (1999), 1023-1030.
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Multiplication ´ egyptienne
Probl`eme
Calculer le produit de 2 entiers
Algorithme MultiplicationEgyptienne(a,b: entier) : entier d´ebut
Ecrire la table des puissances de 2 inf´erieures ou ´egales au nombrea Ecrire la table des doubles du nombre b
tant que le nombrean’est pas nulfaire Cocher la plus grande puissance de 2 ≤a Soutraire cette puissance de 2 du nombre a fin tant que
additionner les doubles du nombrebcorrespond aux puissances de 2 coch´es pr´ec´edemment
Tour de magie !
Choisissez un nombre entre 1 et 15.
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Tour de magie !
9 14 10
15 8 13
12 11
Tour de magie !
15 3 11
13 9 5
7 1
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Tour de magie !
6 14 13
12 4 5
15 7
Tour de magie !
2 3 6
7 10 11
14 15
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Tour de magie !
Quelle est la couleur de votre nombre ?
...
Recherche d’un mot dans un dictionnaire
It´erativement
Algorithme rechercheIter(cible : mot) : liste de mots d´ebut
Lire premier mot du dictionnaire
tant quemot lu n’est pas le mot cible faire Lire le mot suivant
fin tant que
liste de mots : d´efinition du mot lu fin
On trouve le mot correct mais l’algorihme n’est pas tr`es efficace...
en moyenne, N/2 mots lus avec N la taille du dictionnnaire Il faut utiliser l’ordre lexicographique du dictionnaire et la m´ethode dichotomique (diviser pour r´egner)
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Recherche d’un mot dans un dictionnaire
par dichotomie
Algorithme rechercheDicho(cible : mot) : liste de mots d´ebut
premier←premier mot du dictionnaire dernier←dernier mot du dictionnaire Lire le mot m´edian entre premier et dernier tant quemot lu n’est pas le mot ciblefaire
simot cible est avant le mot lualors dernier←mot lu
sinon
premier←mot lu fin si
Lire le mot m´edian entre premier et dernier fin tant que
liste de mots : d´efinition du mot lu
Indice de masse corporelle
Probl`eme
Donner un degr´e de corpulence bas´e sur l’indice de masse corporelle
Algorithme degreMasseCorporelle(T : nombre r´eel, M : nombre r´eel) : d´ebut
i←M/T2 sii<20alors
ecrire( ”poids inf´erieur `a la normale”) sinon
si i<25alors ecrire( ”poids normal”) sinon
si i<30 alors
ecrire( ”surcharge pond´erale”) sinon
si i<40 alors ecrire( ”adiposit´e”) sinon
ecrire( ”ob´esit´e””) fin si
fin si fin si fin si fin
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Bouilloire
Probl`eme
Concevoir une bouilloire pour faire bouillir de l’eau Je suppose qu’une bouilloire (´electrique) peut :
connaitre la temp´erature de l’eau T
connaitre et modifier la position de son interrupteur chauffer
Algorithme bouilloire( ) : d´ebut
tant quela prise est branch´eefaire
tant queinterrupteur est ON et T <100faire Chauffer
fin tant que
Recettes de cuisine
Probl`eme
Convevoir un (bon) gˆateau
Ingr´edients (pour 6 personnes) :
- 1 pˆate bris´ee - 150 g de sucre - 100 g de beurre fondu - 3 oeufs
- le jus de deux citrons
Pr´eparation :
. Pr´echauffer le four `a 200˚C.
. Abaisser la pˆate bris´ee.
. Battre les oeufs avec le sucre en poudre jusqu’`a l’obtention d’un m´elange mousseux.
. Ajouter le jus de citron.
. Ajouter le beurre fondu.
. Enfourner et laisser cuire environ 30 mn.
. La pr´eparation doit dorer.
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Vos algorithmes quotidiens
En connaissez-vous d’autres ?
Vieille histoire
Descriptions exhaustives d’algorithmes :
d`es l’´epoque des Babyloniens (de -2000 av JC `a -300 av JC), Pour des calculs concernant le commerce et les impˆots.
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Al-Khwarizmi (n´ e vers 780 - mort vers 850)
algorithme: vient du nom du math´ematicien perse du IXi`eme si`ecle Abu Djafar Muhammad ibn Musa al-Khwarizmi
mot algorisme : `a l’origine uniquement aux r`egles d’arithm´etique utilisant les chiffres indo-arabes num´erals Traduction en latin europ´een du nom Al-Khwarizmi’s en
“algorithme” au XVIIIi`eme si`ecle.
Evolution pour inclure toutes les proc´edures d´efinies pour r´esoudre un probl`eme ou accomplir une tˆache.
Quelques dates jusqu’en 1946
principale source : http ://histoire.info.online.fr/prehistoire.html
-3000 : P´eriode de l’empereur Chinois Fou-Hi dont le symbole magique, l’octogone `a trigramme contient les 8 premiers nombres repr´esent´es sous forme binaire par des traits interrompus ou non : 000 001 010 011 etc...
-500 : Apparition au Moyen Orient du premier ”outil” de calcul : l’abaque et le boulier.
1580 : John NAPIER invente les logarithmes.
1623 : Wilhelm Schickard invente ce qu’il appelle une horloge calculante. Elle calculait m´ecaniquement gr`ace `a des roues dent´ees et pouvait r´ealiser additions, soustractions,
multiplications et m´emorisation des r´esultats interm´ediaires.
La machine a rapidement sombr´e dans l’oubli car son inventeur habitait en Allemagne du Sud dans une r´egion ravag´ee par la guerre de 30 ans.
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Quelques dates
1632 : L’Anglais Oughtred invente la R`egle `a calcul.
1642 : Pascal met au point, pour aider son p`ere collecteur des impˆots `a Rouen, la Pascaline qui pouvait traiter les additions et les soustractions.
1679 : Leibnitz d´ecouvre et met au point une arithm´etique binaire (et analyse les octogrammes de Fou-Hi). Il invente aussi en 1694 une machine `a calculer d´eriv´ee de la Pascaline mais capable de traiter les multiplications et divisions.
Quelques dates
1833 : Babbage : machine `a diff´erences puis une machine analytique qui contient les concepts de ce que sera
l’ordinateur moderne : unit´e de calcul, m´emoire, registre et entr´ee des donn´ees par carte perfor´ee.
1836 - 1838 : Les Anglais Edward Davy, William Looke et Charles Wheastone vont inventer et mettre au point le t´el´egraphe. Le peintre Am´ericain Samuel Morse invente le code qui porte son nom
1840 : Collaboratrice de Babbage, Ada Lovelace,
math´ematicienne, d´efinit le principe des it´erations successives dans l’ex´ecution d’une op´eration.
Cr´eatrice du mot algorithme.
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Quelques dates
1876 : L’Am´ericain Graham Bell invente le t´el´ephone et fonde la compagnie Bell Telephone Company.
1884 : Herman Hollerith cr´ee une tabulatrice `a cartes perfor´ees (inspir´ee des m´etiers `a tisser de Jacquard) pour r´ealiser le recensement Am´ericain de 1890.
premi`ere machine `a traiter l’information.
1924 : La firme cr´ee par Herman Hollerith en 1896, Tabulating Machine Corporation, est renomm´ee en International Business Machine ou IBM.
1935 : IBM commercialise l’IBM 601, un calculateur `a relais utilisant des cartes perfor´ees capable de r´ealiser une
multiplication en une seconde.
Quelques dates
1937 :Alan Turing publie un document sur les nombres calculables. Il r´esolvait des probl`emes math´ematiques en utilisant une sorte d’ordinateur logique tr`es simple appel´e depuis Machine de Turing.
1938 : Th`ese de Shannon qui le premier fait le parall`ele entre les circuits ´electriques et l’alg`ebre Bool´eenne. d´efinition du chiffre binaire : bit (BInary digiT).
1938 : Cr´eation du Versuchmodell 1 ou Z1 par Konrad Zuse.
Il le met au point dans le salon de ses parents `a Berlin ! Il s’agit d’un ordinateur binaire programmable mais m´ecanique.
Il ne fonctionna jamais vraiment correctement.
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Quelques dates
1939 : Konrad Zuse et un de ses amis Helmut Schreyer : deuxi`eme ordinateur, le Z2
remplacement partie des pi`eces m´ecaniques du Z1 par relais
´
electrom´ecaniques de t´el´ephone rachet´es d’occasion.
1940 : Pour d´ecrypter les messages de l’arm´ee Allemande, les Anglais mettent au point sur le site de Bletchley Park les calculateurs Robinson et Colossus sous la direction du math´ematicien Alan Turing.
1941 : Cr´eation du calculateur binaire ABC par John Atanasoff et Clifford Berry. La machine utilise des lampes et comporte une m´emoire et des circuits logiques.
m´emoire : 60 mots de 50 bits, fr´equence 60 Hz, 1 addition / s.
Quelques dates
1941 : Konrad Zuse, mobilis´e dans les usines d’aviation Henschel : Z3 (programme enregistr´e).
premier v´eritable ordinateur.
2600 relais, console pour l’op´erateur et d’un lecteur de bandes contenant les instructions `a ex´ecuter. stockage : 64 nombres de 22 bits.
4 additions par seconde et 1 multiplication en 4 secondes.
1943 : Cr´eation du ASCC Mark I (Automatic
Sequence-Controlled Calculator Mark I) `a Harvard par Howard Aiken et son ´equipe (avec le soutien d’IBM).
3000 relais, 800 km de cables
3 op´erations sur 23 chiffres par seconde.
Pas de sous programme, pas de branchement.
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Quelques dates
1945 : Un insecte coinc´e dans les circuits bloque le
fonctionnement du calculateur Mark I. La math´ematicienne Grace Murray Hopper invente le mot BUG...
1945 :John Von Neuman : description d’ordinateur `a programme enregistr´e
EDVAC (Electronic Discrete Variable Automatic Computer).
1946 : Cr´eation de l’ENIAC (Electronic Numerical Integrator and Computer) par P. Eckert et J. Mauchly. La
programmation de ce calculateur s’effectue en recablant entre eux, ses diff´erents ´el´ements.
19000 tubes, 30 tonnes, 72m2 et consomme 140 kilowatts.
Horloge : 100 KHz. Vitesse : environ 330 multiplications par
G´ en´ erations d’ordinateur
D´ecembre 1947 : Invention du transistor par William Bradford Shockley, Walter H. Brattain et John Bardeen dans les laboratoires de Bell Telephone.
−→ Deuxi`eme g´en´eration d’ordinateur
1958 : D´emonstration du premier circuit int´egr´e cr´ee par Texas Instruments.
−→ troisi`eme g´en´eration d’ordinateur
1965 : Gordon Moore ´ecrit que la complexit´e des circuits int´egr´es doublera tous les ans : ”Loi de Moore”.
1971 : l’`ere du microprocesseur (INTEL)
−→ Quatri`eme g´en´eration
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
D´ efinition d’Ordinateur
En 1955, ”ordinateur” : traduction J. Perret de ” electronic data processing machine ” ( machine ´electronique de traitement des donn´ees ).
−→ce que beaucoups de langues nomme “calculateur” (computer)
D´efinition Acad´emie fran¸caise de 1967
Une machine automatique qui permet d’effectuer, dans le cadre de programmes de structure pr´e-´etablis, des ensembles d’op´erations arithm´etiques et logiques `a des fins scientifiques, administratives ou comptables.
D´ efinition informatique
En 1962, Philippe Dreyfus employa le mot informatique pour d´efinir letraitement automatique de l’information.
Maintenant ce mot est employ´e dans beaucoup de langues (hors anglaise)
−→Informatique : compos´e des 2 motsinformation et automatique.
D´efinition Acad´emie francaise de 1967 (officialisation)
Science du traitement rationnel, notamment `a l’aide de machines automatiques, de l’information, consid´er´ee comme le support de connaissances dans les domaines scientifique, ´economique et social.
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Retour sur les exemples
Quels sont les points communs entre tous ces “algorithmes” ? algorithme d’Euclide
algorithme d’Erastoth`ene multiplication ´egyptienne degr´e de masse corporelle recette de cuisine
Caract´ eristiques d’algorithme
R´esolution d’un probl`eme
algorithme d’Euclide :
Trouver une unit´e commune `a deux longueurs algorithme d’Erastoth`ene :
Trouver les nombres premiers plus petit que N Multiplication ´egyptienne :
Calculer le produit de deux nombres degr´e de masse corporelle :
Donner le degr´e de corpulence bas´e sur l’IMC recette de cuisine :
Confectionner le gˆateaux de vos rˆeves
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Caract´ eristiques d’algorithme
R´esolution de mani`ere op´eratoire
algorithme d’Euclide :
“Calculer le quotient de a par b”
algorithme d’Erastoth`ene :
“rayer les multiples de ...”
Multiplication ´egyptienne :
“a←E[a/2]”
degr´e de masse corporelle :
“Si i ¡ 25 alors ...”
recette de cuisine :
“M´elanger les oeufs avec ...”
Caract´ eristiques d’algorithme
Enonc´e dans un langage pr´ecis
Langage le plus formelle : s´emantique op´erationel, axiomatique, ...
algorithme d’Euclide :
“quotient”
algorithme d’Erastoth`ene :
“rayer les multiples de ...”
Multiplication ´egyptienne :
“a←E[a/2]”
degr´e de masse corporelle :
“Si i ¡ 25 alors ...”
recette de cuisine :
“M´elanger les oeufs avec ...”
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Caract´ eristiques d’algorithme
Donn´ees / informations en entr´ee
algorithme d’Euclide : les deux nombres a et b algorithme d’Erastoth`ene : les nombres entiers
Multiplication ´egyptienne : les deux op´erandes
degr´e de masse corporelle : le poids et la taille
recette de cuisine : Les ingr´edients
Caract´ eristiques d’algorithme
Donn´ees / informations en sortie
algorithme d’Euclide : le PGCD
algorithme d’Erastoth`ene :
les nombres premiers plus petits que N Multiplication ´egyptienne :
le produit des nombres degr´e de masse corporelle : un classement
recette de cuisine : un gˆateau au citron !
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Caract´ eristiques d’algorithme
S’arrˆete en temps fini
algorithme d’Euclide : au plus max(a,b) ? algorithme d’Erastoth`ene : au plus √
NN?
Multiplication ´egyptienne : au plus log(a) ?
degr´e de masse corporelle : 5 ou 6 op´erations
recette de cuisine : 2h...
Tentatives de d´ efinitions
d´efinition un peu courte
Un algorithme ´enonce une r´esolution sous la forme d’une s´erie d’op´erations `a effectuer.
d´efinition (dictionnaire canadien)
Formule ou ensemble d’´etapes qu’on applique pour r´esoudre un probl`eme en particulier. Un algorithme doit avoir un ensemble de r`egles sans ambigu¨ıt´e et un point limite bien d´efini
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Tentatives de d´ efinitions
d´efinition (Wikipedia 2010)
Un algorithme est un moyen pour un humain de pr´esenter la r´esolution par calcul d’un probl`eme `a une autre personne physique (un autre humain) ou virtuelle (un calculateur). En effet, un algorithme est un ´enonc´e dans un langage bien d´efini d’une suite d’op´erations permettant de r´esoudre par calcul un probl`eme.
d´efinition satisfaisante
Un algorithme est un ensemble fini d’instructions correctement d´efinis qui a pour but la r´esolution d’une tˆache `a partir d’un ´etat initial et se terminant sur un ´etat final bien d´efini.
Tentatives de d´ efinitions, une derni` ere
D´efinition (”complexit´e et algorithmique avanc´ee”, Ivan Lavall´e) Un algorithme y est vu comme une suite finie de r´egles `a appliquer dans un ordre d´etermin´e `a un nombre fini de donnn´ees pour arriver, en un nombre fini d’´etapes, `a un certain r´esultat, et cela ind´ependamment des donn´ees.
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Vers une d´ efinition formelle
−→Il n’existe pas une d´efinition formelle admise par tous.
Premi`eres formalisations :
Alan Turing (1936) : un algorithme est ce qui ex´ecutable `a partir d’une machine de Turing.
Alonzo Church (lambda calculus) : tout calcul est r´ealisable `a l’aide d’un algorithme ex´ecuter par un ordinateur (avec suffisamment de temps et d’espace)
ApplicationSSSS
Cryptographie (paiement s´ecuris´e, t´el´ephone portable, connections internet, etc)
Compression d’images (dvd, mpeg4, etc), de sons (mp3, etc) internet (moteur de recherche,...)
gps (tracer de route, ...)
organiser son temps, son travail jeux
probl`emes industriels (conception automatis´e ou assister...) la cuisine facile !
r´esolution d’´equations (communications num´eriques, ...) intelligence artificielle (optimisation, apprentissage automatique, ...)
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Grands domaines d’applications
Impˆots, l’administration public, etc.
Commerce, la finance, l’administration priv´ee, etc.
Calcul scientifique
Loisirs : musique, vid´eo, jeux, etc.
Communication : r´eseaux internet, mobile, communication satellite, etc.
Langages de programmation
Un algorithme est un ´enonc´e g´en´erale qui peut s’exprimer dans un grand nombre de langages de programmation
Lorsqu’un algorithme est exprim´e dans un certain langage particulier,
on dit que l’onimpl´emente
ou que l’on codeun algorithme dans ce langage.
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Classification des langages de programmation
On distingue plusieurs type de langage de programmation selon leurs propri´et´es :
langages imp´eratifs :
fortran, basic, pascal, bash, C, maple, php, javascript langage fonctionnel :
lisp, scheme, caml langage orient´e objets : eiffel, C++, java, php5 ....
Les langages actuels tendent `a combiner toutes les approches de
Langage Java et syst` eme Processing
Langage Java : langage orient´e Objet Syst`eme Processing :
simplification de Java,
interface entre utilisateur et java, Environnement de programmation
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Syst` eme Processing
Cr´e´e au MIT (Boston, USA) pour introduire les concepts de base de la programmation dans le contexte des arts visuels (artistes, Web).
Id´ee : immersion rapide dans les programmes graphiques, l’Art Num´erique et la simulation d’exp´eriences physiques !...
Environnement graphique mis en avant
Installation, configuration
Un cours assez complet orient´e ”non informaticien” : http://www.ecole-art-aix.fr/rubrique81.html Le cours 02 concernent l’installation
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Affichage de texte
Sans retour `a la ligne : print("You know what ?");
Avec retour `a la ligne : println("I’m happy.");
Attention !les instructions se terminent par un point virgule ;
Ecrire un commentaire
Les commentaires sont des lignes non interpr´et´ees par l’ordinateur
Importance capitale pour la lisibilit´e de votre programme Importance capitale pour communiquer comment fonctionne votre programme
Je Veuxet j’Exige des commentaires !
// dessin principal // fin de la boucle
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Graphisme : couleur de fond
background(r, v, b) ;
o`u r, v et b sont des entiers entre 0 et 255 donnant le niveau de rouge, vert et bleu.
Graphisme : Dimension de la fenˆ etre
pixel (picture element) : petit rectangle ´el´ementaire assimil´e `a un ”point”
un ´ecran 1024x768 : signifie qu’il y a 1024 pixels en largeur et 768 pixels en hauteur
R´eglage de la taille de la fenˆetre graphique : size(largeur, hauteur) ;
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Graphisme en vrac
point(x, y) ;
line(x1, y1, x2, y2) ;
rect(x, y, largeur, hauteur) ; ellipse(x, y, largeur, hauteur) ;
Synth` ese du jour
Aujourd’hui nous ´ecoutons...
...
Exemples d’algorithmes de l’histoire et du quotidien Une tr`es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´efinitions d’Algorithme Le langage Java
Travail pour la semaine prochaine
Lire et apprendre le cours Pr´eparer le TP
Combien d’´etag`eres sont consacr´ees `a la programmation en JAVA `a la BU ?
Choisir un (des) livre(s) qui vous semble en rapport avec cet enseignement
Trouver au moins un site web en rapport avec l’enseignement Installer Processing sur votre ordinateur si vous en avez un