Académique Documents
Professionnel Documents
Culture Documents
Définitions
Le mot « algorithme » provient de la forme latine (Algorismus) du nom du mathématicien
musulman AL KHWARIZMI. Il tenta une première définition : « Un algorithme est une séquence
d'opérations visant à la résolution d'un problème en un temps fini. »
Un algorithme est une suite d'actions élémentaires qu'il faut effectuer pour résoudre un problème.
Algorithme et Programme
Tout problème à programmer doit être résolu, d'abord sous forme d'algorithme, puis converti en
programme dans le langage de votre choix. En effet, un algorithme est indépendant du langage de
programmation à utiliser.
Un programme est un enchaînement d'instructions écrites dans un langage de programmation
exécuté par un ordinateur, permettant de traiter un problème et de renvoyer des résultats. Il
représente la traduction d'un algorithme à l'aide d'un langage de programmation
Les Variables
1. La notion de variable
Dans un programme informatique, on va avoir en permanence besoin de stocker provisoirement
des v de données issues du disque dur ou
au clavier). Ces données peuvent être de plusieurs types : elles peuvent être des nombres, du
une variable.
1.1. Déclaration des variables
La première chose à faire avant de pouvoir utiliser une variable est de créer la boîte et de lui
coller une étiquette. Ceci se fait tout au début de l algorithme, avant même les instructions
proprement dites. C est ppelle la déclaration des variables. Une variable ne peut être
utilisée que si elle est déclarée. La déclaration se fait par la donnée du nom de la variable et du
type de la variable.
on lui attribue un nom et on lui réserve un emplacement
type de la variable.
VARIABLES
nom_variable : Type ;
nom1_variable1, nom2_variable2 : Type ;
2. Types de variables
2.1. Type numérique
VARIABLES
On écrit alors
i, j, k : ENTIER ;
2
Algorithmique
2.1.2. REEL
Le type réel comprend les variables numériques qui ont des valeurs réelles. La plage des valeurs
du type réel est :
-3,40x1038 à -1,40x1045 pour les valeurs négatives
1,40x10-45 à 3,40x1038 pour les valeurs positives
VARIABLES
On écrit alors : x, y : Reel ;
Remarque : Le type de variable choisi pour un nombre va déterminer les valeurs maximales et
minimales des nombres pouvant être stockés dans la variable. Elle détermine aussi la précision de
ces nombres (dans le cas de nombres décimaux).
Le nombre maximal de caractères pouvant être stockés dans une seule variable chaîne dépend du
langage utilisé.
VARIABLES
On écrit alors : nom, prenom, adresse : CHAINE ;
Une chaîne de caractères est notée toujours soit entre guillemets, soit entre des apostrophes.
suivantes :
Confondre un chiffre et une suite de chiffres. Par exemple, 423 peut représenter le nombre 423
(quatre cent vingt-trois), ou la suite de caractères 4, 2, et 3.
La confusion qui consiste à ne pas pouvoir faire la distinction entre le nom d'une variable et son
contenu.
Remarque : Pour les valeurs des variables de type chaîne, il faut respecter la casse. Par exemple,
la chaîne Salut est différente de la chaîne salut .
2.3. Type booléen (Logique)
Dans ce type de variables on y stocke uniquement des valeurs logiques VRAI ou FAUX, TRUE
ou FALSE, 0 ou 1.
VARIABLES
On écrit alors : etat_interrupteur : LOGIQUE ; ou
etat_interrupteur :BOOLEEN ;
3
Algorithmique
3. Les constantes
Comme une variable, une constante est un emplacement mémoire réservé auquel on accède par le
nom qui lui a été attribué, mais dont la valeur stockée ne sera jamais modifiée au cours du
programme.
Syntaxe :
Constante nom_de_la_constante = valeur
Exemple :
Constante pi = 3.14
4
Algorithmique
Opérateurs et expressions
1. Opérateurs
Un opérateur est un signe qui relie deux variables pour produire un résultat.
Les opérateurs dépendent des types des variables mis en jeu.
Pour le type numérique on a les opérateurs suivants :
+ : Addition - : Soustraction
* : Multiplication / : Division
^ : Puissance Div: Division entière (euclidienne)
Mod : Reste de la division entière
Tandis que pour le type chaîne, on a un seul opérateur qui permet de concaténer deux chaînes de
caractères. Cet opérateur de concaténation est noté & (+).
Par exemple : la chaîne de caractères Salut concaténée à la chaîne tout le monde donne
comme résultat la chaîne Salut tout le monde .
"Salut" & "tout le monde" Salut tout le monde .
"Salut" + "tout le monde" Salut tout le monde .
2. Expressions
Une expression est un ensemble de variables (ou valeurs) reliées par des opérateurs et dont la
valeur du résultat de cette combinaison est unique.
des
opérateurs est important. En effet, la multiplication et la division sont prioritaires par rapport à
n.
s.
3.
tation est une opération qui consiste à attribuer une valeur à une variable. On
la notera par avec une flèche orientée vers la gauche :
Par exemple :
Variable valeur
Montant 3500
Par exemple : A B
A B*2+5
Remarque :
tation on a toujours :
tation le nom de la variable
résultat final.
Exemple :
Cas Instructions Valeur de A
A 15
1 30
A 30
A 30
2 15
A 15
6
Algorithmique
:
Ecrire (NomVariable);
Ou de façon générale
Ecrire (Expression);
Remarque
Exemple :
Algorithme calcul_carre
Variables
A, Carre : Reel;
Debut
Ecrire ("Entrez un nombre");
Lire (A);
7.
qui fournit le prix total TTC correspondant. Faire en sorte que des libellés apparaissent
clairement.
10. le responsable de l entreprise X souhaite donner une récompense à ses salariés en leur offrant
63% du salaire de chacun d eux.écrire l algorithme permettant à chaque employé travaillant à
l entreprise de saisir son salaire et de savoir combien il aura comme récompense.
Vous êtes : Ahmed Saddiqi agé(e) de : 18 ans votre CNE est : E321456 de la filière DSI
8
Algorithmique
LA STRUCTURE ALTERNATIVE
1. Les conditions simples
Une condition simple consiste en une comparaison entre deux expressions du même type. Cette
comparaison s'effectue avec des opérateurs de comparaison. Voici la liste de ces opérateurs
accompagnée de leur signification dans le cas des types numérique ou chaîne :
Signification Signification
Opérateur
numérique chaîne
= égal à égal à
<> différent différent
< inférieur placé avant dans l'ordre alphabétique
> supérieur placé après dans l'ordre alphabétique
<= inférieur ou égal placé avant dans l'ordre alphabétique ou égal
>= supérieur ou égal placé après dans l'ordre alphabétique ou égal
Remarque : Pour la comparaison du type chaîne c'est l'ordre alphabétique qu'est utilisé dans le
cas où l'on compare deux lettres majuscules ou minuscules. En effet, si l'on compare majuscules
et minuscules, il faut savoir que les majuscules apparaissent avant les minuscules. Ainsi, par
exemple : "M" < "m".
2. Les conditions complexes
Certains problèmes exigent parfois de formuler des conditions qui ne peuvent pas être exprimées
sous la forme simple vu en dessus. A cet effet, la plupart des langages autorisent des conditions
formées de plusieurs conditions simples reliées entre elles par ce qu'on appelle des opérateurs
logiques. Ces opérateurs sont : Et, Ou et Non.
Tableaux d'évaluations
A et A ou Vrai Faux
Vrai Faux Non A
B B A
Vrai Vrai Vrai
Vrai Vrai Faux Vrai Faux
Faux Vrai Faux
Faux Faux Faux Faux Vrai
D'une manière générale, les opérateurs logiques peuvent porter, non seulement sur des conditions
simples, mais aussi sur des conditions complexes. L'usage de parenthèses permet dans de tels cas
de régler d'éventuels problèmes de priorité.
Par exemple, la condition : (a < 0 ET b > 1) OU (a > 0 ET b > 3) est Vrai si l'une des conditions
entre parenthèses est Vrai.
Exercice
Evaluer les expressions logiques suivantes, avec (a, b, c, d) = (2, 3,5, 10) et (X, Y) = (V, F).
1) (a < b) Et (a < c) 2) (a < b) Ou (a < c) 3) Non (a < b) Et (a < c)
4) (a < c) Et (c = d/2) 5) Y= (d / a = c) 6) Y= (d / c = b)
7) X = (d / c = b) 8) (a < b) Ou (d < c) 9) X = (a < b) Et (d < c)
9
Algorithmique
3. La structure alternative
Syntaxe
Si <Condition> Alors
-1>
[Sinon
-2>]
FinsiI
Format Organigramme
fausse vraie
e condition
TRAITEMENT-2 TRAITEMENT-1
FINSI
La <condition> est une expression, qui peut être vraie ou fausse, selon les valeurs des
paramètres la constituant.
Si la condition est vérifiée (sa valeur est vraie -1> qui sera
e après le Finsi.
(valeur de la condition est
fausse - facultative). Si
Les suites d'action 1 et 2, peuvent être des actions simples ou même des structures
conditionnelles.
Exemple 1
Algorithme POS_NEG
Variable
Reel A;
Debut
Ecrire("Donner un nombre ");
Lire(A);
Si (A < 0) Alors
Ecrire(A, " est négatif ");
Sinon
Ecrire(A, " est positif ");
Finsi
Fin
Dans cet exemple, on a déterminé uniquement les cas de positivité ou de négativité, et on n'a pas
déterminé le cas où A est nulle.
10
Algorithmique
Algorithme POS_NEG_NUL
Variable
Reel A;
Debut
Ecrire("Donner un nombre ");
Lire(A);
Si (A < 0) Alors
Ecrire(A, " est négatif ");
Sinon { A>=0}
Si (A > 0) Alors
Ecrire(A, " est positif ");
Sinon { A=0}
Ecrire(A, " est nulle ");
Finsi
Finsi
Fin
Remarque : Il peut arriver que l'une des parties d'une structure alternative contienne à son tour
une structure alternative. Dans ce cas, on dit qu'on a des structures alternatives imbriquées les
unes dans les autres.
Exercices
1.
produit est négatif, positif ou nul.
Remarque : on ne doit pas calculer le produit des deux nombres.
11
Algorithmique
3. A :
1% si le montant est compris entre 2000 et 5000 Dhs (valeurs comprises)
2 % si le montant est supérieur à 5000 Dhs.
4. Écrivez un algorithme qui permet de discerner une mention à un étudiant selon la moyenne de
ses notes :
- "Très bien" pour une moyenne comprise entre 16 et 20 (16<= moyenne <=20)
- "Bien" pour une moyenne comprise entre 14 et 16 (14<= moyenne <16)
- "Assez bien" pour une moyenne comprise entre 12 et 14 (12<= moyenne <14)
- "Passable" pour une moyenne comprise entre 10 et 12 (10<= moyenne <12
5. Les étudiants ayant passé l'examen d rithmique en session de Juin ont été classés selon
leurs notes en trois catégories :
pour une note inférieure strictement à 5, l'étudiant est éliminé,
pour une note supérieure ou égale à 5 et inférieur strictement à 10, l'étudiant passe la
session de rattrapage,
pour une note supérieure ou égale à 10, l'étudiant valide le module
Ecrivez un algorithme qui dem utilisateur d trer la note du module, puis affiche la
situation de l'étudiant selon sa note (on suppose que l'utilisateur entre une note valide entre 0 et
20).
12
Algorithmique
LIRE(MOY)
S S + MOY
LIRE(MOY)
La boucle POUR donne l'ordre à la machine d'itérer les deux actions S S+ MOY N fois.
13
Algorithmique
Application
Le compteur varie de 1 jusqu'à N avec un pas de 1.
ALGORITHME MOYENNE
Variables
Entier N, i ;
Reel MOY, S, MC;
Debut
Ecrire("Donner le nombre d'étudiants");
Lire(N);
SI (N > 0) ALORS
S 0; {Initialisation de S}
Pour i DE 1 A N FAIRE {Le pas égale 1 par défaut}
Ecrire("Donner la moyenne de l'étudiant n°", i);
Lire(MOY);
S S + MOY; {on rajoute la moyenne du iième étudiant à la somme}
Fin Pour
MC S / N ;
Ecrire("La moyenne de la classe est : ", MC);
Sinon
Ecrire("Erreur dans le nombre d'étudiants");
Finsi
Fin
lisée. Sa syntaxe
est :
Répéter
<Traitement>
Jusqu'à (condition)
14
Algorithmique
Cet ordre d'itération permet de répéter le <Traitement> une ou plusieurs fois et de s'arrêter sur
une condition. En effet, lorsque la condition est vérifiée, la boucle s'arrête, si non elle ré-exécute
le <Traitement>.
Remarques
Dans cette boucle, le traitement est exécuté au moins une fois avant l'évaluation de la
condition d'arrêt.
Il doit y avoir une action dans le <Traitement> qui modifie la valeur de la condition.
Application
Ecrire un algorithme qui saisit un nombre pair et qui détermine combien de fois il est divisible par
2. Exemple 8 est divisible 3 fois par 2 (2*2*2).
ALGORITHME PAIR_NBDIV2
Variables
Entier N, N2,NB;
Debut
{Saisie d'un entier qui doit être pair}
Répéter
Ecrire("Donner un entier pair") ;
Lire(N) ;
Jusqu'à (N MOD 2 = 0) {condition pour que N soit pair}
{Détermination du nombre de division par 2}
N2 0 ;
NB N ;
Répéter
NB NB div 2 ;
N2 N2 +1 ;
Jusqu'à (NB MOD 2 <> 0) {On s'arrête lorsque NB n'est plus divisible par 2}
Ecrire(N, "est divisible par 2", N2,"fois")
FIN
3. La bou
Sa syntaxe
est :
Tant Que (condition d'exécution) Faire
<Traitement>
Fin TantQue
Cet ordre d'itération permet de répéter le <Traitement> zéro ou plusieurs fois et de s'arrêter
lorsque la condition d'exécution n'est plus vérifiée. En effet, lorsque la condition d'exécution est
vérifiée, le <Traitement> est exécuté, si non elle s'arrête.
15
Algorithmique
Les étapes d'exécution de la boucle Répéter
1) Test de la valeur de la <condition d'exécution>
2) Si elle est vérifiée Alors
Exécution du <Traitement>
Retour à l'étape 1.
Sinon Arrêt de la boucle.
Remarques
Dans cette boucle, le traitement peut ne pas être exécuté aucune fois, c'est lorsque la
condition d'exécution est à fausse dés le départ.
Les paramètres de la condition doivent être initialisés par lecture ou par affectation avant
la boucle.
Il doit y avoir une action dans le <Traitement> qui modifie la valeur de la condition.
Application
Ecrire un algorithme qui saisit un nombre pair et qui détermine combien de fois il est divisible par
2. Exemple 8 est divisible 3 fois par 2 (2*2*2).
ALGORITHME PAIR_NBDIV2
Variables
Entier N, N2,NB;
Debut
{Saisie d'un entier qui doit être pair}
Répéter
Ecrire("Donner un entier pair") ;
Lire(N) ;
Jusqu'à (N MOD 2 = 0) {condition pour que N soit pair}
{Détermination du nombre de division par 2}
N2 0 ;
NB N ;
Tant Que (NB MOD 2 = 0)
NB NB div 2 ;
N2 N2 +1 ;
Fin TantQue {On s'arrête lorsque NB n'est plus divisible par 2}
Ecrire(N, "est divisible par 2", N2,"fois") ;
FIN
Remarque
La condition d'arrêt avec la boucle Répéter est l'inverse de la condition d'exécution de la
boucle TANTQUE.
Le Traitement d'une boucle peut contenir lui aussi une autre boucle. On l'appelle dans ce
cas des boucles imbriquées.
16
Algorithmique
Exercices
1. Ecrire l'algorithme qui permet d'afficher les N premiers entiers impairs dans l'ordre
décroissant.
3. Ecrire l'algorithme qui permet de calculer le produit de deux entiers en utilisant des
additions successives.
4. Ecrire l'algorithme qui permet de calculer la division de deux entiers en utilisant des
soustractions successives
5. Ecrire l'algorithme qui permet de saisir un entier N et d'afficher s'il est premier ou non. Un
nombre est dit premier s'il est divisible uniquement par 1 et par lui-même.
6. Ecrire l'algorithme qui détermine le 20ieme terme d'une suite définie par :
7. Ecrire l'algorithme qui détermine le N'eme terme d'une suite définie par :
17
Algorithmique
LES TABLEAUX
II est courant d'avoir besoin de gérer plusieurs éléments qui appartiennent au même type de
données. A titre d'exemple, supposez que nous souhaitions déterminer, à partir de 30 notes
fournies en donnée, combien d'élèves ont une note inférieure à la moyenne de la classe. Pour
parvenir à un tel résultat, nous devons :
Déterminer la moyenne des 30 notes, ce qui demande de les lire toutes,
Déterminer combien parmi ces 30 notes, sont inférieures à la moyenne précédemment
obtenue.
Vous constatez que si nous ne voulons pas être obligé de demander deux fois les notes à
l'utilisateur, il nous faut les conserver en mémoire. Pour ce faire, il paraît peu raisonnable de
prévoir 30 variables différentes. Le tableau va nous offrir une solution convenable à ce problème.
Définition :
Un tableau (Vecteur) représente un ensemble d'emplacements mémoire regroupés d'une façon
séquentielle, qui portent le même nom et contiennent le même type de données. Chacun de ces
emplacements est appelé élément du tableau et repérée par un nombre appelé indice.
Un tableau peut être à une ou à plusieurs dimensions. Il n'y a pas de limite au nombre de
dimensions.
1. Les tableaux à une dimension :
Un tableau à une dimension à N éléments est représenté en mémoire comme suit :
Donnée Donnée Donnée Donnée Donnée
Élément 1 Élément 2 Élément 3 Élément 4 Élément 5
Exemple : soit le tableau MOY
Contenu 15 12 5 10 4 17
Indice 0 1 2 3 4 5 6 7 8 9 10 11 12
syntaxe suivante :
18
Algorithmique
Nom_Tableau (indice)
Exemple si X est un tableau de 10 entiers :
- 5 Met la valeur -5 dans la 3ème case du tableau
En considérant le cas où A est une variable de type Entier,
Met la valeur de la 3ème case du tableau tab dans A - à- dire -5
Lire (X (1)) deuxième case du tableau
Ecrire (X (1)) affiche la valeur de la deuxième case du tableau
Remarques :
:
Une constante Note(5)
Une variable Note(i)
Une expression Note(i*2)
Remplissage d un Tableau
nnées des éléments du tableau (remplir des
cases successives du tableau). On doit utiliser une boucle qui permet de saisir à chaque entrée
dans la boucle la iième case.
Exemple
ALGORITHME Remplissage
Variables
Reel Tableau Moy(50), Smoy;
Entier i, N;
Début
Ecrire ("Saisir le Nombre d'étudiants :");
Lire(N);
{Chargement du tableau}
Pour i de 1 à N faire
Ecrire ("donne ", i);
Lire (Moy(i));
Fin Pour
{Fin chargement}
{Calcul de la somme des moyennes}
Smoy 0;
Pour i de 1 à N Faire
Smoy Smoy+Moy(i);
Fin Pour
Smoy Smoy /N;
Ecrire (" la moyenne de la classe est ", Smoy)
Fin
On peut écrire les deux premières boucles en une seule. Simplifier alors cet algorithme.
Application
1) Charger un vecteur de 10 éléments par les 10 premiers entiers naturels positifs.
2) Charger un vecteur de 10 éléments par les 10 premiers multiples de 7.
19
Algorithmique
Recherche dans un tableau
Recherche séquentielle
On peut chercher le nombre d'apparition d'un élément dans un vecteur, sa ou bien ses positions.
Pour cela, on doit parcourir tout le vecteur élément par élément et le comparer avec la valeur de
l'élément à chercher.
Applications
Chercher la position de la première occurrence d'un élément X dans un vecteur V contenant N
éléments. (On suppose que le vecteur est définit)
Chercher le nombre d'apparition d'un élément X dans un vecteur V contenant N éléments,
ainsi que les positions des occurrences de cet élément.
Réponse 1
i 1
Trouv faux
Tant que ((i <= N) et (Trouv = faux)) Faire
Si V(i) = X Alors
Trouv vrai
Sinon
i i +1
Fin Si
Fin TantQue
Si (Trouv = vrai) Alors
Ecrire(X, "se trouve à la position", i)
Sinon
Ecrire(X, "ne se trouve pas dans V")
Fin Si
Recherche dichotomique (Binaire)
Soit T un tableau de N éléments ordonnés et x un élément de même type que les éléments de T. Il
s'agit d'examiner la présence de x dans T. Comme le tableau est ordonné, il satisfait la
spécification suivante :
i [1 , N-1] T (i) T (i+1)
Au lieu de faire une recherche linéaire (Parcourir tout le tableau T du premier élément au dernier)
on décompose le tableau en deux sous-tableaux T1 et T2 et trois cas peuvent se produire :
x est trouvé la recherche est terminé.
la recherche continue dans T1.
la recherche continue dans T2.
Exemple
Soit le tableau suivant T :
1 2 3 4 5 6 7 8
3 7 8 8 11 15 20 24
Vous constatez que le tableau T est déjà ordonné. On va voir comment s'applique la méthode de
recherche binaire pour rechercher si x = 20 existe dans le tableau T.
On divise l'intervalle des indices [1,8] en deux intervalles [1,4] et [5,8]. On obtient deux tableaux
T1 et T2.
1 2 3 4 5 6 7 8
20
Algorithmique
3 7 8 8 11 15 20 24
x T1 x T2
La recherche va continuer dans le tableau T2 puisque x (20) est plus supérieur que le plus grand
élément de T1. Donc l'intervalle de recherche devient [5,8] et on va le diviser à son tour en deux
intervalles [5,6] et [7,8].
5 6 7 8
11 15 20 24
x T1 x T2
De même, la recherche va continuer dans T2. L'intervalle de recherche devient [7,8]. On le divise
en deux intervalles [7,7] et [8,8].
Finalement, x est trouvé.
7 8
20 24
x T1 x T2
21
Algorithmique
Exercices
1. :
Variable
Entier i, Tableau C (6);
DEBUT
POUR i de 1 à 6 Faire
Lire C (i) ;
FIN POUR
POUR i de 1 à 6 Faire
;
FIN POUR
POUR i de 1 à 6 faire
Ecrire C (i) ;
FIN POUR
FIN
Si on saisit successivement les valeurs : 2 , 5 , 3 , 10 , 4 , 2.
2. :
Variable
Entier Tableau suite (8) ,i ;
DEBUT
POUR i de 3 à 8 Faire
su - 1) + suite (i - 2) ;
FIN POUR
POUR i de 1 à 8 Faire
Ecrire suite (i) ;
FIN POUR
FIN
3.
plus grand élément et la position du plus petit élément du tableau.
4. Soit T un tableau de N réels. Ecrire le programme qui permet de calculer le nombre des
-à-dire combien de fois ce nombre X figure dans le tableau T).
22
Algorithmique
Exemple :
On veut saisir des notes pour un calcul de moyenne, mais on ne sait pas combien il y aura de
quelque chose du genre :
Variables
Reel Tableau Notes ();
Entier n;
DEBUT
Ecrire ( -t-il de notes à saisir );
Lire (nb);
Redim Notes(nb);
FIN
Exercices
1.
Soit T un tableau de N éléments. Ecrire un programme qui per
position i du tableau T.
2.
Soit T un tableau de N éléments. Ecrire un programme qui permet de supprimer un élément x du
tableau.
23
Algorithmique
Exemple :
:
T (1 , 4)
T (3 , 4)
T (1, 4) et T(3 , 4) sont deux éléments du tableau. Entre parenthèse on trouve les valeurs des
indices séparées par une virgule. Le premier sert à repérer le numéro de la ligne, le second le
numéro de la colonne.
Par exemple :
Entier Tableau X (10 , 9 , 5);
Ainsi que leur utilisation :
24
Algorithmique
variable
Entier Tableau matrice(10,10),i,j,n,k;
Début
pour i de 1 à n faire
pour j de1 à k faire
Ecrire (matrice(i,j ));
finpour
fipour
fin
25
Algorithmique
Exercices
1. Considérons le programme suivant :
Variables
Entier Tableau X (2 , 3), i , j , val ;
DEBUT
POUR i de 1 à 2 Faire
POUR j de 1 à 3 Faire
FIN POUR
FIN POUR
POUR i de 1 à 2 Faire
POUR j de 1 à 3 Faire
Ecrire X (i , j);
FIN POUR
FIN POUR
b. que produira ce p :
POUR j de 1 à 3 Faire
POUR i de 1 à 2 Faire
Ecrire X (i , j);
FIN POUR
FIN POUR
2. Quel résultat fournira ce programme :
Variables
Entier Tableau X (4 , 2) , k , m;
DEBUT
POUR k de 1 à 4 Faire
POUR m de 1 à 2 Faire
X (k , m)
FIN POUR
FIN POUR
POUR k de 1 à 4 Faire
POUR m de 1 à 2 faire
Ecrire X (k , m);
FIN POUR
FIN POUR
3. Soit T un tableau à deux dimensions de vingt lignes et cinquante colonnes.
a. Ecrire un algorithme qui permet de calculer la somme de tous les éléments du tableau.
b.
c.
somme des éléments négatifs (sneg) de ce tableau.
d.
ainsi que sa position.
Voir Série d'exercices N° 4 (TD 4)
26
Algorithmique
FIN SI
FIN POUR
FIN
Exemple
Soit le tableau suivant :
52 10 1 25
Boucle Valeur de
Etat du tableau
REPETER nc
10 52 1 25
Itération 1 10 1 52 25 3
10 1 25 52
1 10 25 52
Itération 2 1 10 25 52 1
1 10 25 52
Itération 3 1 10 25 52 0
Tri par sélection
27
Algorithmique
Principe
Le principe du tri par sélection est d'aller chercher le plus petit élément du vecteur pour le mettre
en premier, puis de repartir du second élément et d'aller chercher le plus petit élément du vecteur
pour le mettre en second, etc...
Au ième passage, on sélectionne donc l'élément le plus petit parmi les éléments { T(i) ...T(n) } et
on l'échange avec T(i).
Algorithme
Variables
Reel Tableau T(N),z;
Entier i,k,j ;
DEBUT
POUR i = 1 A N-1Faire
FIN SI
FIN POUR
FIN SI
FIN POUR
FIN
FIN SI
FIN POUR
T1(n
FIN POUR
FIN
Algorithme
Variables
Entier Tableau T(N) , i , j , z;
DEBUT
REPETER
SI T(j) > T(j+1) ALORS
SINON
j = j+1
FIN SI
JUSQU'A j = N
FIN
FIN POUR
FIN
29
Algorithmique
Les Fonctions
Une fonction est un sous-programme qui retourne un seul résultat.
Pour définir une fonction on utilise la syntaxe suivante :
FONCTION nom_fonction (Type Argument1, Type, Argument2, : Type
Déclarations
DEBUT
Instructions de la fonction
FIN
Une fois la fonction définie, il est possible (en fonction des besoins) à tout endroit du programme
appelant de faire appel à elle en utilisant son nom suivi entre parenthèse des paramètres effectifs
séparés par des virgules. Un paramètre effectif peut être soit une constante ou une variable.
Remarque
Chaque paramètre effectif est associé à un paramètre formel et les deux doivent être du même
type. Le nombre des paramètres effectifs doit être égal aux nombres des paramètres formels.
Quand on appelle une fonction chaque paramètre formel reçoit la valeur du paramètre effectif
correspondant.
Une fonction possède un seul type, qui est le type de la valeur retournée qui est affecté au nom de
FIN
Calcul » est de type réel
et elle admet trois arguments de type réel.
Maintenant voici un exemple de programme complet :
FIN
Variables
Reel i , j , k , b;
DEBUT
Lire( i);
30
Algorithmique
Lire( j);
Lire(k);
Ecrire (b)
FIN
Dans ce programme on fait appel a une fonction. Sa valeur est utilisée dans une expression.
Exercice
1. Définir la fonction « Somme
comme valeur la somme des valeurs reçues.
2. Définir la fonction « Absolue » qui renvoie
comme paramètre.
3. Définir la fonction « Inverse
paramètre.
4. Définir la fonction « Max » qui renvoie le maximum de deux valeurs.
5. Ecrivez un pro
6.
renvoie la même chaîne mais en remplaçant les « a » par des « i ». On suppose que vous disposer
des deux fonctions prédéfinies suivantes :
LONGUEUR
Utilisation LONGUEUR (chaîne)
EXTRAIRE
Utilisation : EXTRAIRE (chaîne , position_Debut, longueur)
Paramètre :
chaîne
Remarque :
Exemple
Soit le programme suivant :
31
Algorithmique
Fonction Surface (Reel a) : Réel
Variables
Reel valeur , resultat;
DEBUT
;
*a;
;
FIN
*************************************
Variable rayon : Réel
DEBUT
Ecrire (" Entrez le rayon du cercle : ");
Lire( rayon);
Ecrire (" La surface de cette cercle est : " , Surface (rayon));
FIN
Les variables valeur et resultat déclarées dans la fonction Surface sont locales.
Considérons presque le même programme sauf que la variable valeur est déclarée maintenant
dans le programme appelant.
Fonction Surface (Reel a) : Réel
Variables
Reel valeur , resultat;
DEBUT
;
*a;
;
FIN
*************************************
Variablevaleur, rayon : Réel
DEBUT
32
Algorithmique
Exemple
Considérons les deux programmes suivants :
Programme 1
Fonction Calcul (Reel a) : Réel
DEBUT
1;
;
FIN
********************
Variable
Reel x;
DEBUT
;
Ecrire( Calcul (x));
Ecrire (x);
FIN
Programme 2
Fonction Calcul (Reel a) : Réel
DEBUT
1;
;
FIN
********************
Variable
Reel x;
DEBUT
Dans le premier programme on a un passage de paramètre par valeur et dans le deuxième par
adresse. Le premier programme affichera le résultat suivant : 4 3
car même si la valeur de a change celle de x non.
Tandis que le deuxième programme il affichera : 4 2
la valeur de x changera car celle de a a changée.
33
Algorithmique
Les procédures
Les procédures sont des sous- programmes qui ne retournent aucun résultat. Elles admettent
comme les fonctions des paramètres.
On déclare une procédure de la façon suivante :
PROCEDURE nom_procedure (Type Argument1,
Déclarations
DEBUT
Instructions de la procédure
Fin Procédure
Et on appelle une procédure comme une fonction, en indiquant son nom suivi des paramètres
entre parenthèses.
Exemple :
Ecrire une procédure qui ajoute 2 à un entier :
Exemple 2 :
Ecrire un algorithme qui :
- Lit un entier positif puis
- Affiche tous les nombres impaires inférieures à n.
Algorithme ex2
Variable i, n : entier
Procédure aug2(n : entier)
Début
n n+ 2
Fin Procédure
Début
Lire (n)
i 1
Ecrire(i)
aug2(i)
Fin TantQue
Fin
Remarque :
- Une procédure ne retourne pas de valeur.
: ne pas écrire j
34
Algorithmique
définie.
Même remarque pour les fonctions.
Exemple :
Procédure aug4(n : entier)
Début
aug2(n)
aug(n)
Fin Procédure
Exercice
procédure « Echanger ».
3.
4. Ecrire une procédure qui permet de lire deux nombres, calculer la somme et le produit et si ces
derniers sont positifs ou négatifs.
5. Ecrire une procédure qui permet de lire une liste de nombres entiers dont la dernière valeur =
-
Fonctions récursives
Introduction
Il arrive, en mathématique, que des suites soient définies de la manière suivante :
u0 = constante
U n = f ( U n-1)
Exemple : La suite factorielle : n ! = n x ( n - 1 ) ! , pour n>1 avec 0!=1, peut s'écrire :
f(0)=1
f(n)=n*f(n-1)
Ce que l'on peut traduire par : f(n) = ( s i n=0 alors 1 sinon n * f ( n - 1 ) ) . Cela peut se
traduire en algorithmique par :
fonction factorielle1(Entier n): entier
Variable
Entier Resultat;
Début
si (n=0) alors Resultat=1;
sinon Resultat = n*factorielle1(n -1)
finsi
factorielle1=Resultat;
fin
Dans la fonction factorielle1(), on constate que la fonction appelle elle-même. Ceci est
possible, puisque la fonction factorielle1() est déclarée avant son utilisation (c'est l'entête d'une
fonction qui la déclare).
Que se passe-t-il lorsque on calcul f a c t o r i e l l e 1 ( 3 ) ?
factorielle1(3) = 3 * factorielle1(2)
35
Algorithmique
= 3 * (2*factorielle1(1)
= 3 * (2 * (1*factorielle1(0))) = 3 * (2 * (1 * ( 1 ) ) )
= 3 * (2 * (1)) = 3 * (2) = 6
Définition de la récursivité
La récursivité est un concept fondamental en mathématiques et en informatique. La définition la
plus simple que l'on puisse en donner consiste à dire qu'un programme récursif est un programme
qui appelle lui-même. Pourtant, il faut appeler lui-même si l'on
veut éviter la boucle infinie. Un programme récursif doit contenir une condition de terminaison
qui autorise le programme à ne plus faire appel à lui-même. Les définitions récursives de
fonctions sont fréquentes en mathématiques ; le type le plus simple, portant sur des arguments
entiers, est la relation de récurrence. La fonction la plus familière de ce type est sans doute la
fonction factorielle vue plus haut.
La fonction factorielle1() illustre les caractéristiques élémentaires de tout programme récursif
(elle appelle elle-même, avec une valeur inférieure de l'argument et elle contient une condition de
terminaison dans laquelle elle calcule directement le résultat), mais on ne peut cacher qu'il n'est
rien d'autre qu'une boucle "pour". Cet exemple ne démontre pas vraiment la puissance d'un
programme récursif.
fonction factorielle2(Entier n) : entier
variables
Entier f a c t , i ;
début
fact =1
pour i = 2 à n f a i r e
fact = f a c t * i;
finpour
f a c t o r i e l l e 2 =f a c t ;
fin
Exercices
1. Écrivez une fonction qui prend pour argument un tableau d'entiers T, sa taille n, une valeur x,
et il indique ensuite si l'élément x appartient ou non au tableau T.
2. Écrivez une fonction qui prend pour argument un tableau d'entiers T et sa taille n, et nous
informe si les éléments d'un tableau d'entiers sont tous consécutifs ou non. (Par exemple, si le
tableau est : 7; 8; 9; 10, ses éléments sont tous consécutifs. Si le tableau est : 7; 9 ; 10; 11, ses
éléments ne sont pas tous consécutifs).
3. Écrivez une fonction qui prend pour arguments un tableau de réels T et sa taille n, et nous
donne la plus grande et la plus petite valeur du tableau T.
36