Vous êtes sur la page 1sur 133

1

Algorithmique
TOUHTOUH Samira

Ecole Nationale des Sciences Appliquées d’El Jadida


samira.touhtouh@gmail.com
2

Plan
 Introduction

 Informatisation d’un problème : Langage algorithmique

 Les variables

 Les constantes

 Fonctions d’entrée-sortie

 Les structures

 Les tableaux

 Les fonctions

 Les fichiers
3

Plan
 Introduction

 Informatisation d’un problème : Langage algorithmique

 Les variables

 Les constantes

 Fonctions d’entrée-sortie

 Les structures de contrôle

 Les fonctions

 Les tableaux

 Les fichiers
4

I. Introduction

 Introduction à l’algorithme

• Histoire
Le mot algorithme vient du mot latinisé du mathématicien « Al-
Khawarismi », après la traduction du livre « kitâb- aljabr wa al-
muqâbala » par Gherardo di cremona sous le titre « Dixit Algorismi ».

• Définition générale
Une séquences d’instructions logique à suivre pour obtenir un résultat
donné.
5
6

Exemple 1 : Comment accéder à L’ENSA?

1. Réussir le bac
2. Candidater
3. Passer le concours
4. Réussir le concours
5. Déposer un dossier d’inscription

Exemple 2 : Préparer un café au lait

1. Préparer le café
2. Préparer le lait
3. Mélanger les deux
7

 L’ordre des opérations a son importance, mais dans certains cas plusieurs
ordres sont possibles.

 Parfois, il faut décomposer les actions trop complexes.

Exemple :

Préparer un café au lait

1. Préparer le café
2. Préparer le lait
3. Mélanger les deux

Etape élémentaire : Préparer le café


1. Préparer la cafetière
2. Remplir d’eau
3. Mettre le filtre
4. Mettre le café
5. Brancher la cafetière
6. Lancer la cafetière
8

En informatique :
 Procédure de calcul bien défini qui prend en entrée une valeur, ou un
ensemble de valeurs, et qui donne en sortie une valeur, ou un ensemble de
valeurs.

Exemple :

 Algorithme d’Euclide

Calculer le PGCD de deux entiers a et b.

1. Ordonner a et b tel que a≥b

2. Calculer leur différence

3. Remplacer a par c c a-b


9

 Exécuter avec a=40 et b=12


Etape1:a40 b12
Etape2:ca  b 28

Etape3: a28 b 12
Etape4:ca  b 16

Etape5:a16 b 12
Etape6 :ca  b  4

Etape7:a12 b 4
Etape8:ca  b  8

Etape9:a8 b 4
Etape9:ca  b  4

Etape10:a4 b4
Etape11:a  b  4 Fin
10

 Exemple 2

Exécuter avec a=100 et b=40


11

 Un algorithme est dit correct si, pour chaque instance en entrée, il se


termine en produisant la bonne sortie,

 Un algorithme incorrect risque de ne pas se terminer pour certaines


instances en entrée,

 Un algorithme incorrect risque de se terminer sur une réponse autre que


celle désirée,

 Un algorithme peut être spécifié en langage humain ou en langage


informatique. L’unique obligation est que la spécification fournisse une
description précise de la procédure de calcul à suivre.
12

Plan
 Introduction

 Informatisation d’un problème : Langage algorithmique

 Les variables

 Algorithme

 Les constantes

 Les structures

 Les fonctions
13

II. Langage algorithmique

Énoncé du
problème
Algorithme Programme

Langage Langage Langage de


naturel algorithmique programmation
14

 Le langage algorithmique est différent du langage de programmation.

Langage de programmation

Langages de Langages de
bas niveau haut niveau
Liés au Langages
processeur évolués

CC++ Java
15

 Le langage algorithmique exprime les instructions résolvant un


problème donné indépendamment des particularités d’un langage de
programmation.

 En générale on utilise deux types de notations pour représenter les


algorithmes:

• L’organigramme

• Le pseudo-code
16

 L’organigramme est un schéma fonctionnel qui présente les différentes


parties d’un algorithme les unes à la suite des autres en utilisant des
symboles graphiques pour visualiser l’exécution de l'algorithme et le
cheminement des données.
17

Exemple : somme de deux nombres A et B

 L’écriture d’un algorithme avec un organigramme est rapidement abandonnée. La


lisibilité devient rapidement difficile pour les algorithmes assez long.
18

 le pseudo-code est purement conventionnel, aucune machine n’est


censée le reconnaître.

Exemple : Somme de deux nombres A et B

Algorithme somme_de_deux_nombres
Variables A, B, somme en entier
Début
Lire A
Lire B
somme A+B
Ecrire ‘’La somme de A et B est :’’ , somme
Fin
19

 Les différents éléments d’un algorithme sont :

• Données : ce qui doit être donné à l’algorithme

• Résultats : ce que doit produire l’algorithme

• L’algorithme : les grandes étapes des traitements et calculs


20

Exemple : Calculer le PGCD de a et b.

Données :
Données a et b deux entiers positifs

Algorithme

Résultats Résultat :
PGCD de a et b
21

 Structure d’un algorithme

Nom de l’algorithme // partie en-tête qui précise le nom de


l’algorithme

Déclaration des variables // partie déclaration des variables

Début // partie traitement des données

Algorithme (définir les actions à suivre pour résoudre un problème


donné)

Fin
22

Exemple 1 :

Ecrire un algorithme qui permet d’afficher « Bonjour ».

Algorithme algo_bonjour

Début

écrire ‘’bonjour‘’

Fin
23

Exemple 2 :
Ecrire un programme qui demande un nombre à l’utilisateur, puis qui
calcule et affiche le carré de ce nombre,
24

Plan
 Introduction

 Informatisation d’un problème : Langage algorithmique

 Les variables

 Les constantes

 Les structures

 Les fonctions

 Les tableaux

 Les fichiers
25

II. Les variables

• Dans un programme informatique, on va avoir en permanence besoin de


stocker provisoirement des valeurs.

• Il peut s’agir de données issues du disque dur, fournies par l’utilisateur


(frappées au clavier), etc..

• Ces données peuvent être de plusieurs types : des nombres, du texte, etc.

• Pour stocker une information au cours d’un programme, on utilise une


variable.

• Une variable est une boîte, que le programme (l’ordinateur) va repérer par
une étiquette.

• Une variable désigne un emplacement mémoire désigner par une adresse


binaire qui permet de stocker une valeur.
26

 Déclaration et utilisation des variables (les données)

La première chose à faire avant de pouvoir utiliser une variable est de


créer cette boîte et de lui donner une étiquette. C’est ce qu’on appelle
la déclaration des variables.

Une variable est désignée par :

Un nom unique qui la désigne

Un type de définition unique

Une valeur attribuée et modifiée au cours du déroulement de


l’algorithme.
27

 Le nom-le type-la valeur


 Nom d’une variable.

• Le nom d’une variable permet de l’identifier de manière unique au cours de


l’algorithme.

Les règles à respecter pour nommer les variables :

• Le nom d’une variable commence par une minuscule.

• Le nom d’une variable ne comporte pas d’espace,

• Si le nom de la variable est composé de plusieurs mots, il faut faire


commencer chacun deux par une majuscule.
28

 Les variables utilisées au cours de l’exécution de l’algorithme sont


déclarées après le nom de l’algorithme. Il suffit d’indiquer le nom de la
variable suivi de son type, séparés par deux points « : »,

 La structure d’un algorithme (déclarant une variable nommé V et de


type entier) est la suivante :

Algorithme nom_de_l’algorithme // partie en-tête

Variables V : entier // partie des déclarations des variables

Début // partie traitement

Bloc d’instructions

Fin
29

Exemple : Calculer et écrire le double d’un nombre réel donné (exemple : 7).

• L’algorithme nous informe qu’un nombre réel est donné (exemple 7) et que un autre
nombre réel sera calculé (7x2 = 14) puis affiché.

• Introduisons donc deux variables associées respectivement à la donnée et au résultat.


La structure de l’algorithme est la suivante :

Algorithme double

Variables nombre, résultat : réel

Début

nombre 7
résultat nombrex2
écrire résultat

Fin
30

• Déroulement de l’exemple :

Algorithme double

Variables nombre, résultat : réel nombre = ? résultat =?

Début nombre =? résultat=?

nombre 7, nombre = 7 résultat = ?

résultat nombrex2; nombre = 7 résultat = 14

écrire résultat résultat = 14

Fin Les variables n’existent plus


31

• L’algorithme se déroule de manière séquentielle et ligne après ligne.

• Au départ, lors de la déclaration, les valeurs sont inconnues : leur valeur


est indiquée par « ? ».

• L’existence des variables n’a de sens que le temps de l’exécution de


l’algorithme.
32

 Types des variables

Type réel - le type entier

• Les variables de types numériques utilisées en algorithme ont


comme domaine usuels ceux fournis par les mathématiques : réel et
entier.

• Le type de codage choisi pour un nombre va déterminer :

- Les valeurs maximales et minimales des nombres pouvant être


stockés dans la variable.

- La précision de ces nombres (dans le cas de nombres (décimaux)


33

• Les langages offrent plusieurs types numériques, le tableau ci-


dessous présente les plus rencontrés :
Type numérique Plage
Byte (octet) O à 255
Entier simple -32 768 à 32 767
Entier long -2 62 147 483 à 2 147 483 647
Réel simple -3,4x1038 à -1,4x1045 pour les
valeurs négatives
1,4x10-45 à 3,4x1038 pour les valeurs
positives
Réel double 1,79x10308 à -4,95x10-324 pour les
valeurs négatives
4,94x10-324 à 1,79x 10308 pour les
valeurs positives

• Pourquoi ne pas déclarer toutes les variables numériques en réel


double?
34

Expressions et opérateurs

• Une expression est un ensemble de valeurs, reliées par des opérateurs,


et équivalent à une seule valeur.

• Un opérateur est un symbole d’opération

• Une expression est soit :

 une constante
 une variable
 une opération
35

• Une opération est l'association d'un operateur avec ses opérandes qui
permet d'effectuer un calcul.

• Les opérations utilisables sur les éléments de type entier ou réel les
opérations arithmétiques classiques : l’addition (+), la soustraction (-
), le produit (x) et la division (/).

• On pourra aussi utiliser les opérateurs de comparaison classiques :


< > # = ≥ ≤
36

• Deux opérations sont spécifiques aux entiers : la division entière


DIV et le modulo MOD.

• L’opération DIV entre deux entiers retourne le résultat entier de


leur division.

• L’opération MOD entre deux entiers retourne le reste de leur


division.

• Exemple : 15 DIV 2 vaut 7 et 15 MOD 2 vaut 1, en effet, 15 = 7x2+1.


37

Exemple : Algorithme type réel

Algorithme type_réel

Variables nombre1, nombre2, résultat : réel


var1:entier
Début

nombre1 1.5
nombre2 15
var1 2
résultat nombre1 / nombre2 x var1

Fin
38

Conversion :

• Convertir un entier en réel est possible : cette opération n’entraine pas de


perte d’information. Par exemple, l’entier 15 deviendra 15,0.

• Convertir un réel en entier entraîne une perte d’information : Les chiffres


décimaux sont perdus. Par exemple, le réel 15,75 deviendra 15.

Algorithme conversion_numérique

Variables : nombre1 : entier


nombre2 : réel
Début

nombre 15
Nombre2 nombre1 // nombre2 vaut 15.0
nombre1 nombre2 + 0.5 // erreur : impossible

Fin
39

Le type caractère

• Il s’agit du domaine constitué des caractères alphabétiques, numériques


et de ponctuation.

• Ne pas confondre le signe ‘3’ (noté entre deux « simples quotes » en tant
que caractère et l’entier 3.

• En pseudo-code une chaîne de caractères est toujours notée entre


guillemets.

• A chaque caractère est associé une unique valeur numérique ( le code


ASCII, établie cette correspondance : par exemple, la lettre A
correspond a la valeur 65 ).

• http://www.table-ascii.com/
40
41
42

Expressions et opérateurs

• Les seules opérations élémentaires pour les éléments de type


caractère sont les opérations de comparaison.

< > # = ≤ ≥
43

Le type logique booléen

• Le domaine des booléens est l’ensemble formé des deux seules


valeurs (vrai, faux).

• Les opérations admissibles sur les éléments de ce domaine sont


réalisées à l’aide de tous les connecteurs logiques, notés :

ET : pour le « et logique »;
OU : il est vrai si l’un des deux booléens testés vaut vrai;
NON : pour le « non logique »
44

Exemple1 :
Algorithme type-booleen

Algorithme type_booléen
Variables booleen1, booléen2 : booléen
Début
booléen1 5< 6 // booléen1 prend la valeur Vrai

booléen2 (5<7) OU (3>8) // booléen2 prend la valeur Vrai

Fin
45

Exemple 2:

Ecrire un algorithme qui demande à l’utilisateur d’entrer


une température de l’eau pour indiquer son état physico-
chimique.
46

 Valeur d’une variable

• La valeur de la variable est la seul caractéristique qui soit modifiée


au cours de l’algorithme. Au début de l’algorithme, toutes les
variables ont des valeurs inconnues.

• Les variables changent de valeur grâce à l’opération d’affectation.

 Affectation :

• L’affectation est une opération qui fixe une nouvelle valeur à une
variable. Le symbole de l’affectation est
47

Exemple 1 :

A 2
B A+1

Exemple 2 :

Début Début

Caractère ‘’chaîne’’ caractère ‘’chaîne’’


Type ‘’caractère’’ Type caractère

Fin Fin
48

 L’ordre des instructions


• L’ordre dans lequel les instructions sont écrites joue un rôle essentiel
dans le résultat final.

Exemple 3 :
Quelles seront les valeurs des variables A et B après exécution des
instructions suivantes ?

Variables A, B : Entier
Début
A←1
B←A+3
A←3
B←5
A←4

Fin
49

Plan
 Introduction

 Informatisation d’un problème : Langage algorithmique

 Les variables

 Les constantes

 Les structures de contrôle

 Les fonctions

 Les tableaux

 Les fichiers
50

Les constantes

• Valeurs utilisées mais non modifiées par l’algorithme. Une constante


ne change jamais dans le temps. Les constantes sont placés avant le
lexique des variables.

• Les constantes sont définies par :

Nom référence de la constante (en majuscule).

Type nature de la valeur

Valeur la valeur de la constante,

Description un texte indiquant ce que représente la constante,

Exemple : CONST entier MAX=10


51

Plan
 Introduction

 Informatisation d’un problème : Langage algorithmique

 Les variables

 Les constantes

 Fonctions d’entrée-sortie

 Les structures de contrôle

 Les tableaux

 Les fonctions

 Les fichiers
52

Fonctions d’entrée-sortie

• Les programmes utilisent fréquemment des instructions permettant


l’affichage à l’écran et la saisie de valeurs au clavier par l’utilisateur.

• Deux opérations analogues permettant de simuler :

• L’affichage d’une phrase avec l’instruction écrire ();

• La saisie d’une valeur par l’utilisateur avec l’instruction lire ().


53

 La fonction lire

L’instruction de saisie de données par l’utilisateur est :

• Lire nomDeVariable

L’exécution de cette instruction consiste à :

1. Demander à l’utilisateur de saisir une valeur sur le périphérique d’entrée;

2. Modifier la valeur de la variable;

Avant l’exécution de cette instruction, la variable de la liste avait ou n’avait


pas de valeur. Après, elle a la valeur lue au clavier.
54

La fonction écrire

L’instruction d’affichage à l’écran (le périphérique de sortie) d’une


expression est :

• Ecrire expression

Cette instruction réalise simplement l’affichage de l’expression.

Cette expression peut être :

• Une variable
• Des commentaires écrits sous la forme d’une suite de caractère entre
guillemets.
• A la fois des phrases et des valeurs séparés par une virgule.
55

Algorithme exemple_lire_écrire

Variables nb: réel

Début

lire nb // l’utilisateur saisie le nombre au clavier

écrire ‘’la valeur de nb est ‘’ // une phrase est affichée à l’écran

écrire nb // une valeur est affichée à l’écran

écrire ‘’la valeur de nb est : ‘’ , nb // une phrase suivie de la valeur


est affichée à l’écran

Fin
56

Exemple :

• Ecrire un algorithme qui demande à l’utilisateur de saisir au clavier


trois nombres réels et qui affiche à l’écran la somme de ces trois
nombres.
57

Plan
 Introduction

 Informatisation d’un problème : Langage algorithmique

 Les variables

 Les constantes

 Fonctions d’entrée-sortie

 Les structures de contrôle

 Les tableaux

 Les fonctions

 Les fichiers
58

Les structures de contrôle

 Instruction conditionnelle
• Un algorithme est constitué d’une suite d’instructions qui
s’exécutent les unes après les autres de la première à la dernière.

• L’instruction conditionnelle va nous permettre de concevoir un


algorithme qui n’exécutera pas certains blocs d’instructions.

 La conditionnelle

• L’instruction conditionnelle détermine si le bloc d’instructions


suivant est exécuté ou non. La condition est une expression
booléenne dont la valeur détermine le bloc d’instructions.
59

Exemple avec un organigramme :

- Lors de la manipulation d’un distributeur de café, on utilise souvent


les sélecteurs « sucré/non sucré » et « chaud /froid). Ensuite on voit
apparaitre de la poudre de café, du sucre, puis de l’eau chaude ou
froide en fonction de nos demandes.

- Voici un organigramme qui représente l’algorithme enregistré dans


l’appareil :
60

Distribuer un
// L’action « fournir un gobelet » doit
gobelet
être effectuée à chaque exécution de
l’algorithme. La poudre de café doit aussi
Verser le être toujours fournie
café

Sucré ?
// L’action « verser du sucre » n’est
Verser effectuée que si l’utilisateur a choisi un
le sucre café sucré

chaud
?

// Une seule des deux actions « verser de


Verser l’eau Verser l’eau
l’eau chaude » et « verser de l’eau froide
froide chaude
» est effectuée.
61

• La syntaxe de cette instruction est :

Si (condition) alors

{
Bloc d’instructions n°1 // exécuté si la condition égale vrai
}

sinon
{
Bloc d’instructions n°2 // exécuté si la condition égale Faux
}
62

• L’algorithme de la machine à café se présentera ainsi :

Distribuer un gobelet
Verser le café en poudre

Si le café doit être sucré


Alors verser du sucre

Si le café doit être chaud


Alors verser de l’eau chaude

Sinon verser de l’eau froide


63

Exemple :
Ecrire un algorithme qui lit deux entiers et affiche le plus grand des deux.
64

Exemple 2 : (avec une variable caractère)

Ecrire un algorithme qui prend en compte la réponse d’un utilisateur qui


doit répondre à une question par oui ou par non,
La question est « Peut-on passer au feu rouge? »

Variable réponse : caractère


Début
Ecrire « Peut-on passer au feu rouge? »
Ecrire « Répondez par O ou N »
Lire réponse
Si réponse ‘O’ alors
{
écrire ‘’ ajourné’’
}
Si réponse ’N’ alors
{
écrire ‘’admis’’
}
Fin
65

 Applications

La condition simple

• Une version plus simple est utilisée si l’alternative n’a pas lieu. La
syntaxe de cette instruction est alors :

Si (condition) alors

{
Instructions;
}
66

Exemple :

Ecrire un algorithme qui lit un entier et qui affiche sa valeur positive.


67

La présentation

• Les décalages dans l’écriture d’un algorithme (ou d’un programme)


sont nécessaires à sa bonne lisibilité.
68

Exemple :
La différence entre les deux algorithmes identiques suivants :
Algorithme max_de_deux_entiers Algorithme max_de_deux_entiers
Variables : x, y, max : entier Variables : x, y, max : entier
Début Début
Lire x Lire x
Lire y Lire y
Si x>y alors Si x>y alors

{ {
Max x Max x
} }

Sinon Sinon

{ {
Max y Max y
} }

Ecrire ‘’ le maximum est : ‘’, max Ecrire ‘’ le maximum est : ‘’, max
Fin Fin
69

Exemple : Comparons les deux algorithmes

Variables X, Y, Z : entiers
Début Variables X, Y, Z : entiers
Y 2 Début
Lire X Y 2
Si X > 10 Alors Lire X
Si X > 10 Alors
X X – 10
X X – 10
Y 1 Y 1
Z X*Y Z X*Y
Ecrire Z Ecrire Z

Fin Fin
70

 Conditionnelles imbriquées

Il est possible d’imbriquer des blocs de programme les uns dans les
autres.

Exemple :

Ecrire un algorithme qui demande à l’utilisateur une note et affiche


le commentaire associé à la note :

Note de 0 à 8 inclus : « insuffisant »;


Note de 8 à 12 inclus : « moyen »
Note de 12 à 16 inclus : » bien »;
Note de 16 à 20 inclus : « très bien ».
71

 Instruction de répétition

 La boucle

• L’instruction de répétition, appelée boucle, permet d’exécuter


plusieurs fois consécutives un même bloc d’instructions. La répétition
s’effectue tant que la valeur de l’expression booléenne est égale à
Vrai.

• On dispose de trois structures de contrôle différentes :


72

Tant que…………faire :

• Cette structure de contrôle fait répéter une séquence d’instructions,


aussi longtemps qu’une condition a la valeur Vrai.

• Son fonctionnement précis est décrit par l’organigramme :

non Condition

oui

Séquence
suite D’instructions
73

Exemple 1 :

Ecrire un algorithme qui permet d’afficher à l’écran les entiers de 1 à 5.

Algorithme affichage_des_entiers_1_à_5

Variables compteur : entier

Début
Compteur 1 // initialisation
tant que compteur ≤ 5 faire // condition de poursuite
{ // début du bloc
écrire compteur // traitement
compteur compteur + 1 // incrémentation du compteur
} // fin du bloc
Fin
74

Remarques

• Les variables intervenant dans la condition doivent avoir reçu une


valeur avant l’évaluation de cette condition : initialiser la
condition de la boucle.

• Cette valeur peut être complètement arbitraire, et n’avoir qu’un seul


intérêt : forcer l’entrée dans le boucle.
75

Exemple :

Ecrire un algorithme qui prend en compte la réponse d’un utilisateur


qui doit répondre à une question par oui ou par non,
La question est « Peut-on passer au feu rouge »

Rep ‘’Z’’

Tant Que Rep # ‘’O ‘’ et Rep # ‘’N’’ Faire

Ecrire ‘’Répondez O pour oui, N pour Non’’

Lire Rep
76

• Si la première évaluation de la condition fournit la valeur Faux, le


corps de la boucle n’est pas exécuté, la condition ne sera plus évalué
et on passe directement à la suite.

• Si la séquence ne change pas la valeur de la condition et si celle-ci a


la valeur Vrai, la séquence sera répétée sans que l’on passe jamais à
la suite : une boucle infinie.
77

 Structure pour

Lorsque la répétition ne porte que sur le nombre d’itérations et qu’il est


connu avant de commencer la boucle, il est pratique d’utiliser la
boucle :

pour de à faire
78

Exemple1 :

Ecrire un algorithme qui permet d’afficher les entiers de 1 à 5.


79

Exemple 2 :
Ecrire un algorithme qui permet d’afficher la table de multiplication
par 7, présentée à l’ancienne :
7 fois 1 font 7
7 fois 2 font 14
……
7 fois 10 font 70
80

 La boucle faire-tant que

• La boucle faire-tant que effectue l’évaluation de la condition booléenne


après avoir effectué le premier tour de boucle. Dans certains cas, des
algorithmes s’écrivent avec moins de lignes en utilisant ce type de
boucle.

Compteur 1 // initialisation

Faire // condition de poursuite

{
écrire compteur //traitement
compteur compteur + 1 // incrémentation du compteur
}

tant-que compteur ≤ 5 // condition


81

Exemple 2 :

Soit l’algorithme
Variable x : nombre entier
Début
Ecrire ‘’donnez l’entier de départ’’
Lire x
Tant que x<100 Faire
Ecrire x
x x+20
Fin
Que produit cet algorithme lorsque x vaut 43, 195 ou -7?

L’écrire à l’aide de Faire jusqu’à ….. et Si….. Alors….


82

 Les boucles imbriquées

• Quand un bloc d’instructions à répéter lors d’une boucle est


composé de plusieurs boucles , on parle de boucles imbriquées.

Exemple :

• Ecrire un algorithme qui permet de saisir 5 notes, et extrait la


meilleure de ces 5 notes. La note doit être comprise entre 0 et 20. Si
ce n’est pas le cas l’algorithme doit prévenir l’utilisateur pour qu’il
recommence la saisie.
83

Première étape :

Algorithme saisie_note_entier_0et20

Variables note : entier

Début
écrire ‘’ Entrez une note : ‘’
lire note // l’utilisateur entre la note
tant_que note<0 OU note > 20 faire
{

écrire (‘’ vous avez fait une erreur, essayez encore : ‘’)
lire note // on recommence la saisie.
}
Fin
84

Structures itératifs

Permettent d’exécuter plusieurs fois de suite une


ou plusieurs instructions.
85

Exercice
• Ecrire un algorithme permettant de résoudre une équation du
second degré.
Afficher les solutions :
86

Plan
 Introduction

 Informatisation d’un problème : Langage algorithmique

 Les variables

 Les constantes

 Fonctions d’entrée-sortie

 Les structures de contrôles

 Les tableaux

 Les fonctions

 Les fichiers
87

VII. Les tableaux

 Introduction

• Dans certains conditions, les variables sont très mal adaptées aux
traitements à effectuer.

• Lorsqu’il s’agit d’un grand nombre de valeurs de même types qui se


répète, le traitement est lourd.

• Exemple : nous avons plusieurs traitements à effectuer sur des


consommations mensuelles d’électricité. Pour conserver ces valeurs en
mémoire, nous pouvons prendre 12 variables numériques que nous
appellerons, par exemple, E1, E2,….., E12.

• Pour calculer la consommation mensuelle moyenne sur l’année nous


pouvons écrire la longue formule :

• Moyenne = (E1 + E2 + E3+ E4 + E5+ E6+ E7 + E8+ E9+E10 + E11+


E12)/12
88

• Les températures à 16 heures de chacun des jours d’une semaine


seront les 7 valeurs de la variable T qui est un tableau de 7 variables
de type entier qui sont désignées par T[1], T[2],… T[7]

Le nom Temp désigne


T
l’ensemble du tableau
1 8
2 6
3 7
4 11
Cette case du tableau
5 6 représente la variable T[5]
6 8 dont la valeur est 6

7 9
89

Exemple :
Ecrire un algorithme qui permet de calculer la moyenne des
températures de la semaine :
90

• Le principe d'un tableau : on stocke les éléments dans des cases, chaque
case est étiquetée d'un numéro(indice). Pour accéder à un élément
particulier d'un tableau, on donne son indice.

• Le nombre maximal d’éléments du tableau, qui est précisé à la


définition, s’appelle sa dimension.

• Le type de ses éléments s’appelle le type du tableau.

• Pour accéder aux éléments d’un tableau, un indice indique le rang de


l’élément.
91

 Déclaration d’un tableau

1) T: Tableau [7] de réels // liste de notes ou de températures

2) T: Tableau [1,7] de réels

3) T: Tableau [0,6] de réels

• Réels : Type des éléments du tableau

• [7] : Nombre d’éléments dans le tableau.

• Chaque élément est repéré dans le tableau par un indice varie


de 0 à taille-1 ou de 1 à taille.

• On accède à la case 2 par T[2]. (c’est la 3e case ou la 2e case)


92

 Utilisation d’un tableau

Tableau à une dimension

• La manipulation des éléments du tableau (notes) est décrite dans


l’exemple suivant : une seule variable permet de stocker 4 notes
entières.

Algorithme utilisation d’un tableau

Variables : notes : tableau[4] d’entiers;

Début

notes[0] 12
notes[1] 14
notes[2] 10
notes[3] 18

Fin
93

L’état de mémoire

12 14 10 18
94

 Manipulation de tous les éléments d’un tableau

Exemple 1 : Lire les valeurs des éléments d’un tableau T de N


nombres entiers.
95

Exemple 2 : Afficher toutes les valeurs des éléments d’un tableau T de


N nombres.
96

Exemple 3 : Mettre à zéro tous les éléments d’un tableau T de N nombres


97

Tableau à deux dimensions

• L’informatique nous offre la possibilité de déclarer des tableaux


dans lesquels les valeurs ne sont pas repérées par une seule, mais
par deux coordonnées.

Tableau cases [7,7] en Entier


98

Exemple :

Ecrire un algorithme remplissant un tableau de 6 sur 13,


avec des zéros.
99

Plan
 Introduction

 Informatisation d’un problème : Langage algorithmique

 Les variables

 Les constantes

 Fonctions d’entrée-sortie

 Les structures de contrôles

 Les tableaux

 Procédures et fonctions

 Les fichiers
100

Procédures

 Nous voulons poser plusieurs questions aux quelles nous attendons une
réponse sous la forme O ou N. Un compteur nous permettra de compter le
nombre de réponse positive.

‘’Peut-on passer au feu rouge ‘’

‘’Doit-on marquer un arrêt au STOP? ‘’

 Pour prendre en compte la réponse de l’utilisateur qui doit répondre


seulement par OUI ou par NON

 Ceci nécessite l’utilisation de plusieurs instructions en particulier


l’utilisation de la boucle tant que,
101

Algorithme : reponseOuiNon
Variables : rep : caractère
Début :
Compteur 0
Ecrire ‘’Peut-on passer au feu rouge ‘’
Lire rep
Tant que rep # ’O’ ET rep # ’N’
{
Ecrire ‘’ répondez O pour oui et N pour non’’
Lire rep
}
Si Rep ‘N’ alors compteur compteur + 1
Ecrire ‘’Doit-on marquer un arrêt au STOP ‘’
Lire rep
Tant que rep # ’O’ ET rep # ’N’
{
Ecrire ‘’ répondez O pour oui et N pour non’’
Lire rep
}
Si Rep ‘O’ alors compteur compteur + 1
Ecrire ‘’points marqués : ‘’, compteur
Fin
102

 Pour ne pas avoir à recopier plusieurs fois les mêmes lignes dans l’algorithme,
nous pouvons créer une procédure qui est une partie d’algorithme, écrite à part,
désigné par un nom, et que l’on fait exécuter plusieurs fois, en citant son nom.
103

Définition d’une procédure

Procédure maProcédure ( )
Variables var1 : entier
Début
Ecrire ‘’Peut-on passer au feu rouge clignotant‘’
Lire rep
Tant que rep # ‘’O’’ ET rep # ‘’N’’
{
Ecrire ‘’ répondez O pour oui et N pour non’’
Lire rep
}

Fin procédure
104

Variables Question : chaîne de caractères


Rep : caractère
Compteur: nombre entier

Procédure reponseOuiNon ( )
Début
Ecrire Question
Lire Rep
Tant que rep # ‘O’ ET Rep # ‘N’ Faire
Ecrire ‘’répondez par O ou par N’’
Lire Rep
Fin
105

Début
Compteur 0
Question ‘’peut-on passer au feu rouge clignotant?’’
reponseOuiNon
Si Rep ‘N’ alors
compteur compteur + 1
Question ‘’doit-on marquer un arrêt au STOP?’’
ReponseOuiNon
Si Rep ‘O’ alors
compteur compteur + 1
Ecrire ‘’points marqués : ‘’, compteur
Fin
106

Les variables locales et globales

 Les variables déclarées dans l’algorithme appelant sont utilisables


dans les procédures.

 Chaque algorithme et sous algorithme doit avoir son propre espace


de variables, inaccessible par les autres.

 Les variables sont dites LOCALES.

 Il peut exister des variables GLOBALES, mais leur usage est


déconseillé.
107

Paramètres

 Un paramètre est une variable particulière sert à la communication


entre algorithme appelant et sous-algorithme.

 Deux types de communication de valeurs par paramètres :

- La valeur du paramètre effectif est affectée avant l’exécution de la


procédure au paramètre formel qui est une variable appartenant à la
procédure : on dit que le paramètre est en entrée.

- Le paramètre formel est une autre désignation du paramètre effectif,


valable pendant la durée de la procédure, il ne lui correspond
aucune variable propre à la procédure : Le paramètre est en
sortie.
108

Paramètres en entrée : transmission par valeur

Dans l’exemple 1, on peut déclarer une nouvelle variable


quest, qui va service d’un variable locale à la procédure.
109

Procédure reponseOuiNon (Quest : chaîne de caractères)


Début
Ecrire Quest
Lire Rep
Tant que (rep # ‘O’) ET (Rep # ‘N’) Faire
Ecrire ‘’répondez par O ou par N’’
Lire Rep
Fin
Début
BonnesReponses 0
reponseOuiNon(‘’peut-on passer au feu rouge?’’)
Si Rep = ’N’ Alors BonnesReponses BonnesReponses + 1
reponseOuiNon(‘’Doit-on marquer un arrêt au STOP?’’)
Si Rep = ’O’ Alors BonnesReponses BonnesReponses + 1
Fin
110

 Le paramètre est écrit entre parenthèses, on le qualifie de paramètre


formel dans la déclaration, de paramètre effectif lors de chaque
appel.

 Lors du premier appel à la procédure, le texte « Peut-on passer au


feu rouge? » est automatiquement affecté au paramètre Quest,

 Il sera remplacé par « doit-on marquer un arrêt au STOP? » lors du


deuxième appel.
111

Paramètre en sortie : transmission par adresse

Exemple :

Nous voulons stocker les réponses successives dans le tableau R de


[1..20] caractères pour permettre un traitement ultérieur.

Début
reponseOuiNon (‘’peut-on passer au feu rouge clignotant?’’)
R[1] Rep
reponseOuiNon(‘’doit-ont marquer un arrêt u STOP’’?)
R[2] Rep

On va créer un second paramètre : la variable effective dans laquelle la


procédure doit lire la réponse. L’algorithme devient :
112

Procédure reponseOuiNon (Quest : chaîne de caractères, Rep :


caractère)

Début
Ecrire Quest
Lire Rep
Tant que (Rep # ‘’O’’) et (Rep # ‘’N’’) Faire
Ecrire ‘’répondez par OUI ou par NON’’
Lire REP
Fin
Début
reponseOuiNon(‘’peut-on passer au feu rouge?’’, R[1])
reponseOuiNon(‘’Doit-on marquer un arrêt au STOP?’’, R[2])
Fin
113

• On ne souhaite pas voir affecter la valeur de R[1] à Rep, mais on


veut au contraire que la valeur finale de Rep se trouve dans R[1],

• Le nom Rep, défini comme paramètre formel de la procédure est un


nom provisoire désignant le paramètre effectif pour la durée de
l’exécution de la procédure.

• R[1] désigne pendant la première exécution et R[2] pendant la


deuxième.
114

• Pour distinguer dans l’écriture, nous choisirons de faire procéder,


chaque nom de paramètre formel de l’indication du type de
transmission, suivant le modèle :

Procédure Deux Paramètres ( ParamètreEnEntrée,


ParamètreEnSortée)

• Les paramètres en Entrée/Sortie, ils sont également transmis par


adresse et notés par la double flèche
115

Les fonctions

• Certains traitements ne peuvent être effectués par un algorithme,


exemple le cas du calcul du sinus d’un angle.

• Tout langage de programmation propose un certain nombre de


fonctions; certains sont indispensables, car elles permettent
d’effectuer des traitements qui seraient sans elles impossibles.
D’autres servent à faciliter la programmation.
116

 Structure générale des fonctions

• Reprenons l’exemple du sinus. Les langages informatiques,


proposent généralement une fonction SIN. Si nous voulons stocker
le sinus de 35 dans la variable A, nous écrirons :

A sin(35)
117

 Une fonction est donc constituée de trois parties :

- Le nom de la fonction.
Le nom d’une fonction commence par une minuscule.
Le nom d’une fonction ne comporte pas d’espace.
Si le nom de la fonction est composé de plusieurs mots, faire
commencer chacun d’eux par une majuscule (par exemple :
sommeDeDeuxEntiers,) et ne pas faire figurer de traits d’union.

- Deux parenthèses, une ouvrante, une fermante.

- Une liste de valeurs, indispensables à la bonne exécution de la


fonction. Ces valeurs s’appellent des arguments, ou des paramètres.
Certaines fonctions exigent un seul argument, d’autres deux… et
d’autres aucun.
118

 L’utilité des fonctions :

• Le code des algorithmes est plus simple, plus clair et plus court.
Dans un algorithme, appeler une fonction se fait en une seule ligne
et la fonction peut être appelée à plusieurs reprises.

• Une seule modification dans la fonction sera automatiquement


répercutée sur tous les algorithmes qui utilisant cette fonction.

• L’utilisation de fonctions génériques dans des algorithmes différents


permet de réutiliser son travail et de gagner du temps.
119

 Les fonctions sont comparables aux procédures :

• Leur appel ne constitue pas à lui seul une instruction, mais figure dans
une expression.

• Leur exécution produit un résultat qui prend la place de la fonction lors


de l’évaluation de l’expression.

• L’instruction retourne,
120

 Trois étapes sont toujours nécessaires à l’exécution d’une fonction :

1. Le programme appelant interrompt son exécution.

2. La fonction appelée effectue son bloc d’instructions. Dès qu’une


instruction retourne est exécutée, la fonction s’arrête.

3. Le programme appelant reprend alors son exécution.


121

 Fonction sans valeur retournée

Ecrire et utiliser une fonction simple qui doit afficher « bonjour ».


Cette fonction ne retourne pas de valeur : ceci est signalé en précisant
qu’elle retourne vide.

Fonction afficheBonjour ( ) : vide

Début
écrire ‘’bonjour’’
retourne ( )
Fin

Une fonction se termine toujours par l’instruction retourne. Cette


fonction effectuera les instructions entre Debut et Fin.
122

L’arrêt de la fonction

• Une fonction s’arrête lorsque son exécution atteint la fin du bloc


d’instructions, ou lorsque l’instruction retourne est exécutée (avec
ou sans valeur).
123

Ecrire un algorithme qui appelle la fonction afficheBonjour ().

Algorithme utilise_fonction

Début
afficheBonjour ()
Fin
124

Exemple :

Ecrire un algorithme qui appelle 10 fois la fonction afficheBonjour ().


125

Fonction avec une valeur retournée

Définition

La valeur de retour

Une fonction peut retourner une valeur au programme appelant. Cette


valeur est unique. Le retour de la valeur signifie l’arrêt de la
fonction.

Exemple :

Ecrire une fonction qui permet de lire une note entre 0 et 20.
126

Fonctions récursives

 Construire la solution d’un problème en utilisant la solution du


même problème dans un contexte différent (plus simple).

 La suite des contextes doit tendre vers une solution directe (cas
terminal).

 Les fonctions récursives sont adaptées à une certaine classe de


problèmes.

Exemple : La factorielle
127
128
129
130
131

Fonction factorielle ( n: entier) entier


Variables résultat : entier

Début

si n 0 alors

résultat 1

sinon

résultat n*factorielle (n-1)

Retourne résultat

Fin fonction
132

• Une fonction récursive valide doit contenir :

au moins un appel à elle-même avec des paramètres différents ;

au moins un cas où elle ne s’appelle pas ;

au moins une conditionnelle pour séparer ces différents cas.


133

• Exemple 2

Calculer la somme des entiers de 1 à N .

Vous aimerez peut-être aussi