inf120 - algo dut src1 - cours 1
DESCRIPTION
Cours du 23 septembre 2011IUT de Marne-la-Vallée, département SRC, 1° annéeTRANSCRIPT
![Page 1: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/1.jpg)
DUT SRC – IUT de Marne-la-Vallée23/09/2011
INF120 - Algorithmique
Cours 1Introduction aux algorithmes
Philippe Gambette
![Page 2: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/2.jpg)
• Contact
- Courriel : [email protected] (INF120 doit apparaître dans le sujet du courriel)- Avant ou après le cours
• Matériel
- Ordinateur portable : interdit pendant les TP, a priori inutile en cours et TD.- Pas de téléphone portable pendant cours/TD/TP
• Déroulement des enseignements
- Page web du cours : http://tinyurl.com/INF120-2011S1- En général, distribution de notes de cours à compléter- Pause (méritée) de 5 minutes entre deux heures de TD- Passages au tableau pour les corrections d'exercices en TD
Organisation pratique
![Page 3: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/3.jpg)
• Notes et devoirs
- Interrogations QCM en début de cours ou TD (signalement des absences pour rattrapage, voir intranet)- Un devoir maison
• Note finale
- Prévision : environ 2/3 “compétences”, environ 1/3 “motivation”- Compétences : 2/3 devoir final (11 janvier 2012), 1/3 QCM- Motivation : devoir maison, exercices, TP
• Exercices supplémentaires d'entraînement
- Sur demande, par courriel- Sur demande, possibilité d'organiser une séance d'exercices ou de préparation au devoir final.
Organisation pratique
![Page 4: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/4.jpg)
• Le livre de Java premier langage, d'A. Tasso
• http://www.pise.info/algo/introduction.htm
• Cours INF120 de J.-G. Luque
• http://serecom.univ-tln.fr/cours/index.php/Algorithmie
• Cours de J. Henriet : http://julienhenriet.olympe-network.com/Algo.html
• http://xkcd.com, http://xkcd.free.fr
Sources
![Page 5: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/5.jpg)
• Introduction aux algorithmes
• Variables et affectation, type et codage des données
• Les tests et la logique
• Les boucles et leur terminaison, les tableaux
• Les entrées-sorties et les fonctions
Plan des cours du semestre
![Page 6: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/6.jpg)
• Introduction aux algorithmes
• A quoi sert un algorithme ?
• Enjeux de l'algorithmique
• Algorithme et programme
• Composants d'un algorithme
• Variables et affectation
Plan du cours 1 – Introduction aux algorithmes
![Page 7: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/7.jpg)
A quoi sert un algorithme ?
• À décrire les étapes de résolution d'un problème :
→ de façon structurée et compacte
→ à partir d'opérations de base
→ indépendamment d'un langage de programmation
![Page 8: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/8.jpg)
A quoi sert un algorithme ?
• À décrire les étapes de résolution d'un problème :
→ de façon structurée et compacte
→ à partir d'opérations de base
→ indépendamment d'un langage de programmation
“étapes” aussi appelées “pas de l'algorithme”
![Page 9: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/9.jpg)
A quoi sert un algorithme ?
• À décrire les étapes de résolution d'un problème :
→ de façon structurée et compacte
→ à partir d'opérations de base
→ indépendamment d'un langage de programmation
Les données du problème en entrée
Le résultat de sa résolution en sortie
![Page 10: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/10.jpg)
A quoi sert un algorithme ?
• À décrire les étapes de résolution d'un problème :
→ de façon structurée et compacte
→ à partir d'opérations de base
→ indépendamment d'un langage de programmation
Méthode de résolution d'un problème :
facile à comprendre
facile à transmettre
![Page 11: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/11.jpg)
A quoi sert un algorithme ?
• À décrire les étapes de résolution d'un problème :
→ de façon structurée et compacte
→ à partir d'opérations de base
→ indépendamment d'un langage de programmation
Méthode de résolution d'un problème :
adaptée aux moyens à disposition
adaptée aux connaissances de celui qui l'utilise
![Page 12: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/12.jpg)
A quoi sert un algorithme ?
• À décrire les étapes de résolution d'un problème :
→ de façon structurée et compacte
→ à partir d'opérations de base
→ indépendamment d'un langage de programmation
Méthode de résolution d'un problème :
adaptée pour des problèmes qui se traitent sans ordinateur
compréhensible sans apprendre un langage de programmation
![Page 13: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/13.jpg)
A quoi sert un algorithme ?
• À décrire les étapes de résolution d'un problème :
→ de façon structurée et compacte
→ à partir d'opérations de base
→ indépendamment d'un langage de programmation
Euclide & Ada Lovelace : WikipediaAl-Khuwārizmī : Flickr (Heathen Dawn)
Algorithmes sans ordinateurs :- Euclide (vers -300) : calcul du PGCD de 2 nombres
La “minute culturelle”
![Page 14: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/14.jpg)
A quoi sert un algorithme ?
• À décrire les étapes de résolution d'un problème :
→ de façon structurée et compacte
→ à partir d'opérations de base
→ indépendamment d'un langage de programmation
Euclide & Ada Lovelace : WikipediaAl-Khuwārizmī : Flickr (Heathen Dawn)
Algorithmes sans ordinateurs :- Euclide (vers -300) : calcul du PGCD de 2 nombres- Al-Khuwārizmī (825) : résolution d'équations
La “minute culturelle”
![Page 15: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/15.jpg)
A quoi sert un algorithme ?
• À décrire les étapes de résolution d'un problème :
→ de façon structurée et compacte
→ à partir d'opérations de base
→ indépendamment d'un langage de programmation
Euclide & Ada Lovelace : WikipediaAl-Khuwārizmī : Flickr (Heathen Dawn)
Algorithmes sans ordinateurs :- Euclide (vers -300) : calcul du PGCD de 2 nombres- Al-Khuwārizmī (825) : résolution d'équations- Ada Lovelace (1842) : calcul des nombresde Bernoulli sur la machine analytique deCharles Babbage
La “minute culturelle”
![Page 16: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/16.jpg)
La recette des crêpes
http://www.crepes-recette.com
![Page 17: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/17.jpg)
La recette des crêpes
http://www.crepes-recette.com
![Page 18: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/18.jpg)
La recette des crêpes
http://www.crepes-recette.com
![Page 19: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/19.jpg)
L'“algorithme des crêpes”
Ingrédients : beurre, oeufs, sachets de sucre vanillé, farine, lait, sel
Récipients : saladier, verre mesureur, poêle, assiette
Opérations de base : mettre dans un récipient, mélanger, attendre pendant … minutes, retourner, laisser cuire pendant ... minutes
Algorithme des crêpes :
Mettre 4 oeufs dans le saladierMettre 1 sachet de sucre vanillé dans le saladierMettre 250 g de farine dans le verre mesureurMettre le contenu du verre mesureur dans le saladierMettre 0,5 litre de lait dans le verre mesureurMettre le contenu du verre mesureur dans le saladierMettre 50 grammes de beurre dans la poêleLaisser cuire la poêle pendant 1 minuteMettre le contenu de la poêle dans le saladierMélanger le contenu du saladierAttendre pendant 60 minutesMettre 5 grammes de beurre dans la poêle
Laisser cuire la poêle pendant 0.5 minuteTant que le saladier n'est pas vide : Mettre 5 cL du contenu du saladier dans le verre mesureur Mettre le contenu du verre mesureur dans la poêle Laisser cuire la poêle pendant 2 minutes Retourner le contenu de la poêle Laisser cuire la poêle pendant 2 minutes Mettre le contenu de la poêle dans l'assiette
![Page 20: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/20.jpg)
Organigramme de la recette des crêpes
saladier ← 4 oeufs
saladier ← saladier +sucre vanillé
verre ← 250g farine
saladier ← saladier +verre
verre ← 0.5L lait
saladier ← saladier +verre
poêle ← 50g beurre
cuire(poêle, 1 min) saladier ← saladier +poêle
mélanger(saladier)
attendre(60 min)
poêle ← 5g beurre
cuire(poêle, 0.5 min)
saladier vide ?
Bon appétit ! verre ← 5cL saladier poêle ← verre
cuire(poêle, 2 min)
retourner(poêle)
cuire(poêle, 2 min)
assiette ← poêle
oui non
Crêpes !
ingrédientsrécipients
boucle
![Page 21: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/21.jpg)
Organigramme de résolution de tout problème logiciel
La “minute xkcd”Chers parents, grands parents, collègues, et autres non-informaticiens variés.Nous ne savons pas tout faire dans tous les logiciels comme par magie.Quand on vous aide, en général on ne fait que ça :
Merci d'imprimer cet organigramme et de le scotcher à côté de votre écran. Félicitations, vous êtes maintenant l'expert du coin en informatique !
http://xkcd.com/627http://xkcd.free.fr?id=627
![Page 22: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/22.jpg)
Enjeux de l'algorithmique - terminaison
L'algorithme se termine-t-il en un temps fini ?
Preuve de terminaison :
- critère qui diminue à chaque exécution d'une boucle de l'algorithme
![Page 23: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/23.jpg)
Enjeux de l'algorithmique - terminaison
L'algorithme se termine-t-il en un temps fini ?
Preuve de terminaison :
- critère qui diminue à chaque exécution d'une boucle de l'algorithme
→ quantité de pâte à crêpes
Laisser cuire la poêle pendant 0.5 minuteTant que le saladier n'est pas vide : Mettre 5 cL du contenu du saladier dans le verre mesureur Mettre le contenu du verre mesureur dans la poêle Laisser cuire la poêle pendant 2 minutes Retourner le contenu de la poêle Laisser cuire la poêle pendant 2 minutes Mettre le contenu de la poêle dans l'assiette
Algorithme des crêpes :
Mettre 4 oeufs dans le saladierMettre 1 sachet de sucre vanillé dans le saladierMettre 250 g de farine dans le verre mesureurMettre le contenu du verre mesureur dans le saladierMettre 0,5 litre de lait dans le verre mesureurMettre le contenu du verre mesureur dans le saladierMettre 50 grammes de beurre dans la poêleLaisser cuire la poêle pendant 1 minuteMettre le contenu de la poêle dans le saladierMélanger le contenu du saladierAttendre pendant 60 minutesMettre 5 grammes de beurre dans la poêle
![Page 24: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/24.jpg)
Enjeux de l'algorithmique - terminaison
L'algorithme se termine-t-il en un temps fini ?
Preuve de terminaison :
- critère qui diminue à chaque exécution d'une boucle de l'algorithme
→ quantité de pâte à crêpes
Laisser cuire la poêle pendant 0.5 minuteTant que le saladier n'est pas vide : Mettre 5 cL du contenu du saladier dans le verre mesureur Mettre le contenu du verre mesureur dans la poêle Laisser cuire la poêle pendant 2 minutes Retourner le contenu de la poêle Laisser cuire la poêle pendant 2 minutes Mettre le contenu de la poêle dans l'assiette
Algorithme des crêpes :
Mettre 4 oeufs dans le saladierMettre 1 sachet de sucre vanillé dans le saladierMettre 250 g de farine dans le verre mesureurMettre le contenu du verre mesureur dans le saladierMettre 0,5 litre de lait dans le verre mesureurMettre le contenu du verre mesureur dans le saladierMettre 50 grammes de beurre dans la poêleLaisser cuire la poêle pendant 1 minuteMettre le contenu de la poêle dans le saladierMélanger le contenu du saladierAttendre pendant 60 minutesMettre 5 grammes de beurre dans la poêle
boucle
![Page 25: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/25.jpg)
Enjeux de l'algorithmique - terminaison
L'algorithme se termine-t-il en un temps fini ?
Preuve de terminaison :
- critère qui diminue à chaque exécution d'une boucle de l'algorithme
- suite à valeurs entières positives, strictement décroissante à chaque exécution d'une boucle de l'algorithme
La “minute mathématique”
Valeurs entières :
au pas i,critère = 100/i
critère
ipas de l'algorithme1 2 3
100
50
10
4 5
![Page 26: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/26.jpg)
Enjeux de l'algorithmique - terminaison
L'algorithme se termine-t-il en un temps fini ?
Preuve de terminaison :
- critère qui diminue à chaque exécution d'une boucle de l'algorithme
- suite à valeurs entières positives, strictement décroissante à chaque exécution d'une boucle de l'algorithme
La “minute mathématique”
Valeurs entières :
au pas i,critère = 100/i
ne termine pas !
critère
ipas de l'algorithme1 2 3
100
50
10
4 5
![Page 27: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/27.jpg)
Enjeux de l'algorithmique - terminaison
L'algorithme se termine-t-il en un temps fini ?
Preuve de terminaison :
- critère qui diminue à chaque exécution d'une boucle de l'algorithme
- suite à valeurs entières positives, strictement décroissante à chaque exécution d'une boucle de l'algorithme
La “minute mathématique”
Valeurs positives :
au pas i,critère = 5-i
critère
ipas de l'algorithme1 2 3
0 4
4
1
3 2
5
![Page 28: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/28.jpg)
Enjeux de l'algorithmique - terminaison
L'algorithme se termine-t-il en un temps fini ?
Preuve de terminaison :
- critère qui diminue à chaque exécution d'une boucle de l'algorithme
- suite à valeurs entières positives, strictement décroissante à chaque exécution d'une boucle de l'algorithme
La “minute mathématique”
Valeurs positives :
au pas i,critère = 5-i
critère
ipas de l'algorithme1 2 3
0 4
4
1
3 2
5
ne termine pas !
![Page 29: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/29.jpg)
Enjeux de l'algorithmique - terminaison
L'algorithme se termine-t-il en un temps fini ?
Preuve de terminaison :
- critère qui diminue à chaque exécution d'une boucle de l'algorithme
- suite à valeurs entières positives, strictement décroissante à chaque exécution d'une boucle de l'algorithme
La “minute mathématique”
Strictement décroissante :
au pas i,critère =• 5-i si i<5• 1 sinon
critère
ipas de l'algorithme1 2 3
0 4
4
1
3 2
5
![Page 30: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/30.jpg)
Enjeux de l'algorithmique - terminaison
L'algorithme se termine-t-il en un temps fini ?
Preuve de terminaison :
- critère qui diminue à chaque exécution d'une boucle de l'algorithme
- suite à valeurs entières positives, strictement décroissante à chaque exécution d'une boucle de l'algorithme
La “minute mathématique”
Strictement décroissante :
au pas i,critère =• 5-i si i<5• 1 sinon
critère
ipas de l'algorithme1 2 3
0 4
4
1
3 2
5
ne termine pas !
![Page 31: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/31.jpg)
Enjeux de l'algorithmique - terminaison
L'algorithme se termine-t-il en un temps fini ?
Preuve de terminaison :
- critère qui diminue à chaque exécution d'une boucle de l'algorithme
- suite à valeurs entières positives, strictement décroissante à chaque exécution d'une boucle de l'algorithme
La “minute mathématique”
Théorème :
Toute suite à valeurs entières positives, strictement décroissante, ne peut prendre qu'un nombre fini de valeurs.
Application :Trouver la suite qui convient pour prouver la terminaison d'un algorithme.
![Page 32: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/32.jpg)
Enjeux de l'algorithmique - terminaison
La “minute votes SMS”
Problème : aller en voiture de Châtelet à la Tour Montparnasse
![Page 33: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/33.jpg)
Enjeux de l'algorithmique - terminaison
La “minute votes SMS”
Problème : aller en voiture de Châtelet à la Tour MontparnasseAlgorithme “du repère visuel” :A tout instant on sait où se trouve la Tour Montparnasse
→ prendre la rue qui s'en rapproche le plus
![Page 34: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/34.jpg)
Enjeux de l'algorithmique - terminaison
La “minute votes SMS”
Problème : aller en voiture de Châtelet à la Tour MontparnasseAlgorithme “du repère visuel” :A tout instant on sait où se trouve la Tour Montparnasse
→ prendre la rue qui s'en rapproche le plus
algorithme de la famille des algorithmes gloutons
toujours choisir le profit maximum !
![Page 35: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/35.jpg)
Enjeux de l'algorithmique - terminaison
La “minute votes SMS”
Problème : aller en voiture de Châtelet à la Tour MontparnasseAlgorithme “du repère visuel” :A tout instant on sait où se trouve la Tour Montparnasse
→ prendre la rue qui s'en rapproche le plus
Question : l'algorithme “du repère visuel” termine ?
![Page 36: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/36.jpg)
Enjeux de l'algorithmique - terminaison
La “minute votes SMS”
Problème : aller en voiture de Châtelet à la Tour MontparnasseAlgorithme “du repère visuel” :A tout instant on sait où se trouve la Tour Montparnasse
→ prendre la rue qui s'en rapproche le plus
Question : l'algorithme “du repère visuel” termine ?
distance (en millimètres, au mm près) entre la position actuelle et la Tour Montparnasse, entière, positive, strictement décroissante ?
Illustration : http://www.tourmontparnasse56.com
![Page 37: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/37.jpg)
distance (en millimètres, au mm près) entre la position actuelle et la Tour Montparnasse, entière, positive, strictement décroissante ?
Enjeux de l'algorithmique - terminaison
La “minute votes SMS”
Problème : aller en voiture de Châtelet à la Tour MontparnasseAlgorithme “du repère visuel” :A tout instant on sait où se trouve la Tour Montparnasse
→ prendre la rue qui s'en rapproche le plus
Question : l'algorithme “du repère visuel” termine ?
NON !
Illustration : http://www.tourmontparnasse56.com
![Page 38: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/38.jpg)
Enjeux de l'algorithmique - correction
Correction : L'algorithme donne-t-il le résultat attendu ?
Preuve de correction :- « invariant » : propriété vraie tout au long de l'algorithme
• vraie à la première étape• si vraie à une étape, vraie à l'étape suivante vrai à la fin
En pratique, pour débuter :- vérifier sur les “cas de base”- vérifier sur des exemples aléatoires
![Page 39: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/39.jpg)
Enjeux de l'algorithmique - complexité
Complexité : Combien de temps l'algorithme prend-il pour se terminer ?
Théorie de la complexité :- évaluer le nombre d'opérations en fonction de la taille du problème, dans le pire cas- prouver qu'on ne peut pas utiliser moins d'opérations pour résoudre le problème, dans le pire cas
En pratique, pour débuter :- vérifier sur des exemples aléatoires- connaître les cas difficiles
![Page 40: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/40.jpg)
Enjeux de l'algorithmique - complexité
Complexité : Combien de temps l'algorithme prend-il pour se terminer ?
Théorie de la complexité :- évaluer le nombre d'opérations en fonction de la taille du problème, dans le pire cas- prouver qu'on ne peut pas utiliser moins d'opérations pour résoudre le problème, dans le pire cas
En pratique, pour débuter :- vérifier sur des exemples aléatoires- connaître les cas difficiles
impossible de faire mieux que la ligne droite !
![Page 41: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/41.jpg)
De l'algorithme au programme
Besoin Mise en production
Cahier des charges Tests d'intégration
Tests fonctionnelset techniquesAnalyse
Tests unitairesÉcriture del'algorithme
Compilation etassemblageCodage
programme : code source programme : exécutable
http://julienhenriet.olympe-network.com/Algo.html
![Page 42: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/42.jpg)
De l'algorithme au programme
Besoin Mise en production
Cahier des charges Tests d'intégration
Tests fonctionnelset techniquesAnalyse
Tests unitairesÉcriture del'algorithme
Compilation etassemblageCodage
INF120programme : code source programme : exécutable
http://julienhenriet.olympe-network.com/Algo.html
intuition rigueurclarté
![Page 43: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/43.jpg)
Composants d'un algorithme
Algorithme :Instruction 1Instruction 2Instruction 3
...
Données du problèmeentrées de
l'algorithme
Résultatsorties de
l'algorithme
ingrédientsbeurre, oeufs, sachets de sucre vanillé, farine,
lait, sel
crêpesRecette des crêpes
informations sur l'environnement
plan des rues, position de la voiture, position de la
Tour Montparnasse
itinéraireou prochaine
direction à prendre
Guidage GPS
Multiplicationdeux entiers entier1 et entier2
leur produitentier1 x entier2
![Page 44: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/44.jpg)
Quels types d'instructions ?
Divers types d'instructions :
- déclaration d'un algorithme
- appel d'un algorithme
- déclaration d'une variable
- affectation d'une variable
- entrées / sorties
- boucle
- test
pour stocker des valeurs, des résultats intermédiaires
![Page 45: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/45.jpg)
Organigramme de la recette des crêpes
saladier ← 4 oeufs
saladier ← saladier +sucre vanillé
verre ← 250g farine
saladier ← saladier +verre
verre ← 0.5L lait
saladier ← saladier +verre
poêle ← 50g beurre
cuire(poêle, 1 min) saladier ← saladier +poêle
mélanger(saladier)
attendre(60 min)
poêle ← 5g beurre
cuire(poêle, 0.5 min)
saladier vide ?
Bon appétit ! verre ← 5cL saladier poêle ← verre
cuire(poêle, 2 min)
retourner(poêle)
cuire(poêle, 2 min)
assiette ← poêle
oui non
Crêpes !
ingrédientsrécipients
![Page 46: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/46.jpg)
Organigramme de la recette des crêpes
saladier ← 4 oeufs
saladier ← saladier +sucre vanillé
verre ← 250g farine
saladier ← saladier +verre
verre ← 0.5L lait
saladier ← saladier +verre
poêle ← 50g beurre
cuire(poêle, 1 min) saladier ← saladier +poêle
mélanger(saladier)
attendre(60 min)
poêle ← 5g beurre
cuire(poêle, 0.5 min)
saladier vide ?
Bon appétit ! verre ← 5cL saladier poêle ← verre
cuire(poêle, 2 min)
retourner(poêle)
cuire(poêle, 2 min)
assiette ← poêle
oui non
Crêpes !
ingrédientsrécipients
entrées
sorties
![Page 47: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/47.jpg)
Organigramme de la recette des crêpes
saladier ← 4 oeufs
saladier ← saladier +sucre vanillé
verre ← 250g farine
saladier ← saladier +verre
verre ← 0.5L lait
saladier ← saladier +verre
poêle ← 50g beurre
cuire(poêle, 1 min) saladier ← saladier +poêle
mélanger(saladier)
attendre(60 min)
poêle ← 5g beurre
cuire(poêle, 0.5 min)
saladier vide ?
Bon appétit ! verre ← 5cL saladier poêle ← verre
cuire(poêle, 2 min)
retourner(poêle)
cuire(poêle, 2 min)
assiette ← poêle
oui non
Crêpes !
ingrédientsrécipients
variables
entrées
affectationssorties
![Page 48: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/48.jpg)
Organigramme de la recette des crêpes
saladier ← 4 oeufs
saladier ← saladier +sucre vanillé
verre ← 250g farine
saladier ← saladier +verre
verre ← 0.5L lait
saladier ← saladier +verre
poêle ← 50g beurre
cuire(poêle, 1 min) saladier ← saladier +poêle
mélanger(saladier)
attendre(60 min)
poêle ← 5g beurre
cuire(poêle, 0.5 min)
saladier vide ?
Bon appétit ! verre ← 5cL saladier poêle ← verre
cuire(poêle, 2 min)
retourner(poêle)
cuire(poêle, 2 min)
assiette ← poêle
oui non
Crêpes !
ingrédientsrécipients
variables
entrées
boucle
affectationssorties
![Page 49: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/49.jpg)
Organigramme de la recette des crêpes
saladier ← 4 oeufs
saladier ← saladier +sucre vanillé
verre ← 250g farine
saladier ← saladier +verre
verre ← 0.5L lait
saladier ← saladier +verre
poêle ← 50g beurre
cuire(poêle, 1 min) saladier ← saladier +poêle
mélanger(saladier)
attendre(60 min)
poêle ← 5g beurre
cuire(poêle, 0.5 min)
saladier vide ?
Bon appétit ! verre ← 5cL saladier poêle ← verre
cuire(poêle, 2 min)
retourner(poêle)
cuire(poêle, 2 min)
assiette ← poêle
oui non
Crêpes !
ingrédientsrécipients
variables
entrées
appels d'algorithmes
boucle
affectationssorties
![Page 50: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/50.jpg)
Variables et affectation
Dans un algorithme, une variable possède :• un nom,• une valeur,• un type (ensemble des valeurs que peut prendre la variable).
![Page 51: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/51.jpg)
Variables et affectation
Dans un algorithme, une variable possède :• un nom,• une valeur,• un type (ensemble des valeurs que peut prendre la variable).
La valeur d'une variable :• est fixe à un moment donné,• peut changer au cours du temps.
![Page 52: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/52.jpg)
Variables et affectation
Dans un algorithme, une variable possède :• un nom,• une valeur,• un type (ensemble des valeurs que peut prendre la variable).
La valeur d'une variable :• est fixe à un moment donné,• peut changer au cours du temps.
L'affectation change la valeur d'une variable :• a ← 5 :
- la variable a prend la valeur 5- la valeur précédente est perdue (“écrasée”)
• a ← b :- la variable a prend la valeur de la variable b- la valeur précédente de a est perdue (“écrasée”)- la valeur de b n'est pas modifiée- a et b doivent être de même type (ou de type compatible)
![Page 53: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/53.jpg)
Variables et affectation
Dans un algorithme, une variable possède :• un nom,• une valeur,• un type (ensemble des valeurs que peut prendre la variable).
La valeur d'une variable :• est fixe à un moment donné,• peut changer au cours du temps.
L'affectation change la valeur d'une variable :• a ← 5 :
- la variable a prend la valeur 5- la valeur précédente est perdue (“écrasée”)
• a ← b :- la variable a prend la valeur de la variable b- la valeur précédente de a est perdue (“écrasée”)- la valeur de b n'est pas modifiée- a et b doivent être de même type
(ou de type compatible)
La recette de cuisine avec récipients n'est qu'une métaphore
![Page 54: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/54.jpg)
Noms des variables
Dans un algorithme, choisir pour les variables :• un nom composé de lettres et éventuellement de chiffres• un nom expressif, par exemple :
- chaine, requête1... pour une chaîne de caractères- n, a, b, compteur, nbOperations, longueur... pour un entier- x, y, température pour un réel- estEntier, testEntier, trouvé... pour un booléen
• un nom assez court (il faut l'écrire !)• éviter les noms réservés : pour, tant que, si...
Dans un programme :• éviter les lettres accentuées et la ponctuation• préférer l'anglais si votre code source est diffusé largement• être expressif et lisible :
- est_entier ou estEntier plutôt que estentier
Votre code sera relu, par vous ou par d'autres...
![Page 55: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/55.jpg)
Mon premier vrai algorithme
Je connais l'algorithme d'addition de deux entiers positifs.Comment écrire un algorithme de multiplication de deux entiers ?
Intuition :
5 x 3 = 5 + 5 + 5
entier1 x entier2 = entier1 + entier1 + entier1 + … + entier1
entier2 fois
3 fois
![Page 56: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/56.jpg)
Mon premier vrai algorithme
Je connais l'algorithme d'addition de deux entiers positifs.Comment écrire un algorithme de multiplication de deux entiers ?
Multiplication :
Entrées : deux entiers entier1 et entier2Sorties : le produit de entier1 et entier2Variables : entiers compteur et produit
Débutcompteur ← 0produit ← 0Tant que compteur < entier2 faire :
produit ← addition(produit, entier1)compteur ← addition(compteur, 1)
Fin tant querenvoyer produit
Fin
![Page 57: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/57.jpg)
Mon premier vrai algorithme
Je connais l'algorithme d'addition de deux entiers positifs.Comment écrire un algorithme de multiplication de deux entiers ?
Multiplication :
Entrées : deux entiers entier1 et entier2Sorties : le produit de entier1 et entier2Variables : entiers compteur et produit
Débutcompteur ← 0produit ← 0Tant que compteur < entier2 faire :
produit ← addition(produit, entier1)compteur ← addition(compteur, 1)
Fin tant querenvoyer produit
Fin
pseudo-code
![Page 58: INF120 - Algo DUT SRC1 - Cours 1](https://reader034.vdocuments.pub/reader034/viewer/2022052323/55857626d8b42a3d2c8b4ead/html5/thumbnails/58.jpg)
Mon premier vrai algorithme
Je connais l'algorithme d'addition de deux entiers positifs.Comment écrire un algorithme de multiplication de deux entiers ?
Multiplication :
Entrées : deux entiers entier1 et entier2Sorties : le produit de entier1 et entier2Variables : entiers compteur et produit
Débutcompteur ← 0produit ← 0Tant que compteur < entier2 faire :
produit ← addition(produit, entier1)compteur ← addition(compteur, 1)
Fin tant querenvoyer produit
Fin
Terminaison ?Correction ?
Essayer avecentier1 = 5et entier2 = 3
Preuve dans unprochain cours...