Marc BUFFAT

Professeur au département de Mécanique, Lyon 1 e-mail

Blog scientifique et pédagogique utilisant des notebooks IPython et Linux

cours en ligne INPROS: chapitre 4


Ipython notebook : cours INPROS LyonHPC

Auteur: Marc BUFFAT, Pr dpt de Mécanique, UCB Lyon 1

Contributeurs: Violaine Louvet, Michel Kern, Loic Gouarin, Laurence Viry </h5>

Licence Creative Commons
Mise à disposition selon les termes de la Licence Creative Commons
Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 2.0 France
.
In [1]:
%matplotlib inline
%autosave 300
import numpy as np
from IPython.display import HTML,display
css_file = 'style.css'
try:
    display(HTML(open(css_file, "r").read()))
    print("using ",css_file)
except :
    print("using default css")
Autosaving every 300 seconds
using default css

LyonHPC LyonHPC
</div> cloud

Contenu de la leçonLyonHPC

  1. Expression logique
  2. Test conditionnel
  3. Boucle itérative **pour**
    1. Algorithme itératif
  4. Boucle **tant que**
    1. Exemple de boucle tant que
  5. Exercices
    1. Exemple: méthode de dichotomie
    2. Devoirs: méthode des trapèzes, suite de Syracuse

Expression logique

vrai-faux

AlgorithmiquePython
*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 **!=**

Exemple en Python

In [6]:
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

Organigramme: représentation graphique d’un algorithme

In [7]:
from diagramme1 import trace_diagramme1
HTML(trace_diagramme1())
Out[7]:
AlgorithmeDiagramme
si (test vrai) alors intruction(s) 1 sinon intruction(s) 2 fin si instruction(s) 3

syntaxe Python

AlgorithmePython
si (expression vrai) alors execute intruction(s) 1 sinon execute intruction(s) 2 fin si execute instruction(s) 3 if expression : intruction1 else : intruction2

instruction3

</code></td></tr>
</table>

indentation des structures de contrôle

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

tests imbriqués

si (condition1) alors
    instruction1
sinon si (condition2) alors
    instruction2
sinon
    instruction3
fin si
In [8]:
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

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

In [9]:
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-9-5162c46baa06>", line 4
    else
        ^
SyntaxError: invalid syntax

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

Programme Python

In [10]:
# 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.

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

Organigramme et algorithme

In [11]:
from diagramme2 import trace_diagramme2
HTML(trace_diagramme2())
Out[11]:
AlgorithmeDiagramme
pour i de 0 a n-1 execute intruction(s) 1 fin pour execute instruction(s) 2