Académique Documents
Professionnel Documents
Culture Documents
6 Les enregistrements 87
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.
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.
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)
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
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
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)
PX*Y
Ecrire(“Le produit est ”,P)
Fin
11
Exercices:
Exercice 1: Ecrire un algorithme qui permet de calculer
la somme de 3 entiers x, y et Z
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)
Sx+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)
Rx*x
Ecrire(« le carré de cette valeur est », R)
FIN
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)
auxx
xy
yaux
Ecrie (« La nouvelle valeur est », x)
Ecrire (« La nouvelle valeur est », y)
FIN
15
Résultat
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)
PTHRHT*NB
TTC PTHR+PTHR*TVA/100
Ecrire(« Le prix total TTC est », TTC)
FIN
Mme Jihen Bokri 17
17
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
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
o Le mode compilation
Ficher
exécutable
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.
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).
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.
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
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.
6 17
Le type réel
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
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
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’.
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
10 19
Le type booléen ou logique
11
Exercice:
12 20
Correction de l’exercice:
Algorithme Absolu
Variable
x, y:entier
Début
Ecrire(« Donnez un entier »)
Lire(x)
YAbs(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.
o son nom
o son type
o son contenu
Exemples:
o x : réel
o y,z : entier
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.
o son nom
o sa valeur
Exemples:
o PI=3.14
o ANNEE=2018
15
Exercice:
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)
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 ≥
19
Les opérateurs
Les opérateurs logiques:
Opérateur En algorithmique
Négation NON
ET logique ET
OU logique OU
20 24
Les expressions
21
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,
23
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.
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
25
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)
P2*Pi*r
SPi*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)
R2majus(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
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)
2 32
Les structures conditionnelles
1) Schéma conditionnel à simple choix
Si (a > b) Alors
max a
Finsi
Si (a <= b)
max b
Finsi
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
FINSI
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°.
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é.
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
yx
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 TRSB*Retenu
Constante Si (A>10 et A<20) Alors
Retenu=0.19 PrimeSB*0,02
Variable Sinon Si (A>=20) Alors
N, A: entier PrimeSB*0,05
SH, SN, TR, SB, Prime: réel Sinon Prime0
Début Finsi
Ecrire(« Donnez le nombre d’heures ») Finsi
Lire(N) SNSB+Prime-TR
Ecrire(« Donnez le salaire horaire ») Ecrire(« Le salaire net est », SN)
Lire(SH) Fin
Ecrire(« Donnez l’ancienneté »)
Lire(A)
SBN*SH
11
12 37
Correction de l’exercice 3:
Algorithme Opérateur Si (op=‘+’) Alors
13
La structure sélective
SELON sélecteur FAIRE
<Liste de valeurs 1> : <Bloc 1>
FINSELON
14 38
La structure sélective
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 )
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.
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 »)
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 TFTN-TN*0,15
TN, TF: réel
Sinon Si (Qualité=« Etudiant ») Alors
Qualité: chaine de caractères
Début TFTN-TN*0,2
Ecrire(« Donnez le tarif normal ») Sinon Si (Qualité=« Etranger »)
Lire(TN) Alors
Ecrire(« Donnez la qualité de l’abonné)
TFTN+TN*0,25
Lire(Qualité)
Sinon TFTN
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
22 42
Exercices d’application
Exercice 3:
Ecrire un algorithme qui compare deux dates
représentées chacune par trois entiers.
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)
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.
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
27
Exercices d’application
Exercice 5:
Ecrire un algorithme permettant de résoudre une
équation de deuxième degré : ax²+bx+c=0 .
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
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.
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.
Une boucle est une instruction permettant de répéter l’exécution d’une même
séquence un nombre de fois fini.
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.
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.
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.
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
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.
10 52
La boucle POUR
Correction:
POUR i de 99 à 50 pas (-2) Faire
ECRIRE(i)
FINPOUR
11
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
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
15
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.
16 55
La boucle TANT QUE
Syntaxe:
<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
<Condition> d'exécution est vérifiée, le <Traitement> est exécuté, si non elle s'arrête.
17
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)
19
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.
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’à
22 58
Exercices d’application
Correction de l’Exercice 1:
1. en : boucle tant que
i5
Tant que (i≤15) faire
écrire(" le carré de ", i, " est ", i*i)
ii+1
FinFaire
2. en boucle répéter jusqu’à
i5
Répéter
écrire(" le carré de ", i, " est ", i*i)
ii+1
Jusqu’à (i=16)
23
Exercices d’application
Exercice 2:
Algorithme exercice2
var
i, N, P : entier
Début
lire(N)
P1
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
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.
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.
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)
F1
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
30 62
Exercices d’application
Correction de l’Exercice 5:
Algorithme Suite
var
S0, S1, S, N : entier
Début
lire(N)
S02
S13
pour i de 2 à N faire
SS0+puissance(-1, i)*S1
S0S1
S1S
finPour
écrire(« Le résultat est », S)
Fin
Mme Jihen Bokri 31
31
Exercices d’application
Exercice 6:
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)
P1
Pour i de 1 à n faire
PP*x
FinPour
Ecrire(P)
Fin
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).
34 64
Exercices d’application
Correction de l’Exercice 7:
Répéter
Ecrire(« Donnez un entier »)
Lire(N)
Jusqu’à (N MOD 2=0)
D0
Tant que (N MOD 2=0)
NN DIV 2
DD+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
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.
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
Exemples:
T1(1)
T1(5)
T1(10)
6 69
Les tableaux unidimensionnels ou vecteurs
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
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
11
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.
13
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)
15
16 74
Les tableaux unidimensionnels ou vecteurs
Exercice 4:
17
18 75
Les tableaux unidimensionnels ou vecteurs
Exercice 5:
19
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.
21
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).
23
Fin
24 78
Les tableaux unidimensionnels ou vecteurs
Exercice 8 :
25
Fin
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
T2: 0 2 5 3 4 10 9 1 67 0
27
28 80
Les tableaux multidimensionnels ou matrices
29
30 81
Les tableaux multidimensionnels ou matrices
31
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.
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.
33
34 83
Les tableaux multidimensionnels ou matrices
35
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.
37
38 85
Les tableaux multidimensionnels ou matrices
Correction de l’exercice 3 (Suite):
4/Pour i de 1 à n faire
MaxB(i, 1)
MinB(i,1)
Pour j de 2 à 2N faire
Si (B(i,j)>Max Alors MaxB(i,j)
Finsi
Si (B(i,j)<Min Alors MinB(i,j)
Finsi
FinPour
MaxMin(i, 1)Max
MaxMin(i, 2)Min
FinPour
Fin
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 ...
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.
Déclaration:
Type
Nom_Enregistrement = Enregistrement
Nom_champ1 : type_champ
…
Nom_champn : type_champ
FinEnregistrement
Var
Nom_Variable : Nom_Enregistrement
4 89
Exemple:
Type
Personne=Enregistrement
Nom: Chaine[20]
Prenom : Chaine[20]
NoEmploye : Entier
FinEnregistrement
Var
p1,p2 :Personne
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.
6 90
Accès et initialisation:
Exemples d’initialization:
o P1.nom "Ali"
o P1.prenom"Salah"
o P1.No_employe12
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.
8 91
Correction
TYPE
FinEnregistrement Lire(Etudiant1.note)
Ecrire (Etudiant1.nom)
Ecrire (Etudiant1.note)
VARIABLE
Etudiant1 : Etudiant
Exemple 2:
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)
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
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
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 »)
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
15
Exercices d’application
Exercice 2:
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
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
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]
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 »)
lc0
Lire(t1)
Pour i de 1 à n faire
i1
Si((t(i).prix>100) Alors écrire(t(i).titre)
Bolfaux
lclc+1
Tant que (i≤n) et (Bol=faux) faire
FinSi
Si (t(i).titre=t1) Alors Bol vrai
FinPour
Sinon ii+1
Ecrire(« Le pourcentage de ces livres est »,
FinSi lc*100/n)
FinTantque FIN
Si (Bol=vrai) Alors écrire (« Le livre existe »)
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
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 prt(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
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
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 »)
Pmaxi
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)
prt(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.
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é.
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"
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
6 103
Exemple 2: La fonction CONCAT
Nom : Chaîne
Prenom : Chaîne
Etudiant : Chaîne
Etudiant CONCAT(Nom, Prenom)
Écrire(Etudiant)
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.
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»
10 105
Exemple 6: la fonctions Sous_chaine
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.
12 106
Exercices d’application
Correction: Pour i de 1 à long(ch)DIV 2 faire
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.
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
i1
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
Nmot 1 FinSi
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.
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.
Les fonctions
Une fonction est un sous-programme contenant des instructions et retournant un
unique résultat affecté à son nom.
Syntaxe:
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.
Les fonctions
Exemple 1:
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
Les fonctions
Exemple 2:
8 113
Les fonctions
Correction:
Fonction Pi ( ) : réel
Début
Pi 3.14
Fin
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>, …)
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)
12 115
Les fonctions
Lire(n2)
Exemple 2: ECRIRE("Le maximum est : ",
maximum(n1,n2))
Algorithme CalculMax2
Var Fin
13
Les fonctions
Exercice 1:
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 .
15
Les fonctions
Exercice 2:
16 117
Les fonctions
Correction: Algorithme calcul
.
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
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.
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
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
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
22 120
Les procédures
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.
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
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
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.
27
Les procédures
Correction: ntnt+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)
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.
29
30 124
Passage des paramètres
Le mode de transmission des paramètres:
Exemple: Passage par valeur
31
Exercices d’application
Exercice 1:
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
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) :
34 126
Exercices d’application
Correction de l’exercice 2:
Fonction est-séparateur (d : caractère) : Booléen
Début
FINSi
Fin
35
Exercices d’application
Correction de l’exercice 2 (Suite):
Fonction est-lettre (d : caractère) : Booléen
Début
Finsi
FIN
36 127
Exercices d’application
Correction de l’exercice 2 (Suite):
Fonction est-chiffre (d : caractère) : Booléen
Début
Finsi
FIN
37
Exercices d’application
Correction de l’exercice 2 (Suite): Si (est-séparateur(c)=vrai) alors cscs+1
Sinon si (est-lettre (c)=vrai) alors clcl+1
Algorithme Phrase Sinon si (est-chiffre(c)=vrai) alors
VAR . cccc+1
C: caractère Sinon ca ca+1
Cs, cl, cc, ca: entier Finsi
Cs0 Finsi
cl 0 Finsi
cc0 Jusqu’à (c=‘ #’)
Ca0 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 )
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.
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
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.
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
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.
43
Exercices d’application
Correction de l’exercice 5:
Fonction somme_tableau(t: tab, n: entier): entier
VAR
i, S: entier
Début
S0
Pour i de 1 à n faire
SS+t(i)
FinPour
Somme_tableauS
Fin
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 ?
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))
i: entier pos2i
pos10 pos2i
pos20 FINSI
FINPOUR
FIN
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 pos1i
VAR
pos2i
i: entier
test vrai
Test: Booléen
Sinon Si ((tab[i]=x) ET (Test=vrai))
pos10
pos2i
pos20
FINSI
Test faux
FINSI
i1
ii+1
FINFAIRE
FIN
47
Exercices d’application
Occpos1
Correction:
Sinon itaille
3. Procédure chercher-positions (T : TAB, N : entier, X : réel ; Répéter
VAR pos: entier)
ii+1
VAR
Jusqu’à (i>N) OU (T[i]>=X)
i, taille : entier
Si (T[i]=X) Alors Occi
Début
Finsi
Si (N MOD 2 =0) Alors taille N DIV 2
PosOcc
Sinon taille N DIV 2 +1
FinSI
Finsi
FIN
Occ 0
Si X<T[taille] Alors
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.
49
Exercices d’application
Correction:
50 134
Exercices d’application
Exercice 8:
Soit Tdate un type date composé des champs entiers JJ,MM,AA.
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
52 135
Exercices d’application
Correction de l’exercice 8 (Suite): Pour i de 1 à N-1 faire
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 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.
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)
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)) i0
FinPour Tantque ((i≤n) et (t(i).NCNAM≠NC1)) faire
Fin ii+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
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)
57
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)
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 NblNbl+1
nu: entier
Finsi
type: entier
FinPour
etat: Booléen
Nbre-ch-libresNbl
Personnes: tableau[1..4] de Personne
FIN
FinEnregistrement
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
Nb0
Pour i de 1 à N faire
Pour j de 1 à 4 faire
Si(T[i].Personnes[j].nat=nation)
Alors nbnb+1
Finsi
FinPour
FinPour
Nb-pers-natnb
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.
2 141
Exemple: La fonction Factoriel:
n!=n * (n-1) * (n-2)…..*1
➔ n!= n* (n-1)!
➔ n!= n* (n-1)*(n-2)!
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
6 143
Exercices d’application:
Correction de l’exercice 1:
FonctionFibo(n:Entier):Entier
Début
Si((n=0)ou(n=1))Alors
Fibo1
Sinon
FiboFibo(n-2)+Fibo(n-1)
Finsi
Fin
Exercices d’application:
Exercice 2:
Ecrire une fonction récursive qui permet
le calcul du produit de deux entiers.
8 144
Exercices d’application:
Correction de l’Exercice 2 :
Sinon
produit produit(n - 1, x) + x
FinSi
FIN }
Exercices d’application:
Exercice 3:
Ecrire une fonction récursive puissance qui
renvoie xn, pour x et n passés en paramètre.
10 145
Exercices d’application:
Correction de l’exercice 3:
Sinon
puissance puissance(x, n - 1) * x
FinSi
FIN
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.
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.
12 146
Exercices d’application:
Correction: Récursivité sur les tableaux
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
remplir(t,n,1)
affiche(t,n,1)
affiche_inv(t,n,1)
15
Exercices d’application:
Correction: Récursivité sur les tableaux
16 148
Exercices d’application:
Exercice 5:
Ecrire une procédure récursive qui permet
d’inverser un tableau
17
Exercices d’application:
Correction de l’exercice 5:
18 149
Exercices d’application:
Exercice 6:
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 occ0
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:
21
Exercices d’application:
Correction de l’exercice 7:
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