Introduction à l`algorithmique et à la programmation

Transcription

Introduction à l`algorithmique et à la programmation
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

Documents pareils