ICC - Programmation - MX, Cours 1, 21 septembre 2018 Jean-Philippe Pellet - EPFL

La page est créée Carole Laporte
 
CONTINUER À LIRE
ICC - Programmation - MX, Cours 1, 21 septembre 2018 Jean-Philippe Pellet - EPFL
ICC – Programmation

  MX, Cours 1, 21 septembre 2018
           Jean-Philippe Pellet

                    1
ICC - Programmation - MX, Cours 1, 21 septembre 2018 Jean-Philippe Pellet - EPFL
Présentation

            •    Jean-Philippe Pellet

            •    Informatique à l’EPFL (2006)

            •    Doctorat en statistique/machine learning
                 à l’ETHZ et IBM Research, Zurich (2010)
                — Mais vraie passion: les langages de programmation

            •    Actuellement:
                — HEP Vaud à Lausanne,
                  développement (logiciels pédagogiques et didactiques)
                  didactique de l’informatique & recherche

Programmation — Cours 1                  2
ICC - Programmation - MX, Cours 1, 21 septembre 2018 Jean-Philippe Pellet - EPFL
Partie Programmation d’ICC

            •    Approche pragmatique: make things work

            •    Peu de théorie, davantage de pratique:
                 programmation comme outil

            •    Cible:
                — Concepts les plus importants en programmation
                — Bases du langage Python
                — Débrouillardise et «savoir-chercher»

Programmation — Cours 1                  3
ICC - Programmation - MX, Cours 1, 21 septembre 2018 Jean-Philippe Pellet - EPFL
Programme du cours — MX
                                                  2 novembre                                             21 décembre
                                                    Examen                                                Examen
                                                 intermédiaire                                              final
           Cours & exos, partie théorique          théorique           Cours & exos, partie théorique     commun

      1      2        3       4        5     6        7        8     9 10 11 12 13 14
      1      2        3       4        5     6        7        8     9 10 11 12 13                          Congé

            Cours & exos, partie programmation            Examen     Cours & miniprojet, partie progr.
                                                       intermédiaire
                                                      programmation
                                                        9 novembre

                                                  14 semaines
                      Partie théorique                                 Partie programmation
          6 × cours & séance d’exercices     7 × cours & séance d’exercices
          Examen intermédiaire (30%)         Examen intermédiaire (30%)
          6 × cours & séance d’exercices     5 × cours & miniprojet
                               Examen final papier (40%)
Programmation — Cours 1                                    4
ICC - Programmation - MX, Cours 1, 21 septembre 2018 Jean-Philippe Pellet - EPFL
Documents de cours

      •    Toutes les informations et liens vers les documents de cours
           sont sur Moodle, cours CS-119(b)
          • http://moodle.epfl.ch/course/view.php?id=15727
          • Enrolment key: ICC-MX18
             • Incrivez-vous dès maintenant si pas encore fait!
          • 2 forums: utilisez-les!
             • Contextualisez bien votre question

Programmation — Cours 1                 5
ICC - Programmation - MX, Cours 1, 21 septembre 2018 Jean-Philippe Pellet - EPFL
Moodle: interface

     Infos générales

                                                  Partie théorique
                                                                      Cours, exercices,
                                                                     corrigés sous divers
                                                                        formats; liens
  Une section par                                                      supplémentaires
 «semaine logique»                                                        optionnels

                           Partie programmation

Programmation — Cours 1                    6
Format du cours
       •    Cours: BC01
       •    Exercices: salles d’ordinateurs BC07-08
           — Documents sur Moodle
           — Travail sur les machines de l’EPFL ou sur votre propre laptop avec
             environnement EPFL (vdi.epfl.ch)
           — Travail en petits groupes (2 voire 3) encouragé
           — En général, 3 ou 4 exercices
              ➡ Vous avez accès à un corrigé partiel après 60 minutes
              ➡ Le corrigé complet est disponible en fin de session
           — 4 assistants-étudiants, 2 assistants-doctorants (en anglais) et
             l’enseignant guident et répondent aux questions; profitez!
           — Utilisez le forum du cours sur Moodle pour poser des questions
             (et y répondre)
       •    Miniprojet (discuté plus tard dans le semestre)
Programmation — Cours 1                      7
Exercices

       • Solution recommandée: postes de travail virtuels
           — En salle BC07-08
           — ou sur votre machine via https://vdi.epfl.ch
           — Machine virtuelle: IC-CO-IN-SC (Linux)
       • Alternative: installation personnelle de Python et Visual
           Studio Code sur votre propre machine
           — L’installation est de votre ressort
           — Batterie et état de marche de votre machine:
             votre responsabilité
           — Examen sur infrastructure EPFL dans tous les cas

Programmation — Cours 1                8
Format des examens
           • Examen intermédiaire partie théorique
             — Détails par Olivier Lévêque
           • Examen intermédiaire programmation: en salle
                d’ordinateurs BC07-08
               — Format similaire au séances d’exercices
               — Slides, notes de cours, Moodle, internet: autorisés
                 (approche de programmation pragmatique real life)
                   ➡ Mais pas de communication!
               — Matière testée: tout ce qu’on voit dans les cours et
                 séances d’exercices
               — Examen pas rattrapable (en cas de force majeure:
                 rattrapage par examen oral) ni déplaçable pour des
                 questions d’infrastructure
           •    Examen final: théorique et programmation
Programmation — Cours 1                     9
La programmation

       10
Programmation

                            l’ordinateur:
            la machine universelle du monde de l’information

                    la programmation:
 une technique de communication structurée avec la machine;
       l’art d’exprimer de façon élégante un processus

                 simulation de modèles
                  (météo, cerveau, …)    interfaces graphiques        calcul numérique
                                                          acquisition de données (capteurs)
       traitement des signaux
                  automatisation de tâches répétitives           bases de données (enquêtes)
Programmation — Cours 1                          11
Programmation: Approches

                  Fichiers texte,   Languages statiquement        Languages dynamique-
                   code source                typés                    ment typés

                                                                   Python, JavaScript, PHP,
                                    Java, C, C++, Scala, Haskell,
                                                                  Perl, Ruby, Groovy, Clojure,
                                       Objective-C, Swift, …
                                                                               …

                 ?
                                            Source
                                               ↓
                                    Compilation explicite                  Source
                                        au préalable                           ↓
                                                                      Exécution directe
                                               ↓
                                       Fichiers compilés           (même si optimisation via
                                                                     compilation possibles)
                                               ↓
                                      Exécution du code

                                        Erreurs détectées            Erreurs détectées
                  Exécution du      pendant compilation            pendant exécution
                     code           et pendant exécution              uniquement

Programmation — Cours 1                    12
Principaux IDE pour Python
      IDE = éditeur de texte + compilation intégrée + exécution facile + …

     Visual Studio Code              PyCharm                   NetBeans

        •    Pour ce cours:Visual Studio Code
               — Quel est le meilleur IDE est une question très
                 personnelle
               — Vous pouvez utiliser un autre si vous préférez, mais sans
                 notre support ou nos explications

Programmation — Cours 1                   13
Un langage de programmation

       «Grammaire»                          «Vocabulaire»
        Syntaxe                          API/Bibliothèques
       Comment mettre les
                                 Quels sont les mots qui ont un sens particulier dans
        mots ensemble de
                                    ce langage, et que signifient-ils exactement?
        manière correcte

                                         En Python: énorme volume de
          Ensemble de
                                         bibliothèques, à apprendre petit à
         règles à savoir
                                            petit en fonction des besoins

                                   Exemples de bibliothèques: communication réseau,
                                    manipulation d'images, cryptographie, machine
                                       learning, manipulation de code, etc., etc.

     Ce cours: syntaxe de base de Python; exploration de la bibliothèque standard de
         Python et outils pour rechercher et utiliser des bibliothèques existantes
Programmation — Cours 1                     14
Écrire un programme

         •    Comme une recette (que vous écrivez)
             — Une série d’instructions à exécuter dans un
               certain ordre
             — Une instruction se composent de mots du
               «vocabulaire» du langage, assemblés selon la
               syntaxe du language («grammaire»)
             — L’ordre des instructions est bien sûr important!

Programmation — Cours 1                    15
Faire des calculs en Python

                              Démo

                          side = 4
                          area = side * side

                          print(area)

Programmation — Cours 1            16
Nouveau workspace avec VS Code
 Suivre consigne des exercices pour
   créer dossier vide dans myfiles

                 File → Open…, puis sélectionner dossier

            Vue Fichiers
                                                        Éditeurs de texte ouverts
       Vue Recherche dans
           les fichiers
                                      Liste des
                                     fichiers et
         Vue Gestionnaire          sous-dossiers
     d’extensions de VS Code

                                                    Résultats d’exécution ou messages

Programmation — Cours 1                      17
Nouveau fichier Python

                                                                                Bouton New File…

                                                                                Puis: donner un nom
                                                                                qui se termine par .py

                          Puis: éditer le fichier dans l’éditeur qui s’ouvre à droite

Programmation — Cours 1                                18
Faire des calculs en Python
                                        Variante:

                           side: int = 4
                           area: int = side * side

                           print(area)

           •    Déclarer les types est en principe optionnel en Python
           •    Mais: faites-le autant que vous pouvez
               — Plus de vérifications par le compilateur (ou linter)
               — Code plus expressif et plus facile à (re)lire pour vous
               — Force à mieux réfléchir à ce qu’on écrit

Programmation — Cours 1                    19
Déclaration de variables
                                     side: int = 4
                                     nom     type valeur

               «Prends un bout de mémoire qui peut stocker un int, appelle cet
                      emplacement “side”, et donne-lui la valeur 4.»

                              area: int = side * side

                «Prends un autre bout de mémoire qui peut stocker un int,
              appelle cet emplacement “area”, et donne-lui la valeur qui est
                     le résultat de la multiplication de ce que contient
                      l’emplacement que j’ai appelé “side” avant.»

                                      print(area)
                 «Imprime sur la console ce qu’il y a dans l’emplacement
                          mémoire que j’ai appelé “area”.»
Programmation — Cours 1                      20
Représentation de la machine
                           4        side
                          16        area

                                    side: int = 4
    Mémoire vive

                                    area: int = side * side

                                                4    * side

                                                 4   *    4

                                                     16

Programmation — Cours 1        21
Les principaux types de données

      side: int = 4                     Un nombre entier

      side2: float = 3.5                Un nombre à virgule

      myName: str = “Jean-Philippe"     Du texte; une chaîne de
                                        caractères (string = chaîne),
                                        définie avec " ou ' au début et
      myLastName: str = 'Pellet'
                                        à la fin

                                        Un commentaire à vous, pas
      # Commentaire                     interprété comme code

Programmation — Cours 1            22
Conversion float/int/String
                      On ne peut pas faire toutes les opérations avec tous les
                        types, mais on peut convertir d’un type à un autre

                 # Conversion depuis un int
                 someInt: int       = 34
                 someIntAsFloat     = float(someInt) # 34.0
                 someIntAsString = str(someInt)        # "34"

                 # someIntAsString + 2, ne marche pas!
                 # someIntAsString + "2", concaténation de strings

                 # Conversion depuis un float
                 import math
                 someFloat: float          = 0.182
                 someFloatRoundedUp        = math.ceil(someFloat)    # 1
                 someFloatRoundedDown = math.floor(someFloat) # 0

Programmation — Cours 1                         23
Fonctions et méthodes

                              math.ceil(someFloat)
                              print(someVariable)

       Forme générique: cible.nomDuneMethode(argument)
       Ressemble à quelque chose de bien connu… sin(α), par exemple

                     En Python, tous les objets définissent une série de
                                 méthodes, selon leur type

                Quelles méthodes sont disponible pour un type de donnée?

                    Tapez un point après le nom d’une variable de ce
                  type dans VS Code pour voir la liste des suggestions!

Programmation — Cours 1                      24
Autocomplétion dans VS Code

 Ligne en cours
    d’édition

                    Liste des méthodes         Description de la
                        pour la cible         méthode sélectionnée
                        «myName»
Programmation — Cours 1                  25
Autres manipulations: fonctions, splice

           myString: str = "programmation"
           # Vous choisissez le nom de la variable;
           # la valeur est toujours entre "" ou ''

           # la fonction len() retourne la longueur d'un string
           length: int = len(myString)

           # le slicing (indexage d'une variable entre [])
           # permet d'extraire une partie du string
           mySubstring: str = myString[1:4]

             len() est une fonction de base qui n’est pas préfixée par une cible:
                 on écrit len(maVariable) et pas maVariable.len()
          On peut splicer un string avec la notation maVariable[debut:fin]

Programmation — Cours 1                       26
Se documenter sur Python

                          «python convert int to string»
                          «python get string length»
                          «python check if string contains other string»

                          http://stackoverflow.com/

                          Site spécialisé en programmation, questions avec réponses
                          triés par ordre de pertinence selon votes de la communauté.

                          Vérifiez bien que votre question n’a pas encore été posée
                          avant d’en poser une — c’est très probable que quelqu’un ait
                          déjà eu votre problème!

Programmation — Cours 1                    27
Résumé Cours I
            •    Python est un langage moderne avec une syntaxe
                 minimale
            •    VS Code est un IDE pour Python (notamment) qui
                 permet d’éditer les fichiers et d’exécuter le
                 programme
            •    En Python, on peut déclarer le type des variables.
                 Les types aident à vérifier que le programme est
                 correct
            •    Sur des objets, on peut appeler des méthodes, qui
                 peuvent renvoyer de nouvelles valeurs.
            •    Pour les strings, on a aussi des fonctions comme
                 len() et l’opérateur de splicing [:]
Programmation — Cours 1                 28
Les assistant·e·s

                   Doctorant·e·s             Étudiant·e·s

                   Sam Whitlock              Michael Allemann
                   Işınsu Katırcıoğlu        Francesca Paola Nicoletti
                                             Loïc Droz
                                             Raphaël Laporte

Programmation — Cours 1                 29
Vous pouvez aussi lire