12. Traduction en Python

publicité
Algorithmique & Programmation (MPSI & PCSI)
12. Traduction en Python
Types en Python
Operateurs arithmétiques (a=10, b=2)
En python, on manipule deux catégories de types :
Types simples
Type
Description
Champ de valeurs
acceptables
int
Integer(Entier)
Z
float
Réel
IR
complex
Nombres Complexes
C = {a+bj, a et b
appartiennent à IR}.
Le coefficient « b » doit
être toujours présent
même si c’est 0 ou 1.
bool
Prof. El Kourchi Khalid
Type Logique
True, False
Python est sensible à la case : Il fait la différence entre majuscule et
minuscule.
Tous les mots clés réservés du langage python sont en minuscules.
« True » et « False » sont 2 valeurs logiques. Elles commencent par leurs
premières lettres aux majuscules.
Types composés
Operateur
Description
Exemple
+
*
**
/
//
%
Addition
Soustraction
Multiplication
Puissance
Division réelle
Division Euclidienne
Modulo
a + b donne 12
a – b donne 8
a * b donne 20
a ** b donne 100
b / a donne 5.0
b // a donne 5
b % a donne 0
Operateurs logiques (a=True, b=False)
Opérateur
Description
Exemple
and
or
not
Le ET logique
Le OU logique
(non) La négation
(a and b) donne False
(a or b) donne True
not(a or b) donne False
Operateurs de comparaison (a=15, b=13)
Opérateur
Description
Exemple
==
!=
<
>
<=
>=
Test d’égalité
Test de Différence
Inferieur
Supérieur
Inférieur ou Egal
Supérieur ou Egal
a == b (False)
a != b (True)
a < b (False)
b > a (False)
b <= a (True)
a >= b (True)
Type
Description
Str
Type texte ou bien chaines de caractères
N.B
List
Pour manipuler une séquence de valeurs
Tous les opérateurs de comparaison composés de 2 caractères se
terminent par « = ».
Tuple
Un tuplet de valeurs
Dict
Un dictionnaire d’éléments : clé = valeur
Etant donné une valeur, on peut connaitre facilement son type en
utilisant la fonction « type » :
Typage des variables
Avant de commencer la traduction des instructions de base, il faut faire
bien la différence entre :
Typage statique
Lors de la déclaration d’une variable on doit préciser son type.
Une fois déclarée, la variable ne peut pas changer de type.
Exemples fonction « type »
type (1)
Int
type (1.0)
Float
type (1+1j)
complex
type (True)
Bool
type (« Hello »)
Str
Exemples de langages à typage statique
Langages compilés (C, C++, Java, C#...)
N.B : En algorithmique, on utilise aussi le typage statique.
Typage dynamique
La variable peut changer de type à n’importe quel moment.
Donc, ce n’est pas la peine de préciser le type de la variable au départ.
Operations & Expressions
Une expression est un calcul qui donne une valeur (un résultat).
Une expression peut contenir des variables, constantes, appels de
fonctions combinés entre eux par des opérateurs :
Exemples de langages à typage dynamique
Langages interprétés (Python, Php, Javascript…)
Exemple : e = x*sin ((PI/2)*x) + 1
N.B : Python c’est un langage à typage dynamique.
Operateurs arithmétiques (a=10, b=2)
Operateur
Description
Exemple
+
*
**
/
//
%
Addition
Soustraction
Multiplication
Puissance
Division réelle
Division Euclidienne
Modulo
a + b donne 12
a – b donne 8
a * b donne 20
a ** b donne 100
b / a donne 5.0
b // a donne 5
b % a donne 0
Instructions de base
On va passer maintenant à faire la traduction des instructions de base vu
en algorithmique en langage Python.
Déclaration d’une variable
Se passe par affectation d’une valeur initiale à la variable.
a = v0
Déclaration ou définition d’une variable de nom « a » en lui
affectant la valeur initiale « v0 »
type de a = type de v0
Algorithmique & Programmation (MPSI & PCSI)
12. Traduction en Python
N.B :
float
•
Pour déclarer une variable, on doit avoir une valeur initiale « v0 ».
•
Si on n’a pas cette valeur initiale et on veut comme même déclarer la
variable, on peut utiliser la valeur spéciale « None ».
•
« None » c’est une valeur spéciale qui veut dire absence de valeur.
a=None
Déclaration d’une variable sans valeur et sans type.
Retourne la partie
entière du réel
passé en paramètre
Retourne 1 si True 0
si False
bool
complex
Affectation
En Python
a  v1
a = v1
Type de valeur
Valeur de retour
Exemple
str
Retourne l’entier
contenu dans la
chaine de
caractères.
Retourne le réel qui
correspond à cet
entier
Retourne le réel
passé en paramètre
Retourne 1.0 si
True 0.0 si False
float(« 0.123 ») ==
0.123
Int
float
N.B :
•
La première affectation c’est la déclaration ou bien la définition de la
variable.
•
Les autres affectations après sont des opérations de changement de
valeur.
bool
complex
(a  vs) Affecter à « a » la valeur saisie par l’utilisateur
a=input()
En python, la valeur saisie par l’utilisateur est retournée
par la fonction « input »
float(14)
== 14.0
float(0.213)
== 0.213
float(True)
== 1.0
float(False)
== 0.0
Génère une
TypeError, ne peut
pas convertir un
complexe vers un
réel.
Lecture « input »
Lire(a)
int(True)
== 1
int(False)
== 0
Fonction de conversion vers le type « float »
Opération de changement de la valeur d’une variable déjà définie.
En Algorithmique
Int(12.3654)
== 12
Génère une
TypeError, On ne
peut pas convertir
un complexe vers
un entier.
Déclaration de constante
Une constante c’est variable qui ne change pas de valeur, donc sa valeur
initiale est elle-même sa valeur finale.
Prof. El Kourchi Khalid
Fonction de conversion vers le type « complex »
Fonction « input »
C’est une primitive bloquante qui va attendre l’utilisateur jusqu’à ce
qu’il saisit une valeur et valide par « Entrée », et en fin retourne cette
valeur.
La valeur retournée par « input » est toujours de type « str ».
Accepte le message de la saisie comme seul paramètre si présent.
Type de
valeur
Valeur de retour
Exemple
str
Retourne le complexe
contenu dans la chaine
de caractères.
Retourne valeur + 0j
Retourne valeur + 0j
complex(« 1+1j ») == 1+1j
Int
float
bool
Exemple de la fonction « input »
complex
a = input (« Entrer la valeur de a : »)
Retourne le complexe
passé en paramètre
complex(14) == 14+0j
complex(0.213) == 0.213
+ 0j
complex(True) == 1 + 0j
complex(False) == 0j
complex(1+2j) == 1+2j
Conversion de type
Fonction de conversion vers le type « bool »
Les valeurs saisies par utilisateurs doivent être manipulées dans leurs
propres types, pas entant que « str ».
Type de valeur
Evaluées à « True
»
Evaluées à « False »
Le retour de « input » doit être converti vers le type adéquat selon la
valeur saisie par l’utilisateur.
Bool
Int
True
V !=0
False
V==0
Fonction de conversion vers le type « int »
Float
Complex
Str
V !=0.0
V !=0j
V != « » chaine vide
V==0.0
V==0j
V== « » chaine vide
Type de valeur
Valeur de retour
Exemple
str
Retourne l’entier
contenu dans la
chaine de
caractères. N.B : la
chaine de caractères
passée en
paramètre doit
contenir
exactement un
entier
Retourne l’entier
passé en paramètre
int(« 123 ») ==
123
Int
Conversion vers le type « str »
La fonction « str(v) » peut convertir n’importe quelle valeur de n’importe
quel type vers le type « str ».
Ecriture « output » = « print »
La fonction primitive d’édition des résultats en Python c’est « print ».
Int(123)
== 123
Ecrire(a,b,c) est traduit simplement par print(a,b,c)
Algorithmique & Programmation (MPSI & PCSI)
12. Traduction en Python
Déclaration d’une variable par une valeur saisie de type « int »
a = input(“Entrer la valeur entiere:”)
a = int(a)
Par loi de composition, cela est équivalent à :
Prof. El Kourchi Khalid
Ainsi, dans le code de notre programme on peut avoir les différentes
structures (SI, TANTQUE, POUR…) imbriquées les unes dans les autres et
par la suite avoir plusieurs niveaux d’indentations.
Chaque nouvelle structure (SI, TANTQUE, POUR) va définir un nouveau
niveau pour son corps.
a = int(input(“Entrer la valeur entiere:”))
Traduction des structures algorithmiques
Traduction d’un algorithme
Structure conditionnelle « SI » = « if »
1ère méthode (Traduction directe du corps de l’algorithme)
Algorithme
Algorithme calcul_ttc
Constante tva : Réel
Variables npc : Entier
Pu, ttc : Réel
Debut
Tva «- 0.2
Ecrire(« Entrer le npc : »)
Lire(npc)
Ecrire(« Entrer le pu: »)
Lire(pu)
ttc «- npc*pu*(1+tva)
Ecrire (« ttc(dh) : », ttc)
Fin
Python
tva = 0.2
npc = int(input(« Entrer npc : »))
pu = float(input(« Entrer pu: »))
ttc = npc*pu*(1+tva)
print(« ttc(dh) : », ttc)
Algorithmique
Python
SI C1 ALORS
Bloc de la condition C1
SINON SI C2 ALORS
Bloc de la condition C2
.
.
.
SINON SI Ci ALORS
Bloc de la condition Ci
SINON
Bloc Alternatif
FINSI
if C1 :
Bloc de la condition C1
elif C2 :
Bloc de la condition C2
.
.
.
elif Ci :
Bloc de la condition Ci
else :
Bloc alternatif
Exemple (Résolution d’équation de 2 dégrée)
2ème méthode (Traduction par fonction principale)
Algorithme
Python
Algorithme calcul_ttc
Constante tva : Réel
Variables npc : Entier
Pu, ttc : Réel
Debut
Tva  0.2
Ecrire(« Entrer le npc : »)
Lire(npc)
Ecrire(« Entrer le pu: »)
Lire(pu)
ttc  npc*pu*(1+tva)
Ecrire (« ttc(dh) : », ttc)
Fin
def calcul_ttc() :
tva = 0.2
npc = int(input(« Entrer npc : »))
pu = float(input(« Entrer pu: »))
ttc=npc*pu*(1+tva)
print(« ttc(dh) : », ttc)
Organisation du code en Python « Indentation »
Un bloc est une suite d’instructions qui s’exécutent les uns après les
autres.
En algorithmique et dans autres langages on utilise des délimiteurs pour
borner les instructions qui font partie d’un même bloc de code.
Exemples de délimiteurs en algorithmique
Structure d’algorithme
Structure conditionnelle « SI »
Début
Corps de l’algorithme
Fin
Structure « TANTQUE »
TANTQUE cond FAIRE
Corps de la boucle
FINTANTQUE
SI cond ALORS
Bloc de la condition « si »
FINSI
Structure « POUR »
POUR i allant de v0 à vn FAIRE
Corps de la boucle
FINPOUR
En Python, on utilise l’indentation comme technique pour identifier les
instructions appartenant à un même bloc de code.
Indenter signifie ajouter le même nombre d’espaces devant chacune des
lignes définissant les instructions d’un même bloc de code.
# cette ligne a un niveau d’indentation de 0
# cette ligne a un niveau d’indentation de 1
# cette ligne a un niveau d’indentation de 2
def eq2d() :
a = float(input("Entrer le a:"))
b = float(input("Entrer le b:"))
c = float(input("Entrer le c:"))
if a!=0 :
d=b*b-4*a*c
if d>0 :
x1=(-b+d**0.5)/(2*a)
x2=(-b-d**0.5)/(2*a)
print(x1, x2)
elif d==0 :
print(x1)
else :
print ("Pas de solution dans IR")
else :
print("Equation de 1 degree")
Boucle conditionnelle « TANTQUE » = « while »
Algorithmique
Python
TANTQUE Condition FAIRE
Bloc de la boucle
FINTANTQUE
while Condition :
Bloc de la boucle
Boucle inconditionnelle « POUR » = « for »
Algorithmique
Python
POUR i ALLANT DE vi à vf PAR
PAS DE pas FAIRE
Bloc de la boucle
FINPOUR
for e in sequence :
Bloc de la boucle
En python, la « sequence » à parcourir en générale est une suite de
valeurs.
La traduction de la structure « POUR » se fait par une suite arithmétique
créée par la fonction « range » à base de 3 valeurs : vi, vf, p (pas).
La variable du parcours « e » est définie à l’intérieur de la boucle par la
valeur initiale « VI ».
Algorithmique & Programmation (MPSI & PCSI)
12. Traduction en Python
Else du « for »
Sequence = range (vi, vf, pas)
La fonction « range » n’accepte que des valeurs entières pour vi, vf et le
pas. Et donc la suite générée est une suite arithmétique entière.
Exemple
Sequence = range(1,11,2)  [1,3,5,7,9]
La boucle « for » peut avoir un bloc « else » qui va être exécuté seulement
si on vient de parcourir tous les éléments de la suite de la boucle.
for e in sequence :
# bloc de la boucle « for »
else :
# Bloc lorsqu’on vient de parcourir toute la séquence.
N.B : La valeur finale est toujours exclue
Formes d’appels à la fonction « range »
range(VI,VF,PAS)
range(VI,VF)
range(VF)
Prof. El Kourchi Khalid
PAS = 1
VI=0, PAS=1
N.B
SI VI »= VF : range génère une séquence vide dans ce cas, la variable du
parcours « e » ne vas pas être définie.
Instructions de contrôle des boucles
Parfois on veut contrôler l’exécution d’une boucle, arrêter la boucle ou
bien sauter quelques itérations. Ce mécanisme existe dans tous les
langages de programmations à travers les 2 instructions suivantes :
Instructions de contrôle des boucles
Instruction « break »
Force l’arrêt de l’exécution d’une boucle et va exécuter la suite du
programme.
Instruction « continue »
Ignore le code qui se situe après l’instruction « continue » et passe
directement à l’itération suivante.
N.B
Les 2 instructions « break » et « continue » il faut les exécuter sous une ou
plusieurs conditions. 10. Else du « while » et « for »
Else du « while » et « for »
Else du « while »
La boucle « while » peut avoir un bloc « else » qui va être exécuté
seulement si on vient de quitter la boucle lorsque la condition devient
fausse.
Exemple
p=int(input(« entrer un entier > 2 »))
d=3
while d <= p**0.5 :
if p%d == 0:
print(p, ’pas premier’)
break
d=d+2
else :
print(p, ‘est premier’)
def premier():
p=int(input(« entrer un entier > 2 »))
d=3
while d <= p**0.5 :
if p%d == 0:
print(p, ’pas premier’)
break
d=d+2
else :
print(p, ‘est premier’)
Exemple
p=int(input(« entrer un entier »))
for d in range(3, p**0.5+1, 2) :
if p%d == 0 :
print(p, ’pas premier’)
break
else :
print(p, ‘est premier’)
def premier():
p=int(input(« entrer un entier > 2 »))
for d in range(3, int(p**.5)+1, 2):
if p%d == 0:
print(p, ’pas premier’)
break
else :
print(p, ‘est premier’)
Téléchargement
Study collections