Logistique Intervenants Programmation Impérative : Introduction Globale TP (mercredi 8h ou 15h45) : Valentina Zantedeschi, Rémi Emonet Cours (jeudi 8h), TD (lundi 15h45) : Rémi Emonet Autres intervenants principaux : VOUS posez des questions, interrompez en cas de problème, proposez des directions etc. Règles du jeu Évaluation travaillez régulièrement participez questionnez interrompez note pratique : rendu TP + exam examens intermédiaire et final si vous savez (re)faire les TPs, vous aurez une bonne note à l'examen Références Voir la page du cours (lien sur Claroline) « poly », banque d'exercices, vidéos 5 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale Programmation Impérative Impérative = donner des ordres ordres = instructions mission = suite d'instructions = programme Exemple : aller en cours Qu'est ce que la programmation impérative ? se lever se doucher s'il pleut prendre le vélo sinon prendre le bus Dire à l'ordinateur ce qu'il doit faire 7 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale 8 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale Ordinateur = Grosse Calculatrice Calculatrice nombres opérations : +, -, ×, ÷, … mémoire : M+, MR, MC, … Des ordinateurs partout Qu'est ce qu'un ordinateur ? 9 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale calculatrice téléphone ordinateur portable voiture machine à laver ... 10 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale Anatomie d'un Ordinateur Tout Binaire Périphériques Processeur (CPU) Programme × (ordres) ... R1 R2 => R1 R5 R6 => R2 Stockage binaire 1 bit : 0 ou 1 1 octet (ou byte) : 8 bits 1 ko (ou KB) : 1024 octets … +÷ - + × ÷ Encodage binaire (base 2) save R1 - R2 R3 Entiers 1 → 00000001 2 → 00000010 3 → 00000011 18 → 00010010 load R4 R5 R6 Registres Opérations ... ... Caractères 'A' → 01000001 (65) (0x41) 'B' → 01000010 (66) (0x42) 'a' → 01100010 (97) (0x62) Mémoire (RAM) Chaîne de caractères, exemple "bonjour" 0110001001101111011011100110101001101111011101010111001000000000 Flottant (nombre à virgule flottante) : … 11 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale 12 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale Un Programme vu de l'Ordinateur ? Processeur (CPU) Suite d'instructions venant de la mémoire ou d'un fichier chaque instruction a un code binaire Calculs sur les registres + × ÷ R2 initialisation, ex : MOV 18,R1 opérations, ex : MUL R1,R2 R1 R2 => R1 R5 R6 => R2 +÷ - save R1 R3 Programme × (ordres)... - - R4 R5 R6 Registres Opérations load ... Accès mémoire mémoire → registres, ex : MOV 0x6014(R1),R2 registres → mémoire, ex : MOV R2,0x6014(R1) Mémoire (RAM) Qu'est ce qu'un langage Accès périphérique vu comme de la mémoire Langage assembleur (MOV, MUL, ...) correspondance directe avec le code binaire très, très laborieux 13 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale 14 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale Qu'est ce qu'un langage Un moyen de communiquer Des règles de bases quels sont les éléments de base (ponctuation, mots, ...) quel est le sens de chaque élément ("chat", "stylo", "il", "ça", ...) aussi appelée la sémantique quelles structures peuvent être utilisées (phrase, ...) et leur sens ("sujet négation verbe complément", ...) Langages de Programmation 16 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale 17 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale 696 Langages Notables The aim of this list … is to include all notable programming languages in existence, …, except for dialects of BASIC and esoteric programming languages. https://en.wikipedia.org/wiki/List of programming languages Pourquoi Tant de Langages ? Assembleur : laborieux Un bon programmeur est un curieux fainéant ⇒ Apprenez à programmer par fainéantise ! But des langages faire plus, plus facilement augmenter le niveau d'abstraction Combien selon vous ? 18 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale 19 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale Différences Entre Langages Compilation ou Interprétation Langage compilé (C, C++, Ada, …) Types langages compilés langages interprétés langages mixtes Paradigmes programmation impérative programmation déclarative programmation fonctionnelle programmation objet https://fr.wikipedia.org/wiki/Paradigme_(programmation) La plupart des langages sont à cheval entre ces appellations écriture du programme dans un fichier lancement du compilateur sur ce fichier lecture du fichier transformation vers du langage machine sauvegarde dans un nouvel exécutable lancement de l'exécutable créé Langage interprété (Python, bash, PERL, …) écriture du programme dans un fichier lancement de l'interpréteur sur ce fichier Machine virtuelle (Java, …) écriture du programme dans un fichier compilation vers un langage intermédiaire lancement d'un interpréteur (machine virtuelle) du langage intermédiaire 20 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale 21 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale Cours de Prog. Imp. : Objectifs Premier Langage : bash Résolution de problème réflexion algorithmique implantation sous forme d'un programme Apprendre les bases de programmation concepts de bases bonnes pratiques Apprendre ces concepts dans deux langages Bash: spécialisé dans le lancement d'autres programmes Python: langage tous usages (scientifique, scripts, serveur web, ...) Spécialisé dans le lancement d'autres programmes ordre (principal) = lancer un programme outil de base sous Linux et Mac facile à installer sous Windows Plus efficace qu'un explorateur graphique Exemple appliquer un traitement sur un ensemble de fichiers déplacer ou renommer des fichiers en masse rechercher des fichiers ou du contenu répéter une succession d'actions Langage interprété exécuté par un interpréteur (un exécutable) appelé "bash" Souvent utilisé dans un "terminal" Démonstration 31 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale 32 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale >_ bash Second Langage : Python (version 3) Langage tous usages ordre (principal) = manipuler des variables simple à apprendre mais complet disponible sur Linux, Mac, Windows beaucoup de "bibliothèques" Exemple faire des calculs, des statistiques interfaces graphiques jeux sites webs Motivation Globale du Cours Apprendre les bases de programmation utile dans de nombreux domaines (surtout pour vous) rester ouvert à tous les langages de programmation Apprendre à formaliser les choses mais différemment des maths ⇒ algorithmique Apprendre à créer des programmes exploiter les choses existantes pour créer des choses nouvelles Langage interprété exécuté par un interpréteur (un exécutable) appelé "python" Démonstration 33 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale 34 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale Au sujet de ce cours Bien Apprendre (en général) Programmer n'est pas facile programmation, comme un nouveau langage nouvelle culture / façon de penser tout en anglais en plus... N'importe qui peut apprendre en travaillant Rythme du cours selon les cas, au début, « perdus » ou « cours trop lent » cette différence va disparaître assez vite Participer, faire des retours Travail régulier plutôt que d'un bloc répéter les exercices pratiquer (pas juste lire) Travailler de manière concentrée limiter les interruptions se fixer une durée (blocs de 25 minutes) … mais faire des vraies pauses se dégourdir faire du sport bien dormir 37 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale 38 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale Bien Réussir ce Cours Accepter de faire des choses “simple”, juste pour apprendre : « solve it yourself first » Amener des idées, questions ⇒ la motivation est le meilleur facteur de succès Chercher de l'information (moi, les autres, ...) Pratiquer ! installation sur votre ordinateur pour travailler faire les exercices automatiques si vous savez (re)faire les TPs, vous aurez une bonne note à l'examen 39 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale Points Clés Objectif global du cours comprendre le pourquoi des langages de programmation apprendre les bases de la programmation appliquer ces principes en "bash" et "python" comprendre qu'il est utile de savoir programmer Ordinateur machine qui exécute des ordres langage = moyen de donner des ordres Voir la page du cours (lien sur Claroline) http://dossier.univ-st-etienne.fr/er49873h/www/2015progimp/ 41 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale