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 2Partie 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 3Programme 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 4Documents 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 5Moodle: 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 6Format 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 7Exercices
• 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 8Format 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 9La programmation
10Programmation
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 11Programmation: 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 12Principaux 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 13Un 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 15Faire des calculs en Python
Démo
side = 4
area = side * side
print(area)
Programmation — Cours 1 16Nouveau 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 17Nouveau 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 18Faire 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 19Dé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 20Repré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 21Les 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 22Conversion 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 23Fonctions 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 24Autocomplé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 25Autres 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 26Se 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 27Ré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 28Les 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 29Vous pouvez aussi lire