Vous êtes sur la page 1sur 81

ALGORITHMIQUE ET PROGRAMMATION

Présenté par

Mr BABELA Audry
Ingénieur Génie Logiciel

Email : audry.babela@senprog.com

Tel : 06 444 08 08 / 05 347 01 01

<date/time> <footer> 1
SOMMAIRE


Chapitre 1 : Introduction à l’algorithmique

Chapitre 2 : Les variables, lecture et écriture

Chapitre 3 : Les structures de contrôle et les boucles

Chapitre 4 : Tableaux et procédures de programmation

Chapitre 1 : Introduction à l’algorithmique
1. 1 .1 Définitions:

Un algorithme est une procédure de calcul bien définie qui prend en entrée un
ensemble de valeurs et qui délivre en sortie un ensemble de valeurs

Un algorithme est une suite d’instructions qui une fois exécutée correctement
conduit a la résolution d’un problème en un nombre fini d’étapes,

A partir de données d’entrées de l’algorithme, on va donc parvenir à un résultat qui


est la sortie.

Un algorithme doit contenir uniquement des instructions compréhensibles par celui


qui devra l’exécuter

Chapitre 1 : Introduction à l’algorithmique
Les langages de programmations y'en a des centaines, certains sont très connus et
largement utilisé au milieu des programmeurs (comme C, C++, Java, Python...), et
d'autres sont moins connus car ils sont trop spécifiques à un domaine en particulier, voire
même qu'il sont créés et utilisés uniquement au sein d'une entreprise afin de répondre à la
spécificité de ses problèmes. Alors, qui dit beaucoup de langages dit autant de syntaxes.
En effet, chaque langage a ses propres caractéristiques, entre autres il y a sa syntaxe.
Bien entendu, certains langages de programmation ont parfois des syntaxes proches vu
qu'ils sont généralement inspirés les uns des autres. En tout cas, bien qu'il y a autant de
syntaxes, tous les programmes créés à l'aide de ces langages partagent un même point
commun, il s'agit de la logique de la programmation. Cette logique est tout simplement
l'algorithme. Par conséquent, un algorithme est indépendant de tout langage de
programmation, et en plus, il n'est pas destiné à être exécuté sur l'ordinateur comme c'est
le cas d'un programme.

Chapitre 1 : Introduction à l’algorithmique
1. 1 .2 Algorithmes d’optimisation: principe et qualité

En programmation informatique, l'optimisation de code est la pratique consistant


à améliorer l'efficacité du code informatique d'un programme ou d'une librairie
logicielle. Ces améliorations permettent généralement au programme résultant
de s'exécuter plus rapidement, de prendre moins de place en mémoire, de
limiter sa consommation de ressources (par exemple les fichiers), ou de
consommer moins d'énergie électrique.

Chapitre 1 : Introduction à l’algorithmique
1. 1 .2 Algorithmes d’optimisation: principe et qualité

Pratique de l'optimisation :
Pour suivre l’efficacité d’une optimisation, le développeur s’appuie sur des tests
de performance, c’est-à-dire sur des mesures objectives du temps de traitement
et de la taille de la mémoire allouée.

La réduction de la taille des données résidentes en mémoire est complexe


puisque la libération d’une zone de mémoire permet rarement de rendre la
mémoire disponible pour le système d’exploitation

Chapitre 1 : Introduction à l’algorithmique
1. 1 .2 Algorithmes d’optimisation: principe et qualité
Localisation du code à optimiser :
Pour évaluer le temps et la mémoire nécessaire pour chaque partie du programme, les
développeurs réalisent le profilage du code. Il n'est pas rare qu’une grande partie du
temps soit consacré à l'exécution d’un petit morceau du code, ce morceau de code est
appelé « goulot d’étranglement ».

Le logiciel de profilage est chargé de compter le nombre d’exécutions de chaque


fonction et de cycles du microprocesseur correspondants au cours de l'exécution

Chapitre 1 : Introduction à l’algorithmique
1. 1 .2 Algorithmes d’optimisation: principe et qualité
Différentes approches d’optimisation :
Plusieurs approches existent pour optimiser un code :

au niveau algorithmique, en choisissant un algorithme de complexité mathématique
inférieure et des structures de données adaptées ;

au niveau du langage de développement, en ordonnant au mieux les instructions et
en utilisant les bibliothèques disponibles ;

en utilisant localement un langage de bas niveau, qui peut être le langage C ou, pour
les besoins les plus critiques, le langage assembleur.

Chapitre 1 : Introduction à l’algorithmique
1. 1 .3 Écriture:

Chapitre 1 : Introduction à l’algorithmique
1 .4 Bases décimale et binaire:
Nous utilisons le système décimal (base 10) dans nos activités quotidiennes. Ce
système est basé sur une logique à dix symboles, de 0 à 9, avec une unité
supérieure (dizaine, centaine, etc.) à chaque fois que dix unités sont
comptabilisées. C'est un système positionnel, c'est-à-dire que l'endroit où se trouve
le symbole définit sa valeur. Ainsi, le 2 de 523 n'a pas la même valeur que le 2 de
132. En fait 523 est l'abréviation de 5*100+2*10+3.

De cette manière, le nombre 56 = 50 + 6 mais que l'on peut aussi écrire 56 = 5×101
+ 6×100
Rappel :
a0 = 1
a1 = a
a2 = a*a
an = a*...*a (n facteur)

Chapitre 1 : Introduction à l’algorithmique
1 .4.1 Bases décimale:
On peut selon ce principe imaginer une infinité de systèmes numériques fondés sur
des bases différentes.
En informatique, outre la base 10, on utilise très fréquemment le système binaire
(base 2) puisque la logique booléenne est à la base de l'électronique numérique.
Deux symboles suffisent: 0 et 1.

Cette unité élémentaire ne pouvant prendre que les valeurs 0 et 1 s'appelle un bit
(de l'anglais binary digit).

Une suite de huit bits s'appelle un octet.



Chapitre 1 : Introduction à l’algorithmique
1 .4.1 Le binaire:
Le binaire est le mode de comptage non plus en base 10 mais en base 2. Il est utilisé par les
ordinateurs, car les machines ne peuvent comparer que deux valeurs : des 1 et des 0.

L’on vous avais parlé des rangs (unités, dizaines, centaines…), et bien sachez qu'en binaire
on emploie le mot « bit » (contraction de « binary-digit », signifiant simplement « rang binaire
»). Par exemple, le nombre en base 2 « 10011 » s'étale sur 5 bit.

Là où cela se complique, c'est qu'en binaire chaque rang ne peut prendre que deux valeurs (il
pouvait en prendre dix en décimal).
En binaire, un rang commence à 0 et se termine à 1.

Vous pouvez en comprendre que chaque bit représente une puissance de 2, tout comme
chaque rang en base 10 est une puissance de 10.

Chapitre 1 : Introduction à l’algorithmique
1 .4.1 Le binaire (suite):
Un code binaire représente un texte, des instructions de processeur ou toute autre
donnée utilisant un système à deux symboles.
Le système à deux symboles utilisé est souvent "0" et "1" dans le système de
numération binaire. Le code binaire assigne une combinaison de chiffres binaires,
également appelé bits, à chaque caractère, instruction, etc. Par exemple, une chaîne
binaire de huit bits peut représenter n'importe laquelle des 256 valeurs possibles et,
par conséquent, représenter une grande variété d'éléments différents.

Exemple : casp → 01100011 01100001 01110011 01110000



Chapitre 1 : Introduction à l’algorithmique
1.4.3 Conversion du décimal en binaire:
Méthode 1 : les puissances de 2

Pour y arriver, on doit décomposer notre nombre en puissances de 2. C'est le


même principe que la décomposition en puissances de dix, sauf que l'on ne
décompose pas en milliers, centaines et dizaines, mais en puissances de deux ;
qui sont : 1, 2, 4, 8, 16, 32, 64 …, 512, 1024, etc (une valeur est égale à la
précédente multipliée par 2).

Ainsi, si l'on prend l'exemple du nombre 26, on obtient la décomposition suivante :


26 = 16 + 8 + 2. Il suffit ensuite de remplacer ces nombres par les puissances :

Chapitre 1 : Introduction à l’algorithmique
1.4.3 Conversion du décimal en binaire:
Méthode 1 : les puissances de 2

26= 16 + 8 + 2
26= 1×16 + 1×8 + 1×2
26= 1×24 + 1×23 + 1×21 (on écrit les coefficients sous forme de puissances de 2)
26= 1×24 + 1×23 + 0×22 + 1×21 + 0×20 (on ajoute les puissances de 2 qui manquent)
26= 1×24 + 1×23 + 0×22 + 1×21 + 0×20 (voyez les puissances de 2 qui sont toutes là)
26= 1×24 + 1×23 + 0×22 + 1×21 + 0×20 (en vert : notre nombre en binaire !)

Il est important de ne pas oublier les puissances dont les coefficients sont zéro.Finalement,
pour obtenir le nombre 26 en binaire, il suffit de mettre les coefficients qui sont devant les
puissances de 2 à la suite. On obtient : 11010.
On écrit : (26)dec = (11010)bin

Chapitre 1 : Introduction à l’algorithmique
1.4.3 Conversion du décimal en binaire:
Méthode 2 : les puissances de 2

Pour convertir un nombre décimal en nombre binaire (en


base B = 2), il suffit de faire des divisions entières
successives par 2 jusqu'à ce que le quotient devienne
nul.

Le résultat sera la juxtaposition des restes.

Le bit de poids fort correspondant au reste obtenu à


l'ultime étape de la division.
Exemple : le nombre décimal n= 57(10) correspond au
nombre binaire : 11 1001(2)

Chapitre 1 : Introduction à l’algorithmique
1.4.3 Conversion du décimal en binaire:
Méthode 2 : les puissances de 2 (suite)

La conversion de la partie entière d'un nombre décimal en nombre binaire


consiste en des divisions successives par 2 jusqu'à ce qu'un 0 soit obtenu
comme quotient avec un reste de 1. La méthode débute par la division du
nombre par 2, le reste est reporté comme le bit du poids le plus faible (bit
de rang 0). Le quotient de cette division est, lui aussi, divisé par 2. Le
deuxième reste représente alors le bit de rang 1. Cette procédure est
reprise de la même manière jusqu'à ce que le quotient obtenu soit 0 avec
un reste de 1. L'exemple de la figure 1.7 présente la conversion du
nombre décimal 97 en nombre binaire.

Chapitre 1 : Introduction à l’algorithmique
1. 1 .5 Codage hexadécimale:
Le système hexadécimal est un système de numération positionnel en base 16. Il
utilise ainsi 16 symboles, en général les chiffres arabes pour les dix premiers
chiffres et les lettres A à F pour les six suivants.

Le système hexadécimal est utilisé notamment en électronique numérique et en


informatique car il est particulièrement commode et permet un compromis entre le
code binaire des machines et une base de numération pratique à utiliser pour les
ingénieurs. En effet, chaque chiffre hexadécimal correspond exactement à quatre
chiffres binaires (ou bits), rendant les conversions très simples et fournissant une
écriture plus compacte. L'hexadécimal a été utilisé la première fois en 1956 par les
ingénieurs de l'ordinateur Bendix G-15. (Wikipedia)

Chapitre 1 : Introduction à l’algorithmique
1. 1 .5 Codage hexadécimale:
Hexadécimal Binaire Hexadécimal Binaire
0 0000 8 1000
1 0001 9 1001
2 0010 A 1010
3 0011 B 1011
4 0100 C 1100
5 0101 D 1101
6 0110 E 1110
7 0111 F 1111

Chapitre 1 : Introduction à l’algorithmique
1. 1 .5 Conversion hexadécimale - décimal:
La conversion de binaire en hexadécimal se fait en regroupant les chiffres (les bits) quatre
par quatre, ou inversement en remplaçant chaque chiffre hexadécimal par 4 chiffres
binaires :

Chapitre 1 : Introduction à l’algorithmique
1. 1 .5 Conversion hexadécimale - décimal:
La conversion vers le système décimal est réalisée en effectuant la somme

où n est le nombre de chiffres et hi est la valeur du chiffre hexadécimal à la position i.

Ainsi 15AACF7 se convertit en décimal de la façon suivante

1×166 + 5×165 + 10×164 + 10×163 + 12×162 + 15×161 + 7×160 = 22719735.

La conversion du décimal vers l'hexadécimal se fait par une suite de divisions entières ou bien
en utilisant le binaire comme base intermédiaire.

Chapitre 2 : Les variables, lecture et écriture

1. 2 .1 Constantes et variables: déclaration et type de variables:


On sépare les objets en deux classes : les constantes et les variables.

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

CONST PI=3.14

NOM="PASCAL"

Chapitre 2 : Les variables, lecture et écriture

1. 2 .1 Constantes et variables: déclaration et type de variables:


Les types les plus utilisées sont:

ENTIER: Pour représenter les nombres entiers


Les opérations utilisables sur les entiers sont :
les opérateurs arithmétiques classiques : + (addition), - (soustraction), * (produit)
la division entière, notée ÷ ou DIV : n DIV p donne la partie entière du quotient de
la division entière de n par p
le modulo, (MOD) : n MOD p donne le reste de la division entière de n par p
les opérateurs de comparaison classiques : <, >, =, ...

Chapitre 2 : Les variables, lecture et écriture

1. 2 .1 Constantes et variables: déclaration et type de variables:


Les types les plus utilisées sont:

REEL : Pour représenter les nombres réels.


Les opérations utilisables sur les réels sont :
les opérations arithmétiques classiques : + (addition), - (soustraction), * (produit),
/ (division)
les opérateurs de comparaison classiques : <, >, =, …

Exemples
VAR Classement : ENTIER
Moyenne : REEL

Chapitre 2 : Les variables, lecture et écriture

1. 2 .1 Constantes et variables: déclaration et type de variables:


Type logique

Une variable de type logique (booléen) peut prendre deux valeurs VRAIE ou
FAUSSE.

Exemple :
VAR EXISTE :BOOLEEN
EXISTE <---VRAIE

Les opérations principales les plus utilisées sont :


• Les opérateurs logiques: NON, ET , OU

Chapitre 2 : Les variables, lecture et écriture

1. 2 .1 Constantes et variables: déclaration et type de variables:


Tables de vérité :

Exemple :

VAR A , B , TROUVE :BOOLEEN


TROUVE <--- (A ET B)

• Opérateurs de comparaison : = , ≤ , ≥ , ≠
VAR X,Y :REEL
SUP :BOOLEEN
SUP <--- ( X > Y)

Chapitre 2 : Les variables, lecture et écriture

1. 2 .1 Constantes et variables: déclaration et type de variables:


Type CARACTERE

Il s'agit du domaine constitué des caractères alphabétiques et numériques . Une


variable de ce type ne peut contenir qu'un seul et unique caractère. Les opérations
élémentaires réalisables sont les comparaisons : <, >, =, ...

Exemple :
Var C : CARACTERE
C <- ‘A'

Chapitre 2 : Les variables, lecture et écriture

1. 2 .1 Constantes et variables: déclaration et type de variables:


Type CHAINE DE CARACTERE

Une chaîne de caractère est un objet qui peut contenir plusieurs caractères de manière
ordonnée.

Exemple :
VAR NOM : CHAINE[30] → Chaine de 30 caractères maximum
ADRESSE : CHAINE → Chaine de 128 caractères maximum

Chapitre 2 : Les variables, lecture et écriture

1. 2 .1 Constantes et variables: déclaration et type de variables:


Type énumérés

Un type énuméré est un type permettant de représenter des objets pouvant prendre
leur valeur dans une liste finie et ordonnée de noms.

Exemple :
TYPE SEMAINE=(lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche)
TYPE COULEUR=(rouge, vert, bleu)

Chapitre 2 : Les variables, lecture et écriture

1. 2 .1 Constantes et variables: déclaration et type de variables:


Type intervalles

Un type intervalle est un type dont les objets prennent leur valeur dans une portion de
l'intervalle des valeurs d'un autre type (entier, énuméré ou caractère).

Exemple :
NBRE=0..99
OUVRABLE=lundi..vendredi

Chapitre 2 : Les variables, lecture et écriture
1. 2 .1 Constantes et variables: déclaration et type de variables:
Type structurés

Une structure est un objet contenant un ensemble d'objets de types différents, appelés
champs. Un type doit donc décrire l'ensemble des champs contenus dans ses objets.
Exemple :
STRUCTURE <NOM> STRUCTURE ETUDIANT{ 
{
champ1 : type NOM : CHAINE
champ2 : type NOTE : REEL
....
} Classement :ENTIER
}

Chapitre 2 : Les variables, lecture et écriture
1. 2 .1 Constantes et variables: déclaration et type de variables:
Type pointeur (1/3)

Un pointeur est une adresse mémoire: il permet de désigner directement une zone de
la mémoire et donc l'objet dont la valeur est rangée à cet endroit.
Un pointeur est souvent typé de manière à préciser quel type d'objet il désigne dans la
mémoire.
Un type pointeur est défini par le symbole ^ suivi par le nom du type de l'objet pointé:
VAR P1: ^ENTIER ! ! ! ! ! !
ET1: ^ETUDIANT

Chapitre 2 : Les variables, lecture et écriture
1. 2 .1 Constantes et variables: déclaration et type de variables:
Type pointeur (2/3)

A sa création un pointeur contient une valeur qui ne représente rien (NUL).


Pour désigner l'objet pointé par un pointeur, il suffit d'utiliser l'opérateur ^ après le nom de
l'objet pointeur.
On utilise l'opérateur @ pour obtenir l'adresse d'une variable déjà existante.

Chapitre 2 : Les variables, lecture et écriture
1. 2 .1 Constantes et variables: déclaration et type de variables:
Type pointeur (3/3)

Exemple:
ALGORITHME ESSAI
VAR P :^ENTIER
E : ENTIER
DEBUT
E ← 1 (* E=1*)
P ← @E (* On met dans P l'adresse de E → E est l'objet pointé par P *)
P^ ← 2 (* On met dans l'objet pointé par P la valeur 2 →E=2 *)
FIN

Chapitre 2 : Les variables, lecture et écriture
1. 2 .1 Constantes et variables: déclaration et type de variables:
Actions élémentaires :
les actions élémentaires sont des opérations simples, directement utilisables.

* Affectation
L'affectation permet de donner une valeur à une variable .
A ← 22 « reçoit » Si A avait une valeur auparavant, cette valeur disparaît : elle est écrasé par 22.

Format général :
<id_variable> <expression>
A ← 28+13
A « l'exécution » : l'expression est évaluée (calculée) et sa valeur est rangée dans la variable.

Donc les types <id_variable> et <expression> doivent être compatibles.



Chapitre 2 : Les variables, lecture et écriture
1. 2.1 Lecture et écriture:
Elles permettent de récupérer une valeur venant de l'extérieur (lecture) ou de transmettre une valeur à
l'extérieur (écriture).

Exemple :

Lecture : saisie (entrée) par clavier

Ecriture : Affichage sur écran (Moniteur)

VAR A, B, C : ENTIER VAR A, B : ENTIER


DEBUT DEBUT
LIRE (A, B) LIRE (A, B)
C ← A+B ECRIRE (A+B)
ECRIRE(C) FIN
FIN

Chapitre 3 : Les structures de contrôles et les boucles

3.1 Identifier les structures de contrôles :

Qu'est qu'une structure de contrôle ? Pour faire simple, une structure de contrôle
est un ensemble d'instructions qui permet de contrôler l'exécution du code. Il en
existe essentiellement deux types :

Les structures de contrôle conditionnelles qui permettent d'exécuter


certaines parties du code si une condition spécifique est remplie.
Les structures de contrôle de boucle qui permettent d'exécuter en boucle
certaines parties du code (généralement jusqu'à ce qu'une condition soit
remplie).

Chapitre 3 : Les structures de contrôles et les boucles

1. 3.2 Structures de contrôle conditionnelles

Les structures de contrôle décrivent l’enchaînement des instructions. Elles permettent des traitements
séquentiels, conditionnels ou répétitifs (itératifs).

La plupart des autres structures de contrôle utilise la notion de condition (expression booléenne) :

Une condition a une valeur qui est, soit vraie, soit fausse.

Pour déterminer la réalité de cette valeur on utilise :

 les opérateurs de comparaisons = , ≤ , ≥ , ≠


 les opérateurs booléens (logique) : ET, OU, NON
Chapitre 3 : Les structures de contrôles et les boucles

3.2.1 Structures SI-ALORS
La conditionnelle permet d’exécuter une séquence d’instruction, seulement si une condition est vraie.
La condition est nécessairement une expression booléenne.

Évaluation :
 la condition est évaluée;
 si la condition est vraie, la séquence est exécutée puis le contrôle passe à la suite;
 si la condition est fausse, le contrôle passe à la suite, sans exécuter la séquence.

Syntaxe :

SI <condition>

ALORS < action _alors>

FINSI
Chapitre 3 : Les structures de contrôles et les boucles

3.2.2 Exemple structure SI-ALORS


Écrire un algorithme qui permet de lire un entier et affiche sa valeur lorsqu'il est
positif.

Algorithme: nombre positif


var a: entier

DEBUT
LIRE(a)
SI a>0 alors
ECRIRE(a)
FIN SI
FIN
Chapitre 3 : Les structures de contrôles et les boucles

3.2.3 Structures SI-ALORS-SINON
La conditionnelle Si...Alors...Sinon... permet de poser une alternative. Si la condition est vraie, c’est la
séquence1 qui sera exécutée, sinon c’est la séquence2 qui sera exécutée. Dans tous les cas, l’exécution
continuera à suite.

Syntaxe :

SI <condition>

ALORS < action _alors>

SINON < action _alors>

FINSI
Chapitre 3 : Les structures de contrôles et les boucles

3.2.4 Exemple structure SI-ALORS-SINON


Écrire un algorithme qui lit deux caractères et les affiches dans l'ordre
alphabétique.
Algorithme: ordre_alphabet
var A,B: caractère
DEBUT
lire(A)
lire(B)
si A<B alors
écrire(A,B)
sinon
écrire(B,A)
fin si
FIN
Chapitre 3 : Les structures de contrôles et les boucles

3.2.5 Structure à choix multiples SELON-QUE


La structure SELONQUE permet d'effectuer tel ou tel traitement en fonction de la valeur des conditions
1ou 2 ou ..n .

Syntaxe : Fonctionnement :
1 : la condition 1 est évaluée :
SELONQUE  Si la condition 1 est vraie, alors on exécute l'action correspondante et on
<condition 1> : <action 1> quitte la structure selon-que
<condition 2> : <action 2>  Si la condition 1 est fausse, on évalue la condition 2...et ainsi de suite.
...
<condition n> : <action n> 2.Si aucune n'est vraie on effectue l'action sinon ( au cas où l'action sinon
SINON : <action_sinon> n'existe pas alors aucune action n'est exécutée !).
FINSELONQUE
Chapitre 3 : Les structures de contrôles et les boucles

3.2.6 Exemple structure à choix multiples SELON-QUE


SELONQUE

Note ≥ 16 : ECRIRE (‘'TB'')


NB :
Note ≥ 14 : ECRIRE (‘'B'')
En programmation, cette structure peut exister mais avec une forme
Note ≥ 12 : ECRIRE (‘'AB'') ou un fonctionnement éventuellement différent. Si elle n'existe pas, il
faut se souvenir que, en fait, SELONQUE est un raccourci d'écriture
Note ≥ 10 : ECRIRE (‘'Passable'')
pour des SI imbriqués.
SINON : ECRIRE (‘'ajourné'')

FINSELONQUE
Chapitre 3 : Les structures de contrôles et les boucles

1. 3.3 Structures de contrôle répétitives (boucles)


3.3.1 Définition :
Une boucle est une structure de contrôle destinée à exécuter une portion de code plusieurs
fois de suite, tant qu'une condition de continuation est remplie ou, selon les boucles, qu'une
condition de sortie n'est pas remplie.

Normalement, une boucle s'exécute selon le cas, soit un nombre de fois connu à l'avance,
soit jusqu'à ce qu'une condition permette de sortir de la boucle. Il arrive toutefois qu'une
erreur de programmation fasse que la condition ne devienne jamais vraie. Le programme
s'exécute alors indéfiniment à l'intérieur de cette boucle infinie.
Chapitre 3 : Les structures de contrôles et les boucles

1. 3.3 Structures de contrôle répétitives (boucles)


3.3.2 Type de boucle :

On distingue:

La boucle "POUR"


La boucle "TANT QUE"


La boucle "RÉPÉTER"
Chapitre 3 : Les structures de contrôles et les boucles

1. 3.3 Structures de contrôle répétitives (boucles)


3.3.3 La boucle "POUR" :

On utilise la boucle "pour" lorsqu'on connaît d'avance le nombre d'itération à


effectuer, c'est-à-dire lorsqu'on connaît le nombre de fois qu'on doit exécuter une
action.
Syntaxe :
POUR compteur = N à M faire [pas]
action
FIN POUR
Les actions peuvent être simples ou composées.
Chapitre 3 : Les structures de contrôles et les boucles

1. 3.3 Structures de contrôle répétitives (boucles)


3.3.3 La boucle "POUR" :
Sémantique
Compteur est un objet intermédiaire de type entier, il a pour
Syntaxe : première valeur N. M est la valeur finale de compteur.
POUR compteur = N à M faire [pas] pas est un objet intermédiaire de type entier, c'est un objet
action optionnel qui a pour valeur par défaut "1", et dans ce cas on ne le
FIN POUR
précise pas.
Les actions peuvent être simples ou
composées. action peut être soit une instruction, soit un ensemble d'instruction,
soit une structure de contrôle.
Chapitre 3 : Les structures de contrôles et les boucles

1. 3.3 Structures de contrôle répétitives (boucles)


3.3.3 La boucle "POUR" exemple 1  :

Écrire un algorithme qui permet de lire 5 notes.

Algorithme: lecture_notes
var note: réel
i: entier
DEBUT
POUR i=1 à 5 faire
LIRE(note)
FIN POUR
FIN
Chapitre 3 : Les structures de contrôles et les boucles

3.3.3 La boucle "POUR" exemple 2  :


Ecrire un algorithme qui calcul xn où x est différent de 0 et n supérieur ou égale à 0.

Algorithme: puissance
var p, x: réel
i, n: entier
DEBUT
lire(x)
lire(n)
p←1
POUR i=1 à n FAIRE
p←x**p
FIN POUR
écrire(p)
FIN
Chapitre 3 : Les structures de contrôles et les boucles

EXERCICES
BOUCLE POUR Ecrire l'algorithme permettant d'afficher la table de multiplication par 9.

Algorithme simple: L'équivalent avec la boucle POUR:


ALGORITHME TABLE_MULTI
ALGORITHME TABLE_MULTI
DEBUT
ECRIRE(1*9) VAR i : ENTIER
ECRIRE(2*9)
DEBUT
ECRIRE(3*9)
ECRIRE(4*9) POUR i DE 1 A 10 FAIRE
ECRIRE(5*9)
ECRIRE(i*9)
ECRIRE(6*9)
ECRIRE(7*9) FINPOUR
ECRIRE(8*9)
FIN
ECRIRE(9*9)
ECRIRE(10*9)
FIN
Chapitre 3 : Les structures de contrôles et les boucles

3.3.4 La boucle "TANT QUE" :

On utilise la boucle "tant que" lorsqu'on ne connaît pas d'avance le nombre de


répétition à effectuer. Mais on connaît une condition d'arrêt.
Syntaxe : Sémantique
TANT QUE condition FAIRE condition est un booléen
action action peut être une instruction, soit un ensemble d'instruction, soit
FIN TANT QUE une structure de contrôle.

Fonctionnement
On exécute "action" tant que la condition est vraie, on arrête l'exécution lorsque la condition devient
fausse. Si initialement la condition est fausse on n'exécute pas action.
Chapitre 3 : Les structures de contrôles et les boucles

1. 2.3 Structures de contrôle répétitives


2.3.5: EXERCICES

BOUCLE TANTQUE_REPETER

Écrire un nombre positif tant que sa valeur est inférieure ou égale à 0

BOUCLE TANTQUE BOUCLE REPERTER


VAR val ← -1 : ENTIER REPETER
TANTQUE (val <=0)
FAIRE ECRIRE (‘’Entrez un nombre positif’’)
ECRIRE(‘’ Entrez un nombre positif’’) LIRE(val)
LIRE(‘’val’’) JUSQU’A (val>0)
FINTANTQUE
Chapitre 4 : Tableaux et procédure de programmation

1. Définition :
Un ensemble de valeurs portant le même nom de variable et repérées par un nombre, s’appelle un
tableau, ou encore une variable indicée.
Le nombre qui, au sein d’un tableau, sert à repérer chaque valeur s’appelle l’indice.
Chaque fois que l’on doit désigner un élément du tableau, on fait figurer le nom du tableau, suivi de
l’indice de l’élément, entre parenthèses.

Syntaxe:
nom_tableau : TABLEAU[min_indice..max_indice] EN <type_predefini>;
 ce qui signifie que les éléments ont pour type le type_predefini
 les indices des éléments vont de min_indice à max_indice,
 avec min_indice < max_indice,

NB: on peut déclarer un tableau de N valeurs comme ceci: nom_tableau: TABLEAU[ N ] DE <type_predefini>
Chapitre 4 : Tableaux et procédure de programmation

1. 4.1 Importance des tableaux:


Imaginons que dans un programme, nous ayons besoin simultanément de 12 valeurs (par exemple, des
notes pour calculer une moyenne). Evidemment, la seule solution dont nous disposons à l’heure
actuelle consiste à déclarer douze variables, appelées par exemple Notea, Noteb, Notec, etc. Bien sûr,
on peut opter pour une notation un peu simplifiée, par exemple N1, N2, N3, etc. Mais cela ne change
pas fondamentalement notre problème, car arrivé au calcul, et après une succession de douze
instructions « Lire » distinctes, cela donnera obligatoirement une atrocité du genre :

Moy ← (N1+N2+N3+N4+N5+N6+N7+N8+N9+N10+N11+N12)/12

C’est tout de même bigrement laborieux. Et pour un peu que nous soyons dans un programme de
gestion avec quelques centaines ou quelques milliers de valeurs à traiter, alors là c’est le suicide direct.
Chapitre 4 : Tableaux et procédure de programmation

1. 4.1 Importance des tableaux:

C’est pourquoi la programmation nous permet de rassembler toutes ces variables en une seule, au sein
de laquelle chaque valeur sera désignée par un numéro. Cela donnerait donc quelque chose du genre
« la note numéro 1 », « la note numéro 2 », « la note numéro 8 ». C’est largement plus pratique.
Chapitre 4 : Tableaux et procédure de programmation

4.2. Notation et utilisation algorithmique


Dans notre exemple, nous créerons donc un tableau appelé Note. Chaque note individuelle (chaque
élément du tableau Note) sera donc désignée Note(0), Note(1), etc. Eh oui, attention, les indices des
tableaux commencent généralement à 0, et non à 1.

Un tableau doit être déclaré comme tel, en précisant le nombre et le type de valeurs qu’il contiendra (la
déclaration des tableaux est susceptible de varier d'un langage à l'autre. Certains langages réclament le
nombre d'éléments, d'autre le plus grand indice... C'est donc une affaire de conventions).
En nous calquant sur les choix les plus fréquents dans les langages de programmations, nous
déciderons ici arbitrairement et une bonne fois pour toutes que :
Chapitre 4 : Tableaux et procédure de programmation

4.2. Notation et utilisation algorithmique


 les "cases" sont numérotées à partir de zéro, autrement dit que le plus petit indice est zéro.
 lors de la déclaration d'un tableau, on précise la plus grande valeur de l'indice (différente, donc, du
nombre de cases du tableau, puisque si on veut 12 emplacements, le plus grand indice sera 11). Au
début, ça déroute, mais vous verrez, avec le temps, on se fait à tout, même au pire.

 Tableau Note(11) en Entier

 On peut créer des tableaux contenant des variables de tous types : tableaux de numériques, bien sûr,
mais aussi tableaux de caractères, tableaux de booléens, tableaux de tout ce qui existe dans un
langage donné comme type de variables. Par contre, hormis dans quelques rares langages, on ne
peut pas faire un mixage de types différents de valeurs au sein d’un même tableau.
Chapitre 4 : Tableaux et procédure de programmation

4.2. Notation et utilisation algorithmique


Tableau Note(11) en ENTIER
Var Moy, Som en ENTIER
L’énorme avantage des tableaux, c’est qu’on va pouvoir
Début
les traiter en faisant des boucles. Par exemple, pour Pour i ← 0 à 11
effectuer notre calcul de moyenne, cela donnera par Ecrire "Entrez la note n°", i
exemple : Lire Note(i)
i Suivant
Som ← 0
Pour i ← 0 à 11
Som ← Som + Note(i)
i Suivant
Moy ← Som / 12
Fin
Chapitre 4 : Tableaux et procédure de programmation

4.2. Notation et utilisation algorithmique


NB : On a fait deux boucles successives pour plus de lisibilité, mais on aurait tout aussi bien pu n’en écrire qu’une
seule dans laquelle on aurait tout fait d’un seul coup.

Remarque générale : l’indice qui sert à désigner les éléments d’un tableau peut être exprimé directement comme un
nombre en clair, mais il peut être aussi une variable, ou une expression calculée.
Dans un tableau, la valeur d’un indice doit toujours :

être égale au moins à 0 (dans quelques rares langages, le premier élément d’un tableau porte l’indice 1). Mais
comme je l'ai déjà écrit plus haut, nous avons choisi ici de commencer la numérotation des indices à zéro, comme
c’est le cas en langage C et en Visual Basic. Donc attention, Truc(6) est le septième élément du tableau Truc !

être un nombre entier Quel que soit le langage, l’élément Truc(3,1416) n’existe jamais.

être inférieure ou égale au nombre d’éléments du tableau (moins 1, si l’on commence la numérotation à zéro). Si
le tableau Bidule a été déclaré comme ayant 25 éléments, la présence dans une ligne, sous une forme ou sous une
autre, de Bidule(32) déclenchera automatiquement une erreur.
Chapitre 4 : Tableaux et procédure de programmation

4.2. Notation et utilisation algorithmique


.

Evitez de confondre dans un algorithme, l’indice d’un élément d’un tableau avec


le contenu de cet élément. La troisième maison de la rue n’a pas forcément trois habitants,
et la vingtième vingt habitants. En notation algorithmique, il n’y a aucun rapport entre i et
truc(i).
Chapitre 4 : Tableaux et procédure de programmation

4.3. Tableaux dynamiques


.
Il arrive fréquemment que l’on ne connaisse pas à l’avance le nombre d’éléments que devra
comporter un tableau. Bien sûr, une solution consisterait à déclarer un tableau gigantesque
(10 000 éléments) pour être sûr qu’il y a suffisamment de place pour contenir tous les
éléments Mais d’une part, on n’en sera jamais parfaitement sûr, d’autre part, en raison de
l’immensité de la place mémoire réservée – et la plupart du temps non utilisée, c’est un
gâchis préjudiciable à la rapidité, voire à la viabilité, de notre algorithme..

Aussi, pour parer à ce genre de situation, a-t-on la possibilité de déclarer le tableau sans
préciser au départ son nombre d’éléments. Ce n’est que dans un second temps, au cours du
programme, que l’on va fixer ce nombre via une instruction de redimensionnement : Redim.
Chapitre 4 : Tableaux et procédure de programmation

4.3. Tableaux dynamiques


.Notez que tant qu’on n’a pas précisé le nombre d’éléments d’un tableau, d’une manière ou d’une autre,

ce tableau est inutilisable.

Exemple : on veut faire saisir des notes pour un calcul de moyenne, mais on ne sait pas combien il y
aura de notes à saisir.
Tableau Notes() en Numérique
Variable nb en Numérique
Début
Ecrire "Combien y a-t-il de notes à saisir ?"
Lire nb
Redim Notes(nb-1)
Fin
Chapitre 4 : Tableaux et procédure de programmation

4.3. Tableaux dynamiques (Exercices)


.Que produit l’algorithme suivant ?

Tableau Nb(5) en Entier


Variable i en Entier Peut-on simplifier cet algorithme avec
Début le même résultat ?
Pour i ← 0 à 5
Nb(i) ← i * i
i suivant
Pour i ← 0 à 5
Ecrire Nb(i)
i suivant
Fin
Chapitre 4 : Tableaux et procédure de programmation

4.3. Tableaux dynamiques (Exercices)


. Que produit l’algorithme suivant ?

Tableau Suite(7) en Entier


Variable i en Entier
Début
Suite(0) ← 1
Suite(1) ← 1
Pour i ← 2 à 7
Suite(i) ← Suite(i-1) + Suite(i-2)
i suivant
Pour i ← 0 à 7
Ecrire Suite(i)
i suivant
Fin
Chapitre 4 : Tableaux et procédure de programmation

4.3. Tableaux dynamiques (Exercices)


Écrivez un algorithme permettant, toujours sur le même principe, à l’utilisateur de saisir un nombre
.
déterminé de valeurs. Le programme, une fois la saisie terminée, renvoie la plus grande valeur en
précisant quelle position elle occupe dans le tableau. On prendra soin d’effectuer la saisie dans un
premier temps, et la recherche de la plus grande valeur du tableau dans un second temps.
Chapitre 4 : Tableaux et procédure de programmation

4.4. Tri d’un tableaux :


Il existe plusieurs stratégies possibles pour trier les éléments d’un tableau ; parmis lequel le tri par
.
sélection et le tri à bulles.

TRI PAR SÉLECTION :


Admettons que le but de la manœuvre soit de trier un tableau de 12 éléments dans l’ordre croissant. La
technique du tri par sélection est la suivante : on met en bonne position l’élément numéro 1, c’est-à-dire
le plus petit. Puis en met en bonne position l’élément suivant. Et ainsi de suite jusqu’au dernier. Par
exemple, si l’on part de :
45 122 11 3 24 67 89 28 86 46
Chapitre 4 : Tableaux et procédure de programmation

4.4. Tri d’un tableaux :


On commence par rechercher, parmi les 10 valeurs, quel est le plus petit élément , et où il se trouve. On
.
l’identifie en quatrième position (c’est le nombre 3), et on l’échange alors avec le premier élément (le
nombre 45). Le tableau devient ainsi :

3 122 11 45 24 67 89 28 86 46

On recommence à chercher le plus petit élément, mais cette fois, seulement à partir du deuxième
(puisque le premier est maintenant correct, on n’y touche plus). On le trouve en troisième position
(c’est le nombre 11). On échange donc le deuxième avec le troisième :
3 11 112 45 24 67 89 28 86 46
Chapitre 4 : Tableaux et procédure de programmation

4.3. Tableaux dynamique :


Nous pourrions décrire le processus de la manière suivante :
.
 Boucle principale : prenons comme point de départ le premier élément, puis le second, etc, jusqu’à
l’avant dernier.
 Boucle secondaire : à partir de ce point de départ mouvant, recherchons jusqu’à la fin du tableau quel
et le plus petit élément. Une fois que nous l’avons trouvé, nous l’échangeons avec le point de départ.
Chapitre 4 : Tableaux et procédure de programmation

4.3. Tableaux dynamiques (Exercices)


Pour i ← 0 à 10
.//on considère provisoirement que t(i) est le plus petit élément
posmini ← i
Pour j ← i + 1 à 11
Si t(j) < t(posmini) Alors
posmini ← j
Finsi
j suivant
// A cet endroit, on sait maintenant où est le plus petit élément. Il ne reste plus qu'à effectuer la permutation.
temp ← t(posmini)
t(posmini) ← t(i)
t(i) ← temp
//On a placé correctement l'élément numéro i, on passe à présent au suivant.
i suivant
Chapitre 4 : Tableaux et procédure de programmation

4.3. Tableaux dynamiques


Tri à bulles
.
L’idée de départ du tri à bulles consiste à se dire qu’un tableau trié en ordre croissant, c’est un tableau
dans lequel tout élément est plus petit que celui qui le suit. Cette constatation percutante semble digne
de M. de Lapalisse, un ancien voisin à moi. Mais elle est plus profonde – et plus utile - qu’elle n’en a
l’air.
En effet, prenons chaque élément d’un tableau, et comparons-le avec l’élément qui le suit. Si l’ordre
n’est pas bon, on permute ces deux éléments. Et on recommence jusqu’à ce que l’on n’ait plus aucune
permutation à effectuer. Les éléments les plus grands « remontent » ainsi peu à peu vers les dernières
places, ce qui explique la charmante dénomination de « tri à bulle ».
Chapitre 4 : Tableaux et procédure de programmation

4.3. Tableaux dynamiques Variable Yapermute en Booléen


Variable Yapermute en Booléen Début
.
Yapermut ← Vrai
TantQue Yapermut
Yapermut ← Faux
Pour i ← 0 à 10
Si t(i) > t(i+1) alors
temp ← t(i)
t(i) ← t(i+1)
t(i+1) ← temp
Yapermut ← Vrai
Finsi
i suivant
FinTantQue
Chapitre 4 : Tableaux et procédure de programmation

4.4. Procédure et Programmation


Voir document annexe
.
Initiation à l’algorithmique – Chapitre 4

Chapitre 4 : Procédures et fonctions


Dès qu’on commence à écrire des programmes importants, il devient difficile d’avoir une vision globale sur son
fonctionnement et de traquer les erreurs
Exemple: Il nous est demandé d’écrire un algorithme qui calcul la partie entière de deux nombres réels puis
d’afficher la plus grande valeur des deux avant de calculer la somme et la moyenne des deux nombres entiers
obtenus.
• Que faire ? décomposer le problème en sous problèmes et trouver une solution à chacun puis regrouper
le tout dans un seul algorithme

En Algorithmique, chaque solution partielle donne lieu à un sous-algorithme qui fera partie d’un algorithme
complet pour pouvoir être exécuté.

1- Définitions

Un sous-algorithme est un bloc faisant partie d’un algorithme. Il est déclaré dans la partie entête (avant le début
de l’algorithme) puis appelé dans le corps de l’algorithme.
Étant donné qu’il s’agit d’un bloc à part entière, il possède éventuellement un en-tête, une série de traitements,
et une gestion des résultats tout comme l’algorithme qui le contient.

Notes :
a- Un sous-algorithme utilise les variables déclarées dans l’algorithme (appelées variables globales). Il peut
aussi avoir ses propres variables (dites locales) déclarées dans l’espace qui lui est réservé ; mais qui ne peuvent
être utilisées que dans ce sous-algorithme et nulle part ailleurs car sa portée (visibilité) est limitée au bloc qui la
contient. L’espace de ces variables locales n’est réservé que lorsque le sous-algorithme est appelé et est libéré
dès la fin de l’exécution.
b- Un sous-algorithme est déclaré de manière générale c.-à-d qu’il peut être appelé plusieurs fois avec
différentes valeurs grâce à des arguments. Ces derniers, bien qu’ils soient facultatifs, sont dits paramètres et
sont clairement déclarés, au besoin, dans l’entête du sous-algorithme.
Un paramètre est une valeur du bloc principal dont le sous-algorithme a besoin pour exécuter avec des données
réelles l’enchaînement d’actions qu’il est chargé d’effectuer. On distingue deux types de paramètres :
- Les paramètres formels sont la définition du nombre et du type de valeurs que devra recevoir le sous-
algorithme pour se mettre en route avec succès. On déclare les paramètres formels pendant la
déclaration du sous-algorithme.

1
Initiation à l’algorithmique – Chapitre 4-

- Les paramètres effectifs sont des valeurs réelles (constantes ou variables) reçues par le sous-algorithme
au cours de l’exécution du bloc principal. On les définit indépendamment à chaque appel du sous-
algorithme dans l’algorithme principal.

c- L’exécution d’un sous-algorithme (procédure ou fonction) se fait par une instruction d’appel (voir sections
suivantes). L’application de cette instruction génère un saut vers le sous-algorithme appelé. La terminaison de
ce sous-algorithme redémarre la suite d’instruction interrompue par l’appel.

2- Types de sous-algorithme

Un sous-algorithme peut se présenter sous forme de fonction ou de procédure.


Une fonction est un sous-algorithme qui, à partir de donnée(s), calcul et rend à l’algorithme Un et Un seul
résultat alors qu’en général, une procédure affiche le(s) résultat(s) demandé(s).

2-1 Procédure

Une procédure est un bloc d’instructions nommé et déclaré dans l’entête de l’algorithme et appelé dans son
corps à chaque fois que le programmeur en a besoin.

Déclaration d’une procédure :

Procédure Nom_Procédure (Nom_Paramètre : Type_praramètre;……) ;


Déclaration
Nom_variable : Type_variable ; Variables locales

Début

Instructions ; Corps de la procédure

Fin ;

L’appel d’une procédure peut être effectué en spécifiant, au moment souhaité, son nom et éventuellement ses
paramètres ; cela déclenche l’exécution des instructions de la procédure.

Exemple : Voici un algorithme utilisant une procédure qui calcule une somme de 100 nombres.

2
Initiation à l’algorithmique – Chapitre 4-

Algorithme essai;

Variable

I, S : entier;

Procedure Somme ;

Debut /*Début de la Procédure*/

S 0 ;

Pour I  1 a 100 Faire

SS+i

FinPour ;

Ecrire ('La somme des 100 premiers nombres est', S) ;

Fin /*Fin de la Procédure*/

Debut /*Début de l’algorithme*/

Somme

Fin. /*Fin de l’algorithme*/

2-2 Fonction

Une fonction est un bloc d’instructions qui retourne obligatoirement une et une seule valeur résultat à
l’algorithme appelant. Une fonction n’affiche jamais la réponse à l’écran car elle la renvoie simplement à
l’algorithme appelant.

Déclaration d’une fonction :


Fonction Nom_Fonction (Nom_Paramètre : Type_praramètre;……) : type_Fonction ;
Déclaration
Nom_variable : Type_variable ; Variables locales

Début

Instructions ; Corps de la procédure

Nom_Fonction  Résultat
Fin ;

Etant donné qu’une fonction a pour but principal de renvoyer une valeur, il est donc nécessaire de préciser le
type de la fonction qui est en réalité le type de cette valeur.

3
Initiation à l’algorithmique – Chapitre 4

Un appel de fonction est une expression d’affectation de manière à ce que le résultat soit récupéré dans une
variable globale : Nom_variable-globale  Nom_Fonction (paramètres) ;
Exemple : L’algorithme précédent, qui calcule une somme de N nombres, peut utiliser une fonction au lieu
d’une procédure.

Algorithme essai;

Variable

I, Som : entier;

Fonction Somme: entier ;

Variable

S : entier ;

Debut /*Début de la fonction*/

S 0 ;

Pour I  1 a 100 Faire

SS+I

FinPour ;

Somme  S

Fin /*Fin de la Fonction */

Debut /*Début de l’algorithme*/

Som  Somme ;

Ecrire ('La somme des ', N, 'premiers nombres est', Som) ;

Fin. /*Fin de l’algorithme*/

Note : De même qu’une procédure, une fonction peut appeler d’autres sous-algorithmes à condition qu’ils
soient définis avant elle ou qu’ils soient déclarés dans son entête.

3- Mode de passages de paramètres

Un sous-algorithme avec paramètres est très utile parce qu’il permet de répéter une série d’opérations
complexes pour des valeurs qu’on ne connaît pas à l’avance. Il existe deux types de passage de paramètres : par
valeur et par variable (dite aussi par référence ou encore par adresse).

4
Initiation à l’algorithmique – Chapitre 4

3-1 Passage paramètres par valeur


C’est le mode de transmission par défaut, il y a copie de la valeur, des paramètres effectifs dans les variables
locales issues des paramètres formels de la procédure ou de la fonction appelée.
Dans ce mode, le contenu des paramètres effectifs ne peut pas être modifié par les instructions de la fonction ou
de la procédure ; car nous ne travaillons pas directement avec la variable, mais sur une copie. À la fin de
l’exécution du sous-algorithme la variable conservera sa valeur initiale. Les paramètres dans ce cas sont utilisés
comme données.
Syntaxe :

Procedure nom_procédure (param1 :type1 ; param2, param3 :type2) ;


Fonction <nom_fonction> (param1 :type1 ; param2 :type2) : Type_fonction ;

Exemple :
Soit l’algorithme suivant.
Algorithme pas-val ;

Déclaration

M : entier ;

Procedure P1 (nombre : entier) ;

Debut

Si nombre < 0 Alors

nombre  - nombre

FinSi ;

Ecrire (nombre)

Fin ;

Debut

Lire (M) ;

P1 (M) ;

Ecrire (M)

Fin.

Exécutons cet algorithme pour la valeur (-6)


Avant l’appel de procédure : la seule variable déclarée est la variable globale (M)
M Ecran
-6

5
Initiation à l’algorithmique – Chapitre 4

Après l’appel de procédure : la variable-paramètre "nombre" est déclarée et reçoit en copie la valeur de M.
M Nombre Ecran
-6 -6
-6 6
-6 6 6

Au retour à l’algorithme (au niveau de l’appel) il ne reste que la variable globale avec sa valeur initiale
M Ecran
-6
-6 -6
3-2 Passage paramètres par variable
Ici, il s’agit non plus d’utiliser simplement la valeur de la variable, mais également son emplacement dans la
mémoire (d’où l’expression « par adresse »). En fait, le paramètre formel se substitue au paramètre effectif
durant le temps d’exécution du sous-programme et à la sortie il lui transmet sa nouvelle valeur.
Un tel passage de paramètre se fait par l’utilisation du mot-clé Var.

Syntaxe :
Procedure nom_procédure (Var param1 :type1, param2, param3 :type2) ;
Fonction <nom_fonction> (Var param1 : type1, param2 :type2) : Type_fonction ;

Note : Les paramètres passés par valeur et par adresse peuvent cohabiter à l’intérieur d’un même sous-
algorithme. Il suffit de partager les deux types de passage par un (;).

Syntaxe :
Procedure nom_procédure (Var param1 :type1 ; param2, param3 :type2) ;
Dans ce cas param1 est passé par référence alors que les deux autres ont par valeur

Fonction <nom_fonction> (param1 :type1 ; Var param2 :type2) : Type_fonction ;


Dans ce cas param1 est passé par valeur alors que le deuxième est passé par valeur

Exemple :
Soit l’algorithme précédent modifié dans le type de passage de paramètre
Initiation à l’algorithmique – Chapitre 4

Algorithme pas-val ;
Déclaration
M : entier ;
Procedure P1 (Var nombre : entier) ;
Debut
Si nombre < 0 Alors
nombre  - nombre
FinSi ;
Ecrire (nombre)
Fin ;
Debut
Lire (M) ;
P1 (M) ;
Ecrire (M)
Fin.

Exécutons cet algorithme toujours pour la valeur (-6)


Avant l’appel de procédure : la seule variable déclarée est la variable globale (M)
M Ecran
-6

Après l’appel de procédure : la variable-paramètre nombre se substitue à la variable M


(M) Ecran
nombre
-6
6
6 6
Au retour à l’algorithme il ne reste que la variable globale avec sa nouvelle valeur.
M Ecran
6
6 6
4- Exemples

Exemple 1 :
Un algorithme qui calcule et affiche la valeur absolue d’une valeur en utilisant une fonction

7
Initiation à l’algorithmique – Chapitre 4

Algorithme exemple1 ;
Declaration
a, b : Entier ;
Fonction abs (unEntier : Entier) : Entier ;
Declaration
valeurAbsolue : Entier ;
Debut
si unEntier ≥ 0 alors
valeurAbsolue  unEntier
sinon
valeurAbsolue  - unEntier
finsi ;
abs valeurAbsolue
fin ;
Debut
Ecrire ('Entrez un entier : ') ;
Lire (a) ;
b  abs (a) ;
Ecrire ('la valeur absolue de ', a, ' est ', b)
Fin.
Lors de l’exécution de la fonction abs, la variable a et le paramètre unEntier sont associés par un passage de
paramètre en entrée : La valeur de a est copiée dans unEntier.

Exemple 2 :
Il est demandé d’écrire un algorithme qui demande à l’utilisateur d’entrer une valeur entière positive appelée
(Valeur) puis

a. qui indique à l’utilisateur si Valeur est un nombre à 2 chiffres,

b. qui affiche la factorielle de Valeur,

c. et qui saisit des valeurs au nombre de Valeur puis affiche la plus grande valeur saisie.

C’est à vous de jouer sur ce coup !

Vous aimerez peut-être aussi