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 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 ceux que personne n’utilise.” Bjarne Stroustrup Objectifs Analyser et créer des algorithmes Traduire un algorithme simple en langage de programmation Comment y parvenir ? Cours en ligne :http://www.pise.info/algo/ et www-lisic.univ-littoral.fr/~puigt/teaching.html Nombreux exercices corrigés sur pise.info/algo Suivi des progrès (quiz, devoirs maisons, contrôles, DS) Consultations (sur RDV) Travail personnel (préparation des Cours/TD/TP, participation active durant le cours, relecture des cours après les séances, questions à poser par mail ou pendant une consultation) M. Puigt Info 2 – Cours 1 2014–2015 2 Un mot sur le langage de programmation De 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 active Son langage est proche du C mais simple à appréhender On va apprendre à programmer en l’utilisant pour simuler le fonctionnement 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ésoudre 2 Je cherche la solution 3 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 reviens au point 1. "En essayant continuellement, on finit par réussir. Donc plus ça rate, plus on a 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, je vous demanderai de beaucoup travailler cette matière, qui vous fournira des outils 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% Plagiat INTERDIT : 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 similitudes dans les copies de voisins sera considérée comme de la triche punissant les dits-voisins) M. Puigt Info 2 – Cours 1 2014–2015 5 Références bibliographiques Algorithmique : Christophe Darmangeat : Algorithmique et programmation pour non-matheux — Cours complet avec exercices, corrigés et citations philosophiques, 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-Omer Massimo Banzi : Démarrez avec Arduino : principes de base et premiers montages, ou en anglais : http://it-ebooks.info/book/1338/ Christian Tavernier : Arduino : maîtrisez sa programmation et ses cartes d’interface (shields) Simon Monk : Arduino : les bases de la programmation Clemens 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 plusieurs universités américaines, russes, etc http://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/q9cbM18bTj4 Soyez 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ées Avec un ordinateur, on peut traiter des images, jouer, écouter de la musique, éditer un texte, etc Pourtant, un ordinateur n’est qu’une calculatrice améliorée qui traite des "données binaires" Comment sont représentées les données dans un ordinateur ? Un peu d’histoire Bâtons (homo sapiens, il y a 40000 ans) Nombres romains (introduction de V, X, L, etc) Nombres arabes (introduction des chiffres et de 0 notamment) M. Puigt Info 2 – Cours 1 2014–2015 9 Les nombres décimaux Les plus utilisés 10 chiffres : 0, 1, 2, 3, 4, 5, 6, 7, 8 et 9 Utilisé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) : position 456 = 4 · 10 2 + 5 · 101 + 6 · 100 = 400 + 50 + 6 base 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 bases Les babyloniens : base 60 Les mayas : base 20 Les shadoks : base 4 (http://youtu.be/nm0cw6b1PMA) Les ordinateurs : 1 bit — 1b — (ou bit en anglais) : base 2 (0 ou 1), dite binaire 1 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écimale base 16 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F) Compact et simple à lire Facile de convertir les nombres décimaux à binaire ou hexadécimal et vice-versa. Conventions : rajouter "h" ou l’indice 16. Par exemple : 5Fh ou 5F16 Tout 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 base Comment faire ? 1 Diviser le nombre par la base que vous voulez 2 Garder le reste de la division et diviser le quotient, devenant un nouveau dividende, par la base 3 Répéter l’étape 2 jusqu’à ce que le quotient de la division soit égal à zéro 4 Ecrire les restes successifs du dernier au premier Exemple : convertir un nombre en hexadécimal 39 = 16 · 2 + 7 2 = 16 · 0 + 2 Nombre hexadécimal : 27h Exercice : Convertir 43868 en hexadécimal puis en binaire Réponses : M. Puigt Info 2 – Cours 1 2014–2015 12 Convertir un nombre décimal dans une autre base Comment faire ? 1 Diviser le nombre par la base que vous voulez 2 Garder le reste de la division et diviser le quotient, devenant un nouveau dividende, par la base 3 Répéter l’étape 2 jusqu’à ce que le quotient de la division soit égal à zéro 4 Ecrire les restes successifs du dernier au premier Exemple : convertir un nombre en hexadécimal 39 = 16 · 2 + 7 2 = 16 · 0 + 2 Nombre hexadécimal : 27h Exercice : Convertir 43868 en hexadécimal puis en binaire Réponses : 1 0AB5Ch M. Puigt Info 2 – Cours 1 2014–2015 12 Convertir un nombre décimal dans une autre base Comment faire ? 1 Diviser le nombre par la base que vous voulez 2 Garder le reste de la division et diviser le quotient, devenant un nouveau dividende, par la base 3 Répéter l’étape 2 jusqu’à ce que le quotient de la division soit égal à zéro 4 Ecrire les restes successifs du dernier au premier Exemple : convertir un nombre en hexadécimal 39 = 16 · 2 + 7 2 = 16 · 0 + 2 Nombre hexadécimal : 27h Exercice : Convertir 43868 en hexadécimal puis en binaire Réponses : 1 0AB5Ch 2 1010101101011100b M. Puigt Info 2 – Cours 1 2014–2015 12 Compter avec les doigts Un petit truc de geek pour impressionner vos amis 1 Nombres décimaux :) 2 Nombres binaires 3 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éfinition Un algorithme est une suite d’instructions simples permettant d’obtenir un résultat espéré si elles sont correctement utilisées. Exemples : une recette, un mode d’emploi, etc Contre-exemple : "débrouille-toi" n’est pas un algorithme Algorithmique et maths Pas besoin d’être bon en maths pour écrire de bons algorithmes mais les maths apportent : "l’intuition" de la résolution du problème (qu’on peut obtenir avec beaucoup 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 algorithmes ADN : 4 éléments qui permettent la vie (selon leur nombre et leur position) Algorithmes : 4 instructions qui permettent de tout faire : 1 2 3 4 l’affectation de variables la lecture / écriture les tests les boucles Algorithmique et programmation Un algorithme est universel Un programme informatique est une traduction de l’algorithme, dans un 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), et presque abandonné (car incite à programmation non-structurée à éviter) 2 Pseudo-code : série d’instructions proche d’un vrai langage de programmation, mais sans les problèmes de syntaxe Exécuter un algorithme Un ordinateur n’est pas un objet "magique"... Il est juste beaucoup plus rapide que l’homme pour exécuter une série de tâches basiques Vous devez donc vous muer en ordinateur pour faire "tourner" vos algorithmes. Une manière simple consiste à créer des tableaux dont chaque colonne contient une variable, une condition (tests / boucles), ou enfin ce qui apparaît sur l’écran d’ordinateur. Quand on teste un algorithme, on devient Terminator : pas de sentiment, pas de question, on n’exécute que ce qui est écrit dans le pseudo-code (on remarque 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), et presque abandonné (car incite à programmation non-structurée à éviter) 2 Pseudo-code : série d’instructions proche d’un vrai langage de programmation, mais sans les problèmes de syntaxe Un outil informatique pratique Algobox http://www.xm1math.net/algobox/ Langage proche du pseudo-code Libre, 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