Pensée
Computationnelle
Adrian Holzer
Printemps 2020
La pensée computationnelle
représente une attitude et
des compétences
universellement applicables
que tout le monde, pas
seulement les
informaticien·ne·s, devrait
vouloir apprendre et utiliser.
JEANNETTE WING
La pensée computationnelle est un processus de résolution de problèmes
[Link]
[Link]
Représentation des données par le biais d'abstractions
Organisation et analyse logiques des données
Formulation de problèmes pour les résoudre avec un ordinateur
Automatisation de tâches à travers des algorithmes
Généralisation et transfert de ce processus de résolution de problèmes à une
grande variété de problèmes
Confiance
Persistance à
Tolérance face à la
travailler avec
de complexité
des problèmes
l'ambiguïté
difficiles
Capacité de
Capacité à communiquer et de
gérer des travailler avec les
problèmes autres pour
ouverts atteindre un
objectif commun
Attitudes pour améliorer ces compétences
[Link]
Exemples de problèmes
Les ordinateurs nous permettent d'étudier des choses qui étaient auparavant trop petites,
trop grandes, trop éloignées, trop rapides ou trop complexes.
Si vous remettiez à un
groupe de personnes le
journal d'aujourd'hui et
leur demandiez de trouver
les mots qui y figurent le
plus souvent, quel
processus suggéreriez-
vous qu'ils utilisent pour
trouver une réponse dans
les plus brefs délais?
[Link]
Concepts
Abstraction
Décomposition
Répétitions (Patterns)
1 2 3 Algorithme
1 2 3
Abstraction
Utiliser des abstractions pour représenter un problème.
Une abstraction est tout ce qui nous permet de nous concentrer sur des caractéristiques
importantes tout en mettant l'accent sur des détails moins importants, peut-être distrayants.
Abstraction - Modélisation
- Où est ma voiture? C'est une Seat rouge, plaques NE 8766
La couleur, le modèle et les plaques sont importants ici, les détails de l'année de modèle,
de la cylindrée du moteur, des dimensions des roues, etc. sont omis
Abstraction - Modélisation
Qu'est ce qui influence le prix TTC
Prix TTC = CHF 151.2
Abstraction - Modélisation
Qu'est ce qui influence le prix TTC
Prix HT taux TVA
Prix HT = CHF 140.-
TVA = CHF 11.2 Montant TVA
Prix TTC = CHF 151.2
Prix TTC
Prix TTC = Prix HT + TVA
Prix TTC = Prix HT + Taux TVA * Prix HT
Abstraction - Modélisation
Skate Plateau
plateau couleur
axes prix
roues grip
prix
Axe
Roue
couleur
couleur
prix
prix
roulement
Décomposition
Découper les problèmes en sous-problèmes
Stratégies de division et de conquête. L'idée est d'aborder un problème unique en le séparant
(le divisant) en ses sous-problèmes constitutifs, puis de le résoudre (le vaincre).
Design top down
Commencer par définir le problème
de manière grossière, avant de se
passer aux les détails.
Spécifications
Définition de caractéristiques désirées d'une solution.
Par exemple SpeakUp doit permettre:
De créer une salle
D'accéder à une salle
De poster des messages
Spécifications
Définition de caractéristiques désirées d'une solution.
Par exemple SpeakUp doit permettre:
De créer une salle
- un nom de salle est demandé
- la localisation est utilisée si la salle
est temporaire
- une salle peut être temporaire ou
permanente
D'accéder à une salle
De poster des messages
Spécifications
Définition de caractéristiques désirées d'une solution.
Par exemple SpeakUp doit permettre:
De créer une salle
- un nom de salle est demandé
- l'utilisateur entre un nom
- l'utilisateur appuie sur le bouton ok
pour confirmer et créer la salle
- une fois la salle crée, l'utilisateur
est amené dans la salle
- la localisation est utilisée si la salle
Répétition
Trouver les éléments qui se répètent pour les résoudre de la même manière
Les techniques de décomposition sont souvent appelées stratégies de division et de
conquête. L'idée est d'aborder un problème unique en le séparant (le divisant) en ses sous-
problèmes constitutifs, puis de le résoudre (le vaincre).
Traitements d'éléments dans une liste
Faire la moyenne des notes de chaque étudiant
Afficher les messages dans Whatsapp
Traitements récurrents
Evaluation journalière de rendement
Analyse de dossiers de crédit
Algorithme
Utiliser des algorithme pour résoudre un problème.
1 2 3
Un algorithme est une séquence d'instructions bien définie qui prend une ou plusieurs valeurs en
entrée et produit des valeurs en sortie.
Algorithme
Le mot «algorithme» vient de
Muhammad ibn Musa al-Khwarizmi
(780-850), un mathématicien perse
qui travaillait à la Maison de la
Sagesse, à Bagdad
Algorithm
Un algorithme est une séquence d'instructions bien définie qui prend une ou
plusieurs valeurs en entrée et produit des valeurs en sortie.
1 début
2 fais ça
Entrée Sortie
3 puis ça
4 fin
Algorithme
Un algorithme peut être exprimé dans un langage naturel (par exemple, le français), un language de
programmation (par exemple, en Python), ou du pseudo-code.
🥚
🍓 🎂
1 battre oeuf
2 verser lait
Entrée Sortie
3 mélanger
🥛
4 cuire
Algorithme
Exemple d'un algorithme en langage naturel
-(NSMutableArray*)
sortMessagesByTime:
(NSMutableArray*)messages{
NSDateFormatter *dateFormatter =
[[NSDateFormatter alloc]init];
[dateFormatter
setDateFormat:@"yyyy-MM-
dd'T'HH:mm:[Link]"];
NSSortDescriptor
*timeSortDescriptor =
Recent [[NSSortDescriptor alloc]
initWithKey:@"lastModified"
ascending:NO];
NSSortDescriptor
*contentSortDescriptor =
[[NSSortDescriptor alloc]
Entrée initWithKey:@"content"
ascending:YES]; Sortie
NSArray *sortDescriptors =
@[timeSortDescriptor,
contentSortDescriptor];
NSArray *sortedArray = [messages
sortedArrayUsingDescriptors:sortDescr
iptors];
return [sortedArray mutableCopy];
}
Exemple d'un algorithme en langage de programmation (Objective-C)
IF user clicks recent
THEN
Recent order messages from
newest to oldest
ELSE IF user clicks best
THEN
order messages
Entrée from best to Sortie
worst
END IF
END IF
Exemple d'un algorithme en pseudo-code (pas lié à un langage de programmation en particulier)
Programmer c'est écrire la recette d'un logiciel
Séquence d'Instructions
1 - fais ça
2 - puis ça
3 - et ça
1 2 3
Instructions
Variables x = 1
Conditions if then else
Boucles while
Fonctions f(x)
Variables
x = 1
Variables
un nom symbolique associé à une valeur qui peut être modifiée
(par exemple: x, mon_nom). En pseudo-code on peut utiliser le
symbole = pour assigner une valeur à une variable.
mon_nom = “Adrian”
age = 12
x = age
Des fois on utilise aussi le symbole ⟵ à la place du = pour indiquer une assignation.
Question
Q1 quels sont les valeurs des
variable à la fin de cette
age = 19 séquence?
x = 18
x = age A) age:18, x:19
age = age + 1 B) age:19, x:20
C) age:20, x:20
D) age:18, x:19
E) age: 20, x:19
Corrigé
Question
Q1 quels sont les valeurs des
variable à la fin de cette
age = 19 séquence?
x = 18
x = age A) age:18, x:19
age = age + 1 B) age:19, x:20
C) age:20, x:20
D) age:18, x:19
E) age: 20, x:19 ✅
Variables
On peut imaginer qu'une variable indique une adresse de
contenu. Pour changer la valeur d'une variable on peut soit
changer l'adresse pour indiquer un autre contenu, soit modifier
le contenu existant à cette adresse.
age = 19
x = 18
x = age
age = age + 1
Certains contenus sont immuables, comme les entiers, les chaînes de caractères, et autres.
Variables
On peut imaginer qu'une variable indique une adresse de
contenu. Pour changer la valeur d'une variable on peut soit
changer l'adresse pour indiquer un autre contenu, soit modifier
le contenu existant à cette adresse.
age = 19 age
x = 18
x = age
age = age + 1 19
Variables
On peut imaginer qu'une variable indique une adresse de
contenu. Pour changer la valeur d'une variable on peut soit
changer l'adresse pour indiquer un autre contenu, soit modifier
le contenu existant à cette adresse.
age = 19 age x
x = 18
x = age
age = age + 1 19 18
Variables
On peut imaginer qu'une variable indique une adresse de
contenu. Pour changer la valeur d'une variable on peut soit
changer l'adresse pour indiquer un autre contenu, soit modifier
le contenu existant à cette adresse.
age = 19 age x
x = 18
x = age
age = age + 1 19 18
Variables
On peut imaginer qu'une variable indique une adresse de
contenu. Pour changer la valeur d'une variable on peut soit
changer l'adresse pour indiquer un autre contenu, soit modifier
le contenu existant à cette adresse.
age = 19 age x
x = 18
x = age
age = age + 1 20 19 18
Variables mutables
Un exemple de variable mutable est la liste. On peut ajouter des
éléments.
mes_notes = [4,5] mes_notes
tes_notes = mes_notes
ajouter 6 à mes_notes
mes_notes = [2,1] 4,5
Variables mutables
Un exemple de variable mutable est la liste. On peut ajouter des
éléments.
mes_notes = [4,5] mes_notes tes_notes
tes_notes = mes_notes
ajouter 6 à mes_notes
mes_notes = [2,1] 4,5
Variables mutables
Un exemple de variable mutable est la liste. On peut ajouter des
éléments.
mes_notes = [4,5] mes_notes tes_notes
tes_notes = mes_notes
ajouter 6 à mes_notes
mes_notes = [2,1] 4,5,6
Variables mutables
Un exemple de variable mutable est la liste. On peut ajouter des
éléments.
mes_notes = [4,5] mes_notes tes_notes
tes_notes = mes_notes
ajouter 6 à mes_notes
mes_notes = [2,1] 2,1 4,5,6
Question
Q2 quels sont les valeurs des
mon_age = 20 variable à la fin de cette
séquence?
ton_age = 18
mon_age = ton_age A) mon_age:20, ton_age:18
ton_age = mon_age B) mon_age:18, ton_age:20
C) mon_age:20, ton_age:20
D) mon_age:18, ton_age:18
Corrigé
Question
Q2 quels sont les valeurs des
mon_age = 20 variable à la fin de cette
séquence?
ton_age = 18
mon_age = ton_age A) mon_age:20, ton_age:18
ton_age = mon_age B) mon_age:18, ton_age:20
C) mon_age:20, ton_age:20
D) mon_age:18, ton_age:18 ✅
Question
mon_age = 20
ton_age = 18 Comment faire pour permuter
les valeurs de deux variables?
mon_age = ton_age
ton_age = mon_age
Corrigé
Question
mon_age = 20
ton_age = 18 Comment faire pour permuter
les valeurs de deux variables?
temp = mon_age
mon_age = ton_age
Utiliser une variable temporaire
ton_age = temp
Conditions
3a
1 2
3b
Un programme doit souvent faire des choix. Pour cela, les
langages de programmation ont des instructions conditionnelles.
Si, alors, sinon
SI une condition
ALORS
instructions si condition vraie
SINON
instruction si condition vraie
FIN SI
IF THEN ELSE
Si, alors, sinon
age = 19
SI age > 18
ALORS
est_majeur = vrai
SINON
est_majeur = faux
FIN SI
Une variable booléenne est un type de variable à deux état: vrai et faux. Ici est_majeur est une
variable booléenne.
Si, alors, sinon
age = 17
SI age > 18
ALORS
est_majeur = vrai
SINON
est_majeur = faux
FIN SI
Une variable booléenne est un type de variable à deux état: vrai et faux. Ici est_majeur est une
variable booléenne.
Opérateurs de condition
Il existe une série d'opérateur logique utilisés pour tester si une
condition est vraie ou fausse.
== # teste l'égalité
>, >=, <, <=, pas # testent la différence
et, ou # testent plusieurs conditions
Opérateurs de condition
Il existe une série d'opérateur logique utilisés pour tester si une
condition est vraie ou fausse.
age == 18 # teste l'égalité
age pas 18 # testent la différence
(age >= 18) et (etat pas "marié") # testent
plusieurs conditions
Les opérateur et, ou, pas sont des fois représenté par les symboles ⋀, ⋁, ⌐ respectivement.
Et dans certains langage de programmation on trouve &&, ||, != respectivement.
Question
x = 18 Q3 quelles conditions sont vraies?
y = faux
A) x >= 18
B) y
C) pas y ou x > 0
D) x et y == 18
E) x > 0 et x <= 18
F) pas (y ou x > 18)
Corrigé
Question
x = 18 Q3 quelles conditions sont vraies?
y = faux
A) x >= 18
B) y
C) pas y ou x > 0
D) x et y == 18
E) x > 0 et x <= 18
F) pas (y ou x > 18)
Question
age = 18 Q4 quelles conditions sont vraies?
marie = faux
A) age >= 18
B) marie
C) pas marie ou age > 0
D) marie et age == 18
E) age > 0 et age <= 18
F) pas (marie ou age > 18)
Corrigé
Question
age = 18 Q4 quelles conditions sont vraies?
marie = faux
A) age >= 18
B) marie
C) pas marie ou age > 0
D) marie et age == 18
E) age > 0 et age <= 18
F) pas (marie ou age > 18)
Imbrication
SI age > 18
ALORS
SI marie
ALORS
impot = 10'000
SINON
impot = 5'000
FIN SI
SINON
impot = 0
FIN SI
Question rapide: x est vrai ou faux
grand=vrai
SI grand
ALORS
x = vrai
SINON
x = faux
FIN SI
Question rapide: x est vrai ou faux
grand=vrai
SI pas grand
ALORS
x = vrai
SINON
x = faux
FIN SI
Question rapide: x est vrai ou faux
grand=vrai
SI grand
ALORS
x = vrai
SINON
SI grand
ALORS
x = faux
FIN SI
FIN SI
Question rapide: x est vrai ou faux
grand=vrai
SI grand
ALORS
x = vrai
FIN SI
SI grand
ALORS
x = faux
FIN SI
Question
Vous avez passé deux examens, Marketing et Finance, les notes sont
assignées aux variables nm nf. Pour réussir, votre moyenne doit être d'au
moins 4 et vous ne pouvez pas avoir une note inférieure à 3. Écrivez des
instructions qui vous assigne la valeur correcte à la variable booléenne
reussi peu importe les valeurs des variables.
nf = 2
nm = 4
votre pseudo-code
reussi = ?
Corrigé
Solution
nf = 2
nm = 4
reussi = faux
SI (nf >= 3 et nm >= 3) et (nf + nm)/2 >= 4
ALORS
reussi = vrai
FIN SI
Répétition
1 2 3
Un programme doit souvent répéter les mêmes instructions
plusieurs fois, pour cela on a les boucles.
Boucle Tant que
TANT QUE une condition est vraie
ALORS
instruction
FIN TANT QUE
WHILE
Tant que
hello = faux
TANT QUE pas hello
ALORS
dire hello
FIN TANT QUE
dire fini
Boucle infinie
Tant que
hello = faux
TANT QUE pas hello
ALORS
dire hello
hello=vrai
FIN TANT QUE
dire fini
Modifier la condition depuis l'intérieur de la boucle
Question
Utilisez une boucle TANT QUE pour dire "bonjour" 40 fois.
BONUS: faites une boucle qui dit une fois "bonjour", une fois
"salut", en tout 40 fois.
Corrigé
Solution
x = 40
TANT QUE (x > 0)
ALORS
dire bonjour
x = x - 1
FIN TANT QUE
Boucle Pour
POUR une_variable = un_début à une_fin
ALORS
instruction
FIN POUR
FOR
Pour
POUR x = 1 à 40
ALORS
dire bonjour
FIN POUR
FOR
Pour
POUR x = 1 à 40
ALORS
dire x
FIN POUR
On peut utiliser la variable x dans la boucle
FONCTIONS
1 fn 3
1 2 3
Pour éviter de devoir réécrire des instructions qui sont utilisées à
plusieurs endroits, on a les fonctions.
Fonction
Exemples d'utilisation de fonctions
x = moyenne(4,5,6)
y = Sin(89)
print bonjour
trier liste
Fonction
Définition de la fonction
FONCTION nom(paramètres)
instructions
RETOUR valeur
FIN FONCTION
Utilisation de la fonction
nom(valeurs)
Fonction
Définition de la fonction
FONCTION moyenne(x,y,z)
m=(x+y+z)/3
RETOUR m
FIN FONCTION
Utilisation de la fonction
x=moyenne(4,5,6)
[Link]
Questionnaire conditions d'utilisation
Questions?