0% ont trouvé ce document utile (0 vote)
24 vues102 pages

Partie 3&4

Le document présente les concepts fondamentaux de l'algorithmique, en se concentrant sur le pseudo-code et le langage EXALGO pour la planification de programmes informatiques. Il aborde les types de données, les structures de contrôle, les fonctions et procédures, ainsi que l'utilisation de diagrammes de flux pour représenter des algorithmes. Des exemples et exercices pratiques sont également fournis pour illustrer ces concepts.

Transféré par

elianemt12347
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)
24 vues102 pages

Partie 3&4

Le document présente les concepts fondamentaux de l'algorithmique, en se concentrant sur le pseudo-code et le langage EXALGO pour la planification de programmes informatiques. Il aborde les types de données, les structures de contrôle, les fonctions et procédures, ainsi que l'utilisation de diagrammes de flux pour représenter des algorithmes. Des exemples et exercices pratiques sont également fournis pour illustrer ces concepts.

Transféré par

elianemt12347
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

INTRODUCTION A

L’ALGORITHMIQUE
: Pseudo Langage

Vie quotidienne Pseudo Langage Exemples Exercices

1
Pseudo
Code
1. Un pseudo-code est une esquisse d'un programme informatique, écrit dans un mélange d'un
programme langue et anglais. L'écriture de pseudo-code est l'une des meilleures façons de
planifier un programme informatique.

2. L’avantage du pseudo code est qu’il permet au programmeur de se concentrer sur comment le
programme fonctionne et non pas sur les règles, contraintes du langage de programmation.

3. Par exemple, voici deux pseudo code de 2 algorithmes: L’un fait l’addition de 2 nombre et le
second trouve le plus grand nombre dans une liste.

Debut
Debut
PlusGrand = LO
var A
Pour Chaque element de la liste(Longueur(L) >= 1), faire
var B
Si element >= PlusGrand, alors
Resultat = A + B
PlusGrand = element
Afficher Resultat
FinPour
Fin
retourner PlusGrand
Fin
2
Notion de Pseudo Code dans un langage de haut niveau

1. L’EXALGO est un langage destiné à écrire du code en s’affranchissant de la complexité


syntaxique du langage de programmation. Il permet, comme pseudo code, de se concentrer sur
la logique de l’algorithme.
2. composé de chaînes de caractères alphanumériques, de signes opératoires, de mot-clés
réservés, et de signes de ponctuation : = ; ( ) début, fin, //.
3. Les marqueurs de fin, début et fin peuvent être remplacés par { et } lorsqu'il y a encombrement.

3
Notion de TYPE dans l’EXALGO

1. Type
Types prédéfinis : entier, car, booléen, réel
Variables
var NomDeVariable: TypePrédéfini
Exemples : var age: entier, var nom: car, var pourcentage:réel
constante MIN :entier = 100
Définition de type :

type NomDeType= TypePrédéfini ;

4
Notion de TYPE dans l’EXALGO
Définition d'un tableau d'entiers :
Tableau : tableau_notes[5]:entier;
Tableau : tableau_notes[5] = [5, 8, 12, 1, 20]
// Accéder au premier élément
afficher(notes[0])
// Affiche 15
// Modifier un élément

tableau_notes[2] = 14
// Change la troisième note de 12 à 14

5
EXPRESSIONS et INSTRUCTIONS

1. Expressions
Les expressions sont constituées à l’aide de variables déjà déclarées. de parenthèses et
d'opérateurs du (des) type(s) des variables concernées.
2. Instructions simples
● Affectations : NomDeVariable = ExpressionDuTypeDeLavariable;
● sortie de calcul :exit, retourne( )

6
LES STRUCTURES DE CONTRÔLE

● Bloc d'instruction :
instruction1
instruction2
............
● Alternative:

si ExpressionBooléenne alors
BlocInstruction1
sinon
BlocInstruction2
finsi; 7
ALTERNATIVE MULTIPLES

selon que
cas cas1 : BlocInstruction1
cas cas2 : BlocInstruction2
.............
autrement : BlocInstruction exit permet
d'arrêter la
finselonque répétition

8
LES STRUCTURES DE CONTRÔLE : Les
boucles

● Pour VariableIndicatrice
allant de ValeurInitiale à ValeurFinale
● tant que ExpressionBooléenne faire par pas de ValeurPas faire
BlocInstruction BlocInstruction
fintantque; finpour

● Répéter
BlocInstruction
jusqu'à ExpressionBooléenne finrépéter 9
LES FONCTIONS ET PROCÉDURES

1. Une fonction retourne une valeur par l'instruction


simple(retourne(Expression)).
2. Une fonction s'utilise dans le calcul d'une expression ou comme instruction
simple.

fonction NomDeFonction (ListeParamètres):Typerésultat


//déclarations des variables locales autres que les paramètres
début
// partie instruction qui contient l'appel à retourne( )
fin
finFonction
10
LES FONCTIONS ET PROCÉDURES

1. Les paramètres sont passés


a. par référence ref, on écrit

ref ListeVariable:NomDeType
Par Référence : La fonction reçoit une référence vers la variable d'origine. Toute modification
apportée affecte directement la variable d'origine.

b. par valeur val, on écrit

val ListeVariable:NomDeType
Par Valeur : La fonction reçoit une copie de la valeur. Les modifications apportées à cette copie ne
changent pas la valeur de la variable d'origine.

2. Le type du résultat est vide si la fonction ne renvoie pas de résultat.


11
LES FONCTIONS ET PROCÉDURES

Passage de Paramètres par Valeur: Lorsque l’on passe un paramètre par valeur, une copie de la valeur
de ce paramètre est envoyée à la fonction. Cela signifie que la fonction travaille sur une copie distincte de
la variable d’origine. Toute modification apportée à cette copie n’affecte pas la variable originale en dehors
de la fonction.
Exemple : Pseudo-Code

Fonction IncrementerParValeur(x)
x = x + 1
Afficher "Valeur de x dans la fonction :", x
Fin Fonction
a = 10
Appeler IncrementerParValeur(a)
Afficher "Valeur de a en dehors de la fonction :", a

Explication : Dans ce pseudo-code, la fonction IncrementerParValeur reçoit une copie de la variable a (par valeur).
Elle modifie la copie locale x, mais cela n'affecte pas la variable a en dehors de la fonction. Après l'appel, a garde sa valeur
d'origine (10).
12
LES FONCTIONS ET PROCÉDURES
Passage de Paramètres par Référence: Lorsque l’on passe un paramètre par référence, c’est l’adresse
mémoire de la variable qui est passée à la fonction, et non une simple copie de sa valeur. Cela signifie
que la fonction peut directement modifier la variable d’origine, car elle travaille sur la même instance de la
variable.
Exemple : Pseudo-Code

Fonction AjouterElementParReference(liste)

[Link](10)

Afficher "Liste dans la fonction :", liste

Fin Fonction

ma_liste = [1, 2, 3]

Appeler AjouterElementParReference(ma_liste)

Afficher "Liste en dehors de la fonction :", ma_liste

Explication : Dans ce pseudo-code, la fonction AjouterElementParReference reçoit une référence vers la liste
ma_liste. En modifiant la liste directement dans la fonction (en ajoutant l'élément 10), la modification affecte également
13
ma_liste en dehors de la fonction. Après l'appel, ma_liste contient [1, 2, 3, 10].
TYPES STRUCTURES ET LES
POINTEURS
1. Un type structuré est constitué à partir de types de base ou d'autres
types déclarés.
type NomDeType: structure
champ1:NomDeType1
champ2:NomDeType2
...........................
finstructure
Après la déclaration :

var E:NomDeTypeEnregistrement
on accède au différents champs par le nom de la variable suivi d'un point

suivi du nom de champ (E.champ1)


14
TYPES STRUCTURES ET LES
POINTEURS

1. Si O est un objet de type T, on accède à l'objet par O^. Si on déclare :

var P:^NomDeType
alors on peut obtenir un objet accessible par allouer(P). Lorsqu'on n'utilise
plus l'objet, il faut libérer l'espace qu'il utilise par desallouer(P).

15
TYPES STRUCTURES ET LES
POINTEURS

16
TYPES STRUCTURES ET LES
POINTEURS

17
Diagramme de Flux (Flow chart)
1. Le Flow Chart est un diagramme qui utilise des symboles et des mots pour décrire
un algorithme. Chaque étape de la L'organigramme est suivi d'une flèche qui indique
l'étape suivante. Les symboles suivants sont utilisés dans les Flow Charts :

a. Cercle allongé (terminaison) : indique le début/la fin ou le point de


départ/d'arrêt.

b. Rectangle (processus) : indique une opération ou une étape d'action


c. Losange ou losange (décision) : indique une question ou une branche dans le
processus (conditionnel déclaration)
d. Flèche (ligne d'écoulement) : indique le sens d'écoulement

e. Parallélogramme (E/S de données) : indique les entrées et sorties de données


vers et depuis un processus
f. Affichage : affiche des informations à l'écran
g. Document : imprime un document ou un rapport

h. Connecteur : Symbole utilisé pour connecter différentes lignes de flux

i. Délais : utilisé pour indiquer un autre processus un retard ou une attente dans
le processus pour l'entrée de
18
Flow charts : avantages

1. Communication : les Flow charts sont un meilleur moyen de communiquer la


logique d'un système à tous.

2. Analyse efficace : à l'aide d'un Flow charts, le problème peut être analysé de
manière plus efficace.

3. Documentation appropriée : les Flow charts du programme constituent une bonne


documentation du programme, qui est nécessaire à diverses fins.

4. Codage efficace : les Flow charts servent de guide ou de modèle pendant l'analyse
des systèmes et phase de développement du programme.

5. Débogage approprié : Le Flow chart facilite le processus de débogage.

6. Maintenance efficace du programme : La maintenance du programme


d'exploitation devient facile avec l'aide de l'organigramme. Cela aide le
programmeur à mettre ses efforts plus efficacement sur cette partie.

19
Flow charts : Quand faut-il les utiliser ?

1. Quand il faut communiquer aux autres comment un processus est effectué.

2. Un Flow Chart est généralement utilisé lorsqu'un nouveau projet commence afin de planifier le projet.

3. Un Flow Chart aide à clarifier comment les choses fonctionnent actuellement et comment elles pourraient
être améliorées. Il aide également à trouver les éléments clés d'un processus, tout en traçant des lignes
claires entre l'endroit où un processus se termine et le suivant commence.
4. L'élaboration d'un Flow Chart stimule la communication entre les participants et établit une
compréhension commune du processus. Les Flow Charts révèlent également des étapes redondantes ou
égarées.
5. Les Flow Charts sont utilisés pour aider les membres de l'équipe, à identifier qui fournit inputs ou des
ressources et à qui; pour établir des zones importantes à monitorer ou la collecte de données, pour
identifier les zones une amélioration ou une efficacité accrue, et de générer des hypothèses sur les causes.

6. Les Flow Charts sont très utiles pour documenter un processus (simple ou complexe) car ils facilitent la
compréhension du processus.
7. Il est recommandé de créer des Flow Charts par le biais de discussions de groupe, car les individus
connaissent rarement l'intégralité du processus et la communication contribue à l'amélioration.

8. Les Flow Charts sont également très utiles pour communiquer aux autres comment un processus est
exécuté et permet de comprendre la logique d'un processus
20
Flow charts : Représentation

Langage structuré Pseudo code Flow Chart

Affecter 12 à A

Affecter 12 à A A 12
Affectation et séquences
Incrémenter B de 1 B B+1
Incrémenter B

Si A > B
Si A est supérieur à B
Alors …
Sélection Alors …
Sinon …
Sinon …
FinSi

21
Flow charts : Représentation

Langage structuré Pseudo code Flow Chart

Répéter …
Répéter jusqu’à ce que A
Répétitions
soit égal à B
Jusqu’à ce que A = B

Entrées Insérer A Entrée *prompt* A Entrée *promt* A

22
Flow charts : Représentation

Langage structuré Pseudo code Flow Chart

Afficher “Message” Afficher “Message” B


Afficher Afficher “Message” B
Afficher B

Langage structuré Pseudo code Flow Chart

Début
Commencer le
Démarrer Démarrer
programme
Fin Fin Fin
Arrêter le programme

23
Flow charts : Exemples

1. Écrire un algorithme permettant de trouver le


plus grand nombre entre A et B.

Début
Lire A, B
Si A est inférieur à B
Grand=B
Petit = A
Sinon
Grand=A
Petit = B
Ecrire Grand, Petit
Fin

24
Exercices

1. Écrire un algorithme qui ayant un nombre, permet de dire si celui-ci est plus grand ou plus petit
que 100 et donnez son diagramme de flux.

2. Écrire un algorithme permettant de trouver le plus grand nombre entre A, B et C et donnez son
diagramme de flux.

3. Écrivez un algorithme qui calcule la surface d’un triangle et donnez le diagramme de flux.

4. Ecrire un algorithme résolvant la question de la situation routière au croisement des avenues De la


révolution et du 30 juin aux heures de pointe.

5. Connaissant le premier terme a et la raison r d’une progression arithmétique de n termes, ecrire


un algorithme qui calcule le dernier terme d et la somme s des termes de la progression par les
formules suivantes: d = a +(n-1)r et s = n(2a + (n-1)r) / 2. Ecrire un algorithme qui résout le
problème et donnez le diagramme de flux équivalent.

25
TRAVAIL PRATIQUE 3

1. Soit 2 nombres A, B. Ecrire un algorithme qui demande à l’utilisateur d’entrer deux nombres
quelconques et trouve son PPCM ainsi que son PGCD. (5pts)

2. L’ UNH désire automatiser l’ouverture de la barrière véhicule à l’aide d’une télécommande, afin d’
éviter au portier de se mouiller en cas de forte pluie.
a. Lors de l’ouverture UNH voudrait activer une lumière clignotante verte
b. Lors de la fermeture de la barrière, une lumière rouge.
c. La télécommande comprend 2 boutons (l’un pour l’ouverture et l’autre pour la fermeture)
Ecrire un algorithme permettant de répondre au besoin de l’université et donnez-en le
diagramme de flux (flow chart). (5pts)

NB: Pour l'élaboration du diagramme de flux utiliser l’application Dia ou le logiciel en ligne lucidchart

● Travail individuel à rendre le ….. …. …. à 8h00


● Faire le pseudo code et le diagramme de flux

26
INTRODUCTION A
L’ALGORITHMIQUE :

Algorithmique

L’algorithmique ? Le langage Machine Instructions de


base python

27
Qu’est-ce qu’un algorithme ?

Un algorithme est une suite ordonnée


d’instructions qui indique la démarche à
suivre pour résoudre une série de
problèmes équivalents. Ainsi quand on
définit un algorithme, celui-ci ne doit
contenir que des instructions
compréhensibles par celui qui devra
l’exécuter. Dans ce cours, nous devrons
donc apprendre à définir des algorithmes
pour qu’ils soient compréhensibles et donc Un algorithme est une suite
ordonnée d’instructions…

exécutables par un ordinateur.

28
Classification des Langages de
programmation.
Les langages de programmation peuvent être
classifiés en deux catégories:

1. Les langages de bas niveau qui inclut le langage


machine et celles qui sont proches du langage machine
comme 1) les langages machine (1ere Génération) et 2)
[Link] de bas niveau
les langages assembleur (langage de 2eme [Link] de haut niveau

Génération)Les langages de haut niveau qui incluent


des langages qui sont proches du langage naturel.

2. Les langages de haut niveau qui sont indépendants de


la machine. Ces langages sont proches du langage
naturel et utilisent de variables et objets, des
expressions booléennes, des fonctions, des boucles, des
threads, et des verrous qui sont similaires a leur
signification(abstraction).

29
Langages de bas niveau.

1. Le langage machine est un langage de bas niveau


Exemple de langage assembleur.
(1ère génération) dont les programmes sont écrits
en instructions binaires composées des valeurs 1 et 1: MOV eax, 3
0 qui sont directement compréhensibles par MOV ebx, 4
l’ordinateur. ADD eax, ebx, ecx

2. Le langage assembleur est un langage de bas


niveau (2ème génération) écrit en utilisant des
écrits à l'aide de mnémoniques (ensembles de
lettres abrégés) ou de codes courts qui suggèrent
leur signification et sont donc plus faciles à retenir. [Link] de bas niveau
Cependant ce langage doit être converti en langage [Link] de haut niveau

machine afin que l'ordinateur puisse l'interpréter.

30
Langages de bas niveau.

Exemple de langage assembleur.

Dans le code assembleur ci-contre, Les


sections .data et .text définissent
respectivement les données et le code.
_start est le point d'entrée du programme.
Les instructions mov déplacent des
données entre les registres, et syscall
appelle le noyau du système pour effectuer
des opérations, comme écrire sur l'écran
ou terminer le programme.

31
Avantages/inconvénients des Langages de bas
niveau.
Avantages: Inconvénients:

● Les langages de bas niveau sont difficiles à


● Les langages de bas niveau (machine et
interpréter par un programmeur.
assembleur) exigent moins de ressources
mémoire et occupent moins d’espace de
● Ils exigent un manuel de référence pour
stockage.
interpréter la signification de leur code.
● Les langages de bas niveau sont utiles pour
● Il est très facile de faire des erreurs dans les
écrire des programmes système ou
séquences des chiffres binaires 1 et 0 car en
l’exactitude est requise.
remplaçant 1 par 0 ou l’inverse peut conduire à
des mauvaises commandes et instructions à être
● Le langage machine est un langage de bas
exécutés.
niveau qui est très rapide à l’exécution car
il est déjà dans un langage que l’ordinateur
● Il est difficile d’identifier les erreurs commises.
peut comprendre.
● La programmation de bas niveau prend du
● Les langages machine n’ont pas besoin de
temps, elle est lente et difficile (tedious) à
translation car ils sont déjà dans un
l'écriture.
langage compréhensible par la machine.

32
Langages de haut niveau.

● Les langages de haut niveau ont évolué au fil des ans et peuvent être regroupés en cinq
catégories: les langages de troisième génération (3GL), les langages de quatrième génération
(4GL), les langages de programmation orientés objet (OOP), les langages de cinquième
génération (5GL), les langages de script et Langues naturelles.

● Les langues naturelles sont des langues humaines comme l'anglais ou le français.

● Les langages de haut niveau sont orientés problèmes et sont faciles à écrire car les mots et la
grammaire des langages de haut niveau sont proches du langage naturel.

● Les langages de haut niveau sont indépendants de la machine

● Comme les syntaxes des langages de haut niveau sont standardisées, les langages peuvent être
utilisés sur différents systèmes informatiques.

● Les programmes écrits dans un langage de haut niveau doivent être traduits en langage
machine par un compilateur ou un interpréteur.

33
Langages de haut niveau.

Programmation orientée objet (POO)

● La programmation orientée objet (POO) est un modèle de langage de programmation organisé


autour d'objets et de données.

● En POO, le programmeur regroupe les données et les procédures du programme dans une seule
unité appelée objet. Les procédures de l'objet sont appelées Opérations (Méthodes) et les
éléments de données sont appelés attributs (Variables).

34
Avantages des Langages de Haut
Niveau
1. Les programmes de langage de haut niveau sont faciles à déboguer

2. Ils sont indépendants de la machine. Fournir des programmes pouvant être utilisés sur
plusieurs ordinateurs.

3. Ils sont conviviaux et faciles à apprendre car ils sont proches du langage naturel.

4. Ils sont flexibles et améliorent donc la créativité du programmeur, augmentant ainsi la


productivité

5. Permet au programmeur de se concentrer sur la compréhension

35
Désavantages des Langages de Haut
Niveau
1. Ils s'exécutent beaucoup plus lentement que les langages de programmation de bas
niveau

2. Ils doivent être traduits en code machine avant exécution

3. Nécessitent plus de mémoire que les langages de bas niveau

36
Exemples de langages de programmation de haut niveau
utilisés

1. FORTRAN (FORMula TRAnslator) développé à la fin des années 1950 pour concevoir des
applications scientifiques.

2. COBOL (Common Business Oriented Language) développé au début des années 1960
pour développer des applications métiers.

3. RPG (générateur de programme de rapport) a été développé au début des années 1960
pour aider à générer des rapports et des calculs complexes.

4. BASIC (code d'instruction symbolique polyvalent pour débutant) développé au milieu


des années 1960. Les versions de base incluaient MS-BASIC, QBASIC, SmallBASIC et
Visual Basic.

37
Exemples de langages de programmation de haut niveau
utilisés

1. Pascal a été développé à la fin des années 1960 dans le but d'enseigner des concepts de
programmation structures.

2. C développé au début des années 1970 pour écrire des logiciels système.

3. Ada a été développé à la fin des années 1970 à l'origine pour répondre aux besoins des
systèmes embarqués et temps réel.

4. C++ développé dans les années 1980 est un langage orienté objet principalement pour
développer des logiciels d'application Notez qu'en plus des principaux langages évoqués
ci-dessus, de nombreux autres langages de programmation ont été développés tels que
JavaScript et Python.

38
Syntaxe de
Programme
● La syntaxe de programme est l'orthographe et la grammaire d'un langage de
programmation.

● Chaque programme définit ses propres règles syntaxiques qui contrôlent quels mots
l'ordinateur comprend, quelles combinaisons de mots sont significatives et quelle
ponctuation est nécessaire.

39
Sémantique des langages
d’ordinateurs
● La sémantique représente la signification des caractéristiques de la
langue. Elle décrit les processus suivis par un ordinateur lors de
l'exécution d'un programme dans ce langage spécifique.

40
Code Source
● Le code source consiste en des instructions de programme écrites sous forme de
fichier texte par le programmeur. Ce code doit être traduit par un compilateur, un
interpréteur ou un assembleur en un code objet avant exécution.

● Le code source ne peut pas être compris par l'ordinateur tant qu'il n'a pas été
traduit en code machine.

Exécution du programme

● L'exécution du programme est le processus par lequel un système


informatique exécute les instructions d'un programme informatique.

41
Le code objet
● Le code objet est un code de programme en langage machine prêt à être
exécuté par l'ordinateur.

Traducteurs de langue (processeurs de langue)

● Les traducteurs de langage sont des programmes système qui convertissent le


langage d'assemblage et le langage de haut niveau en langage machine pour
que le programme s'exécute, car les ordinateurs fonctionnent uniquement en
code machine.

42
Programs must be translated into machine/Object codes
before execution

1 2 3 4

SOURCE CODE TRANSLATOR OBJECT CODE EXECUTION


Object code
Il existe trois types de traducteurs :

1. Assembleurs

2. L'assembleur est un langage qui traduit un programme en langage


assembleur en code machine.
3. Compilateurs

4. Interprètes

44
45
Comment fonctionne un compilateur

● Un compilateur est un programme informatique qui transforme


l'intégralité du code source écrit dans un langage de programmation
de haut niveau en code objet pour l'exécution.
1 3 5

Translate the entire Stores code in Memory


program

SOURCE COMPILER OBJECT LINK/ EXECUTABLE


CODE CODE LOADER CODE

2 4
46
Comment fonctionne un
interprète
● Un interpréteur est un programme informatique qui exécute directement un
langage de programmation de haut niveau, une ligne à la fois sans générer
un code objet.

Translate one instruction


at a time
INTERPRETER

2 3 4

SOURCE CODE MACHINE CODE

47
Environnement de développement
intégré

48
Environnement de développement
intégré
Au démarrage du logiciel IDE, le programmeur indique généralement le fichier qu'il
souhaite ouvrir pour l'édition en tant que code source. Au fur et à mesure qu'ils
apportent des modifications, ils peuvent soit faire un "enregistrer sous" ou
"enregistrer". Lorsqu'ils ont fini de saisir le code source, ils demandent généralement à
l'IDE de "compiler et exécuter" le programme. L'IDE effectue les étapes suivantes :

1. S'il y a des modifications non enregistrées dans le fichier de code source, l'éditeur
de test enregistre les modifications.

2. Le compilateur ouvre le fichier de code source et effectue sa première étape qui


consiste à exécuter les directives du compilateur du préprocesseur et les autres
étapes nécessaires pour préparer le fichier pour la deuxième étape. Le #include
insérera des fichiers d'en-tête dans le code à ce stade. S'il rencontre une erreur, il
arrête le processus et renvoie l'utilisateur au fichier de code source dans l'éditeur
de texte avec un message d'erreur. Si aucun problème n'est rencontré, il enregistre
le code source dans un fichier temporaire appelé unité de traduction.

49
Environnement de développement
intégré
3. Le compilateur ouvre le fichier d'unité de traduction et effectue sa deuxième étape
qui consiste à convertir le code du langage de programmation en instructions
machine pour le CPU, une zone de données et une liste d'éléments à résoudre par
l'éditeur de liens. Tout problème rencontré (généralement une syntaxe ou une
violation des règles du langage de programmation) arrête le processus et renvoie
l'utilisateur au fichier de code source dans l'éditeur de texte avec un message
d'erreur. Si aucun problème n'est rencontré, il enregistre les instructions machine,
la zone de données et la liste de résolution de l'éditeur de liens sous forme de fichier
objet.

4. L'éditeur de liens ouvre le fichier objet du programme et le relie aux fichiers objets
de la bibliothèque selon les besoins. À moins que tous les éléments de l'éditeur de
liens ne soient résolus, le processus s'arrête et renvoie l'utilisateur au fichier de
code source dans l'éditeur de texte avec un message d'erreur. Si aucun problème
n'est rencontré, il enregistre les objets liés en tant que fichier exécutable.

50
Environnement de développement
intégré
5. L'IDE ordonne au programme du système d'exploitation appelé chargeur de
charger le fichier exécutable dans la mémoire de l'ordinateur et de faire en sorte
que l'unité centrale de traitement (CPU) commence à traiter les instructions. Au fur
et à mesure que l'utilisateur interagit avec le programme en saisissant des données
de test, il peut découvrir que les sorties ne sont pas correctes. Ces types d'erreurs
sont appelées erreurs de logique et obligerait l'utilisateur à revenir au code source
pour modifier l'algorithme.

51
Jeu d’instruction

Chaque microprocesseur a son jeu d’instructions de base dont le nombre varie


typiquement de quelques dizaines à quelques centaines selon le type d’architecture du
processeur. On peut classer ces instructions de base en 5 grands groupes :

a. Les opérations arithmétiques (+, -, *, /. . .),

b. Les opérations logiques (not, and, or. . .), les instructions de transferts de
données (load, store,move. . .), les instructions de contrôle du flux
d’instructions (branchements impératifs et conditionnels, boucles, appels de
procédure. . .), et les instructions d’entrée-sortie (read, write. . .).

Le traitement des ces instructions par le microprocesseur passe ensuite par 5


étapes.

[Link]érations arithmétiques
[Link]érations logiques

52
Traitement d’instructions par le microprocesseur en 5
étapes

1 3 5

DECODE EXECUTE

Décodage de l’instruction Exécution de l’instruction

RESULT
FETCH DECODE LOAD EXECUTE WRITE
OPERAND BACK

LOAD OPERAND RESULT WRITE BACK


FETCH
Chargement depuis la mémoire Mise à jour du résultat dans un
Chargement des données
de la prochaine instruction à registre ou en mémoire
2 nécessaires à l’instruction 4
exécuter.

53
Le langage machine

★ Le langage machine est le langage compris par le microprocesseur.

★ Ce langage est difficile à maı̂ triser puisque chaque instruction est codée par
une séquence donnée de bits.

★ Afin de faciliter la tâche du programmeur, on a d’abord créé le langage


assembleur qui utilise des mnémoniques pour le codage des instructions
puis les langages de plus haut niveau d’expressivité (fortran, C,Java, Le coeur du
microprocesseur est
Python. . .). régulé par un quartz
qui oscille avec une
fréquence exprimée en
★ Le tableau suivant compare les codes équivalents pour décrire l’addition de 2 Hz. Le temps de cycle
entiers dans différents langages informatiques : le langage machine, le est l’inverse de la
fréquence. Ainsi pour
langage assembleur, le langage Pascal et le langage Python. une fréquence de 100
MHz, on a un temps de
cycle de 10 ns.
L’exécution d’une
instruction nécessite
plusieurs temps de
cycle, c’est ce que l’on
appelle le cpi (Cycles
per instruction).

54
Instructions de base

★ Dans ce cours, nous nous intéresserons aux instructions disponibles dans un langage de haut
niveau tel que Python. Les principales instructions (statements) concerneront l’affectation
(assignment), les tests (conditional statements) et les boucles (loops).
★ Le tableau suivant donne la syntaxe Python des instructions de base qui seront utilisées.

L’anglais est la
langue couramment
utilisée en
informatique. Il est
absolument
essentiel de
lire l’anglais
technique sans
problème. Vous
devez être
capable de traduire
le tableau suivant
extrait sans
traduction d’une
référence en anglais.
55
INTRODUCTION A
L’ALGORITHMIQUE :

Affectations

Variables Quelques
TD
exemples

56
Les variables
★ Pour effectuer la conversion Fahrenheit → Celcius, nous commençons par
donner un nom à la température Fahrenheit, par exemple tF , ainsi qu’à la
température Celcius, par exemple tC . Puis nous pouvons exprimer la relation
générale qui lie tC à tF :
○ tC = 5/9 (tF − 32)
★ Appliquer cette relation dans un cas particulier par exemple :

○ tF = 70 : tC = (70 − 32) ≈ 21.

★ En informatique, l’essentiel du travail effectué par un programme d’ordinateur


consiste à manipuler des données. Ces données peuvent être très diverses (par
exemple des températures) et pour accéder à ces données, il est pratique de les
nommer plutôt que de connaı̂ tre explicitement leur adresse en mémoire.

★ Une donnée apparaı̂ t ainsi sous un nom de variable (par exemple tC ou tF) : on dit
que la variable dénote une valeur.

★ Pour la machine, il s’agit d’une référence désignant une adresse mémoire ,


c’est-à-dire un emplacement précis dans la mémoire vive où est stockée une
valeur bien déterminée qui est la donnée proprement dite.
57
La variable : définition
★ Une variable est un objet informatique qui associe un nom à une valeur
qui peut éventuellement varier au cours du temps.

★ Une variable peut être vue comme une case en mémoire vive, que le
programme va repérer par une étiquette (une adresse ou un nom). Pour avoir
accès au contenu de la case (la valeur de la variable), il suffit de la désigner
par son étiquette : c’est-à-dire soit par son adresse en mémoire, soit par son
nom.

★ Les noms de variables sont des identificateurs arbitraires, de préférence


assez courts mais aussi explicites que possible, de manière à exprimer
En mathématiques,
clairement ce que la variable est censée référencer (la sémantique de la une « variable »
donnée référencée par la variable). Les noms des variables doivent en outre est généralement
obéir à quelques règles simples. une inconnue, qui
recouvre un nombre
non précisé de
valeurs. En
informatique, une
variable possède à
un moment donné
une valeur et une
seule.

58
La variable : Quelques règles

★ Un nom de variable est une séquence de lettres (a. . .z , A. . .Z) et de chiffres


(0. . .9), qui doit toujours commencer par une lettre.

★ 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é).

★ La « casse » est significative : les caractères majuscules et minuscules sont


distingués. Ainsi, python, Python, PYTHON sont des variables différentes.
Mots réservés
★ Par convention, on écrira l’essentiel des noms de variable en caractères Python :
minuscules (y compris la première lettre). On n’utilisera les majuscules qu’à and, assert
break, class
l’intérieur même du nom pour en augmenter éventuellement la lisibilité, continue, def
comme dans programmePython ou angleRotation . del, elif
else, except
★ Une variable dont la valeur associée ne varie pas au cours du programme (on exec, finally
parle alors de constante) pourra être écrite entièrement en majuscule, par for, from
global, if
exemple PI (π = 3.14). import, in
★ Le langage lui-même peut se réserver quelques noms comme c’est le cas is, lambda
not, or
pour Python. Ces mots réservés ne peuvent donc pas être utilisés comme pass, print
noms de variable. raise, return
try, while
with, yield
59
Les opérateurs arithmétiques et
expressions
★ Avec ces opérateurs, les variables et les constantes, il est possible d’écrire ce
que l’on appelle des expressions : une expression est une suite d’opérateurs
et de termes qui est compréhensible et que l’on peut calculer.

○ Addition +
○ Soustraction -
○ Multiplication *
○ Division /
○ Modulo %

★ Opérateurs d’entrée/sortie

Les opérations que nous venons d’aborder permettent juste de faire des
calculs, mais ne permettent pas encore de visualiser les résultats ou
d’afficher du texte, ou encore de faire des saisies au clavier. Pour cela, nous
utiliserons les commandes AFFICHER et SAISIR :

60
Les opérateurs d’entrée sortie

AFFICHER sert, comme son nom l’indique, à Exemple :


afficher du texte ou les valeurs des variables. VAR t : réel
// définition de la variable entière t
★ On utilise afficher, suivi entre parenthèses t ← 2.421
des différents éléments à faire apparaître à l’ AFFICHER ("t vaut : ", t, " !")
écran.
★ Ces éléments sont soit du texte brut écrit
entre doubles guillemets, soit une
expression.
★ Dans le cas de texte brut, ce dernier apparaît
tel quel à l’écran.
cette
★ Dans le cas d’une expression, c’est la valeur instruction
numérique du calcul de cette expression qui fera
est affichée. apparaître
à l’écran le
★ Les éléments successifs à afficher sont message
séparés par une virgule. suivant :
t vaut 2.421 !
61
Les opérateurs d’entrée sortie

SAISIR permet d’initialiser une variable à Exemple :


partir d’une saisie faite au clavier. VAR a : entier
★ On utilise saisir, suivi entre parenthèses du // définition de la variable entière a
nom de la variable que l’on veut saisir. SAISIR(a)
★ L’instruction saisir a pour seul effet // saisie de la variable
d’attendre que l’utilisateur entre une // l’utilisateur doit entrer une valeur au clavier
// et la valider par la touche ’entrée’
valeur au clavier et la valide en appuyant
sur la touche « entrée » ou « enter » ;
aucun message ne s’affiche pour indiquer à
l’utilisateur ce qu’il doit faire ; Contraireme
nt à
★ C’est donc au programmeur de penser à l’opérateur
afficher un message pour indiquer qu’une AFFICHER,
on ne peut
saisie doit être faite ! saisir que
des variables
avec SAISIR.

62
Attribuer une valeur

★ Une fois nommée, il est souvent nécessaire de modifier la


valeur de la donnée référencée par une variable. C’est le rôle de
l’instruction d’affectation.

★ L’affectation est l’opération qui consiste à attribuer une valeur à


une variable.

★ L’instruction d’affectation est notée = en Python : variable = valeur


L’affectation
. est l’opération
★ Le nom de la variable à modifier est placé dans le membre de gauche qui consiste à
attribuer une
du signe =, la valeur qu’on veut lui attribuer dans le membre de valeur à une
droite. variable.

★ Le membre de droite de l’affectation est d’abord évalué sans être


modifié puis la valeur obtenue est affectée à la variable dont le nom
est donné dans le membre de gauche de l’affectation.
★ Cette opération ne modifie que le membre de gauche de l’affectation.
63
★ Le membre de droite peut être une constante ou une expression
Types de base en Python

L’expression peut être


n’importe quelle
expression évaluable
telle qu’une opération
logique (x = True),
une opération
arithmétique tel (x = 3
+ 2*9), un appel de
fonction (y = sin(x)),
ou toute autre
combinaison
évaluable
(x = (x != y) and (z + t >= y)
or (sin(x) < 0))

64
Types de base en Python :
Incrémentation
★ L’expression du membre de droite peut faire intervenir la variable du membre de
gauche comme dans i = i + 1.

★ Dans cet exemple, on évalue d’abord le membre de droite (i +1) puis on attribue
la valeur obtenue au membre de gauche (i) ,

★ A la fin de cette affectation, la valeur de i a été augmentée de 1 : on dit que i a été


incrémenté de 1 et on parle d’incrémentation de la variable i Avec l’exemple de
l’incrémentation
(i = i + 1), on constate
★ Python propose un opérateur d’incrémentation (+=) et d’autres opérateurs que l’affectation est
d’affectation qui peuvent toujours se ramener à l’utilisation de l’opérateur =, une opération
typiquement
l’opérateur d’affectation de base. informatique qui se
distingue de l’égalité
mathématique.
En effet, en
mathématique une
expression du type i =
i+1 se réduit en 0 = 1 !

65
Séquences d’affectations

1. Permutation de 2 nombres :

Un apprenti informaticien à qui on demandait d’échanger (swap) les valeurs


de 2 variables x et y proposa la suite d’instructions suivante :
x=y
y=x
et eut la désagréable surprise de constater que les valeurs des variables n’
étaient pas permutées après cette séquence d’affectations. L’affectation n’est
pas une opération
commutative
2. Fixons les idées. supposons qu’initialement x = 12 et y = 22. L’affectation (symétrique) :
x=y a = b n’est pas b = a.
En effet,
conduit à évaluer y puis à attribuer la valeur de y (22) à x : x vaut avec l’instruction
maintenant 22. a = b on modifie la
valeur de a et pas
La deuxième affectation (y = x) commence par évaluer x puis à attribuer celle de b tandis
la valeur de x (22 !) à y. Après ces 2 affectations, x et y sont donc qu’avec l’instruction
b = a, on modifie
identiques et non permutées ! b mais pas a.

66
Séquences d’affectations :
solution
★ Pour effectuer la permutation, l’apprenti informaticien aurait pu utiliser une
variable temporaire (que nous nommerons tmp) et exécuter la séquence
d’instructions suivante :
tmp = x
x=y
y = tmp
➔ La première affectation (tmp = x) permet de stocker la valeur initiale de x (12),
➔ La deuxième (x = y) attribue à x la valeur de y (22)
➔ Et la troisième (y = tmp) attribue à y la valeur de tmp, c’est-à-dire la valeur
initiale de x (12).
➔ Ainsi, les valeurs finales de x et y (22 et 12) sont bien permutées par rapport En Python, les
aux valeurs initiales (12 et 22). n-uplets permettent
d’écrire plus
simplement la
permutation de
variables :
x, y = y, x

67
Séquences d’affectations :
Exemple 2
★ Le plus grand commun diviseur de 2 entiers a et b peut se calculer en appliquant la
relation de récurrence pgcd(a, b) = pgcd(b, a%b) si b est différent de 0 jusqu’à ce
que le reste (a%b) soit nul (pgcd(d, 0) =d si d différent de 0).

★ Ainsi, pour calculer le pgcd de a = 12 et de b = 18, on applique 3 fois de suite cette


relation :
○ pgcd(a, b) = pgcd(b, a%b) ⇒ pgcd(12, 18) = pgcd(18, 12) = pgcd(12, 6)
Les 2 exemples
= pgcd(6, 0) = 6. Ce qui précédents illustrent
★ peut se traduire en Python par la séquence d’affectations suivante : la possibilité de
réaliser des calculs
plus ou
moins compliqués à
l’aide d’une
séquence
d’affectations bien
choisies.
les tests et
les boucles qui nous
permettront
d’aborder des
algorithmes
réutilisables, et plus
robustes.

68
INTRODUCTION A
L’ALGORITHMIQUE :
Affectations,
opérations…TD

TD

69
Exercices (TD n°1)

1. Soit a, b, c, d , 4 variables. Effectuer une permutation circulaire droite entre les valeurs de 4
entiers a, b, c, d.

○ a = 12
○ b = 22
○ c = 32
○ d = 42

2. Quelles sont les valeurs des variables a, b, q et r après la séquence d’affectations suivante ?
a = 19
b=6
q=0 INCRÉMENT :
r=a
Quantité fixe
r=r-b dont on
q=q+1 augmente la
r=r-b valeur
d’une variable à
q=q+1 chaque phase de
r=r-b l’exécution du
q=q+1 programme.

70
INTRODUCTION A
L’ALGORITHMIQUE

Programmation
Orientée Objet (POO)
en Algorithmique

71
La Programmation orientée objet
(POO)

1. La programmation orientée objet (POO) est un


modèle de langage de programmation organisé
autour d'objets et de données.

2. En POO, le programmeur regroupe les données et Apprendre à


structurer un

les procédures du programme dans une seule unité programme en


utilisant des objets

appelée objet. Les procédures de l'objet sont et des classes

appelées Opérations (Méthodes) et les éléments de Maîtriser les


concepts
données sont appelés attributs (Variables). d'encapsulation,
d'héritage, de
polymorphisme et
d'abstraction

72
Pourquoi la POO dans l'Algorithmique ?

1. Rôle de la POO : Structure les données et les


algorithmes de manière modulaire

2. Avantages : Réutilisabilité, extensibilité,


maintenance facilitée
Apprendre à
structurer un

3. On retrouve leur utilisation dans les Jeux, programme en


utilisant des objets

gestion d'inventaire, applications bancaires. et des classes

Maîtriser les
concepts
4. Acquérir des compétences pratiques pour d'encapsulation,
d'héritage, de
résoudre des problèmes en algorithmique avec polymorphisme et
d'abstraction
la POO.

73
Concepts de Base - Objets et Classes

1. Qu’est-ce qu’une Classe ?

Une classe est comme une recette ou un modèle qui définit


ce qu’un objet doit avoir et comment il doit se comporter.
Elle définit des attributs (des caractéristiques) et des
méthodes (des actions) pour les objets qui seront créés à
partir de cette classe.

2. Qu’est-ce qu’un Objet ?

Un objet est une instance de la classe, c’est-à-dire une


représentation concrète basée sur le modèle de la classe.

3. En résumé :

Classe = modèle général (exemple : Voiture)

Objet = instance particulière avec des valeurs spécifiques


(exemple : une Toyota rouge qui peut atteindre 180 km/h)

74
Illustration en pseudo-code

75
INTRODUCTION A
L’ALGORITHMIQUE :

Python ?

76
Le langage Python
❖ Python est un des langages de programmation informatique qui est devenu
très populaire et très utilisé, notamment dans le domaine de la science des
données (Data Science) et de l’apprentissage automatique (Machine Learning).
❖ Python est en effet le langage informatique le plus populaire pour le traitement
Big Data, l’exécution de calculs mathématiques et l’apprentissage automatique
où il est utilisé pour la classification et la prédiction.
❖ Contrairement à HTML, CSS ou JavaScript, Python est un langage de
programmation informatique généraliste dont l’usage n’est pas limité au
développement web. Il peut être utilisé pour tout type de programmation et de
développement logiciel.
❖ En plus de son utilisation pour le développement back end d’applications web
En mathématiques,
ou mobile, Python est aussi utilisé pour le développement de logiciels et une « variable »
d’applications pour PC. est généralement
❖ Python permet également d’écrire des scripts système, afin de créer des une inconnue, qui
recouvre un nombre
instructions pour un système informatique. non précisé de
valeurs. En
informatique, une
variable possède à
un moment donné
une valeur et une
seule.

77
Le langage Python

Deux versions différentes de Python sont disponibles:

❖ L’ancienne version, Python 2, continue d’être massivement utilisée même si elle


ne reçoit plus de mise à jour officielle depuis 2020.

❖ La version actuelle, Python 3, apporte de nouvelles fonctionnalités importantes


et pratiques. On retrouve notamment de nouvelles caractéristiques de syntaxe, de
meilleurs contrôles de concurrence, et un interpréteur plus efficace.

❖ L’adoption de Python 3 a été ralentie par le manque de compatibilité avec les En mathématiques,
une « variable »
bibliothèques tierces. Un grand nombre d’entre elles ne sont prises en charge que est généralement
par Python 2. Il est donc difficile d’effectuer la transition. Ce problème s’est une inconnue, qui
résolu au cours des dernières années, et Python 3 est désormais le meilleur choix recouvre un nombre
non précisé de
pour les nouveaux projets. valeurs. En
informatique, une
variable possède à
un moment donné
une valeur et une
seule.

78
Le langage Python

❖ Les bibliothèques (« libraries ») forment un vaste écosystème de logiciels


développés par des tiers qui est a la base du succès du langage Python.
❖ Cet écosystème s’est enrichi et étendu au fil des décennies par l’addition des
bibliothèques standard offrant des modules adaptés aux tâches de
programmation les plus communes : networking, opération asynchrones,
threading, accès aux fichiers, etc.
❖ Certains modules permettent aussi de gérer des tâches de programmation de haut
niveau nécessaires aux applications modernes comme a) la lecture et de l’écriture
de formats de fichiers structurés comme JSON et XML, b) la manipulation de
fichiers compressés, c) le travailler avec des protocoles et des formats de données Les bibliothèques
web, etc. forment un vaste
❖ La distribution de Python par défaut offre aussi une bibliothèque d’interface écosystème de
logiciels
graphique cross-plateforme avec Tkinter, et une copie intégrée de la base de développés par
données SQLite 3. des tiers qui est a
la base du succès
du langage
Python.
.

79
Le langage Python

❖ Outre ces bibliothèques proposées nativement, des milliers de bibliothèques


tierces sont disponibles via le Python Package Index (PyPI). Ce sont elles qui
offrent à ce langage toute sa versatilité. Parmi celles-ci, on peut citer en guise
d’exemple la bibliothèque BeautifulSoup offrant un outil » tout-en-un « pour le
scraping HTML. De son côté, » Requests » permet de travailler facilement avec
des requêtes HTTP.
❖ Avec des frameworks tels que Flask et Django, il est possible de développer
rapidement des services Web. De nombreux services Cloud peuvent être gérés via Des milliers de
le modèle d’objet Python avec Apache Libcloud. bibliothèques
❖ Avec NumPy, Pandas et Matplotlbi, les opérations mathématiques et statistiques tierces sont
disponibles via le
peuvent être accélérées. Elles facilitent aussi la création de visualisations de Python Package
données. Index (PyPI). Ce
sont elles qui
offrent à ce langage
toute sa versatilité.
.

80
Exemple de code Python

81
Instructions de base Python

★ Dans ce cours, nous nous intéresserons aux instructions disponibles dans un langage de haut niveau
tel que Python. Les principales instructions (statements) concerneront l’affectation (assignment),
les tests (conditional statements) et les boucles (loops).
★ Le tableau suivant donne la syntaxe Python des instructions de base qui seront utilisées.

L’anglais est la
langue couramment
utilisée en
informatique. Il est
absolument
essentiel de
lire l’anglais
technique sans
problème. Vous
devez être
capable de traduire
le tableau suivant
extrait sans
traduction d’une
référence en anglais.
82
La variable : définition
★ Une variable est un objet informatique qui associe un nom à une valeur
qui peut éventuellement varier au fils du temps.

★ Une variable peut être vue comme une case en mémoire vive, que le
programme va repérer par une étiquette (une adresse ou un nom). Pour avoir
accès au contenu de la case (la valeur de la variable), il suffit de la désigner
par son étiquette : c’est-à-dire soit par son adresse en mémoire, soit par son
nom.

★ Les noms de variables sont des identificateurs arbitraires, de préférence


assez courts mais aussi explicites que possible, de manière à exprimer
En mathématiques,
clairement ce que la variable est censée référencer (la sémantique de la une « variable »
donnée référencée par la variable). Les noms des variables doivent en outre est généralement
obéir à quelques règles simples. une inconnue, qui
recouvre un nombre
non précisé de
valeurs. En
informatique, une
variable possède à
un moment donné
une valeur et une
seule.

83
Les variables
★ Pour effectuer la conversion Fahrenheit → Celcius, nous commençons par
donner un nom à la température Fahrenheit, par exemple tF , ainsi qu’à la
température Celcius, par exemple tC . Puis nous pouvons exprimer la relation
générale qui lie tC à tF :
○ tC = 5/9 (tF − 32)
★ Appliquer cette relation dans un cas particulier par exemple :

○ tF = 70 : tC = (70 − 32) ≈ 21.

★ En informatique, l’essentiel du travail effectué par un programme d’ordinateur


consiste à manipuler des données. Ces données peuvent être très diverses (par
exemple des températures) et pour accéder à ces données, il est pratique de les
nommer plutôt que de connaı̂ tre explicitement leur adresse en mémoire.

★ Une donnée apparaı̂ t ainsi sous un nom de variable (par exemple tC ou tF) : on dit
que la variable dénote une valeur.

★ Pour la machine, il s’agit d’une référence désignant une adresse mémoire ,


c’est-à-dire un emplacement précis dans la mémoire vive où est stockée une
valeur bien déterminée qui est la donnée proprement dite.
84
La variable : Quelques règles

★ Un nom de variable est une séquence de lettres (a. . .z , A. . .Z) et de chiffres


(0. . .9), qui doit toujours commencer par une lettre.

★ 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é).

★ La « casse » est significative : les caractères majuscules et minuscules sont


distingués. Ainsi, python, Python, PYTHON sont des variables différentes.
Mots réservés
★ Par convention, on écrira l’essentiel des noms de variable en caractères Python :
minuscules (y compris la première lettre). On n’utilisera les majuscules qu’à and, assert
break, class
l’intérieur même du nom pour en augmenter éventuellement la lisibilité, continue, def
comme dans programmePython ou angleRotation . del, elif
else, except
★ Une variable dont la valeur associée ne varie pas au cours du programme (on exec, finally
parle alors de constante) pourra être écrite entièrement en majuscule, par for, from
global, if
exemple PI (π = 3.14). import, in
★ Le langage lui-même peut se réserver quelques noms comme c’est le cas is, lambda
not, or
pour Python. Ces mots réservés ne peuvent donc pas être utilisés comme pass, print
noms de variable. raise, return
try, while
with, yield
85
Le nom d’une variable
Une variable peut avoir n’importe quel nom tant qu’elle obéit aux 3 règles suivantes :
1. Ne peut être qu’un seul mot
2. Ne peut contenir que des nombre, des lettre et le caractère spécial _
3. Ne peut pas commencer par un nom
4. Attention : spam, SPAM, Spam, et sPaM sont 4 variables différentes (sensibilité à la casse)

Etudiant 48

NomEtudiant Nom Etudiant

Compteur_Etudiant Nom-Etudiant

_NombreEtudiant Etudiant_$omme

Etudiant46 46Etudiant
86
Les types de données strings ou chaîne de
caractère
1. Les programmes python peuvent avoir des valeur texte appelée strings ou strs.
2. Les strings sont toujours entourés du symbole ‘’ ce qui permet à python de savoir où commence et
fini la chaîne de caractère.
3. Il est possible d’avoir des string sans caractère à l’intérieur , ex: Nom =’ ‘
4. Il est à noter que l’omission d’un ‘ entraîne une erreur syntaxique qui arrête le programme
automatiquement.

Chaîne de caractère et notion de concaténation

❖ Dans le cas des chaînes de caractère, le rôle de l'opérateur +, est de joindre deux chaînes de
caractères. Cette opération s’appelle la concaténation. Ainsi, nous aurons :
'Alice' + 'Bob' = 'AliceBob'
❖ La concaténation de ‘Alice’ + 98 donnera automatiquement une erreur syntaxique.

87
Quelques conventions
1. Par convention, les variables python commencent par une lettre minuscule
2. La notion de camelcase est utilisée par certains codeurs pour le nom de variable en lieu et place
des underscores:
nomEtudiant vs nom_etudiant

Quelques notions importantes


1. Le commentaire, dans python, permet de documenter le code. Pour commenter un code python,
placer ‘#’ avant le texte afin que le compilateur le considère comme une ligne à ne pas considérer
lors de la compilation.
2. Le python possède plusieurs fonctions usuelles. Nous avons par exemple:
a. len('bonjour') [renverra la valeur 7]
b. print("j'ai 12 ans et 6 mois")
c. a=input('Entrer la valeur A\n')
d. str(), int(), float()

88
Attribuer une valeur

★ Une fois nommée, il est souvent nécessaire de modifier la valeur de la


donnée référencée par une variable. C’est le rôle de l’instruction
d’affectation.

★ L’affectation est l’opération qui consiste à attribuer une valeur à une variable.

★ L’instruction d’affectation est notée = en Python : variable = valeur .


★ Le nom de la variable à modifier est placé dans le membre de gauche
du signe =, la valeur qu’on veut lui attribuer dans le membre de droite.
L’affectation
★ Le membre de droite de l’affectation est d’abord évalué sans être modifié puis la est l’opération
qui consiste à
valeur obtenue est affectée à la variable dont le nom est donné dans le membre attribuer une
de gauche de l’affectation. valeur à une
★ Cette opération ne modifie que le membre de gauche de l’affectation. variable.

★ Le membre de droite peut être une constante ou une expression évaluable.

89
Notion d’ affectation d’une valeur dans une
variable
1. La variable peut être considérée comme une boîte dans laquelle il est possible de stocker une
valeur.
2. Affecter la valeur 42 dans la variable spam équivaut à insérer dans la boite spam, la valeur 42
3. En python il sera écrit : spam = 42 . Qui se traduit par : La variable spam contient à présent la valeur
42.
4. Une variable est donc initialisée lorsqu’elle reçoit sa première valeur dans le code.
5. Nous pouvons avoir la situation suivante:

spam = ‘Hello’
spam = ‘Goodbye’

90
Séquences d’affectations

1. Permutation de 2 nombres :

Un apprenti informaticien à qui on demandait d’échanger (swap) les valeurs de 2


variables x et y proposa la suite d’instructions suivante :
x=y
y=x
et eut la désagréable surprise de constater que les valeurs des variables n’étaient pas
permutées après cette séquence d’affectations.
L’affectation n’est
pas une opération
1. Fixons les idées. supposons qu’initialement x = 12 et y = 22. L’affectation x = y commutative
conduit à évaluer y puis à attribuer la valeur de y (22) à x : x vaut maintenant 22. (symétrique) :
La deuxième affectation (y = x) commence par évaluer x puis à attribuer la valeur de a = b n’est pas b = a.
En effet,
x (22 !) à y. Après ces 2 affectations, x et y sont donc identiques et non permutées ! avec l’instruction
a = b on modifie la
valeur de a et pas
celle de b tandis
qu’avec l’instruction
b = a, on modifie
b mais pas a.

91
Séquences d’affectations :
solution
★ Pour effectuer la permutation, l’apprenti informaticien aurait pu utiliser une
variable temporaire (que nous nommerons tmp) et exécuter la séquence
d’instructions suivante :
tmp = x
x=y
y = tmp
➔ La première affectation (tmp = x) permet de stocker la valeur initiale de x (12),
➔ La deuxième (x = y) attribue à x la valeur de y (22)
➔ Et la troisième (y = tmp) attribue à y la valeur de tmp, c’est-à-dire la valeur
initiale de x (12).
➔ Ainsi, les valeurs finales de x et y (22 et 12) sont bien permutées par rapport En Python,
aux valeurs initiales (12 et 22). les n-uplets
Python offre une alternative intéressante à cette question permuter les valeurs de x permettent
d’écrire plus
et y revient à écrire x,y=y,x simplement
la
permutation
de variables
:
x, y = y, x

92
Types de base en Python

L’expression peut être


n’importe quelle
expression évaluable
telle qu’une opération
logique (x = True),
une opération
arithmétique tel (x = 3
+ 2*9), un appel de
fonction (y = sin(x)),
ou toute autre
combinaison
évaluable
(x = (x != y) and (z + t >= y)
or (sin(x) < 0))

93
Séquences d’affectations :
Exemple 2
★ Le plus grand commun diviseur de 2 entiers a et b peut se calculer en appliquant la
relation de récurrence pgcd(a, b) = pgcd(b, a%b) si b est différent de 0 jusqu’à ce
que le reste (a%b) soit nul (pgcd(d, 0) =d si d différent de 0).

★ Ainsi, pour calculer le pgcd de a = 12 et de b = 18, on applique 3 fois de suite cette


relation :
○ pgcd(a, b) = pgcd(b, a%b) ⇒ pgcd(12, 18) = pgcd(18, 12) = pgcd(12, 6)
Les 2 exemples
= pgcd(6, 0) = 6. Ce qui précédents illustrent
★ peut se traduire en Python par la séquence d’affectations suivante : la possibilité de
réaliser des calculs
plus ou
moins compliqués à
l’aide d’une
séquence
d’affectations bien
choisies.
les tests et
les boucles qui nous
permettront
d’aborder des
algorithmes
réutilisables, et plus
robustes.

94
Les opérateurs arithmétiques et
expressions
★ Avec ces opérateurs, les variables et les constantes, il est possible d’écrire ce
que l’on appelle des expressions : une expression est une suite d’opérateurs
et de termes qui est compréhensible et que l’on peut calculer.

○ Addition +
○ Soustraction -
○ Multiplication *
○ Division /
○ Modulo %

95
Les opérateurs d’entrée sortie

★ Opérateurs d’entrée/sortie

Les opérations que nous venons d’aborder permettent juste de faire des
calculs, mais ne permettent pas encore de visualiser les résultats ou
d’afficher du texte, ou encore de faire des saisies au clavier. Pour cela, nous
utiliserons les commandes print() et input(). Voici ci-dessous deux
exemples d’entrées/sorties dont le premier (a) sert à afficher le message j'ai
12 ans et 6 mois et le second (b) sert à saisir une valeur à partir du clavier et
l’affecter à la variable a.

a) print("j'ai 12 ans et 6 mois")


b) a=input('Entrer la valeur A\n')

96
Les opérateurs d’entrée sortie

★ AFFICHER sert, comme son nom l’indique, à afficher du texte ou les valeurs
des variables.
○ On utilise afficher, suivi entre parenthèses des différents éléments à
faire apparaître à l’écran.
○ Ces éléments sont soit du texte brut écrit entre doubles guillemets,
soit une expression.
○ Dans le cas de texte brut, ce dernier apparaît tel quel à l’écran.
○ Dans le cas d’une expression, c’est la valeur numérique du calcul de
cette expression qui est affichée. cette instruction
○ Les éléments successifs à afficher sont séparés par une virgule. fera apparaître
à l’écran le
message suivant :
t vaut 2.421 !
Exemple : Exemple python :
VAR t : réel Float t
// définition de la variable entière t // définition de la variable entière t
t ← 2.421 t = 2.421
AFFICHER ("t vaut : ", t, " !") print("t vaut : ", t, " !")

97
Les opérateurs d’entrée sortie

★ SAISIR permet d’initialiser une variable à partir d’une saisie faite au clavier.
○ On utilise saisir, suivi entre parenthèses du nom de la variable que
l’on veut saisir.
○ L’instruction saisir a pour seul effet d’attendre que l’utilisateur
entre une valeur au clavier et la valide en appuyant sur la touche «
entrée » ou « enter » ; aucun message ne s’affiche pour indiquer à
l’utilisateur ce qu’il doit faire ;
○ C’est donc au programmeur de penser à afficher un message pour
indiquer qu’une saisie doit être faite !

Exemple Pseudo code: Exemple python :


VAR a : entier
// définition de la variable entière a // définition de la variable entière a
SAISIR(a) a = input (“saisir a”)
// saisie de la variable // saisie de la variable
// l’utilisateur doit entrer une valeur au // l’utilisateur doit entrer une valeur au
clavier clavier
// et la valider par la touche ’entrée’ // et la valider par la touche ’entrée’
98
Les opérations en
Python
Opérateur Opération Example Résultat

** Exposant 2**3 8

% Modulo 10 % 8 2

/ Division entière 10/8 1

// Division 10//8 1.25

* Multiplication 2*3 6

- Soustraction 6-2 4

+ Addition 6+2 8

1. La notion de précédence en python est la même que celle en math. Nous avons **, *, /,//, % et le
reste viennent en précédence inférieure.
99
Types de base en Python :
Incrémentation
★ L’expression du membre de droite peut faire intervenir la variable du membre de
gauche comme dans i = i + 1.

★ Dans cet exemple, on évalue d’abord le membre de droite (i +1) puis on attribue
la valeur obtenue au membre de gauche (i) ,

★ A la fin de cette affectation, la valeur de i a été augmentée de 1 : on dit que i a été


incrémenté de 1 et on parle d’incrémentation de la variable i Avec l’exemple de
l’incrémentation
(i = i + 1), on constate
★ Python propose un opérateur d’incrémentation (+=) et d’autres opérateurs que l’affectation est
d’affectation qui peuvent toujours se ramener à l’utilisation de l’opérateur =, une opération
typiquement
l’opérateur d’affectation de base. informatique qui se
distingue de l’égalité
mathématique.
En effet, en
mathématique une
expression du type i =
i+1 se réduit en 0 = 1 !

100
Les types de données en python

1. En python, rappelons nous que les expressions sont des valeurs combinées à des opérateurs.
ex: 1+4 est une expression
1. Un type de donnée est une catégorie de valeur. Chaque valeur correspond à un seul type de
données.

Type de données Exemple

Entier -2, -1, 0, 1, 2, 3, 4, 5

Flottant -1.25, -1.0, ‐-0.5, 0.0, 0.5, 1.0, 1.25

Strings 'a', 'aa', 'aaa', 'Hello!', '11 cats'

101
INTRODUCTION A
L’ALGORITHMIQUE :

Les boucles en
Python ?
Professeur Antoine BAGULA
Assisté par Landry MBALE

102

Vous aimerez peut-être aussi