0% ont trouvé ce document utile (0 vote)
33 vues49 pages

Cours D'algorithmiques

Ce document présente les bases de l'algorithmique pour les étudiants de première année, en détaillant les étapes de résolution d'un problème à l'aide d'exemples pratiques. Il aborde également la structure des algorithmes, les types de données, les actions élémentaires et composées, ainsi que la transition d'un problème à un programme. Enfin, il souligne l'importance de la réflexion humaine dans la conception d'algorithmes et l'utilisation de langages de programmation pour leur mise en œuvre.

Transféré par

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

Cours D'algorithmiques

Ce document présente les bases de l'algorithmique pour les étudiants de première année, en détaillant les étapes de résolution d'un problème à l'aide d'exemples pratiques. Il aborde également la structure des algorithmes, les types de données, les actions élémentaires et composées, ainsi que la transition d'un problème à un programme. Enfin, il souligne l'importance de la réflexion humaine dans la conception d'algorithmes et l'utilisation de langages de programmation pour leur mise en œuvre.

Transféré par

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

Ecole Supérieure des Sciences Appliquées Alger

Cours d’algorithmique 1ere Année

Chapitre I :
METHODE INFORMATIQUE DE RESOLUTION D’UN PROBLEME

I. Exemples introductifs :

Enoncé 1 : Le calcul de la moyenne de 3 nombres à l'aide d'une calculatrice :

1. Allumer la calculatrice.
2. Taper le premier nombre.
3. Appuyer sur la touche + (plus).
4. Taper le deuxième nombre.
5. Appuyer sur la touche + (plus).
6. Taper le troisième nombre.
7. Appuyer sur la touche = (égal).
8. Appuyer sur la touche / (diviser).
9. Taper 3.
10. Appuyer sur la touche = (égal).

Enoncé 2 : Trouver les solutions de l'équation du second degré 2X² - 5X+2=0 ;

1 - Calculer delta = (-5)2 - 4 x (2 x 2).


2- Vérifier le résultat de delta :
a- si Delta est supérieur à zéro donc on a deux solutions. b-
si delta est égal à zéro donc on une solution double.
c- si delta est inférieur à zéro donc pas de solution dans IR.
3- Le résultat est donc : deux solutions qui sont X1= 2 et X2 = ½.

Enoncé 3 : Calculer la circonférence et la surface d'un cercle de rayon 5cm.

1- Calculer la circonférence = 2 x 3,141 x 5 (2 x  x Rayon)


2- Calculer la surface=3,141 x 25 ( x Rayon2)
3- Les résultats sont donc : circonférence=31,41 et la surface=78,53 Chacun des énoncés ci-dessus
décrit un travail.

II/ Notion d'action et d'environnement :

II.1 Action :
La résolution informatique d'un problème comporte plusieurs phases préliminaires, qui sont les
suivantes :
a) une phase d’étude qui sert à inventorier ce qui est connu ou observable et ce qui est à connaître.
On identifie ensuite les relations entre les grandeurs connues et à connaître.

1
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

b) Une phase de réalisation qui consiste à déterminer un enchaînement d’opérations produisant les
grandeurs cherchées à partir des grandeurs connues.
Ainsi dans la réalisation du travail décrit dans l’énoncé 1, on distingue 10 étapes numérotées 1,2, . .
jusqu'à 10. Chaque étape est appelée action.

II. 2 Environnement :
L'ensemble des objets nécessaires à la réalisation d'un travail constitue l'environnement de ce travail.
Par exemple, dans l'énoncé 1, les objets nécessaires à la réalisation du travail indiqué est la
calculatrice. Dans l'énoncé 2, les objets nécessaires à la résolution d'une équation du second degré sont
les coefficients, delta et les solutions de l'équation (si elles existent).

Remarque :
- L'ordre d'exécution de certaines actions peut être modifié. Par exemple dans l'énoncé 3 on peut
calculer la surface puis la circonférence, car les deux actions sont indépendantes.
- L'exécution d'une action peut nécessiter une observation de l'environnement. Par exemple dans
l'énoncé 2, pour trouver les solutions de l'équation, il faut vérifier si delta est >0, <0 ou =0.
- L'énoncé d'une action peut apparaître plusieurs fois dans la description d'un travail. Par
exemple dans l'énoncé 1, on a tapé plusieurs fois sur la touche + (plus).
- En règle générale, la séquence (suite) d'actions doit être respectée. Les actions sont exécutées
dans l'ordre dans lequel elles apparaissent. Dans l'énoncé 2, on ne peut pas vérifier la valeur de delta
avant de l'avoir calculé.

III. Actions élémentaires et actions composées

III. 1 Actions élémentaires (primitives) :


Si l'énoncé d'une action suffit pour que l'ordinateur puisse la comprendre et l'exécuter, on dira alors
que cette action est élémentaire.
Exemple : Dans l'énoncé 1, taper un nombre est une action élémentaire.

III. 2 Actions composées (complexes) :


Si l'énoncé d'une action ne suffit pas pour que l'ordinateur puisse la comprendre et l'exécuter, on dira
alors que cette action est composée. Dans ce cas il faudra la décomposer en actions élémentaires.
Exemple : Trouver les solutions de l'équation 2x2 - 5x+2=0 est une action composée.

IV. Organigramme :
C'est une façon permettant d'expliquer les énoncés sous forme imagée, quatre symboles sont utilisés :

2
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Remarque : Un tel formalisme pourrait être remis en cause par n'importe quel concepteur d'algorithme
qui voudrait utiliser ses propres conventions.

Exemple : Additionner deux nombres à deux chiffres avec probabilité de retenue.

V/ Algorithme :

3
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Le mot algorithme vient du nom d'un mathématicien musulman du IXème siècle : EL KHAWARISMI.
Un algorithme, c'est le résultat d'une démarche logique de résolution d'un problème.
Plus précisément, un algorithme est une suite d'actions ou d'instructions que devra exécuter un
ordinateur dans un ordre précis pour arriver en un temps fini à un résultat déterminé d'un problème.

Remarques :
Le concepteur d'un algorithme doit prévoir tous les cas possibles d'exécution.
- Un algorithme doit être toujours fini (nombre d'actions fini).
- La solution du même problème peut être décrite avec plusieurs algorithmes.
- Un algorithme est plus efficace qu'un autre s'il s'exécute en moins de temps et s'il est plus clair que
celui-ci
- Pour la mise en pratique d'un algorithme sur ordinateur, afin d'obtenir des résultats concrets, il faut
passer par l'intermédiaire d'un langage de programmation ou programme.

VI/ Programme :

Un programme est une suite d'ordres intimés à l'ordinateur, codifiés dans une langue qui soit accessible
à ce dernier.
En fait, un ordinateur comprend un seul langage : le langage machine, où chaque ordre est une suite
de 0 et de 1.

La manipulation directe d'un tel langage serait bien lourde et génératrice d'erreurs. C'est pourquoi, dans
la pratique, on utilise des langages symboliques dits évolués, indépendants de l'ordinateur particulier
sur lequel on travaille, comme PASCAL, C, C++ ...

Si l'ordinateur comprend de tels langages, c'est qu'il existe, associé à chacun d'entre eux, un
programme tout à fait capable de traduire un texte (PASCAL, par exemple) en langage machine : ces
traducteurs sont appelés Compilateurs.

VII/ Du problème au programme :

La programmation est constituée de deux phases :

Phase 1 :
Il s'agit de la résolution du problème, c'est à dire la détermination d'un algorithme réalisant le
traitement dans l'ordre ci-dessous :
- Problème à résoudre
- Enoncé clair et complet délimitant précisément le problème
 que connaît-on ? (les données)
 que cherche-t-on ? (les résultats)
- Analyser dans la langue naturelle les actions à réaliser
 Comment passer des données aux résultats ? (traitement)

4
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

- Algorithme (Analyse qui utilise un mode d'expression précis)

Phase 2 :
II s'agit de l'adaptation de l'algorithme au langage de programmation ; elle est réalisée par la
codification, c'est à dire la traduction de l'algorithme dans un langage de programmation donné.

En résumé, un algorithme résout un problème et un programme implémente ou réalise un algorithme.

VIII Démarche de réflexion face à un problème :

L'homme est intelligent mais il est lent dans son travail, et souvent peu précis. L'ordinateur au contraire
est incroyablement rapide et sûr mais sa stupidité est sans borne. C'est à l'homme, et à lui seul, de
penser et à l'ordinateur d'exécuter.

Supposons que vous désiriez faire résoudre une équation du second degré par l'ordinateur. Si vous ne
lui donnez pas les actions à exécuter, l'ordinateur est incapable de trouver les solutions.
Vous allez donc étudier la démarche mathématique permettant de résoudre le problème puis écrire
l'algorithme ensuite le transcrire en un langage compréhensible par la machine, c'est-à-dire écrire le
programme (en Pascal par exemple).

Mais vous n'allez pas écrire un programme pour résoudre une équation particulière, par exemple
5x23x+7=0, il vous faudrait alors réécrire le programme pour chaque équation, et l'avantage de
l'ordinateur deviendrait nul.
Vous allez plutôt programmer la résolution de l'équation générale : Ax² + Bx + C=0 et vous
demanderez à l'ordinateur de prendre en compte la valeur des coefficients A, B, C qui vous intéressent
pour l'instant, ce qui correspond aux données de votre problème. Les valeurs concrètes A, B, C sont
des données externes pour votre programme, qui pourront varier d'une exécution à l'autre du
programme qui, lui, demeurera inchangé.

De même l'équation résolue, vous aimeriez bien que l'ordinateur vous communique la solution: ceci se
fera en lui ordonnant de vous afficher les résultats, dont la réalisation concrète se fera par un organe de
sortie : l'écran ou l'imprimante.
Chapitre II

5
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

LE LANGAGE ALGORITHMIQUE

I/ Structure générale d'un algorithme :

L'algorithme consiste à la décomposition d'un problème donné en sous problèmes élémentaires non
décomposables selon un ordre de réalisation (exécution) précis et selon une syntaxe et une présentation
précises.
Le langage algorithmique proposé est issu de Pascal, auquel nous empruntons l'aspect structuré des
traitements et des descriptions de données. Nous utilisons systématiquement les mots clés, que nous
allons définir plus loin, en français.

En fait un algorithme doit avoir :


- Un nom ;
- Des déclarations ;
- Un groupe d'instructions qui commencent par une instruction d'ouverture DEBUT et se termine
avec le mot FIN.

La forme générale d'un algorithme est la suivante :

Algorithme <Nom de l'algorithme>

<Partie déclaration>

Début

<Partie Action>

Fin.

• La <partie déclaration> constitue le contexte de définition d'une action, c'est à dire l'ensemble des
objets qui apparaissent dans sa description. (Ou encore, elle définit les caractéristiques des données
manipulées).

• La <partie action> (ou groupe d'instructions) constitue l'ensemble fonctionnel des objets, c'est à
dire l'ensemble des instructions qui traitent ces objets.

I.1 La partie déclaration :

I.1.1 Les mots-clefs (les mots réservés) : Certains mots sont réservés à un usage bien précis et ne
peuvent être utilisés hors de leur contexte. Exemple : Début, Fin ...

6
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

I.1.2 Les identificateurs : Ce sont les « noms propres » du langage choisis par le programmeur en
écrivant son algorithme (programme) et devant respecter certaines règles :
• Un identificateur est une suite de caractères alphanumériques (lettres et chiffres).
• Un identificateur commence obligatoirement par une lettre.
• La longueur d'un identificateur n'est pas limitée ; mais en Pascal, par exemple, seuls les 8
premiers caractères sont pris en compte par le compilateur ainsi ABCDEFIJK et ABCDEFIJ
sont considérés comme identiques.

I.1.3 Les types :


Le type d'un objet définit l'ensemble des valeurs que peut prendre l'objet et par conséquent, il définit
l'ensemble des opérations qui peuvent opérer sur l'objet.

a) Le type entier : Un objet de type entier peut prendre n'importe qu'elle valeur de l'ensemble des
entiers relatifs. Un objet entier s'écrit sous la forme d'un chiffre précédé ou pas d'un signe.

Exemple : X est un entier, il peut prendre les valeurs 125, -42, +146 .. .etc

Les opérations sur les entiers :


 Les opérations arithmétiques :
+ pour l'addition
- pour la soustraction
* pour la multiplication
/ pour la division
 Les opérations logiques :
= égal
< > différent
< inférieur
> supérieur
<= inférieur ou égal
>= supérieur ou égal

b) Le type réel : Il définit l'ensemble des valeurs appartenant aux nombres réels. X est un réel, il peut
prendre comme valeurs : 10.5, -15.38... etc.

Les opérations sur les réels : Les opérations sur les réels sont les mêmes que sur les entiers.

c) Le type caractère : Tous les caractères dont l'ordinateur a besoin pour communiquer avec le
monde extérieur.
L'ensemble des caractères sont : A,B, ....... ,Z, a,b, ....... ,z, 0,1, ....... ,9,=,<, §,... etc »

7
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Remarque : L'ensemble des caractères est muni d'une relation d'ordre, par conséquent on peut
comparer les caractères avec les opérateurs de comparaison ( =, <>, <, >, <=, >= )
'A'<'B'<...<'Z'<'a'<'b'<...'z'< '0'<'1'<'2'<...<'9'

d) Le type booléen : Il représente l'ensemble des valeurs (vrai, faux).

Les opérations sur les booléens :


Les opérations associées à ce type sont les opérations logiques : ET, OU, NON. Le résultat obtenu est
aussi un booléen.

I.1.4 Notions de variables et de constantes.


Il existe deux catégories d’objets :
a) Objets constants : Une constante est un objet dont la valeur ne change pas durant l'exécution de
l'algorithme. C'est à dire un objet ne peut être qu'observé, il ne peut pas être modifié. Une constante est
définie en donnant sa valeur. Cette définition est donnée sous la forme :
<Identificateur> = <valeur> ;
Exemples : PI=3.14 ;
Nombre_Exam=2 ;
b) Objets variables : Un objet est dit variable si sa valeur peut être modifiée durant l'exécution de
l'algorithm. Une variable est déclarée comme suit :
<Identifïcateur> :<type> ; ou bien
<Liste d'identificateurs séparés par (,)> :<type> ;

Exemples :
notel : réel ;
note2 : réel ; (ou bien notel, note 2 : réel ;)
Admis : booléen ;
{notel, note2 et admis correspondent à des cases mémoires qui vont contenir des valeurs}
Remarque :
La partie déclaration de l'algorithme comporte elle-même trois parties :
 une partie comportant la définition des constantes (si elles existent)
 une partie comportant la définition de types (voir plus loin dans ce cours)
 une partie comportant la déclaration des variables.
Ainsi la structure générale d'un algorithme devient :

Algorithme <nom de l'algorithme>


Const <définition de constantes> ;
Type <définition de type> ;
Var <déclaration de variables> ;
Début
<Partie action>
Fin.
Remarque : Const, Type, Var, Début et Fin sont des mots clés.

8
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Exemple :
Algorithme moyenne ;
Const NB_Exam=3 ;
Var
notel, note2, note3, note4, MG, somme : réel;
Début
<Partie action>
Fin.
II/ Actions algorithmiques simples :

II. 1/ L'affectation :
Elle permet de mettre ou d'affecter une valeur à une variable. La syntaxe de l'affectation est donnée
comme suit :
<Identificateur> := <expression> ; Expression
peut être :
- Une valeur
- La valeur d'une autre variable
- Le résultat d'une expression arithmétique -
- Le résultat d'une expression logique.

Exemple :
Algorithme affectation ;
Var
x, y, z : entier ;
a, b, c : booléen ;
Début
x :=5 ; {mettre dans x la valeur 5 ; le contenu de x est 5}
y :=x ; {mettre (ou copier) le contenu de x dans y ; x et y contiennent la même valeur}
x :=x+l ; {rajouter 1 au contenu de x et mettre le résultat dans x ; le contenu de x est 6}
z :=x+2*y ; {calculer l'expression puis mettre le résultat dans z}
a :=vrai ; {mettre la valeur vrai dans a}
b :=faux ; {mettre la valeur faux dans b}
c :=a ou b ; {a ou b est égal à vrai selon la table de vérité donc le contenu de c sera vrai}
Fin.

Remarque :
Pour qu'une opération quelconque puisse s'effectuer, il faut que ses deux facteurs appartiennent au
même ensemble de données (même type).
Exemple : Soit la déclaration :

Var

9
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

a : réel ;
i : entier ;
x : booléen ;
L'affectation a :=i+3 est valide.
Les affectations i :=a et a :=x sont invalides
Le résultat d'une opération arithmétique sera de type réel si l'un au moins des facteurs est un réel.

II.l.l/ Ordre de priorités des opérateurs arithmétiques et logiques :

a ) Les opérateurs arithmétiques :


L'ordre décroissant des priorités est donné par:
+ - opérateur unaire
** la puissance
* / la multiplication et la division
+ - l'addition et la soustraction

b) Les opérateurs de comparaison :

< Inférieur
<= Inférieur ou égal
= égal
> Supérieur
>= Supérieur ou égal
< > Différent

c) Les opérateurs logiques :


L'ordre décroissant des priorités est donné par :
NON négation
ET ET logique
OU OU logique

Exemples :
- 3*6+2-4/3 est équivalent à (3*6)+2-(4/3)
- non A ou B et C est équivalent à (non A) ou (B et C)
- J+3<=I signifie (J+3) <= I. Ceci est une expression logique elle est vrai si (J+3)<=T, elle est fausse
sinon.

Remarque :
Les parenthèses sont plus prioritaires que tous les autres opérateurs arithmétiques ou logiques.

II.2 Les actions d'entrée/sortie :

10
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

II.2.1 Action « lire » :


Elle ordonne à la machine de lire ou prendre une donnée (valeur) qu'elle va mettre dans sa mémoire.
C'est donc une instruction qui nous permet de stocker les valeurs tapées au clavier, dans les cases
mémoires correspondantes aux variables.

Sa syntaxe est donnée par :


Lire <variable> ; ou bien
Lire <liste de variables> ;

Exemple :
Algorithme action_lecture ;
Var
A : entier ;
B : caractère ;
Debut
Lire (A) ;
Lire (B) ;
Fin.

Remarque : On peut remplacer les deux instructions lire (A); lire (B); par l'instruction lire (A, B);

II.2.2 Action « écrire » :


C'est une instruction qui nous permet de copier les résultats de la mémoire pour les afficher à l'écran.
Elle signifie aussi ordonner à la machine d'écrire ou d'afficher le contenu d'une variable, le résultat
d'une expression arithmétique ou encore afficher un message.
Elle se présente sous la forme suivante :
Ecrire <paramètre> ; ou bien
Ecrire<liste de paramètres> ; ou bien
Où : paramètre peut être soit une variable, un texte entre ‘ et ‘ ou une expression arithmétique.

Remarque : Tout ce qui est entre cotes est affichées tel quel.

Exemple :
Algorithme action_écrire ;
Var A, B, S: entier;
Début
Lire (A, B) ;
S := A+B ;
Ecrire ('Somme est : ') ; Ecrire (S);
Fin.
Remarque 1 :

11
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

On peut remplacer les deux instructions :


Ecrire ('Somme est : ') ; Ecrire (S) ; par l'instruction
Ecrire ('Somme est : ', S) ;

Remarque 2 :
On peut rajouter dans un algorithme des commentaires encadrés par /* commentaire */ (slash étoile)
ou bien par { commentaire } (accolades). Les commentaires ne sont pas des instructions mais juste des
explications sur les actions de l'algorithme destinées à l'utilisateur.

Exemple de commentaires :
/* bonjour */
{ affichage du résultat }
/*x=12 */

II.3 Exercices :

Exercice 1 : Il s'agit de calculer le salaire d'un employé en donnant son salaire de base, les primes et
les retenues sachant que la formule de calcul est : Salaire=salaire de base + primes -retenues.
Solution :

♦ Enoncé du problème :
- Donner le salaire de base
- Donner les primes
- Donner les retenues Calculer le salaire
- Afficher le résultat

♦ L'algorithme :
Les variables de type réel utilisées sont :
Salaire : le salaire
Salbas : le salaire de base
Primes : les primes
Retenues : les retenues.

Algorithme calcul_salaire ;
Var
Salbas, primes, retenues, salaire : réel ;
Début
Ecrire ('donner respectivement le salaire de base, les primes et les retenues') ;
Salaire := salbas+primes-retenues ;
Ecrire ('le salaire est : ', salaire) ;
Fin.

12
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Exercice2 : Calculer la moyenne générale d'un étudiant sachant qu'il passe les épreuves de trois
modules ayant des coefficients différents.

Solution :
♦ Enoncé du problème :
- Obtenir les notes des trois modules.
- Obtenir les coefficients des trois modules
- Calculer la somme des notes (en les multipliant d'abord par les coefficients).
- Calculer la somme des coefficients
- Calculer la moyenne en divisant la somme des notes (multipliées par les coefficients) par la somme
des coefficients.
- Afficher la moyenne.

♦ L'algorithme :
On utilisera les variables suivantes :
Notel, note2, note3 : les trois notes de type réel.
Coefl, coefi, coef3 : les trois coefficients de type entier
SOMNOTE : c'est la somme des notes multipliées par les coefficients (réel).
SOMCOEF : la somme des coefficients de type entier.
MOYENNE : la moyenne générale de type réel.

Algorithme moyenne_générale ;
Var notel, note2, note3 : réel ;
Coefl, coef2, coef3: entier;
SOMCOEF : entier;
SOMNOTE : réel ;
MOYENNE : réel ;
Début
Ecrire ('Introduisez les notes ') ;
Lire (notel, note2, note3) ;
Ecrire ('Introduisez les coefficients ') ;
Lire (coefl, coef2, coef3) ;
SOMNOTE := notel*coefl+note2*coef2+note3*coef3 ;
SOMCOEF := coefl+coef2+coef3 ;
MOYENNE := SOMNOTE/SOMCOEF ;
Ecrire ('Moyenne = ', MOYENNE) ;
Fin.

III Structures de contrôle :

13
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

III. 1 Les instructions conditionnelles :

III. 1.1 L'instruction conditionnelle si... alors ... fsi ;


C'est une instruction qui permet d'exécuter un groupe d'actions suivant la valeur d'une certaine
condition.
On distingue deux formes pour cette instruction.

a) Instruction tronquée :

Elle se présente sous la forme suivante :


Si <condition> alors <instruction 1> ;
<instruction 2> ;

<instruction n> ; fsi
;

Si la condition est vérifiée, on exécute le groupe d'actions (instruction1 jusqu'à instruction n) sinon
passer à l'instruction qui vient juste après le fsi.

Exemple : Le maximum de deux nombres entiers A et B.

Algorithme Maximum 1 ;
Var
A, B : entier ;
Max : entier ;
Début
Ecrire ('donner A et B') ;
Lire (A, B) ;
Si (A>=B) alors Max :=A ;
Fsi ;
Si (A<B) alors Max :=B ;
Fsi ;
Ecrire (' la maximum de ', A ,'et', B ,'est : ', max) ;
Fin.

b) Instruction alternative :
Elle consiste à exécuter deux groupes d'actions suivant la valeur d'une condition. Elle se présente sous
la forme suivante :

Si <condition> alors <instruction 11> ;

14
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

<instruction 12> ;

<instruction 1n>
Sinon <instruction 21> ;
<instruction 22> ;

<instruction 2n> ;
fsi ;

Si la condition est vérifiée, alors on exécute les instructions situées entre les mots clés si et sinon,
(instructionl1 jusqu'à instruction ln). Dans le cas contraire on exécute les instructions situées entre les
mots clés sinon et fsi (instruction21 jusqu'à instruction 2n). (fsi pour dire finsi).

Exemple : Le maximum de deux nombres entiers A et B.


Algorithme Maximum2;
var
A, B, Max : entier ;
Début
Ecrire ('Donner A et B') ;
Lire (A, B) ;
Si (A>=B) alors Max :=A ;
Sinon Max :=B ;
Fsi ;
Ecrire (' Le maximum de ', A ,' et', B ,' est : ’, max) ;
Fin.

c) Exercices :
Exercice 1: Le carré du minimum de trois nombres entiers :
Algorithme carré_min ;
Var A, B, C, carre, min : entier ;
Début
Ecrire ('donner les trois nombres') ;
Lire (A, B, C) ;
Si (A<=B) et (A<=C) alors Min :=A
Sinon si (B<=A) et (B<=C) alors Min :=B
Sinon Min :-C
Fsi ;
Fsi ;
Carre :=Min*Min ;
Ecrire ('le carré du minimum est : ', Carre) ;
Fin.

15
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Exercice 2 : Afficher trois nombres entiers donnés selon l'ordre croissant :

Algorithme ordonner ;
Var A, B, C : entier ;
Début
Ecrire ('donner les trois nombres à ordonner') ;
Lire (A, B, C) ;

Si (A<=B) alors si (B<=C) alors écrire ('ordre est :', A, B, C)


Sinon si (A<=C) alors écrire ('ordre est :', A, C, B)
Sinon écrire ('ordre est :', C, A, B) ;
Fsi ;
Fsi
Sinon si (A<=C) alors écrire ('ordre est :', B, A,C)
Sinon si (B<=C) alors écrire ('ordre est :', B, C,A)
Sinon écrire ('ordre est :', C, B,A) ;
Fsi ;
Fsi;
Fsi;
Fin.

III.1.2 L'instruction cas ...fincas ;


L'instruction cas permet de faire un choix parmi plusieurs possibilités suivant la valeur d'une
expression qui doit être de type ordinal (entier, caractère ou booléen).

a) La première syntaxe : La première syntaxe de cette instruction est la suivante :


Cas <expression> Vaut
Domaine 1 : <bloc d'actions 1>
Domaine 2 : <bloc d'actions 2>

Domaine n : <bloc d'actions n>
Fincas;
Domaine est une liste de constantes.
Dans cette instruction, l'expression est évaluée :
- si le résultat est égal à un élément du domaine 1 alors les actions du bloc 1 sont exécutées.
- si le résultat est égal à un élément du domaine n alors les actions du bloc n sont exécutées
- Si aucun élément d'aucun domaine n'est égal à <expression> alors on passe à la suite du
programme.

b) La deuxième syntaxe : La deuxième syntaxe de cette instruction est la suivante :

16
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Cas <expression> Vaut


Domaine 1 : <bloc d'actions 1>
Domaine 2 : <bloc d'actions 2>

Domaine n : <bloc d'actions n>
Sinon <bloc d'actions p>
Fincas ;

Dans ce cas si aucun élément d'aucun domaine n'est égal à <expression> alors le bloc d'actions p sera
exécuté. Exemple :
Algorithme Actioncas ;
Var i, a, b, s : entier ;
Début
Lire (i) ;
Cas i Vaut
1,2 :s:=a+b;
3 : s :=0 ;
4-6 : s :=a-b ;
Sinon s :=a*b ;
fincas ;

d) Exercices :

Exercice l : On veut écrire l'algorithme qui affiche les noms des wilayas suivant leur code. On
considère uniquement les numéros : 16, 31, 35,42

Solution :
Algorithme wilaya ;
Var Code : entier ;
Début
Ecrire ('donner le code de la wilaya') ;
Lire (code) ;
Cas code Vaut
16 : écrire (' la wilaya est ALGER') ;
31 : écrire (' la wilaya est ORAN') ;
35 : écrire (' la wilaya est BOUMERDES') ;
42 : écrire (' la wilaya est TIPAZA') ;
sinon écrire ('numéro non autorisé') ;
fincas;
fin.

17
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Exercice 2 : Ecrire un algorithme qui sert de calculatrice de poche. Il faut entrer deux valeurs séparées
par l'un des signes d'opérations +, -, *, et /. Nous devons donc donner la première valeur, le signe de
l'opération (l'opérateur) et la deuxième valeur ensuite suivant l'opérateur effectuer l'opération
correspondante.

Solution :
Algorithme choix ;
Var
vall, val2, resul : réel ;
Op : caractère ;
Début
Lire(vall) ; Lire(op) ; Lire(val2) ;
Cas op Vaut
'+' : resul := vall + val2 ;
'-' : resul := vall - val2 ;
'*' : resul := vall * val2 ;
'/' : si Val2 = 0 alors Ecrire('division par zéro');
sinon resul :=vall / val2 ;
fsi ;
Fincas ;
Fin.

18
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

III.2 Les instructions itératives (instructions de répétition) :


L'idée est de répéter l'exécution d'un ensemble d'instructions sous une condition. Bien que les
instructions restent les mêmes, les données qu'elles traitent changent à chaque répétition. Nous
avons trois types d'itérations (ou boucles) : Pour, Tant que et Répéter.

III.2.1 L'instruction POUR :


C'est une instruction permettant d'exécuter un ensemble d'actions plusieurs fois, elle se présente sous la
forme suivant :
Pour <indice> := <val_inf> à <val_sup>
Faire
Action 1 ;
Action 2 ;

Action n ;
Fait;

- indice : un compteur
- Val_inf : la première valeur du compteur
- Val_sup : la dernière valeur du compteur

L'exécution des actions (situées entre faire et fait) se fait N fois tel que
N = val_sup – val_inf + 1

L'instruction pour s'exécute comme suit :


1. Initialisation : indice = Val_Inf.

2. Si indice ≤ Val_Sup alors aller à 3, sinon quitter la boucle (test d’arrêt).

3. Exécuter <Action>, puis incrémenter indice (indice = indice + 1) et aller à 2.

Exemple : La somme de N valeurs entières en utilisant l'instruction « pour ».

Algorithme Action_pour ;
Var
S, I, X, N : entier ;
Début
S :=0 ; lire (N) ;
Pour I:=l à N Faire
Lire (X) ; S :=S+X ;
Fait;
Ecrire (S) ;
Fin.

19
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

III.2.2 L'instruction TANT QUE :


Cette instruction se présente sous la forme suivante :

<Initialisation>
Tant que <condition>
Faire
Action 1 ;
Action 2 ;

Action n ;
<Agir sur condition>
Fait;

- Initialisation : c'est une instruction qui permet de donner la première valeur à condition.
- Agir sur condition : c'est une instruction qui permet de changer la valeur de la condition à un
moment donné pour pouvoir arrêter le traitement. C'est à dire pour ne pas avoir une boucle infinie.

Exemple : La somme de N valeurs entières en utilisant l'instruction « tant que ».

Algorithme Action_tant_que;
Var
S, I, X, N : entier ;
Début
S :=0 ;
lire (N) ;
I :=1 ; /* initialisation*/
Tant que (I<=N)
Faire
Lire (X) ;
S :=S+X ;
I :=I+1 ; /* agir sur condition */
Fait ;
Ecrire (S) ;
Fin.
Remarque :
- On peut avoir plusieurs conditions, dans la boucle « tant que », séparées avec des opérateurs
logiques.
- On peut transformer toute instruction « pour » en instruction « tant que ». Mais l'inverse n'est
pas vrai. Le nombre de répétition de la boucle « tant que » n'est pas connu avant son exécution
contrairement à la boucle « pour ».

20
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

III.2.3 L'instruction Répéter :


Elle s'écrit :
REPETER
Action 1 ;
Action 2 ;

Action n
<Agir sur condition>
JUSQU'A (condition) ;

Elle signifie Répéter les instructions jusqu'à ce que la condition deviennent VRAI (L'inverse de la
boucle tant que).
Exemple : La somme de N valeurs entières en utilisant l'instruction « répéter ».

Algorithme Action_répéter;
Var S, I, X, N : entier;
Début
S :=0 ;
lire (N) ; /* N doit être >=1 */
I :=1 ; /* initialisation*/
Répéter
Lire (X) ;
S :=S+X ;
I :=I+1 ; /*Agir sur condition*/
Jusqu'à (I>N) ;
Ecrire (S) ;
Fin.
Remarque : Dans la boucle « répéter », les actions sont exécutées au moins une fois.
III.2.4 Exercices :
Exercice l : Le produit de N nombres entiers:
Solution : Dans ce cas la boucle « pour » est la plus facile à utiliser.
Algorithme produit
Var P, I, X, N : entier ;
Début
P :=1 ; lire (N) ;
Pour I :=1 à N Faire
Ecrire ('donnez une valeur: '); Lire (X) ;
P :=P*X ;
Fait;
Ecrire ('Produit = ', P) ;
Fin.

21
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Exercice 2 : Déterminer si un nombre est pair :

Solution.
Dans cet exercice, il n'est pas possible d'utiliser la boucle « pour » car on ne connaît le nombre de
répétition, donc la boucle « tant que » est la plus appropriée.
Algorithme pair ;
Var
X, Y : entier ;
Début
Lire(Y) ; X :=Y ;
Tant que (X>=2) Faire
X :=X-2 ;
Fait;
Si (X=0) alors écrire ('le nombre ', Y,'est pair ')
Sinon écrire ('le nombre ', Y,'est impair ');
Fsi ;
Fin.

Exercice 3 : Soit un ensemble de caractères terminé par un ‘.’ . Ecrire un algorithme qui calcule le
nombre de caractère de cet ensemble.
Solution :
Dans cet exercice, on ne peut pas utiliser la boucle « pour » (pour les mêmes raisons que l'exercice
précédent) par contre il est préférable d'utiliser la boucle « répéter » au lieu de « tant que » car il faut
lire au moins un caractère pour vérifier si c'est un '.' ou non.

Algorithme nombre_caract ;
Var
C : caractère ;
Nb : entier ;
Début
Nb=0 ;
Répéter Lire(C ) ;
Nb :=Nb+l ;
Jusqu'à (C=’.’) ;
Ecrire('le nombre de caractère=', Nb) ;
Fin.

22
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Chapitre III
LES STRUCTURES DE DONNEES STATIQUES

Les variables entières, réelles, caractères et booléennes ne comportaient qu'un seul élément. En
revanche, les variables structurées sont composées de plusieurs éléments. La caractéristique la plus
importante d'une variable structurée est la façon d'accéder à chacun de ses composants.

I Les tableaux à une dimension (ou Vecteurs) :

I.1 Définition : C'est une structure de données composée d'un nombre fixe d'éléments (ou de
composantes) de même type. Ces éléments sont identifiés par un seul nom.

Une variable de type tableau est de type structuré, car elle comprend plusieurs éléments assemblés
suivant certaines règles :
- Les éléments du tableau sont du même type simple ;
- L'accès à un élément du tableau est déterminé par l'utilisation d'un indice.
- L'indice d'une composante est la position (le rang) de la composante relativement au début du
tableau qui permet d'accéder directement à chaque élément ;
- Le nombre d'éléments du tableau est fixé dans la déclaration et ne peut pas changer (Statique).

Une variable de type tableau se définit donc par : a)


Le type de l'élément du tableau ;
b) Le type de l'indice (ce qui nous permet de choisir l'élément qui nous intéresse).

I.2 Déclaration :
VAR < identificateur : tableau [intervalle] de <type_élément> ; ou bien VAR
< identificateur : tableau [taille] de <type_élément> ;

où identificateur : Désigne le nom de la variable tableau ;


intervalle : Est un intervalle de type entier, caractère ou booléen ; (pas de type réel)
taille : définit la taille du tableau

23
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

type_élément : C'est le type des éléments du tableau et peut être de type entier, caractère, booléen
ou réel.

Exemple :
Var Tl : tableau[1..15] d'entier ; ou bien Tl : tableau[15] d'entier ;
T2 : tableau[A'..'Z'] d'entier ;
T3 : tableau[Vrai..Faux] de réel ; (2 valeurs seulement)

1.3 Les opérations sur les tableaux :

a) L'accès à un élément du tableau est désigné par : <Identificateur> [indice de l'élément]


Exemple :
T[3] ainsi on accède à l'élément 3 du tableau T.

Remarque : l'indice peut aussi être une expression.

b) Lire ou écrire une ou plusieurs valeurs du tableau :


Lire(T[3]) ; Lire(T[i]) ; /* lire la 3èrae valeur ou la ième valeur du tableau T/
Ecrire(T[3]) ; Ecrire(T[i]) ; /* afficher la 3ème valeur ou la ième valeur du tableau T*/

Si on veut lire N valeurs en les sauvegardant dans un tableau :

Pour i :=1 à N faire lire(T[i]) fait ;

Si on veut afficher le contenu d'un tableau :

Pour i :=1 à N faire écrire(T[i]) fait;

c) affecter une valeur dans la position i du tableau : T[i] := Val ;

d) Faire des opérations de calcul : T[i] := T[i]*2 ; (Utiliser un élément du tableau dans une
expression)

e) Faire des comparaisons : Si (T[i]>0) Alors ...

Remarque : La taille du tableau est fixe et ne peut être modifié. Généralement on fixe une taille
maximale (par rapport aux besoins des données d'un problème donné) que nous n'utiliserons pas
parfois entièrement.

Exemple :
VAR T : tableau[1..8] d'entiers ; N, i : entier ;
Lire(N) ; {avecN<=8}

24
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Pour i :=1 à N faire lire(T[i]) fait ;

15 25 2 -6 45
N=5
1.4 Quelques algorithmes de bases sur les vecteurs :

1.4.1 Les algorithmes de recherche :

a) La recherche séquentielle d'une valeur VAL dans un tableau de N nombres entiers :


Algorithme recherche 1 ;
VAR T : tableau[1..20] d'entier ;
N, i, VAL : entier ;
Début
Lire(N, VAL) ; /* On suppose que N<=20 */
Pour i :=1 à N faire lire(T[i]) fait;

i:=l ;
Tant que (i<=N) ET (T[i]<>VAL) faire i :=i+l fait;

Si (i>N) Alors écrire(VAL,'n"existe pas')


Sinon écrire(VAL,'Existe')
Fsi ; Fin.

/* 2ème solution */

Algorithme recherche2 ;
VAR T : tableau[1..20] d'entier ;
N, i, VAL rentier ;
B : booléen ;
Début
Lire(N, VAL) ; /* On suppose que N<=20 */
Pour i :=1 à N faire lire(T[i]) fait; i
:=1 ;B :=faux ;
Tant que (i<=N) ET (B=faux) faire
Si (T[i]=VAL) Alors B :=Vrai Sinon
i :=i+l ;
Fsi ;
Fait;
Si (B=Vrai) Alors écrire(VAL,'Existe')
Sinon écrire(VAL,'n"existe pas')
Fsi ; Fin.

25
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

a) La recherche d'une valeur VAL dans un tableau Trié :


❖ Recherche séquentielle :

Algorithme recherche3 ;
VAR T : tableau[1..100] d'entiers ; N, i, VAL : entier ;
Début
Lire(N, VAL) ;
Pour i :=1 à N faire lire(T[i]) fait;
Si (VAL<T[1]) OU (VAL>T[N]) Alors Écrire(VAL ,'n''existe pas')
Sinon i :=1 ;
Tant que (VAL>T[i]) faire i :=i+l fait;
Si (VAL=T[i]) Alors écrire(VAL,'Existe')
Sinon écrire(VAL,'n"existe pas') ;
Fsi ; Fsi ; Fin.
 Recherche dichotomique :
Algorithme recherche4 ;
VAR T : tableau[1..100] d'entiers ;
N, i, milieu, BI, BS rentier ;
VAL : entier ; B : booléen ;
Début
Lire(N, VAL) ;
Pour i :=1 à N faire lire(T[i]) fait;
Si (VAL<T[1]) OU (VAL>T[N])
Alors Écrire(VAL ,'n"existe pas')
Sinon BI :=1 ; BS :=N ; B :=faux ;
Tant que (BI<=BS) ET (B=faux) faire
Milieu :=(BI+BS)Z2 ;
Si (T[milieu]=VAL) Alors B :=Vrai Sinon
Si VAL<T[milieu]
Alors BS :=milieu-l
Sinon BI :=milieu+l ;
Fsi ;
Fsi ;
Fait;
Si (B=Vrai) Alors écrire(VAL,'Existe')
Sinon écrire(VAL,'n"existe
pas') ; Fsi ; Fsi ; Fin.

1.4.2 Les algorithmes de tri :


Trier un tableau revient à ordonner ses éléments selon l'ordre croissant (ou décroissant)

26
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

a) Tri par sélection (extraction) :


Algorithme tri_sélection ;
Var i, N, j, X, Pmin : entier ;
T : tableau [1..50] d'entiers ;
Début Lire (N) ;
Pour i :=1 à N Faire Lire (T[i]) Fait ;

/* on va trier selon l'ordre croissant : */


Pour i := 1 àN-1 Faire
Pmin ;=i ;
Pour j := i+1 à N faire
Si (T[i]< T[Pmin]) Alors Pmin :=j ; Fsi ;
Fait;
Si (i<>Pmin) alors X := T[i] ; T[i] := T[Pmin] ; T[Pmin] := T[i] ; Fsi ;
Fait;
/ * affichage du tableau trié */ Pour i := 1 à N Faire Ecrire (T[i] ) Fait ; Fin.

b) Tri par permutation (tri Bulle) :


Algorithme tri_permutation ;
Var i, N, j, X : entier ;
T : tableau [1 ..50] d'entiers ;
Début
Lire (N) ;
Pour i :=1 à N Faire Lire (T[i]) Fait ;

/* on va trier selon l'ordre croissant : */


Pour i := 1 à N-1 Faire Pour j := 1 à N-i
Faire Si ( T [ j ]>T[j+1]) alors
X:=T[j]; T[j] :=T[j+1]; T[j+l]:=X;
1
Fsi ;
Fait;
Fait;

/* affichage du tableau trié */ Pour i :=


1 à N Faire Ecrire (T[i] ) Fait ; Fin.

c) Tri par Insertion : Algorithme


Tri_Insertion ;
Var T : tableau[1..100] d'entier ; N,
i, j, X, Pos : entier;
Début
Lire(N); /* N<=100*/

27
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Pour i :=1 à N faire lire(T[i]) ; fait ;


Pour i :=2 à N faire
Pos :=1 ;
Tantque (T[Pos]< T[i]) faire Pos :=Pos + 1 ;
fait ; si (Pos<>i) alors X:=T[i];j:=i; tantque (j>=
pos+1)
faire T[j] :=
T[j-l]; j :=j-i ;
fait;
T[Pos] := X;
Fsi;
Fait;
Pour i :=1 à N faire ecrire(T[i]) ; fait ; Fin.
1.4.3 Mise à jour d'un vecteur Trié :

a) Insertion d'une valeur :


Algorithme InsertValeur ;
Var T: tableau [1 ..100] d'entiers; N,
i, j, val : entier ;
Début
Lire(N); { N doit être <= 100-1 c-à-d 99}
Pour i := 1 à N faire lire (T[i]) ; fait ;
Lire (val) ; i := 1 ;
Tantque (i<=N) et (val>T[i]) faire i := i+1 ; fait; j
:= N+1;
Tantque (j>i) faire T[j] := T[j-1] ; j :=j-l; fait ;
T[i] :=val;N:=N+l ;
Pour i := 1 à N faire ecrire(T[i]) ;fait ; Fin.

b) Suppression d'une valeur :


Algorithme Suppression;
Var T: tableau [1.. 100] d'entier; N,
i, j, val, pos : entier ;
Début
Lire(N);
Pour i := 1 à N faire lire (T[i]) ; fait; Lire(val)
;
{Après vérification de l'existence de la valeur à supprimer et de la détermination de sa position POS } i
:= pos + 1;
Tantque (i<=N) faire T[i-
l]:=T[i]; i :=
i+1;
fait;

28
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

N:=N-1;
Pour i := 1 à N faire ecrire(T[i]) ;fait ; Fin.

II/ Les tableaux à deux dimensions (ou Matrices) :

Le type tableau que nous avons vu jusqu'à présent n'avait qu'un seul indice, nous disons qu'il est à une
dimension. Or chaque élément d'un tableau peut être à son tour un tableau, on dit donc qu'il est à deux
dimensions.

II. 1 Définition :
Les tableaux à 2 dimensions sont des structures dont les éléments sont composés. Un élément d'un
tableau à 2 dimensions est lui-même un vecteur. Ainsi sa représentation peut être vue comme une
matrice (un ensemble de lignes et de colonnes).
La référence d'un élément utilise, en plus du nom du tableau, deux indices. Le 1er indique le N° de
ligne et le 2ème indique le N° de colonne.
L'écriture M[i,j] désigne l'élément se trouvant à l'intersection de la ligne i et de la colonne j.

I1.2 Déclaration :
VAR < ident> : Tableau[<type_indlig , type_indcol>] de <type_élément> ;

où :
Type_indlig et Type_indcol désignent un intervalle de type entier, caractère ou booléen ; type élément
: C'est le type des éléments du tableau et peut être de type entier, caractère, booléen ou réel.

Exemple : M : Tableau[1..10,1..30] d'entiers ; Le tableau M à 2 dimensions possède au maximum 10


lignes et 30 colonnes.

La matrice suivante est initialisé avec des valeurs entières sur 3 lignes et 2 colonnes :

II.3 Les opérations sur les matrices :

a) Accès à un élément de la matrice :


M[l,l] désigne l'élément de la 1ère ligne et 1ère colonne de la matrice M.
M[l,2] : L'élément de la 1ère ligne ,2ème colonne.
M[2,1] : L'élément de la 2ème ligne ,1ère colonne.
M[2,2] : L'élément de la 2ème ligne ,2ème colonne.

29
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

b) Lecture des éléments d'une matrice :


Lecture d'un élément : Lire(M[l,l]) ;
Lecture d'une ligne contenant P colonnes : Pour j:=l à P faire Read(M[l, j]) fait ; Lecture
de N lignes de la matrice contenant P colonnes :
Pour i :=1 à N faire
Pour j :=1 à P faire Lire(M[i,j]) ; Fait;
Fait;

c) Ecriture (affichage) des éléments d'une matrice :


Pour i :=1 à N faire
Pour j :=1 à P faire Ecrire(M[i,j]) ; Fait;
Fait;

d) Parcours d'un tableau à 2 dimensions :


Nous avons deux types de parcours :
 Un parcours ligne par ligne :
Pour i :=1 à N faire
Pour j :=1 à P faire
………………..
Fait;
Fait ;

 Un parcours ligne par colonne :


Pour j :=1 à P faire
Pour i :=1 à N faire
………………..
Fait;
Fait ;

II.4 Exemples :
Exemple 1 : Initialisation d'une matrice à zéro :
Algorithme initialisation ;
Var Mat :tableau[1..20,1..30] d'entier ; N,
M, I, j : entier ;
Début
Lire(N,M) ;
{ligne par ligne }
Pour i :=1 à N faire Pour
j :=1 à M faire
Mat[i,j] :=0 ;

30
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Fait;
Fait ;
{ colonne par colonne }
Pour j :=1 à M faire Pour
i :=1 à N faire
Mat[i,j] :=0 ;
Fait ;
Fait; Fin.
Exemple 2 : Calculer la somme des éléments d'une matrice de réels de taille N, M avec
N<=50etM<=100.

Algorithme somme ;
Var mat : tableau[l..50,1..100] de réel ; N,
M, i, j :entier ; S :réel ;
Début
Lire(N,M) ;
Pour i :=1 à N faire Pour
j :=1 à M faire
Lire(mat[i,j]) ;
Fait ;
Fait;
S :=0;
Pour i :=1 à N faire
Pour j :=1 à M faire
S :=S+mat[ij] ;
Fait;
Fait;
Ecrire('la somme=',S) ; Fin.

Exemple 3 : Calcul de la somme des éléments de chaque ligne de la matrice. (Même matrice que
l'exemple 2).
•••
Pour i :=1 à N faire
S :=0;
Pour] :=1 à M faire S :=S+mat[i,j] ;
Fait;
Ecrire('la somme=',S) ;
Fait;
Fin ;

III Le type chaîne de caractères :

31
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Le type chaîne de caractères : CHAINE, correspond à un tableau de caractères un peu particulier.

III. 1 Déclaration :
Var <Identificateur> : CHAINE ; /* La taille maximale d'une chaîne est de 255 caractères */

On peut déclarer une chaîne de taille inférieure à 255 en déclarant :

Var identificateur : CHAINE [taille] ; /* taille <255 */

Exemple : Var noml : CHAINE ; /* au maximum 255 */ nom2 :


CHAINE [20] ; /* au maximum 20 caractères */

III.2 Les opérations sur les chaînes :


a) Accès à un caractère :
Même chose qu'avec les tableaux, un indice permet de spécifier la position du caractère auquel on veut
accéder.

Exemple : Var X : Chaîne ;


X[3] : désigne le 3ème caractère de la chaîne
X[i] : désigne le ieme caractère

b) Affectation d'une chaîne constante à une variable :


Il est possible d'affecter un ensemble de caractère constant à une variable de même type. Exemple :
Var nom : Chaîne [20] ;
Nom := ‘Adrar’ ;

1 2 3 4 5
nom 'A' 'd' 'r' 'a' 'r'

c) Lecture et Ecriture d'une chaîne :


On peut lire, ou afficher, une variable de type chaîne comme une seule entité, contrairement à un
tableau de type entier, ou réel, où il faut lire ou afficher ces composantes élément par élément.

Exemple : Lire(nom) ;
Ecrire(nom) ;

32
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Chapitre IV

LES ACTIONS PARAMETREES (PROCEDURES ET FONCTIONS)

I. Introduction :

L'objet de ce chapitre est de présenter un moyen très puissant pour structurer un algorithme. Il s'agit
des procédures et fonctions, appelés aussi actions paramétrées.

Les actions paramétrées permettent de :


a) simplifier le travail. Nous nous préoccupons d'abord du problème essentiel, puis nous entrons peu à
peu dans les détails.
b) mettre au point et tester les parties indépendamment, ainsi nous réduisons le temps de test et de
mise au point.
c) réutiliser une action autant de fois qu'il est nécessaire.
d) améliorer la lisibilité des algorithmes.

33
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Cette structuration facilite grandement la compréhension d'un algorithme, de même que la subdivision
d'un livre en chapitres et paragraphes simplifie la lecture.

II. Déclaration d'une action paramétrée :

L'action paramétrée est constituée de point de vue syntaxique de :


- L'entête : permet de donner un nom (un identificateur) à l'action paramétrée ainsi que la
spécification des paramètres.
- Le corps : comporte une partie déclaration des objets propres à l'action qui peuvent être des
constantes, des types ou des variables. Elle comporte aussi une partie action.

Il existe deux types d'actions paramétrées: les Procédures et les Fonctions.

III Les Procédures :

III.1. Définition :
Une procédure nous permet de désigner par un nom un ensemble d'instructions. Depuis l'algorithme
principal, il suffit d'invoquer ce nom, et les instructions de la procédure seront exécutées à ce moment.

III.2. Syntaxe :
La syntaxe d'une déclaration de procédure est la suivante :
PROCEDURE <identificateur> ;
<partie déclaration de la procédure>
DEBUT
<instructions>
FIN;
La déclaration d'une procédure est donc similaire à la déclaration d'une variable, mais ici nous
déclarons une action, alors que pour une variable nous déclarons une donnée.

Remarques :
• La procédure est placée avant l'algorithme principal.
• Dans le cas ou des paramètres sont associés à la procédure, alors sa déclaration devient :

PROCEDURE <identificateur> (liste de paramètres);


<partie déclaration de la procédure>
DEBUT
<instructions>
FIN;

Exemple de réutilisabilité :

34
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Si on veut tracer 3 lignes d'étoiles


********
********
********
Un traitement et encore 3 lignes d'étoiles
********
********
********
Un autre traitement et encore 3 lignes d'étoiles
********
******** ********
Au lieu de répéter plusieurs fois le même traitement, on peut écrire une procédure permettant de tracer
3 lignes d'étoiles et il suffit de faire appel à cette action autant de fois qu'il est nécessaire.

111.3 La structure d'un algorithme utilisant une procédure :

Dans un algorithme on parcourt les déclarations de variables puis on passe à l'algorithme principal. Les
noms des procédures permettent déjà de savoir ce qui se passe, sans avoir besoin de connaître le détail
du comment. Ensuite nous pouvons examiner ce que font ces procédures.

Exemple :
Algorithme Etoile ;
Var i, j : entier ;
Procédure Etoile3 ;
Début
Pour i:=l à 3 faire
Pour j :=1 à 10 faire écrire(' * ') fait; /* sauter une ligne */
Fait ;

35
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

fin ;
Début
Etoile3 ; {traitement en appelant la procédure}
Etoile3 ; {traitement en appelant la procédure}
Fin.

b) Les variables globales :


Lorsqu'une variable est utilisée par l'algorithme principal, ou par plusieurs procédures, nous devons la
déclarer en tête de l'algorithme. Ces variables sont appelées des variables globales.
II est souvent conseillé de réduire l'utilisation des variables globales et ceci dans le but de limiter
d'éventuels effets de bord (voir le paragraphe IV).

c) Les variables locales :


Les variables déclarées à l'intérieur d'une procédure sont appelées variables locales. Une variable est
déclarée localement car nous n'en n'avons besoin que dans la procédure et elles ne sont accessibles que
par celle-ci.
Remarque : les variables locales ne sont utilisables que dans la procédure où elles sont déclarées et
elles sont créées au moment où nous entrons dans la procédure puis détruites lorsque nous quittons
cette procédure, leur durée de vie est donc celle de la procédure.

Exemple :
Algorithme globaljocal ;
Var V1 :entier ;
Procédure P ; Var
V2 : entier;
Début
V2 :=1000
;
écrire(V2) ;
Fin; Début
V1 :=3 ; P
;
écrire(Vl) ;
Fin.
Algorithme Casse-cou ;
Var Val : entier ;
Procédure P ; Var
Val : entier ;
début
Val :=1000 ;
Ecrire ('dans la procédure Val ', Val) ;
Fin;
Début {Algorithme Principal}

36
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Val :=3 ;
P ; {l'appel de la procédure}
Ecrire ('après l'appel à la procédure Val ', Val) ; Fin.

Remarque :
L'avantage majeur de la déclaration de variables locales est l'économie de la place mémoire.
L'algorithme principal ne peut pas utiliser les variables locales (elles n'existent pas lorsque nous
sommes dans l'algorithme principal).
Même si nous avons une variable locale qui a le même nom qu'une variable globale, il ne s'agit pas de
la même zone donc leurs valeurs sont distinctes.

III.5. Les paramètres VALEUR et VARIABLE :


Si on veut tracer trois lignes de dix fois le caractère $, on ne peut pas utiliser (directement) la
procédure etoile3 car elle est figée puisqu'elle ne contient pas de paramètres.
Dans la suite de ce chapitre, nous nous intéressons à la déclaration de procédure contenant une liste de
paramètres après le nom de la procédure, comme c'est déjà expliqué dans la remarque du paragraphe
III.2.

a) Paramètre VALEUR :
Supposons que nous voulons tracer trois lignes contenant dix fois le caractère * puis trois lignes de dix
fois le caractère $ puis trois lignes de dix fois le caractère #. Au lieu d'écrire trois procédures, il existe
un moyen plus économique, celui d'introduire des paramètres.

Définition :
Pour écrire des procédures d'ordre général, nous utilisons des paramètres. Ces paramètres permettent
de fournir à la procédure la valeur à utiliser pour initialiser les variables, on les appelle alors des
paramètres VALEUR, correspondant au mode de transmission par valeur encore appelé, le mode
Entrée.
Pour déclarer le paramètre valeur, il suffit de placer le mot clé Entrée abrégé en (E/) devant son nom.
En fait nous pouvons aussi appeler la procédure en utilisant comme paramètre valeur, soit des
constantes, soit des variables, ou encore des expressions (par exemple le langage Pascal évaluera
l'expression et initialisera le paramètre de la procédure avec cette valeur).
Exemple :
On veut afficher 3 lignes de 10 ('*') puis 3 lignes de M ('$') et puis 3 lignes de M+10 ('#');
Algorithme Paramètre ; Var M : entier ;
Procédure dessin (E/ C : caractère ; E/ X : entier) ;
Var i, j : entier ;
début Pour i:=l
à 3 faire
Pour j :=1 à X faire écrire (C) Fait;
/* sauter une ligne */
Fait;

37
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

fin ;
Début
Dessin('*',10) ; {constante} lire(M)
;
Dessin('$',M) ; {variable}
Dessin('#',M+10) ; {expression} Fin.

Remarques :
- Dans le corps de la procédure les paramètres sont utilisés comme si c’était des variables
locales. C'est à dire si la valeur du paramètre valeur change dans la procédure, ce changement n'est pas
valable dans l'algorithme principal.
- Lors de l'exécution des instructions de la procédure, les valeurs initiales de ces « variables
locales particulières » sont les valeurs des variables qui sont indiqués au moment de l'appel.

Exemple :
Algorithme paramètre_valeur ;
Var X : entier ;
Procédure Test (E/ y: entier);
DEBUT
y:=y+10;
écrire (y); {ici y=15}
fin;
Début
X:=5; Test(X);
écrire(X); {ici X=5}
Fin.

b) Paramètres VARIABLE :
Selon l'exemple précédent si on veut modifier la valeur de X, c'est à dire afficher dans l'algorithme
principal la valeur obtenue dans la procédure, il suffit donc de déclarer ce paramètre en mode en
Entrée/Sortie en plaçant devant son nom le mot clé en abrégé (E-S/) Ce type de paramètre s'appelle
paramètre variable. C'est en fait, une transmission par adresse que nous allons expliquer par la suite.
Si nous remplaçons dans l'exemple précédent l'entête de la procédure par :
Procédure Test (E-S/ y :entier) ;
Lorsque la procédure « Test » est appelée on fournit à la procédure l'adresse de la zone contenant la
valeur de X.

38
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Cette procédure manipule alors directement cette variable. La zone du paramètre contiendra donc
l'adresse de cette variable.
Compte tenu de ce mécanisme, les paramètres variables sont aussi appelés paramètres par adresse.

Remarques :
- On appelle les variables décrites dans l'entête de la procédure les paramètres FORMELS.
- On appelle les variables fournis par l'algorithme appelant lors de l'appel de la procédure les
paramètres EFFECTIFS ou REELS.
- Il doit y avoir une correspondance absolue en nombre, en type et en ordre entre les paramètres
formels et les paramètres effectifs.

Conclusion :
- Le paramètre Valeur IMPORTE dans la procédure une valeur (dont la procédure se sert pour
effectuer ses traitements).
- Le paramètre Variable IMPORTE et EXPORTE des valeurs.

Exemple :
Algorithme paramètre ;
Var x : entier ;
Procédure passage_Valeur (E / y : entier) ; Début
écrire (y);
y:=y+4;
écrire (y) ;
Fin ;
Procédure passageVariable (E-S/ y :entier);
Début
Ecrire (y);
y:=y+5; Ecrire
(y)

39
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Fin ; Début x:=2;


Écrire (x);
passage_Valeur (3*x);
écrire(x);
passageVariable(x);
Écrire (x); Fin.

III.6 Le principe d'appel d'une procédure :


L'appel de procédures est schématisé ci-dessous :

• Imbrication des appels :

Lors d'un appel imbrique de procédures nous devons respecter les points suivants :
- Respect de transmission des paramètres.
- Respect de retour de l'action appelée vers l'action appelante.
- Chaque action paramétrée doit avoir un début et une fin bien déterminés.
- Une action paramétrée ne peut appeler que les actions qu'elle englobe directement et celles du
même niveau mais déclarés avant elle.

III.7 Emboîtement des actions paramétrées :


On peut déclarer plusieurs actions l'une après l'autre ou encore une action à l'intérieure d'une autre
action.

Procédure A ; Début

Fin;
Procédure B ; Début
….

40
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Fin;

B peut appeler A mais pas l'inverse.

Si une action est à l'intérieure d'une autre action c'est celle qui est à l'extérieure qui appelle celle qui lui
est à l'intérieure.

Procedure A ; Procedure
B ; Début
….
Fin;
DEBUT {pp de A}
....B;...
FIN;

Procedure A ;
Procedure B ;
Procédure C ;
Début

Fin;

DEBUT {ppdeB}
...C;...
FIN;

Procedure D ;
Début
....B; ...
Fin;
DEBUT {pp de A}
....B;...D;...
FIN;

L'algorithme principal ne peut appeler que A.

IV/ Les Fonctions :

41
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

IV.1. Définition :

Une fonction est une action paramétrée qui rend systématiquement un résultat à travers le nom de la
fonction.

IV.2. Syntaxe :

La déclaration d'une fonction est similaire à celle d'une procédure sauf qu'il faut : utiliser Fonction et
non pas Procédure et indiquer le type de la fonction (c-à-d le type du résultat de la fonction).

FONCTION <nom_identificateur> (liste des paramètres) : <type du résultat> ;


DEBUT

FIN;

Remarques :
- Le résultat peut être de n'importe quel type simple : entier, réel, caractère, booléen, chaîne de
caractères (mais pas le type structuré comme le type tableau).
- Tout ce qui a été dit au niveau des procédures (variables locales et globales, paramètres variable et
valeur) est valable pour les fonctions.
- Il ne faut pas oublier d'affecter une valeur à la fonction dans le corps de la fonction (si vous
l'oubliez, l'algorithme retournera n'importe qu'elle valeur (exactement comme une variable non
initialisée)

Exemple :
Ecrire une action qui retourne (donne) le maximum de deux nombres entiers.

Algorithme traitementfonction ;
Var nbl, nb2, Max : entier ;
Fonction maximum (E/ n1, n2 : entier) : entier ;
Début
Si (nl>n2) alors maximum:=nl
Sinon maximum:=n2;
Fsi ;
Fin; Début
Lire (nbl, nb2);
Max:=maximum (nbl, nb2);
Si (Max>0) Alors Écrire (Max) ;
Fsi;
Fin.
Remarque :
On peut remplacer les instructions :

42
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Max:=maximum (nbl, nb2);


Si (Max>0) Alors Écrire (Max) Fsi;

Par : Si (maximum(nbl,nb2)>0) Alors écrire (maximum(nbl,nb2) Fsi ; Mais l'inconvénient réside dans
le double appel à la fonction maximum.

V Effet de bord :

La communication peut être effectuée de deux manières :


- Une communication explicite à travers la transmission de paramètres par
valeur. - Une communication implicite à travers la transmission des variables
globales.

Une communication implicite est moins contrôlable, moins souple car c'est toujours la même variable
qui est utilisée à chaque exécution de l'action paramétrée. Cette méthode nécessite que l'algorithme
appelant connaisse les détails de l'action appelée, sans quoi des erreurs imprévues peuvent avoir lieu.

Définition : On appelle effet de bord (side effect) les modifications de l'environnement de l'action
paramétrée produite au sein de son exécution, par l'évaluation de l'expression ou l'exécution d'une
instruction. Ces modifications sont en général des changements de valeurs de variables.

Exemple :
Algorithme sideeffect ;
Var R,V :entier ;
Fonction diff (E/ X : entier) ; entier ;
Debut
V :=V-X ;
Diff:=2*X;
Fin ;

Debut
V:=2 ; R :=Diff(2)*Diff(V) ; écrire (R,V) ; { Diff(2)=4, diff (V)==0 résultat (0,0) } V:=2 ;
R :=Diff(V)*Diff(2) ; écrire (R,V) ; { Diff(2)=4, diff (V>=4 résultat (16,-2)} Fin.

VI Les tableaux comme paramètres dans les actions paramétrées :

Ce que nous avons décrit, sur le passage de paramètres simple est valable lorsqu'il s'agit de types
structurés, en particulier, en ce qui concerne le mode de passage (en entrée ou bien en entrée/sortie).
Cependant certains langages comme le Pascal n'admettent pas une déclaration telle que : « a : tableau
[1..10] d'entiers » lorsque ce dernier constitue l'un des paramètres formel de l'action paramétrée. Etant
donné que le langage algorithmique choisi dans notre cours est inspiré du langage Pascal, il serait

43
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

acceptable de maintenir une telle limitation (ce n'est qu'une convention), c'est pourquoi nous sommes
dans l'obligation de procéder par la définition de type structuré.

IV. 1 Définition de type structuré :


Considérons l'entête suivante :

Algorithme typestructuré ;
Type vecteur = tableau [1..20] de réel ;
Nom = tableau [1 ..10] de caractère;

Var Notes : vecteur ; Client : Nom ;

Fonction somme (E/ a : vecteur) : booléen ; Début


……….
fin ;

Cette entête est équivalente à :


Algorithme type_structuré ;
Var
Notes : tableau [1..20] de réel ; Client : tableau [1 ..10] de caractère ;
Fonction somme (E/ a : tableau[1..20] de réels) : booléen ; /* Mais cette écriture n'est pas autorisée
selon notre convention */ Début
…………….
fin ;

IV.2 Exemples :

Exemple l : La somme des éléments d'une matrice d'entiers ;

Algorithme Somme_éléments ;

Type Matrice = tableau [1 ..10 ,1..20] d'entiers ;


Var Mat rmatrice Som rentier ;
Fonction Somme (E/ A : matrice ) : entier ;
Var I,J ,S rentier ;
Début
Pour I :=1 à10 faire
Pour J :=1 à 20 faire S
:=S+A[ij] ;
Fait ; Fait;
Somme :=S ;
Fin ;

44
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

DEBUT
/* on suppose faire ici la lecture de la matrice Mat */
som := somme (mat) ; écrire ('la somme est :',
som ); FIN.

Exemple2 : Inverser l'ordre des éléments d'un tableau :

Algorithme inverser_éléments ;
Type Vecteur = tableau [1 ..30] de réels;
Var T :vecteur ;
I,Taille : entier ;

Procédure inverser (El N rentier ; E_S/ A : vecteur) ;


Var N, I : entier ; X :réel ;
Début
Pour I :=1 à [N/2] faire /* [N/2] désigne le résultat entier de la division de N/2 */ Si
(I<> N-I+1) alors
X :=A[I] ; A [I] := A[N-I+1] ; A[N-I+1] :=X ;
Fsi ;
Fait;
Fin ;

DEBUT
Lire (taille) ;
Pour i :=1 à taille faire lire (T[I]) ; fait ;
Inverser (taille, T) ;
Pour i :=1 à taille faire écrire (T[I]) ; fait ; FIN.

45
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Chapitre V

LES ENREGISTREMENTS

I/ INTRODUCTION :

La structure de données de tableau présente l’inconvénient de ne pouvoir regrouper que des


données de même type. Cependant, il est utile dans certains cas de regrouper des données hétérogènes
(de différents types), tels que les informations concernant un individu, un objet …etc.

II/ DEFINITION :

Un enregistrement est une structure de données constituée d’un nombre fixe de composants de types
différents appelés : CHAMPS.

Exemple 1 :
L’enregistrement Agent contenant les champs :
- Matricule,
- Nom,
- Prenom,
- Adresse
- …

Exemple 2 :
L’enregistrement Eleve décrit dans le schéma suivant :

46
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

III/ DECLARATION DU TYPE ENREGISTREMENT :

Avant de pouvoir déclarer des variables de type enregistrement, on doit définir le type
enregistrement approprié, et ce vu que les champs des enregistrements varient d’un cas à un autre.

Type
<Idf_type> = enregistrement
<champs1> : <type_champs1> ;
<champs2> : <type_champs2> ;

<champsn> : <type_champsn> ;
fin ;
Exemple :
Agent = enregistrement
Matricule : entier ;
Nom : chaine [15] ;
Prenom : chaine [15] ;
Salaire : reel ;
fin ;

Exemple :
TYPE eleve = ENREGISTREMENT

Matricule : Chaine [7]

47
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Nom , prenom : Chaîne[25]

Datenaiss: ENREGISTREMENT

JJ : 0..31

MM : 1..12

AA :1950..3000

FIN

Resultats : Tableau [1..5] de réel


Adresse : ENREGISTREMENT

Norue : entier

Rue :chaîne[30]

Codpost : Entier

Ville, Pays : Chaîne[30]

FIN

FIN

III/ DECLARATION DE VARIABLES DE TYPE ENREGISTREMENT :

Var
<idf_var1>, <idf_var2>, … : <type_enreg> ;

où : <type_enreg> : est un type enregistrement déclaré.

Exemple :
Var
Ag : agent ; etudiant
: eleve ;
Promo : tableau [1..300] de eleve ;

IV/ ACCES AUX CHAMPS D’UNE VARIABLE ENREGISTREMENT :

48
Ecole Supérieure des Sciences Appliquées Alger
Cours d’algorithmique 1ere Année

Un champs d’identificateur <idf_champs> d’un enregistrement < idf_enreg> est référence comme suit
:
<idf_enreg>.<idf_champs>

Exemples :
Lire(Agent.matricule) ;
A := ETUDIANT.ADRESSE.CODPOST ;
Si ELEVE.DATNAISS.MM = 1 Alors s := s +1 ;

49

Vous aimerez peut-être aussi