Vous êtes sur la page 1sur 22

Chapitre 1

Notions algorithmiques

1.1 Introduction
Dans ce premier chapitre, nous allons introduire les notions de base de l’algorithmique ;
nous allons voir comment à partir d’un problème concret nous arriverons à proposer une
solution écrite sous forme d’un algorithme.

1.2 Notions de base


Le terme informatique est le mot qui caractérise le traitement automatique et rationnel
de l’information, il est construit sur la contraction de l’expression "information automatique".

Définition 1.1

Informatique : c’est la science du traitement automatique de l’information.

L’informatique se repose sur deux aspects fondamentaux et complémentaires : le matériel


(hardware) qui correspond à la machine ou l’ordinateur, et les logiciels/programmes (soft-
wares) qui décrivent le traitement à réaliser sur la machine. L’informatique offre les méthodes
et les outils nécessaires pour la résolution de plusieurs problèmes. Elle permet en premier lieu
d’étudier le problème, puis de trouver des solutions et à la fin de présenter les résultats aux
utilisateurs. Elle prend en considération l’interaction entre le système informatique et l’être
humain (l’utilisateur) à travers des interfaces entre les deux. Le résultat de ce processus est
connu sous le nom d’un programme informatique.

1
2 1.2. NOTIONS DE BASE

Définition 1.2

Programme : est un ensemble spécifique d’opérations structurées et ordonnées décrivant


un traitement d’informations, qu’un ordinateur doit exécuter.

Pour écrire un programme on utilise un langage de programmation, et la technique d’écri-


ture des programmes s’appelle la programmation, elle s’agit de la création des programmes
et logiciels informatiques, qui seront par la suite exécutés sur l’ordinateur.

Définition 1.3

Programmation : c’est l’activité de rédaction du code source d’un programme.

Définition 1.4

Langage de programmation : c’est un langage informatique permettant à un humain


(programmeur) d’écrire un code source qui sera analysé par un ordinateur.

La programmation est considérée comme l’aboutissement d’une série des étapes Le pro-
cessus montré par la figure 1.1, représente la chaîne de la production d’un programme. Dans
ce processus, l’algorithmique et l’algorithme forment sa phase la plus importante. Parce que,
un algorithme exprime la structure logique d’un programme informatique, qui sera traduite
vers le langage de programmation choisi.
De l’autre coté, le processus montre les différents modes d’exécution d’un programme
source qui sont :
— Compilation : La compilation consiste à traduire la totalité du code source en une fois.
Le compilateur lit le programme entier et produit une nouvelle suite de codes appelé
code objet, qui peut désormais être exécuté par l’ordinateur. Les langages C, C++,
Pascal sont des exemples de langages compilés.
— Interprétation : L’interprétation consiste à traduire le programme ligne par ligne en
quelques instructions du langage machine, qui sont ensuite directement exécutées. Les
langages Lisp et Prolog sont des exemples de langages interprétés.
— Semi-compilation : La semi-compilation est la combinaison des deux techniques afin de
retirer le meilleur de chacune. C’est le cas des langages Python et Java par exemple.

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


CHAPITRE 1. NOTIONS ALGORITHMIQUES 3

Figure 1.1 – Le processus de programmation : différents chemins d’exécution.

Définition 1.5

Algorithme : c’est une suite ordonnée et finie d’instructions qui montre la démarche à
suivre pour résoudre un problème.

D’après cette définition, on comprend qu’un algorithme ne résout pas le problème, mais
plutôt il donne une série des étapes, si elles sont bien suivies, elles se termineront par une
solution pour le problème.

Définition 1.6

Algorithmique : c’est l’ensemble des méthodes permettant de définir et/ou d’étudier des
algorithmes.

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


4 1.3. MON PREMIER ALGORITHME

Exemple 1.1. Changer un pneu crevé d’une voiture, les 9 étapes suivantes expliquent com-
ment changer une roue crevée :
1. Serrez le frein à main et passez la première vitesse ;
2. Placez le triangle de panne à la distance réglementaire ;
3. Desserrez légèrement les écrous du pneu ;
4. Installez le cric ;
5. Dévissez complètement les écrous de la roue ;
6. Placez la nouvelle roue ;
7. Mettez tous les écrous sans trop les serrer ;
8. Redescendez la voiture et retirez le cric ;
9. Serrez bien tous les écrous.

Bien évidemment, les étapes précédentes sont triées logiquement de 1 à 9, c’est-à-dire,


qu’on ne peut pas par exemple installer le cric après un dévisse-ment complet des écrous ! en
plus, les actions sont claires, compréhensibles et aussi bien définies.
À ce point, d’autres questions s’imposent automatiquement : comment, pour un problème
donné, trouver les informations nécessaires ? Comment, à partir de ces informations aboutir
à des actions ? Comment organiser et enchaîner les actions ? Comment trouver les méthodes
qui vont nous permettre d’arriver à un résultat ?
Les réponses à ces questions sera le but de la section suivante.

1.3 Mon Premier Algorithme


Remarque 1.1

Dans ce cours, nous nous intéresserons aux instructions disponibles dans le langage de
programmation Python et nous choisirons d’exprimer les solutions dans ce langage
de programmation sans passer par un langage algorithmique intermédiaire. En plus,
malgré les différences, nous nous utiliserons les termes : (algorithme/programme) et
(algorithmique/ programmation) d’une manière interchangeable.

Comme nous l’avons dit avant, l’algorithme s’agit d’une suite des étapes à suivre pour
résoudre un problème. La résolution du problème commence par une étude qui permet d’ex-
traire de l’énoncé du problème des éléments de modélisation c’est ce qu’on appelle l’analyse

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


CHAPITRE 1. NOTIONS ALGORITHMIQUES 5

du problème. L’analyse (voir Figure 1.2), permet de comprendre le problème pour déter-
miner les données nécessaires à utiliser pour résoudre le problème, les résultats souhaités. En
suite d’expliquer la méthode de résolution, c’est-à-dire, les étapes à suivre qui, en partant des
données nous conduisant aux résultats tout en respectant un ordre précis. L’étape d’analyse

Figure 1.2 – Le processus d’analyse.

permet de répondre aux trois questions suivantes, pour mieux comprendre le problème :
1. Quelles sont les données nécessaires (les entrées) ;
2. Quelles sont les étapes à suivre pour arriver aux résultats et comment utiliser les
données( le traitement) ;
3. Quels sont les résultats attendus (les sorties).

Exemple 1.2. calculer la moyenne de deux nombres.

Si on répond aux trois questions on aura les réponses suivantes :


1. Les données nécessaires sont les deux nombres : X et Y ;
2. Le traitement est (X + Y )/2 ;
3. Le résultat est la moyenne : M = (X + Y )/2.

L’étape d’écriture d’algorithme (programme) permet de transformer la solution décrite


par l’étape d’analyse en une forme plus structurée.
Du ce fait, et d’après l’exemple précédent, l’algorithme doit être quelque chose comme :
— Les entrées : la lecture ou la saisie des entrées (données) ; donner des valeurs aux X et
Y;
— Le traitement : les opérations a effectuer sur les données ; calculer la moyenne M à
partir des valeurs de X et Y ;
— Les sorties : l’affichage et l’écriture des résultats ; afficher la valeur de M.

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


6 1.3. MON PREMIER ALGORITHME

Figure 1.3 – La forme générale d’un algorithme/programme.

Toutes les données manipulées par un algorithme sont des objets, et les opérations et actions
qui agissent sur les objets s’appellent des Instructions ou (Statements).
En algorithmique, il existe plusieurs types d’instructions et d’objets, ce qu’on va voir dans
ce qui suit.

1.3.1 Les Objets

Définition 1.7

En informatique, un objet est un espace mémoire, qui contient des informations et des
mécanismes concernant un sujet, manipulés dans un programme. Il est désigné par un
nom ou une appellation dite : identificateur, et un type (la classe a laquelle il appartient).

a.blaIdentificateur

Définition 1.8

Un identificateur sert à donner un nom à un objet. Il permet à différencier un objet d’un


autre.

Syntaxe 1. bla
— On appelle lettre un caractère de 0 a0 ..0 z 0 ou0 A0 ..0 Z 0 ou0 _’ ;
— On appelle digit un caractère de ’0’..’9’ ;
— Un identificateur algorithmique (Python) est une suite de lettres ou de digits accolés,
de longueur quelconque, commençant par une lettre ;

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


CHAPITRE 1. NOTIONS ALGORITHMIQUES 7

— Un identificateur ne doit pas contenir un caractère spécial (’ ’, >,<, !, ?, +,-,. . . ) ;


— Un identificateur doit être différent d’un mot-clé ou réservé (utilisé par le système).
Voir Figure 1.4 pour la liste des mots-clés réservés en Python 3.7 ;
— Un identificateur doit être unique dans un algorithme.
— De préférence qu’un identificateur soit significatif ;
— Les caractères majuscules et minuscules sont différents.

Figure 1.4 – La liste des mots-clés du langage Python3.7.

Ex. 1. bla
x, Y1, jour, mois, note, adresse, nom_etudiant, NbCouleurs : sont des identificateurs valides.
1x, nom_étudiant, nb couleurs, @ : sont des identificateurs non-valides.
note, Note : sont des identificateurs différents.
true, false sont deux identificateurs valides, ils ne représentent pas la même chose que les
deux mots réserves True et False ( 1.4).

b.blaConstantes

Définition 1.9

Une constante est un objet qui associe un nom à une valeur, cette valeur ne doit pas être
modifiée, et ne peut pas être une expression.

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


8 1.3. MON PREMIER ALGORITHME

Remarque 1.2

En Python, les constantes sont généralement déclarées et affectées dans un module (un
nouveau fichier) qui est importé dans le fichier du programme principal. À l’intérieur
du module, les constantes sont écrites en MAJUSCULES et des traits de soulignement
séparant les mots.

Syntaxe 2. blabla
IDENTIFICATEUR = valeur_constante

Ex. 2. bla
PI = 3.14 ; GRAVITATION = 10

Remarque 1.3

Une constante de valeur non numérique, c’est-à-dire de caractère ou chaîne de caractères


est mise entre apostrophes ’ ’ ou bien des guillemets " ". ex : RHESUS = ’O_positif’ ;
GENRE = "homme", SIGNE = ’+’.

c.blaVariables

Définition 1.10

Une variable est un objet qui associe un nom à une valeur qui peut éventuellement être
modifiée ou changée ultérieurement dans le programme.

En Python, Le nom de la variable permet d’accéder au contenu de la zone mémoire tandis


que sa valeur spécifie la nature de ce qui peut être stocké dans cette zone mémoire (entier,
réel, caractère, etc.).

Syntaxe 3. blabla

identificateur = valeur

Ex. 3. blabla
nom = "mohamed"
note = 15
note = 17.5 (ici nous avons modifié la valeur associée à la variable note).

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


CHAPITRE 1. NOTIONS ALGORITHMIQUES 9

d.blaTypes de base prédéfinis

Définition 1.11

Un type décrit un ensemble de valeurs qui peut prendre un objet de ce type ainsi que
l’ensemble d’opérateurs sur ces valeurs.

En Python et dans ce chapitre, nous nous intéressons aux quatre types de base :
— int : Entier, représente une quantité indivisible (leurs valeurs possibles ne comportent
pas de virgule.) ;
— float : Réel, représente les valeurs numériques fractionnelles et avec des virgules flot-
tantes ;
— str : String, représente tous les caractères imprimables, il peut être une lettre alphabé-
tique (A. . . Z, a. . . z) ou un caractère spécial ( ?, +, -, *, /, !,. . . ) ou un chiffre (1. . . 9).
Une valeur de ce type peut être une séquence d’un ou plusieurs caractères ;
— bool : Booléen, autrement dit le type logique, il représente les deux valeurs vrai (True)
et faux (False).
Il existe autres types de données en Python, ce sont des types de données composés à
savoir : list, dict, tuple, que nous allons les traiter dans les prochaines chapitres.

Remarque 1.4

Une variable n’a pas de type propre : elle a le type de l’objet qu’elle référence. c’est ce
qu’on appelle le typage dynamique.

Ex. 4. blabla
x = 3 blabla → x est de type int.
x = 4.5 blabla → x est devenue de type float.
x = ’salut’ bla → cette fois-si, x prend comme type str.

Remarque 1.5

En Python, le type bool est en fait une forme de type entier. La valeur booléenne True
signifie la valeur entière 1, et la valeur booléenne False signifie la valeur entière 0.

1.3.2 Expressions

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


10 1.3. MON PREMIER ALGORITHME

Définition 1.12

Les expressions sont composées des objets (constantes, variables, valeurs) et/ou des fonc-
tions appelés opérandes liés par des opérateurs. Une expression donne une valeur comme
résultat après son évaluation.

Dans ce chapitre, nous représentons les opérateurs de base qui s’appliquent sur les types
de base vu au dessus. Ces opérateurs sont représentés dans le Tableau 1.1.

Remarque 1.6

Python possède autres types que les types de base présentés dans ce chapitre, et par
conséquent leur ensemble des opérateurs. Nous allons découvrir ces types dans les cha-
pitres suivants.

Un opérateur peut être binaire ou unaire :

Les opérateurs binaires sont :


— les opérateurs de relations : ==, <,>, <=, >=, != ;
— les opérateurs additifs : +, -, or ;
— les opérateurs multiplicatifs : *,**, /, //, %, and ;
— les opérateurs : in, not in ;
Les opérateurs unaires sont :
— opérateurs de signe : - ;
— opérateur de négation : not
Syntaxe 4. blabla
Pour les opérateurs binaires qui agissent sur 2 opérandes :
— opérande1 opérateur opérande2, ex : X+Y, Z< 5, non (A et B) ou C.
Pour les opérateurs unaires qui agissent sur 1 opérande :
— opérateur opérande, ex : cos (x).
Par conséquent, les expressions selon les opérateurs utilisés peuvent être des expressions
arithmétiques ou des expressions logiques.
— Les expressions arithmétiques : l’évaluation de ce type d’expressions renvoie une valeur
numérique, elles utilisent des opérateurs de type arithmétiques. Ex : 2* X +Y-Z,
— Les expressions Logiques : l’évaluation de ce type d’expressions renvoie une valeur boo-
léenne (True ou False), elles utilisent des opérateurs de type logiques ou comparaisons.
Ex : (X > Y) et (X< Z), ((A and B) or not(C)).

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


CHAPITRE 1. NOTIONS ALGORITHMIQUES 11

Remarque 1.7

Les parenthèses et les fonctions (à voir ultérieurement) sont considérées comme des
opérateurs primaires.

On évalue les expressions logiques par l’utilisation des tables de vérité, voir Figure 1.5 .
Domaine Opération Signification Types Exemple Résultat
+ addition 5+7 12
− soustraction 6−4 2
∗ multiplication 2∗7 14
Arithmétique ∗∗ puissance int, float, bool 2 ∗ ∗3 8
/ division 7/3 3.5
% reste de la division (modulo) 7%3 1
// quotient 7//3 2
+ concaténation ’bon’ + ’jour’ bonjour
∗ répétition ’ab’ ∗ 3 ababab
Chaînes de caractères str
in appartenance ’a’ in ’bgas’ True
not in non appartenance ’a’ not in ’ bgas’ False
and et logique x and y
Logique or ou logique bool x or y voir Figure 1.5
not non logique not x
> supériorité 6>5 True
< infériorité 6<5 False
Comparaison == égalité 6 == 6 True
int, float
relationnel <= supérieur ou égal 6 <= 6 True
>= inférieur ou égal 5>= 6 True
!= non égalité 6 != 5 True

Table 1.1 – Les opérations et les expressions de base.

Figure 1.5 – Les tables de vérité pour les opérateurs and, or et not.

Expression bien formée

Pour une évaluation correcte de l’expression, elle doit être bien écrite et bien formée. Si
l’expression contient plusieurs opérandes et opérateurs, il faudra mieux les organiser par des

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


12 1.3. MON PREMIER ALGORITHME

parenthèses selon le sens voulu par l’expression. Il faut aussi respecter l’association (opéra-
teur/opérande) selon leur application comme le montre le Tableau 1.1.
L’expression bien formée a un type qui dépend des règles d’évaluation de l’expression.

Ex. 5. blabla
— 5 and 7 : une expression mal formée, on ne peut pas appliquer l’opérateur logique sur
des opérandes numériques.
— 5 + 3 ∗ 2 : une expression peut être mal formée, car elle donne un résultat égal 11 alors
que peut être, on est en train de chercher à calculer 5 + 3 en premier puis le multiplier
par 2, le mieux est d’utiliser les parenthèses pour expliquer le sens d’évaluation.

Remarque 1.8

Comme nous avons mentionné dans la remarque 1.5, True et False représente respective-
ment les deux valeurs 1 et 0. Par conséquent, True + Flase donne 1, True > False donne
True .

Règles d’évaluation

En algorithmique, les différents opérateurs sont classés par ordre de priorité. Dans une
expression, les opérateurs de plus forte priorité étant évalués avant ceux de faible priorité, et
lorsque deux opérateurs sont de priorité égale, on évalue de gauche à droite.
En algorithmique (Python), les priorités sont classées comme dans la liste suivante, com-
mençant par la priorité la plus forte, les opérateurs sur la même ligne ayant une priorité
égale :
1. Parenthèses
2. la puissance ** ;
3. le moins unitaire, le plus unitaire ;
4. *, /, //, % ;
5. +, - ;
6. in, not in, >, >=, <,<=, ==, != ;
7. not ;
8. and ;
9. or.

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


CHAPITRE 1. NOTIONS ALGORITHMIQUES 13

Exemple 1.3. blabla


E1= 4+8*2-6*(4+3)/ 3 // 3 % 3 *(16 % 9 % 4)
E2= (10>3) or (12+2*3>16-8/4) and not (18 // 2 // 3 == 21 // 3 % 3)
E3=4+8*2-6*4+3/ 3 // 3 % 3 *16 % 9 % 4

Solution : voir Figure 1.6 pour l’expression E1, et Figure 1.7 pour l’expression E2.
L’évaluation de l’expression E3 donne -4.0.

Figure 1.6 – Évaluation de l’expression E1.

Figure 1.7 – Évaluation de l’expression E2.

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


14 1.3. MON PREMIER ALGORITHME

1.3.3 L’affectation : attribution de valeurs à des variables


L’instruction d’affectation(assignement statement) permet d’attribuer une nouvelle valeur
ou de modifier les valeurs des données référencées par les variables. La valeur peut être une
constante, une valeur immédiate, une expression à évaluer ou une autre variable. La valeur
sera stockée aussi dans une zone mémoire.

Définition 1.13

L’instruction d’affectation "=" correspond à l’opération d’attribuer une valeur à une


variable.

Syntaxe 5. blabla
Variable = variable1
Variable = valeur
Variable = constante
Variable = expression

Ex. 6. blabla
X=Y
Z=5
Si on veut mettre plusieurs instruction sur la même ligne, il faudra les séparées par un point
virgule ’ ;’.
Y = X + Z – 2 ; T = True ; P = ’S’

Principes : blabla

— L’instruction d’affectation, notée par exemple (X = Y) se lit : X reçoit Y.


— On peut observer que l’affectation possède deux parties, et sa partie gauche représente
toujours une variable, alors que la partie droite peut-être : une valeur, variable ou une
expression ;

Remarque 1.9

En Python, l’affectation peut être écrite sous une forme contractée. Voir Tableau 1.2.

Sous Python, on peut assigner une valeur à plusieurs variables simultanément.

Ex. 7. blabla
x = y = z = 4 blablablablatoutes les variables reçoivent la valeur 4.

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


CHAPITRE 1. NOTIONS ALGORITHMIQUES 15

Forme Exemple Équivalent à


= X=5 X=5
+= X+=5 X=X+5
-= X-=6 X=X-6
*= X*= 4 X=X*4
/= X/= 8 X=X/8
//= X//= 5 X= X//5
%= X%5 X=X%5
**= X**=2 X=X**2

Table 1.2 – Principales affectation en Python.

On peut aussi effectuer des affectations parallèles à l’aide d’un seul opérateur.

Ex. 8. blabla
x,y,z = a, ’salut’, 5 blablaéquivalent à x = a ; y = ’salut’ ; z = 4

Remarque 1.10

L’instruction d’affectation affiche un comportement différent selon le type d’objet ma-


nipulé, pour les types de base simple elle crée un nouvel objet avec une nouvelle valeur.
Pour les types de données composés (list, dict), l’objet d’origine sera modifié (à voir dans
les chapitres suivants).

1.3.4 Les instructions d’entrée/sortie (I/O)


Dans cette partie, nous verrons deux types d’instructions qui manipulent les objets de
base et qui permettent une sorte d’interaction avec celui qui utilise notre algorithme, à savoir :
print et input.

a. blablaL’instruction d’affichage (print)

Définition 1.14

Une instruction de sortie des données correspond à l’opération d’affichage des valeurs
des variables après traitement.

L’affichage se ferra sur l’écran ou sur un outil de sortie. Cette instruction permet aussi
d’afficher des messages (chaîne de caractères).

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


16 1.3. MON PREMIER ALGORITHME

Syntaxe 6. blabla

— print(variable)
— print(variable1, variable2,. . . , variable_n)
— print(’ message’) ; print("message")
— print (valeur)
— print(constante)
— print(expression)

Ex. 9. blabla
print( X, Y) ; print(10) ; print(’ cours de programmation’) ; print(X + Y - 3) ; print(’Mon
nom est : ’, nom)

b. blablaL’instruction d’entrée (input)

Dans un programme, il est très pratique de pouvoir demander à l’utilisateur de saisir une
donnée.

Définition 1.15

Une instruction d’entrée de données correspond à l’opération de saisir des valeurs et les
attribuer aux variables.

La saisie se fait via le clavier ou un outil d’entrée des données. La valeur sera stockée dans
un emplacement mémoire.
On peut utiliser la fonction input() en laissant les parenthèses vides, comme on peut
placer en argument un message explicatif destiné à l’utilisateur.

Syntaxe 7. blabla

— Forme 1 : blabla nom = input()


— Forme 2 : blabla nom = input(”Entrezbvotrebnombsvp : ”)

Remarque 1.11

En Python 3, la fonction input() renvoie toujours une chaîne de caractères.

Si nous souhaitons que l’utilisateur nous donne une valeur numérique, nous devrons convertir
la valeur entrée en une valeur numérique du type qui nous convient, par l’intermédiaire des

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


CHAPITRE 1. NOTIONS ALGORITHMIQUES 17

fonctions et méthodes prédéfinies et intégrées. C’est ce que nous allons découvrir dans la
section suivante.

1.3.5 Méthodes et fonctions prédéfinies


Python possède des méthodes et des fonction prédéfinies, ce sont les fonctions de la
bibliothèque standard de Python qui est composée de très nombreux modules. Les deux
instructions que nous avons déjà vu input() et print() sont en fait des types de fonctions
prédéfinies.
Pour pouvoir entrer des valeurs numériques on doit associer la fonction input() avec la
fonction int() ou f loat() pour convertir l’entrée de input() de type str vers le type cherché
intouf loat.

Syntaxe 8. blabla
— Saisir une valeur entière : blabla x = int(input()) ;
— Saisir une valeur flottante : blabl y = f loat(input()) ;

Ex. 10. blabla


nom = input (’ Entrez votre nom :’)
age= int( input(’Quel est votre âge ?’))
taille= float(input(’Quelle est votre taille ?’)

Remarque 1.12

Python offre la fonction type() qui retourne le type d’un objet.

Figure 1.8 présente l’exécution sous console (shell) des deux instructions avec et sans
conversion de type, et démontre le type de résultat pour chaque instruction.
Bien-que Python possède d’autres fonctions prédéfinies comme par exemple :
1. len() qui renvoie la taille d’une chaîne de caractère (taille d’un objet de type str) ;
2. min() et max() qui retournent respectivement le plus petit et le plus grand élément
d’un ensemble de données ou de variables ;
3. abs() qui renvoie la valeur absolue de son argument.
.

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


18 1.3. MON PREMIER ALGORITHME

Figure 1.8 – La fonction int() et la fonction type().

Remarque 1.13

La bibliothèque standard de Python contient de nombreux modules qui offrent plusieurs


autres fonctions. Pour utiliser ces fonction on doit tout d’abord les importer par la
commande import.

Syntaxe 9. blabla

— Pour importer le module :blablablablimport nom_module


— Pour utiliser le module importé :blablaidentif icateur = nom_module.nom_f onction()

Parmi les modules disponibles, nous nous intéressons par le module math qui contient
des fonctions mathématiques comme la racine carrée sqrt(), le cosinus cos(), le sinus sin(),
etc.

Ex. 11. blabla


import blmath
x = math.sqrt(9)blablabla cela veut dire x = 3

1.3.6 La trace d’exécution


La trace d’exécution ne fait pas partie d’un algorithme, cependant, elle est importante
pour vérifier si l’algorithme donne les résultats souhaités. C’est une sorte d’exécution manuelle
pour suivre le bon déroulement d’un l’algorithme, instruction par instruction afin de s’assurer
de son bon fonctionnement. Elle est considérée comme une première vérification de la validité
de l’algorithme avant de le transformer en programme.

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


CHAPITRE 1. NOTIONS ALGORITHMIQUES 19

1.4 Exemples
Dans cette partie, on va voir des solutions complètes pour quelques exemples de problèmes
simples.

Exemple 1.4. Écrire un algorithme qui calcule la distance entre deux points sur un plan
cartésien.

L’analyse du problème :
— Les entrées : les coordonnées des deux points A et B,(Ax, Ay)et(Bx, By) ;
— Le traitement : D= racine_carrée((Bx - Ax)**2 + (By - Ay)**2) ;
— Les sorties : la distance D entre A et B ;
La transformation de la solution et l’écriture d’algorithme : (voir Listing 1.1).
1 import math
2 # la saisie des entrees
3 ax = float ( input ( " Donner l abscisse du point A : " ) )
4 ay = float ( input ( ’ Donner l ordonnee du point A : ’) )
5 bx = float ( input ( ’ Donner l abscisse du point B : ’) )
6 by = float ( input ( ’ Donner l ordonnee du point B : ’) )
7 # le calcul de la distance
8 distance = math . sqrt (( bx - ax ) **2 + ( by - ay ) **2)
9 # l ’ affichage du resultat
10 print ( " la distance entre le point A et B = " , distance )

Listing 1.1 – Calcul de la distance entre deux points.

Remarque 1.14

Dans un éditeur Python, on peut choisir notre mode d’écriture du programme, soit dans
la fenêtre script soit dans la console (shell)

La fenêtre script d’un éditeur Python est le lieu où le programmeur rédige son code (pro-
gramme : les instructions et fonctions), qui peut être par la suite enregistré pour utilisation
et modification ultérieures. Alors que la console (shell) est l’endroit où s’exécutent le pro-
gramme, c’est l’endroit aussi là où l’utilisateur tape les entrées demandées par le programme.
La console peut être aussi utilisée pour tester une partie du programme ou une instruction
pour vérifier son bon déroulement sans avoir besoin d’exécuter tout le programme, notamment
si ce dernier est assez long.
Pour le code Python sous la fenêtre script et son exécution sous la console, voir Figure
1.9.

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


20 1.4. EXEMPLES

Figure 1.9 – Algorithme : calcul de la distance entre deux points.

La trace d’exécution :
Les lignes de code du programme sont numérotées par ordre croissant de la première instruc-
tion jusqu’à la dernière (les commentaires ne sont pas inclus dans la trace), l’exécution est
séquentielle, elle donne la table suivante : (voir Figure 1.10)

Figure 1.10 – Trace d’exécution de code 1.1.

Exemple 1.5. Écrire un algorithme qui calcule les surfaces et les périmètres : d’un rectangle
et d’un disque. Exploiter la solution pour déduire la surface et le volume d’un cylindre formé
à base de ce disque.

L’analyse du problème :
On doit découper le problème en sous-problème et on résout chacun des sous-problèmes à
part, puis on les regroupe dans la solution finale.

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


CHAPITRE 1. NOTIONS ALGORITHMIQUES 21

Le premier sous-problème est constitué des calculs des périmètres et surface des objets
(rectangle et cercle), tandis que le deuxième est de calculer la surface et le volume du cylindre
à partir de la solution trouvée pour le premier problème.
Sous-problème 1 :
— Les entrées : pour le rectangle, on a besoin de :( longueur Lo, largeur La), pour le
disque (rayon R) ;
— Le traitement : P r = 2 ∗ (Lo + La), Sr = Lo ∗ La, P d = 2 ∗ R ∗ P i, Sd = R ∗ ∗2 ∗ P i
— Les sorties : afficher le périmètre Pr, surface Sr pour le rectangle, et surface Sd,
périmètre Pd pour le disque.
Sous-problème 2 :
— Les entrées : pour le volume, on a besoin de la surface de la base donc Sd et la hauteur
du cylindre H. Pour sa surface, on a besoin de la surface de ses deux bases inférieure
et supérieure Sd et la surface de son coté Sc (son coté est formé d’un rectangle de
largeur H et longueur égale au périmètre du disque).
— Le traitement :Sc = 2 ∗ Sd + H ∗ P d, V c = Sd ∗ H
— Les sorties : la surface Sc et volume Vc.
La transformation de la solution et l’écriture de l’algorithme :
L’algorithme est composé de deux parties des sous-problèmes traitées dans la phase d’analyse.
Voir Listing 1.2 pour le code et la Figure 1.11 pour son exécution.

1 # programme qui fait des calculs geometriques sur : un rectangle , un disque


et un cylindre
2 import math
3 # la saisie des entrees du premier sous probleme
4 Lo = float ( input ( ’ Donner la longueur du rectangle : ’) )
5 La = float ( input ( ’ Donner la largeur du rectangle : ’) )
6 # le calcule de la surface et du perimetre du rectangle
7 Sr = Lo * La
8 Pr = 2*( Lo + La )
9 # l ’ affichage des resultats
10 print ( ’ Le perimetre du rectangle = ’ , Pr , ’ et la surface = ’ , Sr )
11 R = float ( input ( ’ Donner la valeur du rayon du disque : ’) )
12 # le calcule du perimetre et surface du disque
13 Pd =2* R * math . pi
14 Sd = R **2* math . pi
15 # l ’ affichage des resultats
16 print ( ’ Le perimetre du disque = ’ , Pd , ’ et la surface = ’ , Sd )
17 # la saisie des entrees du deuxieme sous probleme
18 H = float ( input ( ’ Donner la hauteur du cylindre : ’) )

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui


22 1.4. EXEMPLES

19 # le calcule de la surface et le volume de cylindre


20 Sc = 2* Sd + H * Pd
21 Vc = Sd * H
22 # l ’ affichage du resultat
23 print ( " la surface de cylindre = " ,Sc , ’ et son volume = ’ , Vc )

Listing 1.2 – Calcul géométrique.

Figure 1.11 – Console d’exécution du code 1.2.

Exemple 1.6. blabla


— Que produit l’algorithme présenté par le Listing 1.3 ?
— Pensez-vous qu’il présente vraiment le résultat espéré (selon son nom) ?
— Remplacez les instructions aux lignes 5 et 6 par l’instruction val2, val1 = val1, val2,
que devient-il ?
— Pouvez vous expliquer la différence entre les deux versions ?
— Modifiez-le pour qu’il puisse échanger les valeurs de trois variables : val1, val2 et val3.

1 # la saisie de deux valeurs differentes


2 val1 = int ( input ( ’ Donner la premiere valeur : ’) )
3 val2 = int ( input ( ’ Donner la deuxieme valeur : ’) )
4 # la permutation des valeurs de val1 et val2
5 val2 = val1
6 val1 = val2
7 # l ’ affichage des resultats
8 print ( ’ La valeur de val1 = ’ , val1 )
9 print ( ’ La valeur de val2 = ’ , val2 )

Listing 1.3 – La permutation des valeurs.

Tronc-commun ST blablablablabla Année 2020-2021 blabl blablablablablablablab N.Chergui

Vous aimerez peut-être aussi