Vous êtes sur la page 1sur 152

TABLE DES MATIÈRES

1 Démarche de résolution de problèmes 2

2 Les éléments de base 14

3 Les structures conditionnelles 31

4 Les structures itératives 47

5 Les tableaux et les matrices 66

6 Les enregistrements 87

7 Les chaines de caractères 100

8 Les procédures et les fonctions 109

9 La récursivité 140
CHAPITRE 1
DÉMARCHE DE RÉSOLUTION DE
PROBLÈMES

Objectifs spécifiques
— Apprendre les notions de base
— Apprendre les méthodes d’analyse de
problèmes
— Identifier Les différentes parties d’un algo-
rithme

Plan du chapitre
— Notions de base
— Etapes de résolution d’un problème
— Exercices avec corrections

2
Chapitre 1:
Démarche de résolution
de problèmes
1ère année TI
ISET Bizerte

Notions de base
 Algorithme : C’est une suite d’actions que devra effectuer un
automate (un ordinateur) pour arriver en un temps fini, à un résultat
déterminé à partir d’une situation donnée. La suite d’opérations sera
composée d’actions élémentaires appelées instructions.

 Algorithmique : C’est la logique d’écrire des algorithmes. Pour


pouvoir écrire des algorithmes, il faut connaître la résolution manuelle
du problème, les capacités de l’ordinateur en termes d’actions
élémentaires qu’il peut assurer et la logique d’exécution des instructions

Mme Jihen Bokri 2

2 3
Notions de base
 Programmation : C’est l'ensemble des activités qui permettent
l'écriture des programmes informatiques. C'est une étape importante
du développement de logiciels. Pour écrire le résultat de cette
activité, on utilise un langage de programmation.

 Langage de programmation :C’est une notation


conventionnelle destinée à formuler des algorithmes et produire des
programmes informatiques qui les appliquent. Il offre un ensemble
de notions qui peuvent être utilisées comme primitives pour
développer des algorithmes.

Mme Jihen Bokri 3

Notions de base
 Programme informatique : C’est une séquence
d'instructions qui spécifie les opérations à effectuer pour obtenir un
résultat. Il est exprimé sous une forme qui permet de l'utiliser avec
une machine comme un ordinateur pour exécuter les instructions.
 Langage machine : Le langage utilisé par l’ordinateur est
appelé langage machine. Il s'agit des données telles qu'elles arrivent
au processeur, constituées d'une suite de 0 et de 1. Ce sont des
données binaires
 Assembleur : L’assembleur est le premier langage
informatique qui a été utilisé. Celui-ci est très proche du langage
machine mais reste compréhensible pour des développeurs.
Mme Jihen Bokri 4

4 4
Etapes de résolution d’un problème
 Exemple : On se propose d’écrire un programme qui permet de calculer et
d’afficher le produit P de deux nombres de type entiers X et Y.
➢ Première étape : Analyse du problème :
C’est la phase qui consiste à extraire les résultats, les données et les
traitements voulus.
Dans cette étape nous orientons les questions dans trois directions.
o Les résultats souhaités (objectifs de problème)

o Les traitements (liaison entre les résultats et les données)

o Les données nécessaires aux traitements envisagés (objet utilisé)

Mme Jihen Bokri 5

Etapes de résolution d’un problème

Mme Jihen Bokri 6

6 5
Etapes de résolution d’un problème
 Il existe plusieurs approches pour analyser un problème :
o L’approche ascendante
o L’approche descendante

 L’approche ascendante : L’analyse commence à partir de données,


ensuite mettre les traitements nécessaires, jusqu’au arriver au résultat.
 Exemple :
o Données : X et Y deux entiers
o Traitement : Calculer le produit de deux entiers P=X*Y
o Résultat : Afficher le produit P
Mme Jihen Bokri 7

Etapes de résolution d’un problème


 L’approche descendante : L’analyse commence à partir du
résultat du problème, ensuite mettre les traitements nécessaires
et finalement les données.
 Exemple :
o Résultat = Afficher(P)
o Traitement : P = X*Y
o Données : X et Y deux entiers

Mme Jihen Bokri 8

8 6
Etapes de résolution d’un problème
➢ Deuxième étape : Ecriture de l’algorithme
La réécriture des actions de traitement dans l’ordre, donne une
suite finie d’actions qu’on l’appelle Algorithme.
 Structure générale d’un algorithme:
o L'en-tête qui est obligatoire, elle permet de donner un nom à
l’algorithme. Elle est sous la forme Algorithme <nom-algo>
o La partie déclarative contenant tous les objets qui seront impliqués
par les différentes actions de l’algorithme (constantes, types,
variables, etc.).
o Une partie réservée aux actions (en programmation, on dit les
instructions) ; elle est délimitée par les deux mots-clés Début et Fin.
Mme Jihen Bokri 9

Etapes de résolution d’un problème

Mme Jihen Bokri 10

10 7
Etapes de résolution d’un problème
Exemple :
Algorithme Produit
Var
X,Y,P : entier
Début
Ecrire (“Donner X”)
Lire (X)
Ecrire (“Donner Y”)
Lire (Y)
PX*Y
Ecrire(“Le produit est ”,P)
Fin

Mme Jihen Bokri 11

11

Exercices:
 Exercice 1: Ecrire un algorithme qui permet de calculer
la somme de 3 entiers x, y et Z

 Exercice 2: Ecrire un algorithme qui permet de calculer


le carré d’un entier

 Exercice 3: Ecrire un algorithme qui permet de permuter


deux entiers a et b.

 Exercice 4: Ecrire un algorithme qui lit le prix HT d’un


article, le nombre d’articles et le taux de TVA, et qui
fournit le prix total TTC correspondant.
Mme Jihen Bokri 12

12 8
Correction de l’exercice 1:
Algorithme Somme
VAR
x, y, z, S: entier
Début
Ecrire(« Donner la première valeur »)
lire(x)
Ecrire(« Donner la deuxième valeur »)
lire(y)
Ecrire(« Donner la troisième valeur »)
lire(z)
Sx+y+z
Ecrire (« La somme est », S)
FIN
Mme Jihen Bokri 13

13

Correction de l’exercice 2:
Algorithme Carré
VAR
x, R: entier
Début
Ecrire(« Donner la valeur »)
Lire(x)
Rx*x
Ecrire(« le carré de cette valeur est », R)
FIN

Mme Jihen Bokri 14

14 9
Correction de l’exercice 3
Algorithme Permutation
VAR
x, y, aux: entier
Début
Ecrire(« Donnez la première valeur »)
lire(x)
Ecrire (« La deuxième valeur »)
lire(y)
auxx
xy
yaux
Ecrie (« La nouvelle valeur est », x)
Ecrire (« La nouvelle valeur est », y)
FIN

Mme Jihen Bokri 15

15

Analyse ascendante de l’exercice 4


 Données: HT, Nb, TVA
 Traitement: PTHR HT*Nb

TTC PTHR+ PTVA


 PTVAPTHR*TVA/100

Résultat

Mme Jihen Bokri 16

16 10
Correction de l’exercice 4
Algorithme Prix
VAR
HT, TTC, PTHR: réel
Nb, TVA: entier
Début
Ecrire(« Donnez le prix unitaire hors tax »)
Lire(HT)
Ecrire(« Donnez le nombre d’articles)*
Lire(Nb)
Ecrire(« Donnez la valeur de TVA »)
Lire (TVA)
PTHRHT*NB
TTC PTHR+PTHR*TVA/100
Ecrire(« Le prix total TTC est », TTC)
FIN
Mme Jihen Bokri 17

17

Etapes de résolution d’un problème


➢ Troisième étape : de l’algorithme au programme (Traduction) :
On écrit le programme source dans un langage de programmation choisi. Une fois que le
programme écrit, on passe à l’exécution et tout dépend du langage choisi pour qu’il soit
interprété ou compilé :

o Le mode interprétation
Un langage est dit interprété si la traduction en langage machine se fait instruction par
instruction au moment de l’exécution. S’il y a une erreur sémantique ou syntaxique,
l’exécution est arrêtée.
Algorithme
Programme Source

Interprétation

Exécution

Mme Jihen Bokri 18

18 11
Etapes de résolution d’un problème
o Le mode compilation
 Un langage est dit compilé si, à partir du programme déjà écrit dans ce
langage, on génère un autre programme compréhensible par la machine
après avoir corrigé toutes les erreurs révélées par le compilateur.
 La compilation se déroule en deux étapes :
o Le compilateur transforme le code source en code objet, et le sauvegarde
dans un fichier objet, c'est-à-dire qu'il traduit le fichier source en langage
machine.
o Le compilateur fait appel à un éditeur de liens qui intègre dans le fichier
final tous les éléments annexes auxquels le programme fait référence. Puis,
il crée un fichier exécutable qui contient tout ce dont il a besoin pour
fonctionner de façon autonome.
Mme Jihen Bokri 19

19

Etapes de résolution d’un problème

o Le mode compilation

Algorithme Fichier Source Fichier objet


Compilation
Edition des liens

Ficher
exécutable

Mme Jihen Bokri 20

20 12
Etapes de résolution d’un problème
➢ Quatrième étape : Exécution et test
Une fois le programme écrit, qu’il soit interprété ou compilé, on passe à
l’exécution.

Mme Jihen Bokri 21

21

13
CHAPITRE 2
LES ÉLÉMENTS DE BASE

Objectifs spécifiques
— Identifier les types simples
— Apprendre à manipuler des variables et des
constantes
— S’initier avec des exemples simples d’ algo-
rithmes

Plan du chapitre
— Introduction
— Les types simples d’objets
— Les variables et les constantes
— Les opérateurs
— Les expressions
— Exercices avec corrections

14
Chapitre 2:
Les éléments de base
1ère année TI
ISET Bizerte

Introduction
 Un algorithme manipule des objets qui représentent des
données ou des résultats.
 Ces objets peuvent être des constantes ou des variables, de
type simple ou de type structuré.
 Notion d’objet:
o une constante (valeur non modifiable)
o une variable (valeur modifiable).

Mme Jihen Bokri 2

2 15
Introduction
 Un objet est caractérisé par :
o son Identificateur : une suite quelconque de caractères
alphanumériques (sans espace) commençant obligatoirement par
une lettre.
o sa valeur : constante ou variable.
o son type : caractérisant l’ensemble des valeurs possibles ainsi
que les opérateurs applicables.

 Remarque : On ne peut pas faire un traitement sur un


objet si on ne connaît pas son type.
Mme Jihen Bokri 3

Les types simples d’objets

 Un type a pour rôle de caractériser l'ensemble des


valeurs qui sont manipulées lors de l'exécution.
 Un type est parfaitement défini par :
o Son nom.
o L'ensemble des valeurs que peut prendre l'objet.
o Les opérations que l'on peut effectuer sur cet objet.

Mme Jihen Bokri 4

4 16
Le type entier
 Le type Entier désigne les valeurs des nombres entiers relatifs,
formant un sous-ensemble des nombres entiers.
 Un entier est représenté par un nombre fixe d'octets (mot
machine). C’est pour cette raison que l'ensemble des entiers en
informatique est compris entre un minimum et un maximum
avec un bit de signe (le plus à gauche).
o Bit de signe = 0 si entier >= 0
o Bit de signe = 1 si entier < 0

Mme Jihen Bokri 5

Le type réel
 Désigne les valeurs des réels. Les valeurs de type réel forment un
sous-ensemble de l'ensemble des nombres réels.
 Un nombre réel sera représenté sous la forme M.BE
o M :mantisse
o B: base
o E :exposant
 Exemples : 4.2 x 10-3 -2.51 x 104
 En machine, les nombres réels sont représentés dans la norme
IEEE 754.

Mme Jihen Bokri 6

6 17
Le type réel

 Sur les variables de type Réel, on peut utiliser les opérateurs


arithmétiques ainsi que les opérateurs relationnels.
 Les fonctions standards effectuées sur les réels sont :

Mme Jihen Bokri 7

Le type réel
Syntaxe en Rôle de la fonction Exemples
algorithme
Abs(x) Donne la valeur absolue de x Abs(-3.8) vaut 3.8

Abs(5.147) vaut 5.147


Racine(x) Donne la racine carrée de x Racine(4) vaut 2

Racine(5) vaut 2.236068


Arrondi(x) Donne un arrondi en plus de x Arrondi(6.1247) vaut 7

Arrondi(6.9999) vaut 7
Tronc(x) Donne un arrondi en moins de x Tronc(4.9999) vaut 4

Tronc(4.158) vaut 4
Cos(x) Donne le cosinus de x. x est en cos(0) vaut 1
radians
cos(PI/2) vaut 0
Sin(x) Donne le sinus de x sin(0) vaut 0

sin(-PI/2) vaut -1
Exp(x) Donne l’exponentiel de x exp(0) vaut 1
Ln(x) Donne le logarithme népérien ln(0.48) vaut -0.73

Mme Jihen Bokri 8

8 18
Le type caractère
 Une variable de type caractère contient un et un seul
caractère. Les caractères peuvent être des lettres en majuscule
ou en minuscule, des chiffres ou des symboles.
o Exemples : ‘A’, ‘a’, ‘+’, ‘1’….
 Comme les valeurs du type caractère sont ordonnées, on peut
donc utiliser les opérateurs relationnels.
o Exemples: ‘y’ ‘z’ ; ‘8’ ‘9’ ; ‘?’ ‘A’.

Mme Jihen Bokri 9

Le type caractère
 Les fonctions prédéfinies sont:
Fonction Signification Exemple
Ord(C) renvoie le code ASCII du ORD('A') = 65
caractère C
CHR(X) renvoie le caractère dont le : CHR(65) = 'A'
code ASCII est X

SUCC(C) renvoie le successeur de C s’il SUCC('A') = 'B'


existe
PRED(C) renvoie le prédécesseur de C PRED('B') = 'A'
s’il existe
MAJUS(C) convertit le caractère C en MAJUS('a') = 'A'
majuscule s’il est possible
MINUS( C) Convertit le caractère C en MINUS(‘A’)=‘a’
minuscule s’il est possible
Mme Jihen Bokri 10

10 19
Le type booléen ou logique

 Le type Booléen définit une information pouvant prendre


une des deux valeurs prédéfinies VRAI (V/1) ou FAUX
(F/0).

 Sur les variables de type booléen, on applique des


opérateurs logiques pour constituer une expression logique.

Mme Jihen Bokri 11

11

Exercice:

 Ecrire un algorithme qui permet d’afficher la


valeur absolue d’un nombre entier entré au
clavier

Mme Jihen Bokri 12

12 20
Correction de l’exercice:
Algorithme Absolu
Variable
x, y:entier
Début
Ecrire(« Donnez un entier »)
Lire(x)
YAbs(x)
Ecrire(« La valeur absolue de », x, « est », y)
Fin
Mme Jihen Bokri 13

13

Les variables
Une variable est un objet dont le contenu peut être soit consulté, soit
modifié par une action tout le long d'un algorithme.

 Une variable est définie par :

o son nom
o son type
o son contenu

 Exemples:
o x : réel

o y,z : entier

Mme Jihen Bokri 14

14 21
Les constantes
 Une constante est un objet dont l'état reste inchangé tout le long d'un
algorithme. Seule la consultation est autorisée.

 Une constante est définie par:

o son nom
o sa valeur
 Exemples:
o PI=3.14

o ANNEE=2018

Mme Jihen Bokri 15

15

Exercice:

Ecrire un algorithme qui permet de calculer et


afficher la moyenne d’un étudiant pour une
matière donnée en ayant sa note de contrôle et
sa note de synthèse.
(La note de synthèse est coefficient 2)

Mme Jihen Bokri 16

16 22
Correction
Algorithme Moyenne
Variable
NC, NS, Moy: réel
Début
Ecrire(« Donnez la note de contrôle »)
Lire(NC)
Ecrire(« Donnez la note de synthèse»)
Lire(NS)
Moy(NC+2*NS)/3
Ecrire (« La moyenne est », Moy)
Fin
Mme Jihen Bokri 17

17

Les opérateurs
 Les opérateurs arithmétiques:
Opérateur En algorithmique
Addition +
Soustraction -
Multiplication *
Division réelle /
Division entière DIV
(uniquement avec les entiers)
Reste de la division MOD
entière (uniquement avec les entiers)

Mme Jihen Bokri 18

18 23
Les opérateurs
 Les opérateurs relationnels:
Opérateur En algorithmique
Egal =
Différent ≠
inférieur <
supérieur >
Inférieur ou égal ≤
Supérieur ou égal ≥

Mme Jihen Bokri 19

19

Les opérateurs
 Les opérateurs logiques:

Opérateur En algorithmique
Négation NON

ET logique ET

OU logique OU

Mme Jihen Bokri 20

20 24
Les expressions

 Une expression est une suite d'opérandes et d'opérateurs:


o Une opérande peut être une constante ou une variable de
type Entier, Réel, Caractère ou Booléen.
o Un opérateur peut être arithmétique ou logique.

Mme Jihen Bokri 21

21

Les actions élémentaires


 Une action ou instruction est une opération qui permet de
changer un univers donné à partir d’un état initial vers un état
final en un temps fini.
 Une action élémentaire peut être soit :
o Une affectation

o Une opération de lecture ou d’écriture

o Un appel à un programme existant

Mme Jihen Bokri 22

22 25
Les actions élémentaires
 L’affectation:
L’affectation est une instruction qui permet de placer une valeur dans une
variable qui doit être préalablement déclarée.
o Syntaxe:

<variable>  <expression>
o Remarques:
✓ La variable <variable> et <expression> doivent être de types compatibles,

✓ L’expression peut être soit :


• Une constante (A10)
• Une variable (AX)
• Une expression (AX+Y)
Mme Jihen Bokri 23

23

Les actions élémentaires

L’instruction de lecture:
o L’instruction de lecture permet à l’ordinateur d’acquérir des
informations (données) de l’utilisateur par l’intermédiaire d’un
périphérique d'Entrée, tel que le clavier, par exemple.

o La saisie ou lecture se fait uniquement dans des variables. Les données


correspondantes sont stockées dans des cases mémoire (cellules).

o La donnée à introduire doit être de même type que la variable


réceptrice.
Mme Jihen Bokri 24

24 26
Les actions élémentaires
 L’instruction de lecture:
o Format général:
Lire (<nom_variable1> [ , <nom_variable2>, …,<nom_variableN>])
o L’instruction de lecture (Lire) permet de lire à partir du clavier la valeur à affecter à la
variable <nom_variable> au moment de l’exécution du programme.

o Exemples:
✓ Lire (n) cette instruction permet de saisir une valeur dans la variable n

✓ Lire (a,b,c) cette instruction permet de saisir 3 valeurs respectivement dans les variables a, b et c

Mme Jihen Bokri 25

25

Les actions élémentaires


 L’instruction d’écriture (Affichage des données):
o Format général:
Ecrire (<paramètre1>[, <paramètre2>,…,<paramètreN>])
<paramètrei> peut être soit :
✓ Un texte
✓ Une constante
✓ Une variable
✓ Une expression

o Exemples:
✓ Ecrire (x)
✓ Ecrire ( La moyenne est : , Moy)
✓ Ecrire ( La valeur de 3*2 est égale à , 6)
✓ Ecrire ( La surface est : , Long * Larg)
Mme Jihen Bokri 26

26 27
Exercices:
Exercice 1: Ecrire un algorithme qui permet de calculer la
surface et le périmètre d’un cercle en ayant la valeur de son
rayon
Exercice 2: Ecrire un algorithme qui permet d’afficher le
sinus, le cosinus et la tangente de (pi/2)
Exercice 3: Ecrire un algorithme qui permet d’afficher le
majuscule d’un caractère entré en clavier
Exercice 4: Ecrire un algorithme qui permet de calculer et
afficher la somme des parties entières de 3 réels entrés au
clavier
Mme Jihen Bokri 27

27

Correction de l’exercice 1:
Algorithme Cercle
Constante
Pi=3.14
var
r,P,S : réel
Début
Ecrire(« entez le rayon du cercle «)
Lire(r)
P2*Pi*r
SPi*r*r
Ecrire (« le périmètre est », p, »et la surface est » ,s)
Fin
Mme Jihen Bokri 28

28 28
Correction de l’exercice 2:
Algorithme math
Constante
Pi=3.14
Var
s,c,t:réel
Début
s sin(pi/2)
c cos(pi/2)
t s/c
Ecrire(« le sinus est »,s, » le cosinus est » ,c, »et la tangente est » ,t)
fin
Mme Jihen Bokri 29

29

Correction de l’exercice 3:
Algorithme majuscule
Var
R1,R2: caractère
Début
Ecrire (« donner une lettre »)
Lire (R1)
R2majus(R1)
Ecrire (R2)
fin
Mme Jihen Bokri 30

30 29
Correction de l’exercice 4:
Algorithme somme
Var
n:entier
X,y,z:réel
Début
Ecrire (« saisir x,y et z »)
Lire (x,y,z)
n  tronc(x)+tronc(y)+tronc(z)
Ecrire(n)
Fin
Mme Jihen Bokri 31

31

30
CHAPITRE 3
LES STRUCTURES
CONDITIONNELLES

Objectifs spécifiques
— Apprendre les structures conditionnelles
— Apprendre la structure sélective
— SApprendre à faire le choix entre une struc-
ture conditionnelle et une structure sélective

Plan du chapitre
— La structure conditionnelle à simple choix
— La structure conditionnelle à double choix
— Les structures conditionnelles imbriquées
— La structure sélective
— Exercices avec corrections

31
Chapitre 3:
Les structures conditionnelles
1ère année TI
ISET Bizerte

Les structures conditionnelles


1) Schéma conditionnel à simple choix

SI ( <Condition> ) ALORS
<Traitement>
FINSI
 < Condition > : Expression logique qui
retourne un résultat logique (Vrai ou Faux)
 < Traitement > : Une ou plusieurs
instructions pouvant être de toute nature (Simple,
Conditionnelle ou Itérative)

Mme Jihen Bokri 2

2 32
Les structures conditionnelles
1) Schéma conditionnel à simple choix

Si (a > b) Alors
max  a
Finsi

Si (a <= b)
max  b
Finsi

Mme Jihen Bokri 3

Les structures conditionnelles


2) Schéma conditionnel à double choix

SI (< Condition >) ALORS


< Traitement 1 >
SINON
< Traitement 2 >

FINSI
Mme Jihen Bokri 4

4 33
Les structures conditionnelles
2) Schéma conditionnel à double choix

Si (a>b) Alors
max a
sinon
max b
Finsi

Mme Jihen Bokri 5

Les structures conditionnelles


3) Schéma conditionnel imbriqué
SI < Condition1 > ALORS
< Traitement 1 >
SINON
SI < Condition 2> ALORS
<Traitement 2>
SINON
………………………………………
SI < Condition n-1> ALORS
<Traitement n-1>
SINON
< Traitement n >
FINSI
FINSI

FINSI

Mme Jihen Bokri 6

6 34
Les structures conditionnelles
3) Schéma conditionnel imbriqué

 Exemple:
Ecrire un algorithme permettant de lire une
température de l’eau puis afficher son état. Les trois
formes de l’eau sont :
o ″gaz″ si la température dépasse 100°.
o ″liquide″ si la température est entre 0° et 100°.
o ″glace″ si la température est inférieure a 0°.

Mme Jihen Bokri 7

Les structures conditionnelles


3) Schéma conditionnel imbriqué
Algorithme EtatEau
Var temp: Réel
DEBUT
Ecrire(("Donner une temperature: ")
Lire(temp)
Si ( temp>100 ) Alors
Ecrire(("Gaz")
Sinon
Si ( temp>=0 ) Alors
Ecrire(("Liquide")
Sinon
Ecrire(("Solide")
FinSi
Finsi
FIN
Mme Jihen Bokri 8

8 35
Les structures conditionnelles
Exercices d’application
 Exercice 1:
Ecrire un algorithme permettant d’afficher la valeur absolue d’un réel saisi
au clavier:
|x|=x si x>0
|x|=-x si x<0
 Exercice 2: Calcul du salaire net d'un employé:
L'utilisateur saisit le nombre d'heures travaillées, le salaire horaire et
l'ancienneté de l'employé. Les retenues de sécurité sociale sont calculées à
partir du salaire brut multiplié par le taux de retenue de la sécurité sociale
qui est une constante valant 0.19. L'employé bénéficie d'une prime
d'ancienneté qui équivaut à 2% du salaire brut pour + de 10 ans et -20 ans
d'ancienneté et 5% du salaire brut pour + 20 ans d'ancienneté.

Mme Jihen Bokri 9

Correction de l’exercice 1:
Algorithme absolu
Var
x, y: réel
Début
Ecrire (»Donnez un réel »)
Lire(x)
Si (x>=0) Alors
yx
Sinon
y(-1)*x
Finsi
Ecrire(« la valeur absolue est », y)
Fin
Mme Jihen Bokri 10

10 36
Correction de l’exercice 2:
Algorithme Salaire TRSB*Retenu
Constante Si (A>10 et A<20) Alors
Retenu=0.19 PrimeSB*0,02
Variable Sinon Si (A>=20) Alors
N, A: entier PrimeSB*0,05
SH, SN, TR, SB, Prime: réel Sinon Prime0
Début Finsi
Ecrire(« Donnez le nombre d’heures ») Finsi
Lire(N) SNSB+Prime-TR
Ecrire(« Donnez le salaire horaire ») Ecrire(« Le salaire net est », SN)
Lire(SH) Fin
Ecrire(« Donnez l’ancienneté »)
Lire(A)
SBN*SH

Mme Jihen Bokri 11

11

Les structures conditionnelles


Exercices d’application
 Exercice 3:
Ecrire l’algorithme qui affiche le nom d’un opérateur
mathématique (+, - , *, /) introduit par l’utilisateur.

Mme Jihen Bokri 12

12 37
Correction de l’exercice 3:
Algorithme Opérateur Si (op=‘+’) Alors

Variable Ecrire(« Addition »)

op: caractère Sinon Si(op=‘-’) Alors

Début Ecrire(« Soustraction »)

Ecrire (« Donnez un caractère ») Sinon Si(‘op’=‘*’) Alors

Lire(op) Ecrire(« Multiplication »)


Sinon Si (op=‘/’) Alors
Ecrire(« Division »)
Sinon Ecrire(«Opérateur non valide»)
Finsi
Finsi
Finsi
Finsi
Fin

Mme Jihen Bokri 13

13

La structure sélective
SELON sélecteur FAIRE
<Liste de valeurs 1> : <Bloc 1>

<Liste de valeurs 2> : <Bloc 2>



<Liste de valeurs n> : <Bloc n>
SINON : <Bloc n+1>

FINSELON

Mme Jihen Bokri 14

14 38
La structure sélective

 Exemple: Reprendre l’algorithme de l’opérateur


mathématique en utilisant cette fois la structure
sélective

Mme Jihen Bokri 15

15

La structure sélective
Algorithme Opérateur_V2
Var
op : caractère
DEBUT
Ecrire ( Introduire l’opérateur : )
Lire (op)
SELON op FAIRE
‘+’ : Ecrire ( Opérateur d’addition )
‘-’ : Ecrire ( Opérateur de soustraction )
‘*’ : Ecrire ( Opérateur de multiplication )
‘/’ : Ecrire ( Opérateur de division )

SINON : Ecrire ( Opérateur inconnu )


FINSELON
FIN

Mme Jihen Bokri 16

16 39
La structure sélective

 Exercice:
Ecrire l’algorithme qui permet de saisir un numéro de couleur
de l’arc-en-ciel et d’afficher la couleur correspondante :
1 : rouge, 2 : orange, 3 : jaune, 4 : vert, 5 : bleu, 6 : indigo, 7 :
violet.

Mme Jihen Bokri 17

17

Correction
Algorithme Couleur SELON c FAIRE
1: Ecrire(« Rouge »)
Var
2: Ecrire(« Orange »)
c: entier
3: Ecrire(« Jaune »)
Début 4: Ecrire(« Vert »)
Ecrire(« Donnez le numéro de la 5: Ecrire(« Bleu »)
couleur ») 6: Ecrire(« Indigo »)

Lire( c ) 7: Ecrire(« Violet »)


Sinon: Ecrire(« Couleur invalide »)
FIN SELON
FIN

Mme Jihen Bokri 18

18 40
Exercices d’application
 Exercice 1:
Une librairie décide de faire des remises sur les prix d’abonnement à une
revue scientifique selon le menu suivant :
Ancien abonné : -15%
Etudiant : -20%
Nouvel abonné : 00%
Etranger : + 25%
Le calcul du prix d’abonnement se fait en fonction du tarif normal
d’abonnement (TN) et de la qualité de l’abonné (Q). (une seule qualité est
acceptée par abonné).
Ecrire un algorithme permettant de calculer le prix à payer.
Mme Jihen Bokri 19

19

Correction de l’exercice 1:
Algorithme Tarif Si (Qualité=«Ancien abonné ») Alors
Var TFTN-TN*0,15
TN, TF: réel
Sinon Si (Qualité=« Etudiant ») Alors
Qualité: chaine de caractères
Début TFTN-TN*0,2
Ecrire(« Donnez le tarif normal ») Sinon Si (Qualité=« Etranger »)
Lire(TN) Alors
Ecrire(« Donnez la qualité de l’abonné)
TFTN+TN*0,25
Lire(Qualité)
Sinon TFTN
FinSi
FinSi
FinSi
FIN
Mme Jihen Bokri 20

20 41
Exercices d’application
 Exercice 2:
Ecrire un algorithme de résolution.
On dispose de trois nombres réels saisis au clavier.
Selon un choix effectué a partir d’un menu affiché a l’écran, on désire calculer la somme
ou le produit ou la moyenne ou chercher le minimum de ces trois nombres.
Le menu doit se présenter a l’écran de la manière suivante :
------------------ MENU ---------------------
1 --------------somme ----------------------
2---------------produit ----------------------
3---------------Moyenne -------------------
4---------------Minimum -------------------
5---------------Maximum ------------------
-------------------------------------------------
Entrez votre choix ?
Mme Jihen Bokri 21

21

Correction de l’exercice 2:
Algorithme Menu
Var SELON n FAIRE
x, y, z: réel 1: Ecrire(« La somme est », x+y+z)
n: entier 2: Ecrire(« Le produit est », x*y*z)
Début 3: Ecrire(« La moyenne est », (x+y+z)/3)
Ecrire(« Donnez trois nombres réels») 4: Si ((x<y) ET (x<z)) Alors
Lire(x, y, z) Ecrire(x, « est le minimum »)
Sinon Si ((y<x) ET (y<z)) Alors
Ecrire(« ------------------ MENU --------------------- ») Ecrire(y, « est le minimum »)
Ecrire(« 1 --------------somme ---------------------- ») Sinon Ecrire(z, « est le minimum »)
Ecrire(« 2---------------produit --------------------- ») Finsi
Ecrire(« 3---------------Moyenne ------------------- ») Finsi
Ecrire(« 4---------------Minimum ------------------- ») 5: Si ((x>y) ET (x>z)) Alors
Ecrire(« 5---------------Maximum ------------------ ») Ecrire(x, « est le maximum»)
Ecrire(« ------------------------------------------------ ») Sinon Si ((y>x) ET (y>z)) Alors
Ecrire(« Entrez votre choix ? ») Ecrire(y, « est le maximum »)
Sinon Ecrire(z, « est le maximum»)
Lire(n) Finsi
Finsi
Sinon: Ecrire(« Choix invalide »)
FINSELON
FIN

Mme Jihen Bokri 22

22 42
Exercices d’application
 Exercice 3:
Ecrire un algorithme qui compare deux dates
représentées chacune par trois entiers.

Mme Jihen Bokri 23

23

Correction de l’exercice 3:
Algorithme Dates
Var
j1, m1, a1, j2, m2, a2: entier
Début
Ecrire(« le jour de la première date»)
Lire(j1)
Ecrire(« le mois de la première date»)
Lire(m1)
Ecrire(« l’année de la première date»)
Lire(a1)
Ecrire(« le jour de la deuxième date»)
Lire(j2)
Ecrire(« le mois de la deuxième date»)
Lire(m2)
Ecrire(« l’année de la deuxième date»)
Lire(a2)

Mme Jihen Bokri 24

24 43
Correction de l’exercice 3:
Si (a1>a2) Alors
Ecrire(« La première date est supérieure à la deuxième date »)
Sinon Si (a1<a2) Alors
Ecrire(« La deuxième date est supérieure à la première date »)
Sinon Si (m1>m2) Alors
Ecrire(« La première date est supérieure à la deuxième date »)
Sinon Si (m1<m2) Alors
Ecrire(« La deuxième date est supérieure à la première date »)
Sinon Si (j1>j2) Alors
Ecrire(« La première date est supérieure à la deuxième date »)
Sinon Si (j1<j2) Alors
Ecrire(« La deuxième date est supérieure à la première date »)
Sinon Ecrire (« C’est la même date »)
FinSi
FinSi
FinSi
FinSi
FinSi
FinSi
FIN
Mme Jihen Bokri 25

25

Exercices d’application
 Exercice 4:
Ecrire un algorithme qui teste si une année est bissextile
ou non.
Remarque: Une année est bissextile si elle est divisible
par 4 et pas par 100 ou si elle est divisible par 400.

Mme Jihen Bokri 26

26 44
Exercices d’application
 Correction de l’Exercice 4:

Algorithme annne_bissextile
Var
annee :réel
Debut
Ecrire(« entrer l’année : » )
Lire(annee)
Si (((annee MOD 4 =0) ET (annee MOD 100 <> 0)) OU annee MOD 400 =0 ) Alors
Ecrire(« l’année que vous avez entré est bissextile »)
Sinon
Ecrire(« l’année que vous avez entré n’ est pas bissextile »)
Finsi
Fin

Mme Jihen Bokri 27

27

Exercices d’application
 Exercice 5:
Ecrire un algorithme permettant de résoudre une
équation de deuxième degré : ax²+bx+c=0 .

Mme Jihen Bokri 28

28 45
Exercices d’application
 Correction de l’Exercice 5: Si (a=0) alors
Si (b=0) alors
Algorithme calcul_equation Si (c=0) alors
Var Ecrire(« la solution est : S = R»)
A,b,c,d : réels sinon
Début Ecrire(« l’equation n’a pas de solution »)
Ecrire(« entrer le coefficient a : ») Finsi
Lire(a) sinon
Ecrire(« entrer le coefficient b : ») Ecrire (« la solution est : S =»,-c/b)
Lire(b) Finsi
Ecrire(« entrer le coefficient c : ») sinon
Lire(c) d<-- b*b-4*a*c
Si (d=0) alors
Ecrire(« la solution est : S =»,-b/(2*a))
Sinon si (d>0) alors
Ecrire(« l’equation a deux
solution: S1=», (-b-racine(d) /(2*a) , « et S2 = »,(-b+racine(d)
/(2*a))
Sinon
Ecrire(« l’equation n’a pas de solution
dans R »)
Finsi
Finsi
Finsi
Fin

Mme Jihen Bokri 29

29

46
CHAPITRE 4
LES STRUCTURES ITÉRATIVES

Objectifs spécifiques
— Identifier les structures itératives
— Apprendre à faire le choix entre les différentes
structures itératives

Plan du chapitre
— Introduction
— La boucle ”Pour”
— La boucle ”Répéter...Jusqu’à...”
— La boucle ”Tant que”
— Exercices avec corrections

47
Chapitre 4:
Les structures itératives
1ère année TI
ISET Bizerte

Introduction
 Pour saisir les N notes d'un étudiant et calculer sa moyenne,
on est amené à saisir N variables, puis faire la somme et
ensuite diviser la somme par N.

 Cette solution nécessite la réservation de l'espace par la


déclaration des variables, et une série de séquences
d'écriture/lecture.

 Ce problème est résolu à l'aide des structures itératives


appelées aussi structures répétitives.

Mme Jihen Bokri 2

2 48
Introduction
 Une suite de répétitions délimite une suite ordonnée d’instructions et contrôle le
nombre de fois qu’elle va être exécutée.

 On distingue deux types de répétitions :

• L’Itération : quand la répétition est inconditionnelle et qu'on connaît le


nombre de fois que le traitement sera exécuté.
• La Répétition Conditionnelle : quand la poursuite d’une répétition dépend
d’une condition booléenne.

 Une boucle est une instruction permettant de répéter l’exécution d’une même
séquence un nombre de fois fini.

Mme Jihen Bokri 3

La boucle POUR
 L’instruction POUR est une structure itérative permettant l’exécution
d’un traitement donné un nombre de fois n donné.
 On peut l’utiliser chaque fois qu’on connaît le nombre d’exécutions
souhaitées d’un même traitement.
 Syntaxe:
POUR Vc DE Vi A Vf [PAS Vp] FAIRE
< Traitement >
FINPOUR
 Remarques :
o Vc est une variable entière, qui compte le nombre de répétitions du <Traitement>
o Vi la valeur initiale à laquelle Vc est initialisée
o Vf la valeur finale à laquelle se termine Vc
o Vp la valeur du pas, c'est la valeur qu'on rajoute à Vc à chaque fin de traitement
Mme Jihen Bokri 4

4 49
La boucle POUR
 Les étapes d’exécution de la boucle POUR
1. Initialisation de Vc par la valeur de Vi (comme si on avait Vc←Vi).
2. Test si Vi dépasse (±) Vf (du côté supérieur ou inférieur, selon la positivité
ou la négativité du pas) :
o Si oui, alors la boucle s'arrête et l'exécution se poursuit après le
FINFAIRE.
o Sinon :
➢ Exécution du <Traitement>
➢ Incrémentation ou décrémentation de Vc par la valeur du pas
➢ Retour à l'étape 2.

 Remarques:
o La boucle POUR est utilisée lorsqu'on connaît le nombre de répétitions du <Traitement>
d'avance.
o La valeur du pas peut être positive ou négative et par conséquent, il faut au départ de la
boucle que Vi ≤ Vf si Vp est positif ou bien Vi ≥ Vf si Vp est négatif.
o La valeur du pas est égale à 1 par défaut.

Mme Jihen Bokri 5

La boucle POUR

Exemple 1:
Ecrire l'algorithme qui permet de saisir les moyennes des N
étudiants et de calculer la moyenne générale.

Mme Jihen Bokri 6

6 50
La boucle POUR
 Correction:
ALGORITHME MOYENNE
VAR
i, N : entier
MOY, MC,S : réel
DEBUT
ECRIRE("Donner le nombre d'étudiants")
LIRE(N)
S  0 {Initialisation de S}
POUR i DE 1 A N FAIRE
ECRIRE("Donner la moyenne de l'étudiant n°", i)
LIRE(MOY)
S  S + MOY
FINPOUR
MC  S / N
ECRIRE("La moyenne de la classe est : ", MC)
FIN
Mme Jihen Bokri 7

La boucle POUR

Exemple 2:
Ecrire l'algorithme qui permet d'afficher tous les nombres
pairs qui existent entre 1 et 10.

Mme Jihen Bokri 8

8 51
La boucle POUR
 Correction:
• Première solution:
POUR i de 2 à 10 pas 2 Faire
ECRIRE(i)
FINPOUR

• Deuxième solution:
POUR i de 2 à 10 Faire
SI (i mod 2 = 0) ALORS
ECRIRE(i)
FINSI
FINPOUR

Mme Jihen Bokri 9

La boucle POUR

Exemple 3:
Ecrire l'algorithme qui permet d'afficher tous les nombres
impairs entre 50 et 100 dans l'ordre décroissant.

Mme Jihen Bokri 10

10 52
La boucle POUR
 Correction:
POUR i de 99 à 50 pas (-2) Faire

ECRIRE(i)

FINPOUR

Mme Jihen Bokri 11

11

La boucle « Répéter… Jusqu’à… »


 L’instruction REPETER permet l’exécution d’un traitement donné, plusieurs fois,
jusqu’à ce qu’une condition spécifiée soit vraie.
 La condition est une expression logique qui peut être simple ou composée mais qui donne
toujours un résultat logique.
 On peut l’utiliser chaque fois que le nombre d’itérations qui seront exécutées ne peut être
déterminé à priori.
 Syntaxe:
REPETER
<Traitement>
JUSQU'A <Condition>
 Remarques :
o <Traitement>: un ou plusieurs blocs d’instructions,

o <Condition> : c’est une condition d’arrêt en algorithmique sous forme d’expression


logique qui donne un résultat logique vrai ou faux.

Mme Jihen Bokri 12

12 53
La boucle « Répéter… Jusqu’à… »
 Les étapes d’exécution de la boucle REPETER … JUSQU’A
1. Exécution du <Traitement>
2. Test de la valeur de la <condition>
• Si elle est vérifiée Alors la boucle s'arrête
• Sinon Retour à l'étape 1.

 Remarques:
• Dans cette boucle, le <Traitement> est exécuté au moins une fois avant
l'évaluation de la <Condition> d'arrêt.
• Il doit y avoir une action dans le <Traitement> qui modifie la valeur de la
<Condition>.
Mme Jihen Bokri 13

13

La boucle « Répéter… Jusqu’à… »


 Exemple:
Ecrire un algorithme qui saisit un nombre pair.

Mme Jihen Bokri 14

14 54
La boucle « Répéter… Jusqu’à… »
 Correction:
ALGORITHME Saisie_Nbre_Pair
VAR
N : entier
DEBUT
REPETER
Ecrire("Donner un nombre pair")
Lire(N)
JUSQU'A (N MOD 2 = 0)
ECRIRE(N)
FIN

Mme Jihen Bokri 15

15

La boucle TANT QUE


 L’instruction TANT QUE permet l’exécution d’un traitement donné, plusieurs fois,
tant qu’une condition spécifiée est vraie.

 La condition est une expression logique qui peut être simple ou composée mais qui
donne toujours un résultat logique.

 Cette instruction est utilisée à chaque fois que le nombre d’itérations n’est pas connu
à l’avance.

Mme Jihen Bokri 16

16 55
La boucle TANT QUE
 Syntaxe:

TANT QUE <Condition> FAIRE

<Traitement>

FINFAIRE
o <Traitement>: un ou plusieurs blocs d’instructions

o <Condition> : c’est une condition d’exécution sous forme d’expression logique (vrai ou faux).

 Remarque: Cet ordre d'itération permet de répéter le <Traitement> zéro ou plusieurs fois et de

s'arrêter lorsque la <Condition> d'exécution n'est plus vérifiée. En effet, lorsque la

<Condition> d'exécution est vérifiée, le <Traitement> est exécuté, si non elle s'arrête.

Mme Jihen Bokri 17

17

La boucle TANT QUE


 Les étapes d’exécution de la boucle TANT QUE
1. Tester la valeur de la <condition>
2. Si elle est vérifiée alors Exécution du <Traitement> et Retour à l'étape 1.
o Sinon Arrêt de la boucle.

 Remarques:
o Dans cette boucle, le <Traitement> peut ne pas être exécuté du tout,
c'est lorsque la <Condition> d'exécution est à faux dès le départ.
o Les paramètres de la <Condition>doivent être initialisés par lecture ou
par affectation avant la boucle.
o Il doit y avoir une action dans le <Traitement> qui modifie la valeur
de la condition.
Mme Jihen Bokri 18

18 56
La boucle TANT QUE

 Exemple
Ecrire un algorithme qui calcule la somme de n premiers nombres
(n doit être positif).
Par exemple: pour n=4, L’algorithme affiche 10 (4+3+2+1)

Mme Jihen Bokri 19

19

La boucle TANT QUE


 Correction:
ALGORITHME Somme
VAR
N, i, S : entier
DEBUT
REPETER
ECRIRE("Donner la valeur de N")
LIRE(N)
JUSQU’A (N>0)
S  0
i  1
TANT QUE (i<=N) FAIRE
S  S + i
i  i +1
FINFAIRE
ECRIRE("La Somme est égale à : ", S)
FIN

Mme Jihen Bokri 20

20 57
Remarques générales
1. Le <Traitement> d'une boucle peut contenir lui aussi une autre
boucle. On l'appelle dans ce cas des boucles imbriquées.

2. La boucle REPETER est exécutée 1 ou plusieurs fois et la boucle


TANT QUE est exécutée 0 ou plusieurs fois.

3. La condition d'arrêt de la boucle REPETER est l'inverse de la


condition d'exécution de la boucle TANTQUE.

Mme Jihen Bokri 21

21

Exercices d’application

 Exercice 1:
Transformer la boucle pour suivante :
Pour i de 5 à 15 faire
écrire(" le carré de ", i, " est ", i*i)
finPour
1. En boucle tant que
2. En boucle répéter jusqu’à

Mme Jihen Bokri 22

22 58
Exercices d’application
 Correction de l’Exercice 1:
1. en : boucle tant que
i5
Tant que (i≤15) faire
écrire(" le carré de ", i, " est ", i*i)
ii+1
FinFaire
2. en boucle répéter jusqu’à
i5
Répéter
écrire(" le carré de ", i, " est ", i*i)
ii+1
Jusqu’à (i=16)

Mme Jihen Bokri 23

23

Exercices d’application
 Exercice 2:
Algorithme exercice2
var
i, N, P : entier
Début
lire(N)
P1
pour i de 1 à N faire
P P*i
finfaire
écrire(P)
Fin
1. Donnez la trace d’exécution de cet algorithme pour N = 4
2. Que fait cet algorithme
Mme Jihen Bokri 24

24 59
Exercices d’application

 Correction de l’Exercice 2:
1. Donnez la trace d’exécution de cet algorithme pour N = 4
Valeur de i Valeur de P
1 1
2 2
3 6
4 24

2. Cet algorithme calcule le factoriel de N.

Mme Jihen Bokri 25

25

Exercices d’application

 Exercice 3:
Ecrire les instructions qui permettent l'affichage de tous
les nombres impairs qui existent entre 30 et 50 de deux
manières différentes.

Mme Jihen Bokri 26

26 60
Exercices d’application
 Correction de l’Exercice 3:
 Première manière:
Pour i de 31 à 49 PAS 2 faire
Ecrire(i)
FinPour
 Deuxième manière:
Pour i de 30 à 50 faire
Si (i MOD 2 ≠ 0) Alors
Ecrire(i)
FinSi
FinPour
Mme Jihen Bokri 27

27

Exercices d’application

 Exercice 4:
Ecrire l'algorithme qui permet de calculer et d’afficher
la factorielle d’un entier n positif.

Mme Jihen Bokri 28

28 61
Exercices d’application
 Correction de l’Exercice 4:
Algorithme Factoriel
var
i, N, F : entier
Début
Répéter
lire(N)
Jusqu’à (N>0)
F1
pour i de 1 à N faire
F F*i
finPour
écrire(« Le factoriel est », F)
Fin
Mme Jihen Bokri 29

29

Exercices d’application

 Exercice 5:
Ecrire l'algorithme qui détermine le Nième terme d'une
suite définie par :
S0 = 2, S1 = 3 et Sn = S n-2+ (-1)n * Sn-1

Mme Jihen Bokri 30

30 62
Exercices d’application
 Correction de l’Exercice 5:
Algorithme Suite
var
S0, S1, S, N : entier
Début
lire(N)
S02
S13
pour i de 2 à N faire
SS0+puissance(-1, i)*S1
S0S1
S1S
finPour
écrire(« Le résultat est », S)
Fin
Mme Jihen Bokri 31

31

Exercices d’application
 Exercice 6:

Donner les instructions qui permettent de calculer la valeur de x


puissance n

Mme Jihen Bokri 32

32 63
Exercices d’application
 Correction de l’Exercice 6:
Algorithme Puissance
Var
x, P: réel
i, n: entier
Début
Lire(x)
Lire(n)
P1
Pour i de 1 à n faire
PP*x
FinPour
Ecrire(P)
Fin

Mme Jihen Bokri 33

33

Exercices d’application
 Exercice 7:
Ecrire un algorithme qui permet de saisir un nombre pair
et qui détermine combien de fois ce nombre est divisible
par 2.
• Exemple: 8 est divisible 3 fois par 2 (2*2*2).

Mme Jihen Bokri 34

34 64
Exercices d’application
 Correction de l’Exercice 7:
Répéter
Ecrire(« Donnez un entier »)
Lire(N)
Jusqu’à (N MOD 2=0)

D0
Tant que (N MOD 2=0)
NN DIV 2
DD+1
FINFAIRE
Ecrire(D)
Mme Jihen Bokri 35

35

65
CHAPITRE 5
LES TABLEAUX ET LES MATRICES

Objectifs spécifiques
— Savoir déclarer et manipuler des tableaux
— Apprendre à manipuler des matrices

Plan du chapitre
— Introduction
— Les tableaux unidimensionnels
— Exercices sur les tableaux avec corrections
— Les tableaux multidimensionnels (matrices)
— Exercices sur les matrices avec corrections

66
Chapitre 5:
Les tableaux et les matrices
1ère année TI
ISET Bizerte

Introduction
 Définition
Un tableau est une structure de données permettant de regrouper sous un même nom un
nombre fini d’éléments de même type.
 Remarques:
➢ L’accès à un élément du tableau se fait à l’aide d’un indice.
➢ Un tableau est caractérisé par :
o Son nom
o Sa dimension
o Sa taille
o Le type de ses éléments

Mme Jihen Bokri 2

2 67
 On va étudier deux types de tableaux :
➢ Les tableaux à une dimension appelés
également Vecteurs.
➢ Les tableaux à deux dimensions appelés
également Matrices.

Mme Jihen Bokri 3

Les tableaux unidimensionnels ou vecteurs

 Un tableau unidimensionnel est une manière de ranger


des éléments ou des valeurs de même type.
 Il regroupe ces éléments dans une structure fixe et
permet d’accéder à chaque élément par l’intermédiaire
de son rang ou indice.
 C’est en fait un vecteur.

Mme Jihen Bokri 4

4 68
Les tableaux unidimensionnels ou vecteurs
 Déclaration:
Type
Nom_tableau = tableau[1…nombre_éléments] de type_élément

 Exemple:

Type
Tab = tableau [1 ..10] d’entiers
Var
T1, T2 : Tab

Mme Jihen Bokri 5

Les tableaux unidimensionnels ou vecteurs


 Accès:
Nom_tableau(indice)

 Exemples:

T1(1)
T1(5)
T1(10)

Mme Jihen Bokri 6

6 69
Les tableaux unidimensionnels ou vecteurs

 Exemple 1: Initialiser un tableau d’entiers

Mme Jihen Bokri 7

Les tableaux unidimensionnels ou vecteurs


 Exemple 1: Initialiser un tableau:

Algorithme Ini_Tab
Const N = 100
Type TabEnt = Tableau [1..N] de Entier
Var T : TabEnt
i: entier
Début
Pour i de 1 à N Faire
T(i)  0
FinPour

Fin
Mme Jihen Bokri 8

8 70
Les tableaux unidimensionnels ou vecteurs

 Exemple 2: Remplir un tableau d’entiers

Mme Jihen Bokri 9

Les tableaux unidimensionnels ou vecteurs


 Exemple 2: Remplir un tableau d’entiers

Algorithme Ini_Tab
Const MAX = 100
Type TabEnt = Tableau [1..MAX] de Entier
Var T : TabEnt
i: entier
Début
Ecrire(« Donnez la taille effective du tableau »)
lire (N)
Pour i de 1 à N Faire
Ecrire(« Donnez la valeur de l’élément numéro », i)
lire(T(i))
FinPour

Fin
Mme Jihen Bokri 10

10 71
Les tableaux unidimensionnels ou vecteurs

 Exercice 1: Ecrire un algorithme qui calcule et affiche la


moyenne de toutes les valeurs d’un tableau de réels (La
taille effective du tableau est donnée par l’utilisateur)

Mme Jihen Bokri 11

11

Les tableaux unidimensionnels ou vecteurs


 Correction Exercice 1:
Répéter
Algorithme Moyenne Ecrire(« Donnez la taille
Const MAX= 100 effective du tableau »)
Type TabEnt = Tableau [1..MAX] Lire(n)
de réel Jusqu’à((n≥1) ET (n ≤ MAX))
Var T : TabEnt S  0
i, n: entier Pour i de 1 à n Faire
S, M: réel SS+T(i)
Début FinFaire
M  S/n
Ecrire(« La moyenne est », M)
Fin

Mme Jihen Bokri 12

12 72
Les tableaux unidimensionnels ou vecteurs

 Exercice 2:
Ecrire un algorithme qui recherche séquentiellement un élément
dans un tableau d’entiers T (trié) et qui renvoie l'indice
correspondant.

Mme Jihen Bokri 13

13

Les tableaux unidimensionnels ou vecteurs


 Correction de l’exercice 2: Tantque((x ≥ t(i)) et (i ≤ N))
faire
Algorithme Recherche Si (T(i) = x) Alors
Const N = 100 Ecrire(« Cette valeur se trouve
Type TabEnt = Tableau [1..N] de Entier dans le tableau et son indice est »,
Var T : TabEnt i)
i, x: entier Sinon i  i+1
Début FinSi
Ecrire(« Donnez l’entier à chercher ») FinFaire
lire(x)
i1
Si ((i>N) OU (T(i)>x)) Alors
Ecrire (« Cet entier n’existe
pas dans le tableau »)
FinSi
Fin

Mme Jihen Bokri 14

14 73
Les tableaux unidimensionnels ou vecteurs

 Exercice 3:
Ecrire un algorithme qui permet de saisir une valeur donnée par
l’utilisateur x et de l’insérer à une position bien déterminée p (donnée
aussi par l’utilisateur)

Mme Jihen Bokri 15

15

Les tableaux unidimensionnels ou vecteurs


 Correction de l’exercice 3: Si (p=N+1) Alors
t(N+1) x
Algorithme Insertion Sinon
Const MAX = 100 Pour i de N à p PAS -1 faire
Type TabEnt = Tableau [1..MAX] de Entier T(i+1)T(i)
Var T : TabEnt FinPour
i, p, x: entier T(p)x
Début FinSI
Ecrire(« Donnez l’entier à insérer ») Fin
lire(x)
Ecrire(« Donnez la position»)
lire (p)

Mme Jihen Bokri 16

16 74
Les tableaux unidimensionnels ou vecteurs

 Exercice 4:

Ecrire un algorithme qui permet d’insérer une valeur saisie par


l’utilisateur dans un tableau d’entiers T (trié).

Mme Jihen Bokri 17

17

Les tableaux unidimensionnels ou vecteurs


 Correction de l’exercice 4:
Tantque((x > t(i)) et (i ≤ N)) faire
Algorithme Insertion i  i+1
Const MAX = 100 FinFaire
Type TabEnt = Tableau [1..MAX] de Entier Si (i>N) Alors
Var t : TabEnt t(N+1) x
i, j, x: entier Sinon
Début Pour j de N à i PAS -1 faire
Ecrire(« Donnez l’entier à insérer ») t(j+1)t(j)
lire(x) FinPour
i1 t(i)x
FinSi
Fin

Mme Jihen Bokri 18

18 75
Les tableaux unidimensionnels ou vecteurs

 Exercice 5:

Ecrire un algorithme permettant de chercher toutes


les occurrences d’un élément dans un tableau.

Mme Jihen Bokri 19

19

Les tableaux unidimensionnels ou vecteurs


 Correction de l’Exercice 5 :
Algorithme recherche_toutes_occurences
Var
T : tableau [1..100] de réels
N,i : entiers
X : réel
Existe : booléen
Debut
Ecrire(« entrer la valeur de l’’élément à chercher : »)
Lire(X)
Existe  Faux
Pour i de 1 à N Faire
Si (T[i] = X) alors
Existe  Vrai
Ecrire(« l’’élément à chercher apparait à la position : »,i)
Finsi
Finpour

Si (Existe = Faux) alors


Ecrire(« l’’élément n’’apparait pas dans ce tableau »)
Finsi
Fin
Mme Jihen Bokri 20

20 76
Les tableaux unidimensionnels ou vecteurs

 Exercice 6:
Ecrire un algorithme permettant de chercher la dernière
occurrence d’un élément dans un tableau.

Mme Jihen Bokri 21

21

Les tableaux unidimensionnels ou vecteurs


 Correction de l’Exercice 6:
Algorithme recherche_derniere_occurence Tantque ((i>=1) et (Existe=Faux)) Faire
Var Si (T(i) = X) alors
T : tableau [1..100] de réels Existe  Vrai
P, N,i : entiers P i
X : réel Sinon
Existe : booléen i  i-1
Debut Finsi
Ecrire(‘entrer la valeur de l’’élément à Fintantque
chercher :’) Si (Existe = vrai) alors
Lire(X) Ecrire(‘la dernière occurrence de
Existe  Faux l’élément dans ce tableau est :’,P)
iN Sinon
Ecrire(‘l’’élément n’’apparait pas
dans ce tableau ‘)
Finsi
Fin

Mme Jihen Bokri 22

22 77
Les tableaux unidimensionnels ou vecteurs

 Exercice 7:
Ecrire un algorithme permettant de supprimer un élément dans un
tableau (La position de l’élément à supprimer est donnée par
l’utilisateur).

Mme Jihen Bokri 23

23

Les tableaux unidimensionnels ou vecteurs


 Correction de l’Exercice 7:
Algorithme suppression
Var
T : tableau [1..100] de réels
N ,P,i: entiers
Rep : caractère
Debut
Ecrire(« entrer l’indice de l’’élément à supprimer : »)
Lire(P)
Pour i de P à N-1 Faire
T(i)  T(i+1)
Finpour

N  N-1 (*il y aura un élément en moins*)

Fin

Mme Jihen Bokri 24

24 78
Les tableaux unidimensionnels ou vecteurs

 Exercice 8 :

Ecrire un algorithme permettant de trier par ordre croissant les


éléments d’un tableau.

Mme Jihen Bokri 25

25

Les tableaux unidimensionnels ou vecteurs


 Correction de l’Exercice 8 :
Algorithme tri_Croissant
Var
T : tableau [1..100] de réels
N ,i,j: entier
Aux: réel
Debut
Pour i de 1 à N-1 Faire
Pour j de i+1 à N Faire
Si T(i) > T(j) alors
Aux  T(i)
T(i)  T(j)
T(j)  Aux
Finsi
Finpour
Finpour

Fin

Mme Jihen Bokri 26

26 79
 Exercice 9:
Soient T1 et T2 deux tableaux d’entiers tels que la taille de T1 est
inférieure ou égale à celle de T2. Ecrire un algorithme qui teste si les
éléments de T1 apparaissent tous dans le même ordre dans T2.
Exemples:
Pour T1: 5 4 9 1 67 0

T2: 0 2 5 3 4 10 9 1 67 0

L’ algorithme affichera « vrai »


Pour T1: 2 3 1 5

T2: 0 2 5 3 4 10 9 1 67 0

L’algorithme affichera « faux »

Mme Jihen Bokri 27

27

Les tableaux unidimensionnels ou vecteurs


 Correction de l’exercice 9: Si (j>n2) Alors Ecrire(« L’ordre n’est
Algorithme Ordre pas respecté »
Const MAX = 100 bol  faux
Type FinSi
TabEnt=Tableau [1..MAX] de Entier i  i+1
Var T1, T2 : TabEnt FinFaire
i, j, n1, n2: entire
bol: Booléen Si (i>n1) Alors Ecrire(« L’ordre est
Début respecté »)
bol vrai FinSi
i 1
j 1 Fin
Tantque ((i <= n1) et (bol=vrai))
faire
Tant que ((j<=n2) ET (t1(i) ≠ t2(j))
jj+1
FinFaire

Mme Jihen Bokri 28

28 80
Les tableaux multidimensionnels ou matrices

 Les tableaux multidimensionnels sont des


extensions des tableaux à un seul indice.
 Ils servent à représenter des objets
mathématiques plus complexes comme les
matrices.
 Un tableau à 2 dimensions est en fait un tableau
unidimensionnel de tableaux unidimensionnels.
Mme Jihen Bokri 29

29

Les tableaux multidimensionnels ou matrices


 Déclaration:
Const
Nbr_Lig = Val1
Nbr_Col = Val2
Type
Matrice = tableau [1 .. Nbr_Lig, 1.. Nbr_Col ] de type_élément
Var
M : Matrice
i,j : entier { i étant l’indice des lignes et j celui des
colonnes }

Mme Jihen Bokri 30

30 81
Les tableaux multidimensionnels ou matrices

Mme Jihen Bokri 31

31

Les tableaux multidimensionnels ou matrices

 Remarques :
➢ Le Type_Elément_Matrice peut être simple ou structuré.
➢ L’accès à un élément de la matrice ne peut se faire qu’avec deux indices :
un élément est identifié par son numéro de ligne et son numéro de colonne.
➢ Si M est la matrice, M(i,j) désigne l’élément de M situé à la ième Ligne et à l
à jème Colonne.

Mme Jihen Bokri 32

32 82
Les tableaux multidimensionnels ou matrices

 Exercice 1 :
Ecrire un algorithme permettant de saisir les données d’un
tableau à deux dimensions (10,4), de faire leur somme,
produit et moyenne et de les afficher avec les résultats de
calcul à l’écran.

Mme Jihen Bokri 33

33

Les tableaux multidimensionnels ou matrices


 Correction de l’Exercice 1 : Pour i de 1 à 10 Faire
Pour j de 1 à 4 Faire
Algorithme calcul_matrice S  S+T(i,j)
Type P  P * T(i,j)
Tab = tableau [1..10,1..4] de réels Finpour
Var Finpour
T : Tab
i,j: entier M  S/40
S, P, M : réel Pour i de 1 à 10 Faire
Debut Pour j de 1 à 4 Faire
Pour i de 1 à 10 Faire Ecrire(« l’’élément T(» ,i, « , »,j, «)=»,T(i,j))
Pour j de 1 à 4 Faire Finpour
Ecrire(« entrer l’’element T(‘,i,’,’,j,’) : ») Finpour
Lire(T(i,j)) Ecrire(«la somme des éléments du tableau est : »,S)
Finpour Ecrire(«le produit des éléments du tableau est : »,P)
Finpour Ecrire(«la moyenne des éléments du tableau est : »,M)
S0 Fin
P1

Mme Jihen Bokri 34

34 83
Les tableaux multidimensionnels ou matrices

 Exercice 2 : Ecrire un algorithme permettant de saisir


les données d’un tableau à deux dimensions (n,m), et
d’afficher ensuite le maximum de cette matrice et ses
coordonnées.

Mme Jihen Bokri 35

35

Les tableaux multidimensionnels ou matrices


 Correction de l’Exercice 2 : pimax  1
Algorithme max_matrice pj max 1
Type Pour i de 1 à n Faire
Mat = tableau [1..100,1..00] de réels Pour j de 1 à m Faire
Var Si Mat(i,j)> Max Alors
M : Mat Max  Mat(i,j)
i,j: entier pimax  i
S, P, M : réel pjmax j
Debut FinSi
Pour i de 1 à n Faire Finpour
Pour j de 1 à m Faire Finpour
Ecrire(« entrer l’’element T(‘,i,’,’,j,’) : ») Ecrire(«Le maximum est», Max, « et ses coordonnées sont »,
Lire(T(i,j)) pimax, pjmax))
Finpour
Finpour Fin
Max  Mat (1,1)

Mme Jihen Bokri 36

36 84
Les tableaux multidimensionnels ou matrices
 Exercice 3 :
Ecrire un algorithme qui permet de:
1. Lire une matrice carrée A d’ordre (2 ≤ N ≤ 10).
2. Former la matrice carrée d’Hilbert H de même ordre que A, sachant que H(i,j)=1/(i+j-1)
3. Construire la matrice B constituée des deux matrices précédentes disposées comme suit:
B=[A H]
4. Calculer, puis afficher la matrice MaxMin à deux colonnes. Chaque élément de la
première colonne de cette matrice représente le maximum de tous les éléments se trouvant à
la ligne correspondante dans la matrice B. Les éléments de la deuxième colonne sont les
minimums.

Mme Jihen Bokri 37

37

Les tableaux multidimensionnels ou matrices


 Correction de l’exercice 3:
Algorithme calcul_matrice
Type
Matrice=tableau [2..10,2..10] de réels
Var
A, H, J, B: Matrice 3/ Pour i de 1 à n Faire
i,j: entier Pour j de 1 à n Faire
Début B(i,j)A(i,j)
Ecrire(« Donner la taille de la matrice ») Finpour
Lire(n) Pour j de 1 à n Faire
B(i,j+N)H(i,j)
2/ Pour i de 1 à n Faire Finpour
Pour j de 1 à n Faire Finpour
H(i,j)1/(i+j-1)
Finpour
Finpour

Mme Jihen Bokri 38

38 85
Les tableaux multidimensionnels ou matrices
 Correction de l’exercice 3 (Suite):
4/Pour i de 1 à n faire
MaxB(i, 1)
MinB(i,1)
Pour j de 2 à 2N faire
Si (B(i,j)>Max Alors MaxB(i,j)
Finsi
Si (B(i,j)<Min Alors MinB(i,j)
Finsi
FinPour
MaxMin(i, 1)Max
MaxMin(i, 2)Min
FinPour
Fin

Mme Jihen Bokri 39

39

86
CHAPITRE 6
LES ENREGISTREMENTS

Objectifs spécifiques
— S’initier avec les types composés
— Apprendre à manipuler des enregistrements

Plan du chapitre
— Introduction
— Définition et déclaration
— Accès et initialisation
— Exercices avec corrections

87
Chapitre 6:
Les enregistrements
1ère année TI
ISET Bizerte

Introduction
 La structure de tableau permet de traiter des données composées de plusieurs éléments
tous de même type.

 Or d'autres données sont formées d'éléments de types différents comme par exemple:

o les dates chronologiques (année, mois, jour)

o les fiches bibliographiques (titre du livre, auteur, date de parution, ISBN...)

o les fiches personnelles (nom, prénom, âge, sexe, taille ...)

o ...

 La nature différente de ces éléments conduit le programmeur à utiliser une structure


permettant la définition explicite de chacun de ces éléments: les Enregistrement

Mme Jihen Bokri 2

2 88
Définition:
 Un enregistrement est un type de données défini par l’utilisateur ou une structure
composée d’un nombre fixe d’éléments qui peuvent être de types différents.

 Les éléments d’un enregistrement sont appelés:

les champs de l’enregistrement

et peuvent être à leur tour des structures (tableaux, enregistrement, …).

 Lors de la déclaration d'un enregistrement, il faut spécifier un nom pour

chaque champ ainsi quel type d'information qu'il va contenir.

Mme Jihen Bokri 3

Déclaration:
Type
Nom_Enregistrement = Enregistrement
Nom_champ1 : type_champ

Nom_champn : type_champ
FinEnregistrement

Var
Nom_Variable : Nom_Enregistrement

Mme Jihen Bokri 4

4 89
Exemple:
Type
Personne=Enregistrement
Nom: Chaine[20]
Prenom : Chaine[20]
NoEmploye : Entier
FinEnregistrement

Var
p1,p2 :Personne

Mme Jihen Bokri 5

Accès et initialisation:
 Les enregistrements ne peuvent pas être référencés globalement dans une
instruction car ils sont composés d’éléments de type différents.

 Il est possible de faire référence à chaque élément d’un enregistrement.


 On accède à une composante par:
Nom_Variable. Nom_champ
 Exemple: p1.Nom

Mme Jihen Bokri 6

6 90
Accès et initialisation:

 Exemples d’initialization:
o P1.nom "Ali"

o P1.prenom"Salah"

o P1.No_employe12

Mme Jihen Bokri 7

Exemple 1:
 Supposons que nous voulons créer un enregistrement qui
contient le nom et la note d'un étudiant.
Le nom d'un étudiant est un tableau de caractères et la note est
un réel.

 Ecrire un algorithme qui permet de lire et d’afficher les


informations d’un étudiant.

Mme Jihen Bokri 8

8 91
Correction
TYPE

Etudiant = Enregistrement Ecrire("Nom étudiant ? ")

nom : chaine Lire(Etudiant1.nom)

note : réel Ecrire("Note? ")

FinEnregistrement Lire(Etudiant1.note)

Ecrire (Etudiant1.nom)

Ecrire (Etudiant1.note)
VARIABLE

Etudiant1 : Etudiant

Mme Jihen Bokri 9

Exemple 2:

Créons un nouvel enregistrement adéquat pour stocker


la date.
Ecrire un algorithme qui permet de saisir la date et
afficher la même date l’année prochaine.

Mme Jihen Bokri 10

10 92
Correction
Type Ecrire(« Donner la
date = Enregistrement date? ")
jour : Entier
mois : Entier Lire(d1.jour)
annee : Entier Lire(d1.mois)
FinEnregistrement Lire(d1.annee)

Var Ecrire(d1.jour)
Ecrire(d1.mois)
d1: date Ecrire(d1.année+1)

Mme Jihen Bokri 11

11

Exercices d’application
 Exercice 1:
1. Ecrire un algorithme permettant de saisir un tableau de 100
étudiants sachant que chaque étudiant est caractérisé par:
o CIN
o NOM et Prénom
o Classe
o Date de naissance
2. Affichez ensuite les CIN de tous les étudiants dont la classe
est saisie par l’utilisateur

Mme Jihen Bokri 12

12 93
Exercices d’application
Correction de l’Exercice 1:
TYPE
tab_etud = Tableau[1..100] date = Enregistrement
de Etudiant jour : Entier
mois : Entier
Etudiant = Enregistrement annee : Entier
CIN: entier FinEnregistrement
np : chaine[40]
classe : chaine[5] VARIABLE
Daten: Date t: tab_etud
FinEnregistrement

Mme Jihen Bokri 13

13

Exercices d’application
Correction de l’Exercice 1 (Suite):
Début lire (t(i).Daten.mois)
Pour i de 1 à 100 faire Ecrire (« Donnez l’année de naissance de l’étudiant »)
Ecrire (« Donnez le CIN de l’étudiant ») lire (t(i).Daten.annee)
lire (t(i).CIN) FINPOUR
Ecrire (« Donnez le nom et le prénom de l’étudiant »)
lire ((t(i).np))
Ecrire (« Donnez la classe de l’étudiant »)
lire (t(i).classe)
Ecrire (« Donnez le jour de naissance de l’étudiant »)
lire (t(i).Daten.jour)
Ecrire (« Donnez le mois de naissance de l’étudiant »)

Mme Jihen Bokri 14

14 94
Exercices d’application
Correction de l’Exercice 1 (Suite):
Ecrire (« Donnez la classe »)
Lire(cl)
Pour i de 1 à 100 faire
Si (t(i).classe=cl) Alors
Ecrire (t(i).CIN)
FinSi
FINPOUR
FIN

Mme Jihen Bokri 15

15

Exercices d’application
Exercice 2:

Mme Jihen Bokri 16

16 95
Exercices d’application
Correction de l’Exercice 2:
TYPE Début
tab_ent = Tableau[2..20] de Entreprise Répéter
Entreprise = Enregistrement Ecrire(« Donnez le nombre d’entreprises »)
code: entier lire(n)
nemp : entier Jusqu’à ((n≥2) ET (n≤20))
CA : réel
Ratio: réel Pour i de 1 à n faire
FinEnregistrement lire((t(i).code)
VARIABLE lire(t(i).nemp)
t: tab_ent lire((t(i).CA)
i, n: entier t(i).ratio  t(i).CA/t(i).nemp
Rm, SR: réel FINPOUR

Mme Jihen Bokri 17

17

Exercices d’application
Correction de l’Exercice 2 (Suite):
Sr 0
Pour i de 1 à n faire
Sr Sr+t(i).ratio
FinPour
Rm Sr/n
Pour i de 1 à n faire
Si(t(i).ration>Rm) Alors
Ecrire(t(i).code)
FINSI
FINPOUR
FIN

Mme Jihen Bokri 18

18 96
Exercices d’application
Exercice 3:
On voulait créer un programme qui gère numériquement les livres d’une
bibliothèque.
Chaque livre est caractérisé par :
- Un identificateur de type entier
- Un titre de type chaine de caractères
- Un prix de type réel
1. Faites les déclarations nécessaires en algorithmique afin de créer un tableau Bib
qui peut contenir jusqu’au 1000 livres.
2. Remplir le tableau des livres en prenant la taille effective de l’utilisateur.
3.Ecrire les lignes de code qui permettent de vérifier si le titre d’un livre donné par
l’utilisateur existe dans la bibliothèque.
4. Afficher les titres des livres de la bibliothèque dont le prix dépasse 100D.
5.Quel est le pourcentage de ces livres par rapport au nombre total.
Mme Jihen Bokri 19

19

Exercices d’application
 Correction de l’Exercice 3: Début
Ecrire(« Donnez la taille effective du
TYPE tableau »)
Tab_bib= tableau[1..1000] de livre
livre = enregistrement Lire(n)
id: entier Pour i de 1 à n faire
titre: chaine[20] Ecrire(« Donnez l’id »)
prix:réel lire(Bib(i).id)
FinEnregistrement Ecrire(« Donnez le titre »)
VAR lire(Bib(i).titre)
Bib: Tab_bib Ecrire(« Donnez le prix»)
I, n; lc: entier lire(Bib(i).prix)
Bol: Boléen FinPour
T1: chaine[20]

Mme Jihen Bokri 20

20 97
Exercices d’application
 Correction de l’Exercice 3 (Suite): Sinon écrire (« Le livre n’existe pas»)
FinSi
Ecrire (« Donnez le titre du livre à chercher »)
lc0
Lire(t1)
Pour i de 1 à n faire
i1
Si((t(i).prix>100) Alors écrire(t(i).titre)
Bolfaux
lclc+1
Tant que (i≤n) et (Bol=faux) faire
FinSi
Si (t(i).titre=t1) Alors Bol  vrai
FinPour
Sinon ii+1
Ecrire(« Le pourcentage de ces livres est »,
FinSi lc*100/n)
FinTantque FIN
Si (Bol=vrai) Alors écrire (« Le livre existe »)

Mme Jihen Bokri 21

21

Exercices d’application
 Exercice 4:
Le ministère d’agriculture désire faire des statistiques sur les éleveurs de
moutons. Elle dispose pour chacun des N éleveurs de:
o Son numéro de la carte d’identité (CIN)
o Son nombre de brebis
o Son nombre de béliers
o Son nombre d’agneaux
Ecrire un algorithme qui affiche:
1. Pour chaque éleveur:
o Le nombre total de ses animaux
o Le pourcentage d’agneaux par rapport à l’ensemble d’animaux.
2. Le nombre d’animaux que possède en moyenne un éleveur.
3. Le CIN et le nombre d’animaux de l’éleveur ayant le plus grand troupeau

Mme Jihen Bokri 22

22 98
Exercices d’application
Correction de l’Exercice 4:
TYPE Début
Tab_elv = Tableau[1..100] de Eleveur Ecrire(« Donnez le nombre d’éleveurs »)
Eleveur = Enregistrement lire(n)
CIN: entier Pour i de 1 à n faire
nbrebis : entier S  t(i).nbrebis + t(i).nbéliers + t(i).nagneaux
nbéliers: entier Ecrire(« Le nombre total des animaux est », S)
nagneaux: entier prt(i).nagneaux*100/S)
FinEnregistrement Ecrire( « Le pourcenatge des agneaux est », pr)
VARIABLE FINPOUR
t: tab_elv
i, n, S, Pmax, Smax, Se : entier
Pr, Nm : réel

Mme Jihen Bokri 23

23

Exercices d’application
Correction de l’Exercice 4:
TYPE Ecrire( « Le pourcenatge des agneaux est », pr)
Tab_elv = Tableau[1..100] de Eleveur FINPOUR

Eleveur = Enregistrement St0


Pour i de 1 à n faire
CIN: entier
St  St + t(i).nbrebis + t(i).nbéliers + t(i).nagneaux
nbrebis : entier
FINPOUR
nbéliers: entier
Nm  St/n
nagneaux: entier Ecrire(« Le nombre d’animaux que possède en moyenne un éleveur
FinEnregistrement est », Nm)

VARIABLE Smax  t(1).nbrebis + t(1).nbéliers + t(1).nagneaux

t: tab_elv Pmax  1
Pour i de 2 à n faire
i, n, S, Pmax, Smax, Se : entier
Pr, Nm : réel Se  t(i).nbrebis + t(i).nbéliers + t(i).nagneaux
Si Se>Smax Alors
Début
Smax  Se
Ecrire(« Donnez le nombre d’éleveurs »)
Pmaxi
lire(n)
Pour i de 1 à n faire FinSi
FINPOUR
S  t(i).nbrebis + t(i).nbéliers + t(i).nagneaux
Mme Jihen Bokri 24
Ecrire(« Le nombre total des animaux est », S) Ecrire(« Le CIN de éleveur qui a le plus grand troupeau est »,
t(Pmax).CIN, « et le nombre d’animaux est », Smax)
prt(i).nagneaux*100/S) FIN

24 99
CHAPITRE 7
LES CHAINES DE CARACTÈRES

Objectifs spécifiques
— Identifier et déclarer les chaines de caractères
— Apprendre à manipuler les chaines de ca-
ractères

Plan du chapitre
— Introduction
— Les opérateurs de base sur les chaines
— Exercices avec corrections

100
Chapitre 7:
Les chaines de caractères
1ère année TI
ISET Bizerte

Introduction

 Il arrive que l’on ait besoin de manipuler, non pas un simple caractère, mais toute une
suite de caractères que l’on nomme une " chaîne".
 Deux structures peuvent être envisagées selon le mode de l’exploitation qu’on veut appliquer
à cette suite :
o Si on veut la manipuler caractère par caractère: il suffit d’utiliser un tableau de caractères.
o Si on veut exploiter cette suite dans sa totalité et en un seul coup, il conviendrait alors
d’utiliser une structure de données capable de regrouper cette suite en une seule variable
pour la manipuler dans sa totalité.
➢ Une telle structure s’appelle Chaîne de Caractères.

Mme Jihen Bokri 2

2 101
Introduction

 Définition:
Une chaine de caractères est une structure de données
permettant de regrouper une suite finie de caractères
dans une même variable pour pouvoir l’exploiter dans
sa totalité.

Mme Jihen Bokri 3

Introduction
 Déclaration:
Type
Nom_Chaine = Chaine(Taille_Maxi)
Var
Nom_Variable : Nom_Chaine
o Exemple:
Type Nom = Chaine(20)
Variable Nom1, Nom2 : Nom

 Initialisation:
Nom_Variable« message »
o Exemple:
salut  "Bonjour"

Mme Jihen Bokri 4

4 102
Les opérations de base sur les chaines
 Lecture d’une chaine:
Lire (NomChaine)
 Affichage:
Ecrire (NomChaine)
 Les fonctions prédéfinies sur les chaines:
❑ La fonction LONG qui retourne la longueur d’une chaîne.
❑ La fonction CONCAT qui rassemble plusieurs chaînes en une seule.
❑ La fonction POS qui retourne la position d’une sous chaine dans une chaine.
❑ La fonction MAJ qui rend une chaine en Majuscules
❑ La fonction MIN qui rend une chaine en minuscules
❑ La fonction Sous_Chaine une sous_chaine à partir de la chaine initiale

Mme Jihen Bokri 5

Exemple 1: La fonction long


CH : chaine
X : entier
CH  “ISET"
X  LONG(CH)
Écrire(“la longueur est”,X)
(X vaut 4)

Mme Jihen Bokri 6

6 103
Exemple 2: La fonction CONCAT

Nom : Chaîne
Prenom : Chaîne
Etudiant : Chaîne
Etudiant  CONCAT(Nom, Prenom)

Écrire(Etudiant)

Mme Jihen Bokri 7

Exemple 3: La copie de chaines

Var nom,prenom :chaine


nom "Ali"
prenom"Salah"
nom prenom

Ecrire(nom) ➔ Cela affiche: « Salah »

Mme Jihen Bokri 8

8 104
Exemple 4: la fonction POS
La fonction POS retourne la première position à partir de laquelle une sous-
chaîne apparaisse dans une chaîne. Dans le cas où cette sous-
chaîne n’existe pas, elle retourne la valeur zéro.

X  POS(nom_chaîne, nom_sous_chaîne)
X prendra pour valeur, la position à partir de laquelle la sous_chaîne apparaisse dans la
chaîne.
Exemple:
CH  “Iset Bizerte"
CH1  “Bizerte"
X  POS(CH, CH1) on trouvera dans X la valeur 6
de même pour
X  POS(CH,“Bizerte"), on trouvera le même résultat.

Mme Jihen Bokri 9

Exemple 5: les fonctions MAJ et MIN

 La fonction MAJ:
CH  «iset»
CH  MAJ(CH) dans ce cas CH prendra la valeur «ISET»

 La fonction MIN:
CH «ISET»
CH MIN(CH) dans ce cas CH prendra la valeur «iset»

Mme Jihen Bokri 10

10 105
Exemple 6: la fonctions Sous_chaine

Sous_chaine(ch, p, n): Retourne une sous chaîne de


n caractères à partir de la position p de la chaîne
ch.

Exemple: CH  Sous_chaine(“Iset Bizerte”, 6, 4)


➔ CH = “Bize”

Mme Jihen Bokri 11

11

Exercices d’application
 Exercice 1:
Ecrire un algorithme palindrome qui affiche vrai si la chaîne
donnée par l’utilisateur est un palindrome et faux sinon.

N.B: Un mot est palindrome s’il peut se lire de gauche à droite et


de droite à gauche.

Mme Jihen Bokri 12

12 106
Exercices d’application
 Correction: Pour i de 1 à long(ch)DIV 2 faire

Algorithme palindrome Si ch(i) ≠ ch(long(ch)+1-i) alors

Var i :Entier Okfaux


Ok :boleen Finsi
Début FINPOUR
Ecrire ("Donner un mot")
Si (ok=vrai)alors
Lire(ch)
Ecrire("palindrome")
Okvrai
Sinon
Ecrire("non palindrome")
Finsi
Fin

Mme Jihen Bokri 13

13

Exercices d’application

 Exercice 2:
On demande de lire une phrase, qui se termine par un point,
caractère par caractère et de déterminer:
o La longueur de la phrase (le nombre de caractères).
o Le nombre de mots contenus dans la phrase (en supposant
que les mots sont séparés par un seul espace).
o Le nombre de voyelles dans la phrase.

Mme Jihen Bokri 14

14 107
Exercices d’application
FinPour
 Correction de l’Exercice 2:
Ecrire(« Le nombre de mots dans la phrase est », Nmot)
Lire(ph)
Nvoy  0
i1
Pour j de 1 à i faire
Tant que (ph(i)≠’.’) faire
Si ((MAJ(ph(i))=‘A‘) OU (MAJ(ph(i))=‘E‘) OU
i  i+1 (MAJ(ph(i))=‘E‘) OU (MAJ(ph(i))=‘O‘) OU (MAJ(ph(i))=‘I‘)
FinTantque OU (MAJ(ph(i))=‘Y’)) Alors

Ecrire(« La longueur de la phrase est », i) Nvoy Nvoy+1

Nmot  1 FinSi

Pour j de 1 à i faire FinPour

Si (ph(i)=‘ ‘) Alors Ecrire(« Le nombre de voyelles dans la phrase est »,


Nvoy)
Nmot Nmot+1
FinSi

Mme Jihen Bokri 15

15

108
CHAPITRE 8
LES PROCÉDURES ET LES
FONCTIONS

Objectifs spécifiques
— Apprendre la notion de sous-programmes
— Identifier les fonctions, les procédures et la
différence entre elles
— Apprendre les types de passage de paramètres

Plan du chapitre
— Introduction
— Les fonctions
— Les procédures
— Passage de paramètres
— Exercices avec corrections

109
Chapitre 8:
Les procédures et les fonctions
1ère année TI
ISET Bizerte

Introduction
 La conception d’un algorithme procède en général par une décomposition.
 On décompose le problème à résoudre en sous problèmes, puis ces derniers à leur
tours, jusqu’à obtenir des problèmes « faciles à résoudre ».

 Pour chaque sous problème on écrira un sous- programme appelé aussi module.

Mme Jihen Bokri 2

2 110
Introduction
 Les intérêts de la programmation modulaire sont multiples :
o Faciliter la résolution d’un problème complexe,
o Diminuer les risques d’erreurs (en évitant la duplication),
o Effectuer les tests d’une façon sélective,
o Réutiliser des sous programmes déjà existants,
o Avoir une meilleure lisibilité,
o Simplifier la maintenance (l’entretien) des programmes.
o …
 Un sous-programme peut être soit une fonction ou bien une procédure.

Mme Jihen Bokri 3

Les fonctions
 Une fonction est un sous-programme contenant des instructions et retournant un
unique résultat affecté à son nom.
 Syntaxe:

Fonction <Nom_Fonction>(<param1>: <type1>, <param2> :<type2>,…):


<type_résultat>
VAR
<Déclaration locale des variables>
DEBUT
<Bloc d’instructions>
FIN

Mme Jihen Bokri 4

4 111
Les fonctions
 Les paramètres se trouvant dans l’entête d’une fonction sont appelés
des paramètres formels. Ces paramètres permettent à la fonction de
communiquer avec l’extérieur.

 Une fonction peut ne pas avoir des paramètres, ne rien mettre alors
entre les parenthèses.

 Une fonction doit toujours renvoyer un et un seul résultat

 Les variables déclarées dans une fonction sont uniquement visibles


dans cette fonction. On dit que ce sont des variables locales à cette
fonction.
Mme Jihen Bokri 5

Les fonctions

 Exemple 1:

Ecrire une fonction qui permet de retourner le maximum


entre deux réels entrés en paramètres

Mme Jihen Bokri 6

6 112
Les fonctions
 Correction:
Fonction Maximum (a:réel, b:réel) : réel
Var
max : réel
Début
Si (a > b) Alors
max  a
Sinon
max  b
FinSi
maximum  max
Fin

Mme Jihen Bokri 7

Les fonctions

 Exemple 2:

Ecrire une fonction qui retourne la valeur de Pi

Mme Jihen Bokri 8

8 113
Les fonctions
 Correction:
Fonction Pi ( ) : réel
Début
Pi  3.14
Fin

Mme Jihen Bokri 9

Les fonctions
 Appel d’une fonction:
o L’appel d’une fonction est considéré comme une expression dont la
valeur est le résultat renvoyé par cette fonction.
o On peut par exemple récupérer son résultat dans une variable :
<variable>  <Nom_Fonction>(<param1>, <param2>, …)

o Ou encore afficher son résultat :


Ecrire (<Nom_Fonction>(<param1>, <param2>, …) )

Mme Jihen Bokri 10

10 114
Les fonctions
 Appel d’une fonction:
o Les paramètres fournis à l’appel de la fonction se nomment
des paramètres effectifs. Ces paramètres vont remplacer les
paramètres formels lors de l’exécution du programme
o Les paramètres effectifs et les paramètres formels doivent
s’accorder du point de vue nombre, ordre et type des
paramètres
o Le type de la variable résultat <variable> doit être le même
que celui de la fonction.
Mme Jihen Bokri 11

11

Les fonctions
m  maximum(n1,n2)
 Exemple 1: ECRIRE("Le maximum est : ", m)
Algorithme CalculMax1 Fin
Var
n1, n2, m : réel
Début
Ecrire("Introduire le premier
nombre")
Lire(n1)
Ecrire("Introduire le deuxième
nombre")
Lire(n2)

Mme Jihen Bokri 12

12 115
Les fonctions
Lire(n2)
 Exemple 2: ECRIRE("Le maximum est : ",
maximum(n1,n2))
Algorithme CalculMax2
Var Fin

n1, n2, m : réel


Début
Ecrire("Introduire le premier
nombre")
Lire(n1)
Ecrire("Introduire le deuxième
nombre")

Mme Jihen Bokri 13

13

Les fonctions
 Exercice 1:

1) Ecrire la fonction factoriel qui permet de calculer le


factoriel d’un entier entré en paramètre.

2) Ecrire l’algorithme principal qui permet de saisir un entier


et d’afficher son factoriel en faisant appel à la fonction
précédente.

Mme Jihen Bokri 14

14 116
Les fonctions
 Correction: Algorithme CalculFactoriel
Fonction factoriel (n: entier) : entier Var
Var n: entier
F, i:entier Début
Début Ecrire("Introduire un entier")
F  1 Lire(n)
Pour i de 1 à n faire ECRIRE("Le factoriel est : ",
F  F*i factoriel(n))
FinPour Fin

factoriel  F
Fin .

Mme Jihen Bokri 15

15

Les fonctions
 Exercice 2:

1) Ecrire la fonction moyenne qui permet de calculer le


moyenne de 2 réels entrés en paramètres.

2) Ecrire l’algorithme principal qui permet de saisir deux


réels et d’afficher leur moyenne en faisant appel à la
fonction précédente.

Mme Jihen Bokri 16

16 117
Les fonctions
 Correction: Algorithme calcul

Var : m ,x,y : réel


Fonction moyenne( x,y:réel ):réel
Début
Var M : réel
Ecrire(« entrez deux réels »)
Début
Lire(x,y)
M (x+y)/2
mmoyenne(x,y)
Moyenne  m
Ecrire (« la moyenne est » ,m)
Fin
Fin

.
Mme Jihen Bokri 17

17

Les procédures
 Une procédure est un sous-programme qui contient des
instructions et qui peut fournir zéro ou plusieurs résultats.
Procédure <Nom_Procédure>(<param1> : <type1>, param2> :<type2>, …)
VAR
<Déclaration des variables>
DEBUT
<Bloc d’instructions>

FIN

Mme Jihen Bokri 18

18 118
Les procédures
 Les paramètres se trouvant dans l’entête d’une procédure sont
appelés des paramètres formels. Ces paramètres permettent à
la procédure de communiquer avec l’extérieur.

 Une procédure peut ne pas avoir des paramètres, ne rien


mettre alors entre les parenthèses.

 Les variables déclarées dans une procédure sont uniquement


visibles dans cette procédure. On dit que ce sont des variables
locales à cette procédure.
Mme Jihen Bokri 19

19

Les procédures
▪ Exemple 1:
Procédure Affiche_Entier (x : entier)
Début
Ecrire("Ceci est un entier : ", x)

Fin

▪ Exemple 2:
Procédure Bonjour ( )
Début
Ecrire("Bonjour")

Fin

Mme Jihen Bokri 20

20 119
Les procédures

 Exemple 3:
Ecrire une procédure qui permet de calculer et afficher
la somme de deux entiers entrés en paramètres

Mme Jihen Bokri 21

21

Les procédures
 Correction:
Procédure Somme (a: entier,b : entier)
Var
S : entier
Début
S  a + b
Ecrire("La somme est : ", S)
Fin

Mme Jihen Bokri 22

22 120
Les procédures

 Appel d’une procédure:


o Il consiste à appeler un petit programme pour exécuter une
tâche bien déterminée.
o C’est une action formée de l’identificateur de la procédure et
d’une liste de ses paramètres effectifs.
o On appelle une procédure comme suit :
<Nom_Procédure> (<param1>, <param2>, …)

Mme Jihen Bokri 23

23

Les procédures
 Appel d’une procédure:
o Les paramètres fournis à l’appel de la procédure se
nomment des paramètres effectifs. Ces paramètres
vont remplacer les paramètres formels lors de
l’exécution du programme.

o Les paramètres effectifs et les paramètres formels


doivent s’accorder du point de vue nombre, ordre et
type des paramètres.
Mme Jihen Bokri 24

24 121
Les procédures
 Appel d’une procédure:
o Exemple 1:
Algorithme Afficher
Var
n1 : entier
Début
Bonjour ()
Ecrire("Introduire un nombre entier : ")
Lire(n1)
Affiche_Entier(n1)

Fin

Mme Jihen Bokri 25

25

Les procédures
 Appel d’une procédure:
o Exemple 2:
Algorithme Afficher_Somme
Var
x,y : entier
Début
Ecrire("Introduire un entier : ")
Lire(x)
Ecrire("Introduire un autre entier : ")
Lire(y)
Somme(x,y)
Fin

Mme Jihen Bokri 26

26 122
Les procédures

 Exercice:
Ecrire une procédure qui permet de lire une liste de
nombres entiers dont la dernière valeur = -1 et affiche
le nombre d’entiers pairs et leur pourcentage par
rapport au nombre d’entiers donnés.

Mme Jihen Bokri 27

27

Les procédures
 Correction: ntnt+1
Procédure Nombres () Si ((n MOD 2)=0) Alors
Var np  np + 1
n, np, nt : entier FinSi
Début Jusqu’à (n=-1)
nt  0 Ecrire(« Le pourcentage des
nombres pairs est »:,
np  0 np*100/nt)
Répéter Fin
Ecrire(« Donnez un entier »)
lire(n)

Mme Jihen Bokri 28

28 123
Passage des paramètres
 Paramètres d’un sous-programme:
On distingue deux types de paramètres :
o Les paramètres formels: Ils sont définis dans l’entête de la
déclaration d’un sous-programme.
➢ Ils sont accompagnés de leurs modes de passage.

o Les paramètres effectifs: Ils sont définis au moment de l’évaluation


d’un sous-programme, avec lesquels on appelle l’exécution du sous-
programme.
➢ Ils sont aussi appelés paramètres réels.

Mme Jihen Bokri 29

29

Passage des paramètres


▪ Le mode de transmission des paramètres:
Le mode de passage des paramètres peut se résumer en deux modes qui sont les suivants :

a. Passage par valeur


 Les paramètres fournis sont transmis par valeur : Le programme appelé n’obtient que les valeurs des
paramètres et n’ont pas d’accès aux variables.
 Dans ce mode de passage, le paramètre formel n’est précédé de rien.

b. Passage par variable


 Les paramètres effectifs sont transmis par variable (ou par référence) : Les programmes appelés ont
accès aux paramètres effectifs et peuvent donc les modifier.
Mme Jihen Bokri 30
 Dans ce mode de passage, Le paramètre formel est précédé par VAR.

30 124
Passage des paramètres
 Le mode de transmission des paramètres:
Exemple: Passage par valeur

Procédure MaxMin( a:réel, b:réel, VAR m1:réel,


VAR m2:réel)

Passage par variable

Mme Jihen Bokri 31

31

Exercices d’application
 Exercice 1:

o Ecrire une procédure qui permet de permuter le contenu


de deux entiers.

o Ecrire l’algorithme principal faisant appel à cette


procédure

Mme Jihen Bokri 32

32 125
Exercices d’application
 Correction de l’Exercice 1: Algorithme Calculpermutation
Var
Procédure Permutation (VAR x:
entier, VAR y: entier) x, y: entier
Var Début
aux:entier Ecrire("Introduire les deux
entiers")
Début
Lire(x, y)
aux  x
Permutation(x, y)
X  y
ECRIRE(« Les nouvelles valeurs
Y  aux
de x et y sont: ",x, y)
Fin
Fin

Mme Jihen Bokri 33

33

Exercices d’application
 Exercice 2:
Ecrire un algorithme qui lit en entrée une phrase, caractère par caractère, se terminant
par ‘#’ et affiche le nombre de lettres, le nombre de chiffres, le nombre de séparateurs
et le nombre des autres caractères spéciaux dans cette phrase. On appellera dans cet
algorithme les fonctions décrites ci-dessous (qu’il faudra écrire) :

▪ est-séparateur (d : caractère) : retourne vrai si d est un séparateur et faux sinon.

▪ est-lettre (d : caractère) : retourne vrai si d est une lettre et faux sinon.

▪ est-chiffre (d : caractère) : retourne vrai si d est un chiffre et faux sinon.

Mme Jihen Bokri 34

34 126
Exercices d’application
 Correction de l’exercice 2:
Fonction est-séparateur (d : caractère) : Booléen

Début

Si((d=‘.’) OU (d=‘,’) OU (d=‘ ’))

Alors est-séparateur  vrai

Sinon est-séparateur  faux

FINSi

Fin

Mme Jihen Bokri 35

35

Exercices d’application
 Correction de l’exercice 2 (Suite):
Fonction est-lettre (d : caractère) : Booléen

Début

Si ((d≥ ‘a’) et (d≤‘z’)) OU ((d ≥‘A’) et (d ≤‘Z’))

Alors est-lettre  vrai

Sinon est-lettre  faux

Finsi

FIN

Mme Jihen Bokri 36

36 127
Exercices d’application
 Correction de l’exercice 2 (Suite):
Fonction est-chiffre (d : caractère) : Booléen

Début

Si ((d>= ‘0’) ET (d<=‘9’))

Alors est-chiffre  vrai

Sinon est-chiffre  faux

Finsi

FIN

Mme Jihen Bokri 37

37

Exercices d’application
 Correction de l’exercice 2 (Suite): Si (est-séparateur(c)=vrai) alors cscs+1
Sinon si (est-lettre (c)=vrai) alors clcl+1
Algorithme Phrase Sinon si (est-chiffre(c)=vrai) alors
VAR . cccc+1
C: caractère Sinon ca ca+1
Cs, cl, cc, ca: entier Finsi
Cs0 Finsi
cl 0 Finsi
cc0 Jusqu’à (c=‘ #’)
Ca0 Ecrire(« le nombre de séparateurs est », cs, « de
Début lettres est », cl, « de chiffres est », cc, « et de
Répéter caractères spéciaux est », ca)
Ecrire(« Donner un caractère ») FIN
Lire ( c )

Mme Jihen Bokri 38

38 128
Exercices d’application

 Exercice 3:
Ecrire une procédure qui permet de remplir un
tableau entré en paramètre avec sa taille
effective.

Mme Jihen Bokri 39

39

Exercices d’application
 Correction de l’exercice 3:
Procédure remplir_tableau(VAR t: tab, n: entier)
VAR
i: entier
Début
Pour i de 1 à n faire
lire(t(i))
FinPour
Fin

Mme Jihen Bokri 40

40 129
Exercices d’application

Exercice 4:
Ecrire une procédure qui permet d’afficher le
contenu d’ un tableau entré en paramètre avec
sa taille effective.

Mme Jihen Bokri 41

41

Exercices d’application
 Correction de l’exercice 4:
Procédure afficher_tableau(t: tab, n: entier)
VAR
i: entier
Début
Pour i de 1 à n faire
Ecrire(t(i))
FinPour
Fin

Mme Jihen Bokri 42

42 130
Exercices d’application

Exercice 5:
Ecrire une fonction qui permet de retourner la
somme des valeurs de toutes les cases d’un
tableau entré en paramètre avec sa taille
effective.

Mme Jihen Bokri 43

43

Exercices d’application
 Correction de l’exercice 5:
Fonction somme_tableau(t: tab, n: entier): entier
VAR
i, S: entier
Début
S0
Pour i de 1 à n faire
SS+t(i)
FinPour
Somme_tableauS
Fin

Mme Jihen Bokri 44

44 131
Exercices d’application
 Exercice 6:
On définit le type TAB= tableau [1..MAX] de réels
1. Ecrire une procédure prem-et-dern-positions (T : TAB, N : entier, X : réel ; VAR pos1, pos2 : entier) qui
détermine les positions de la première et dernière occurrence de X dans le tableau T de N éléments réels. On
retournera la position 0 si T ne contient aucune occurrence de X.

2. On supposera que les éléments de T sont rangés par ordre croissant (on dit que T est trié). Comment peut-on
optimiser le nombre d’itérations de la procédure précédente ?

3. On se contentera maintenant de déterminer la position d’une quelconque occurrence de X dans le tableau T


trié, en écrivant la procédure chercher-position (T : TAB, N : entier, X : réel ; VAR pos : entier).

a. Ramener le problème à une recherche dans les deux demi tableaux de T, ayant chacun N/2 éléments.

b. Appliquons cette idée itérativement. Quelle sera la condition d’arrêt des itérations ? Ecrire la procédure
chercher-position.
Mme Jihen Bokri 45

45

Exercices d’application
 Correction:
1. Procédure prem-et-dern-positions (T : TAB, N : Pour i de 1 à N faire
entier, X : réel ; VAR pos1, pos2 : entier) Si ((tab[i]=x) ET (Test=faux))

VAR Alors pos1i

i: entier pos2i

Test: Booléen test vrai

Début Sinon Si ((tab[i]=x) ET (Test=vrai))

pos10 pos2i

pos20 FINSI

Test faux FINSI

FINPOUR

FIN

Mme Jihen Bokri 46

46 132
Exercices d’application
 Correction:
Tantque (tab[i]<=x) faire
2. Procédure prem-et-dern-positions (T : TAB, N : entier, X : Si ((tab[i]=x) ET (Test=faux))
réel ; VAR pos1, pos2 : entier)
Alors pos1i
VAR
pos2i
i: entier
test vrai
Test: Booléen
Sinon Si ((tab[i]=x) ET (Test=vrai))
pos10
pos2i
pos20
FINSI
Test faux
FINSI
i1
ii+1

FINFAIRE

FIN

Mme Jihen Bokri 47

47

Exercices d’application
Occpos1
 Correction:
Sinon itaille
3. Procédure chercher-positions (T : TAB, N : entier, X : réel ; Répéter
VAR pos: entier)
ii+1
VAR
Jusqu’à (i>N) OU (T[i]>=X)
i, taille : entier
Si (T[i]=X) Alors Occi
Début
Finsi
Si (N MOD 2 =0) Alors taille  N DIV 2
PosOcc
Sinon taille  N DIV 2 +1
FinSI
Finsi
FIN
Occ 0

Si X<T[taille] Alors

Prem-dernier-position(T, taille, X, pos1, pos2)

Mme Jihen Bokri 48

48 133
Exercices d’application

 Exercice 7:
Ecrire une fonction ou procédure qui permet, à partir de deux valeurs M et
N entrées en paramètres, d’afficher toutes les valeurs paires entre M et N
si M < N.

Mme Jihen Bokri 49

49

Exercices d’application
 Correction:

Mme Jihen Bokri 50

50 134
Exercices d’application
 Exercice 8:
Soit Tdate un type date composé des champs entiers JJ,MM,AA.

1. Ecrire une fonction CompareD permettant de comparer deux dates


D1 et D2.

2. Soit TD un tableau de N dates (N≤100). En utilisant la fonction


CompareD, écrire un algorithme permettant de trier ce tableau dans
l’ordre croissant des dates

Mme Jihen Bokri 51

51

Exercices d’application
 Correction de l’exercice 8:
Sinon Si D1.JJ>D2.JJ Alors Bol ←vrai
Type Tdate = Enregistrement
Sinon Si D1.JJ<D2.JJ
JJ,MM,AA :entier
Alors Bol ←faux
FinEnregistrement
FinSI
Fonction CompareD(D1,D2 :Tdate) :Booléen
FinSi
VAR Bol: booléen
FinSi
Debut
FinSi
Si D1.AA>D2.AA Alors Bol ←vrai
FinSI
Sinon Si D1.AA<D2.AA Alors Bol ← faux
FinSi
Sinon Si D1.MM>D2.MM Alors Bol ←vrai
CompareD  Bol
Sinon Si D1.MM<D2.MM Alors Bol ←faux
FIN

Mme Jihen Bokri 52

52 135
Exercices d’application
 Correction de l’exercice 8 (Suite): Pour i de 1 à N-1 faire

Pour j de i+1 à N faire


Algorithme principal
Si (CompareD(TD(i),TD(j))=vrai) Alors
Début
aux TD(i)
Ecrire(« Donnez la valeur de N »)
TD(i)TD(j)
Lire (N)
TD(j)aux
Pour i de 1 à N faire
FinSi
lire(TD(i).JJ)
FinPour
lire(TD(i).MM)
FinPour
lire(TD(i).AA)
FIN
FinPOUR

Mme Jihen Bokri 53

53

Exercices d’application
 Exercice 9:
o Faites les déclarations nécessaires pour un tableau de patients tel que chaque patient est
caractérisé par: NCNAM, Nom & Prénom et age.

o Ecrire une procédure Saisie_Patient(…) qui permet de saisir les informations d’un patient

o Ecrire une procédure Affiche_Patient(…) qui permet d’afficher les informations d’un patient

o Ecrire une procédure Saisie_tableau(…) qui permet de saisir un tableau de patients

o Ecrire une procédure Affiche_tableau(…) qui permet d’afficher les informations des patients

o Ecrire une fonction Age_Patient(…) qui retourne l’âge du patient ayant son NCNAM en
paramètre avec le tableau de patients.

o Ecrire un algorithme principal.

Mme Jihen Bokri 54

54 136
Exercices d’application
Ecrire(« Donnez l’âge »)
 Correction de l’Exercice 9: Lire(P.Age)
TYPE Fin
Patient=enregistrement
Procédure Affiche_patient (P: Patient)
NCNAM: entier
Début
NP: Chaine de caractères
Ecrire(«le numéro de CNAM: », P.NCNAM)
Age: entier
Ecrire(« le nom et le prénom: », P.NP)
FinEnregistrement
Ecrire(« l’âge: », P.Age)
Tab=tableau[1..100] de patient
FIN
Procédure Saisie_patient (VAR P: Patient)
Début
Ecrire(« Donnez le numéro de CNAM »)
lire(P.NCNAM)
Ecrire(« Donnez le nom et le prénom »)
Lire(P.NP)

Mme Jihen Bokri 55

55

Exercices d’application
 Correction de l’Exercice 9 (Suite) :
Procédure Saisie_tableau(VAR t:Tab, n: entier) Fonction Age_Patient(t: tab, n: entier, NC1:
VAR i: entier entier): entier
Début VAR i: entier
Pour i de 1 à n faire DEBUT
Saisie_Patient(t(i)) i0
FinPour Tantque ((i≤n) et (t(i).NCNAM≠NC1)) faire
Fin ii+1
Procédure Affiche_tableau( t:Tab, n: entier) Finfaire
VAR i: entier Si (i≤n) Alors
Début Age_Patient  t(i).Age
Pour i de 1 à n faire Sinon Age_Patient  0
Affiche_Patient(t(i)) FinSi
FinPour FIN
Fin

Mme Jihen Bokri 56

56 137
Exercices d’application
 Correction de l’Exercice 9 (Suite): Affiche_tableau(t, n)
Algorithme principal Ecrire(«Donnez le numéro CNAM à
chercher »)
VAR
Lire(x)
t: Tab
Ecrire(« L’âge de ce patient est »,
n, x: entier
Age_Patient(t, n, x))
Début
FIN
Ecrire(« Donnez le nombre de patients »)

Lire(n)

Saisie_tableau(t, n)

Mme Jihen Bokri 57

57

Définir les structures de données adéquates permettant de


 Exercice 10: 1.
représenter toutes les informations relatives à l’ensemble des
Un hôtel dispose de N chambres. Chaque chambre est chambres.
caractérisée par:
2. Ecrire une fonction calculant le nombre de chambres libres
o Un numéro unique (entier) dans l’hôtel.

o Un type (entier): 1: single, 2: double, 3: triple, 4: 3. Ecrire une fonction calculant le nombre de personnes,
quadruple résidentes dans l’hôtel, de nationalité donnée.

o Un état (booléen): vrai: libre, faux: occupée 4. Ecrire une procédure qui affiche le nombre d’enfants
(personnes ayant un âge ≤ 12 ans), résidents à l’hôtel, par
o Les personnes occupant la chambre (au cas où la chambre
nationalité. Cette procédure ne devrait effectuer qu’un seul
n’est pas libre) caractérisées par:
parcours de la structure représentant l’ensemble des
➢ Leurs numéros d’identité (entier) chambres.

➢ Leurs noms (chaine de caractères) 5. Ecrire une fonction qui retourne la nationalité la plus
➢ Leurs nationalités (code entier entre 1 et 30) représentée dans l’hôtel (Celle qui a le plus grand nombre de
résidents).
➢ Leurs âges (entier)

Mme Jihen Bokri 58

58 138
Exercices d’application
 Correction Exercice 10:
Tabch=tableau[1..N] de chambre
1. Personne=Enregistrement
2. Fonction Nbre-ch-libres(T:Tabch, N:entier): entier
id:entier
VAR
nom:chaine[20]
Nbl, i: entier
Nat: entier
Début
Age: entier
Nb1 0
FinEnregistrement
Pour i de 1 à N faire
Chambre=Enregistrement
Si (T[i].etat=vrai) Alors NblNbl+1
nu: entier
Finsi
type: entier
FinPour
etat: Booléen
Nbre-ch-libresNbl
Personnes: tableau[1..4] de Personne
FIN
FinEnregistrement

Mme Jihen Bokri 59

59

Exercices d’application
 Correction Exercice 10 (Suite):
3. Fonction Nb-pers-nat(T:Tabch, N:entier, nation: entier): entier
VAR: nb, i, j entier
Début
Nb0
Pour i de 1 à N faire
Pour j de 1 à 4 faire
Si(T[i].Personnes[j].nat=nation)
Alors nbnb+1
Finsi
FinPour
FinPour
Nb-pers-natnb
FIN
Mme Jihen Bokri 60

60 139
CHAPITRE 9
LA RÉCURSIVITÉ

Objectifs spécifiques
— Apprendre la notion de récursivité
— Identifier la condition d’arrêt
— Etudier le mécanisme de fonctionnement d’un
sous-programme récursif

Plan du chapitre
— Introduction
— Mécanisme de fonctionnement
— Exercices avec corrections

140
Chapitre 9:
La récursivité
1ère année TI
ISET Bizerte

Introduction
Une procédure récursive comporte un appel à
elle-même.

Toute procédure récursive comporte une


instruction (ou un bloc d'instructions) nommée
« point terminal » ou « point d'arrêt », qui
indique que le reste des instructions ne doit plus
être exécuté.
Mme Jihen Bokri 2

2 141
Exemple: La fonction Factoriel:
 n!=n * (n-1) * (n-2)…..*1

➔ n!= n* (n-1)!

➔ n!= n* (n-1)*(n-2)!

➔ On s’arrête lorsque (n=0) ou (n=1) et on sait que « 0!=1 » et


« 1!=1 »
➔ C’est donc la condition d’arrêt

Mme Jihen Bokri 3

Fonction récursive: Factoriel


Fonction Factoriel(n: entier): entier
Début
Si(n=0)Alors
Factoriel1
Sinon
Factorieln*Factoriel(n-1)
FinSi
Fin

Mme Jihen Bokri 4

4 142
Mécanisme de fonctionnement

1
Factoriel(4) = 4* Factoriel(3)
Factoriel(3) = 3* Factoriel(2)
Factoriel(2)=2* Factoriel(1)
Factoriel(1)=1* Factoriel(0)
Factoriel(0)=1
Factoriel(1)=1*1=1
Factoriel(2)=2*1=2
Factoriel(3)=3*2=6
Factoriel(4)=4*6=24

2
Mme Jihen Bokri 5

Exercices d’application:
 Exercice 1 : Ecrire une fonction récursive qui
permet de calculer la suite de Fibonacci dont la formule
est la suivante:

𝑓0=1
𝑓1=1
𝑓𝑛 =𝑓𝑛−2+𝑓𝑛−1 𝑝𝑜𝑢𝑟 𝑛 >1

Mme Jihen Bokri 6

6 143
Exercices d’application:
 Correction de l’exercice 1:

FonctionFibo(n:Entier):Entier
Début
Si((n=0)ou(n=1))Alors
Fibo1
Sinon
FiboFibo(n-2)+Fibo(n-1)
Finsi
Fin

Mme Jihen Bokri 7

Exercices d’application:

 Exercice 2:
Ecrire une fonction récursive qui permet
le calcul du produit de deux entiers.

Mme Jihen Bokri 8

8 144
Exercices d’application:
 Correction de l’Exercice 2 :

Fonction produit(n: entier, x: entier): entier


DEBUT
Si (n = 0)
produit  0

Sinon
produit  produit(n - 1, x) + x
FinSi
FIN }

Mme Jihen Bokri 9

Exercices d’application:

 Exercice 3:
Ecrire une fonction récursive puissance qui
renvoie xn, pour x et n passés en paramètre.

Mme Jihen Bokri 10

10 145
Exercices d’application:

 Correction de l’exercice 3:

Fonction puissance(x: entier, n: entier): entier


DEBUT
Si (n = 0)
puissance  1

Sinon
puissance  puissance(x, n - 1) * x
FinSi
FIN

Mme Jihen Bokri 11

11

Exercices d’application:
 Exercice 4: Récursivité sur les tableaux
1. Ecrire une procédure récursive remplirTab() qui permet de remplir un tableau
de n entiers.

2. Ecrire une procédure récursive AffichTab() qui permet d’afficher un tableau de


n entiers.

3. Ecrire une procédure récursive AffichInv() qui permet d’afficher un tableau de


n entiers en ordre inverse.

4. Ecrire une fonction récursive SomTab() qui permet de calculer la somme des
éléments d’un tableau de n entiers.

5. Ecrire une fonction récursive Exist() qui permet de vérifier si un entier passé
en paramètre existe dans le tableau ou pas et qui affiche « trouvé !!! » si
l’élément existe, « non trouvé !» sinon.

Mme Jihen Bokri 12

12 146
Exercices d’application:
 Correction: Récursivité sur les tableaux

Procédure remplir (var t: tab , n: entier , var i : entier)


Debut
Si (i≤n) Alors
Ecrire (« Donner l’élément numéro », i)
lire(t[i])
remplir(t,n,i+1)
FinSi
Fin
Lors de l’appel:
remplir(t,n,1)
Mme Jihen Bokri 13

13

Exercices d’application:
 Correction: Récursivité sur les tableaux
Procédure remplir (VAR t:tab , n: entier ,VAR i:
entier) Procédure affiche_inv (t: tab, n: entier , VAR i:
DEBUT entier )
Si (i≤n) Alors DEBUT
Lire (t([i]) Si (i≤n) Alors
remplir(t,n,i+1) affiche_inv (t,n,i+1)
FinSi Ecrire (t[i])
FIN FinSi
Procédure affiche (t: tab, n: entier , VAR i: entier FIN
)
DEBUT
Si (i≤n) Alors
Ecrire (t[i])
affiche (t,n,i+1)
FinSi
FIN
Mme Jihen Bokri 14

14 147
Exercices d’application:
 Correction: Récursivité sur les tableaux

Appel dans le programme principal:

remplir(t,n,1)
affiche(t,n,1)
affiche_inv(t,n,1)

Mme Jihen Bokri 15

15

Exercices d’application:
 Correction: Récursivité sur les tableaux

4. Fonction SomTab (t: tab, n: entier, var i:entier):entier



Si (i>n) Alors SomTab  0
Sinon SomTab  t[i]+ somtab(t, n, i+1)
Finsi

5. Fonction Exist (t: tab, n: entier, var i:entier, x: entier): Booléen

Si (t[i]=X) Exist  Vrai
Sinon si (i=n+1) Exist  Faux
Sinon Exist  Exist(t, n, i+1)
FinSi
FinSi

Mme Jihen Bokri 16

16 148
Exercices d’application:

 Exercice 5:
Ecrire une procédure récursive qui permet
d’inverser un tableau

Mme Jihen Bokri 17

17

Exercices d’application:
 Correction de l’exercice 5:

Procédure Inverse(VAR t:tab, n: entier, VAR i: entier)


DEBUT
Si (i ≤ (n DIV 2)) Alors
Aux  t[i]
T[i] t[n+1-i]
t[n+1-i] Aux
Inverse(t, n, i+1)
FinSi
FIN

Mme Jihen Bokri 18

18 149
Exercices d’application:

 Exercice 6:

Ecrire une fonction récursive qui permet de


calculer le nombre d’occurrences d’un entier X
dans un tableau T.

Mme Jihen Bokri 19

19

Exercices d’application:
 Correction de l’exercice 6:
Fonction occ(t: tab, n: entier, VAR i: entier, x: entier):
entier
DEBUT
Si(i=n+1) Alors occ0
Sinon Si (t[i]=x) Alors occ 1+ occ(t, n, i+1, x)
Sinon occ occ(t, n, i+1, x)
Finsi
Finsi
FIN
Mme Jihen Bokri 20

20 150
Exercices d’application:
 Exercice 7:

Une chaine est un palindrome si on peut la lire dans les


deux sens. Ecrire une fonction récursive qui permet de
tester si une chaine est un palindrome.
1. Sans ignorer les blanc:
Exemples: RADAR, ÉTÉ, AZIZA,…
2. En ignorant les blancs:
Exemples: LA MARIEE IRA MAL

Mme Jihen Bokri 21

21

Exercices d’application:
 Correction de l’exercice 7:

1. Fonction palindrome (ch: chaine): Booléen


Début
n  long(ch)
Si ((n=0)ou (n=1)) Alors palindrome  vrai
Sinon Si (ch[1] ≠ ch[n]) Alors palindrome  faux
Sinon palindrome  palindrome (sous-chaine(ch, 2, n-2))
Finsi
Finsi
Fin

Mme Jihen Bokri 22

22 151
Exercices d’application:
 Correction de l’exercice 7:
2. Fonction palindrome (ch: chaine): Booléen
Début
n  long(ch)
Si ((n=0) ou (n=1)) Alors palindrome  vrai
Sinon Si (ch[1] ≠ ch[n]) Alors Si ch[1]=‘ ‘ Alors
Si (ch[2] = ch[n]) Alors
palindrome  palindrome (sous-chaine(ch, 3, n-3))
Finsi
Sinon Si ch[n]=‘ ‘ Alors
Si ch[1]=ch[n-1] Alors
palindrome  palindrome (sous-chaine(ch, 2, n-3))
Finsi
Finsi Finsi
Sinon palindrome  faux
Finsi
Sinon palindrome  palindrome (sous-chaine(ch, 2, n-2))
Finsi
Fin
Mme Jihen Bokri 23

23

152

Vous aimerez peut-être aussi