La programmation, je me lance!
Sylvain Fankhauser
Novembre 2020
Qui suis-je?
- Ingénieur en développement logiciel
- Développeur web depuis une quinzaine d’années
- Passionné par la programmation
- Nul en maths
J’aime partager ma passion

Peut-être même
un peu trop



Pourquoi apprendre à programmer?
Pour plein de raisons!
- Ça aide à comprendre les outils qu’on utilise au quotidien
- Il y a une grosse demande dans ce domaine (et un manque de diversité flagrant)
- Ça vous permettra de créer vos propres programmes pour vous simplifier la vie
- Ça nécessite peu d’outils (un ordinateur et
une connexion) - C'est marrant et stimulant!
Dans deux heures vous aurez appris les bases
d’une nouvelle langue
Avertissement: deux heures, c’est court
Avertissement 2: vous allez faire des erreurs,
c’est normal!
Mensonges et vérités au sujet de la programmation
- C’est de la magie
- Vous devez être doué·e en maths
- Vous devez être patient·e
- C’est un métier d’hommes
- Cela nécessite de longues études
- Vous ne saurez jamais tout ce qu’il y a à savoir
Quels programmes connaissez-vous?





Alors c’est quoi un programme?
Un programme est un ensemble d’instructions, qui réalise une certaine tâche lorsqu’il est exécuté par un ordinateur
Une recette de cuisine est un ensemble d’instructions, qui réalise un certain plat lorsqu’elle est exécutée par un-e humain-e

Instructions
Résultat
(normalement)

Exercice!
- Formez des groupes de 2 personnes
- Une personne prend le rôle de programmeuse, l’autre de robot
- La programmeuse doit faire en sorte que le robot lui ramène la balle de ping-pong en utilisant uniquement les instructions suivantes:
- Faire un pas
- En avant
- En arrière
- Tourner
- X fois
- X degrés
- Lever
- Baisser
- Bras
- Main
- Ouvrir
- Fermer
- Gauche
- Droite
- Vous pouvez combiner ces instructions, par exemple «Faire un pas en avant 3 fois»
Exercice!
- Aidez-moi à faire un sandwich!
- Vous ne pouvez utiliser que les instructions suivantes, rien d’autre
- TODO
- Faire un pas
- En avant
- En arrière
- Tourner
- X fois
- X degrés
- Lever
- Baisser
- Bras
- Main
- Ouvrir
- Fermer
- Gauche
- Droite
- Vous pouvez combiner ces instructions, par exemple «Faire un pas en avant 3 fois»
Quelle langue parlent les ordinateurs?
(Indice: pas le français)

😨
(Indice 2: pas le néerlandais)
Les ordinateurs parlent le binaire
ou langage machine
C’est une langue trop difficile à apprendre pour nous
Comment faire?
Instructions 🇳🇱
Interprète
😌
Instructions 🇬🇧
Je peux exécuter les instructions!

🧑🦰

Instructions (langage compréhensible)

Interpréteur (Python)
💻
1000010110111111011101101010110111111101011110010
Instructions (code machine / binaire)
L'ordinateur exécute les instructions
name = input("Quel est ton nom?")
print("Salut " + name + "!")
print("Bienvenue dans mon premier programme.")
🎊 Résultat 🎉

Un langage de programmation est la combinaison d’une syntaxe et d’un programme pour traduire cette syntaxe en langage machine
name = input("Quel est ton nom?")
print("Salut " + name + "!")
print("Bienvenue dans mon premier programme.")

Interpréteur
10000101 10111111 01110110
10101101 11111101 01111001
Il existe des milliers de langages de programmation
(comme les langues!)
😱
Pas besoin de tous les connaître!
(comme les langues!)
Objectif du jour:
Apprendre Python
en créant un jeu!
Enfin, le voilà! Le livre que vous cherchiez tant, le Necronomicon,
placé entre "Nettoyer sa maison avec le bicarbonate de soude" et
"Naturellement naturel: renouer avec la nature à l’aide de son smartphone".
Alors que vous tentez de sortir l’ouvrage du rayon, vous entendez un déclic,
l’étagère coulisse d’une quarantaine de centimètres, laissant deviner un
couloir obscur dans le mur. Personne autour de vous ne semble avoir remarqué
quoi que ce soit.
a) Observer le couloir
b) Vous faufiler dans le couloir
c) Vous rendre à l’accueil pour signaler le comportement suspect de ce rayon
Que souhaitez-vous faire? c
Vous prenez place derrière la file composée d’une douzaine de personnes.
Vous apercevez d’où vous vous trouvez l’ouverture dans le mur. Vous ne la
quittez pas des yeux. Après dix longues minutes d’attente, remarquant que la
file n’avance pas, vous décidez de retourner voir l’ouverture.
a) Observer le couloir
b) Vous faufiler dans le couloir
Que souhaitez-vous faire?
Python est un langage de programmation général
Avec ce langage vous pourrez créer:
- Des sites web
- Des jeux
- Des applications graphiques
- Des programmes de statistique et d’analyse (machine learning)
- À peu près n’importe quoi!
Exercice!
- Ouvrez votre navigateur et allez sur https://repl.it/languages/python3
- Entrez le code suivant:
print("Salut!")
print("C'est mon premier programme!")
- Cliquez sur le bouton en haut de l'écran
- Observez le résultat dans la fenêtre de droite


https://repl.it/@sephii/intro#exercice_1.py
Exercice!
Utilisez des instructions print pour décrire la première scène de votre jeu d’aventure. Par exemple:
- Alors que vous suivez un cours d'introduction à la programmation, l'écran de votre ordinateur scintille d'une lumière étrange. Vous sentez que la réalité autour de vous perd de sa substance
- Vous êtes un enfant perdu dans un supermarché. Les gens vous bousculent et se ruent sur le papier toilettes. Où sont vos parents?
- Vous vous trouvez dans la station spatiale internationale. Un panneau solaire indique une anomalie. Il faudrait sortir le réparer mais vos collègues ont disparu et vous êtes seule à bord.
- Laissez parler votre imagination!
print("Vous vous trouvez...")
https://repl.it/@sephii/intro#exercice_2.py
4 concepts
incontournables
- Types
- Variables
- Fonctions
- Structures de contrôle:
conditions et boucles
Types
Un type sert à catégoriser des valeurs
Exemples de catégories dans le monde réel:
- Chien
- Arbre
- Nombre
- ...
Types
3 types de base importants:
- Chaînes de caractères (délimitées par des guillemets, p.ex. "Salut!")
- Nombres (sans guillemets, p.ex. 42)
- Booléens (valeur vraie au fausse, mots-clés True et False)
Types et opérateurs
print(1 + 1)
2
print("Salut " + "Sylvain")
Salut Sylvain
print(2 * 2)
4
print("Sylvain" * 2)
SylvainSylvain
Opérateurs arithmétiques: +, -, *, /
Types et opérateurs
print(1 > 1)
False
print("Sylvain" == "sylvain")
False
print(1 + 1 == 3)
False
print("Sylvain" != "Georges")
True
Opérateurs de comparaison: >, <, ==, !=
Attention au mélange des types
print("J'ai " + 34 + " ans")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
print("J'ai " + "34" + " ans")
J'ai 34 ans
✅
❌
Attention aux opérateurs de comparaison
print(1 + 1 = 2)
File "<stdin>", line 1
SyntaxError: cannot assign to operator
print(1 + 1 == 2)
True
print(12 != 12)
False
✅
❌
== : est égal à
!= : est différent de
Les variables
- Syntaxe:
- Servent à garder une information pour plus tard
my_name = "Julie"
print("Salut " + my_name + "!")
Salut Julie!
- Pas de guillemets autour du nom de la variable!
my_name = "Julie"
print("Salut " + "my_name" + "!")
Salut my_name!
❌

nom = valeur
Les fonctions
print("Hello world")
Fonction
Paramètre
Les fonctions peuvent «renvoyer» des valeurs

max_number = max(5, 2, 8, 1, -2)
print(max_number)
Exercice!
Modifiez votre programme pour demander le nom de la personne qui l’utilise, puis affichez-le dans votre première scène (par exemple un personnage interpelle le joueur ou la joueuse).
Indices
- La fonction input permet de récupérer du texte rentré au clavier
- Vous pouvez passer en paramètre à cette fonction la question à afficher (p.ex. "Entrez votre nom: ")
- Utilisez une variable pour stocker le nom de la personne
- Utilisez l’opérateur + pour concaténer le nom au reste du texte
- Coincé·e? Jetez un œil à https://repl.it/@sephii/intro#exercice_3.py
Conditions

Conditions

Trame linéaire
import datetime
name = input("Comment vous appelez-vous?")
print("Salut " + name + "!")
print("Aujourd'hui nous sommes " +
datetime.date.today().strftime("j")
)
Conditions

Conditions

Trame non linéaire
Conditions

Trame non linéaire
Conditions
Syntaxe des conditions
Si nom vaut "Sylvain"
Afficher "On se connaît!"
Afficher "Merci d’utiliser mon programme!"
name = input("Comment vous appelez-vous? ")
if name == "Sylvain":
print("On se connaît!")
print("À bientôt!")
print("Merci d’utiliser mon programme!")
Bloc d’instructions (espaces!)
Condition
Afficher "À bientôt!"
Demander le nom
En dehors du bloc (pas d'espaces)
Conditions avec
2 branches
Si nom == "Sylvain"
Afficher "On se connaît!"
Afficher "Merci d’utiliser mon programme!"
name = input("Comment vous appelez-vous? ")
if name == "Sylvain":
print("On se connaît!")
print("À bientôt!")
else:
print("Merci d’utiliser mon programme!")
Bloc d’instructions (espaces!)
Comparaison
Afficher "À bientôt!"
Demander le nom
Sinon
Conditions avec
n branches
Si nom == "Sylvain"
Afficher "On se connaît!"
Afficher "Salut Julie!"
name = input("Comment vous appelez-vous? ")
if name == "Sylvain":
print("On se connaît!")
print("À bientôt!")
elif name == "Julie":
print("Salut Julie!")
else:
print("Merci d’utiliser mon programme!")
Afficher "À bientôt!"
Demander le nom
Sinon
Si nom == "Julie"
Afficher "Merci d’utiliser mon programme!"
Bloc exécuté seulement si on est entré dans aucune autre branche
Exercice!
Ajoutez un choix après la description de votre première scène. Par exemple en proposant au joueur ou à la joueuse de faire une action (se déplacer, interagir avec un objet, etc).
Indices
- Utilisez la fonction input pour récupérer une lettre liée à l’option
- Utilisez une structure if ... elif ... else en comparant l’option entrée aux lettres a, b, c, etc
- Affichez un dénouement différent suivant l’option choisie
- Ne gérez pas les entrées invalides pour l’instant
- Coincé·e? Jetez un œil à https://repl.it/@sephii/intro#exercice_4.py
a) regarder si les personnes autour de vous ont remarqué cette lueur
b) appuyer sur des touches de votre clavier en espérant que cela fasse disparaître cette lueur étrange
Faites un choix:
Les fonctions,
le retour
Rappel
Une fonction est une boîte noire qui exécute des instructions et peut renvoyer une valeur

max(5, 2, 8, 1, -2)
On peut créer ses propres fonctions
print("Salut Sylvain!")
print("Salut Julie!")
print("Salut Harold!")
On peut créer ses propres fonctions
print("Salut Sylvain!")
print("Salut Julie!")
print("Salut Harold!")
=
def greet(name):
print("Salut " + name + "!")
greet("Sylvain")
greet("Julie")
greet("Harold")
Réduit la duplication de code
On peut créer ses propres fonctions
def greet(name):
print("Salut " + name + "!")
greet("Sylvain")
greet("Julie")
greet("Harold")
def signifie define
nom de la fonction
paramètre
corps de la fonction
exécution de la fonction greet
Une fonction peut renvoyer une valeur
def beautify(name):
return "***" + name + "***"
print(beautify("Sylvain"))
Exercice!
Créez une fonction get_choice dans votre programme, qui demande de faire un choix avec le texte "Que souhaitez-vous faire? ", et qui renvoie le choix. Remplacez les appels à la fonction input dans votre programme par get_choice.
Indices
- Utilisez le mot-clef def pour créer une fonction
- La fonction n’a pas de paramètre
- Utilisez le mot-clef return pour renvoyer la valeur entrée
- Coincé·e? Jetez un œil à https://repl.it/@sephii/intro#exercice_5.py
Exercice!
Organisez les post-it pour représenter le programme suivant:
Afficher "Présentation de scene_1"
Demander choix et stocker dans variable "choice"
Exécuter scene_2
Exécuter scene_3
Si choix vaut "a"
Sinon, si choix vaut "b"
scene_1
Afficher "Présentation de scene_2"
scene_2
Afficher "Présentation de scene_3"
scene_3
def scene_1():
...
Exercice!
Modifiez votre programme en mettant le code de vos scènes dans des fonctions, comme dans l’exercice des post-it.
https://repl.it/@sephii/intro#exercice_6.py
Les boucles
À quoi ça sert?
print("a) Ouvrir la porte")
print("b) Coller l’oreille contre la porte")
choice = input("Faites un choix: ")
if choice == "a":
print("...")
elif choice == "b":
print("...")
else:
print("Veuillez entrer un choix valide!")
Le programme se termine si le choix n’est pas valide!
Demander choix et stocker dans la variable "choice"
Afficher "..."
Afficher "..."
Afficher "Veuillez entrer un choix valide!"
Fin du programme
Si choix vaut "a"
Sinon, si choix
vaut "b"
Sinon
Déroulement d’une boucle (schéma)
Demander choix et stocker dans la variable "choice"
Afficher "..."
Afficher "..."
Afficher "Veuillez entrer un choix valide!"
Si choix vaut "a"
Sinon, si choix
vaut "b"
Sinon
Initialiser choice = ""
Si choix vaut
"a" ou "b"
Fin du programme
Sinon
* ce schéma est plus complexe que le code
Déroulement d’une boucle (code)
print("a) Ouvrir la porte")
print("b) Coller l’oreille contre la porte")
choice = ""
while choice != "a" and choice != "b":
choice = input("Faites un choix: ")
if choice == "a":
print("...")
elif choice == "b":
print("...")
else:
print("Veuillez entrer un choix valide!")
Les listes
def get_choice(options):
choice = input("Faites un choix: ")
if choice not in options:
print("Ce choix n’est pas valide!")
else:
print("Vous avez choisi " + choice)
get_choice(["a", "b", "c"])
Nouveau type de données ! Elles permettent de regrouper des données. Les éléments d’une liste sont placés entre [] et séparés par des virgules
Cette liste a 3 éléments: "a", "b" et "c"
Exercice!
Ajoutez un paramètre options à votre fonction get_choice. Faites en sorte qu’elle empêche d’entrer un choix qui ne fait pas partie de la liste options.
Indices
- Utilisez une boucle while pour demander un choix tant qu’il n’est pas valide
- Initialisez choice avec une valeur vide avant de démarrer la boucle
- N’oubliez pas de modifier les appels à get_choice pour y ajouter les choix valides
- Coincé·e? Jetez un œil à https://repl.it/@sephii/intro#exercice_7.py
def get_choice(options):
choice = input("Faites un choix: ")
if choice not in options:
print("Ce choix n’est pas valide!")
else:
print("Vous avez choisi " + choice)
get_choice(["a", "b", "c"])
Bravo, vous parlez une nouvelle langue!
🥳
🎉
✨
Pour aller plus loin
Sylvain Fankhauser (@roflmaokthxbye)
Génies du code (@geniesducode)
La programmation, je me lance!
By Sylvain Roflmao
La programmation, je me lance!
- 261