Support Python Webnew 2018 (Partie1)
Support Python Webnew 2018 (Partie1)
Support Python Webnew 2018 (Partie1)
Première partie
CPGE-Taza 2017-2018 1
La programmation
Démarche
• Penser, réfléchir, …
• Résoudre un problème à la manière d’un analyste.
• Utiliser un langage formel pour décrire notre raisonnement
Apprendre à programmer :
1. activité intéressante qui contribue à développer votre « intelligence ».
2. procure une grande satisfaction : pouvoir réaliser des programmes concrets.
2
CPGE-Taza 2017-2018
Machine, Langage et Programmation
• Dans son fonctionnement interne, un ordinateur est totalement
incapable de traiter autre chose que des nombres binaires.
…00110011001100110011000011111100001111….
Alors que nous raisonnons en base 10 (grâce à nos 10 doigts)
Imaginez qu’un ordinateur ne sache compter qu’avec une paire de doigts
• C'est une longue suite de 1 et de 0 (les "bits") souvent traités par groupes
de 8 (les « octets »), 16, 32, ou même 64.
CPGE-Taza 2017-2018 4
Machine, Langage et Programmation
CPGE-Taza 2017-2018 5
Langage machine, langage de programmation
Pourquoi ?
• Il s'agit d'un langage de haut niveau
CPGE-Taza 2017-2018 6
Compilation et Interprétation
CPGE-Taza 2017-2018 9
Compilation et
interprétation
Certains langages modernes tentent de combiner
les deux techniques afin de garder le meilleur de
chacune.
• Python
• JAVA
Remarque
CPGE-Taza 2017-2018 11
Mise au point d'un programme.
Recherche des erreurs «debug»
Trois types d’erreurs :
1. syntaxe : se réfère aux règles que les auteurs du langage ont
établies pour la structure du programme.
CPGE-Taza 2017-2018 12
Langages naturels et langages formels
1. Les langages naturels sont ceux que les êtres humains utilisent pour
communiquer. Ces langages n'ont pas été mis au point délibérément (encore
que certaines instances tâchent d'y mettre un peu d'ordre) : ils évoluent
naturellement.
2. Les langages formels sont des langages développés par nous même, en vue
d'applications spécifiques.
• , …etc.
Les langages de programmation sont des langages formels qui ont été
développés pour décrire des algorithmes et des structures de données.
CPGE-Taza 2017-2018 13
Langages naturels et langages formels
Lorsque vous lisez une phrase quelconque, vous devez arriver à vous
représenter la structure logique de la phrase (même si vous le faites
inconsciemment la plupart du temps).
Par exemple, lorsque vous lisez la phrase « la pièce est tombée », vous
comprenez que « la pièce » en est le sujet et « est tombée » le verbe.
L'analyse vous permet de comprendre la signification et la logique de la
phrase (sa sémantique).
D'une manière analogue, l'interpréteur Python devra analyser la
structure de votre programme source pour en extraire la signification.
CPGE-Taza 2017-2018 15
Premiers PAS !
« Calculer avec Python en mode interactif »
Les trois caractères >>> constituent le signal d'invite, ou prompt principal, lequel
vous indique que Python est prêt à exécuter une commande.
CPGE-Taza 2017-2018 16
Calculer avec Python en mode interactif
>>> 5+3
>>> 2 - 9 # les espaces sont optionnels
>>> 7 + 3 * 4 # la hiérarchie des opérations mathématiques
# est-elle respectée ?
>>> (7+3)*4
>>> 20 / 3
CPGE-Taza 2017-2018 17
Données et variables
Mémoire
@
Taille 1110000000011
Une variable apparaît dans un langage de
@ 1110001110011 programmation sous un nom de variable, mais
Prix_Unitaire 1110001110000 pour l'ordinateur il s'agit d'une référence
@
Quantité 0000001110011 désignant une adresse mémoire, c'est-à-dire
0000000000011 un emplacement précis dans la mémoire vive.
.
.
.
3. Pour pouvoir accéder aux données, le programme d'ordinateur (quel que
soit le langage dans lequel il est écrit) fait abondamment usage d'un
grand nombre de variables de différents types.
CPGE-Taza 2017-2018 18
Noms de variables et mots réservés
Les noms de variables sont des noms (identificateurs) qu’on choisit
assez librement
De préférence assez courts, mais aussi explicites que possible, pour
exprimer clairement ce que la variable est censée contenir :
altitude, altit ou alt (au lieu de x ) pour exprimer une altitude
prix_unit pour exprimer un prix unitaire, etc.
Quelques règles pour les noms de variables sous Python :
2. Seules les lettres ordinaires sont autorisées. Les lettres accentuées, les cédilles, les espaces,
les caractères spéciaux tels que $, #, @, etc. sont interdits, à l'exception du caractère _
(souligné).
En plus de ces règles, il faut encore ajouter que vous ne pouvez pas utiliser comme
noms de variables les 33 « mots réservés » au langage ci-dessous (version 3.3.0):
CPGE-Taza 2017-2018 20
Affectation (ou assignation)
Nous savons désormais comment choisir judicieusement un nom de variable.
Voyons à présent comment nous pouvons en définir et affecter une valeur.
>>> msg = "Quoi de neuf ?" # affecter la valeur "Quoi de neuf ?" à msg
>>> n
7
>>> msg
"Quoi de neuf ? " #affiche les guillemets, donc le type.
>>> pi
3.14159
Exemple :
>>> x = y = 7
>>> x
7
>>> y
7
On peut aussi effectuer des affectations parallèles à l'aide d'un seul opérateur :
>>> a, b = 4, 8.33
>>> a
4
>>> b
8.33
Dans cet exemple, les variables a et b prennent simultanément les nouvelles valeurs
4 et 8,33.
CPGE-Taza 2017-2018 23
Exercices d’application
>>> largeur = 20
>>> hauteur = 5 * 9.3
>>> largeur * hauteur
930
CPGE-Taza 2017-2018 24
Opérateurs et expressions
Exemple :
a, b = 7.3, 12
y = 3*a + b/5
z=b%7+b//7*7-3**2+a- int(a)*2**3
Exercices:
a)Donner la valeur de z=b%7+b//7*7-3**2+a- int(a)*2**3 avec
a=3.7 et b=7
2. E pour exposants. Les exposants sont évalués avant les autres opérations. Ainsi
2**1+1 = 3 (et non 4), et 3*1**10 = 3 (et non 59049 !).
CPGE-Taza 2017-2018 26
Composition
L'une des grandes forces d'un langage de programmation de haut niveau est qu'il
permet de construire des instructions complexes par assemblage de fragments
divers. Ainsi par exemple, si vous savez comment additionner deux nombres et
comment afficher une valeur, vous pouvez combiner ces deux instructions en une
seule :
print(type(17 + 3))
<class 'int'>
Cela n'a l'air de rien, mais cette fonctionnalité qui paraît si évidente va vous permettre
de programmer des algorithmes complexes de façon claire et concise. Exemple :
h, m, s = 15, 27, 34
print("nombre de secondes écoulées depuis minuit = ", h*3600 + m*60 + s)
Ce que vous placez à la gauche du signe égale dans une expression doit toujours être une variable, et non
une expression : le signe égale n'a pas la même signification qu'en mathématiques, il s'agit d'un symbole
d'affectation
m + 1 = b est incorrect.
Par contre, a = a + 1 est inacceptable en math,
mais correct en programmation 27
CPGE-Taza 2017-2018
Structures de contrôle
CPGE-Taza 2017-2018 28
Séquence d'instructions
if
circonstance1 circonstance2
CPGE-Taza 2017-2018 29
fin d’exécution
Sélection ou exécution conditionnelle
• C’est une technique permettant d'aiguiller le déroulement du programme dans
différentes directions, en fonction des circonstances rencontrées.
• Disposer d'instructions capables de tester une certaine condition et de modifier le
comportement du programme en conséquence.
L'instruction if.
a = 150
if (a > 100):
print("a dépasse la centaine" )
Indentation obligatoire
CPGE-Taza 2017-2018 30
Sélection ou exécution conditionnelle
a = 20
if (a > 100):
print("a dépasse la centaine")
else:
print("a ne dépasse pas cent")
En interactif :
Frappez <Enter> encore une fois. Le programme s'exécute, et affiche cette fois :
a ne dépasse pas cent.
Comme vous l'aurez certainement déjà compris, l'instruction else (« sinon », en anglais)
permet de programmer une exécution alternative, dans laquelle le programme doit
choisir entre deux possibilités
CPGE-Taza 2017-2018 31
Sélection ou exécution conditionnelle
a=0
if a > 0 :
print( " a est positif ")
elif a < 0 :
print("a est négatif")
else:
print("a est nul")
CPGE-Taza 2017-2018 32
Opérateurs de comparaison
La condition évaluée après l'instruction «if» peut contenir les opérateurs de
comparaison suivants :
x == y # x est égal à y (deux signes « égale » et non un seul)
x != y # x est différent de y
x>y # x est plus grand que y
x<y # x est plus petit que y
x >= y # x est plus grand que, ou égal à y
x <= y # x est plus petit que, ou égal à y
Exemple :
a=7
if (a % 2 == 0):
print("a est pair")
print("parce que le reste de sa division par 2 est nul")
else:
print("a est impair")
Exemple :
Ligne d'en-tête:
première instruction du bloc
... ...
... ...
dernière instruction du bloc
S'il y a plusieurs instructions indentées sous la ligne d'en-tête, elles doivent l'être
exactement au même niveau .
Ces instructions indentées constituent ce que nous appellerons désormais un bloc
d'instructions.
CPGE-Taza 2017-2018 34
Instructions imbriquées
Il est parfaitement possible d'imbriquer les unes dans les autres plusieurs
instructions composées, de manière à réaliser des structures de décision
complexes.
Exemple :
CPGE-Taza 2017-2018 35
Quelques règles de syntaxe Python
• Les limites des instructions et des blocs sont définies par la mise en page
Avec Python, vous devez utiliser les sauts à la ligne et l'indentation. Python vous force donc à écrire du code
lisible, et à prendre de bonnes habitudes que vous conserverez lorsque vous utiliserez d'autres langages.
CPGE-Taza 2017-2018 36
Instructions répétitives.
Ré-affectation
Permet de remplacer l'ancienne valeur d'une variable par une nouvelle
>>> a = 5
>>> b = a # a et b contiennent des valeurs égales
>>> b = 2 # a et b sont maintenant différentes
37
CPGE-Taza 2017-2018
Instructions répétitives
Exercice (permutation de valeurs)
Rappelons ici que Python permet d'affecter leurs valeurs à plusieurs variables simultanément :
>>> a, b, c, d = 3, 4, 5, 7
Supposons par exemple que nous voulions maintenant échanger les valeurs
des variables a et c. (Actuellement, a contient la valeur 3, et c la valeur 5.
Nous voudrions que ce soit l'inverse). Comment faire ?
4.1. Écrivez les lignes d'instructions nécessaires pour obtenir ce résultat sous
python.
CPGE-Taza 2017-2018 38
Notions de conteneur et d’itérable
Ces notions seront étudiées plus tard dans le chapitre des listes.
CPGE-Taza 2017-2018 39
Instructions répétitives.
L'une des tâches que les machines font le mieux est la répétition (bouclage)
sans erreur de tâches identiques !
CPGE-Taza 2017-2018 40
Répétitions en boucle - l'instruction for
Quelques exemples de boucle for :
for i in range(5):
print(i)
# affichage de : 0 1 2 3 4
nb_voyelles = 0
for lettre in "Python est un langage tres sympa":
if lettre in "aeiouy":
nb_voyelles = nb_voyelles + 1
print(nb_voyelles)
# affichage du contenu de la variable nb_voyelle qui vaut 10
CPGE-Taza 2017-2018 41
Répétitions en boucle - l'instruction for
Commentaires
2. Le deuxième exemple c’est le parcours d’un autre itérable qui est la liste et affiche chacun de ses
éléments.
3. l’utilisation de la fonction range() pour générer un itérable qu’on parcours à l’aide de la boucle for.
4. Le dernier exemple utilise une variable pour compter les voyelles, en énumérant les éléments d’une
chaine de texte et en affichant le nombre trouvé.
CPGE-Taza 2017-2018 42
Répétitions en boucle - l'instruction while
L'une des tâches que les machines font le mieux est la répétition sans erreur de tâches identiques !
a = 0
while (a < 7): # (n'oubliez pas le double point !)
a = a + 1 # (n'oubliez pas l'indentation !)
print(a)
CPGE-Taza 2017-2018 43
Répétitions en boucle - l'instruction while
a=0
while (a < 7): # (n'oubliez pas le double point !)
a = a + 1 # (n'oubliez pas l'indentation !)
print(a)
Commentaires
1. Dans notre exemple, si la condition a < 7 est encore vraie, le corps de la boucle est exécuté une
nouvelle fois et le bouclage se poursuit.
2. La variable évaluée dans la condition doit exister au préalable (Il faut qu'on lui ait déjà affecté au
moins une valeur)
3. Si la condition est fausse au départ, le corps de la boucle n'est jamais exécuté
4. Si la condition reste toujours vraie, alors le corps de la boucle est répété indéfiniment.
Exemple :
for x in range(1, 11):
if x == 5:
break
print(x, end=" ")
# end permet de garder le curseur sur la même ligne sans retourner à la ligne
print ("Boucle interrompue pour x =", x)
Le résultat obtenu :
1234
Boucle interrompue pour x = 5
CPGE-Taza 2017-2018 45
Répétitions en boucle - Court-circuiter une boucle : continue
Exemple :
for x in range(1, 11):
if x == 5:
continue
print(x, end=" ")
1 2 3 4 6 7 8 9 10
# la boucle a sauté la valeur 5
CPGE-Taza 2017-2018 46
Exercices
CPGE-Taza 2017-2018 47
Fin première partie
CPGE-Taza 2017-2018 48