27
ICC – Programmation Jean-Philippe Pellet GC/MX, Cours 1, 18 septembre 2020 1 Opening music: Leonard Cohen, album You Want It Darker (2016)

ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

  • Upload
    others

  • View
    33

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC – Programmation

Jean-Philippe Pellet

GC/MX, Cours 1, 18 septembre 2020

1

Opening music: Leonard Cohen, album You Want It Darker (2016)

Page 2: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1 2

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

Page 3: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1

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»

• On commence de zéro… mais on avance assez vite

3

Page 4: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1

Programme du cours

4

3 4 5 6 9 10 11 12

14

Cours & séries, partie programmation

Examen final

Cours & miniprojet, partie programmation

1 Congé2

18 décembre

1 3 4 5 62 7

Examenintermédiaire

8 9 10 11 12 13

13

Cours & séries, partie théorique Cours & séries, partie théorique

30 octobre

8Congé

40% 60%

Gr. AGr. B Gr. C Gr. AGr. B Gr. C Gr. A Gr. C Gr. B Gr. A Gr. C Gr. BGr. AGr. BGr. C

Gr. AGr. BGr. C

Page 5: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1

Rappel: rotation des groupes

5

by Amir Rajabi

Groupe A

Groupe B

Groupe C

SCIPER mod 3 = 0

SCIPER mod 3 = 1

SCIPER mod 3 = 2

Page 6: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1

Documents de cours

6

• Toutes les informations et liens vers les documents de cours sont sur Moodle, cours CS-119(h)

• https://moodle.epfl.ch/course/view.php?id=15727

• Incrivez-vous dès maintenant si pas encore fait

• Tous les cours sont diffusés en live via Zoom• Pas d’enregistrement – à suivre en live

• Pour vos questions: Piazza, 2 espaces

• Posez vos questions sur le cours et sur les exercices

• Rejoignez les espaces avec les liens sur Moodle

• Contextualisez votre question en l’assignant à des dossiersDémo

Page 7: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1

Exercices

• Solution recommandée: postes de travail virtuels

— Directement en salle BC07-08

— Via VMWare Horizon Client en CM1103 et CM1112

— 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é

7

Page 8: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1

Séances des samedis

• 15h15-17h— Même horaire que pour la partie théorique

— Salles CM 1 112, CM 1 103 pour la partie programmation

— Ou sur vos machines

• Venez-y (au moins les premières semaines)

— Suivre à distance, seul ou seule, n’est pas toujours facile

— Nous permet plus facilement de vous aider à configurer vos machines

— Vous y rencontrez des camarades

— Plutôt ceux d’entre vous qui n’ont pas été sur le campus la veille

8

Page 9: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

La programmation

9

Page 10: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1

automatisation de tâches répétitivestraitement des signaux

simulation de modèles (météo, cerveau, …) calcul numérique

acquisition de données (capteurs)

bases de données (enquêtes)

10

Programmation

la programmation:une technique de communication structurée avec la machine;

l’art d’exprimer de façon élégante un processus

interfaces graphiques

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

Page 11: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1 11

Programmation: Approches

Fichiers texte, code source

Exécution du code

Languages statiquement typés

Languages dynamique-ment typés

Java, C, C++, Scala, Haskell, Objective-C, Swift, …

Python, JavaScript, PHP, Perl, Ruby, Groovy, Clojure,

Source↓

Compilation explicite au préalable

↓Fichiers compilés

↓Exécution du code

Source↓

Exécution directe (même si optimisation via

compilation possibles)

Erreurs détectées pendant compilation et pendant exécution

Erreurs détectées pendant exécution

uniquement

?

Page 12: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1 12

Un langage de programmation

«Grammaire»Syntaxe

«Vocabulaire»API/Bibliothèques

Comment mettre les mots ensemble de manière correcte

Quels sont les mots qui ont un sens particulier dans ce langage, et que signifient-ils exactement?

Ensemble de règles à savoir

En Python: énorme volume de bibliothèques, à apprendre petit à

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

Page 13: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1

• 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!

13

Écrire un programme

Page 14: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1 14

Faire des calculs en Python

Démo

side = 4 area = side * side

print(area)

Page 15: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1 15

Nouveau workspace avec VS Code

File → Open Workspace…, puis sélectionner __workspace__.code-workspace

Suivre consigne des exercices pour créer dossier vide dans myfiles

Liste des fichiers et

sous-dossiersVue Gestionnaire d’extensions de VS Code

Vue Recherche dans les fichiers

Éditeurs de texte ouverts

Vue Fichiers

Résultats d’exécution ou messages

Interpréteur

Page 16: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1 16

Faire tourner du codeInterpréteur

Menu Terminal → Run Task → bpython

Exécution ligne par ligne

Puis: taper des lignes dans le terminal qui s’ouvre en bas à droite

Bouton New File…

Puis: donner un nom qui se termine par .py

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

Via fichier

Bouton Run en haut à droite

Exécution de tout le fichier

Page 17: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1 17

Faire des calculs en PythonVariante:

• 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

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

print(area)

Page 18: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1

Déclaration de variables

typenom valeur

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

18

side: int = 4

«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.»

area: int = side * side

«Imprime sur la console ce qu’il y a dans l’emplacement mémoire que j’ai appelé “area”.»

print(area)

Page 19: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1 19

Représentation de la machine

Mémoire vive

side4area

4 * side

4 * 4

16

16

side: int = 4

area: int = side * side

Page 20: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1

side: int = 4

side2: float = 3.5

my_name: str = "Jean-Philippe"

my_last_name: str = 'Pellet'

# Commentaire

Les principaux types de données

20

Un nombre entier

Un nombre à virgule

Du texte; une chaîne de caractères (string = chaîne), définie avec " ou ' au début et à la fin

Pas un type de données, maisun commentaire à vous, pas interprété comme code

Page 21: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1 21

Conversion float/int/StringOn 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 some_int: int     = 34 some_int_as_float  = float(some_int) # 34.0 some_int_as_string = str(some_int)   # "34"

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

# Conversion depuis un float import math some_float: float       = 0.182 some_float_rounded_up   = math.ceil(some_float)  # 1 some_float_rounded_down = math.floor(some_float) # 0 some_float_asInt        = int(some_float)        # 0

Page 22: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1 22

Fonctions, valeurs dérivées

nomDuneFonction(argument)Forme générique:

Ressemble à des choses bien connues… sin(α), par exemple

fonction dans Excel

math.ceil(some_float) print(some_variable)

Pas la seule manière d’obtenir des valeurs dérivées dans Python

Page 23: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1

my_string: 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(my_string)

# la méthode upper() s'écrit après un point et # crée une version tout en majuscules de la valeur # indiquée avant le point my_string_upper = my_string.upper()

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

23

Autres manipulations utiles

Page 24: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1 24

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!

Page 25: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1 25

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

• L’interpréteur permet de facilement tester de petits bouts de code

• En Python, on peut déclarer le type des variables. Les types aident à vérifier que le programme est correct

• Des notations précises permettent de calculer de nouvelles valeurs (fonctions, méthodes, slicing — on en reparlera!)

Page 26: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

ICC Programmation — Cours 1 26

Les assistant·e·s

Léopold Bouraux

Roman Bachmann Eric Bezzam

Eric Jollès

Peter Krcmar Francesca Paola Nicoletti Guillaume Barre

Justin Deschenaux

Yann Martinson

Louis LeclairJulien Ars

Simon Guilloud

Page 27: ICC – Programmation · 2020. 9. 18. · ICC Programmation — Cours 1 Partie Programmation d’ICC • Approche pragmatique: make things work • Peu de théorie, davantage de pratique:

MX → BC 07-08

GC → CM 1 103, CM 1 112

Questions en suspens?(WhatsApp)