Vous êtes sur la page 1sur 40

Algorithmique et Programmation

Informations pratiques

• 10,5 heures de cours

• 14 heures TD/TP

• Evaluation : 70%Examen +30%TP


Plan du cours

Partie I: python
• Cours 1: Affectation, opérations, conditions et les entrées/sorties en python

• Cours 2: Les itérations, les listes et les dictionnaires, les fonctions

• Cours 3: Lecture et Ecriture dans un fichier, Erreurs et Exceptions

• Cours 4: Les objets, les classes, les méthodes et méthodes spéciales en python

• Cours 5: L'encapsulation, l’héritage et le polymorphisme en python

Partie II: C++


• Cours 6: Types de base, opérateurs et expressions, les instructions de contrôles, les entrées-sorties

• Cours 7: Programmation des classes et objets en C++


Algorithmique et Programmation

Cours 1

Affectation, opérations, conditions et les entrées/sorties en python


Programme de la séance

• Introduction générale au langage python


• Affectation et variable
• Identificateurs valides
• Types de base
• Opérations
• Transtypage
• Les structures conditionnelles en python
• Entrées / Sorties en python

1
Introduction générale au langage Python

• Historique du langage:

Python est Crée en 1990 par Guido van Rossum.

Licence libre: Python Software Foundation Licence.

• Python est un langage de programmation :


Multi-paradigme :
Il supporte la programmation fonctionnelle et la programmation orientée objet.

Haut-niveau:
Il utilise des mots usuels des langues naturelles et des symboles mathématiques familiers.

Il fait abstraction des caractéristiques techniques du matériel utilisé pour exécuter le


programme.

2
Introduction générale au langage Python

• Il favorise la programmation impérative structurée:


Organisation hiérarchique simple du code.
Utilisation de structures de contrôles : while, for, if, else, …
Décomposition du code en modules.

• Il possède une riche bibliothèque standard :


Cette bibliothèque standard est organisée hiérarchiquement par modules.
Exemple de modules :
- math : fonctions mathématiques (sin, cos, sqrt, abs, log, …)
- random : générateur de nombres pseudo-aléatoires

• Il est similaire à Perl, Ruby, Scheme, Smalltalk et Tcl.

3
Introduction générale au langage Python

• Langage interprété:
Pas besoin de compilation avant l’exécution du programme.

• Langage lisible:
Moins de constructions syntaxiques que de nombreux langages structurés.
Les commentaires sont indiqués par le caractère #.
Les blocs sont identifiés par l'indentation (ajout de tabulations ou d'espaces).

• Il est doté de typage dynamique fort:


Il garantit que les types de données employées décrivent correctement les données
manipulées.

• Il est doté d’un système de gestion des erreurs basée sur les
exceptions.

4
Affectation de valeur à une variable

• Variable: nom qui référence une valeur en mémoire


Utilisable à la place des valeurs dans les expressions
Prend le type de la valeur référencée.

• Affectation: création de la liaison entre une variable et une valeur


Exemple: mon_age = 20
On peut ré-affecter une nouvelle valeur à une variable existante, la valeur précédente
est supprimée et remplacée par la nouvelle valeur.
La valeur peut être le résultat d’une expression, exemple: deux_pi = 2*3.14

Variable = expression

L’affectation en 3 étapes:
Python commence par évaluer l'expression (2*3.14) et note le type du résultat.
Il stocke le résultat obtenu dans la table des valeurs, et note l'adresse utilisée.
Il inscrit le nom de la variable (deux_pi) dans la table des symboles, en précisant le type et
l'identité associés.
5
Affectation spéciale

• Affectation multiples : x,y,nom = 1,2.5,"Toto"


• Affectation à la même valeur: a = b = c = 1
• Incrément: a = a + 1 ou a += 1
• Décrément: a = a - 1 ou a -= 1

A (opération) = B A = A (opération) B

6
Identificateurs valides

Pour les noms des variables et des fonctions:


• Séquence de lettres (a..z, A..Z) ou _ et de chiffres (0..9)
commençant par une lettre
Mots clés du langage interdits
Accents à éviter
Les espaces sont remplacés par le symbole « _ »
Distinction entre Majuscule et Minuscule

Mots clés du langage Python 3


• Exemples:
and del from none true
X1 as elif global nonlocal try
y_min assert else if not while
maxValue
break except import or with
mon_age,
_num class false in pass yield
PI continue Finally is raise
… def For lambda return 7
Type de bases

• 'int' : Entier
• 'float' : Flottant
• 'str' : Chaîne de caractères
• 'bool' : Booléen

Pour connaitre le type d’une valeur, on utilise la fonction:

type(variable)

8
Type de base « Entier »

• Entier: C’est l’ensemble des nombres entiers.


Une valeur de type entier peut s’écrire sous forme décimale, binaire ou
en hexadécimale.
>>> a=-20
>>> print(a)
-20
>>> b=15
>>> print(b)
15
>>> c=0x7DF
>>> print(c)
2015
>>> d=0b11111011111
>>> print(d)
2015

>>> type(a)
<class 'int'> 9
Type de base « Flottant »

• Flottant: C’est l’ensemble des nombres réels.

>>> a=-2.5
>>> print(a)
-2.5
>>> b=1.25
>>> print(b)
1.25
>>> c=21.
>>> print(c)
21.0
>>> d=1.2e-3
>>> print(d)
0.0012

>>> type(a)
<class 'float'> 10
Type de base « Booléen »

• Booléen: C’est l’ensemble des deux valeurs True et False

>>> a=True
>>> print(a)
True
>>> b=False
>>> print(b)
False

>>> type(a)
<class 'bool'>
11
Type de base « Chaîne de caractères »

• Chaînes de caractères : sont des listes de caractères.


• Pour les chaînes simples, on peut utiliser les guillemets ("") ou les
apostrophes ('').
• Pour les chaînes qui contiennent des sauts de lignes, on triple les
guillemets (ou on triple les apostrophes).
• Caractère d’échappement dans une chaîne: \

\\➙\
\ n ➙ retour à la ligne
\ t ➙ tabulation
\"➙"
\'➙‘

12
Type de base « Chaîne de caractères »

• Pour les chaînes simples, on peut utiliser les guillemets ou les


apostrophes.

>>> a="texte simple"


>>> print(a)
texte simple
>>> b='texte simple'
>>> print(b)
texte simple
>>> a="texte avec 'apostrophe'"
>>> print(a)
texte avec 'apostrophe'
>>> b='texte avec "guillemet"'
>>> print(b)
texte avec "guillemet"

13
Type de base « Chaîne de caractères »

• Chaîne contenant guillemet et apostrophe.

>>> a="texte avec 'apostrophe' et \"guillemet\""


>>> print(a)
texte avec 'apostrophe' et "guillemet"
>>> b='texte avec \'apostrophe\' et "guillemet"'
>>> print(b)
texte avec 'apostrophe' et "guillemet"

14
Type de base « Chaîne de caractères »

• Pour les chaînes qui contiennent des sauts de lignes, on triple les guillemets ou les
apostrophes, sinon il faut utiliser le caractère d’échappement \
>>> a="""Ce texte est
... sur deux lignes"""
>>> print(a)
Ce texte est
sur deux ligne
>>> b= ' ' ' Ce texte est
... sur deux lignes' ' '
>>> print(b)
Ce texte est
sur deux ligne
>>> c="Ce texte est\n sur deux lignes"
>>> print(c)
Ce texte est
sur deux ligne
>>> d= 'Ce texte est\n sur deux lignes'
>>> print(d)
Ce texte est
sur deux ligne
15
Exemple d’affectation

• a = 2015
• b = 36 + 1400
c
• b += 1
• c=b
2015 36 1400 1436 1 1437 2016
• c=a+1
a b

« a » est égale à 2015


« b » est égale à 1437
« c » est égale à 2016

16
Exemple d’affectation

Comment échanger les valeurs de deux variables a et b?


• a = 2015
• b = 1437 b

• temp = a
temp 2015 1437
• a=b
• b = temp a

a,b = b,a

« a » est égale à 1437


« b » est égale à 2015

17
Opérations

• Opérations sur les nombres:


Addition +
Soustraction -
Multiplication *
Division flottante / >>> a=5/2
>>> print(a)
>>> 2.5

Division entière // >>> a=5//2


>>> print(a)
>>> 2

Reste de la division entière (modulo) % >>> a=5%2


>>> print(a)
>>> 1

Exponentielle ** >>> a=5**2


>>> print(a)
>>> 25 18
Logique booléenne

• Valeurs:
Valeur constante vrai: True
Valeur constante faux: False

• Opérateurs booléens: not, AND, OR, ^

Négation logique : not a


Conjonction logique (les deux en même temps) : a AND b
Disjonction logique (l’un ou l’autre ou les deux) : a OR b
Disjonction exclusive (l’un des deux): a ^ b

• Comparateurs:
Inférieur: <
Supérieur: >
>>> a= 5<8>2 #équivalent à 5<8 and 8>2
Inférieur ou égal: <= >>> print(a)
Supérieur ou égal: >= True
Egalité: ==
Différence: != 19
Priorité des opérateurs

• Exemple:

True OR True AND False?


True
True OR (True AND False)

• Priorité des opérateurs :

Niveau de priorité Opérateurs


1 not
2 * , **, /, //, % , AND
3 +, -, OR, ^
4 ==, !=, <, >, <=, >=
20
Opérations sur les chaines de caractères

• Concaténation : On peut concaténer les chaînes avec +


>>> a="Centrale "
>>> b="Casablanca"
>>> c=a+b
>>> print(c)
Centrale Casablanca

• Répétition : On peut dupliquer une chaîne avec *


>>> a="Centrale Casablanca "*3
>>> print(a)
Centrale Casablanca Centrale Casablanca Centrale Casablanca

• Longueur : On peut connaitre la longueur d’une chaîne via la fonction len()


>>> a=len("Centrale Casablanca")
>>> print(a)
>>> 19
21
Opérations sur les chaines de caractères

• Formatage de chaînes de caractères: On peut créer des chaînes à trous. La


méthode format(...) permet de combler ces trous en donnant la liste des valeurs à mettre dans
les trous.

>>> a= "Je fais mes études à {0} {1} ".format("Centrale","Casablanca")


>>> print(a)
Je fais mes études à Centrale Casablanca

>>> a="Je fais mes études à {ecole} {ville}".format(ville="Casablanca",ecole="Centrale")


>>> print(a)
Je fais mes études à Centrale Casablanca

22
Indexation des éléments d’une chaîne de caractères

Un caractère [index]

Une sous-chaîne [début:fin] [début:fin:pas]

-8 -7 -6 -5 -4 -3 -2 -1
[index]
0 1 2 3 4 5 6 7

(8 éléments) Centrale
-8 -7 -6 -5 -4 -3 -2 -1
[debut:fin] 0 1 2 3 4 5 6 7 8

s = "Centrale"
s[3] "t" s[2:5] "ntr" s[2:-2] "ntra"
s[:4] "Cent" s[4:] "rale" s[1:6:2] "eta"
23
Transtypage

• Conversion de données entre les différents types.

int

bool str

float

24
Transtypage vers int

• float vers int :


>>> int(5.7)
5

• str vers int :


>>> int("2015")
2015

• bool vers int


>>> int(True)
1
>>> int(False)
0

25
Transtypage vers float

• int vers float:


>>> float(5)
5.0

• str vers float:


>>> float("5.8")
5.8
>>> float("5")
5.0

• bool vers float


>>> float(True)
1.0
>>> float(False)
0.0

26
Transtypage vers str

• int vers str:


>>> str(5)
'5'
>>> str(0b10)
'2'

• float vers str:


>>> str(5.8)
'5.8'
>>> str(1.2e-3)
'0.0012'

• bool vers str


>>> str(True)
'True'
>>> str(False)
'False'

27
Transtypage vers bool

• int vers bool:


>>> bool(0)
False
>>> bool(1)
True

• float vers bool:


>>> bool(0.0)
False
>>> bool(1.0)
True

• str vers bool


>>> bool("")
False
>>> bool("Centrale")
True
28
Structure conditionnelle

if condition_1:
exécuté si l’expression logique de la
instructions_1
condition_1 est vrai
elif condition_2:
exécuté si l’expression logique de la
instructions_2
condition_2 est vrai
elif condition_3:
exécuté si l’expression logique de la
instructions_3
condition_3 est vrai
elif condition_4:
exécuté si l’expression logique de la
instructions_4
condition_4 est vrai
...
else:
instructions_n exécuté si aucune conditions n’est vrai

29
Exemples

• if
ville="Casablanca"
if(ville == "Casablanca"):
print("Ecole Centrale Casablanca est fondée en", 2013)

Ecole Centrale Casablanca est fondée en 2013

• if else
a=2015
if(a%2==0):
print(a, ": Nombre pair")
else:
print(a, ": Nombre impair")

2015: Nombre impair

30
Exemples

• If elif
ville="Casablanca"
if(ville == "Paris"):
print("Ecole Centrale Paris est fondée en", 1829)
elif(ville == "Casablanca"):
print("Ecole Centrale Casablanca est fondée en", 2013)

Centrale Casablanca est fondée en 2013

• if elif else
ville="Tanger"
if(ville == "Paris"):
print("Ecole Centrale Paris est fondée en", 1829)
elif(ville == "Casablanca"):
print("Ecole Centrale Casablanca est fondée en", 2013)
else:
print("Ecole Centrale n'existe pas à", ville)

Ecole Centrale n’existe pas à Tanger 31


Entrée / Sortie

• Affichage de données
La fonction print() permet d’afficher du texte.

print(valeur) valeur
print(valeur1, valeur2, …, valeurN) valeur1 valeur2 … valeurN
print(valeur1, valeur2, sep="_") valeur1_valeur2
print(valeur1); print(valeur2) valeur1
valeur2
print(valeur1, end="_"); print(valeur2) valeur1_valeur2

32
Entrée / Sortie

• Affichage de données
L’utilisation la plus simple est de passer en argument la variable à afficher : print(valeur)

>>> print("chaine de caractères")


chaine de caractères
>>> print(True)
True
>>> print(2015)
2015
>>> a = 12.9
>>> print(a)
12.9

33
Entrée / Sortie

• Affichage de données
Il est possible de donner plusieurs arguments à la suite

>>> print("Centrale", "Casablanca", 2015)


Centrale Casablanca 2015

Il est possible de choisir le séparateur en renseignant l’argument sep (par défaut il s’agit d’un
espace)

>>> print("Centrale","Casablanca",2015,sep= "_")


Centrale_Casablanca_2015

Il est possible de choisir le symbole en fin de ligne en renseignant l’argument end (par défaut
il s’agit d’un retour à la ligne)
>>> print("Centrale Casablanca"); print(2015)
Centrale Casablanca
2015

>>> print("Centrale Casablanca", end=" "); print(2015)


Centrale Casablanca 2015 34
Les Entrées / Sorties

• Entrée au clavier
La fonction input() permet de lire une ligne écrite et de la stocker dans une variable.

s = input()
Demande à l’utilisateur de renseigner une chaîne de caractère qui sera
stockée dans la variable <s>

s =input("message à afficher avant la saisie")


Affiche le message et demande à l’utilisateur de renseigner une chaîne de
caractère qui sera stockée dans la variable <s>

Remarque: Le type de la variable créée sera toujours une chaîne de caractères


(str). Il faudra donc faire les conversions nécessaires avant son utilisation.

>>> s=input("Quel âge as-tu ? ")


Quel âge as-tu ? 20
>>> print(s)
20
>>> type(s)
35
<class 'str'>
Ressources

• Documentation officielle :
http://www.python.org/doc/

• Tutoriel Python officiel :


https://docs.python.org/3/tutorial/index.html

• Livre :
“How to think like a Computer Scientist, Learning with Python” par Allen Downey, Jeffrey
Elkner et Chris Meyers.

37

Vous aimerez peut-être aussi