Académique Documents
Professionnel Documents
Culture Documents
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
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
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
Déclaration
Déclaration au niveau de l’algorithme (T.D.O) Déclaration en pascal
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
-2-
2
Ch.I Niveau : 4ème Scientifiques
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
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
-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
Et And Conjonction
Ou Or Disjonction
Table de vérité
Soient A et B deux expressions booléennes, on obtient la table de vérité suivante :
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
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)
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
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
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
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")
-6-
6
Ch.I Niveau : 4ème Scientifiques
Déclaration
Déclaration au niveau de l’algorithme (T.D.O) Déclaration en pascal
-7-
7
Ch.I Niveau : 4ème Scientifiques
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"
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" - - - -
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
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 :
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
Déclaration en algorithmique
Tableau de déclaration de nouveaux types (T.D.N.T)
Types
- 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';
- 12 -
12
Ch.I Niveau : 4ème Scientifiques
Types Type
Nom_type = (valeur1, valeur2, …, valeurn) Nom_type = (valeur1, valeeur2, …, valeurn) ;
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 : =, >, <, ≥, ≤, ≠
Types Type
Nom_type = Borne inférieure..Borne supérieure Nom_type = Borne inférieure..Borne supérieure ;
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;
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
- 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 ; …
-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
-3-
19
Ch. II Classe : 4èmeScientifiques
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
-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;
-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
♣ Cas général
Le compteur s’incrémente d’un pas p
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
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
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
-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é
-1-
37
Ch.VI Niveau : 4ème Scientifiques
Types
tab = tableau de 20 entiers
Tableau de déclaration des objets globaux (T.D.O.G)
-2-
38
Ch.VI Niveau : 4ème Scientifiques
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
♣ 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
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
Programme principal
Saisir n, T et e
-6-
42
Ch.VI Niveau : 4ème Scientifiques
Types
tab = tableau de 10 entiers
Tableau de déclaration des objets globaux (T.D.O.G)
-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é
Types
tab = tableau de 20 entiers
Tableau de déclaration des objets globaux (T.D.O.G)
-8-
44
Ch.VI Niveau : 4ème Scientifiques
-9-
45