0% ont trouvé ce document utile (0 vote)
9 vues161 pages

Analyse de Problèmes avec Python

Ce document présente une initiation à l'algorithmique avec Python, en se concentrant sur la modélisation et l'analyse des problèmes. Il décrit les étapes nécessaires pour définir un problème, identifier les entrées et sorties, ainsi que les différents types de traitements de données. Les approches descendante et ascendante pour l'analyse des problèmes sont également abordées, ainsi que la structure d'un algorithme.

Transféré par

doha.bouarfa24
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
9 vues161 pages

Analyse de Problèmes avec Python

Ce document présente une initiation à l'algorithmique avec Python, en se concentrant sur la modélisation et l'analyse des problèmes. Il décrit les étapes nécessaires pour définir un problème, identifier les entrées et sorties, ainsi que les différents types de traitements de données. Les approches descendante et ascendante pour l'analyse des problèmes sont également abordées, ainsi que la structure d'un algorithme.

Transféré par

doha.bouarfa24
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

FILIÉRE Informatique et Gestion des Entreprises :

Initiation à l’Algorithmique avec Python


PARTIE 1
MODELISER UN PROBLEME

Dans ce module, vous allez :

• Comprendre comment analyser un problème

• Différencier les approches d’analyse d’un problème


CHAPITRE 1
ANALYSER UN PROBLÈME
Ce que vous allez apprendre
dans ce chapitre:

• Acquérir une compréhension de la méthode


d’analyser d’un problème
• Identifier les entrées/ sorties d’un problème
• Comprendre les différents types de
traitement de données
CHAPITRE 1
ANALYSER UN PROBLÈME

1Définition du problème (Contexte,


Entrées/Sorties, traitements)

2 Types de traitement des données


01- ANALYSER UN PROBLÈME
Définition du problème

Le développement d’un logiciel est la transformation d’une idée ou d’un besoin (problème) en un logiciel
fonctionnel.
Le processus de résolution d’un problème peut être décrit en 3 phases :

• Analyse du problème
• Résolution du problème (conception et réalisation de la solution)
• Evaluation de la solution
J’imagine le problème
Analyse Résolution

Le Problème

1 - J’analyse 2 - Je résous 3 - J’évolue

5
01- ANALYSER UN PROBLÈME
Définition du problème

Un problème peut se définir comme une question à résoudre, qui prête à discussion. Un problème peut aussi se définir par un écart entre ce qui est, et ce qui
devrait ou pourrait être.
Il est soumis à des critères bien définis

Exemple 1 :

Un magasin d’électroménager contient 380 aspirateurs

Il s’approvisionne de 40 autres appareils


et fait 3 ventes de 5 aspirateurs chacune.
Entrée Algorithme Résultat
Quel est le stock actuel ?

Il est important d’apprendre à identifier le problème parce que :


• c’est la première étape cruciale du processus de la modélisation d’un problème;
• cela aide à clarifier et à préciser les problèmes pour qu’ils puissent être résolus efficacement
• cela peut aider à comprendre que tous ont une logique de résolution.

6
01- ANALYSER UN PROBLÈME
Définition du problème

L'analyse d'un problème est une étape préalable indispensable dans le processus de résolution de problème.

En effet, Un problème bien analysé est un problème à moitié résolu.

L’analyse des problèmes s’intéresse aux éléments suivants :

• Les résultats souhaités (sorties),


• Les traitements (actions réalisées pour atteindre le résultat),
• Les données nécessaires aux traitements (entrées)

L’objectif de cette étape est de :

• Bien comprendre l’énoncé du problème,


• Déterminer les dimensions du problème (entrées et sorties),
• Déterminer la méthode de de sa résolution par décomposition et raffinements successifs,
• Déterminer les formules de calculs, les règles de gestion, … etc

Le problème posé est souvent en langue naturelle et comporte plusieurs ambiguïtés d’où la nécessité de :

• Lecture entière et itérative pour comprendre et délimiter le problème à résoudre.


• Reformulation du problème sous la forme d'une question ou bien en utilisant un modèle mathématique
• il est impératif de relire ensuite le sujet pour bien vérifier qu'il n'y manque rien d'important.

7
01- ANALYSER UN PROBLÈME
Définition du problème

Bien comprendre le problème à résoudre :

Exemple 2 :

On se donne un ensemble
d’entiers positifs, on
souhaite calculer la Quelle est la moyenne
moyenne (’K’) de ces de ’K’ entiers positifs ?
entiers.

Conseils :

• Se consacrer entièrement à la compréhension du sujet


• Eviter de chercher des idées de résolution (le comment faire ?)
• Identifier les données d’entrée et les résultats attendus

8
01- ANALYSER UN PROBLÈME
Définition du problème

Bien comprendre le problème à résoudre

Données d’entrée :

• Concernent le jeu de données sur lequel on souhaite résoudre le problème


• Représente l’ensemble des données en entrée, à partir desquelles on doit calculer puis afficher un résultat

Entrée Algorithme Résultat

Conseils :

• Décrire précisément et d'avoir bien en tête les valeurs qu'elles peuvent prendre.

9
01- ANALYSER UN PROBLÈME
Définition du problème

Exemple 1 :

Un magasin d’électroménager contient 380 aspirateurs


Entrées :
Il s’approvisionne de 40 autres appareils
• Le nombre des entiers
et fait 3 ventes de 5 aspirateurs chacune.
• Les entiers positifs
Quel est le stock actuel ?

Exemple 2 :

On se donne un ensemble Entrées :


d’entiers positifs, on • Valeur du stock initial
souhaite calculer la • Quantité
moyenne (’K’) de ces d’approvisionnement
entiers. • Quantités vendues

10
01- ANALYSER UN PROBLÈME
Définition du problème

Bien comprendre le problème à résoudre :

Les résultats ou sorties :

Ils correspondent à ce que l'on demande de calculer ou de déterminer pour pouvoir obtenir le résultat

Entrée Algorithme Résultat

11
01- ANALYSER UN PROBLÈME
Définition du problème

Exemple 1 :

Réception des valeurs : Alimentation par


• Stock initial l’Approvisionnement et Emission de la valeur finale du
• Approvisionnement Somme des ventes et la stock
• Ventes Déduction des ventes du stock

Exemple 2 :

Somme des ‘N’ valeurs


Réception des ‘N’ valeurs Emission de la moyenne de
Et
numériques ces valeurs
Division de la somme par ‘N’

12
01- ANALYSER UN PROBLÈME
Définition du problème

Le traitement des données

• L’analyse d’un problème se base aussi sur spécification de toutes les relations liant les résultats aux données et éventuellement les résultats entre eux
• La spécification des relations est la partie liée aux traitements à développer afin de résoudre le problème

• Le traitement est décrit à travers une suite finie et ordonnées de règles opératoires à suivre en vue de résoudre un problème.

Exemple 2 :

Somme des ‘N’ valeurs


Réception des ‘N’ valeurs Emission de la moyenne de
Et
numériques ces valeurs
Division de la somme par ‘N’

Le traitement des données est donc la formulation d’une solution imaginée par :
• Analogie: recherche des ressemblances, des rapprochements à partir d'idées déjà trouvées pour un problème précédent plus ou moins similaire.
• Contraste: recherche des différences, des oppositions, des arguments antagonistes.
• Contigüité: recherche des faits se produisant en même temps, des parallélismes, des simultanéïtés et autres concomitances.

Il est nécessaire d’avoir du bon sens, d’adopter une démarche rigoureuse et d’utiliser des outils adaptés

13
CHAPITRE 1
ANALYSER UN PROBLÈME

1Définition du problème (Contexte,


Entrées/Sorties, traitements)

2 Types de traitement des données


01- ANALYSER UN PROBLÈME
Types de traitement des données

Le traitement des données

• Tout traitement est effectué par l’exécution séquencée d’opérations appelées instructions.

• Selon la nature du problème, un traitement est classé en 4 catégories:

Traitement Traitement
séquentiel conditionnel

Traitement Traitement
itératif récursif

15
01- ANALYSER UN PROBLÈME
Types de traitement des données

Le traitement séquentiel

Le traitement est décrit à travers l’enchaînement d’une suite d’actions primitives. Exemple :
La séquence des actions sera exécutée dans l’ordre
Fournir les données

Traitement Traitement Calculer la surface

séquentiel conditionnel
Calculer le prix des
carreaux

Calculer le prix du
ciment

Traitement Traitement Calculer le prix de


itératif récursif revient

Emettre le résultat

16
01- ANALYSER UN PROBLÈME
Types de traitement des données

Le traitement conditionnel

Le traitement est utilisé pour résoudre des problèmes dont la solution ne peut Exemple :
être décrite par une simple séquence d’actions mais implique un ou plusieurs
choix entre différentes possibilités. Un magasin accorde une remise sur les achats de ses clients.

Le taux de la remise est de 5% si le montant de l’achat est inférieur à 50Dh


Le taux de la remise est de de 10% si le montant dépasse 50Dh.
Connaissant le montant d’achat d’un client on souhaite déterminer la valeur de
Traitement Traitement la remise et calculer le montant à payer.

séquentiel conditionnel Achat


Fournir le montant
non oui des achats
<
50 Dh ?
Calculer la valeur de
la remise
Remise = Remise =
achat * 0,1 achat * 0,05
Traitement Traitement Calculer le montant à
payer
itératif récursif
Retourner le montant
L’action « Calculer la valeur de la remise » aura un
à payer
résultat différent selon la valeur de la donnée
« montant de l’achat » = Traitement conditionnel

17
01- ANALYSER UN PROBLÈME
Types de traitement des données

Le traitement itératif

L’analyse d’un problème peut révéler le besoin de répéter un même traitement plus d’une fois. Exemple :
Recours à des outils permettant d’exécuter ce traitement un certain nombre de fois sans pour
autant le réécrire autant de fois.

Considérons le problème qui consiste de calculer la


somme de 10 entiers positifs donnés

Traitement Traitement
Entrer un entier
séquentiel conditionnel Ajouter l’entier à la somme
Répéter 1 et 2 10 fois
Afficher le résultat

Traitement Traitement
itératif récursif

18
01- ANALYSER UN PROBLÈME
Types de traitement des données

Le traitement récursif

Un problème peut être exprimé en fonction d’un ou de plusieurs sous-problèmes tous de même Exemple :
nature que lui mais de complexité moindre

Considérons le problème qui consiste à calculer la


factorielle d’un entier N positif ou nul.
Traitement Traitement
On peut formuler le problème de cette manière :
séquentiel conditionnel

Si N > 0
Factorielle (N) = N * Factorielle
Si N = 0
Factorielle (N) = 1
Traitement Traitement
itératif récursif

19
CHAPITRE 2
IDENTIFIER LES APPROCHES
D’ANALYSE D’UN PROBLÈME
Ce que vous allez apprendre
dans ce chapitre:
• Différencier les différentes approches
d’analyse d’un problème
• Les maitriser
CHAPITRE 2
IDENTIFIER LES APPROCHES
D’ANALYSE D’UN PROBLÈME
1 Approche descendante

2 Approche ascendante
02- IDENTIFIER LES APPROCHES
D’ANALYSE D’UN PROBLÈME
Approche descendante

Approche descendante

L’approche descendante divise un problème complexe en plusieurs Exemple :


parties plus simples et plus petites (modules) pour organiser le
traitement de manière efficace Une pièce rectangulaire de 4 sur 3 mètres doit être carrelée. Le carrelage d’un
m² nécessite 1 sac de ciment. On cherche le prix de revient du carrelage de cette
Ces modules sont ensuite décomposés jusqu'à ce que le module pièce sachant que le prix des carreaux est de 58 Dh / m² et le prix d’un sac de
résultant constitue l’action primitive comprise et ne peut plus être ciment est de 75 Dh.
décomposée

Prix de revient ?

Prix carreaux Prix ciment

Surface Surface
Prix du m2 Prix du sac
pièce pièce

Longueur Largeur Longueur Largeur


pièce pièce pièce pièce

24
CHAPITRE 2
IDENTIFIER LES APPROCHES
D’ANALYSE D’UN PROBLÈME
1 Approche descendante

2 Approche ascendante
02- IDENTIFIER LES APPROCHES
D’ANALYSE D’UN PROBLÈME
Approche ascendante

Approche ascendante

L’approche ascendante fonctionne de manière inverse, les actions Exemple :


primitives étant d'abord conçues puis poursuivis au niveau supérieur.

• Conception des pièces les plus fondamentales qui sont ensuite Une pièce rectangulaire de 4 sur 3 mètres doit être carrelée. Le carrelage d’un
combinées pour former le module de niveau supérieur. m² nécessite 1 sac de ciment. On cherche le prix de revient du carrelage de cette
pièce sachant que le prix des carreaux est de 58 Dh / m² et le prix d’un sac de
• Intégration de sous-modules et de modules dans le module de ciment est de 75 Dh.
niveau supérieur est répétée jusqu'à l'obtention de la solution
complète requise
Prix de revient ?

Prix carreaux Prix ciment

Surface
pièce

Longueur Largeur Prix m2 Prix du sac


pièce pièce carreaux de ciment

26
PARTIE 2
FORMULER UN TRAITEMENT

Dans ce module, vous allez :

• Maitriser la structure d’un algorithme


• Connaitre les différents types de traitement
• Maitriser la programmation structurée
• Manipuler les structures de données
CHAPITRE 1
RECONNAITRE LA STRUCTURE
D’UN ALGORITHME
Ce que vous allez apprendre
dans ce chapitre :
• Comprendre la notion d’algorithme
• Différencier la notion de variable et de constante
• Connaitre les différents types d’objets informatiques
• Maitriser la structure d’un algorithme

7 heures
CHAPITRE 1
RECONNAITRE LA STRUCTURE
D’UN ALGORITHME
1 Définition d’un algorithme

2 Objets informatiques (variable,


constante, type)

3 Structure d’un algorithme


01- STRUCTURE D’UN ALGORITHME
Définition d’un algorithme

Un algorithme est une suite d'instructions détaillées qui, si elles sont correctement exécutées, conduit à un résultat donné.

"détaillées" signifie que les instructions sont En algorithmique, nous utiliserons un langage situé à mi-
suffisamment précises pour pouvoir être mises en œuvre chemin entre le langage courant et un langage de
correctement par l'exécutant (homme ou machine) programmation appelé pseudo-code.

Ingrédients Ustensiles & Récipients Une recette Le résultat

Explication : Lorsque nous cuisinons, nous utilisons des ingrédients et ustensiles, dans un ordre précis qui est
régis par notre recette (une liste d’instruction dans un ordre donné), afin d’obtenir un résultat précis

30
CHAPITRE 1
RECONNAITRE LA STRUCTURE
D’UN ALGORITHME
1 Définition d’un algorithme

2 Objets informatiques (variable,


constante, type)

3 Structure d’un algorithme


01- STRUCTURE D’UN ALGORITHME
Objets informatiques (variable, constante, type)

Un algorithme manipule des objets (données) pour obtenir un résultat.

 Un objet est composé de :


 Un identificateur (son nom) : pour le désigner. Celui-ci doit être parlant.
 Un type : pour déterminer la nature de l’objet simple (entier, caractère, ect…) ou composé (tableau,…)
 Un type détermine en particulier les valeurs possibles de l'objet, la taille mémoire réservée à l’objet et les
opérations primitives applicables à l'objet.
 Une valeur : détermine le contenu unique de l’objet

Qte Lait Qte Lait : Réel Qte Lait : Réel

2,5

Un objet Un objet Un objet Un objet


composé d’un composé d’un composé d’un
identificateur identificateur identificateur
+ type + type +
valeur

30
01- STRUCTURE D’UN ALGORITHME
Objets informatiques (variable, constante, type)

Les objets sont de deux types: les constantes et les variables.

• Une constante est un objet dont l'état reste inchangé durant toute l'exécution d'un programme. On ne peut jamais modifier sa valeur et celle-ci doit donc être
précisée lors de la définition de l'objet.

• Une variable est un objet dont le contenu (sa valeur) peut être modifié par une action

• Exemple:

31
01- STRUCTURE D’UN ALGORITHME
Objets informatiques (variable, constante, type)

Types des objets

• A chaque variable utilisée dans le programme, il faut associer un type qui permet de définir :
• l’ensemble des valeurs que peut prendre la variable
• l’ensemble des opérations qu’on peut appliquer sur la variable

• Les principaux types utilisés en algorithmique sont :


• le type entier
• le type réel
• le type caractère
• le type chaîne de caractères
• le type logique ou booléen.
Type entier
• Une variable est dite entière si elle prend ses valeurs dans Z (ensemble des entiers relatifs)
• Elle peut supporter les opérations suivantes :

Exemples
13 div 5 = 2
13 mod 5 = 3

32
01- STRUCTURE D’UN ALGORITHME
Objets informatiques (variable, constante, type)

Type réel ou décimal

• Il existe plusieurs types de réels représentant chacun un ensemble particulier de valeurs prises dans R (ensemble des nombres réels).

• Il existe deux formes de représentation des réels :


• la forme usuelle avec le point comme symbole décimal.
• Exemples
-3.2467 2 12.7 +36.49
• la notation scientifique selon le format aEb, où : a est la mantisse, qui s’écrit sous une forme usuelle b est l’exposant représentant un entier relatif.
• Exemples :
347 = 3.47E2 = 0.347E+3 = 3470E-1

• Les opérations définies sur les réels sont :

33
01- STRUCTURE D’UN ALGORITHME
Objets informatiques (variable, constante, type)

Type caractère

• Un caractère peut appartenir au domaine des chiffres de ”0” à ”9”, des lettres (minuscules et majuscules) et des caractères spéciaux (”*”, ”/”, ”{”, ”$”, ”#”, ”%” …).

• Un caractère sera toujours noté entre des guillemets.

• Le caractère espace (blanc) sera noté ” ”.

• Les opérateurs définis sur les données de type caractère sont :

• La comparaison entre les caractères se fait selon leur codes ASCII

• Exemple:

” ” < ”0” < ”1” < ”A” < ”B” < ”a” < ”b” < ”{”

34
01- STRUCTURE D’UN ALGORITHME
Objets informatiques (variable, constante, type)

Type logique ou booléen

• Une variable logique ne peut prendre que les valeurs ”Vrai” ou ”Faux”.

• Elle intervient dans l’évaluation d’une condition.

• Les principales opérations définies sur les variables de type logique sont : la négation (NON), l’intersection (ET) et l’union (OU).

• L’application de ces opérateurs se fait conformément à la table de vérité suivante :

35
01- STRUCTURE D’UN ALGORITHME
Objets informatiques (variable, constante, type)

Expressions

• Ce sont des combinaisons entre des variables et des constantes à l’aide d’opérateurs.

• Elles expriment un calcul (expressions arithmétiques) ou une relation (expressions logiques).

Les expressions arithmétiques:

• Exemple : x * 53.4 / (2 + pi)

• L’ordre selon lequel se déroule chaque opération de calcul est important.

• Afin d’éviter les ambiguïtés dans l’écriture, on se sert des parenthèses et des relations de priorité entre les opérateurs arithmétiques :

• En cas de conflit entre deux opérateurs de même priorité, on commence par celui situé le plus à gauche

36
01- STRUCTURE D’UN ALGORITHME
Objets informatiques (variable, constante, type)

Expressions

Les expressions logiques

• Ce sont des combinaisons entre des variables et des constantes à l’aide d’opérateurs relationnels (=, <, <=, >, >=, #) et/ou des combinaisons entre des variables et des
constantes logiques à l’aide d’opérateurs logiques (NON , ET, OU, etc).

• On utilise les parenthèses et l’ordre de priorité entre les différents opérateurs pour résoudre les problèmes de conflits.

• Exemple:

5 + 2 * 6 – 4 + (8 + 2 ^ 3) / (2 – 4 + 5 * 2) = 15

37
01- STRUCTURE D’UN ALGORITHME
Objets informatiques (variable, constante, type)

Déclaration d’une variable

• Toute variable utilisée dans un programme doit avoir fait l’objet d’une déclaration préalable.

• En pseudo-code, la déclaration de variables est effectuée par la forme suivante :

Var liste d'identificateurs : type


• Exemple
Var
i, j, k : Entier x, y : Réel
OK: Booléen
C1, C2 : Caractère
Déclaration d’une constante

• En pseudo-code, la déclaration des constante est effectuée par la forme suivante :

• Par convention, les noms de constantes sont en majuscules

• Une constante doit toujours recevoir une valeur dès sa déclaration

Const identificateur=valeur : type

• Exemple Const PI=3.14 : réel


Pour calculer la surface des cercles, la valeur de pi est une constante mais le rayon est une variable

38
CHAPITRE 1
RECONNAITRE LA STRUCTURE
D’UN ALGORITHME
1 Définition d’un algorithme

2 Objets informatiques (variable,


constante, type)

3 Structure d’un algorithme


02- STRUCTURE D’UN ALGORITHME

Structure d’un algorithme

<NOM_ALGORITHME> Cercle

Const Const
pi = 3.14
Const1= val1 : type
Liste des constantes
Const2=val2 : type Var
r, p, s : Réel
………
Var Début
Ecrire(”Entrer le rayon du cercle : ”)
v1 : type Liste des variables
Lire(r)
v2 : type
p := 2 * pi * r
………
s :=pi * r ^2
Début
Ecrire (”Périmètre = ”, p)
Instruction 1 Corps de l’algorithme Ecrire (”Surface = ”, s)
Instruction 2 Fin.
…..;
Fin
42
CHAPITRE 2
RECONNAITRE LES BASES
Ce que vous allez apprendre
dans ce chapitre :
• Maitriser les instructions d’affectation et les
instructions d’entrée/Sortie
• Reconnaitre les différents types de traitement
des instructions dans un algorithme

15 heures
CHAPITRE 2
RECONNAITRE LES BASES

1Traitement séquentiel (affectation,


lecture et écriture)

2 Traitement alternatif(conditions)

3 Traitement itératif (boucles)


02- RECONNAITRE LES BASES
Traitement séquentiel (affectation, lecture et écriture)

Instruction d’affectation

• L’affectation consiste à attribuer une valeur à une variable (c’est-à-dire remplir ou modifier le contenu d'une zone mémoire)

• En pseudo-code, l'affectation est notée par le signe :=

Var:= e : attribue la valeur de e à la variable Var

• e peut être une valeur, une autre variable ou une expression


• Var et e doivent être de même type ou de types compatibles

• L’affectation ne modifie que ce qui est à gauche de la flèche

Exemple:
• l’instruction : A := 6 signifie « mettre la valeur 6 dans la case mémoire identifiée par A ».
• l’instruction : B := (A + 4) Mod 3 range dans B la valeur 1 (A toujours égale à 6).

• La valeur ou le résultat de l’expression à droite du signe d’affectation doit être de même type ou de type compatible avec celui de la variable à gauche.

43
02- RECONNAITRE LES BASES
Traitement séquentiel (affectation, lecture et écriture)

Instruction de lecture

• Les instructions de lecture et d'écriture (Entrée/Sortie) permettent à la machine de communiquer avec l'utilisateur

• La lecture permet d'entrer des donnés à partir du clavier.

• En pseudo-code, on note :

lire (var)

• La machine met la valeur entrée au clavier dans la zone mémoire nommée var.

• Le programme s'arrête lorsqu'il rencontre une instruction Lire et ne se poursuit qu'après la frappe d’une valeur au clavier et de la touche Entrée.

Instruction d’écriture

• L'écriture permet d'afficher des résultats à l'écran (ou de les écrire dans un fichier)

• En pseudo-code, on note :

Ecrire (var)

•La machine affiche le contenu de la zone mémoire var


Exemple :
Ecrire(a, b+2, "Message")

44
CHAPITRE 2
RECONNAITRE LES BASES

1Traitement séquentiel (affectation,


lecture et écriture)

2 Traitement alternatif(conditions)

3 Traitement itératif (boucles)


02- RECONNAITRE LES BASES
Traitement alternatif(conditions)

Traitement alternatif

Rappel :

• Les instructions conditionnelles servent à n'exécuter une instruction ou une séquence d'instructions que si une condition est vérifiée.

• Syntaxe: forme simple

• Cette primitive a pour effet d’exécuter la séquence d’instructions si et seulement si la condition est vérifiée.

• L’exécution de cette instruction se déroule selon l’organigramme suivant:

46
02- RECONNAITRE LES BASES
Traitement alternatif(conditions)

Traitement alternatif

• Syntaxe: Forme alternative

• Cette primitive a pour effet d’exécuter la première séquence d’instructions si la condition est vérifiée ou bien la deuxième séquence d’instructions dans le cas contraire.

• L’exécution de cette instruction se déroule selon l’organigramme suivant:

47
02- RECONNAITRE LES BASES
Traitement alternatif(conditions)

Exemple 1 Exemple 2

Si ( a≠0 ) alors Si ( a – b ≠ c ) alors


a := 0 a := c
Sinon Sinon
a := b a := d
c := d Finsi

Finsi
• Si la condition est vraie, la seule instruction qui sera exécutée est l’instruction
d’affectation a : = c.

• Sinon la seule instruction qui sera exécutée est l’instruction d’affectation a : = d.


• Si la condition est vraie c’est à dire la variable a est différente de 0
alors on lui affecte la valeur 0, sinon on exécute le bloc sinon.

48
02- RECONNAITRE LES BASES
Traitement alternatif(conditions)

Traitement alternatif

• Syntaxe: Schéma conditionnel à choix multiple

Cas <var> de:


<valeur 1> : <action 1>
< valeur 2> : <action 2>
...
< valeur n> : <action n>
la partie action-sinon est facultative
Sinon : <action_sinon>
FinCas

Exemple:

• On dispose d’un ensemble de tâches que l’on souhaite exécuter en fonction de la valeur d’une variable choix de type entier, conformément au tableau suivant :

Valeur de choix Tâche à exécuter


1 Commande
2 Livraison
3 Facturation
4 Règlement
5 Stock
Autre valeur ERREUR

49
02- RECONNAITRE LES BASES
Traitement alternatif(conditions)

Traitement alternatif

Forme alternative Schéma conditionnel à choix multiple

Si choix = 1 alors Cas choix de :


Commande 1: Commande
sinon 2: Livraison
si choix = 2 alors 3: Facturation
Livraison 4: Règlement
sinon sinon ecrire (‘’Erreur’’)
si choix = 3 alors finCas
Facturation
sinon
si choix = 4 alors
Règlement
sinon
si choix = 5 alors
Stock
sinon
ecrire (‘’Erreur’’)
finsi

finsi
finsi
finsi
finsi

50
CHAPITRE 2
RECONNAITRE LES BASES

1Traitement séquentiel (affectation,


lecture et écriture)

2 Traitement alternatif(conditions)

3 Traitement itératif (boucles)


02- RECONNAITRE LES BASES
Traitement itératif (boucles)

Traitement itératif

• Structure « Pour ……….Faire »


Valeur à ajouter
Valeur à compt à chaque passage
initiale dans la boucle

Pour <compt> de <VI> à <VF> [pas <VP>] faire


Valeur
instructions finale ComptVI
Finpour
Trainements
• Le compteur (variable de contrôle) prend la valeur initiale au moment d’accès à la boucle puis, à chaque parcours,

il passe automatiquement à la valeur suivante dans son domaine jusqu’à atteindre la valeur finale
Comptcompt+VP
• L’exécution de cette instruction se déroule selon l’organigramme suivant:

Compt>VF
Faux

Vrai

52
02- RECONNAITRE LES BASES
Traitement itératif (boucles)

Traitement itératif

• Structure « Pour………….Faire »

Exemple : un algorithme permettant de lire N réels, de calculer et d’afficher leur moyenne

moyenne
var n, i, x, s : réel
Début
lire( n )
s := 0
Pour i de 1 à n faire
lire( x )
s := s + x
Finpour
ecrire( “la moyenne est :”, s / n )
Fin

53
02- RECONNAITRE LES BASES
Traitement itératif (boucles)

Traitement itératif

• Structure « TantQue Faire »»


• Le traitement est exécuté aussi longtemps que la condition est vérifiée. Si dès le début cette condition est fausse, le traitement ne sera exécuté aucune fois.
• Une boucle « tantQue » peut s’exécuter 0, 1 ou n fois

• L’exécution de cette instruction se déroule selon l’organigramme suivant:

Faux
Condition

Vrai

Traitements

Traitements après la boucle


Tant que

54
02- RECONNAITRE LES BASES
Traitement itératif (boucles)

Traitement itératif

• Structure « TantQue Faire »»

Exemple : un algorithme permettant de lire une suite de réels, de calculer et d’afficher leur moyenne.

moyenne
var i, x, s : réel

Début

lire( x )
s := 0
i := 0
TantQue x > 0 faire
i : = i + 1
s := s + x
lire( x )
FinTQ
si i ≠ 0
alors écrire( “la moyenne est :”, s / i ) Condition obligatoire pour éviter de diviser par 0 si le premier entier lu est 0
finsi
Fin

55
02- RECONNAITRE LES BASES
Traitement itératif (boucles)

Traitement itératif

• Structure « Répéter…..Jusqu' à »
• La séquence d’instructions est exécutée une première fois, puis l’exécution se répète jusqu’à ce que la condition de sortie soit vérifiée.
• Une boucle « répéter » s’exécute toujours au moins une fois

• L’exécution de cette instruction se déroule selon l’organigramme suivant:

Traitements

Faux
Condition

Traitements après la boucle


RépéteVr rai

56
02- RECONNAITRE LES BASES
Traitement itératif (boucles)

Traitement itératif

• Structure « Répéter…..Jusqu' à »

Exemple : un algorithme permettant de lire deux entiers, de calculer et d’afficher le résultat de la division du premier par le second (quotient)

quotient
var x, y : entier

Début

lire( x )
répéter
lire( y ) un contrôle obligatoire doit être effectué lors de la lecture de la deuxième valeur
jusqu’à y > 0
écrire( x / y )
Fin

57
02- RECONNAITRE LES BASES
Traitement itératif (boucles)

Passage d’une structure itérative à une autre

(*) : Le passage d’une boucle « répéter » ou « tantque » à une boucle « pour » n’est possible que si le nombre de parcours est connu à l’avance

(**) : Lors du passage d’une boucle « pour » ou « tantque » à une boucle « répéter », faire attention aux cas particuliers (le traitement sera toujours exécuté au moins une fois)

58
02- RECONNAITRE LES BASES
Traitement itératif (boucles)

Choix de la structure itérative

oui Nbre d’itérations


Boucle « Pour »
connu à l’avance

non

oui Le traitement
Boucle « Répéter » s’exécute a u
moins une fois

non

Boucle « TantQue »

59
CHAPITRE 3
STRUCTURER UN ALGORITHME
Ce que vous allez apprendre
dans ce chapitre :
• Maîtriser la définition des procédures et des
fonctions
• Maîtriser les notions de paramètre formel et
paramètre effectif
• Définir les différents types de passage des
paramètres
• Connaître la notion de variable locale et de
variable globale
CHAPITRE 3
STRUCTURER UN ALGORITHME

1 Procédures et Fonctions

2 Portée d’une variable


03- STRUCTURER UN ALGORITHME
Procédures et Fonctions

Programmation structurée

• La résolution d’un problème complexe peut engendrer des milliers de lignes de code :
• Algorithme long
• Algorithme difficile à écrire
• Algorithme difficile à interpréter
• Algorithme difficile à maintenir

• Solution : utiliser une méthodologie de résolution:

Programmation Structurée

• Idée : Découpage d’un problème en des sous_problèmes moins complexes

• Avantages
• clarté de l’algorithme
• lisibilité de la lecture d’un algorithme
• facilité de maintenance
• réutilisation des sous algorithmes

62
03- STRUCTURER UN ALGORITHME
Procédures et Fonctions

Programmation structurée

Exemple : Un programme de gestion de scolarité peut être découpé en plusieurs modules : inscription, suivi des absences, examens, diplômes, etc

Les modules développés peuvent être réutilisés plusieurs fois dans le même
programme ou dans d’autres programmes une fois intégrés à des
bibliothèques.
Décomposition d’un programme en sous-programmes

63
03- STRUCTURER UN ALGORITHME
Procédures et Fonctions

Procédures et fonctions

• Deux types de sous_algorithmes/sous_programmes sont possibles :


• procédure
• fonction

• La Communication entre sous_ programmes se fait via des paramètres :

• Il existe 3 types de paramètres:


• paramètres données : les entrées
• paramètres résultats : les sorties
• paramètres données/résultats : à l’appel des données transformés par la procédure/fonction en résultats

64
03- STRUCTURER UN ALGORITHME
Procédures et Fonctions

Paramètre formel/Paramètre effectif

• Paramètres formels: objets utilisés pour la description d’un sous_algorithme

• Paramètres effectifs : objets utilisés lors de l’appel d’un sous_algorithme

• Un paramètre formel est toujours une variable.

• Un paramètre effectif peut être :

• une variable

• une constante

• une expression arithmétique

• un appel de fonction

• Pour tout paramètre formel on fait correspondre un paramètre effectif.

• Le paramètre formel et le paramètre effectif correspondant doivent avoir le même type ou être de types compatibles.

• La correspondance entre paramètres formels et paramètres effectifs se fait selon l’ordre de leurs apparitions dans la définition et dans l’utilisation de la procédure ou la
fonction.

65
03- STRUCTURER UN ALGORITHME
Procédures et Fonctions

Syntaxe Définition d’une procédure

• Pour définir une procédure on adoptera la syntaxe suivante

<Nom_proc> (<liste_par_form>)
Var <declaration_variables>
Debut
<Corps_procédure>
Fin Nom_proc> : désigne le nom de la procédure.
<liste_par_form> : la liste des paramètres formels. Un paramètre résultat ou
donnée/résultat doit être précédé par le mot clé var.
<declaration_varibales> : la liste des variables
<Corps_procédure> : la suite des instructions décrivant le traitement à effectuer

66
03- STRUCTURER UN ALGORITHME
Procédures et Fonctions

Syntaxe Définition d’une procédure

Exemple:

• La procédure suivante permet de lire N valeurs entières et de calculer la plus petite Min_Max (N : entier ; var min: entier, var max : entier)
et la plus grande parmi ces N valeurs. Var i, x : entier
Début
• Les entiers saisis doivent être supérieurs à 0 et inférieurs à 100. min := 100
max := 0
 Le nom de cette procédure est Min_Max pour i de 1 à N faire
Répéter
 Les paramètres formels sont : l’entier N comme paramètre donné, les Lire ( x )
entiers min et max comme paramètres résultats (précédés par le mot clé Jusqu’à (x > 0) et (x < 100)
var). Si x < min Alors
min := x
 2 variables locales de type entier : i et x Finsi
Si x > max Alors
max := x
Finsi
Finpour
Fin

67
03- STRUCTURER UN ALGORITHME
Procédures et Fonctions

Syntaxe Définition d’une fonction

• Pour définir une fonction, on adoptera la syntaxe suivante :

Nom_fonction>(<liste_par_form>) : <Type-fonction>

Var <declarat_var_locales>
Début
<Corps_fonction>
retourner <valeur>
Nom_fonction>: désigne le nom de la fonction
Fin
<liste_par_form> : désigne la liste des paramètres formels de la fonction

<declarat_var_locales> définissent les mêmes concepts que pour la procédure

<Type-fonction> : est le type de la valeur retourner par la fonction.

<Corps_fonction>: en plus des instructions décrivant le traitement à effectuer, une


instruction d’affectation du résultat que devrait porter la fonction au nom de la fonction
elle-même.
retourner <valeur>: est la valeur retournée par la fonction

68
03- STRUCTURER UN ALGORITHME
Procédures et Fonctions

Syntaxe Définition d’une fonction

Exemple:

• La fonction suivante permet de lire N valeurs entières et de calculer la plus petite Min (N : entier): entier
parmi ces N valeurs. Var i, x, min : entier
Début
• Les entiers saisis doivent être supérieurs à 0 et inférieurs à 100. min := 100
pour i de 1 à N faire
 Le nom de cette fonction est Min Répéter
Lire ( x )
 La fonction retour un entier Jusqu’à (x > 0) et (x < 100)
Si x < min Alors
 Les paramètres formels sont : l’entier N comme paramètre donné min := x
 3 variables locales de type entier : i , x et min Finsi

Finpour
retourner min
Fin

69
03- STRUCTURER UN ALGORITHME
Procédures et Fonctions

Appel d’une procédure/une fonction

• Lors de l’appel d’un sous algorithme (procédure ou fonction) à partir d’un algorithme appelant, on utilisera le nom de la procédure ou la fonction suivi par la liste de ses
paramètres effectifs

<Nom>(<liste_par_effectif>)

• <Nom> : est le nom de la procédure ou la fonction


• <liste_par_effectif> : une suite d’objets désignant les paramètres effectifs séparés par des virgules (‘,’).

• Les paramètres effectifs et les paramètres formels doivent être compatibles en nombre et en type.

• La correspondance entre les 2 types de paramètres se fait selon l’ordre d’apparition.

70
03- STRUCTURER UN ALGORITHME
Procédures et Fonctions

Appel d’une procédure/une fonction

Exemple:

• On souhaite écrire un algorithme qui lit un entier N supérieurs à 3, puis saisit N valeurs entières et affiche la plus petite parmi ces N valeurs. Les entiers saisis doivent
être supérieurs à 0 et inférieurs à 100.

Programme principal Procédure lire_nombre Fonction Min


Affiche_min lire_nombre(var N ) Min (N : entier): entier
Var N, min: entier Début Var i, x, min : entier
Début Répéter Début
lire_nombre(N ) Lire ( N ) min := 100
min := Min(N) Jusqu’à ( N > 3) pour i de 1 à N faire
écrire( ‘’la plus petite valeur est :’’, min) Fin Répéter
Fin Lire ( x )
Jusqu’à (x > 0) et (x < 100)
Si x < min Alors
min := x
Finsi

Finpour
retourner min
Fin

71
03- STRUCTURER UN ALGORITHME
Procédures et Fonctions

Passage de paramètre

• Passage par valeur : valeur du paramètre effectif transmise au paramètre formel.


• il s’agit d’ paramètre donnée

• Passage pavradresse : l’adresse du paramètre effectif transmise avuparamètre formel


• il s’agit d’un paramètre résultat ou d’un paramètre donnée/résultat

Appelant Appelé

[Link] [Link]
Appelant Appelé
Passage par adresse

[Link] [Link]

Passage par valeur Zone mémoire

• Une copie est transmise • Une adresse est transmise


• Toute modification sur le paramètre formel n’altère pas le paramètre effectif • Toute modification sur le paramètre formel altère le paramètre effectif

72
03- STRUCTURER UN ALGORITHME
Procédures et Fonctions

Passage de paramètre

Exemple:

Passage de paramètres par valeur Passage de paramètres par adresse

ajoute_un (a : entier) inc(var x : entier)


Debut Debut
a := a+1 x := x+1
Fin Fin

Appel :
Appel : Programme Principal
Programme Principal var y : entier
var x : entier Debut
Debut y := 9
x := 9 inc(y)
ajoute_un(x) ecrire(y)
ecrire(x) Fin
Fin
Valeur affichée 9 Valeur affichée 10

73
CHAPITRE 3
STRUCTURER UN ALGORITHME

1 Procédures et Fonctions

2 Portée d’une variable


03- STRUCTURER UN ALGORITHME
Portée d’une variable

Variable globale/variable locale


Algorithme Essai
• La portée d’une variable est l’ensemble des sous-algorithmes (procédures ou Var X, Y : entier
fonctions) où cette variable est connue (les instructions de ces sous- Procédure A
algorithmes peuvent utiliser cette variable)
Var X,I : entier

Déclaration de la
procédure A
• Une variable définie au niveau du programme principal (celui qui résout le Début
problème initial, le problème de plus haut niveau) est appelée variable X variable locale de A
X:=..
globale
I:= Y variable locale de A
• La portée d’une variable globale est totale : tout sous-algorithme du Fin
programme principal peut utiliser cette variable

• Une variable définie au sein d’un sous-algorithme est appelée variable locale Procédure B

la procédure B
Déclaration de
• La portée d’une variable locale est uniquement le sous-algorithme qui la Var Y: entier
déclare Début
Y:= Y variable locale de B
• Lorsque le nom d’une variable locale est identique à une variable globale, la
variable globale est localement masquée Dans ce sous-programme la variable Fin

Corps de l’algorithme Essai


globale devient inaccessible. Début

(programme principal)
X variable globale
X:=..

Y:= Y variable globale

I:= Erreur!! I Inaccessible


Fin

77
CHAPITRE 4
STRUCTURER LES DONNÉES
Ce que vous allez apprendre
dans ce chapitre:

• Maîtriser la manipulation d’un tableau vecteur et


d’un tableau multidimensionnel
• Connaître les principaux algorithmes de tri d’un
tableau
• Maîtriser la manipulation des chaines de
caractères
CHAPITRE 4
STRUCTURER LES DONNÉES

1 Différents types de tableaux


2 Chaines de caractères
04- STRUCTURER LES DONNÉES
Différents types de tableaux

Structure de données

• Une structure de données est une manière particulière de stocker et d’organiser des données dans un ordinateur de façon à pouvoir être utilisées efficacement.

• Une structure de données regroupe :


• Un certain nombre de données à gérer,
• Un ensemble d’opérations pouvant être appliquées à ces données

• Dans la plupart des cas, il existe :


• plusieurs manières de représenter les données,
• différents algorithmes de manipulation.

78
04- STRUCTURER LES DONNÉES
Différents types de tableaux

Structure Tableau Vecteur

• Un tableau est une structure de données qui permet de stocker à l’aide d’une seule variable un ensemble de valeurs de même type

• Un tableau unidimensionnel est appelé vecteur

• Syntaxe de déclaration d’un tableau vecteur

Type vecteur = tableau [1..MAX] de type des éléments


avec MAX est le nombre maximum d’éléments pour le type vecteur

• Exemple: déclaration d’un tableau de 5 cases

T : tableau [1..5] d’entier

• L’accès à un élément du tableau se fait via la position de cet élément dans le tableau

nom_tableau [indice]
avec indice est la position de l’élément dans le tableau

• Exemple: T[2] correspond à la case 2 ayant la valeur 32

79
04- STRUCTURER LES DONNÉES
Différents types de tableaux

Structure Tableau Vecteur

• Caractéristiques
• Un tableau vecteur possède un nombre maximal d’éléments défini lors de l’écriture de l’algorithme (les bornes sont des constantes explicites, par exemple
MAX, ou implicites, par exemple 10)
• Le nombre d’éléments maximal d’un tableau est différent du nombre d’éléments significatifs dans un tableau

• Exemple d’un algorithme permettant de lire un tableau vecteur de 12 entiers

LectutreTabVecteur

Var i : entier
T : tableau[1..12] de Réel
Debut
Pour i de 1 à 12 faire
Lire(T[i])
Finpour
Fin

80
04- STRUCTURER LES DONNÉES
Différents types de tableaux

Structure de tableau multi-dimensions

• Par extension, on peut définir et utiliser des tableaux à n dimensions

• Syntaxe de déclaration d’un tableau à n dimensions:

tableau [intervalle1,intervalle2,…,intervallen] de type des éléments

• Les tableaux à deux dimensions permettent de représenter les matrices

• Syntaxe de déclaration d’une matrice:

tableau [intervalle1,intervalle2] de type des éléments

• Chaque élément de la matrice est repéré par deux indices :


• le premier indique le numéro de la ligne
• le second indique le numéro de la colonne.

• Exemple de déclaration d’un tableau à 2 dimensions: T : tableau [1..2,1..M] d’entier

T[2,i] correspond à signe l’élément situé à la 2ème ligne et la ième colonne.

81
04- STRUCTURER LES DONNÉES
Différents types de tableaux

Structure de tableau multi-dimensions

Exemple : un algorithme permettant de lire un tableau matrice d’entiers de 12 lignes et 8 colonnes

LectutreTabMatrice j de 1 à 8
Var i , j : entier indices
T: tableau[1..12 , 1..8] de Réel
Debut
Pour i de 1 à 12 faire
Pour j de 1 à 8 faire
Lire(T[i , j])
Finpour
Finpour
Fin i
de 1 à 12

.
.

82
04- STRUCTURER LES DONNÉES
Différents types de tableaux

Tri d’un tableau

• Il existe plusieurs méthodes de tri qui se différencient par leur complexité d’exécution et leur complexité de compréhension pour le programmeur.

• Parmi les méthodes de Tri d’un tableau on cite :

Tri par insertion

Tri à bulles Algorithme

Tri par sélection

83
04- STRUCTURER LES DONNÉES
Différents types de tableaux

Tri par sélection

Le tri par sélection est la méthode de tri la plus simple, elle consiste à : Tri_Selection(Var T : Tab)
• chercher l’indice du plus petit élément du tableau T[1..n] et permuter
l’élément correspondant avec l’élément d’indice 1 Var
i, j, x, indmin : Entier
• chercher l’indice du plus petit élément du tableau T[2..n] et permuter
Début
l’élément correspondant avec l’élément d’indice 2
• ………………………………………………………………………………………… Pour i de 1 à (n-1) Faire
indmin  i
• chercher l’indice du plus petit élément du tableau T[n-1..n] et permuter
l’élément correspondant avec l’élément d’indice (n-1). Pour j de (i+1) à n Faire
Si (T[j] < T[indmin]) Alors
indmin  j
FinSi
FinPour
x T[i]
T[i] T[indmin]
T[indmin] x
FinPour
Fin

84
04- STRUCTURER LES DONNÉES
Différents types de tableaux

Tri à bulles

La méthode de tri à bulles nécessite deux étapes : Tri_Bulle (Var T : Tab)


• Parcourir les éléments du tableau de 1 à (n–1) ; si Var
l’élément i est supérieur à l’élément (i+1), alors on les
i, x : Entier
permute
échange : Booléen
• Le programme s’arrête lorsqu’aucune permutation n’est Début
réalisable après un parcours complet du tableau. Répéter
échange Faux
Pour i de 1 à (n-1) Faire
Si (T[i] > T[i+1]) Alors
x T[i]
T[i] T[i+1]
T[i+1] x
échange Vrai
FinSi
FinPour
Jusqu’à (échange = Faux)
Fin

85
04- STRUCTURER LES DONNÉES
Différents types de tableaux

Tri par insertion

Le tri par insertion consiste à prendre les éléments de la liste un par un et insérer chacun dans sa bonne Tri_Insertion(Var T : Tab)
place de façon que les éléments traités forment une sous-liste triée. Var
Pour ce faire, on procède de la façon suivante : i, j, x, pos : Entier
Début
• comparer et permuter si nécessaire T[1] et T[2] de façon à placer le plus petit dans la case d’indice
• comparer et permuter si nécessaire l’élément T[3] avec ceux qui le précèdent dans l’ordre (T[2] puis Pour i de 2 à n Faire
T[1]) afin de former une sous-liste triée T[1..3] pos i - 1
• …………………………………………………. TantQue (pos>=1) et (T[pos]>T[i]) Faire
• comparer et permuter si nécessaire l’élément T[n] avec ceux qui le précèdent dans l’ordre (T[n-1],
pos  pos – 1
T[n-2], …) afin d’obtenir un tableau trié.
FinTQ
pos pos + 1
x T[i]
Pour j de (i-1) à pos [pas = -1] Faire
T[j+1] T[j]
FinPour
T[pos]  x
[Pas = -1] signifie que le parcours se fait dans le sens
FinPour décroissant
Fin

86
CHAPITRE 4
STRUCTURER LES DONNÉES

1 Différents types de tableaux


2 Chaines de caractères
04- STRUCTURER LES DONNÉES
Chaines de caractères

Chaine de caractères

• Une chaîne est une suite de caractères. La chaîne ne contenant aucun caractère est appelée chaîne vide.

• Syntaxe de déclaration d’un chaine

ch : Chaîne
chn : Chaîne[Max]
La variable ch peut contenir jusqu’à 255 caractères alors que chn peut
contenir au maximum Max caractère

• Les opérations sur les chaines de caractères

• La concaténation C’est l’assemblage de deux chaînes de caractères en utilisant l’opérateur « + ».


Exemple:
chn1 :=“Structure”
chn2 := “de données”
chn3 := chn1+” “+chn2
la variable chn3 contiendra “Structure de données”

88
04- STRUCTURER LES DONNÉES
Chaines de caractères

Chaine de caractères

• Les opérations sur les chaines de caractères


• les opérateurs relationnels (>, >=, <, <=, =, #)
• Il est possible d’effectuer une comparaison entre deux chaînes de caractères, le résultat est de type booléen. La comparaison se fait caractère par
caractère de la gauche vers la droite selon le code ASCII.
• Exemples:
• L’expression («a” > ”A”) est vraie puisque le code ASCII de ”a” (97) est supérieur à celui de ”A” (65)
• L’expression (”programme” < ”programmation”) est fausse puisque ”e” > ”a »
• L’expression (”” = ” ”) est fausse (le vide est différent du caractère espace).
• Accès à un caractère dans une chaîne
• il suffit d’indiquer le nom de la chaîne suivi d’un entier entre crochets qui indique la position du caractère dans la chaîne.
• Exemple: chn:= ”Turbo Pascal”
c:= chn[7] (la variable c contiendra le caractère ”P”)
• En général, ch[i] désigne le ième caractère de la chaîne ch.

89
04- STRUCTURER LES DONNÉES
Chaines de caractères

Chaine de caractères

• Procédures standards sur les chaines de caractères • Fonctions standards sur les chaines de caractères

90
PARTIE 3
PROGRAMMER EN PYTHON
Dans ce module, vous allez :

• Maitriser les bases de la programmation Python


• Appliquer les bonnes pratiques de la programmation
Python
• Manipuler les fonctions en Python
• Maitriser la manipulation des données en Python
CHAPITRE 1
TRANSFORMER UNE SUITE
D’ÉTAPES ALGORITHMIQUE EN
UNE SUITE D’INSTRUCTIONS
PYTHON
Ce que vous allez apprendre
dans ce chapitre :
• Connaitre les critères de choix d’un langage de programmation

• Connaitre les caractéristiques du langage Python

• Maitriser la structure générale d’un programme Python

• Traduire un algorithme en langage Python

• Appliquer les bonnes pratiques du codage en Python


CHAPITRE 1
TRANSFORMER UNE SUITE
D’ÉTAPES ALGORITHMIQUE EN
UNE SUITE D’INSTRUCTIONS
PYTHON

1 Critères de choix d’un langage de programmation

2 Blocs d’instructions

3 Conversion de l’algorithme en Python

4 Optimisation du code (Bonnes pratiques de


codage, commentaires,…)
01- PYTHON
Critères de Choix d’un langage de programmation

Langage de programmation

• Langage de programmation est un outil à l’aide duquel le programmeur écrit des programmes exécutables sur un ordinateur

•Il y a toute une panoplie de langages disponibles

Exemples : FORTRAN, COBOL, Pascal, Ada, C, Java, Python


• Il est important de pouvoir évaluer ces langages afin de pouvoir les choisir de manière appropriée et de les améliorer

• Trois critères d’évaluation sont généralement utilisés

• correspond à la facilité avec laquelle un programme


la lisibilité
peut-être lu et compris

• correspond a la facilité avec laquelle un langage peut


la facilité d’écriture
être utilisé pour créer un programme

• correspond au degré de confiance avec lequel un


la fiabilité programme peut être exécuté sous différentes conditions
et aboutir aux mêmes résultats

94
01- PYTHON
Critères de Choix d’un langage de programmation

Critères d’évaluation La simplicité


• S’il y a beaucoup de composantes de bases (tels que les mots clés), il est difficile
toutes les connaître
• S’il existe plusieurs façons d’exprimer une commande, il est aussi difficile de toutes
les connaître
• Trop de simplicité cause la difficulté de lecture
• Il faut alors trouver un compromis entre la simplicité et la facilité d'écriture
Critères affectant la Critères affectant la
lisibilité facilité d'écriture L’orthogonalité
• L'orthogonalité est la propriété qui signifie "Changer A ne change pas B".
• Dans les langages de programmation, cela signifie que lorsque vous exécutez une
instruction, rien que cette instruction ne se produit
• De plus, la signification d’un élément du langage doit être indépendante du contexte
dans lequel il apparait

Instructions de contrôle
Critères affectant la • Pour la lisibilité d’un langage de programmation, il est important d’avoir des
structures de contrôle adéquates ( structures itératives, structures conditionnelles,
fiabilité etc)
• Par exemple, l’un des plus grands problèmes du premier ,BASIC est que sa seule
instruction de contrôle était le « goto »

Types et structures de donnée


• La présence de moyens appropriés pour définir des types et des structures de
données dans un langage peut améliorer considérablement la lisibilité

95
01- PYTHON
Critères de Choix d’un langage de programmation

Critères d’évaluation La simplicité et l'orthogonalité


• Si un langage a une grande variation de constructeurs syntaxiques, il est fort possible
que certains programmeurs ne les connaissent pas
• De même, il se peut que le programmeur ne connaisse certains constructeurs que
superficiellement et les utilises de manière erronée
Critères affectant
Critères affectant L'abstraction
la facilité • L ’abstraction est la possibilité de définir des structures ou des opérations
la lisibilité compliquées tout en cachant leurs détails (abstraction de processus et abstraction
d'écriture des données)

• Abstraction de processus : Quand un processus est abstrait dans un sous-


programme il n’est pas nécessaire de répéter son code à chaque fois qu’il est utilisé.
Un simple appel de la procédure/fonction est suffisant

• Abstraction des données: les données peuvent être abstraites par les langages de
Critères affectant programmation de haut niveau dans des objets à interface simple. L’utilisateur n’a
la fiabilité pas besoin de connaitre les détails d’implémentation pour les utiliser (utilisation des
arbres, tables de hachage,….)

L'expressivité
• Un langage est expressif s’il offre des outils simples, commodes et intuitifs pour
permettre au programmeur d'exprimer les différents concepts de programmation
Exemple: Utiliser des boucles "for" et "while" au lieu de "goto

96
01- PYTHON
Critères de Choix d’un langage de programmation

Critères d’évaluation
Vérification de types
• La vérification de type signifie qu’un langage est capable de détecter les erreurs
relatives aux types de données lors de la compilation etbde l'exécution
Exemple:
• Le langage de programmation C e détecte pas ces erreurs, le programme peut-être
Critères affectant exécuté, mais les résultats ne seront pas significatifs
Critères affectant
la facilité
la lisibilité Prise en Charge des Exceptions
d'écriture • La possibilité pour un programme d’intercepter les erreurs faites pendant l’exécution,
de les corriger, et de continuer l’exécution augmente de beaucoup la fiabilité du
langage de programmation
Exemple:
• Des langages tels que Python, Ada, C++ et Java, Ruby, C# ont des capacités étendues
de prise en charge des exceptions, mais de tels capacités sont absentes dans d'autres
langages tels que le C ou le FORTRAN
Critères affectant
Lisibilité et facilité d'écriture
la fiabilité • La lisibilité et la facilite d’écriture influencent la fiabilité des langages de
programmation
• si il n’y a pas de moyens naturels d’exprimer un algorithme, des solutions complexes
seront utilisées, et le risque d'erreurs (bugs) augmente

97
01- PYTHON
Critères de Choix d’un langage de programmation

Coût d’un langage de programmation

• Si le langage n’est pas simple et orthogonal alors :


• les coûts de formation de programmeurs seront plus élevés
• l'écriture de programmes coûtera plus cher

• Autres facteurs
• Les coûts de la compilation et de l’exécution de programmes
• Les coûts de la maintenance de programmes
• le coût de la mise en marche du langage
• le coût lié au manque de fiabilité
• le coût de la maintenance du langage (correction, modification et ajout de nouvelles fonctionnalités)

Autres critères

• Il y a aussi d’autres critères tels que:


• La portabilité
• La généralité/spécificité
• La précision et la complétude de la description
• La vitesse d'exécution
• etc

98
01- PYTHON
Critères de Choix d’un langage de programmation

Langage python

• Python est un langage de programmation développé depuis 1989 par Guido van Rossum et de nombreux contributeurs bénévoles

• En février 1991, la première version publique, numérotée 0.9.0

• Afin de réparer certains défauts du langage, la version Python 3.0 a été publié en décembre 2008.

• Cette version a été suivie par une version 3.1 qui corrige les erreurs de la version 3.0

Caractéristiques de Python

• Python est portable, non seulement sur les différentes variantes d'Unix, mais aussi sur les OS propriétaires: MacOS, BeOS, NeXTStep, MS-DOS et les différentes
variantes de Windows

• Python est gratuit, mais on peut l'utiliser sans restriction dans des projets commerciaux

• La syntaxe de Python est très simple et, combinée à des types de données évolués (listes, dictionnaires,...), conduit à des programmes à la fois très compacts et très
lisibles.

• Python gère ses ressources (mémoire, descripteurs de fichiers...) sans intervention du programmeur

99
01- PYTHON
Critères de Choix d’un langage de programmation

Caractéristiques de Python

• Python est orienté-objet.

• Python intègre un système d'exceptions, qui permettent de simplifier considérablement la gestion des erreurs.

• Python est dynamique (l'interpréteur peut évaluer des chaînes de caractères représentant des expressions ou des instructions Python), orthogonal (un petit nombre
de concepts suffit à engendrer des constructions très riches) et introspectif (un grand nombre d'outils de développement, comme le debugger sont implantés en
Python lui-même).

• Python est dynamiquement typé c’est à dire tout objet manipulable par le programmeur possède un type bien défini à l'exécution, qui n'a pas besoin d'être déclaré à
l'avance.

• Python est extensible, on peut facilement l'interfacer avec des bibliothèques C existantes.

• La bibliothèque standard de Python, et les paquetages contribués, donnent accès à une grande variété de services: chaînes de caractères et expressions régulières,
services UNIX standard (fichiers, pipes, signaux, sockets, threads...), protocoles Internet (Web, News, FTP, CGI, HTML...), persistance et bases de données, interfaces
graphiques

100
CHAPITRE 1
Transformer une suite d’étapes
algorithmique en une suite
d’instructions Python

1 Critères de choix d’un langage de programmation

2 Blocs d’instructions

3 Conversion de l’algorithme en Python

4 Optimisation du code (Bonnes pratiques de


codage, commentaires,…)
01- PYTHON
Blocs d’instructions

Structuration et notion de bloc

• En Python, chaque instruction s'écrit sur une ligne sans mettre d'espace:

Exemple:
a = 10
b = 3
print(a, b)

• Ces instructions simples peuvent cependant être mises sur la même ligne en les séparant par des points virgules ; les lignes étant exécutées dans l'ordre de gauche à
droite:

Exemple: a = 10; b = 3; print(a, b)

• La séparation entre les en-têtes qui sont des lignes de définition de boucles, de fonction, de
classe qui se terminent par les deux points :

• Le contenu ou 'bloc' d'instructions correspondant se fait par indentation des lignes

• Une indentation s'obtient par le bouton tab (pour tabulation) ou bien par 4 espaces
successifs.

• L’ensemble des lignes indentées constitue un bloc d’instructions.

104
CHAPITRE 1
TRANSFORMER UNE SUITE
D’ÉTAPES ALGORITHMIQUE EN
UNE SUITE D’INSTRUCTIONS
PYTHON

1 Critères de choix d’un langage de programmation

2 Blocs d’instructions

3 Conversion de l’algorithme en Python

4 Optimisation du code (Bonnes pratiques de


codage, commentaires,…)
01- PYTHON
Conversion de l’algorithme en Python

Script et langage python Invite de commande

• Peu de ponctuation

• Pas de point virgule ";"

• Tabulations ou 4 espaces significatifs

• Scripts avec exécution d’un fichier ayant l’extension .py


Fichier [Link]
Exemple: [Link]

• Python utilise un identifiant pour nommer chaque objet.

• Python n'offre pas la notion de variable, mais plutôt celle de référence (adresse) d'objet.

104
01- PYTHON
Conversion de l’algorithme en Python

Types de données

Les types de données les plus utilisés sont:

• Type entier (integer)

• Type réel (float)

• Type Boolean

• Type caractère

105
01- PYTHON
Conversion de l’algorithme en Python

Variables

• Une variable est créée au moment où vous lui attribuez une valeur pour la première fois.

• Les variables de chaîne peuvent être déclarées à l'aide de guillemets simples ou doubles:

• Règles pour les variables Python:


• Un nom de variable doit commencer par une lettre ou le caractère de soulignement
• Un nom de variable ne peut pas commencer par un nombre
• Un nom de variable ne peut contenir que des caractères alphanumériques et des traits de soulignement (A-z, 0-9 et _)
• Les noms de variable sont sensibles à la casse (age, Age et AGE sont trois variables différentes)

• Python permet d'affecter des valeurs à plusieurs variables sur une seule ligne:

106
01- PYTHON
Conversion de l’algorithme en Python

Variables d’entrée

• La fonction input() retourne une valeur correspondant à ce que l'utilisateur a entré. Cette valeur peut alors être assignée à une variable quelconque

• input() renvoie une valeur dont le type est une chaine de caractère

• Utiliser int() pour convertir la sortie en entier

Variables de sortie

• La fonction print Python est souvent utilisée pour afficher des variables et des chaines de caractères.
• Pour combiner à la fois du texte et une variable, Python utilise le caractère +:

107
01- PYTHON
Conversion de l’algorithme en Python

Variables de sortie

• Le mot clé end évite le retour à la ligne

• La méthode .format() permet une meilleure organisation de l'affichage des


variables

• Le mot clé sep précise une séparation entre les variables chaines

108
01- PYTHON
Conversion de l’algorithme en Python

Manipulation des Types numériques

• Les quatre arithmétiques de base se font de manière simple sur les types numériques (nombres entiers et réels)

109
01- PYTHON
Conversion de l’algorithme en Python

Manipulation des chaînes de caractères

• En Python une chaîne de caractères est un objet de la classe str

• Les opérateurs de concaténation (+) et de répétition (*)


• Les opérateurs in et not in

• Création des chaînes de caractères en utilisant le mot clé str

110
01- PYTHON
Conversion de l’algorithme en Python

Manipulation des chaînes de caractères

• Fonctions des chaînes de caractères


• Plusieurs fonctions intégrées en Python sont utilisées avec les chaînes de caractères.
• Puisque s a 7 caractères, len(s) renvoie 7
• les lettres minuscules ont une valeur ASCII supérieure à celle des lettres majuscules,
donc max(s) retourne ‘o’ et min(s) retourne ‘W’ (ligne 7).

• L’opérateur indice [ ]
• Une chaîne de caractères est une séquence de caractères.
• Un caractère de la chaîne est accessible par l’opérateur indice [ ]

• Découpage en tranche ([début :fin])

111
01- PYTHON
Conversion de l’algorithme en Python

Manipulation des chaînes de caractères

• Comparaison de chaînes de caractères


• La comparaison des caractères un par un selon leurs code ASCII

• Recherche de sous-chaînes
• endswith: vérifie si une chaine se termine par une autre
• startswith: vérifie si une chaine se commence par une autre
• Find: recherche de la position d’une chaine dans une autre
• Count: retourne ne nombre d’occurrence d’une chaine dans une autre

112
01- PYTHON
Conversion de l’algorithme en Python

Structure conditionnelle

Exemple1:
Exemple 2: Exemple 3:

• Le mot clé or est un opérateur logique et est utilisé pour combiner des instructions conditionnelles:

• Le mot clé and est un opérateur logique et est utilisé pour combiner des instructions conditionnelles:

113
01- PYTHON
Conversion de l’algorithme en Python

Boucles d'itérations

• Boucle While

• Avec la boucle while, il est possible d’exécuter un ensemble d'instructions tant qu'une condition est vraie:

• Avec l'instruction break, nous pouvons arrêter la boucle même si la condition while est vraie:

• Avec l'instruction continue, nous pouvons arrêter l'itération en cours et continuer avec la suivante:

114
01- PYTHON
Conversion de l’algorithme en Python

Boucles d'itérations

• Boucle For
• Une boucle for est utilisée pour itérer sur une séquence (c'est-à-dire une liste, un tuple, un dictionnaire, un ensemble ou une chaîne):

• Même les chaînes sont des objets itérables, elles contiennent une séquence de caractères

• Avec l'instruction break, nous pouvons arrêter la boucle avant d'avoir bouclé tous les éléments:

115
01- PYTHON
Conversion de l’algorithme en Python

Boucles d'itérations

• Boucle For
• Pour parcourir un ensemble de codes un nombre spécifié de fois,
nous pouvons utiliser la fonction range (),
• La fonction range () renvoie une séquence de nombres,
commençant à 0 par défaut, et incrémentant de 1 (par défaut),
et se termine à un nombre spécifié;

• La fonction range () par défaut est 0 comme valeur de départ,


mais il est possible de spécifier la valeur de départ en ajoutant un
paramètre: range (2, 6), ce qui signifie des valeurs de 2 à 6 (mais
pas 6):

• La fonction range () par défaut incrémente la séquence de 1, mais


il est possible de spécifier la valeur d'incrément en ajoutant un
troisième paramètre: range (2, 30, 3):

116
CHAPITRE 1
Transformer une suite d’étapes
algorithmique en une suite
d’instructions Python

1 Critères de choix d’un langage de programmation

2 Blocs d’instructions

3 Conversion de l’algorithme en Python

4 Optimisation du code (Bonnes pratiques de


codage, commentaires,…)
01- PYTHON
Optimisation du code (Bonnes pratiques de codage,…)

Python Enhancement Proposal

• Afin d’améliorer le langage Python, la communauté qui développe Python publie régulièrement des Python Enhancement Proposal (PEP), suivi d’un numéro.

• Il s’agit de propositions concrètes pour améliorer le code, ajouter de nouvelles fonctionnalités, mais aussi des recommandations sur la manière d’utiliser Python, bien
écrire du code, etc.

• On parle de code pythonique lorsque ce dernier respecte les règles d’écriture définies par la communauté Python mais aussi les règles d’usage du langage.

• La PEP 8 Style Guide for Python Code 2 est une des plus anciennes PEP (les numéros sont croissants avec le temps). Elle consiste en un nombre important de
recommandations sur la syntaxe de Python

• Quelques concepts de PEP

Indentation

Importation des modules Règles de nommage

Gestion des espaces

Longueur de ligne Lignes vides

Commentaires

118
01- PYTHON
Optimisation du code (Bonnes pratiques de codage,…)

• L’indentation est obligatoire en Python pour séparer les blocs d’instructions.

• Cela vient d’un constat simple, l’indentation améliore la lisibilité d’un code

• Dans la PEP 8, la recommandation pour la syntaxe de chaque niveau d’indentation est très
simple : 4 espaces

119
01- PYTHON
Optimisation du code (Bonnes pratiques de codage,…)

• Les modules sont des programmes Python qui contiennent des fonctions que l’on est amené à
réutiliser souvent (on les appelle aussi bibliothèques ou libraries). Ce sont des « boîtes à outils »
qui vont vous être très utiles.

• l’utilisation de la syntaxe import module permet d’importer tout une série de fonctions organisées
par «thèmes ».

• Exemple:

• les fonctions gérant les nombres aléatoires avec random et les fonctions mathématiques avec
math. Python possède de nombreux autres modules internes (c’est-à-dire présent de base
lorsqu’on installe Python)

120
01- PYTHON
Optimisation du code (Bonnes pratiques de codage,…)

• Les noms de variables, de fonctions et de modules doivent êtres en


minuscules avec un caractère « souligné » (« tiret du bas » ou
underscore en anglais) pour séparer les différents « mots » dans le nom.

• Les constantes sont écrites en majuscules :

121
01- PYTHON
Optimisation du code (Bonnes pratiques de codage,…)

• La PEP 8 recommande d’entourer les opérateurs (+, -, /, *, ==, !=, >=, not, in, and, or. . . )
d’un espace avant et d’un espace après. Par exemple :

• Il n’y a, par contre, pas d’espace à l’intérieur de crochets, d’accolades et de parenthèses :

• Ni juste avant la parenthèse ouvrante d’une fonction ou le crochet ouvrant d’une liste ou
d’un dictionnaire :

122
01- PYTHON
Optimisation du code (Bonnes pratiques de codage,…)

• On met un espace après les caractères : et , (mais pas avant) :

• Par contre, pour les tranches de listes, on ne met pas d’espace autour du :

• On n’ajoute pas plusieurs espaces autour du = ou des autres opérateurs

123
01- PYTHON
Optimisation du code (Bonnes pratiques de codage,…)

• Une ligne de code ne doit pas dépasser 79 caractères

• Le caractère \ permet de couper des lignes trop longues.

• À l’intérieur d’une parenthèse, on peut revenir à la ligne sans utiliser le caractère \. C’est
particulièrement utile pour préciser les arguments d’une fonction ou d’une méthode,
lors de sa création ou lors de son utilisation :

124
01- PYTHON
Optimisation du code (Bonnes pratiques de codage,…)

• Les parenthèses sont également très pratiques pour répartir sur plusieurs lignes une
chaîne de caractères qui sera affichée sur une seule ligne

• L’ opérateur + est utilisée pour concaténer les trois chaînes de caractères et que celles-ci
ne sont pas séparées par des virgules.

• À partir du moment où elles sont entre parenthèses, Python les concatène


automatiquement.

• On peut aussi utiliser les parenthèses pour évaluer un expression trop longue

125
01- PYTHON
Optimisation du code (Bonnes pratiques de codage,…)

• Dans un script, les lignes vides sont utiles pour séparer visuellement les différentes
parties du code.

• Il est recommandé de laisser deux lignes vides avant la définition d’une fonction

• . On peut aussi laisser une ligne vide dans le corps d’une fonction pour séparer les
sections logiques de la fonction, mais cela est à utiliser avec parcimonie.

126
01- PYTHON
Optimisation du code (Bonnes pratiques de codage,…)

• Les commentaires débutent toujours par le symbole # suivi d’un espace.

• Les commentaires donnent des explications claires sur l’utilité du code et doivent être
synchronisés avec le code, c’est-à-dire que si le code est modifié, les commentaires
doivent l’être aussi (le cas échéant).

• Les commentaires sont sur le même niveau d’indentation que le code qu’ils
commentent.

• Les commentaires sont constitués de phrases complètes, avec une majuscule au début
(sauf si le premier mot est une variable qui s’écrit sans majuscule) et un point à la fin

• PEP 8 recommande la cohérence entre la langue utilisée pour les commentaires et la


langue utilisée pour nommer les variables. Pour un programme scientifique, les
commentaires et les noms de variables sont en anglais.

127
CHAPITRE 2
MANIPULER LES DONNÉES

Ce que vous allez apprendre


dans ce chapitre:

• Manipuler les fonctions et les fonctions Lambda en Python

• Maitriser les structures de données Python et les


différencier

• Maitriser le manipulation des différents types de fichiers de


données

• Connaitre les principales bibliothèques standards de Python


CHAPITRE 2
MANIPULER LES DONNÉES

1 Manipulation des fonctions/lambda

2Listes, tuples, dictionnaires, ensembles (set)

3- Fichiers de données

4- Bibliothèques standards
02- MANIPULER LES DONNÉES
Manipulation des fonctions/lambda

Manipulation des fonctions

• Une fonction est un bloc de code qui ne s'exécute que lorsqu'elle est appelée.
• Vous pouvez transmettre des données, appelées paramètres, à une fonction.
• Une fonction peut renvoyer des données en conséquence.
• Pour appeler une fonction, utilisez le nom de la fonction suivi de parenthèses

• Les informations peuvent être transmises aux fonctions comme arguments.


• Les arguments sont spécifiés après le nom de la fonction, entre parenthèses.
• Vous pouvez ajouter autant d'arguments que vous le souhaitez, séparez-les simplement par une virgule.

• Il est possible de donner une valeur par défaut à un paramètre d’une fonction

• Une fonction peut retourner une valeur

130
02- MANIPULER LES DONNÉES
Manipulation des fonctions/lambda

Fonction Lambda

• En Python, le mot clé Lambda est utilisé pour déclarer une fonction anonyme (sans nom), raison pour laquelle ces fonctions sont appelées « fonction Lambda » .

• Une fonction Lambda est comme n’importe quelle fonction Python normale, sauf qu’elle n’a pas de nom lors de sa définition et qu’elle est contenue dans une ligne

• Tout comme la définition d’une fonction normale par l’utilisateur à l’aide du mot clé ‘def’, une fonction Lambda est définie à l’aide du mot clé ‘Lambda ’.

• Une fonction Lambda peut avoir ‘n’ nombre d’arguments mais une seule expression

Syntaxe

Exemple:

• Une fonction lambda qui ajoute 10 au nombre passé en argument et affiche le résultat:

• Une définition de fonction qui prend un argument, et cet argument sera multiplié par un nombre inconnu

131
02- MANIPULER LES DONNÉES
Manipulation des fonctions/lambda

Fonction Lambda

• En Python, le mot clé Lambda est utilisé pour déclarer une fonction anonyme (sans nom), raison pour laquelle ces fonctions sont appelées « fonction Lambda » .

• Une fonction Lambda est comme n’importe quelle fonction Python normale, sauf qu’elle n’a pas de nom lors de sa définition et qu’elle est contenue dans une ligne

• Tout comme la définition d’une fonction normale par l’utilisateur à l’aide du mot clé ‘def’, une fonction Lambda est définie à l’aide du mot clé ‘Lambda ’.

• Une fonction Lambda peut avoir ‘n’ nombre d’arguments mais une seule expression

Syntaxe

Exemple:

• Une fonction lambda qui ajoute 10 au nombre passé en argument et affiche le résultat:

• Une définition de fonction qui prend un argument, et cet argument sera multiplié par un nombre inconnu

132
CHAPITRE 2
Manipuler les données

1 Manipulation des fonctions/lambda

2 Listes, tuples, dictionnaires, ensembles (set)

3 Fichiers de données

4 Bibliothèques standards
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Tableaux dynamiques(Liste)

• Une liste est une collection qui est commandée et modifiable.


• En Python, les liste sont écrites entre crochets.

134
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Tableaux dynamiques(Liste)

• Modification de la valeur d’’un élément du tableau

• Parcours une liste:

• Recherche d’un élément dans une liste:

135
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Tableaux dynamiques(Liste)

• Fonction len(): Longueur d’une liste (fonction len())

• Fonction append(): Ajout d’un élément à la liste

• Fonction insert(): Ajout d’un élément à une position de la liste:

136
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Tableaux dynamiques(Liste)

• Fonction pop(): Suppression du dernier élément de la liste

• Fonction del(): Suppression d’ un élément de la liste

• Fonction extend(): Fusion de deux listes

137
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Tableaux dynamiques(Liste)

• Autres méthodes

138
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Tableaux statiques (tuple)

• Un tuple est une collection ordonnée et non changeable.


• En Python, les tuples ont écrits avec des crochets ronds.

• Convertissez le tuple en liste pour pouvoir le modifier:

139
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Tableaux statiques (tuple)

• Parcours d’un tuple:

• Vérification si un élément est dans un tuple:

• Surpression d’un tuple

140
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Tableaux statiques (tuple)

• Fusion de deux tuples

• Autres méthodes

141
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Tableaux statiques (set)

• Un set est une collection non ordonnée et non indexée.

• En Python, les sets sont écrits avec des accolades.

• Création d’un set:

• Parcours d’un set:

142
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Tableaux statiques (set)

• Vérification si un élément est dans un set:

• Une fois qu'un ensemble est créé, vous ne pouvez pas modifier ses éléments, mais vous pouvez ajouter de nouveaux éléments.

• Ajout d’un élément un set:

• Ajout de plusieurs éléments à un set:

143
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Tableaux statiques (set)

• Suppression d’un élément d’un set:

• suppression du dernier élément d’un set:

144
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Tableaux statiques (set)

• Suppression de tous les éléments d’un set

• Suppression d’un set:

• Fusion de deux sets

145
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Tableaux statiques (set)

• Autres méthodes:

146
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Dictionnaires

• Un dictionnaire est une collection non ordonnée, modifiable et indexée.

• En Python, les dictionnaires sont écrits avec des accolades, et ils ont des clés et des valeurs.

• Création d’un dictionnaire:

• Parcours d’un dictionnaire

147
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Dictionnaires

• Modification d’une valeur d’une clé particulière:

• Retour d’une valeur particulière d’une clé:

• Parcours les clés et les valeurs d’un dictionnaire à la fois

148
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Dictionnaires

• Vérification si une clé existe:

• Recherche de la longueur:

• Ajout à un dictionnaire:

149
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Dictionnaires

• Suppression d’un élément d’un dictionnaire

• Suppression de tous les éléments d’un dictionnaire

150
02- MANIPULER LES DONNÉES
Listes, tuples, dictionnaires, ensembles (set)

Dictionnaires

• Copie d’un dictionnaire

• Autres méthodes

151
CHAPITRE 2
Manipuler les données

1 Manipulation des fonctions/lambda

2 Listes, tuples, dictionnaires, ensembles (set)

3 Fichiers de données

4 Bibliothèques standards
02- MANIPULER LES DONNÉES
Fichiers de données

Utilisation des fichiers

• Python a plusieurs fonctions pour créer, lire, mettre à jour et supprimer des fichiers texte.

• La fonction clé pour travailler avec des fichiers en Python est open().
• Elle prend deux paramètres; nom de fichier et mode.
• Il existe quatre méthodes (modes) différentes pour ouvrir un fichier:
•"r" -Lecture -Par défaut. Ouvre un fichier en lecture, erreur si le fichier n'existe pas
•"a" -Ajouter -Ouvre un fichier à ajouter, crée le fichier s'il n'existe pas
•"w" -Écrire -Ouvre un fichier pour l'écriture, crée le fichier s'il n'existe pas
•"x" -Créer -Crée le fichier spécifié, renvoie une erreur si le fichier existe

• Ouvrir et lire un fichier


• Pour ouvrir le fichier, utilisez la fonction open() intégrée.
• La fonction open() renvoie un objet fichier, qui a une méthode read() pour lire le contenu du fichier

• Renvoyez les 5 premiers caractères du fichier:

153
02- MANIPULER LES DONNÉES
Fichiers de données

Utilisation des fichiers

• Vous pouvez renvoyer une ligne en utilisant la méthode readline ():

• Ecrire dans un fichier


• Pour écrire dans un fichier existant, vous devez ajouter un paramètre à la fonction open():

154
02- MANIPULER LES DONNÉES
Fichiers de données

Utilisation des fichiers

• Fermer un fichier
• Il est recommandé de toujours fermer le fichier lorsque vous en avez terminé.

• Supprimer d’un fichier


• Pour supprimer un fichier, vous devez importer le module OS et exécuter sa fonction [Link] ():

155
02- MANIPULER LES DONNÉES
Fichiers de données

Format CSV

• Il existe différents formats standards de stockage de données. Il est recommandé de favoriser ces formats car il existe déjà des modules Python permettant de
simplifier leur utilisation.

• Le fichier Comma-separated values (CSV) est un format permettant de stocker des tableaux dans un fichier texte. Chaque ligne est représentée par une ligne de texte
et chaque colonne est séparée par un séparateur (virgule, point-virgule …).

• Les champs texte peuvent également être délimités par des guillemets.

• Lorsqu'un champ contient lui-même des guillemets, ils sont doublés afin de ne pas être considérés comme début ou fin du champ.

• Si un champ contient un signe pouvant être utilisé comme séparateur de colonne (virgule, point-virgule …) ou comme séparateur de ligne, les guillemets sont donc
obligatoires afin que ce signe ne soit pas confondu avec un séparateur.

• Données sous la forme d'un tableau

• Données sous la forme d'un fichier CSV Nom;Prénom;Age


"Dubois";"Marie";29
"Duval";"Julien ""Paul""";47
Jacquet;Bernard;51
Martin;"Lucie;Clara";14

156
02- MANIPULER LES DONNÉES
Fichiers de données

Format CSV

• Le module csv de Python permet de simplifier l'utilisation des fichiers CSV

• Lecture d’un fichier CSV


• Pour lire un fichier CSV, il faut ouvrir un flux de lecture de fichier et ouvrir à partir de ce flux un lecteur CSV.

['Nom ', 'Prenom', 'Age']


['Dubois', 'Marie', '29']
['Duval', 'Julien "Paul" ', '47']
['Jacquet', 'Bernard', '51']
['Martin', 'Lucie;Clara', '14’]

• Il est également possible de lire les données et obtenir un dictionnaire par ligne contenant les données en utilisant DictReader au lieu de reader

{‘Nom ': 'Dubois', 'Prenom': 'Marie', 'Age': '29'}


{'Nom ': 'Duval', 'Prenom': 'Julien "Paul" ', 'Age': '47'}
{'Nom ': 'Jacquet', 'Prenom': 'Bernard', 'Age': '51'}
{‘Nom ': 'Martin', 'Prenom': 'Lucie;Clara', 'Age': '14'}

157
02- MANIPULER LES DONNÉES
Fichiers de données

Format CSV

• Écriture dans un fichier CSV


• À l'instar de la lecture, on ouvre un flux d'écriture et on ouvre un écrivain CSV à partir de ce flux :

Nom;Prénom;Téléphone
Dubois;Marie;0198546372
Duval;"Julien ""Paul""";0399741052
Jacquet;Bernard;0200749685
Martin;"Julie;Clara";0399731590

158
02- MANIPULER LES DONNÉES
Fichiers de données

Format CSV

• Il est également possible d'écrire le fichier en fournissant un dictionnaire par ligne à condition que chaque dictionnaire possède les mêmes clés.

• Il faut également fournir la liste des clés des dictionnaires avec l'argument fieldnames :

reference;quantite;produit;prixUnitaire
F452CP;41;cahier;1.6
D857BL;18;stylo bleu;0.95
D857NO;18;stylo noir;0.95
GF955K;4;équerre;5.1
RT42AX;13;compas;5.25

159
02- MANIPULER LES DONNÉES
Fichiers de données

Format JSON

• Le format JavaScript Object Notation (JSON) est issu de la notation des objets dans le langage JavaScript.

• Il s'agit aujourd'hui d'un format de données très répandu permettant de stocker des données sous une forme structurée.

• Il ne comporte que des associations clés → valeurs (à l'instar des dictionnaires), ainsi que des listes ordonnées de valeurs (comme les listes en Python).

• Une valeur peut être une autre association clés → valeurs, une liste de valeurs, un entier, un nombre réel, une chaîne de caractères, un booléen ou une valeur nulle.

• Sa syntaxe est similaire à celle des dictionnaires Python.

• Exemple de fichier JSON


{
"Dijon":{
"nomDepartement": "Côte d'Or",
"codePostal": 21000,
"population": {
"2006": 151504,
"2011": 151672,
"2014": 153668
}
},
"Troyes":{
"nomDepartement": "Aube",
"codePostal": 10000,
"population": {
"2006": 61344,
"2011": 60013,
"2014": 60750
}
}
}

160
02- MANIPULER LES DONNÉES
Fichiers de données

Format JSON

• Lire un fichier JSON


• La fonction loads (texteJSON) permet de décoder le texte JSON passé en argument et de le transformer en dictionnaire ou une liste.

{'Troyes': {'population': {'2006': 61344, '2011': 60013, '2014': 60750}, 'codePostal': 10000,
'nomDepartement': 'Aube'}, 'Dijon': {'population': {'2006': 151504, '2011': 151672, '2014':
153668}, 'codePostal': 21000, 'nomDepartement': "Côte d'Or"}}

• Écrire un fichier JSON


• la fonction dumps(variable, sort_keys=False) transforme un dictionnaire ou une liste en texte JSON en fournissant en argument la variable à transformer.
• La variable sort_keys permet de trier les clés dans l'ordre alphabétique.

161

Vous aimerez peut-être aussi