ICC - Programmation - MX, Cours 1, 21 septembre 2018 Jean-Philippe Pellet - EPFL
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
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
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
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
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
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