Académique Documents
Professionnel Documents
Culture Documents
Programmation
1
Plan du cour
Partie 1 : Algorithme
Introduction
Les variables
Les operateurs
Les instructions d’écriture et le lecture
Les structures Alternatives
Les structures répétitives
Les tableaux
Le type structure
Les fonctions et Procédures
Les algorithme de Tri
Parti 2 : Langace C
Présentation du langage C
Implémentations
2
Avant Propos
3
Rappel sur le fonctionnement de l’Ordinateur
Mémoire Processeur
Bus
Unités ...
d’entrée-
Imprimante Écran
sortie
Disque
La mémoire contient des instructions et des données 4
Problème
2*x + 3 = 0 10*x - 1= 0
0*x + 0 = 0 0*x + 3 = 0
?? a*x + b = 0 ??
Je veux informatiser ce problème et le rendre exploitable
à travers mon ordinateur. Qu’est ce que je dois faire ?
5
Informatisation d’un problème
6
Algorithme
7
Algorithme
Définition :
8
Langage Assembleur
Définition :
9
Langage de programmation
Définition :
On appelle langage de programmation tout ensemble
fini de mots réservés qui permettent de traduire les
instructions de l’algorithme afin de l’exécuter par
l’ordinateur.
Exemple :
10
Programme source
Définition :
11
Compilateur
Définition :
12
Structure générale d’un algorithme
Titre du Problème
Déclaration des Constantes
Déclaration Déclaration des Variables
des Objets Déclaration des Tableaux
Déclaration des Procédures et Fonctions
Début
Manipulation Actions
FIN
13
Structure générale d’un algorithme
14
Déclaration des Objets
15
Objet
Définition :
Un objet est toute partie identifiable de l’information
au cours d’un traitement.
Il est caractérisé par son nom, son type et sa valeur.
L’ensemble des objets manipulés par un algorithme
est appelé:
environnement de cet algorithme.
Remarque :
Les objets manipulés par un ordinateur sont :
Les Constantes et Les Variables 16
Les constantes
Définition :
Syntaxe de la déclaration :
Exemple :
Constante Pi = 3.14
17
Les variables
Définition :
Ce sont des références (adresses mémoires) où vont
être stockées des valeurs variables. Les différentes valeurs
d’une référence vont appartenir au type de données auquel
appartient la référence.
Remarques :
1°- Le nom d’une variable suite de caractères qui permet d’identifier
Les variables sont des références (adresses mémoires) où vont être stockées
des valeurs qui peuvent changer au cours de l’exécution du programme. Les
mémoires sont repérées par des numéros (pour l’ordinateur) ou des noms
(pour le programmeur, qui a intérêt à choisir des noms significatifs).
Le type de variable limite les valeurs ainsi que les opérations qui peuvent
être représentés.
Chaque fois qu’on procède à une nouvelle affectation, l’ancien contenu de
la mémoire est perdu et un nouveau contenu est placé dans la mémoire.
Les constantes correspondent à des zones mémoires dont le contenu ne
peut pas varier.
19
Type Entier
Définition :
C’est l’ensemble des nombres entiers positifs ou négatifs.
Généralement ils occupent 2 octets, ce qui limite les valeurs de -32768 à +32768.
Cependant cela dépend des machines, des compilateurs, et des langages.
Syntaxe de la déclaration :
Exemple :
a et b sont, par exemple,
Variable a,b : Entier les coefficients de
l’équation : ax + b = 0
20
Type Réel
Définition :
Syntaxe de la déclaration :
Variable variable1,variable2,… : Réel
Exemple :
Définition :
Il est constitué des caractères alphabétiques et numériques .
Une variable de ce type ne peut contenir qu'un seul et unique caractère écrit
entre apostrophe.
Généralement un caractère est codé sur 1 octets
Syntaxe de la déclaration :
Variable variable1,variable2,…:
Exemple : Caractere
Définition :
C’est une suite de caractères, c’est à dire des
combinaisons de caractères (lettres, chiffres, symboles..).
Syntaxe de la déclaration :
Exemple :
Remarque :
Une chaîne de caractères est notée toujours soit entre guillemets,
soit entre des apostrophes. Cette notation permet d’éviter les
confusions suivantes :
• Confondre un chiffre et une suite de chiffres. Par exemple, 423
peut représenter le nombre 423 (quatre cent vingt-trois), ou la
suite de caractères 4, 2, et 3.
• La confusion qui consiste à ne pas pouvoir faire la distinction
entre le nom d'une variable et son contenu.
Pour les valeurs des variables de type chaîne, il faut respecter la
casse. Par exemple, la chaîne ″Salut″ est différente de la chaîne
″salut″
24
Type Booléen
Définition :
Exemple :
26
Autres objets à déclarer
27
Operateurs et expressions
i) Les opérateurs Arithmétiques :
Opérateur Signification
+ Addition
- Soustraction
* Multiplication
/ Division
Opérateur Signification
= Égal
< Inférieur
> Supérieur
<= Inférieur ou égal
>= Supérieur ou égal
<> différent
29
Operateurs et expressions
Ou Ou logique
Ou = Xor Ou exclusif
30
Operateurs et expressions
A B A et B A ou B Non A
31
Operateurs et expressions
Exemple :
Expression Résultat
(4 <7) ET (9>0) Vrai
(1 < 0) OU (1<>1) Faux
Non(13.4 < 15) Faux
32
Operateurs et expressions
Opérateurs et variables:
*, / , % , div , + et -
*, / , + et -
35
Instruction et Action
Définition :
On appelle instruction toute commande élémentaire que
l’on doit appliquer sur des objets pour avoir des sorties bien
définies.
Définition :
Une action est un événement qui change l’état d’un objet
d’un état initial donné à un état final désiré. Une action a une
durée d’exécution finie et un effet propre et bien défini. Chaque
action porte sur des objets sur lesquels elle s’exécute :
FIN 37
Les instructions d’un Algorithme
Définition:
C’est le stockage d’une valeur à un endroit
spécifique(variable). Pour affecter une valeur à une variable,
on écrit :
Variable Valeur
Exemple :
Variable valeur 1 + valeur 2
Variable valeur 1 * valeur 2
Variable valeur + Variable1
39
Instructions de dialogue Homme-Machine
Lire(Variable)
Exemple :
Écrire (‘ Saisissez la valeur de a ’)
Lire(a)
41
Exercice
Variable A: Entier
C,B : Réel
D : caractère
E : Booléen
Début
A ← 30
B ← A * 2
Écrire('B=' , B)
Manipulation
C ← (B + A)/4
B ← C / 5
D ← ‘Amine’
E ←(A > 40) Ou (C < B)
Écrire('les valeurs obtenues sont : A = ' , A ,
'B = ' ,B , ' C = ', C , ' D = ', D, ' E = ', E) 42
Fin
États de la mémoire lors de l’exécution
du programme
Instruction A B C D E
Après l’instruction
A ← 30
30 — — — —
Après l’instruction
B←A*2
30 60 — — —
Après l’instruction
C ← (B + A)/4
30 60 22.5 — —
Après l’instruction
B← C/5
30 4.5 22.5 — —
Après l’instruction
D ← ‘Amine'
30 4.5 22.5 Amine —
Après l’instruction
E ← (A >40) Ou (C<B)
30 4.5 22.5 Amine Faux
43
Exercice
Énoncé:
44
Solution
Manipulation :
DEBUT
Écrire ( 'Saisir la valeur du rayon' )
Lire(Rayon)
Surface Rayon * Rayon * Pi
Écrire (' La Surface du cercle est : ', Surface)
45
FIN
Excercice
46
Solution
47
Excercice
48
Solution
L’algorithme est :
Début
C←A
A←B
B←C
Fin
On est obligé de passer par une variable dite temporaire (la variable C).
49
Excercice
50
Solution
C←A&B
51
Exercice
Exemple :
Écrire l’algorithme qui permet de déterminer le
salaire mensuel d’un commercial sachant que ce
salaire comporte un montant fixe de 4000 DHS et
une commission qui représente 10% du chiffre
d’affaire réalisé par mois.
52
Ce qu’il faut faire
- Analyse du problème
• Recenser les données dont on dispose, celles qu’on cherche
à produire
Titre : Commission
Déclaration :
Constante M = 4000
Variable CA : Entier * Donnée d’entrée*
Com : Réel * Donnée intermédiaire*
Sal : Réel * Donnée de sortie*
Manipulation :
DEBUT
Écrire ('Donner le CA mensuel en DHS')
Lire(CA)
Com CA * 10/100
Sal Com + M
Écrire ('Le salaire mensuel est de : ', Sal, ' DHS ' )
54
FIN
Instructions à structure alternative
Les conditions :
On appelle condition simple toute expression de la forme :
Variable 1 Opérateur de comp. Variable
2
Exp : A > B
55
Instructions à structure alternative
L’instruction Si :
Pour exprimer le fait que des instructions vont être exécutées
dans un cas alors que d’autres instructions peuvent être
exécutées dans l’autre cas, on utilise une structure alternative.
Syntaxe :
Si condition alors
Actions 1
Sinon N’est pas obligatoire si pas d’action 2
Actions 2
Finsi 56
Instructions à structure alternative
57
Instructions à structure alternative
59
Instructions à structure alternative
Exercice :
60
Instructions à structure alternative
Solution :
Titre : Maximum
Variable a ,b, max : entier
Début
Écrire ('Saisir deux entiers a et b ')
Lire(a, b)
Si (a > b) alors
max a
Sinon
max b
Finsi
Écrire ('le maximum de ' , a , ' et de ' , b, ' est : ' , max)
61
Fin
Instructions à structure alternative
Exercice :
… Suite de l’algorithme
63
Instructions à structure alternative
Exercice :
64
Algorithme
… Suite de l’algorithme
Si (CA > 100000) alors
Com CA * 0.15
Sinon
Si (CA > 30000) alors
Com CA * 0.1
Sinon
Com 0
Finsi
Finsi
Sal Com + M
Écrire ('Le salaire mensuel est de : ', Sal , 'DHS')
FIN 65
Instructions à structure alternative
66
Instructions à structure alternative
Exercice :
68
Instructions à structure alternative
….Reste de l’Algorithme
Suivant Cas M Faire
Cas 2
Action 1
Cas 1, 3, 5, 7, 8, 10 , 12
Action 2
Cas 4, 6, 9, 11
Action 3
Sinon Cas
Écrire ( 'Attention : Mois Incorrect ')
Fin Suivant
69
FIN
Instructions à structure alternative
Exercice :
….Reste de l’Algorithme
Suivant Cas age Faire
Cas 1, 2
Écrire ('Vous n’êtes pas autorisé à vous inscrire ')
Cas 3..5
Tarif 0
Cas 6..11
Tarif 1000
Cas 12..25
Tarif 1500
Sinon Cas
Tarif 2000
Fin Suivant
Écrire (' le montant à payer en DHS est : ' , Tarif )
FIN 71
Instructions à structure répétitive (1)
Problème :
Écrire un algorithme permettant d’afficher 300 fois le message :
‘‘ bonjour tout le monde’’.
Solution Classique :
DEBUT
Écrire (' Bonjour tout le monde ') 1
Écrire (' Bonjour tout le monde ') 2
.
.
Écrire (' Bonjour tout le monde ') 300
FIN 72
Instructions à structure répétitive (2)
Boucle « Tant que Faire »
Syntaxe :
<initialisation>
Tant que Condition Faire
<bloc de traitement>
<bloc de contrôle> Action
Sémantique : Si condition = T
Tant que Valeur(T)=Vrai le bloc d'instructions sera
exécuté.
Si valeur(T)=Faux on passe à l'instruction suivante.
boucle.
La boucle n'est pas INCONDITIONNELLE. On
74
Instructions à structure répétitive (3)
Boucle « Tant que Faire »
Exemple 1: Dans cet algorithme combien de fois la boucle est- elle exécutée ?
Titre : Boucle1
Variable i , y : Entier
Début
i i = variable intermédiaire
y0 = compteur
Tant Que (i<7) faire i i+1 = incrémentation
du compteur
i i+1
y y+i
Écrire (' y = ' , y)
Fin Tant que
77
Fin
Instructions à structure répétitive (6)
Boucle « Tant que Faire »
Exemple 2: Dans cet algorithme combien de fois la boucle est- elle exécutée ?
Titre : Boucle2
Variable n : Entier
Début
n 15
Tant Que (n<>0) faire
Écrire (n)
n n-2
Fin Tant que
Fin
78
Instructions à structure répétitive (7)
Boucle « Faire jusqu’à »
Syntaxe :
<Initialisation>
Faire
<bloc de traitement>
<bloc de progression > Action
Jusqu’à Condition 79
Instructions à structure répétitive (8)
Boucle « Faire jusqu’à »
Sémantique :
Si valeur(T)= Faux la boucle est à nouveau exécutée.
80
Instructions à structure répétitive (9)
Boucle « Faire jusqu’à »
Exemple
Titre : Boucle2
Variable i , y : Entier
Début
i
y0 Valeurs de y ?
faire
i i+1
y y+i
Écrire (' y = ' , y)
Jusqu’à (i <7)
81
Fin
Instructions à structure répétitive (10)
Boucle « Faire jusqu’à »
Exemple
Titre : Boucle3
Variable i , y : Entier
Début
i
y0 Donner les valeurs de y
faire
i i+1
y y+i
Écrire (' y = ' , y)
Jusqu’à (i = 7)
82
Fin
Instructions à structure répétitive (11)
Boucle « Faire jusqu’à »
Exercice :
83
Instructions à structure répétitive (12)
Boucle « Faire jusqu’à »
Solution :
Variable N,S, i : Entier
DEBUT
Écrire (' Saisir une valeur entière positive :')
Lire (N)
S 0 * initialisation de la boucle*
i 0
Faire
i i + 1
S S + i
jusqu’à (i > =N)
Écrire (' La somme : S = ', S)
FIN 84
Instructions à structure répétitive (13)
Boucle « Faire jusqu’à »
Exercice :
85
Instructions à structure répétitive (14)
Boucle « Pour »
L’instruction Pour :
La spécification de cette instruction c’est qu’elle
limite le nombre de fois où doit se répéter le bloc Action
Fin Pour 86
Instructions à structure répétitive (15)
Boucle « Pour »
Exercice :
87
Instructions à structure répétitive (16)
Solution :
Titre : Factoriel
Variable N : Entier
i : Entier * i variable intermédiaire
F : Entier i = compteur *
DEBUT
Écrire (' Saisir une valeur entière N > 0: ')
Lire (N )
F 1 * initialisation de la boucle*
i0
Pour i 1 à N Faire
F F*i
Fin Pour
Écrire (' Le factoriel de ', N , ' est : ' , F) 88
FIN
Instructions à structure répétitive (17)
Boucle « Pour »
Exercice :
89
Instructions à structure répétitive (18)
Solution :
Titre : Moyenne
Variable N, i : Entier
note, S, Moy : Réel
DEBUT
Écrire (' Saisir le nombre d’étudiants: ')
Lire (N)
S 0 * initialisation de la boucle*
i 0
Pour i 1 à N faire
Écrire (' Saisir la note de l’Etudiant ' , i , ' : ')
Lire (note)
S S + note
Fin Pour
Moy S/N
Écrire (' La moyenne est : ', Moy) 90
FIN
Instructions à structure répétitive (19)
Boucle « Pour »
Exercice
Écrire un algorithme permettant d’afficher les lettres de l’alphabet.
Solution :
Titre : alphabet
Variable lettre: Caractère
* parcourir les lettres de l'alphabet*
Début
Pour lettre ' a ' à lettre = ' z ' Faire
Écrire(lettre)
FinPour
91
Fin
Instructions à structure répétitive (20)
Quelle répétition ou Boucle choisir ?
Exercice :
1- Écrire un algorithme permettant de déterminer le N ème
terme d’une suite numérique connaissant son premier
terme et ses coefficients a et b et tels que:
Un = a * Un-1 + b 1 n N
Variable N, i : Entier
Variable a, b, S : Réel
DEBUT
Écrire (' Saisir la valeur de N: ')
Lire (N)
Écrire ('Saisir la valeur du premier terme et les coefs a et b:')
Lire (S , a, b )
Pour i 1 à N faire
S a * S + b
Fin Pour
Écrire ( ' La somme de la série est : ', S )
FIN 94
Instructions à structure répétitive (24)
Solution :
Variable N : Entier
Variable a, b, S : Réel
DEBUT
Écrire ('Saisir la valeur du premier terme et les coefs a et b:')
Lire (S , a, b)
N 0
Faire
S a * S + b
N N + 1
Jusqu’à S > 1000
Écrire (' La somme de la série est : ', S)
Écrire (' Le rang est : ', N ) 95
FIN
Instructions à structure répétitive (25)
Boucle « Pour »
Exercice :
96
La première partie du cours
est terminée
97
Type Tableau
Définition :
Remarque :
1°- Un tableau peut être d’une ou plusieurs dimensions.
2°- La syntaxe de la déclaration d’un tableau change selon
98
la dimension de ce dernier
Déclaration d’un Tableau (1)
Syntaxe de la déclaration :
Exemples :
Tableau à une dimension :
- Un tableau pour enregistrer les salaires de 30 employés :
Tab Salaires[30] : Réel
Salaires[16] = 4000.50
Tableau à plusieurs dimensions :
- Une matrice d’entiers de 5 lignes et 7 colonnes :
Tab Matrice-Test[5,7 ] : Entier
100
Matrice-Test[2,3] = 13
Tableau
Exercice 1 :
Quel résultat fournira l’exécution de ce programme :
Variable i : Entier
Tableau C (6) : Entier
DEBUT
POUR i = 1 A 6
Lire C (i)
FIN POUR
POUR i = 1 A 6
C (i) ← C (i) * C (i)
FIN POUR
POUR i = 1 A 6
Ecrire C (i)
FIN POUR
FIN
101
Tableau
Solution Exercice 1.
L’exécution du programme nous affichera successivement à l’écran :
4
25
9
100
16
4
102
Tableau
Solution Exercices 2
Le programme est :
Variables X ,i,Compt : Réels
Variable Compt :ENTIER
Tableau T (N) : Réel
DEBUT
Lire X
POUR i=1 JUSQU'A i=N
SI T (i) =X ALORS
Compt← compt+1
FIN SI
FIN POUR
Ecrire « Le nombre d’occurrences de cet éléments du tableau est : » ,
compt
FIN
103
Tableau
104
Tableau
Solution Exercice 3.
Tableau T (20 , 50) : Réel
Variables i , j : Entiers
Variable som : Réel
DEBUT
som ← 0
POUR i = 1 A 20
POUR j = 1 A 50
som ← som + T (i , j)
FIN POUR
FIN POUR
Ecrire « La somme de tous les éléments du tableau est : » , som
b. L’algorithme qui compte le nombre des éléments strictement positifs est :
Tableau T (20 , 50) : Réel
Variables i , j : Entiers
Variable npos : Réel
DEBUT
npos ← 0
POUR i = 1 A 20
POUR j = 1 A 50
SI T (i , j) > 0 ALORS
npos ← npos + 1
FIN SI
FIN POUR
FIN POUR
Ecrire « Le nombre des éléments strictement positifs du tableau est : » , npos 105
Tableau
c. L’algorithme permettant d’obtenir la somme des éléments positifs (spos) et la somme des éléments
négatifs (sneg) de ce tableau est :
Tableau T (20 , 50) : Réel
Variables i , j : Entiers
Variable spos , sneg : Réel
DEBUT
spos ← 0
sneg ← 0
POUR i = 1 A 20
POUR j = 1 A 50
SI T (i , j) > 0 ALORS
spos ← spos + T (i , j)
SINON
sneg ← sneg + T (i , j)
FIN SI
FIN POUR
FIN POUR
Ecrire « La somme des éléments positifs du tableau est : » , spos
Ecrire « La somme des éléments négatifs du tableau est : » , sneg
d. L’algorithme qui détermine la plus grande valeur des éléments du tableau est :
Tableau T (20 , 50) : Réel
Variables i , j : Entiers
Variable max : Réel
DEBUT
max ← T (1 , 1)
POUR i = 1 A 20
106
Tableau
POUR j = 1 A 50
SI T (i , j) > max ALORS
max ← T (i , j)
FIN SI
FIN POUR
FIN POUR
Ecrire « Le plus grand élément du tableau est : » , max
e. L’algorithme qui détermine simultanément l’élément le plus grand du tableau ainsi que sa position
est :
Tableau T (20 , 50) : Réel
Variables i , j , imax , jmax : Entiers
Variable max : Réel
DEBUT
max ← T (1 , 1)
POUR i = 1 A 20
POUR j = 1 A 50
SI T (i , j) > max ALORS
max ← T (i , j)
imax ← i
jmax ← j
FIN SI
FIN POUR
FIN POUR
Ecrire « Le plus grand élément du tableau est : » , max
Ecrire « La position du plus grand élément est : » , imax, jmax
107
Les Structures
Définition :
Les structures, contrairement aux tableaux, servent à
rassembler au sein d’une seule entité un ensemble fini
d’éléments de type éventuellement différents. C’est le deuxième
type complexe disponible en algorithmique.
Remarques :
Il n’existe pas par défaut de type structure c'est-à-dire qu’on ne
peut pas déclarer une variable de type structure .
108
Déclaration d’une structure
Syntaxe de la déclaration :
TYPE NomDuType = STRUCTURE
attribut1 : Type
attribut2 : Type
...
attributn : Type
FIN STRUCTURE
Le type d’un attribut peut être :
- Un type simple ou complexe (un tableau ou un type basé sur une
structure) 109
Déclaration d’une structure
Exemples :
-un type Date basé sur une structure qui a trois
110
Déclaration d’une structure
Exemples :
Variable Date_naissance : Date est une variable de type Date.
Il est possible de déclarer un tableau d’éléments de ce type Date :
Pour accéder aux attributs d’une variable dont le type est basé sur une
structure on suffixe le nom de la variable d’un point « . » suivi du nom de
l’attribut.
Par exemple, dans notre cas pour affecter le mois « Janvier" à la
première date, on utilisera le code suivant :
Dates(1).mois = « Janvier »
111
Déclaration d’une structure
Exercice1
1. Définissez la structure « Stagiaire » constituée des champs suivants :
Champ Type
Nom Chaîne
Prénom Chaîne
Datenais Structure
Le champ « Datenais » est aussi une structure dont les champs sont :
Champ Type
Jour Entier
Mois Entier
Année Entier
Ecrivez ensuite l’algorithme qui permet de lire et après afficher le nom,
prénom et date de naissance
d’un stagiaire.
112
Déclaration d’une structure
1. L’algorithme est :
TYPE Date = STRUCTURE
Jour : Entier
Mois : Entier
Annee : Entier
FIN STRUCTURE
TYPE Stagiaire = STRUCTURE
Nom : chaîne
Prenom : chaîne
Datenais : Date
FIN STRUCTURE
Variable stag : Stagiaire
DEBUT
Ecrire « Entrez les information du stagiaire »
Ecrire « Entrez le nom »
Lire stag.Nom
Ecrire « Entrez le prénom »
Lire stag.Prenom
Ecrire « Entrez le jour de naissance »
Lire stag.Date.Jour
Ecrire « Entrez le mois de naissance »
Lire stag.Date.Mois
Ecrire « Entrez l’année de naissance »
Lire stag.Date.Annee
Ecrire « Le nom du stagiaire est : » , stag.Nom
Ecrire « Son prénom est : » , stag.Prenom
113
Ecrire «Sa date de naissance est :», stag.Date.Jour , «/», stag.Date.Mois, «/», stag.Date.Annee
Les Fonctions et Les Procédures
Définition :
Ce sont des sous-programmes auxquels on peut faire
référence à l’intérieur d’un programme . Ils sont conçus pour
éviter les répétitions et pour découper des programmes jugés
trop longs ce qui facilite la lisibilité du programme principal.
Remarques :
1°- Les Fonctions et les Procédures sont caractérisées par des
paramètres d’entrée et des paramètres de sortie.
2°-La fonction retourne une seule valeur tandis que La
114
procédure peut retourner plusieurs valeurs ou aucune.
Les Fonctions
Syntaxe de la déclaration :
FONCTION nom_fonction (Argument1 : Type , ….) : Type
Déclarations
DEBUT
Instructions de la fonction
nom_fonction ← Valeur envoyée
FIN
1: Un argument (appelé paramètre formel) d’un sous- programme est une variable locale
particulière qui est associée à une variable ou constante du programme appelant.
2: A tout endroit du programme appelant on peut faire appel à la fonction en utilisant simplement
son nom suivi des arguments entre parenthèses. Les parenthèses sont toujours présentes même
lorsqu’il n’y a pas de paramètre. Les arguments spécifiés lors de l’appel de la fonction doivent être en
même nombre que dans la déclaration de la fonction et des types prévus. Dans le programme 115
appelant ces arguments sont appelés paramètres effectifs
Les Fonctions
Exempl e:
FONCTION Calcul (x : Réel , y : Réel , z : Réel) : Réel
Variable a : Entier
DEBUT
a←3
Calcul ← (x + y + z) * a
FIN
Variables i , j , k , b : Réels
DEBUT
Lire i
Lire j
Lire k
b ← Calcul (i , j , k) + 2
Ecrire b
FIN
116
Les Fonctions
Solution :
La définition de la fonction « Inverse » est :
FONCTION Inverse (x : Réel) : Réel
DEBUT
SI x ≠ 0 ALORS
Inevrse ← 1 /x
FIN SI
FIN
117
Les variables locales et globales
119
Les passages de paramètres
Exempl e:
Programme 1
Fonction Calcul (a : Réel) : Réel
DEBUT
Calcul ← a * 2
a←a–1 Résultat :
FIN
Variable x : Réel
6
DEBUT 3
x←3
Ecrire Calcul (x)
Ecrire x
FIN
Programme 2
Fonction Calcul (a : Réel) : Réel
DEBUT
Calcul ← a * 2
a←a–1 Résultat :
FIN
Variable x : Réel 6
DEBUT 2
x←3
Ecrire Calcul (x)
Ecrire x 120
FIN
Les procédures
121
Les procédures
Exercice 1 : On dispose d’une phrase dont les mots sont séparer par des
point virgules. Ecrivez une procédure
qui permet de remplacer les points virgules par des espaces. On suppose
qu’on dispose des fonctions
suivantes :
- Longueur : permet de calculer la longueur d’une chaîne de caractères.
Utilisation : Longueur (chaîne)
- Extraire : permet d’extraire une partie (ou la totalité) d’une chaîne.
Utilisation : Extraire (chaîne , position_debut, longueur)
Paramètre : chaîne de laquelle on fait l’extraction
position_debut la position à partir de laquelle va commencer l’extraction
longueur désigne la longueur de la chaîne qui va être extraite.
122
Les procédures
123
Les algorithmes de Tri
124
Tri par bulle
Ce tri permet de faire remonter petit à petit un élément trop grand vers la fin du
tableau en comparant les éléments deux à deux.
Si un élément d’indice i est supérieur à un élément d’indice i+1 on les échange
et on continue avec le suivant. Lorsqu’on atteint le fin du tableau on repart du
début. On s’arrête lorsque tous les éléments du tableau sont bien placés c'est-à-
dire qu’on n’aura aucun changement d’éléments à effectuer.
125
Tri par bulle
Algorithme Bulle
Tableau T(N) : Entiers
Variables j , nc : Entiers
DEBUT
REPETER
nc ← 0
POUR j = 1 A (N-1)
SI T(j) > T(j+1) ALORS
nc ← nc +1
z ← T(j)
T(j) ← T(j+1)
T(j+1) ← z
FIN SI
FIN POUR
JUSUQU’A nc = 0
FIN
126
Tri par selection
127
Tri par selection
Algorithme selection :
Variable i,j : entiers
POUR i ALLANT DE 1 A 9
FAIRE
Petit <- TAB (i)
POUR j ALLANT DE i A 10
FAIRE
Si (TAB (j) < petit) ALORS petit <- TAB (j) ; position <- j; FinSI
FinPour
POUR j ALLANT DE position A i+1 PAS –1
FAIRE
TAB(j) <- TAB (j-1) ;
FinPour
TAB (i) <- petit ;
FinPour
128
Tri par permutation
POUR i ALLANT DE 1 A 9
FAIRE
SI (TAB (i+1) < TAB (i))
ALORS
Abouger <- TAB (i+1)
j <- 1 ;
TanQue ((j < i) ET (TAB (j) < TAB (i+1)))
Faire j <- j+1
FTQ
POUR k ALLANT DE i+1 A j+1 PAS –1
Faire
TAB (k) <- TAB (k-1)
FinPour
TAB (j) <- abouger
FSI
Fin Pour
129
Tri par insertion
POUR i ALLANT DE 1 a n
Tmp <-t[i]
j<- i
Tant que (j>0 et t[j-1]>TMP) faire
T[j]<-t[j-1]
J<-j-1
Fin tant que
T[j]<-tmp
Fin pour
130
Recherche Dichotomique
131
Exemple
Soit le tableau suivant T :
12345 6 7 8
3 7 8 8 11 15 20 24
Vous constatez que le tableau T est déjà ordonné. On va voir comment
s'applique la méthode de recherche binaire pour rechercher si x = 20 existe
dans le tableau T.
On divise l'intervalle des indices [1,8] en deux intervalles [1,4] et [5,8]. On
obtient deux tableaux T1 et T2.
1234 5 6 7 8
3788 11 15 20 24
x ∉ T1 x dansT2
132
Recherche Dichotomique
133
Recherche Dichotomique
134
Recherche Dichotomique
135
Recherche Dichotomique
Algorithme dichotomique
bool trouve=false;
int inf=0,x;
int sup=n-1, milieu;
printf("donner la valeure a rechercher");
scanf("%d",&x);
while(inf<=sup && trouve==false)
{
milieu=(inf+sup)/2;
if(t[milieu]==x)
trouve=true;
else
if(t[milieu]>x)
sup=milieu-1;
else
inf=milieu+1;
}
if(trouve=true)
printf("la valeure %d existe dans T.\n",x);
else
prontf("la valeure %d n'existe pas dans T.\n",x);
return 0
137