• Aucun résultat trouvé

Algorithmique et Programmation 1 Conditionnelles et expressions booléennes

N/A
N/A
Protected

Academic year: 2022

Partager "Algorithmique et Programmation 1 Conditionnelles et expressions booléennes"

Copied!
17
0
0

Texte intégral

(1)

Algorithmique et Programmation 1

Conditionnelles et expressions booléennes

Licences Informatique et Mathématiques 1ère année

Premier semestre 2015 – 2016

(2)

Un exemple

Voilà ce qu’on a appris à faire la semaine dernière :

# La note finale est la moyenne de la note d'examen

# et de la moyenne de contrôle continu

note_cc1 = float(input('Note du premier contrôle : ')) note_cc2 = float(input('Note du second contrôle : ')) note_exam = float(input("Note de l'examen : ")) moyenne_cc = (note_cc1 + note_cc2) / 2

note_finale = (moyenne_cc + note_exam) / 2 print('Note finale :', note_finale)

I Les instructionsdu programme sont exécutées dans l’ordre

I On va maintenant ajouter la possibilité de faire des choix

(3)

Conditionnelles – cas simple

I On peut modifier le flot d’instructions grâce à des conditions :

I Siune certaine condition est vraie, exécuter un certain groupe (oubloc) d’instructions

I Sinon, passer directement à la

suite du programme suite

blocv

condition

vrai

faux début

(4)

Un exemple... avec un if

# La note finale est le maximum de la note d'examen

# et de la moyenne entre examen et moyenne de contrôle

# continu

note_cc1 = float(input('Note du premier contrôle : ')) note_cc2 = float(input('Note du second contrôle : ')) note_exam = float(input("Note de l'examen : ")) moyenne_cc = (note_cc1 + note_cc2) / 2

note_finale = (moyenne_cc + note_exam) / 2 if note_finale < note_exam:

# Les deux instructions suivantes ne s'exécutent que si

# la condition est vraie (remarquer le décalage des lignes) note_finale = note_exam

print('Note de contrôle non prise en compte.') print('Note finale :', note_finale)

(5)

Blocs d’instructions

Sur cet exemple, on a vu des groupes de lignes commençant par des espaces :

if moyenne_cc < note_exam:

note_finale = note_exam

print('Note de contrôle non prise en compte.')

I Ces groupes sont appelésblocs

I Le décalage du début de ligne est appelé indentation

I Toutes les lignes ont exactement la même indentation

I Ici, le bloc est introduit par une condition (if ... :)

I Changer l’indentation change le sens du programme (essayer !)

(6)

Syntaxe de if

# début if condition:

# bloc d'instructionsv

# suite

Exemple :

prenom = input()

if prenom == 'Hildegarde':

print('Très joli prénom !') print('Bonjour', prenom, '!')

I conditionest uneexpression booléenne

I Les instructions du bloc v sont exécutées uniquement si conditionest évaluée à True

I Dans tous les cas, reprise à l’instruction suivant le blocv

(7)

Expressions booléennes

Les conditions sont écrites à l’aide d’expressions booléennes

I Le type boolreprésente les valeurs vrai (True) et faux (False)

I Plusieurs opérateurs produisent des booléens

I Comparaisons : a < b a <= b a >= b a > b

I Égalité ou inégalité : a == b a != b

I Ces opérateurs fonctionnent sur de nombreux types de valeurs

I Sur lesintetfloat : ordre naturel

I Sur lesstr: ordre lexicographique (dictionnaire)

Ne pas confondrea = b (affectation) et a == b(test d’égalité) !

(8)

Expressions booléennes

I On peut combiner plusieurs expressions booléennes

I a and bvautTruesi aetbvalent True

I a or b vautTruesia oubvalent True

I not avautTruesi avautFalse a not a True False False True

a b a and b

True True True True False False False True False False False False

a b a or b

True True True True False True False True True False False False

(9)

Expressions booléennes

I Un exemple (dans l’interpréteur) :

>>> True and False False

>>> not 3 + 4 == 7 False

>>> 4 < 1 or 'Bonjour' >= 'Au revoir' True

I Un exemple plus long :

(n <= 3 and somme + n > seuil) or n > 3

I Pour quelles valeurs des trois variables cette expression vaut-elle True? False?

(10)

Conditionnelles à deux branches

I On peut ajouter un second bloc d’instructions :

I Siune certaine condition est vraie, exécuter un certain bloc (v)

I Sinon, exécuter un autre bloc (f)

I Enfin, continuer l’exécution normale du programme

I Seul l’un des deux blocs,v ou

bienf, est exécuté suite

blocf blocv

condition

vrai faux

début

(11)

Un exemple

Un exemple de condition à deux “branches” :

note_cc1 = float(input('Note du premier contrôle : ')) note_cc2 = float(input('Note du second contrôle : ')) note_exam = float(input("Note de l'examen : ")) moyenne_cc = (note_cc1 + note_cc2) / 2

if moyenne_cc < note_exam:

# Bloc à exécuter si la condition est vraie note_finale = note_exam

print('Note de contrôle non prise en compte.') else:

# Bloc à exécuter si la condition est fausse note_finale = (moyenne_cc + note_exam) / 2 print('Note de contrôle prise en compte.')

# Instruction exécutée dans tous les cas print('Note finale :', note_finale)

(12)

Syntaxe de if ... else

# début if condition:

# blocv else:

# blocf

# suite

Exemple :

num = int(input()) den = int(input()) if den != 0:

print(num, '=',

num // den, '*', den, '+', num % den ) else:

print('Division par zéro')

I Les instructions du bloc v sont exécutées uniquement si conditionest évaluée à True

I Les instructions du bloc fsont exécutées uniquement si conditionest évaluée à False

Dans tous les cas, reprise à l’instruction suivant le blocf

(13)

Conditionnelles composées

Cette construction peut être imbriquée :

# début

if condition 1:

if condition 2:

# blocv1v2 else:

# blocv1f2

# suite 2 else:

# blocf1

# suite 1

suite 1 suite 2

blocf1 blocv1f2

blocv1v2 condition 2

vrai faux

condition 1 vrai

faux début

(Toutes les variantes sont possibles – si chaqueelsecorrespond à un if !)

(14)

Un exemple – conditions imbriquées

note_cc1 = float(input('Note du premier contrôle : ')) note_cc2 = float(input('Note du second contrôle : ')) note_exam = float(input("Note de l'examen : "))

# On vérifie qu'aucune note n'est négative

if note_cc1 < 0 or note_cc2 < 0 or note_exam < 0:

# Remarquer l'opérateur 'or'

print('Erreur de saisie (note négative).') else:

moyenne_cc = (note_cc1 + note_cc2) / 2

# Condition dans la condition if moyenne_cc < note_exam:

# Indentation supplémentaire note_finale = note_exam

print('Note de contrôle non prise en compte.') else:

note_finale = (moyenne_cc + note_exam) / 2 print('Note de contrôle prise en compte.')

(15)

Conditionnelles enchaînées avec elif

Cas particulier où le blocelsecontient seulement un autreif : Le code...

# début

if condition 1:

# bloc v1 else:

if condition 2:

# bloc f1v2 else:

# bloc f1f2

# suite

... s’écrit aussi :

# début

if condition 1:

# blocv1 elif condition 2:

# blocf1v2 else:

# blocf1f2

# suite

(16)

Conditionnelles enchaînées avec elif

Cas particulier où le blocelsecontient seulement un autreif : Le code...

# début

if condition 1:

# bloc v1 else:

if condition 2:

# bloc f1v2 else:

if condition 3:

# blocf1f2v3 else:

# blocf1f2f3

# suite

... s’écrit aussi :

# début

if condition 1:

# blocv1 elif condition 2:

# blocf1v2 elif condition 3:

# blocf1f2v3 else:

# blocf1f2f3

# suite

(17)

Un exemple – if ... elif

if note_finale < 10:

print('Encore un petit effort !') elif note_finale < 12:

print('Ça passe !') elif note_finale < 14:

print('Pas mal !')

else: # Quelles valeurs possibles ? print('Bravo !')

Références

Documents relatifs

Enûn la sémantique de chaque instruction élémentaire comporte un test sur le sommet de la pile x, qui détermine suivant la valeur du prédicat co si cette instruction doit

Pour demander à la machine d’afficher un message dans la console, on peut utiliser la fonction print.. Par exemple,

Écrire un programme demande à l’utilisateur de saisir 3 notes au clavier, ainsi que leurs coefficients, puis affiche à la console la moyenne pondérée, en précisant « ajourné »

Exercice 2 (Somme des éléments d’une liste) Écrire une fonction somme_liste.. • d’argument L une liste d’expressions de type

[r]

[r]

Par dérogation à ce qui précède, lorsque le fonds est un ETF, les rachats sur le marché primaire peuvent, avec l’accord de la société de gestion de portefeuille et dans le

- Arms: wooden structure fitted with CMHR 60kg foam, CMHR 30kg foam and covered with H150gr fibre. - Headrest fitted with CM