Rvision
ALGORITHME ET STRUCTURE DE DONNES
Introduction la programmation
Programme
Est un texte consistu dun ensemble de directives, appeles instructions qui
spcifient :
Les oprations lmentaires excuter
La faon dont elles senchainent
Variable
En programmation, une variable est un identificateur qui sert reprer un
emplacement donn de la mmoire centrale. Cette notion nous permet de
manipuler des valeurs sans nous proccuper de lemplacement quelles
occupent effectivement en mmoire.
Remarque
La lisibilit des programmes dpend troitement du choix des noms des variables qui
doivent tre simple et significatifs.
Comme tout identificateur, le nom dune variable est form dune ou de plusieurs lettres ;
les chiffres sont galement autoriss, condition de ne par les mettre au dbut du nom.
Lettre
Lettre
Lettre
Exemple :
NomVariable ; Nom6variable ; nom_variable
08/10/2017 EMNA KRAIEM BEN AFIA -------------- L2 INFOS 3
Constant
Les constant sont des donnes dont la valeur reste fixe durant lexcution du
programme.
Exemple
Pi= 3.14 g= 9.80
Type
A chaque variable utilise dans le programme, il faut associer un type qui permet de
dfinir :
Ensemble des valeurs qui peut prendre la variable.
Ensemble des oprations quon peut appliquer sur la variable
La syntaxe de laction de dclaration est la suivant :
Variable1, Variable 2, : Type
Les diffrents types : entier, rel, caractre, chane de caractres, boolen
1. Type Entier
Une variable est dite entire si elle prend ses valeurs dans Z (ensemble des entiers
relatifs) et quelle peut supporter les oprations suivant :
Opration Notation
Addition +
Soustraction -
Multiplication *
Division entire div
Modulo (reste de division) mod
Exemple : 13 div 5 = 2
13 mod 5 =3
3. Type de caractre
un caractre peut appartenir au domaine des chiffres de 0 9 des lettres
minuscules et majuscules et des caractres spciaux ( * / { # .)
Un caractre sera toujours not entre des guillemets. Un caractre espace (blanc)
sera not
Les oprateurs dfinis sur les donnes de type caractre sont :
LA comparaison entre les caractres se fait selon leur code ASCII.
Exemple
< 0 < 1 < A < B < a < b < {
Opration Notation
Egale =
Diffrent #
Infrieur <
Infrieur ou gale <=
Suprieur >
Suprieur ou gal >=
A B NON(A) A ET B A OU B
Vrai Vrai Faux Vrai Vrai
Vrai Faux Faux Faux Vrai
Faux Vrai Vrai Faux Vrai
Faux Faux vrai Faux Faux
Remarque
En plus de ces types prdfinis, le programmeur a la possibilit de dfinir
lui-mme de nouveaux types en fonction de ses besoins.
Exemple :
Types Le programme nacceptera que des notes
Tnote = 0..20 valides. De mme, la variable s de type
Saison = (A, H, P,E) saison ne pourra prendre que les valeurs
Variables A, H, P,E.
Note : Tnote
S : Saison
Les expressions
Ce sont des combinaisons entre des variables et des constantes laide doprateurs.
Elles expriment un calcul (expressions arithmtiques) ou une relation (expressions
logique).
1. Les expressions arithmtiques
Lordre selon lequel se droule chaque opration de calcul est important. Afin
dviter les ambiguts dans lcriture, on se sert des parenthses et des relations de
priorit entre les oprateurs arithmtiques :
Ordre de priorit des oprateurs arithmetiques
Priorit Oprateurs
1 - Signe ngatif
2 () parenthse
3 ^ puissance
4 * et / Multiplication et division
5 + et - Addition et soustraction
En cas de conflit entre deux oprateurs de mme priorit, on commence par celui situ
le plus gauche.
08/10/2017 EMNA KRAIEM BEN AFIA -------------- L2 INFOS 10
08/10/2017
Exercices
Exercice 1 :
Quel est lordre de priorit des diffrents oprateurs de lexpression suivante :
((3 * a) - x ^ 2 ) - ((( c - d ) / ( a / b )) / d)
5 + 2 * 64+( 8 + 2 ^ 3) / ( 2 -4 + 5 * 2 )
Exercice 2 :
Sachant que a=4, b=5, c=-1, d=0 valuer les expressions logique suivant :
Le rle de cette instruction consiste placer une valeur dans une variable. Sa
syntaxe gnrale est la forme :
Variable Expression
Exemple :
A6 : mettre la valeur 6 dans la case mmoire identifie par A.
B (A + 4 ) Mod 3 ) : Range B la valeur 1.
Remarque
La valeur ou le rsultat de lexpression droite du signe daffectation
doit tre de mme type compatible avec celui de la variable gauche.
Exemple
A5
B3
CA+B
A2
CB-A
Exemple
X4
Ville Tunis
Ecrire(x) 4
Ecrire(x*x) 16
Ecrire (Ville) Ville
Ecrire (Ville =,Ville) Ville= Tunis
Lire(variable2, variable3,)
Exemple
Lire (A) Lire une valeur partir du priphrique dentre, qui est le clavier
par dfaut, et la ranger dans la variable identifie par A
Remarque
Exercices
Excercice1 Algorithme Incorrect
Donner toutes les raisons pour lesquelles lalgorithme suivant est incorrect : x,y : Entier
z : Rel
Dbut
z x + 2
y z
x*2 3 + z
y 5y + 3
Fin
Exercice 2
Ecrire un algorithme qui lit deux entiers au clavier et qui affiche ensuite leur somme e leur produit.
Exercice 3
Ecrire un algorithme qui calcule et affiche la rsistance dun composant lectrique en utilisant la loi
dOhm.
U=Rx1 Avec U : Tension en V
R : Rsistance en
I : Intensit en A
Si <Condition> Alors
<Squence dinstructions>
FinSi
Exemple
Ecrire un algorithme qui calcule le salaire dun employ partir du nombre dheures travaills, du taux
horaire et du nombre dannes de service. Les employs ayant une anciennet de plus de 10 ans bnficient
dune allocation supplmentaire de 45 D.
Analyse du problme
1. Donnes du problme
Nh : nombre dheures travailles
Th : taux horaire (en dollar)
Anc : anciennet (en Anne)
2. Rsultat recherch
Salaire : salaire net de lemploy (en dollar)
3. Comment faire ?
Salaire nh * th
Si (anc > 10 ) Alors
Salaire salaire +45
Finsi
Solution
Algorithme Calc_Salaire
Variables
Nh,th,anc, salaire : Rel
Dbut
Ecrire (Nombre dheures travailles : ) Lire (nh)
Ecrire (Taux horaire :) Lire (th)
Ecrire (Anciennet :) Lire (anc)
Salaire nh * th
Si (anc > 10 ) Alors
Salaire salaire + 45
FinSi
Ecrire (Salaire de lemploy = , salaire)
Fin
Exemple
Ecrire un algorithme qui calcule et affiche la valeur absolue dun entier quelconque lu au clavier.
La squence dinstructions numro i sera excute si la valeur du slecteur appartient la ime liste de valeurs.
Le slecteur est une variable ou une expression de type scalaire (le rsultat est un entier ou un caractre).
Exercice :
Ecrire un algorithme qui permet de lire un numro compris entre 1 et 12 et dafficher le nom du mois correspondant.
Si le numro entr est dehors de cet intervalle, un message derreur doit tre affich.
Solution
Algorithme mois
Variables
N : Entier
Dbut
Ecrire (Entrer le numro du mois : ) Lire (n)
Selon n Faire
1 : Ecrire (Janvier )
2 : Ecrire (Fvrier )
12 : Ecrire (d)
Sinon
Ecrire (numro de mois erron )
FinSelon
Fin
Exercices
Exercice 1
Ecrire un algorithme permettant de rsoudre dans IR une quation du seconde degr de la
forme ax+bx + c = 0.
Exercice 2
Ecrire un algorithme permettant de simuler une calculatrice 4 oprations (+,-,*, et /). Utiliser la
structure selon pour le choix de lopration effectuer.
Exercice 3
Ecrire un algorithme qui lit un caractre au clavier puis afficher sil sagit dune lettre minuscule,
dune lettre majuscule, dun chiffre ou dun caractre spcial.
Rponse
Trop dobjets
Pour cela on a besoin de : dclarer
40 cases mmoires pour saisir note1,
40 cases mmoires pour saisir note2,
40 cases mmoires pour la moyenne gnrale. Gaspillage de
mmoire
Les mmes actions se rptent 40 fois:
Saisie de note1,
Saisie de note2,
Calcul de la moyenne,
Affichage de la moyenne.
Remarques
On ne peut utiliser la boucle Pour que si on connat au pralable
combien de fois le traitement sera excut.
Le nombre de Le traitement est gal : Vf-Vi+1.
Le compteur de la boucle Pour est incrment ou dcrment
automatiquement.
Exercice
crire un algorithme qui permet de calculer la factorielle de 5
Solution
Algorithme factorielle_5_Solution_1 Algorithmefactorielle_5_Solution_2
Varaibles Varaibles
Fact, cpt : entier Fact, cpt : entier
Dbut Dbut
Fact 1 Fact1
Pour cpt de 2 5 faire Pour cpt de 5 2 Pas De -1 faire
fact fact*cpt fact fact*cpt
Fin pour Fin pour
crire (la factorielle de 5 est, fact) crire (la factorielle de 5 est, fact)
Fin Fin
La condition de la boucle peut tre compose et laction rpter peut tre une
instruction unique ou un ensemble dinstructions.
Si cette valeur est VRAI, le programme excute les instructions qui suivent,
jusqu ce quil rencontre la ligne Fin tant que. Il retourne ensuite sur la
ligne du TantQue, procde au mme examen, et ainsi de suite. La boucle ne
sarrte que lorsque la variable boolenne prend la valeur FAUX.
Avant dentrer dans la boucle TantQue, vous devez vous assurer que la
condition a t initialise. Si linitialisation na pas t faite, le traitement
itratif risque de ne pas tre excut.
La condition de la boucle peut tre compose et l'action rpter peut tre une
instruction unique ou un ensemble d'instructions.
La condition darrt est considre comme une condition de sortie car, une
fois elle est vrifie, on quitte la boucle sinon on itre encore jusqu ce
quelle passe a ltat vrai.
La condition darrt peut tre simple ou compose. Elle est dite compose si
plusieurs conditions sont a vrifier simultanment.
Exercice
crire un algorithme qui permet de lire la note dalgorithmique (N_Algo) et la note des
mathmatiques(N_Math) et de calculer la moyenne gnrale (M_generale).
Les lectures doivent tre contrles.
AlgorithmeMoyenne
Variables
N_Algo, N_Math, M_generale: Rel
Dbut
Rpeter
ecrire("donner la note dalgorithmique")
lire (N_Algo)
Jusqu((N_Algo>=0) ET (N_Algo<=20))
Rpeter
ecrire("donner la note des mathmatiques")
lire (N_Math)
Jusqu((N_Math>=0) ET (N_Math<=20))
Fin
SOUS-PRIOGRAMMES
INTRODUCTION
o La conception d'un algorithme procde en gnral par des affinements
successifs.
o On dcompose le problme rsoudre en sous-problmes jusqu' obtenir des
problmes faciles rsoudre.
oPour chacun des sous-problmes, on crit un module appel sous-programme.
o La rsolution du problme sera compose d'un algorithme principal et d'un
certain nombre de sous-problmes.
oL'algorithme principal a pour but d'organiser l'enchanement des sous-
programmes.
DEFINITION ET SYNTAXE
1. DEFINITION
Un sous-programme est une unit fonctionnelle forme d'un bloc d'instructions et ventuellement
paramtr, que l'on dclare afin de pouvoir l'appeler par son nom en affectant des valeurs ses
paramtres (s'ils existent).
Les donnes fournies au sous-programme et les rsultats produits par ce dernier sont appels des
arguments ou des paramtres.
Une fonction est un sous-programme ayant un nombre de paramtres, contenant un certain nombre
d'instructions et admettant au maximum un rsultat unique affect son nom.
2. SYNTAXE
La syntaxe de dfinition d'une fonction est:
Un paramtre donn:
un paramtre qui contient une valeur avant l'excution du sous-programme.
En cours d'excution, la valeur ne change pas et reste inchange jusqu' la fin de l'excution.
On le symbolise par DON.
Un paramtre rsultat:
il s'agit d'un paramtre qui ne contient pas de valeur avant l'excution du sous-programme.
En cours d'excution, une valeur est affecte ce paramtre afin d'tre garde pour la fin
d'excution.
On le symbolise par RES.
Un paramtre donn/rsultat:
il s'agit d'un paramtre qui contient une valeur avant l'excution du sous-programme.
Cette valeur change en cours d'excution.
Le paramtre aura une valeur la fin qui n'est pas gale celle de dbut d'excution.
On le symbolise par DONRES.
08/10/2017 EMNA KRAIEM BEN AFIA -------------- L2 INFOS 55
APPEL DE SOUS-PROGRAMME
ou crire
<Nom_Fonction>(<Parametres_Effectifs>)
<Nom_Procedure>(<Parametres_Effectifs>)
Remarque
Les paramtres formels et les paramtres effectifs doivent correspondre en nombre, en type
et en ordre. Les noms peuvent se diffrer.
Exemple1
Ecrire une fonction qui permet de calculer le carr d'un entier a donn
Exemple2
Ecrire une procdure qui permet de lire 2 entiers a et b
Exemple 5
Appelez les sous-programmes vues auparavant pour crire un algorithme TEST permettant de:
- lire deux entiers x et y - calculer la somme de x et y - Calculer le carr de x et le carr de y