Introduction à l’algorithmique et à la programmation...

20
Introduction à l’algorithmique et à la programmation (Info 2) Premier cours: présentation du module, codage et définition de l’algorithmique Matthieu Puigt IUT du Littoral Côte d’Opale DUT Génie Industriel et Maintenance [email protected] http://www-lisic.univ-littoral.fr/~puigt/ . Retrouvez ce document sur : http://www-lisic.univ-littoral.fr/~puigt/teaching.html Année universitaire 2014–2014 M. Puigt Info 2 – Cours 1 2014–2015 1

Transcript of Introduction à l’algorithmique et à la programmation...

Introduction à l’algorithmique et à laprogrammation (Info 2)

Premier cours: présentation du module, codage et définition del’algorithmique

Matthieu Puigt

IUT du Littoral Côte d’OpaleDUT Génie Industriel et Maintenance

[email protected]://www-lisic.univ-littoral.fr/~puigt/

.Retrouvez ce document sur :

http://www-lisic.univ-littoral.fr/~puigt/teaching.html

Année universitaire 2014–2014

M. Puigt Info 2 – Cours 1 2014–2015 1

Info 2, qu’est-ce que c’est ?”Il n’y a que deux sortes de langages de programmation : ceux pour lesquels les gens râlent toujours et ceuxque personne n’utilise.” Bjarne Stroustrup

ObjectifsAnalyser et créer des algorithmesTraduire un algorithme simple en langage de programmation

Comment y parvenir ?Cours en ligne :http://www.pise.info/algo/ etwww-lisic.univ-littoral.fr/~puigt/teaching.html

Nombreux exercices corrigés sur pise.info/algoSuivi des progrès (quiz, devoirs maisons, contrôles, DS)Consultations (sur RDV)Travail personnel (préparation des Cours/TD/TP, participation activedurant le cours, relecture des cours après les séances, questions à poserpar mail ou pendant une consultation)

M. Puigt Info 2 – Cours 1 2014–2015 2

Un mot sur le langage de programmationDe nombreux langages existent :

les classiques (C/C++, Java, Python, Matlab, R, etc)les langages pour les enfants (Scratch, Alice, etc)

Ici, nous allons programmer un Microcontrôleur Arduino. Pourquoi ?L’arduino permet de facilement brancher toute sorte d’équipement(capteurs, moteurs, etc) et de rapidement obtenir"quelque chose de cool"Il est open-source (les plans sont en ligne) et jouit d’une communautéinternationale très activeSon langage est proche du C mais simple à appréhenderOn va apprendre à programmer en l’utilisant pour simuler lefonctionnement de (parties de) machines industrielles

M. Puigt Info 2 – Cours 1 2014–2015 3

D.I.Y"Il n’y a pas de mathématiques sans larme." André Lichnérowicz

Mon premier algorithme :1 Je rencontre un problème à résoudre2 Je cherche la solution3 Si je n’y arrive pas au bout de quelques minutes, je reviens au point 2.4 Si je n’y arrive pas au bout d’un quart d’heure, je demande des indices

au prof ou à mes camarades de promotion. Je reviens au point 2.5 Si, malgré toute cette aide et après être tombé de fatigue, je n’y arrive

toujours pas, j’écoute la correction en classe et le soir venu, je reviensau point 1.

"En essayant continuellement, on finit par réussir. Donc plus ça rate, plus ona de chance que ça marche", maxime Shadok

M. Puigt Info 2 – Cours 1 2014–2015 4

Evaluations et notes

Vous aurez tous les outils en main pour réussir ce module. En contrepartie, jevous demanderai de beaucoup travailler cette matière, qui vous fournira desoutils utiles dans toute votre vie professionnelle.

Quiz 10%Projet et/ou et devoirs maisons 20%Préparation + Compte-rendus de TP 20%Devoir surveillé 50%

PlagiatINTERDIT : Je suis sans pitié pour les tricheurs !Je suis vraiment sans pitié pour les tricheurs...Et un brin sadique : attention, je dessine le plan des salles d’examen...Même si vous n’êtes pas pris pendant le contrôle, trop de similitudesdans les copies de voisins sera considérée comme de la triche punissantles dits-voisins)

M. Puigt Info 2 – Cours 1 2014–2015 5

Références bibliographiquesAlgorithmique :

Christophe Darmangeat : Algorithmique et programmation pournon-matheux — Cours complet avec exercices, corrigés et citationsphilosophiques, http://www.pise.info/algo/

Programmation avec Arduino :1 Les livres de la BULCO :

Tom Igoe : Making things talk, 2ème édition, présent à Saint-OmerMassimo Banzi : Démarrez avec Arduino : principes de base et premiersmontages, ou en anglais : http://it-ebooks.info/book/1338/Christian Tavernier : Arduino : maîtrisez sa programmation et ses cartesd’interface (shields)Simon Monk : Arduino : les bases de la programmationClemens Valens : Maîtrisez les microcontrôleurs à l’aide d’Arduino

2 Ressources en ligne (en anglais le plus souvent) :Sur le site officiel d’Arduino (http://arduino.cc/)http://www.jeremyblum.com/portfolio/arduino-tutorial-series/, cours utilisés par de plusieursuniversités américaines, russes, etchttp://fr.openclassrooms.com/sciences/cours/

arduino-pour-bien-commencer-en-electronique-et-en-programmation

Et beaucoup, beaucoup d’autres (notamment sur Facebook et Google plus)

Un dernier mot sur l’attitude en classe

Coupez votre téléphone... http://youtu.be/q9cbM18bTj4Soyez attentif.Préparez vos séances.Participez : il vaut mieux se tromper en classe que devant votre copie !

M. Puigt Info 2 – Cours 1 2014–2015 7

Ready ? Steady ? Go !

On va commencer les choses sérieuses.

M. Puigt Info 2 – Cours 1 2014–2015 8

Le codage"Il y a 10 sortes de gens au monde : ceux qui connaissent le binaire et les autres" Anonyme

Voir http://www.pise.info/algo/codage.htm

Des calculatrices amélioréesAvec un ordinateur, on peut traiter des images, jouer, écouter de lamusique, éditer un texte, etcPourtant, un ordinateur n’est qu’une calculatrice améliorée qui traitedes "données binaires"Comment sont représentées les données dans un ordinateur ?

Un peu d’histoireBâtons (homo sapiens, il y a 40000 ans)Nombres romains (introduction de V, X, L, etc)Nombres arabes (introduction des chiffres et de0 notamment)

M. Puigt Info 2 – Cours 1 2014–2015 9

Les nombres décimaux

Les plus utilisés10 chiffres : 0, 1, 2, 3, 4, 5, 6, 7, 8 et 9Utilisés pour représenter n’importe quel entier (par exemple 456)

Comment cela fonctionne ?Système de base, où chaque chiffre est multiplié par une puissance(selon la position du chiffre) du nombre de chiffres de la base (ici 10) :

456 = 4 ·position

10base

2 +5 ·101 +6 ·100 = 400+50+6

La position de chaque chiffre est importante !

654 = 6 ·102 +5 ·101 +4 ·100 = 600+50+4

M. Puigt Info 2 – Cours 1 2014–2015 10

Les autres basesLes babyloniens : base 60Les mayas : base 20Les shadoks : base 4 (http://youtu.be/nm0cw6b1PMA)Les ordinateurs :

1 bit — 1b — (ou bit en anglais) : base 2 (0 ou 1), dite binaire1 nibble (même mot en anglais) : une collection de 4 bits.1 octet — 1o — (ou byte en anglais — 1B — ) : une collection de 8 bits,ou 2 nibbles

Exercice : écrire la suite d’entiers de 0 à 16 en binaire

Base hexadécimalebase 16 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F)Compact et simple à lireFacile de convertir les nombres décimaux à binaire ou hexadécimal etvice-versa.Conventions :

rajouter "h" ou l’indice 16. Par exemple : 5Fh ou 5F16Tout nombre hexadécimal dont le premier chiffre est une lettre est précédéd’un 0 (par exemple : 0FEh)

M. Puigt Info 2 – Cours 1 2014–2015 11

Convertir un nombre décimal dans une autre baseComment faire ?

1 Diviser le nombre par la base que vous voulez2 Garder le reste de la division et diviser le quotient, devenant un

nouveau dividende, par la base3 Répéter l’étape 2 jusqu’à ce que le quotient de la division soit égal à

zéro4 Ecrire les restes successifs du dernier au premier

Exemple : convertir un nombre en hexadécimal39 = 16 ·2+72 = 16 ·0+2Nombre hexadécimal : 27h

Exercice : Convertir 43868 en hexadécimal puis en binaireRéponses :

1 0AB5Ch2 1010101101011100b

M. Puigt Info 2 – Cours 1 2014–2015 12

Convertir un nombre décimal dans une autre baseComment faire ?

1 Diviser le nombre par la base que vous voulez2 Garder le reste de la division et diviser le quotient, devenant un

nouveau dividende, par la base3 Répéter l’étape 2 jusqu’à ce que le quotient de la division soit égal à

zéro4 Ecrire les restes successifs du dernier au premier

Exemple : convertir un nombre en hexadécimal39 = 16 ·2+72 = 16 ·0+2Nombre hexadécimal : 27h

Exercice : Convertir 43868 en hexadécimal puis en binaireRéponses :

1 0AB5Ch

2 1010101101011100b

M. Puigt Info 2 – Cours 1 2014–2015 12

Convertir un nombre décimal dans une autre baseComment faire ?

1 Diviser le nombre par la base que vous voulez2 Garder le reste de la division et diviser le quotient, devenant un

nouveau dividende, par la base3 Répéter l’étape 2 jusqu’à ce que le quotient de la division soit égal à

zéro4 Ecrire les restes successifs du dernier au premier

Exemple : convertir un nombre en hexadécimal39 = 16 ·2+72 = 16 ·0+2Nombre hexadécimal : 27h

Exercice : Convertir 43868 en hexadécimal puis en binaireRéponses :

1 0AB5Ch2 1010101101011100bM. Puigt Info 2 – Cours 1 2014–2015 12

Compter avec les doigtsUn petit truc de geek pour impressionner vos amis

1 Nombres décimaux :)2 Nombres binaires3 Nombres hexadécimaux

http://youtu.be/tZyVKvcvSA4

M. Puigt Info 2 – Cours 1 2014–2015 13

Algorithmique : Què és això ? (1)On rentre dans le cœur du sujet

Voir http://www.pise.info/algo/introduction.htm.

DéfinitionUn algorithme est une suite d’instructions simples permettant d’obtenir unrésultat espéré si elles sont correctement utilisées.

Exemples : une recette, un mode d’emploi, etcContre-exemple : "débrouille-toi" n’est pas un algorithme

Algorithmique et mathsPas besoin d’être bon en maths pour écrire de bons algorithmes mais lesmaths apportent :

"l’intuition" de la résolution du problème (qu’on peut obtenir avecbeaucoup d’expérience)méthode et rigueur : chaque algorithme doit être vérifiéméthodiquement

M. Puigt Info 2 – Cours 1 2014–2015 14

Algorithmique : Què és això ? (2)

ADN et algorithmesADN : 4 éléments qui permettent la vie (selon leur nombre et leurposition)Algorithmes : 4 instructions qui permettent de tout faire :

1 l’affectation de variables2 la lecture / écriture3 les tests4 les boucles

Algorithmique et programmationUn algorithme est universelUn programme informatique est une traduction de l’algorithme, dansun langage donné (avec ses particularités et ses limites)

î Analyser et comprendre un algorithme est donc très important !

M. Puigt Info 2 – Cours 1 2014–2015 15

Algorithmique : Què és això ? (3)Ecrire un algorithme

1 Organigramme : simple, en apparence du moins (car vite illisible), etpresque abandonné (car incite à programmation non-structurée à éviter)

2 Pseudo-code : série d’instructions proche d’un vrai langage deprogrammation, mais sans les problèmes de syntaxe

Exécuter un algorithmeUn ordinateur n’est pas un objet "magique"... Il est juste beaucoup plusrapide que l’homme pour exécuter une série de tâches basiquesVous devez donc vous muer en ordinateur pour faire "tourner" vosalgorithmes.Une manière simple consiste à créer des tableaux dont chaque colonnecontient une variable, une condition (tests / boucles), ou enfin ce quiapparaît sur l’écran d’ordinateur.

Quand on teste un algorithme, on devient Terminator : pas de sentiment, pasde question, on n’exécute que ce qui est écrit dans le pseudo-code (on remar-que les erreurs et on progresse).

M. Puigt Info 2 – Cours 1 2014–2015 16

Algorithmique : Què és això ? (3)Ecrire un algorithme

1 Organigramme : simple, en apparence du moins (car vite illisible), etpresque abandonné (car incite à programmation non-structurée à éviter)

2 Pseudo-code : série d’instructions proche d’un vrai langage deprogrammation, mais sans les problèmes de syntaxe

Un outil informatique pratiqueAlgobox http://www.xm1math.net/algobox/Langage proche du pseudo-codeLibre, gratuit, avec un terminator dedans :) et à utiliser à la maison

M. Puigt Info 2 – Cours 1 2014–2015 16

Questions ?

Des questions ?

M. Puigt Info 2 – Cours 1 2014–2015 17