LyonHPC LyonHPC

4. Structures de contrôle

cloud
%matplotlib inline
import numpy as np
from IPython.display import HTML,display,IFrame,Video
from IPython.display import YouTubeVideo,Markdown
display(Markdown("**Video du cours: Introduction**"))
YouTubeVideo('iKoa5WBKOVA')

Video du cours: Introduction

Astuce

pour tester les programmes Python, vous pouvez vous connectez sur un serveur Jupyter, par exemple, pour les étudiants Lyon1 https://jupyter.mecanique.univ-lyon1.fr

4.1. Expression logique

vrai-faux

expression

notation algorithmique

syntaxe Python

valeur logique

Vrai , Faux

True (\(\neq 0\)) , False(\(= 0\))

opérateurs logiques

et , ou , non

and , or , not

comparaisons

supérieur, supérieur ou égale

> , >=

 » « 

inférieur, inférieur ou égale

< , <=

 » « 

égalité

==

 » « 

différence

!=

display(Markdown("**Video du cours: expression logique et test**"))
YouTubeVideo('5oCl0q6lQRw')

Video du cours: expression logique et test

Attention

Les vidéos utilisent un ancien interpréteur python 2.7, pour lequel print est un mot clé, soit print 'bonjour'. Avec Python 3, print est une fonction et il faut donc utiliser des parenthèses, soit print('bonjour')

4.1.1. Exemple en Python

print(type(True))
print(True and False)
print(False or True)
a = 4
print(a < 4, a <= 4, a >= 4, a > 4, a == 5, a != 5 , not (a == 5))
print(True + False)
<class 'bool'>
False
True
False True True False False True True
1

4.2. Test conditionnel (branchement)

iftest

4.2.1. Organigramme: représentation graphique d’un algorithme

Algorithme

    si (test vrai) alors
       intruction(s) 1
    sinon
       intruction(s) 2
    fin si
    instruction(s) 3
from diagramme1 import trace_diagramme1
HTML(trace_diagramme1())

4.2.2. syntaxe Python

notation algorithmique

si (expression vrai) alors   
     execute intruction(s) 1  
sinon
     execute intruction(s) 2
fin si
execute instruction(s) 3

syntaxe Python (noter les :)

if expression :
    intruction1
else :
    intruction2
    
instruction3

4.2.3. indentation des structures de contrôle

print "bloc1"
if (condition1) :
   print "bloc2"
   if (condition2) :
       print "bloc3"
   print "bloc2 suite"
print "bloc1 suite"

4.2.4. tests imbriqués

si (condition1) alors
    instruction1
sinon si (condition2) alors
    instruction2
sinon
    instruction3
fin si
i=15
print("si i=",i)
if i%2 == 0 :
    print("i divisible par 2")
elif i%3 == 0 :
    print("i divisible par 3 mais pas par 2")
elif i%5 == 0 :
    print("i divisible par 5 mais pas par 2 ni 3")
else :
    print("i non divisible par 2,3 et 5")
si i= 15
i divisible par 3 mais pas par 2

4.2.5. erreur de syntaxe: attention à l’indentation et au symbol :

a = 4
if a > 5:
    print("a est plus grand que 5")
else
    print("a est plus petit ou egal a 5")

File "<ipython-input-7-5162c46baa06>", line 4
else
    ^
SyntaxError: invalid syntax

4.2.6. Exemple d’application

Problème: étant donné un nombre entier positif p, est-il pair ou impair ?

ALGORITHME Parite
  Initialisez p
  si (p modulo 2) == 0 alors
     Affiche "p est pair"
  sinon
     Affiche "p est impair"
  fin si

4.2.7. Programme Python

# programme parite
p = 17
print("valeur p =", p)
if p%2 == 0:
    print("p est pair.")
else:
    print("p est impair.")
valeur p = 17
p est impair.

4.3. Boucle itérative

boucle
  • nombre d’itérations n connues

  • compteur de boucle i (variable)

  • attention en algorithmique on compte en général à partir de 0

  • premier élément d’une séquence i=0

display(Markdown("**Video du cours: boucle itérative pour**"))
YouTubeVideo('2fv2KdqMr2o')

Video du cours: boucle itérative pour

Attention

Les vidéos utilisent un ancien interpréteur python 2.7, pour lequel print est un mot clé, soit print 'bonjour'. Avec Python 3, print est une fonction et il faut donc utiliser des parenthèses, soit print('bonjour')

4.3.1. Organigramme et algorithme

Algorithme

pour i de 0 a n-1
   execute intruction(s) 1
fin pour
execute instruction(s) 2
from diagramme2 import trace_diagramme2
HTML(trace_diagramme2())