La programmation, je me lance !
Image cool
Dans deux heures…
-
Le mot « programmation » ne sera plus abstrait
-
Vous connaîtrez les bases d’une nouvelle langue
-
Vous aurez créé votre propre programme
Je pense à un nombre entre 0 et 857, devine lequel! Entre un nombre: 857 Trop grand! Entre un nombre: 412 Trop petit! Entre un nombre:
Je pense à un nombre entre 0 et 857, devine lequel! Entre un nombre: 857 Trop grand! Entre un nombre:
Je pense à un nombre entre 0 et 857, devine lequel! Entre un nombre:
Je pense à un nombre entre 0 et 857, devine lequel! Entre un nombre: 857 Trop grand! Entre un nombre: 412 Trop petit! Entre un nombre: 413 Bravo, tu as trouvé le nombre 413 en 3 essais!
Bonjour, moi c’est Sylvain

- 👨🎓 Ingénieur logiciel
- 👨💻 Développeur web depuis 20 ans
- 💘 J’anime des ateliers de programmation
- 📖 PS : j’ai écrit un livre pour apprendre à programmer

Insérer slide Clotilde
C’est quoi un
programme ?






⚠️ copyright

class LinuxArtifactJob(ArtifactJob):
package_re = r"public/build/target\.tar\.bz2"
product = "firefox"
_package_artifact_patterns = {
"{product}/crashreporter",
"{product}/dependentlibs.list",
"{product}/{product}",
"{product}/{product}-bin",
"{product}/minidump-analyzer",
"{product}/pingsender",
"{product}/plugin-container",
"{product}/updater",
"{product}/**/*.so",
}
@property
def package_artifact_patterns(self):
return {p.format(product=self.product) for p in self._package_artifact_patterns}
def process_package_artifact(self, filename, processed_filename):
added_entry = False
with JarWriter(file=processed_filename, compress_level=5) as writer:
with tarfile.open(filename) as reader:
for p, f in UnpackFinder(TarFinder(filename, reader)):
if not any(
mozpath.match(p, pat) for pat in self.package_artifact_patterns
):
continue
# We strip off the relative "firefox/" bit from the path,
# but otherwise preserve it.
destpath = mozpath.join("bin", mozpath.relpath(p, self.product))
self.log(
logging.DEBUG,
"artifact",
{"destpath": destpath},
"Adding {destpath} to processed archive",
)
writer.add(destpath.encode("utf-8"), f.open(), mode=f.mode)
added_entry = True
if not added_entry:
raise ValueError(
'Archive format changed! No pattern from "{patterns}" '
"matched an archive path.".format(
patterns=LinuxArtifactJob.package_artifact_patterns
)
)
class MacArtifactJob(ArtifactJob):
package_re = r"public/build/target\.dmg"
product = "firefox"
# These get copied into dist/bin without the path, so "root/a/b/c" -> "dist/bin/c".
_paths_no_keep_path = (
"Contents/MacOS",
[
"crashreporter.app/Contents/MacOS/crashreporter",
"{product}",
"{product}-bin",
"*.dylib",
"minidump-analyzer",
"pingsender",
"plugin-container.app/Contents/MacOS/plugin-container",
"updater.app/Contents/MacOS/org.mozilla.updater",
# 'xpcshell',
"XUL",
],
)
Programme
Code source
- Allumer les moteurs
- Ajuster la vitesse à 18km/h
- Attendre de toucher le sol
- Couper les moteurs
- Planter le drapeau
Programme d’alunissage
⛳
- Mettre du sucre, de la farine et du cacao dans un saladier
- Ajouter de l’huile et des pépites de chocolat
- Mélanger
- Mettre au four 23 minutes à 180°
- Sortir du four et manger
Brownies double chocolat
🤤
Conclusion
Un programme est une recette de cuisine
écrite dans une langue appelée langage de programmation
Il existe des milliers de langages de programmation
HTML
PHP
CSS
JavaScript
Python
C
Assembleur
Java
Elm
Pascal
Ruby
R
Basic
😵
Python
✨
✨
✨
✨
Apprendre à programmer
c’est facile

(surtout en deux heures)

>>> print("Salut!)
File "", line 1
print("Salut!)
^
SyntaxError: EOL while scanning string literal
Les erreurs sont là pour vous aider !
Bon on écrit du code ou quoi ⁉️
Ouvrez votre navigateur et allez sur
https://repl.it/login
Login: ateliergdc
Mot de passe: ******
Minute 20


1
2
3
Éditeur de code (écrivez ici !)
Zone d’affichage
Cliquez pour exécuter votre code

print("Salut!")
print("C’est mon premier programme!")
Un peu d’arithmétique
print("Salut" + " tout le monde")
Salut tout le monde
print("2" + "2")
22
print(2 + 2)
4
print(2 + "2")
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Nombres entiers
40
5
12
-7
20
…
Chaînes de caractères
(integers)
(strings)
"Salut"
"40"
"12"
"Le nombre 40"
…
🛠 Outil : les fonctions 🛠
Une fonction est un raccourci pour exécuter plusieurs instructions
print("Salut!")
Minute 30
print("Quel est ton nom?")
Fonction
Paramètre

Certaines fonctions renvoient une valeur

max(5, 8, 2, 1, -2)
Trop petit?
On peut créer ses propres fonctions
(mais pas aujourd’hui)
-
check_password("Sylvain", "1234")
-
fire_thrusts(90)
-
play_music("Idioteque.mp3")
Quelques fonctions de Python
-
print("Bonjour")
-
input("Entrez un nombre: ")
-
max(4, -3, 1)
-
int("5")
-
str(5)
Liste complète: https://docs.python.org/fr/3/library/functions.html
"30"
4
5
"5"


int(input("Entre un nombre"))
Couleurs valeurs
Nombres entiers
40
5
12
-7
20
…
Chaînes de caractères
(integers)
(strings)
"Salut"
"40"
"12"
"Le nombre 40"
…
str()
int()
🛠️ Outil : les variables 🛠️
Une variable est un nom donné à une valeur
x = 5
Minute 40
my_name = "Sylvain"
number = 4



Changer my_name mettre Clotilde
Emoji stylo
Exemples de variables
-
my_name = "Sylvain"
-
nb_books_read = 57
-
current_date = "04.10.2021"
Nom de la variable
Valeur
my_name = "Sylvain"
print(my_name)
Pas de guillemets autour du nom de la variable


🧐
✍️
Assigner une valeur à une variable
my_name = input("Comment t’appelles-tu? ")
print(my_name)



✍️
🧐
Mettre le résultat d’une fonction dans une variable
Ajouter étape de transition après print(my_name)
my_name = "Sylvain"
my name = "Sylvain"
print("my_name")
print(my name)
print(my_name)
print(your_name)
input("Votre nom: ") = your_name
your_name = input("Votre nom: ")
my_name = Sylvain
❌
✅
✅
✅
❌
❌
❌
❌
❌
Exemples d’instructions correctes et incorrectes
Bon on écrit du code ou quoi ⁉️
number = input("Devinez le nombre auquel je pense: ")
print("Vous avez entré le nombre " + number)
- Poser la question "Devinez le nombre auquel je pense: " et mettre le résultat dans la variable number
- Afficher "Vous avez entré le nombre " + number
Rappel :
Afficher ➡️ print("Texte à afficher")
Poser une question ➡️ input("Question: ")
Mettre le résultat dans une variable ➡️ variable = ...
🛠️ Outil : les conditions 🛠️
Les conditions servent à créer des embranchements
if condition: instruction1 else: instruction2
Est-ce que … ?
Instruction 1
Oui
Non
Instruction 2
1h
Une condition est soit vraie (True) soit fausse (False)
print(2 < 5)
True
print(2 > 5)
False
print(2 == 5)
False
print(2 != 5)
True
Exemples de conditions
print(not True)
False
print(2 > "2")
TypeError: '>' not supported between instances of 'int' and 'str'
Nombres
40
5
12
-7
20
…
Chaînes de caractères
(integers)
(strings)
"Salut"
"40"
"12"
"Le nombre 40"
…
True
False
Valeurs vrai/faux
- < est plus petit que
- > est plus grand que
- == est égal à
- != est différent de
- not inverse le résultat
Résumé des opérateurs de comparaison
Exemple de programme avec un embranchement
- Poser la question "Entre un nombre: ", convertir le résultat en nombre, et le mettre dans la variable number
- Si la valeur de la variable number est 4, alors
- Afficher "Bravo!"
- Afficher "C’est le nombre auquel je pensais!"
- Sinon
- Afficher "Ce n’est pas le bon nombre"
Exemple de programme avec un embranchement
Poser la question "Entre un nombre" et convertir le résultat
Afficher "Bravo!"
Oui
Non
Afficher "Ce n’est pas…"
Est-ce que le nombre vaut 4?
Afficher "C’est le nombre…"
Exemple de programme avec un embranchement
number = int(input("Entre un nombre: "))
if number == 4:
print("Bravo, tu as deviné!")
print("C’est le nombre auquel je pensais!")
else:
print("Ce n’est pas le nombre aquel je pensais")
- 4 espaces
- Exécuté seulement si la condition est vraie
Ne pas oublier les deux-points !
- 4 espaces
- Exécuté seulement si la condition est fausse
Exemple de programme avec plusieurs embranchements
number = int(input("Entre un nombre: "))
if number == 4:
print("Bravo, tu as deviné!")
print("C’est le nombre auquel je pensais!")
elif number == 5:
print("Ce n’est pas le bon nombre, mais pas loin!")
elif number < 0:
print("Tu vas chercher trop loin!")
else:
print("Ce n’est pas le nombre aquel je pensais")
Bon on écrit du code ou quoi ⁉️
- Mettre le nombre 4 dans la variable number
- Poser la question "Entre un nombre: ", convertir le résultat en nombre, et mettre le résultat dans la variable guess
- Si la valeur de la variable guess < number, alors
- Afficher "Trop petit!"
- Sinon, si guess > number, alors
- Afficher "Trop grand!"
- Sinon
- Afficher "Bravo!"
if condition1:
...
elif condition2:
...
else:
...
faire capture d’écran de la solution
🛠️ Outil : les modules Python 🛠️
Dans Python, les piles sont incluses
import datetime print(datetime.datetime.now())
1h20
Le but : faire plein de trucs sans avoir à les programmer nous-mêmes !
- Manipulation de dates
- Accès aux fichiers
- Statistiques
- E-mails
- Web
- Aléatoire
- …
Plein de trucs comme :
Exemple : le module random
Comme de par hasard c’est pile ce qu’il nous faut ! 🤩
random.randint(a, b)
Renvoie un entier aléatoire N tel
que a <= N <= b.
import random
print(random.randint(0, 42))
# 39
print(random.randint(0, 42))
# 18
Exemple : le module random
Charge le code du module (à mettre tout en haut !)
Modifiez votre programme pour faire deviner un nombre aléatoire
import random
number = random.randint(0, 255)
print(number)
Rappel
🛠️ Outil : les boucles 🛠️
Les boucles permettent d’exécuter un bout de code plusieurs fois
while condition: instructions
1h30
counter = 0
while counter < 5:
print("Le compteur est à " + str(counter))
counter = counter + 1
print("Le compteur est terminé")
# Le compteur est à 0
# Le compteur est à 1
# Le compteur est à 2
# Le compteur est à 3
# Le compteur est à 4
# Le compteur est terminé
Deux-points, comme pour les if
4 espaces, comme pour les if
Exemple de boucle : un compteur
Schéma embranchement
number_found = False
while not number_found:
number = int(input("Entre un nombre: "))
if number == 4:
number_found = True
print("Bravo!")
else:
print("Ce n’est pas le bon nombre!")
Exemple de boucle : poser une question
- Créer une variable number avec un nombre aléatoire compris entre 0 et 42
- Créer une variable number_found avec comme valeur initiale False
- Tant que number_found est False:
- Poser la question "Entre un nombre entre 0 et 42: ", convertir le résultat en nombre, et le mettre dans la variable guess
- Si guess < number, alors:
- Afficher "Trop petit!"
- Sinon, si guess > number, alors:
- Afficher "Trop grand!"
- Sinon:
- Afficher "Bravo!"
- Assigner True à la variable number_found
Modifiez votre programme pour qu’il corresponde à ça
import random
number = random.randint(0, 42)
number_found = False
while not number_found:
guess = int(input("Entre un nombre entre 0 et 42: "))
if guess == number:
print("Bravo! Le nombre à deviner était " + str(number))
number_found = True
elif guess < number:
print("Trop petit!")
else:
print("Trop grand!")
Solution
Et maintenant ?
- https://geniesducode.com/intro-python (cette présentation)
- Documentation officielle de Python
- Génies du code
- Tutoriel Django Girls
- Exercism.io (exercices Python)
- CodeWars (exercices Python)
1h50
La programmation, je me lance !
By Sylvain Roflmao
La programmation, je me lance !
- 220