Vous êtes sur la page 1sur 45

Ch.

I Niveau : 4ème Scientifiques

I. Les constantes
1. Définition
Une constante est un objet dont sa valeur reste fixe tout le long de l’exécution d’un programme. Elle est
caractérisée par un nom et une valeur
2. Déclaration
Au niveau de l’algorithme Au niveau du programme Pascal

~Tableau de déclaration des objets (T.D.O) ~

Objet Type/nature Rôle Const


Nom de la constante Constante = valeur Rôle Nom de la constante = valeur ;
Exemple :
Objet Type/nature Rôle Const
PI Constante = 3,14 Contenir la valeur de PI PI = 3.14 ;

II. Les variables


1. Définition
Une variable est un objet dont le contenu peut changer le long de l’exécution d’un programme. Elle est
caractérisée par un nom, un type et un contenu.
2. Déclaration
Au niveau de l’algorithme (T.D.O) Au niveau du programme Pascal

Objet Type/nature Rôle Var


Nom de la variable Type de la variable Rôle Nom de la variable : type ;

3. Les types d’une variable

a) Le type entier
Domaine
- Les variables de type entier forment un sous-ensemble des entiers relatifs (un sous-ensemble de Z)
- Elles appartiennent à [-32768 .. 32767]
Les opérateurs arithmétiques

Opérateur Rôle
+ Permettre l’addition
- Permettre la soustraction

* Permettre la multiplication

-1-

1
Ch.I Niveau : 4ème Scientifiques

DIV Permettre de renvoyer le quotient dans la division entière (euclidienne)


MOD Permettre de renvoyer le reste dans la division entière

Dans (IN, en pascal) Permettre de déterminer l’appartenance à un intervalle

Exemples :
10 DIV 2 = 5 10 MOD 2 = 0 1 DIV 11 = 0 1 MOD 11 = 1 15 DIV 2 MOD 3 = 1
4 DIV 3 MOD 4+1 = 2 7-5 MOD 3 = 5 -5 * 6 + 17 DIV 7 = -28 8 Dans [0..10]
Les opérateurs relationnels

Au niveau de l’analyse et de l’algorithme Au niveau du programme Pascal


= =
> >
< <
≥ >=
≤ <=
≠ <>

Déclaration
Déclaration au niveau de l’algorithme (T.D.O) Déclaration en pascal

Objet Type/nature Rôle Var


Nom de la variable entier Rôle Nom de la variable : integer ;

b) Le type réel
Domaine
- Les variables de type réel forment un sous-ensemble des nombres réels (un sous-ensemble de ǀR).
- Elles appartiennent à [2.9*10-39 .. 1.7*1038]
Les opérateurs arithmétiques
Pour les variables de type réel, on utilise les opérateurs +, - et * (comme pour les entiers) ainsi que l’opérateur /
qui permet la division réelle (les opérateurs DIV, MOD et Dans sont exclus pour ce type)
Les opérateurs relationnels
On utilise les mêmes opérateurs relationnels appliqués sur les entiers (=,>, <, ≥, ≤, ≠)
Déclaration
Déclaration au niveau de l’analyse (T.D.O) Déclaration en pascal

Objet Type/nature Rôle Var


Nom de la variable réel Rôle Nom de la variable : real ;

Domaines de quelques types numériques


Type Numérique Plage
Byte ou octet (Byte) 0 .. 255

-2-

2
Ch.I Niveau : 4ème Scientifiques

Entier court (Shortint) -128 .. 127


Entier long (Longint) -231 .. 231-1
Réel simple (Simple) 1.5*10-45.. 3.4*1038
Réel double (Double) 5.0*10-324..1.7*10308
Réel étendu (Extended) 1.9*10-4951..1.1*104932

Les fonctions arithmétiques standards appliquées sur les types numériques

Algorithme Pascal Type de x Type de Rôle Exemples


résultat
Supprimer la partie Tronc (8,3) = 8
Tronc(x) Trunc (x) Entier ou réel Entier décimale de x Tronc (-5,7) = -5
Arrondi (2,3) = 2
Retourner l’entier le plus Arrondi (2,5) = 3
Arrondi (x) Round (x) Entier ou réel Entier
proche de x Arrondi (-5,1) = -5

Abs (x) Abs (x) Entier ou réel Entier ou Retourner la valeur Abs (-5,2) = 5,2
réel absolue de x Abs (6) = 6

Carré (x) Sqr (x) Entier ou réel Entier ou Carré (2) = 4


Retourner le carré de x
réel Carré (-3) =9

Racine Carré Retourner la racine carrée Racine Carré (4) = 2


Sqrt (x) Entier ou réel Entier ou de x s’il est positif. Une
(x) réel Racine Carré (2) =1.14
erreur, sinon

Ent (x) Int (x) Entier ou réel Réel Retourner la partie entière Ent (3,9) =
de x comme réel 3.0000000000 E+00

Réel Retourner un réel compris Aléa =0,24


Aléa Random entre 0 et 1 exclus

Random Retourner un entier entre


Aléa (x) Entier Entier Aléa (8) = 5
(x) 0 et x-1

Entier ou Retourner le cosinus de x


Cos (x) Cos (x) Entier ou réel Cos (1,5705) = 0
réel (x en radian)

Entier ou Retourner le sinus de x


Sin (x) Sin (x) Entier ou réel Sin (1,5705) = 1
réel (x en radian)

Entier ou Retourner la tangente de x


Tang (x) Tan (x) Entier ou réel Tang (3,141) = 0
réel (x en radian)

Entier ou Retourner la cotangente


Cotang (x) Cotang (x) Entier ou réel Cotang (1,5705) = 0
réel de x (x en radian)

-3-

3
Ch.I Niveau : 4ème Scientifiques

c) Le type booléen
Domaine
Les variables de type booléen sont des expressions qui sont évaluées à vrai (true, en pascal) ou bien à faux
(false, en pascal)
Les opérateurs logiques

Au niveau de l’algorithme Au niveau du programme pascal Rôle


Non Not Négation

Et And Conjonction

Ou Or Disjonction

Ouex Xor Ou exclusif

Table de vérité
Soient A et B deux expressions booléennes, on obtient la table de vérité suivante :

A B Non (A) A et B A ou B A Ouex B


Vrai Vrai Faux Vrai Vrai Faux
Vrai Faux Faux Faux Vrai Vrai
Faux Vrai Vrai Faux Vrai Vrai
Faux Faux Vrai Faux Faux Faux

Remarques
- Il existe un ordre de priorité entre les opérateurs logiques ; en effet, on commence par évaluer la négation
(NON) puis la conjonction (Et) et on finit par la disjonction (Ou) et le Ou exclusif (Ou ex) qui pssèdent la
même priorité
- Dans tous les cas, les opérations mises entre parenthèses sont prioritaires (On commence par les parenthèses
internes puis externes)
Application : évaluer les expressions suivantes : Solution de l’application
• (x ≤ 7) ET (x ≥ 0), avec x=6 • vrai et vrai → vrai
• (x ≤ 7) ET (x ≥ 0), avec x= -1 • vrai et faux → faux
• NON (x ≤ 7) OU (x ≥ 0), avec x= 10 • vrai ou vrai → vrai
• x>2 OU x>0 ET x>10, avec x=3 • vrai ou faux → vrai
Déclaration
Déclaration au niveau de l’algorithme (T.D.O) Déclaration en pascal

Objet Type/nature Rôle Var


Nom de la variable booléen Rôle Nom de la variable : boolean ;

d) Le type caractère
-4-

4
Ch.I Niveau : 4ème Scientifiques

Domaine
Les variables de type caractère sont représentées par l’un des éléments appartenant aux ensembles suivants :
Les lettres alphabétiques minuscules ["a" .. "z"] et majuscules ["A".. "Z"]
Les chiffres ["0" .. "9"]
Les symboles (".", ":", "&", " ?", " +", …)

Remarques
- Un caractère doit être défini entre guillemets au niveau de l’analyse et de l’algorithme et entre apostrophes
au niveau du programme pascal
- Chaque caractère est identifié par un code dit ASCII qui varie entre 0 et 255
- Les chiffres et les lettres alphabétiques minuscules et majuscules possèdent des codes Ascii successifs ; en
effet, on a : Ascii ("0") = 48, Ascii ("1") = 49, ….Ascii ("9") = 57 Ascii ("a") = 97, Ascii ("b") = 98,
…Ascii ("z") = 122 Ascii ("A") = 65, Ascii ("B") = 66, … Ascii ("Z") = 90
- Il est possible de comparer et d’ordonner les caractères et ceci selon leurs codes ASCII
Les opérateurs arithmétiques
Le seul opérateur arithmétique utilisé pour le type caractère est l’opérateur Dans (In, en pascal)

Les opérateurs relationnels


Comme les variables de type caractère sont ordonnées, il est possible donc d’utiliser les opérateurs relationnels
suivants : =, >, <, ≥, ≤, ≠
Application
Application : évaluer les expressions suivantes :
• "E" > "e" • "2" < "B"

Solution de l’application
• Faux car ORD ("E") < ORD ("e") • Vrai car ORD ("2") < ORD ("B")
=69 =101 = 50 =66
Déclaration
Déclaration au niveau de l’algorithme (T.D.O) Déclaration en pascal

Objet Type/nature Rôle Var


Nom de la variable caractère Rôle Nom de la variable : char ;
Les fonctions prédéfinies appliquées sur les caractères

Algorithme Pascal Rôle Exemples

ORD (c) ORD (c) Renvoyer le code Ascii du caractère c. ORD ("A") = 65

CHR (n) CHR (n) Renvoyer le caractère dont le code Ascii est n CHR (65) = "A"

SUCC (c) SUCC (c) Renvoyer le caractère qui suit c SUCC ("A") = "B"

PRED (c) PRED (c) Renvoyer le caractère qui précède c PRED ("B") = "A"

MAJUS (c) UPCASE (c) Convertir le caractère c en majuscule s’il est possible MAJUS ("a") = "A"

Application : trouver pour chaque expression donnée le résultat obtenu et son type
• A = 7 DIV 3 DIV 2 + 7 MOD 4 DIV 2
• B= 3+ RACINE CARRE (ORD ("Q")) - ARRONDI (1,49)
-5-

5
Ch.I Niveau : 4ème Scientifiques

• C= ENT (-9,5) +ORD (CHR(64)) - (17 MOD 9) /3


• D= ORD( CHR (35)) + ABS (1 MOD 7- 17 DIV 2)
• E= ORD ("A") < ORD (CHR (64))/2 OU (ALEA (11) dans [0 .. 10])
• F= ENT (-2,33) = TRONC (-2,99) ET SUCC ("V") < PRED ("Z")

Solution de l’application :
• A= 1+1
• B = 3+ Racine carré (81) -1 = 3+9-1
• C= -9+64-8/3=55-2.66
• D= 35+ABS (1-8) =35+ ABS (-7)= 35+7
• E= 65 < 32 ou Aléa (11) dans [0..10] → faux ou vrai
• F= -2=-2 et "W" < "Y" → vrai et vrai

Expression Mon Résultat Mon Type de résultat


A 2 Entier
B 11 Entier
C 52,33 Réel
D 42 Entier
E Vrai Booléen
F Vrai Booléen

e) Le type chaine
Domaine
Une variable de type chaine (ou chaine de caractères) est une suite de n caractères, avec n est un entier compris
entre 0 et 255.
Exemples : "Informatique", "Bonjour Tunisie", …
Remarques
- Une chaine de caractères doit être définie entre guillemets au niveau de l’analyse et de l’algorithme et entre
apostrophes au niveau du programme pascal
- Si le nombre de caractères d’une chaine est égal à 0 (n=0), la chaine est dite vide
- La chaine vide est différente de la chaine avec espace ; en effet : "" est une chaine vide et " " est une
chaine avec espace
- Il est possible de comparer les chaines de caractères en les parcourant caractère par caractère et regardant à
chaque fois le code Ascii de ces derniers. On stoppe la comparaison dès qu’on trouve des caractères ayant
des codes Ascii différents. Exemple : "PASSAGER" < "PASSER" puisque ORD ("A") < ORD ("E")

Les opérateurs arithmétiques


Opérateur Rôle
+ Permet la concaténation des chaines de caractères
Les opérateurs relationnels
Les opérateurs relationnels utilisés pour les chaines de caractères sont : =, >, <, ≥, ≤, ≠

-6-

6
Ch.I Niveau : 4ème Scientifiques

Accès à une chaine de caractères


Pour accéder à l’ième caractère d’une chaine (1 ≤ i ≤ longueur de la chaine), on utilise la notation suivante :
Nom de la chaine [i]
Exemple : CH←"ordinateur"
CH [1]= "o", CH [10]= "r", …

Déclaration
Déclaration au niveau de l’algorithme (T.D.O) Déclaration en pascal

Objet Type/nature Rôle Var


Nom de la variable chaine Rôle Nom de la variable : string ;
Remarques
- La méthode utilisée précédemment permet de déclarer une chaine de caractères qui peut atteindre jusqu’à
255 caractères.
- Il est possible de restreindre (limiter) le nombre maximal de caractères composant la chaine, dans ce cas la
chaine sera déclarée comme suit :
Déclaration au niveau de l’algorithme (T.D.O) Déclaration en pascal

Objet Type/nature Rôle Var


Nom de la variable chaine [x] Rôle Nom de la variable : string [x] ;
N.B : x est un entier positif représentant le nombre maximal de caractères qu’on souhaite affecter à la chaine
Exemples
Déclaration au niveau de l’algorithme (T.D.O) Déclaration en pascal

Objet Type/nature Rôle Var


Adresse chaine Contenir des adresses comportant jusqu’à 255 Adresse : string ;
caractères
chaine [10] Contenir des noms comportant 10 caractères au Nom : string [10] ;
Nom
maximum

Les fonctions prédéfinies appliquées sur les chaines de caractères

Algorithme Pascal Rôle Exemples

Retourner la concaténation Concat ("infor", "matique")


Concat (ch1, ch2, … Concat (ch1, ch2, …
des chaines ch1, ch2, …chn = "informatique"
chn) chn)
Retourner la longueur de la
Long (ch) Length (ch) Long ("informatique") = 12
chaine ch
Retourner une sous-chaine Sous-chaine
Sous-chaine (ch, p, n) Copy (ch, p, n) de longueur n à partir de la ("informatique", 4,3) =
position p dans ch
"orm"

-7-

7
Ch.I Niveau : 4ème Scientifiques

Retourner la première ‫ ﭏ‬Pos ("in", "info") = 1


Pos (ch1, ch2) Pos (ch1, ch2) position de ch1 dans ch2. Si ‫ ﭏ‬Pos ("m", "maman") = 1
ch1 n’existe pas dans ch2, le
‫ ﭏ‬Pos ("r", "PROF") = 0
résultat sera nul

Les procédures prédéfinies appliquées sur les chaines caractères

Algorithme Pascal Rôle Exemples

Supprimer n caractères à Efface ("informatique", 9,4)


Efface (ch, p, n) delete (ch, p, n) partir de la position p dans ch ="informat"

Insère (ch1, ch2, p) Insert (ch1, ch2, p) Insérer ch1 dans ch2 à partir Insère ("for","inmatique",3)
de la position p = "informatique"

Convch (nd, ch) Str (nd, ch) Convertir le nombre décimal Convch (123, ch)
nd en une chaine ch ch= "123"

Convertir une chaine de ‫ ﭏ‬n est un réel :


caractères en une valeur valeur ("1,25", n, e)
numérique n et e reçoit 0. Si n=1,25
la conversation ne peut pas se e=0
Valeur (ch, n, e) Val (ch, n, e) faire, l’entier e prendra la ‫ ﭏ‬n est un entier :
position du premier caractère
valeur ("1,25", n, e)
qui a causé l’erreur alors que
n recevra 0 n=0
e=2

Application1 : déterminer le résultat de chacune des expressions suivantes pour chaque instruction :
1) A ← "L’"+"informatique" 5) Efface (C, 1, 6)
2) B ← sous-chaine ("gourmande", 5,5) 6) D ← Concat (A, " ", "est un", " ", B, "
3) C ← "estimation" ","de", " ", A [5], A [3], "c", C)
4) B [2] ← "o" 7) Valeur ("12/10/2012", d, e)
Solution de l’application1 :

A B C D d e

1 "L’informatique" - - - - -

-8-

8
Ch.I Niveau : 4ème Scientifiques

2 "L’informatique" "mande" - - - -

3 "L’informatique" "mande" "estimation" - - -

4 "L’informatique" "monde" "estimation" - - -

5 "L’informatique" "monde" "tion" - - -

6 "L’informatique" "monde" "tion" "l’informatique est un monde de fiction" - -

7 "L’informatique" "monde" "tion" "l’informatique est un monde de fiction" 0 3

Application2 :
En utilisant seulement les variables déjà mentionnées, les opérateurs usuels ainsi que les fonctions et les
opérateurs prédéfinis, compléter l’algorithme suivant en ajoutant à chaque ligne une seule instruction, tout en
tenant compte que : N et E sont deux entiers, R est un réel et CH1 et CH2 sont deux chaines de caractères
0) Début Test
1) R ← 6097,51
2) CH1 ← "BAC2009"
3) CH2 ← "PASCAL"
Résultat
4) CH1="2009"
5) N=2009
6) E=6098
7) N=0
8) CH2="PASCAL2009"
9) E=7
10) CH2="PAS2009"
11) Fin Test
Solution de l’application :
0) Début Test
1) R ← 6097,51
2) CH1 ← "BAC2009"
3) CH2 ← "PASCAL"
Résultat
4) Efface (CH1, 1,3) / CH1←Sous-chaine (CH1, 4,4) CH1="2009"
5) Valeur (CH1, N, E) N=2009
6) E←Arrondi(R) E=6098
7) N← Pos (CH1, CH2) / Valeur (CH1, E, N) / N←N-N N=0
8) CH2← Concat(CH2, CH1) / Insère (CH1, CH2, 7) CH2="PASCAL2009"
9) E← Pos (CH1, CH2) E=7
10) Efface (CH2, 4, 3) / CH2←Sous-chaine (CH2, 1, 3) + Sous-chaine (CH2, 7, 4) CH2="PAS2009"
/ CH2←Concat (Sous-chaine (CH2, 1, 3), CH1)

-9-

9
Ch.I Niveau : 4ème Scientifiques

11) Fin Test

f) Le type tableau
Définition
Un tableau est une structure de données qui permet de ranger un nombre fini des éléments de même type. Il est
caractérisé par :
Un nom (identificateur)
Une taille
Le type des éléments qu’il contient
Remarques
Remarques
- On s’intéresse à l’étude des tableaux unidimensionnels (à une seule ligne) appelés vecteurs
- Chaque élément appartenant au tableau se distingue par un indice déterminant sa position dans ce tableau.
- Un indice peut être de type entier, caractère ou bien scalaire énuméré (à voir à la fin de chapitre)
- Si l’indice est de type entier, alors le premier élément du tableau prendra nécessairement l’indice 1. S’il est
de type caractère, le premier élément du tableau prendra les valeurs "1", "A" ou bien "a"

Exemple : On veut ranger les noms de 5 élèves dans un tableau nommé V dont les indices sont des entiers :

V: "Hassen" "Salwa" "Fatma" "Ahmed" "Mohammed"


Indices 1 2 3 4 5
→ La chaine "Hassen" correspond au premier élément du tableau V, elle possède alors l’indice 1, …
Accès à un élément d’un tableau
Dans un tableau, pour accéder à l’élément d’indice i (Borne inférieure≤ i ≤ Borne supérieure), il suffit d’utiliser
la notation suivante : nom du tableau [i]
Exemple : soit le tableau T suivant
T : nom 175 1 2-32- 1171 0280
1 2 3 4
On a : T [1]=75, T [2]=-32, T [3]=17, T [4]=28
Déclaration d’un tableau
Première formulation : déclaration d’un type tableau
Déclaration au niveau de l’algorithme Déclaration en pascal

Tableau de déclaration des nouveaux types (T.D.N.T)

Types Type
Nom_type = tableau de taille maximale de type Nom_type= Array [Binf..Bsup] of type _éléments;
d’éléments contenus
Remarque : Binf et Bsup désignent respectivement la borne inférieure et la borne supérieure de l’intervalle
des indices.
Deuxième formulation : déclaration d’une variable de type tableau
Déclaration au niveau de l’algorithme (T.D.O) Déclaration en pascal

- 10 -

10
Ch.I Niveau : 4ème Scientifiques

Objet Type/nature Rôle Var


Nom de la variable Nom_type Rôle Nom de la variable : Nom_type ;
Application1 : soit V un tableau. On a la séquence suivante :
V [1] ← 20
V [2] ← 3
V [3] ← V [1] div V [2]
V [4] ← V [3] * V [2]
V [5] ← V [1] + V [3] + V [4]
1) Déterminer le contenu de chaque élément du tableau V
2) Donner la déclaration complète (type et variable) du tableau V en algorithmique et au niveau du programme
pascal
Solution de l’application :
1)

V: 1201 131 161 1181 1441

Déclaration en algorithmique
Tableau de déclaration de nouveaux types (T.D.N.T)

Types

Vect = tableau de 5 entiers

Tableau de déclaration des objets (T.D.O)

Objet Type/Nature Rôle

V Vect Contenir des entiers

Déclaration au niveau du programme pascal


Type
Vect = Array [1..5] of integer;
Var
V : Vect ;

Application2 : Proposer une déclaration en Pascal pour les objets suivants :


1) Un tableau T de taille 20 de chaines de caractères
2) Une chaine de caractères CH de taille maximale =30
3) Un tableau V de caractères de taille =10 dont les indices sont des caractères
4) Une constante C ayant comme valeur la chaine Bac
Solution de l’application2
l’application2 :
1)
• 1ère solution
Var

- 11 -

11
Ch.I Niveau : 4ème Scientifiques

T : Array[1..20] of string;
• 2ème solution
Type
Tab= Array[1..20] of string;
Var
T: Tab;
• 3ème solution
Const
Tmax =20;
Type
Tab= Array[1..Tmax] of string;
Var
T: Tab;

2) Var
CH : string[30];

3)
• 1ème solution
Var
V: Array['a'..'j'] of Char;
• 2ème solution
Var
V: Array['A'..'J'] of Char;
4) Const
C='Bac';

g) Le type scalaire énuméré


Définition
Le type scalaire énuméré définit un ensemble ordonné et fini de valeurs désignées par des identificateurs (au
maximum 256 valeurs différentes possibles)
Exemple : Couleur= (rouge, bleu, vert), jour= (lundi, mardi, mercredi, jeudi)
Remarque : Les valeurs dans une liste énumérée ne peuvent pas être de types prédéfinis (entier, chaine, …)
Les opérateurs relationnels sur le type scalaire énuméré
Il est possible d’appliquer sur les valeurs d’un type scalaire énuméré les opérateurs suivants : =, >, <, ≥, ≤, ≠
(car elles sont ordonnées à l’intérieur des parenthèses)
Déclaration d’un scalaire énuméré
Première formulation : déclaration d’un type scalaire énuméré

- 12 -

12
Ch.I Niveau : 4ème Scientifiques

Déclaration au niveau de l’algorithme Déclaration en pascal

Tableau de déclaration des nouveaux types (T.D.N.T)

Types Type
Nom_type = (valeur1, valeur2, …, valeurn) Nom_type = (valeur1, valeeur2, …, valeurn) ;

Deuxième formulation : déclaration d’une variable de type scalaire énuméré


Déclaration au niveau de l’algorithme (T.D.O) Déclaration en pascal

Objet Type/nature Rôle Var


Nom de la variable Nom_type Rôle Nom de la variable : Nom_type ;
Les fonctions prédéfinies pour le type scalaire énuméré

Algorithme Pascal Rôle

ORD (valeur) ORD (valeur) Renvoie le numéro d’ordre de la valeur.

SUCC (valeur) SUCC (valeur) Renvoie la valeur suivante si elle existe

PRED (valeur) PRED (valeur) Renvoie la valeur précédente si elle existe

Remarques
Remarques
À chaque identificateur correspond un numéro d’ordre, la numérotation commence à partir de zéro
Il faut éviter l’utilisation des deux fonctions SUCC() et PRED() dans les bornes de la liste puisqu’elles
n’existent pas et peuvent engendrer des erreurs (la fonction PRED ne s’applique pas sur le premier
identificateur et la fonction SUCC ne s’applique pas sur le dernier)
La fonction CHR(), réciproque de la fonction ORD(), ne s’applique pas au type scalaire énuméré
Il est impossible d’utiliser les procédures Écrire () et Lire () avec les variables de type scalaire énuméré
Application : soit un type scalaire énuméré intitulé Année contenant les mois de l’année
1) Établir le tableau de déclaration des nouveaux types illustrant le type Année
2) Comparer les différentes valeurs du type Année
3) Déterminer le numéro d’ordre correspondant à chaque valeur de type Année
4) Évaluer les expressions suivantes : SUCC (septembre) et PRED (juin)
5) Sachant que mois est une variable de type Année, alors on a l’affectation suivante : mois←octobre
L’affectation ci-dessus est-elle correcte ?
6) La déclaration du type énuméré IMPAIR = (1, 3, 5,7) est-elle possible ? Expliquer pourquoi
7) Déclarer en pascal :
• Un type scalaire énuméré intitulé mois_a_trente contenant les mois à 30 jours
• Une variable intitulée mois_court du type mois_a_trente
Solution de l’application :
1) T.D.N.T :
Types
Année= (janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre)

- 13 -

13
Ch.I Niveau : 4ème Scientifiques

2) Janvier < février < mars < avril < mai < juin < juillet < août < septembre < octobre < novembre < décembre
3) Ord (janvier) = 0 / Ord (février) =1 / Ord (mars) =2 / Ord (avril)= 3/…/Ord (décembre) =11
4) SUCC (septembre) = Octobre / PRED (juin) = mai
5) Une variable de type Année peut prendre comme valeurs : janvier, février, mars, avril, mai, juin, juillet,
août, septembre, octobre, novembre et décembre. Alors l’affectation mois←octobre est correcte
6) Cette déclaration est interdite car 1,3, 5 et 7 sont de type entier
7) Type
mois_a_trente= (avril, juin, septembre, novembre);
Var
Mois_court : mois_a_trente;
h) Le type intervalle
Définition
- Le type intervalle possède les propriétés d’un type scalaire discret ordonné
- La définition d’un intervalle est décrite par la donnée des deux constantes représentant respectivement ses
Bornes "inférieure" et "supérieure". Ces bornes doivent être de type scalaire (entier, caractère ou bien
scalaire énuméré) avec : Borne inférieure < Borne supérieure
Exemples : chiffre = 1..9, alpha= "A".."Z", Année = janvier.. décembre, …
Les opérateurs relationnels sur le type intervalle
Sachant qu’un intervalle est forcément ordonné et continu, Il est donc possible de lui appliquer les opérateurs
suivants : =, >, <, ≥, ≤, ≠

Déclaration d’un intervalle


Première formulation : déclaration d’un type intervalle
Déclaration au niveau de l’algorithme Déclaration en pascal

Tableau de déclaration des nouveaux types (T.D.N.T)

Types Type
Nom_type = Borne inférieure..Borne supérieure Nom_type = Borne inférieure..Borne supérieure ;

Deuxième formulation : déclaration d’une variable de type intervalle


Déclaration au niveau de l’algorithme (T.D.O) Déclaration en pascal

Objet Type/nature Rôle Var


Nom de la variable Nom_type Rôle Nom de la variable : Nom_type ;
Les fonctions prédéfinies pour le type scalaire énuméré

Algorithme Pascal Rôle

SUCC (valeur) SUCC (valeur) Renvoie la valeur suivante si elle existe

PRED (valeur) PRED (valeur) Renvoie la valeur précédente si elle existe

Remarques
Remarques :
- 14 -

14
Ch.I Niveau : 4ème Scientifiques

Il faut éviter l’utilisation des deux fonctions SUCC () et PRED() dans les bornes de l’intervalle
Il est impossible d’utiliser les procédures Écrire () et Lire () avec les variables de type intervalle
Application :
1) Élaborer un tableau de déclaration de nouveaux types illustrant un type intervalle intitulé mois de 1 à 12 et
un type intervalle intitulé Premier_trimestre concernant le premier trimestre de l’année scolaire
2) Quelles sont les bornes inférieure et supérieure du type mois ?
3) Quelles sont les valeurs que peut prendre une variable de type mois ?
4) Quelles sont les bornes inférieure et supérieure du type Premier_trimestre ?
5) Quelles sont les valeurs que peut prendre une variable de type Premier_trimestre ?
6) Déclarer en Pascal un type intervalle mois de 1 à 12 et un type intervalle jours de 1 à 31 et deux variables
mois_actuel et J de types respectifs mois et jours
Solution de l’application :
Types
1) Tableau de déclaration de nouveaux types :
mois=1..12
premier_trimestre= septembre..décembre
2) Les bornes de l’intervalle mois sont : 1 et 12 prises comme
valeurs de type entier
3) Une variable de type mois peut prendre les valeurs : 1,2,3,4,5,6,7,8,9,10,11 ou 12
4) Les bornes de l’intervalle Premier_trimestre sont septembre et décembre
5) Une variable de type Premier_trimestre peut prendre comme valeurs : septembre, octobre, novembre et
décembre
6) Type
mois= 1..12;
jours=1..31;
Var
Mois_actuel : mois;
J : jours;

Soit l’opération suivante


C s’appelle Résultat
C = A + A avec A et b s’appellent les opérandes
+ s’appelle l’opérateur

Priorité Opérateur
Désignation de
des Type d’opérande
l’opération Algo Pascal
opérateurs
Parenthèses 1 (…) (…) Tout type
Multiplication X * Entier ou Réel
Division réelle / / Réel
2
Division entière DIV DIV Entier
Reste de la division entière MOD MOD Entier
Addition 3 + + Entier ou Réel

- 15 -

15
Ch.I Niveau : 4ème Scientifiques

Soustraction - - Entier ou Réel


Egale = = Tout type ordonné
Différent ≠ <> Tout type ordonné
Inférieur < < Tout type ordonné
4
Supérieur > > Tout type ordonné
Inférieur ou égal ≤ <= Tout type ordonné
Supérieur ou égal ≥ >= Tout type ordonné
L’appartenance 5 DANS IN Type scalaire

- 16 -

16
Ch. II Classe : 4èmeScientifiques

Introduction
Une action est dite simple si elle est réduite à :
Une entrée de données (lecture de données)
Une affectation
Une sortie (écriture de données)
I. L’opération d’entrée
1. Définition
L’opération d’entrée permet d’introduire une ou plusieurs données à partir d’un clavier. Dans ce cas,
l’ordinateur va recevoir ces données et les garder dans des variables rangées dans les cases mémoires
correspondantes.
2. Syntaxe
1ère formulation :
Algorithme Pascal Rôle
Lire (Nom_variable) Read (Nom_variable) ; Lire une seule variable
Lire (var1, var2, …varn) Read (var1, var2, …varn) ; Lire plusieurs variables
en une seule opération

2ème formulation :
Algorithme Pascal
Ecrire ("commentaire sur la Write (‘commentaire sur
variable") la variable’) ;
Lire (Nom_variable) Read (Nom_variable) ;
Ecrire ("commentaire sur les Write (‘commentaire sur
variables") les variables’) ;
Lire (var1, var2, …varn) Read (var1, var2, …varn) ;
Remarques
Au niveau du programme Pascal, Il est possible d’utiliser la procédure Readln à la place de la procédure
Read. La seule différence qui existe entre ces deux procédures, c’est que Readln permet un retour à la ligne
après la lecture.
Il est strictement interdit de lire plusieurs variables de type Chaine en une seule opération
Exemples
Lecture d’une variable intitulée contrôle
Algorithme Pascal
Lire (contrôle) Read (contrôle) ;
Ou bien
Ecrire ("Entrer la note du devoir de Write (‘Entrer la note du
contrôle") devoir de contrôle’) ;
Lire (contrôle) Read (contrôle) ;

-1-

17
Ch. II Classe : 4èmeScientifiques
Lecture des deux entiers a et b
Algorithme Pascal
Lire (a,b) Read (a,b) ;
Ou bien
Ecrire ("Entrer deux entiers") Write (‘Entrer deux entiers’) ;
Lire (a,b) Read (a,b) ;

II. L’affectation
1. Définition
L’affectation permet d’attribuer une valeur à une variable donnée. Dans ce cas, il s’agit d’évaluer l’expression
qui se trouve à droite puis l’affecter à la variable qui se trouve à gauche.
Remarques
La valeur affectée à une variable peut être : la valeur d’une autre variable, d’une constante ou bien d’une
expression logique ou arithmétique. Toutefois, elle doit être de même type que la variable considérée ou
bien de type compatible.
L’affectation d’une nouvelle valeur à une variable donnée écrase la valeur ancienne de cette variable.
2. Syntaxe
Algorithme Pascal
Nom_variable ← valeur Nom_variable :=valeur ;
Exemples : A← 10 / B←" informatique" /D←X Exemples : A :=10 ; / B :=‘informatique’ ; / D :=X;
/ S←Non(E) ET vrai / Y←2*5+3 mod 9, …. / S :=Not(E) and true ; / Y :=2*5+3 mod 9 ; …

III. L’opération de sortie


1. Définition
L’opération de sortie permet d’afficher sur l’écran les résultats qui peuvent être le contenu d’une ou de
plusieurs variables et/ou commentaires
2. Syntaxe
Algorithme Pascal Rôle
Write (Nom_variable) ; Afficher le contenu de la
Ecrire (Nom_Variable) variable
Afficher la variable comme
Ecrire ("Nom_variable") Write (‘Nom_variable’) ; étant un caractère
Ecrire ("commentaire") Write (‘commentaire’) ; Afficher le commentaire
sous la forme d’une chaine
Afficher le commentaire
Ecrire ("commentaire" , Nom_Variable) Write (‘commentaire, suivi du contenu de la
Nom_Variable) ; variable
Evaluer l’expression puis
Ecrire (Expression) Write (Expression) ;
afficher le résultat
Remarque : En Pascal, Il est possible de permettre un retour à la ligne après l’affichage, dans ce cas, on
remplace la procédure Write par la procédure Writeln

-2-

18
Ch. II Classe : 4èmeScientifiques
Exemples : soient A et B deux entiers tels que : A←30 et B← 15
Ecrire (A) permet d’afficher le contenu de la variable A, c'est-à-dire 30
Ecrire ("A") permet d’afficher le caractère A
Ecrire ("Salut Monsieur") permet d’afficher la chaine de caractères Salut Monsieur
Ecrire ("la note du devoir de synthèse est : ", B) permet d’afficher la chaine de caractère suivante : la
note du devoir de synthèse est : suivie du contenu du B, c'est-à-dire 15 on aura donc le résultat suivant : la
note du devoir de synthèse est : 15
Ecrire (2+A DIV B) permet d’afficher l’entier 4 (car 2+2=4)
IV. Formatage de l’affichage des variables
Le turbo pascal permet de spécifier le nombre de position des champs d’écriture.
Cas des caractères
Writeln (caractère) ; → afficher le caractère
Writeln (caractère : n) ; → afficher le caractère sur n positions (insertion d’espacement à gauche du
caractère)
Exemples : car :=’S’ ;
Instruction Résultat
Writeln (car) ; S
Writeln (car : 2) ; ∆S

Cas des chaines de caractères


Writeln (chaine) ;→ afficher la chaine de caractères
Writeln (chaine : n) ; → afficher la chaine de caractères sur n positions (Si la chaine de caractères est
composée de plus de n caractères, alors la partie ": n" sera ignorée, Sinon, insertion d’espacement suffisant
à gauche de la chaine)
Exemples : CH :=’travail’ ;
Instruction Résultat
Writeln (CH) ; travail
Writeln (CH : 3) ; travail
Writeln (CH : 10) ; ∆∆∆travail
Cas des entiers
Writeln (entier) ;→ afficher l’entier
Writeln (entier : n) ; → afficher l’entier sur n positions (Si l’entier est composé de plus de n chiffres,
alors la partie ": n" sera ignorée, Sinon, insertion d’espacement suffisant à gauche du nombre)
Exemples : X := 356 ;
Instruction Résultat
Writeln (X) ; 356
Writeln (X : 1) ; 356
Writeln (X : 5) ; ∆∆356

Remarque: Pour les trois cas précédents, on a :


• n est un entier
• "∆" désigne un espace

-3-

19
Ch. II Classe : 4èmeScientifiques

Cas des réels


Dans le cas des réels, il est possible de préciser en plus le nombre de décimales désiré. On a donc les trois
possibilités suivantes :
Writeln (réel) ; → afficher le nombre réel en notation scientifique (puissance de 10) et précédé d’un
espacement
Remarque : un nombre en notation scientifique possède la forme suivante : x.xxxxxxxxxxE+xx et tel que le
nombre de décimales est égale à 10
Exemples :
Instruction Résultat
Writeln (2) ; ∆2.0000000000E+00
Writeln (25) ; ∆2.5000000000E+01
Writeln (351.2) ; ∆3.5120000000E+02
Writeln (-235) ; -2.3500000000E+02
Writeln (0.5) ; ∆5.0000000000E-01

Writeln (réel : n) ; → afficher le nombre réel en notation scientifique sur n positions précédé d’un
espacement. Dans ce cas : si n est trop petit, il faut considérer le nombre réel occupant l’espace le plus petit.
Dans ce cas le nombre obtenu en résultat sera arrondit
Exemples : X := 123.4567 ;
Instruction Résultat
Writeln(X : 8) ; ∆1.2E+02
Writeln (X : 7) ; ∆1.2E+02
Writeln (X : 9) ; ∆1.23E+02
Writeln(X : 11) ; ∆1.2346E+02
Writeln(X : 15) ; ∆1.23456700E+02

Writeln (réel : n : m) ; → afficher le nombre réel sur n positions avec m décimales. Si la partie réelle du
nombre est supérieure à n, ce dernier sera ignoré. Dans ce cas le nombre obtenu en résultat sera arrondit
Exemples : X := 123.4427 ;
Instruction Résultat
Writeln (X : 8 : 2) ; ∆ ∆123.44
Writeln (X : 3 : 2) ; 123.44
Writeln (X : 8 : 3) ; ∆123.443
Writeln (X : 8 :5) 123.44270

Remarque: pour le cas précédent, on a :


• n est m sont deux entiers
• "∆" désigne un espace

-4-

20
Ch. III
III Niveau : 4ème Scientifiques
Scientifiques

I. Définition
Une structure de contrôle conditionnelle permet à un programme d’exécuter un traitement suivant une ou
plusieurs conditions
II. Les formes d’une structure de contrôle conditionnelle
1. Forme simple
a. Forme simple réduite
Définition
Une structure de contrôle conditionnelle a une forme simple réduite si l’exécution d’un traitement est limitée
à la valeur «vrai» de la condition.
Syntaxe

En Algorithme En Pascal
Initialisations Initialisations ;
Si condition alors IF Condition Then
Traitement Begin
FinSi Traitement ;
End;
Remarques :
- Le traitement peut être une ou plusieurs instructions.
- Au niveau du programme Pascal, lorsque le traitement se limite à une seule instruction, il sera inutile de
délimiter ce traitement par Begin et End
b. Forme simple complète (alternative)
Définition
Une structure de contrôle conditionnelle a une forme simple complète si selon l’évaluation d’une condition,
on exécute exclusivement soit un traitement1 soit un traitement2
Syntaxe

En Algorithme En Pascal
Initialisations Initialisations ;
Si condition alors IF Condition Then
Traitement1 Begin
Sinon Traitement1 ;
Traitement2 End
FinSi Else
Begin
Traitement2;
End;
Remarque : Il est strictement interdit de mettre un point virgule (;) à la fin de l’instruction qui précède
directement le Else

-1-

21
Ch. III
III Niveau : 4ème Scientifiques
Scientifiques
2. Forme généralisée (composée)
Activité : Ecrire une analyse qui permet de saisir un
caractère quelconque et d’afficher sa nature En Pascal

Définition Initialisations ;
Une structure de contrôle conditionnelle est dite IF Condition1 Then Begin
généralisée lorsqu'elle permet de résoudre des Traitement1 ;
problèmes comportant plus de deux traitements End
Syntaxe Else IF Condition2 Then Begin
Traitement2 ;
En Algorithme End
Initialisations Else IF Condition3 Then Begin
Si condition1 alors Traitement1 Traitement3 ;
Sinon Si condition2 alors Traitement2 End
Sinon Si condition3 alors Traitement3 ……….
………. ……….
………. Else Begin
Sinon Traitement N Traitement N;
FinSi End;

3. Structure conditionnelle à choix multiple


Activité : Ecrire une analyse qui permet d’afficher le jour de la semaine correspondant à un numéro donné
Solution :
Nom : semaine Sinon
Résultat= écrire (jour) Si j=5 alors
jour= [] jour← "Jeudi"
Si j=1 alors Sinon
Jour← "Dimanche" Si j=6 alors
Sinon jour← "Vendredi"
Si j=2 alors Sinon
Jour← "Lundi" Si j=7 alors
Sinon jour← "Samedi"
Si j=3 alors Sinon
Jour← "Mardi" jour←"erreur"
Sinon FinSi
Si j=4 alors j = donnée ("Entrer le numéro du jour")
Jour← "Mercredi" Fin semaine
Constatations : la solution présente un emploi abusif de la structure de contrôle conditionnelle généralisée
Solution : remplacer la forme généralisée par une nouvelle structure appelée à choix multiple
Définition
La structure conditionnelle à choix multiple est une structure dans laquelle on a la possibilité de choisir un
traitement parmi plusieurs.

-2-

22
Ch. III
III Niveau : 4ème Scientifiques
Scientifiques
Syntaxe

En Algorithme
Initialisations
Selon Sélecteur faire
Valeur1 : instruction1
Valeur2 : instruction2-1
instruction2-2
……………
instruction2-n
Valeur3, Valeur4, Valeur5: instruction3
Valeur6 .. Valeur10 : instruction4
……………..
Valeur n-1 : instruction n-1
Sinon
instruction n
Fin Selon

En Pascal
Initialisations ;
Case Sélecteur OF
Valeur1 : instruction1 ;
Valeur2 : begin
instruction2-1 ;
instruction2-2 ;
……………
instruction2-n ;
end ;
Valeur3, Valeur4, Valeur5 : instruction3 ;
Valeur 6 .. Valeur10 : instruction4 ;
……………..
Valeur n : instruction n-1
Else
instruction n ;
End ;

-3-

23
Ch. III
III Niveau : 4ème Scientifiques
Scientifiques
Remarques :
- Le sélecteur doit être de type scalaire (entier, booléen ou caractère)
- Valeur1, Valeur2,….Valeurn ont le même type que le sélecteur et peuvent se présenter sous forme d’une
seule valeur, d’une liste dont les valeurs seront séparées par une virgule ou même sous forme d’intervalles
- Dans cette structure, la partie sinon est facultative. Elle est exécutée si aucune des valeurs n’est égale au
sélecteur.

-4-

24
Ch. IV Niveau : 4ème Scientifiques

I. Définition
Une structure de contrôle itérative est une structure permettant à un ordinateur de répéter
l’exécution d’un traitement (une ou plusieurs instructions) un nombre fini de fois.
II. La structure itérative complète
Activité : Ecrire un algorithme intitulé Affiche qui permet d’afficher 5 fois le message "Bonjour
Tunisie"
Solution :
0) Début Affiche 4) Ecrire ("Bonjour Tunisie")
1) Ecrire ("Bonjour Tunisie") 5) Ecrire ("Bonjour Tunisie")
2) Ecrire ("Bonjour Tunisie") 6) Fin Affiche
3) Ecrire ("Bonjour Tunisie")
Constatations : On remarque une répétition de l’instruction Ecrire ("Bonjour Tunisie") 5 fois. On
Constatations
suppose qu’on va répéter le même travail 100 fois, le programme devient alors plus chargé, d’où
un risque plus important d’erreurs.
Solution : On a recours à utiliser une structure permettant la répétition d’un traitement un
nombre fini de fois, connu à l’avance : la structure de contrôle itérative complète
1. Définition
Une structure de contrôle itérative complète est une structure permettant à un programme la
répétition d’un traitement un nombre fini de fois connu à l’avance
2. Syntaxe
♣ Parcours croissant

En Algorithme En Pascal
Initialisations Initialisations ;
Pour C de Vi à Vf faire For C:= Vi To Vf do
Traitement Begin
FinPour Traitement ;
End;
Remarques :
C est un compteur ; il s’agit d’une variable de type scalaire (entier ou caractère) permettant
de compter le nombre de répétitions effectuées.
Le nombre de répétitions est égale à :
• Vf- Vi +1, si C est de type entier
• Ord(Vf)-Ord(Vi) +1, si C est de type caractère
Vi et Vf représentent respectivement les valeurs initiale et finale du compteur
A la première exécution de la boucle, le compteur reçoit la valeur de Vi, puis il sera
automatiquement incrémenté de 1 après chaque instruction jusqu’à atteindre la valeur de Vf
Dans le parcours croissant, si Vi>Vf, le traitement de la boucle "Pour" ne sera pas exécuté
Au niveau du programme Pascal, lorsque le traitement se limite à une seule instruction, il
sera inutile d’utiliser le Begin et l’End
End entre ce traitement.

-1-

25
Ch. IV Niveau : 4ème Scientifiques
♣ Parcours décroissant
On parle du parcours décroissant lorsque Vi>Vf.
Vi>Vf Dans ce cas, l’avancement du compteur se fait
par un pas=-
pas=-1

En Analyse En Algorithme En Pascal


Nom_objet= [Initialisations] Initialisations Initialisations ;
Pour C de Vi à Vf (pas=-1) faire Pour C de Vi à Vf (pas=-1) faire For C:= Vi Downto Vf do
Traitement Traitement Begin
FinPour FinPour Traitement ;
End;

♣ Cas général
Le compteur s’incrémente d’un pas p

En Analyse En Algorithme En Pascal


Nom_objet= [Initialisations] Initialisations Initialisations ;
Pour C de Vi à Vf (pas=p) faire Pour C de Vi à Vf (pas=p) faire N:= 1+ round((Vf-Vi)/p);
Traitement Traitement For C:= Vi to N do
FinPour FinPour Begin
i:=c*p;
Traitement ;
End;

Application1
Application1 : écrire un programme qui permet de calculer et d’afficher la somme des éléments
d’un tableau T de réels de taille=10
Exemple :
T : 5.5 9 -6 0.6 7 -1 2.4 0 1 -10

On aura le résultat suivant : "La somme des éléments de T est égale à 8.5000000000E+00"

Solution de l’application1 :
Algorithme
0) Début somme
1) Pour i de 1 à 10 faire
Ecrire ("Entrer T[",i,"]"), Lire(T[i])
FinPour
2) s←0
Pour i de 1 à 10 faire
s←s+T[i]
FinPour
3) Ecrire ("La somme des éléments de T est égale à ", s)
4) Fin somme
T.D.N.T
Types
Tab=tableau de 10 réels

-2-

26
Ch. IV Niveau : 4ème Scientifiques
T.D.O
Objet Type/Nature Rôle
T Tab Contenir des réels
i Entier Compteur
s Réel Contenir la somme des éléments de T
Application2 : écrire un programme qui permet d’afficher la position de la première occurrence
d’un entier m donné dans un tableau T de 5 entiers (si ce dernier existe dans T)
Exemple :
T : 7 0 -11 0 20

Pour m=0, le programme affichera le message suivant : "La première occurrence de 0 dans T
est 2"
Pour m= 3, le programme affichera le message suivant : "3 n’existe pas dans T"

Solution de l’application2
l’application2 :
Algorithme
0) Début occurrence
1) Pour i de 1 à 5 faire
Ecrire("Entrer T[",i,"]"), Lire(T[i])
FinPour
2) Ecrire("Entrer l’entier à chercher"), lire(m)
3) p←0
Pour i de 5 à 1 (pas=-1) faire
Si T[i]=m alors
p←i
FinSi
FinPour
4) Si p≠ 0 alors
Ecrire("La première occurrence de ", m, " dans T est ", p)
Sinon
Ecrire(m, " n’existe pas dans T")
FinSi
5) Fin occurrence
T.D.N.T
Types
Tab=tableau de 5 entiers

T.D.O
Objet Type/Nature Rôle
T Tab Contenir des entiers
i Entier Compteur
m Entier Contenir l’entier à chercher dans T
p Entier Contenir la position de la première occurrence de m dans T si elle existe

-3-

27
Ch. IV Niveau : 4ème Scientifiques
III. Les structures itératives à condition d’arrêt
Activité : écrire un programme qui permet de calculer et d’afficher le PGCD des deux entiers A et
B en utilisant la méthode de différence
Traitement
Traitement : pour résoudre le problème, il suffit de répéter le test suivant : Si A>B alors A←A-B,
sinon B←B-A. On arrête le traitement lorsque la condition suivante est évaluée : A=B.
Constatations : Bien qu’il y’a une répétition, la structure répétitive complète ne résout pas le
problème puisque dans ce cas le nombre de répétitions est inconnu à l’avance
Solution : utiliser la structure itérative à condition d’arrêt

1. Définition
Une structure de contrôle itérative à condition d'arrêt est une structure permettant à un
programme la répétition d’un traitement un nombre de fois non connu à l’avance.
l’avance. Dans ce cas,
l'arrêt est géré par une condition.
condition
2. Formulations d’une structure itérative à condition d’arrêt
a. La structure Répéter…Jusqu’à
Activité : écrire un algorithme qui permet de saisir la note d’un élève sur 20.
Solution :
0) Début note
1) Ecrire ("donner la note de l’élève"), lire (n)
2) Fin note
Constatations : la solution présentée ne tient pas au cas où l’utilisateur peut se tromper en
donnant un réel supérieur à 20 ou bien inférieur à 0, il faut donc répéter l’exécution du même
traitement (demander la note) jusqu’à ce que la condition soit vérifiée (donner une note comprise
entre 0 et 20). D’autre part, si l’utilisateur entre dès le début une note valide, le traitement sera
exécuté une fois.
Solution : utiliser la structure itérative à condition d’arrêt : Répéter…Jusqu’à
Définition
- La structure itérative à condition d’arrêt Répéter……..jusqu’à permet de répéter une suite
d’instructions jusqu’à ce qu’une condition d’arrêt sera validée (passe à l’état vrai).
- Le traitement qui se trouve à l’intérieur de cette boucle s’exécute au minimum une fois.
Syntaxe

En Analyse En Algorithme En Pascal


Nom_objet= [Initialisations] Initialisations Initialisations ;
Répéter Répéter Repeat
Traitement Traitement Traitement ;
Jusqu’à condition d’arrêt Jusqu’à condition d’arrêt Until condition d’arrêt ;

Remarques :
La condition d’arrêt est considérée comme une condition de sortie
sortie car elle permet de quitter la
boucle. Elle est évaluée après chaque exécution du traitement
S'il y a un éventuel compteur, il faut l'initialiser avant la boucle et assurer son avancement
au sein de cette dernière (la boucle)
Au niveau du programme Pascal, même si le traitement répétitif est composé par plusieurs
instructions, on n’a jamais besoin d’utiliser Begin et End entre ce traitement
La boucle «répéter…Jusqu’à» est utilisée entre autres dans le contrôle des données saisies.
-4-

28
Ch. IV Niveau : 4ème Scientifiques
b. La structure Tant que…Faire
Activité : écrire un algorithme permettant à un élève de poser des questions à son professeur à
chaque fois où il ne comprend pas.
Solution :
0) Début question
1) Répéter
Poser des questions
Jusqu’à comprendre
2) Fin question
Constatations : d’après la solution présentée, l’élève va poser des questions au moins une fois,
alors que dans la réalité du cas, il peut ne pas poser de questions lorsqu’il comprend dès la
première explication du professeur.
Solution : utiliser une structure itérative où le traitement peut ne pas être exécuté : c’est la
structure d’arrêt : Tant que…
que…Faire
Définition
- La structure itérative a condition d’arrêt Tant que … faire permet de répéter une suite
d’instructions tant qu’une condition est validée
- Le traitement qui se trouve à l’intérieur de cette boucle peut ne pas être exécuté si la
condition n’est pas validée dès le début.
Syntaxe

En Algorithme En Pascal
Initialisations Initialisations ;
Tant que Condition Faire While Condition Do
Traitement Begin
Fin Tant que Traitement ;
End;
Remarques :
Dans cette boucle, la condition à vérifier est considérée comme une condition d'entrée car elle
permet d'accéder à la boucle. Elle est évaluée tout d’abord, si elle est vraie alors le traitement
de la boucle sera exécuté, sinon ce traitement ne s’exécute pas.
Au niveau du programme Pascal, lorsque le traitement répétitif est composé par une seule
instruction, les expressions Begin et End sont inutiles.
La condition d'entrée (dans la boucle Tant que)= NON (la condition d'arrêt) (dans la boucle
répéter)
Solution de l’activité
0) Début question
1) Tant que non comprendre faire
Poser des questions
Fin Tant que
2) Fin question

- Si le nombre de répétitions est connu au moment du premier passage dans la boucle, il faut utiliser la
structure de contrôle itérative complète (Boucle Pour)
Pour
- Si le nombre de répétitions est non connu, alors il faut se demander si on est sûr que le traitement à
l’intérieur de la boucle sera effectué au moins une fois, si :
Oui,
Oui il semble raisonnable d'utiliser la boucle répéter...jusqu'à.
répéter...jusqu'à
Non.
Non Alors pas d'hésitation, c'est la boucle tant que...faire qu'il faut utiliser.

-5-

29
Ch. IV Niveau : 4ème Scientifiques

-6-

30
Ch. IV Niveau : 4ème Scientifiques

I. Introduction
Afin de faciliter la résolution d'un problème complexe et/ou de grande taille, il est possible de
le décomposer en sous-problèmes indépendants de tailles réduites. Chaque sous-problème sera
analysé à part ; c'est le principe de l'analyse modulair
modulaire
dulaire
II. L’analyse modulaire
1. Définition
- L’analyse modulaire consiste à diviser un problème en des sous-problèmes de difficultés
moindres.
- Chaque sous problème s’appelle sous-
sous-programme ou module.
- Un sous- programme peut être une fonction ou bien une procédure
procédure.
édure
2. Intérêts
Offrir plus d’organisation en séparant les difficultés et les tâches.
S’occuper d’un seul problème à la fois.
En cas d’erreur la division en module permet de savoir quel module à corriger
Plus facile à faire évoluer.
Eviter la répétition d’un même traitement dans un programme.
3. Exemple
Problème : On désire insérer un entier m dans un tableau T de n entiers à partir d’une position p
puis d’afficher le tableau après insertion.
Solution : il est possible de décomposer le problème ci-dessus en modules suivants :
• Lecture (T, n, m, p)
• Insertion (m, p, T, n)
• Affichage(T,n)
III. Les fonctions
Activité : écrire une analyse qui permet de calculer la somme S des deux fonctions F(A) et F(B)
sachant que F(X)= X et ceci sans utiliser la fonction standard Abs
Solution :
Nom : calcul VB= [] Si B>0 alors
Résultat= Ecrire (S) VB←B
S←VA+VB Sinon
VA=[] Si A≥0 alors VB←-B
VA←A FinSi
Sinon (A,B)= données ("Entrer deux entiers")
VA←-A Fin calcul
FinSi

Constatations
Constatations :
- On constate une redondance du traitement utilisé pour le calcul de la valeur absolue de A et
celle de B.
- A chaque fois, il y’aura un seul résultat qui représente la valeur absolue de l’entier entré.

-1-

31
Ch. IV Niveau : 4ème Scientifiques
Solution : utiliser une fonction qui calcul la valeur absolue d’un entier puis l’appeler deux fois
dans le programme principal.
1. Définition
Une fonction est un sous-programme qui permet de retourner un seul résultat de type simple
(entier, réel, caractère ou bien chaine). Elle est caractérisée par un nom
nom et un type (celui du
résultat qu’elle calcule)
2. Syntaxe
Déclaration d’une fonction
Au niveau de l’algorithme
0) DEF FN Nom-fonction (pf1 : type1 ; pf2 : type2 ;… ; pfn : typen) : type_fonction
1) Traitement
2) Nom-fonction← résultat calculé
3) Fin Nom-fonction
Au niveau du programme pascal
Function Nom-fonction (pf1 : type1 ; pf2 : type2 ; … ; pfn : typen) : type_fonction
Var
{Partie de déclaration des objets locaux}
Begin
Traitement ;
Nom-fonction := résultat calculé ;
End ;
Remarques
Remarques :
pf1, pf2, …pfn : désignent la liste des paramètres formels relatifs à la fonction
Si les paramètres formels de la fonction possèdent le même type, ils seront représentés à
l’intérieur des parenthèses comme suit : (pf1, pf2, …,, pfn : type)
les paramètres formels sont déjà déclarés au niveau de l’entête de la fonction
Appel d’une fonction dans le programme principal
Dans une opération d’affectation
- Au niveau de l’algorithme - Au niveau du programme Pascal
X← FN Nom_fonction (pe1, pe2, …, pen) X := Nom_fonction (pe1, pe2, …, pen);
Dans une opération de sortie
- Au niveau de l’algorithme - Au niveau du programme Pascal
Écrire (FN Nom_fonction (pe1, pe2, …, pen)) Writeln (Nom_fonction (pe1, pe2, …, pen));
Dans une expression arithmétique
- Au niveau de l’algorithme - Au niveau du programme Pascal
Y←2*X+ FN Nom_fonction (pe1, pe2, …, pen) Y :=2*X+Nom_fonction (pe1, pe2, …, pen)
Dans une structure conditionnelle
- Au niveau de l’algorithme - Au niveau du programme Pascal
Si (FN Nom_fonction (pe1, pe2, …, pen) <X) If (Nom_fonction (pe1, pe2, …, pen) <X) then
alors ……. .… ;
Remarques :

-2-

32
Ch. IV Niveau : 4ème Scientifiques
X et Y sont deux variables utilisées dans le programme
pe1, pe2, …pen : désignent la liste des paramètres effectifs relatifs à la fonction
Solution de l’activité :
♣ Algorithme du programme principal :
0) Début somme
1) Écrire ("Entrer deux entiers"), Lire (A, B)
2) VA←FN Absolue(A)
3) VB←FN Absolue(B)
4) S←VA+VB
5) Écrire(S)
6) Fin somme
T.D.O.Globaux

Objet Type/Nature Rôle


S Entier Contenir la somme des deux fonctions
VA Entier Contenir la valeur absolue de A
VB Entier Contenir la valeur absolue de B
A Entier Contenir la valeur du premier entier saisi
B Entier Contenir la valeur du deuxième entier saisi
Absolue Fonction Calculer la valeur absolue d’un entier
♣ Algorithme de la fonction Absolue
0) DEF FN Absolue(X : entier) : entier
1) Si X>=0 alors
VX←X
Sinon
VX←-X
FinSI
2) Absolue←VX
3) Fin Absolue
T.D.O.Locaux

Objet Type/Nature Rôle


VX Entier Contenir la valeur absolue de X
8
IV. Les procédures
Activité : écrire une analyse qui permet d’afficher les valeurs de trois entiers X, Y et Z après
permutation des valeurs de X et de Y puis de Y et de Z
Solution :
Nom : Permutation Z←Aux2
Résultat=Ecrire(X, Y, Z) (X,Y)
(Y,Z)=[] Aux1←X
Aux2←Y X←Y
Y←Z Y←Aux1
-3-

33
Ch. IV Niveau : 4ème Scientifiques
(X, Y, Z)= données ("Introduire trois entiers") Fin Permutation
Constatations :
- On a répété l’utilisation du même traitement pour permuter les valeurs de X et de Y ainsi
que celles de Y et de Z.
- Chaque permutation retourne deux résultats, il est donc impossible d’utiliser une fonction qui
résout le problème de la redondance comme pour la première activité (car une fonction renvoi
un seul résultat)
Solution : utiliser un module qui permet de renvoyer plusieurs résultats : la procédure
1. Définition
Une procédure est un sous-programme qui permet de retourner 0, 1 ou plusieurs résultats de
type simple ou composé.
composé
Remarques
emarques : une procédure peut être non paramétrée (ne possède pas des paramètres)
2. Syntaxe
Déclaration d’une procédure
Au niveau de l’algorithme
0) DEF PROC Nom_procédure (pf1 : type1 ; pf2 : type2 ;… ; pfn : typen)
1) Traitement
2) Fin Nom_procédure
Au niveau du programme pascal
Procedure Nom_procédure (pf1 : type1 ; pf2 : type2 ; … ; pfn : typen)
Var
{Partie de déclaration des objets locaux}
Begin
Traitement ;
End ;
Remarques
Remarques :
Il est strictement interdit de définir le type du résultat retourné par une procédure
Comme pour les fonctions, si les paramètres formels de la procédure possèdent le même type,
ils seront représentés à l’intérieur des parenthèses comme suit : (pf1, …,, pfn : typen)
Appel d’une procédure dans le programme principal
- Au niveau de l’analyse et de l’algorithme - Au niveau du programme Pascal
PROC Nom_procédure (pe1, pe2, …, pen) Nom_procédure (pe1, pe2, …, pen);
Solution de l’activité :
♣ Algorithme du programme principal :
0) Début permutation
1) Écrire ("Introduire trois entiers"), Lire (X, Y, Z)
2) PROC Permute (X, Y)
3) PROC Permute (Y, Z)
4) Écrire(X, Y, Z)
5) Fin permutation

-4-

34
Ch. IV Niveau : 4ème Scientifiques
T.D.O.Globaux

Objet Type/Nature Rôle


X Entier Contenir la valeur du premier entier saisi
Y Entier Contenir la valeur du deuxième entier saisi
Z Entier Contenir la valeur du troisième entier saisi
Permute Procédure Permuter deux entiers

♣ Algorithme de la procédure Permute


0) DEF PROC Permute (VAR
VAR A, B : entier)
1) Aux←A
A←B
B←Aux
2) Fin Permute
T.D.O.Locaux
Objet Type/Nature Rôle
Aux Entier Variable auxiliaire

V. Déclaration et accès aux objets


Les objets locaux
Tous les objets déclarés dans un sous-programme sont dits locaux à celui-ci. Exemple : l’objet VX
de la fonction Absolue est un objet local dans cette fonction.
Les objets globaux
Tous les objets déclarés dans un programme sont dits globaux.. Exemple : les objets VA et VB
sont deux objets globaux dans le programme somme.
Remarque : Il est possible d’utiliser un objet global dans un sous-programme sans le déclarer
dans celui-ci
Accès aux objets (visibilité des variables)
Dans un sous programme Sp1 de niveau i, les objets connus sont les objets déclarés localement et
les objets déclarés dans les sous programmes qui englobent Sp1 de niveau j inférieur à i.
Autrement, tous les objets locaux d'un sous-programme sont inaccessibles par :
le programme principal
les sous programmes déclarés au même niveau que le sous programme considéré
le sous programme qui englobe le sous programme considéré

VI. Les paramètres et leur mode de transmission


Les paramètres formels
Ce sont les paramètres (objets) qui se trouvent dans l’entête du sous-programme. Exemple :
A et B sont deux paramètres formels puisqu’ils existent dans l’entête de la procédure Permute.
Les paramètres effectifs
Ce sont les paramètres qui figurent au niveau de l’appel du sous-programme. Exemple : X, Y
et Z sont trois paramètres effectifs dans le programme permutation

-5-

35
Ch. IV Niveau : 4ème Scientifiques
Remarques
Remarques :
Les paramètres formels et effectifs doivent correspondre en nombre, en ordre et en type
Il est possible d’utiliser les paramètres effectifs au niveau des entêtes des sous programmes
Mode de passage des paramètres
Il existe deux modes de passage des paramètres: le mode par valeur
valeur et le mode par variable.
variable
• Mode de passage par valeur
- En utilisant le mode de passage par valeur, le programme principal (programme appelant)
échange avec le sous-programme (programme appelé) les variables dans un seul sens : du
programme principal vers le sous-programme.
- Les paramètres formels du sous-programme sont substitués par des copies des paramètres
effectifs.
• Mode de passage par variable :
- En utilisant le mode de passage par variable, le programme appelant et le programme appelé
échangent les variables dans les deux sens.
- Les paramètres formels sont substitués par les programmes effectifs eux même (leurs
adresses). Ce type de passage est appelé aussi passage par adresse.
Remarque : les fonctions utilisent seulement le type de passage par valeur

-6-

36
Ch.VI Niveau : 4ème Scientifiques

I. Les
Les algorithmes de tri dans un tableau
- Un algorithme de tri est un algorithme qui permet d’organiser une liste d’éléments dans un
ordre bien déterminé (croissant ou décroissant)
- Il existe plusieurs algorithmes de tri tels que : le tri par sélection, le tri par insertion et le tri à
bulles.
1. Le tri par sélection
♣ Principe
Le tri par sélection consiste à chercher à chaque itération i le minimum des éléments du
tableau dans les cases d’indices j>i et le permuter avec l’élément en cours (d’indice i) si ce dernier
est plus grand.
♣ Exemple
Itération
i=…………. paT
paTma pa25
pa25ma
25ma pa15
pa15ma
15ma pa7
pa7ma pa4
pa4ma pa12
pa12ma
12ma pa2
pa2ma
j=…….….... 1 2 3 4 5 6

i=…………. paT
paTm Pa 2ma pa15
pa15ma
15ma pa7
pa7ma pa4
pa4ma pa12
pa12ma
12ma pa25
pa25ma
25ma
j=…….….... 1 2 3 4 5 6

i=…………. paT
paTm Pa 2ma Pa4
Pa4ma pa7
pa7ma Pa15
Pa15ma
15ma pa12
pa12ma
12ma pa25
pa25ma
25ma
j=…….….... 1 2 3 4 5 6

i=…………. paT
paTm Pa 2ma Pa4
Pa4ma pa7
pa7ma Pa15
Pa15ma
15ma pa12
pa12ma
12ma pa25
pa25ma
25ma
j=…….….... 1 2 3 4 5 6

i=…………. paT
paTm Pa 2ma Pa4
Pa4ma pa7
pa7ma Pa12
Pa12ma
12ma pa15
pa15ma
15ma pa25
pa25ma
25ma
j=…….….... 1 2 3 4 5 6

♣ Application1
Ecrire un programme qui permet de remplir un tableau T par n entiers positifs tel 5<=n<=20
puis de trier ce dernier dans un ordre croissant en utilisant la méthode de tri par sélection.
Solution :
Programme principal

Saisir n et T Afficher T
Trier T
trié

Déterminer la position Permuter l’élément en


du minimum cours avec le minimum

-1-

37
Ch.VI Niveau : 4ème Scientifiques

Analyse du programme principal


Nom : tri_selection Proc Saisie(T, n)
Résultat= Proc Affichage(T, n) Fin tri_selection
Proc Tri (T, n)
Tableau de déclaration des Nouveaux Types (T.D.N.T)

Types
tab = tableau de 20 entiers
Tableau de déclaration des objets globaux (T.D.O.G)

Objet Type/Nature Rôle


T tab Contenir des entiers positifs
n Entier Contenir la taille du tableau
Saisie Procédure Saisir n et T
Tri Procédure Trier le tableau T
Affichage Procédure Afficher T après tri
Algorithme de la procédure Saisie
2) Pour i de 1 à n faire
0) DEF Proc saisie (var T : tab ; var n: entier)
1) Répéter Répéter
Écrire ("Entrer la taille du tableau") écrire ("Entrer T[",i,"]")
Lire (n) Lire(T[i])
Jusqu’à n dans [5..20] Jusqu’à T[i]>0
3) Fin Saisie
Tableau de déclaration des objets locaux (T.D.O.L)

Objet Type/Nature Rôle


i Entier Compteur
Algorithme de la procédure Tri
0) DEF Proc Tri (var T : tab ; n : entier) FinSi
1) Pour i de 1 à (n-1) faire FinPour
Pmin ← i Si (i ‡ Pmin) alors
Pour j de (i+1) à n faire Proc Permute (T[Pmin],T[i])
Si T[Pmin] > T[j] alors 2) Fin Tri
Pmin ← j
Tableau de déclaration des objets locaux

Objet Type/Nature Rôle


i Entier Compteur
Pmin Entier Contenir la position du minimum
Permute Procédure Permuter l’élément en cours avec le minimum

-2-

38
Ch.VI Niveau : 4ème Scientifiques

Algorithme de la procédure Permute


0) DEF Proc Permute (var a,b : entier) 3) b ← aux
1) aux ← a 4) Fin Permute
2) a ← b
Tableau de déclaration des objets locaux

Objet Type/Nature Rôle


Aux Entier Jouer le rôle d’une variable auxiliaire
Algorithme de la procédure Affichage
0) DEF Proc Affichage (T : tab ; n : entier) FinPour
1) pour i de 1 à n faire Fin Affichage
Ecrire (‘’T[‘’, i ,’’]= ", T[i])
Tableau de déclaration des objets locaux

Objet Type/Nature Rôle


i Entier compteur

2. Le tri par insertion


♣ Principe
Le tri par insertion consiste à insérer l’élément en cours d’indice i dans la partie du tableau
d’indice j<i. La position P d’insertion est déterminée lorsqu’on trouve un élément plus grand,
sinon, il garde sa place.
♣ Exemple
Itération
i=…………. paT
paTma pa25
pa25ma
25ma pa15
pa15ma
15ma pa7
pa7ma pa4
pa4ma pa12
pa12ma
12ma pa2
pa2ma
j=…….….... 1 2 3 4 5 6

i=…………. paT
paTm Pa 15ma
15ma Pa25ma
25ma pa7
pa7ma pa4
pa4ma pa12
pa12ma
12ma pa2
pa2ma
j=…….….... 1 2 3 4 5 6

i=…………. paT
paTm Pa 7ma Pa15
Pa15ma
15ma Pa25ma
25ma Pa4
Pa4ma pa12
pa12ma
12ma pa2
pa2ma
j=…….….... 1 2 3 4 5 6

i=…………. paT
paTm Pa 4ma Pa7
Pa7ma Pa15ma
15ma Pa2
Pa25ma pa12
pa12ma
12ma pa2
pa2ma
j=…….….... 1 2 3 4 5 6

i=…………. paT
paTm Pa 4ma Pa7
Pa7ma Pa12ma
12ma Pa1
Pa15ma Pa25ma pa2
pa2ma
j=…….….... 1 2 3 4 5 6

i=…………. T Pa 2ma Pa4


Pa4ma Pa7
Pa7ma Pa1
Pa12ma Pa1
Pa15ma pa2
pa25ma
j=…….….... 1 2 3 4 5 6

♣ Application2
Résoudre l’application précédente en se basant sur le principe de la méthode de tri par
insertion

-3-

39
Ch.VI Niveau : 4ème Scientifiques

Solution :

Programme principal

Trier T Afficher T trié

Chercher la position Insérer l’élément


d’insertion Décaler T en cours

Analyse du programme principal : voir Solution de l’application1


Algorithme de la procédure Saisie : voir Solution de l’application1
Algorithme de la procédure Tri
0) DEF Proc Tri (var T : tab ; n : entier) T[j] ← temp
1) Pour i de 2 à n faire FinPour
2) Fin Tri
J←i
Temp ← T[i]
Proc Decalage (T,j,temp)

Tableau de déclaration des objets locaux

Objet Type/Nature Rôle


i Entier Compteur
j Entier Contenir la position d’insertion
temp Entier Contenir l’élément à insérer (le garder afin qu’il ne soit écrasé au
moment du décalage)
Decalage Procédure Décaler les éléments du tableau à droite
Algorithme de la procédure Decalage
0) DEF Proc Decalage (var T : tab ; var j : entier ; j←j-1
temp : entier ) FinTantque
1) Tant que ( j > 1 ) et (T[j-1] > temp ) faire Fin Decalage
T[j]← T[j-1]

3. Le tri à Bulles
♣ Principe
Le principe de tri à bulles consiste à parcourir le tableau à trier et pousser l’élément le plus
grand à la fin du tableau. Pour pousser cet élément à la fin, on compare les éléments successifs
deux à deux d’indices i et i+1, si t[i+1]<t[i] alors on permute les deux éléments. On arrête le
parcours si dans une itération on ne permute aucun élément.
-4-

40
Ch.VI Niveau : 4ème Scientifiques

♣ Exemple

paT
paTma pa25
pa25ma
25ma pa15
pa15ma
15ma pa7
pa7ma pa 4ma pa12
pa12ma
12ma pa2
pa2ma
1 2 3 4 5 6

paT
paTm Pa 15m
15ma Pa25
Pa25ma
25ma pa7
pa7ma pa4
pa4ma pa12
pa12ma
12ma pa2
pa2ma
1 2 3 4 5 6

paT
paTm Pa 15ma
15ma Pa7
Pa7ma Pa25
Pa25ma
25ma Pa4
Pa4ma pa12
pa12ma
12ma pa2
pa2ma
1 2 3 4 5 6

paT
paTm Pa 15ma
15ma Pa7
Pa7ma Pa4
Pa4ma Pa2
Pa25ma pa12
pa12ma
12ma pa2
pa2ma
1 2 3 4 5 6

paT
paTm Pa 15ma
15ma Pa7
Pa7ma Pa4
Pa4ma Pa1
Pa12ma Pa2
Pa25ma pa2
pa2ma
1 2 3 4 5 6

T Pa 15ma
15ma Pa7
Pa7ma Pa4
Pa4ma Pa1
Pa12ma Pa2
Pa2ma pa2
pa25ma
1 2 3 4 5 6

T 7 15 4 12 2m 25
1 2 3 4 5 6

T 7 4 15 12 2m 25
1 2 3 4 5 6

T 7 4 12 15 2m 25
1 2 3 4 5 6

T 7 4 12 2 15m
15m 25
1 2 3 4 5 6

T 4 7 12 2 15m
15m 25
1 2 3 4 5 6

T 4 7 2 12 15m
15m 25
1 2 3 4 5 6

T 4 2 7 12 15m
15m 25
1 2 3 4 5 6

T 2 4 7 12 15m
15m 25
1 2 3 4 5 6

♣ Application3
Résoudre l’application précédente en se basant sur le principe de la méthode de tri à bulles
Solution :
Programme principal
principal

Saisir n et T Afficher T
Trier T trié

-5-

41
Ch.VI Niveau : 4ème Scientifiques

Analyse du programme principal : voir Solution de l’application1


Algorithme de la procédure Saisie : voir Solution de l’application1
Algorithme de la procédure Tri
0) DEF Proc Tri (var T : tab ; n : entier) Proc Permute (T[i], T[i+1])
1) Répéter FinSi
Verif ← faux FinPour
Pour i de 1 à n faire Jusqu’à (Verif = faux)
Si T[i] > T[i+1] alors 2) Fin Tri
Verif ←vrai

Tableau de déclaration des objets locaux

Objet Type/Nature Rôle


i Entier Compteur
verif Booléen Vérifier s’il y a permutation ou non
Permute Procédure Permettre la permutation des deux éléments successifs dans T
Algorithme de la procédure Permute : voir Solution de l’application1

Analyse de la procédure Affichage : voir Solution de l’application1

II. La recherche dans un tableau


- Dans cette partie, on vise à vérifier l’existence d’un élément dans un tableau.
- Il existe plusieurs méthodes pour assurer cette tâche dont les plus connues sont : la recherche
séquentielle et la recherche dichotomique
1. La recherche séquentielle
♣ Principe
La recherche séquentielle consiste à parcourir le tableau élément par élément en les
comparant avec l’élément à rechercher jusqu’à trouver cette valeur ou atteindre la fin du
tableau.
♣ Application
Ecrire un programme qui permet de vérifier l’existence d’un entier e dans un tableau T de
n entiers tels que : 3 ≤ n≤10 et les éléments de T sont inférieurs à 21 et remplis d’une façon
aléatoire (utiliser la méthode de recherche séquentielle)
Solution :

Programme principal

Saisir n, T et e

-6-

42
Ch.VI Niveau : 4ème Scientifiques

Analyse du programme principal


Nom : Recherche_sequentielle Écrire (e, " n’existe pas dans T")
Résultat= chercher FinSi
chercher= [] Si Fn Recherche(T, n, e) alors Proc Saisie(T, n, e)
écrire (e, " existe dans T") Fin Recherche_sequentielle
Sinon
Tableau de déclaration des nouveaux Types (T.D.N.T)

Types
tab = tableau de 10 entiers
Tableau de déclaration des objets globaux (T.D.O.G)

Objet Type/Nature Rôle


T tab Contenir des entiers
n Entier Contenir la taille du tableau
e Entier Contenir l’entier à rechercher dans T
Saisie Procédure Saisir n, T et e
Recherche Fonction Rechercher l’existence de e dans T
Algorithme de la procédure saisie
0) DEF Proc Saisie (var T : tab ; var n,e : entier) T[i]←Aléa(21)
1) Répéter FinPour
écrire ("Entrer la taille du tableau"),lire(n) 3) écrire ("Entrer l’entier à rechercher"), lire(e)
Jusqu’à n dans [3..10] 4) Fin Saisie
2) pour i de 1 à n faire
T.D.O.L

Objet Type/Nature Rôle


i Entier Compteur
Algorithme de la fonction Recherche
0) DEF Fn Recherche (T : tab ; n,e : entier) : trouve←vrai
booléen FinSi
1) [i←0, trouve←faux ] Répéter Jusqu’à (trouve) ou (i=n)
i← i+1 2) Recherche← trouve
Si (T[i]=e) alors 3) Fin Recherche
Tableau de déclaration des objets locaux

Objet Type/Nature Rôle


i Entier Compteur
trouve Booléen Vérifier l’existante de e dans T

-7-

43
Ch.VI Niveau : 4ème Scientifiques

2. La recherche
recherche dichotomique
♣ 1Principe
- La recherche dichotomique s’applique sur des tableaux triés.
- Cette méthode consiste à diviser le tableau à chaque fois en deux parties puis localiser
l’élément dans la partie gauche ou la partie droite.
- On définit dans le tableau T une borne inférieure notée Bi et une borne supérieure notée Bs
représentant respectivement les positions du premier et du dernier élément appartenant au
tableau dans lequel s’effectue la recherche.
- La position du milieu est déterminée par la formule suivante : m= (Bi+Bs) div 2
- On compare à chaque fois T[m] avec l’élément e à chercher :
• Si T[m]=e : l’élément est trouvé
• Si T[m]>e, bs←m-1
• Si T[m] <e, bi←m+1
- On répète le traitement jusqu’à trouver l’élément recherché ou que Bs <Bi
♣ Application
Ecrire un programme qui permet de rechercher un entier e dans un tableau T de n entiers avec
5≤n≤20. Les éléments du tableau doivent être triés dans l’ordre croissant au moment de la saisie.
2Solution :

Programme principal

Afficher le
Saisir n, T et e Rechercher e résultat trouvé

Analyse du programme principal


Nom : Recherche_dichotomique Proc Saisie (T, n, e)
Résultat=Proc Affichage(Fn Recherche(T,n, e),e) Fin Recherche_dichotomique
Tableau de déclaration des Nouveaux Types (T.D.N.T)

Types
tab = tableau de 20 entiers
Tableau de déclaration des objets globaux (T.D.O.G)

Objet Type/Nature Rôle


T tab Contenir des entiers positifs
n Entier Contenir la taille du tableau
e Entier Contenir l’élément à rechercher dans T
Saisie Procédure Saisir n, T et e
Recherche Fonction Vérifier l’existence de e dans T
Affichage Procédure Afficher le résultat de la recherche

-8-

44
Ch.VI Niveau : 4ème Scientifiques

Algorithme de la procédure Saisie


0) DEF Proc Saisie (var T : tab ; var n,e : entier) Répéter
1) Répéter écrire ("Entrer T [",i,"]"), Lire (T[i])
écrire ("Entrer la taille du tableau"),Lire(n) Jusqu’à T[i]≥T[i-1]
Jusqu’à n dans [5..20] FinPour
2) écrire ("Entrer T[1]"), Lire(T[1]) 4) écrire("Entrer l’élément à rechercher"),Lire(e)
3) Pour i de 2 à n faire 5) Fin Saisie

Tableau de déclaration des objets locaux (T.D.O.L)

Objet Type/Nature Rôle


i Entier Compteur
Algorithme de la fonction Recherche
0) DEF Fn Recherche (T : tab ; n, e : entier) : Bi ← m + 1
booléen Sinon
1) [Bi ← 1 , Bs ← n , trouve ← faux] Bs ← m - 1
2) Répéter FinSi
m ← (Bi+Bs) DIV 2 Jusqu’à (trouve=vrai) ou (Bi>Bs)
Si T[m] = e alors 3) Recherche ← trouve
trouve ← vrai 4) Fin Recherche
Sinon Si T[m] < e alors

Tableau de déclaration des objets locaux

Objet Type/Nature Rôle


Bi Entier Contenir la valeur de la borne inférieure
Bs Entier Contenir la valeur de la borne supérieure
m Entier Contenir la position du milieu
trouve Booléen Vérifier l’existence de e dans T
Algorithme de la procédure Affichage
0) DEF Proc Affichage (B : booléen ; e : entier) Ecrire (e, " n’existe pas dans T")
1) Si B alors FinSi
Ecrire (e, " existe dans T") 2) Fin Affichage
Sinon

Remarque : il est possible d’afficher le résultat souhaité directement dans le programme


principal comme pour le cas de la recherche séquentielle (le programme principal sera donc le
même utilisé dans le cas précédent et la procédure Affichage sera inutile)
3
4
5

-9-

45

Vous aimerez peut-être aussi