Université D`AntANANARIVO

publicité
Université D’AntAnAnArivO
Faculté des Sciences .
Département de Physique
( L.I.E.R )
ALGORITHMIQUE ET PROGRAMMATION
( LANGAGE PASCAL )
APPLICATION A L’ANALYSE NUMERIQUE
Filière : L.I.E.R. - 3èMe Année
Année Universitaire – 2012
RAKOTOSALAMA
EXCLU DE PRÊT
Attention ! Toute reproduction intégrale ou partielle de cet ouvrage , par quelque procédé que ce soit constituerait une contre
– façon sanctionnée par le code pénal
1
CoursAlgoLIER2011B / AlgoLIER2011 / Bureau / Toshiba1
NOTION D’ALGORITHMIQUE
1°) Définitions d’un algorithme , d’un programme et d’une instruction .
 Un algorithme est une suite finie de règles à appliquer dans un ordre déterminé à un nombre fini
de données pour arriver , en un nombre fini d'étapes , à un certain résultat , et cela indépendamment des
données .
Le rôle de l’algorithme est fondamental : il doit être indépendant du langage de programmation dans
lequel il est traduit ainsi que de l’ordinateur qui va exécuter les différentes instructions du programme .
 Un programme est la traduction de l’algorithme pouvant être interprétée puis exécutée par un
ordinateur .
 Une instruction est , soit une action à effectuer , soit une description de données .
Exemple :
Afficher a l’écran un message , une expression .
Déclarer une variable
2°) Qualités d’un algorithme ( ou un programme )
Tout programme fourni à l'ordinateur n'est que la traduction dans un langage de programmation d'un
algorithme mis au point pour résoudre un problème donné .
Pour obtenir un bon programme , il faut partir d'un bon algorithme . Il doit posséder les qualités
suivantes:
 être clair, facile à comprendre par tous ceux qui le lisent .
 présenter la plus grande généralité possible pour répondre au plus grand nombre de cas
possibles
 être d'une utilisation aisée ( facile ) même par ceux qui ne l'ont pas écrit et ce grâce aux
messages apparaissant à l'écran qui indiqueront quelles sont les données à fournir et sous quelle forme elles
doivent être introduites ainsi que les différentes actions attendues de la part de l'utilisateur
 être conçu de manière à limiter le nombre d'opérations à effectuer et la place occupée en
mémoire.
3°) Méthodologie
Trois étapes caractérisent la résolution du problème sur ordinateur :
 préciser les données fournies : les entrées ou input en anglais
 préciser les résultats que l'on désire obtenir : les sorties ou output en anglais .
 déterminer le processus de transformation des données en résultats en utilisant les formules
mathématiques .
4°) Structures rencontrées en algorithme
Pour représenter n'importe quel algorithme , on dispose les trois possibilités suivantes :
 la structure de séquence qui indique que les opérations doivent être exécutées les unes après les
autres
 la structure de choix qui indique quel ensemble d'instructions doit être exécuté suivant les
circonstances
 la structure de répétition qui indique qu'un ensemble d'instructions doit être exécuté plusieurs fois.
5°) Syntaxe général d’un algorithme ( ou d’un programme )
En général , un algorithme est constitué par :
 Un en – -tête donnant un nom à l’algorithme .
 Une partie déclarative qui regroupe les caractéristiques des variables manipulées dans
l’algorithme .
 Un bloc d’instructions encadré par les mots DEBUT et FIN
2
Prenons un exemple :
Exprimer un nombre de secondes sous forme d'heures , minutes , secondes . La seule donnée est le
nombre total de secondes qu’on appelle nsec ; les résultats consistent à trouver 3 nombres entiers h , m , s
L’algorithme doit répondre à la syntaxe suivante :
Algo secondes
( En – -tête )
entier nsec, h, m, s ( Déclaration des variables avec leur type )
Début
écrire "Introduisez le nombre de secondes:"
lire nsec
s  nsec mod 60
m  (nsec \ 60) mod 60
h  nsec \ 3600
écrire nsec , "valent : ", h , "heure(s)", m , "minute(s) et", s , "seconde(s)"
Fin.
( Instructions )
Remarques :
\
: quotient entier de 2 nombres entiers ; Ex : 13 \ 2 = 6 , par contre 13 / 2 = 6,5
 mod : reste entier de la division de 2 nombres entiers ; Exemple : – 10 mod 3 = –1
 L’instruction : écrire "Introduire le nombre de secondes:" , donne l’ordre à
l’ordinateur d’afficher à l’écran ou d’imprimer les expressions entre guillemets .
 L’instruction : lire nsec demande au programmeur de taper au clavier la valeur de la
variable nsec .
6°) Définition d’une constante et d’une variable en programmation
 Une constante est une valeur qui ne change jamais tout au long de l’exécution d’un algorithme .
 En programmation , une variable est un objet destiné à recevoir des valeurs (nombres , chaînes de
caractères , ou autres) et à garder la place mémoire nécessaire . Les variables jouent le rôle de "tiroirs" ou ‘’
cases ‘’ dans lesquels on place une valeur durant l'exécution de l'algorithme .
 Alors , l’instruction lire X signifie que l'on introduit dans le tiroir ( ou la case ) baptisé X la valeur
numérique entrée au clavier lors de l'exécution du programme . Le contenu de ce tiroir peut être modifié en y
plaçant le résultat d'un calcul .
7°) Symbole d’affectation ( ou d’assignation ) en algorithme
En algorithme , le symbole d’affectation ( ou d’assignation ) est représenté par une flèche orientée vers la
gauche ( ) .
Variable  Expression
Exemple
s  nsec mod 60 signifie que l'on place dans le tiroir s , le résultat de l'opération figurant à droite
de la flèche . Cette instruction se lit : assigner ( ou affecter ) à la variable s la valeur de l'expression de droite
8°) Définition d’une expression en programmation
Une expression est une formule algébrique utilisée pour calculer une valeur . Cette formule fait
intervenir les noms des variables , des constantes numériques et des symboles mathématiques ( " + " :
addition , " – " : soustraction , " * " : multiplication , " / " : division , " \ ": quotient entier de 2 nombres
entiers , " mod ": reste entier de la division de 2 nombres entiers )
On utilise également des fonctions mathématiques usuelles : ln x , sin x , etc., ….
En notation algorithmique , l’opération de concaténation ( juxtaposition de 2 chaînes pour en former
une nouvelle ) est symbolisée par & séparant les 2 chaînes originelles .
3
Exemple :
Notation algorithmique
Traduction en Pascal
A : = ‘ Bon ’
B : = ‘ jour’
C:=A+B
A  ‘’ Bon ‘’
B  ‘’ jour ‘’
C  A & B
C vaut ‘’ Bonjour ‘’
9°) Définition du type d’une variable .
Le type d’une variable est l’ensemble dans lequel la variable prend ses valeurs .
Il y a 2 sortes de types de variables : les types prédéfinis et les types déclarés .
 Les types prédéfinis sont définis dans le langage de programmation ( ici Pascal ) . Il y a 2 sortes de
types prédéfinis : les types scalaires et le type structuré .
Les types scalaires sont : entier , réel , caractère , chaîne et booléen .
Le type structuré est le type tableau .
 Les types déclarés sont créés par le programmeur
Exemples :
Enumération ( Lundi , Mardi , Mercredi , Jeudi , Vendredi , Samedi , Dimanche )
Intervalle Vendredi .. Dimanche
10°) Définition d’un tableau .
Un tableau est une structure de données ayant une dimension et un type déterminés , permettant de
stocker en mémoire plusieurs variables de même type . Ces valeurs sont appelées éléments du tableau ou
variables indicées .
Chacun de ces éléments est repéré par un indice indiquant sa position relative par rapport au début du
tableau .
Dimension : le nombre d’éléments que peut contenir le tableau détermine la dimension du tableau .
Type : désigne la nature des valeurs stockées dans le tableau ( entier ,caractère , chaîne , réel , …. )
Elément : désigne une valeur du tableau .
Indice : c’est un entier naturel dont les valeurs varient de 1 à la dimension du tableau . A chaque valeur
de l’indice correspond une seule valeur dans le tableau .
Exemples :
tableau
a(i,j,k),i=0..12 , j=1..5 , k=12..19 d'entier
b(i),i=12..25 de chaînes
c(i,j,k) , i = 1..6 , j = 1..15 , k = 1..9 de réel
Commentaires
Soit la déclaration suivante :
d(i , j) , i = 1..5 , j = 1..3 de réel
Chaque variable indicée doit être décrite dans la partie déclarative de l'algorithme ; la description
comprend trois parties :
1° La première partie décrit le nom de la variable et ses indices : d ( i , j )
2° La deuxième partie décrit pour chaque variable les valeurs que peuvent prendre ces indices :
les entiers i = 1 à 5 et j = 1 à 3 pour la variable indicée d .
3° La troisième partie définit le type de chaque élément constituant le tableau : d ( i , j ) est un
tableau dont les éléments sont des réels .
Remarque : Toutes les composantes d'un tableau doivent être du même type
4
NOTION DE PROGRAMMATION : TURBO PASCAL
1°) Les règles de base de la structure du langage Pascal .
1° Un programme Pascal se compose de trois parties:
un en – tête , caractérisé par le mot PROGRAM
une section déclarative introduite par le mot VAR
une section instruction ou corps du programme , délimitée par les mots BEGIN et END.
Attention : Le programme se termine par un point .
2° L' en – tête sert à donner un nom au programme selon la forme :
PROGRAM identificateur;
3° Un identificateur en Pascal doit débuter par une lettre suivie par un nombre quelconque de lettres ,
chiffres ou de " _ " ( caractère souligné ) . Les identificateurs ne peuvent contenir d'espacement ( caractère
" blanc " ) ou de caractères tels que % , ? , * ,
la version 3 ) .
. , – ,. mais peuvent être aussi longs que l'on veut ( six
pour
4° Les variables doivent faire l'objet d'une déclaration de type de la forme:
VAR
liste des variables : type;
5° Des points-virgules sont obligatoires pour séparer les trois parties et pour séparer les instructions .
6° Les instructions de lecture et d'écriture se traduisent respectivement par READ ( ou READLN ) et
WRITE ( ou WRITELN ) suivis d'une liste de variables ou d'expressions placées entre parenthèses et
séparées par des virgules .
L'ajout du suffixe LN après WRITE ou READ oblige le passage à la ligne suivante lors de l'affichage à
l'écran
7° L'assignation ( ou l’affectation ) se représente par " := "
8° Les opérateurs arithmétiques sont identiques à ceux de la notation algorithmique( ou langage de
description d'algorithme ( LDA ) .
Toutefois , X \ 3600 est traduit par X DIV 3600 . En effet , outre les quatre opérations + , – , * , et / ,
Pascal utilise deux opérateurs supplémentaires :
DIV fournissant la partie entière du quotient de deux nombres entiers
MOD fournissant le reste de la division de deux nombres entiers
Ainsi , 13 / 5 fournit la valeur 2 . 6 ; 13 DIV 5 fournit 2
et 13 MOD 5 fournit 3.
9° Les mots PROGRAM , VAR , BEGIN , END , DIV , MOD , ..... ont un sens précis dans le langage: ce
sont des mots réservés qui ne peuvent être choisis comme identificateurs ( noms ) par le programmeur.
Un certain nombre de mots tels que INTEGER , READLN , WRITE , ... ont une signification prédéfinie .
Pour éviter toute erreur , on évite de les choisir comme identificateur .
10° Les mots du langage et les identificateurs doivent être séparés les uns des autres par un ou plusieurs
‘‘ blancs’’.
2°) Manipulation des nombres.
Pascal reconnaît deux types de nombres : les types entier et réel.
a ) Le type entier.
En algorithme , on placera dans la déclaration des variables , une ligne telle que:
entier age , note
qui se traduira en Pascal par :
VAR
age , note : integer;
5
b )Le type réel.
En algorithme , on placera dans la déclaration des variables une ligne telle que :
réel taux , moyenne
qui se traduira en Pascal par :
VAR
taux , moyenne : real ;
3°) Manipulation des chaînes de caractères .
Il existe deux types de variables alphanumériques : les caractère et chaîne.
a ) Le type caractère.
Le type caractère est réservé aux variables contenant un seul caractère ( lettre , symbole , ponctuation , ...) .
Il est possible d'en déterminer les successeur / prédécesseur / position dans la liste des codes ASCII
( American Standard Code for Information Interchange ) .
Exemple : le successeur de "B" est "C", son prédécesseur "A" et son code ASCII est 66 .
En algorithme ,, on placera dans la déclaration des variables une ligne telle que:
caractère lettre , initiale
qui se traduira en Pascal par:
VAR
lettre , initiale : CHAR;
b )Le type chaîne.
Les variables du type chaîne peuvent contenir :
soit une suite de caractères ( un mot , une phrase , ...) ,
soit un caractère ,
soit aucun caractère : on parle alors de chaîne vide .
En algorithme , une variable de type chaîne se déclare comme suit :
Chaîne nom , adresse
qui se traduira en Pascal par :
VAR
Nom , adresse : string;
6
STRUCTURE DE CHOIX ( OU STRUCTURE CONDITIONNELLE ).
1°) Définition
La structure de choix permet d’exécuter , à un instant donné une action , ou une autre action ,
exclusivement l’une de l’autre ( exclusif : qui ne s’intéresse qu’à une seule action en excluant les autres ) .
Il existe 2 structures de choix : l'alternative et le choix multiple .
2°). La structure alternative.
a ) Forme générale d’une structure alternative .
En notation algorithmique , la structure alternative se présente en général sous la forme :
si expression alors première séquence d'instructions
sinon deuxième séquence d'instructions
fsi
b ) Traduction en langage Pascal .
Elle se traduit en Pascal par :
IF expression THEN
BEGIN
séquence d'instructions;
END
ELSE
BEGIN
séquence d'instructions ;
END;
expression conditionne le choix d'un des deux ensembles d'instructions . Cette expression peut
être soit vraie soit fausse . Si l'expression est vraie , la première séquence d'instruction sera exécutée et la
seconde sera ignorée ; si l'expression est fausse , seule la seconde séquence d'instructions sera effectuée .
Le mot sinon indique où se termine la première séquence d'instructions et où commence la seconde .
Le mot fsi ( abrégé de "fin de si" ) indique où se termine la seconde séquence d'instructions .
Dans certains cas , lorsque l'expression est fausse , aucune instruction ne doit être exécutée . La
condition s'exprime alors plus simplement sous la forme:
Si expression alors séquence d'instructions fsi
Ceci se traduit en Pascal par :
IF expression THEN
BEGIN
séquence d'instructions
END;
Remarques :
…
 BEGIN
END peuvent être omis lorsque la séquence d’instructions se réduit à une seule instruction .
 Quelle que soit la séquence choisie et exécutée , les instructions qui suivent fsi seront exécutées .
 Il est interdit de mettre un ; avant ELSE ( ou après le END indiquant la fin de la séquence d'instructions
qui suit le THEN ) .
 Chacune des séquences d'instructions d'un si ... fsi peut contenir des si...fsi . On dit alors que les
structures sont imbriquées.
3°) Expression logique
Une expression logique se construit à partir d'une affirmation qui est , soit vraie , soit fausse .
Par exemple , une condition telle que " reste = 0 " n'impose pas à la variable reste d'être nulle . Il ne
s'agit pas d'une assignation mais d'une condition qui ne sera réalisée et n'aura pas donc la valeur " vrai " que
si la variable reste a été assignée à 0 . Dans les autres cas , cette condition prendra la valeur " faux ".
7
On peut combiner des affirmations à l'aide des opérateurs logiques : ou , et et non . Ces
opérandes ne peuvent prendre que deux valeurs : vrai ou faux .
Le tableau suivant donne les valeurs des expressions NON A , A ET B , A OU B pour les valeurs
possibles de A et de B .
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
4°) Variable booléenne
On peut stocker la valeur d'une expression logique dans une variable . Cette variable ne peut prendre
que la valeur vrai ou faux ( true ou false en Pascal ) . Cette variable est appelée variable logique ou
booléenne .
En algorithme , les variables de type booléenne ( exemple : OK , pair ) se déclarent comme suit :
Booléen OK , pair
qui se traduit en Pascal par :
VAR
OK , pair : BOOLEAN;
5°) Le choix multiple ( ou sélection ) .
a ) Définition
Le choix multiple permet de présenter une solution à des problèmes où un nombre important de cas ,
mutuellement exclusifs , sont à envisager en fonction des valeurs prises par une seule variable ou expression
( exclusif : qui ne s’intéresse qu’à un seul élément en excluant les autres )
Puisque chaque action est exclusive des autres , la structure sélective correspond à une imbrication
d’alternatives .
b ) Forme générale d’une sélection
Algorithme ,.
entier i
début
lire i
selon que
i=1 :
oq i=2 :
oq i=3 :
autrement
fselon
Fin
Le mot
oq
i
instructions1
instructions2
instructions3
écrire "Mauvais choix"
est l'abréviation de " ou que ".
Traduction en langage Pascal
Var
i: integer ;
Begin
read (i);
Case i of
i=1 : instructions1 ;
i=2 : instructions2 ;
i=3 : instructions3
else
write (‘Mauvais choix ’);
end ;
End ;
8
Forme équivalente utilisant une structure alternative imbriquée
Algorithme
entier i
Début
lire i
si i =1 alors instructions1
sinon
si i =2 alors instructions2
sinon
si i =3 alors instructions3
sinon écrire " Mauvais choix "
fsi
fsi
fsi
Fin
Traduction en langage Pascal
Var
i: integer ;
Begin
read (i);
if i =1 then instructions1
else
if i =2 then instructions2
else
if i =2 then instructions3
else Write (‘Mauvais choix’);
End;
STRUCTURES REPETITIVES
1°) Définition
La structure répétitive est une action permettant de répéter un ensemble d’instructions jusqu’à ce
qu’une condition soit réalisée . Il existe plusieurs formes de structures répétitives : chacune est bien adaptée à
des circonstances particulières . Ce sont les boucles tant que , répéter ... jusqu'à et pour .
2°) La boucle " tant que ".
a ) Algorithme
En notation algorithmique , une boucle "tant que" se présente comme suit :
tant que expression logique faire
ftant
séquence d'instructions
En premier lieu , l'expression logique est évaluée ( il faut donc veiller à sa valeur lors de l'entrée dans
la boucle ) : si sa valeur est vrai , le corps de la boucle est exécuté puis l'expression logique est réévaluée ( il
faut donc qu'elle puisse changer de valeur pour sortir de la boucle ) et si elle a la valeur faux , on exécute
l'instruction qui suit ftant .
Les mots faire et ftant ( abréviation de "fin de tant que" ) encadrent les instructions qui doivent être
exécutées plusieurs fois . On indique entre tant que et faire les conditions dans lesquelles on doit exécuter
le corps de la boucle .
9
b ) Traduction en langage Pascal
La forme :
tant que expression logique faire séquence d'instructions
ftant
se traduit en Pascal par :
WHILE expression logique DO
BEGIN
séquence d'instructions;
END;
où la séquence d'instructions est entourée par un BEGIN et un END qui peuvent être omis lorsque la
séquence se réduit à une seule instruction .
3°) . La boucle " pour".
La structure répétitive permet de répéter l’exécution d’une ou plusieurs instructions un nombre de
fois déterminé . Lorsque le nombre des répétitions est connu ou déterminable avant la première exécution de
l’action concernée , on utilise la boucle « Pour » . L’exécution est conditionnée par l’observation d’une
variable de test ( de contrôle ) , appelée indice de boucle ou compteur , qui est initialisée puis incrémentée
( c.à.d. augmentée d’une quantité donnée ) ou décrémentée après chaque passage dans la boucle .
a ) Algorithme..
En notation algorithmique , une boucle " POUR " se présente comme suit :
Pour vc de premval à dernval par incr faire
séquence d'instructions
fpour
où
vc est le nom de la variable de contrôle
premval est la première valeur ( ou valeur initiale )
dernval est la dernière valeur ( ou valeur finale )
incr est l'incrément , c'est-à-dire la quantité non nulle ajoutée à la variable de contrôle à la fin de chaque
exécution du corps de la boucle .
Les mots faire et fpour ( abréviation de " fin du pour " ) encadrent les instructions qui doivent être
exécutées plusieurs fois .
Avant chaque exécution du corps de la boucle , la valeur de la variable de contrôle est comparée à la
dernière valeur .
L'exécution s'arrête :
 lorsque la variable de contrôle a une valeur strictement supérieure à la dernière valeur si l'incrément
est positif
 lorsque la variable de contrôle a une valeur strictement inférieure à la dernière valeur si l'incrément
est négatif .
La première valeur , la dernière valeur et l'incrément sont des entiers numériques .
b ) Traduction en langage Pascal
La forme :
Pour vc de premval à dernval par incr faire
séquence d'instructions
fpour
se traduit en Pascal par :
FOR vc := premval TO dernval DO
BEGIN
séquence d'instructions ;
END;
N.B. : Le Pascal n'accepte que l'incrément égal à 1 et – 1 et n’exige pas de le spécifier .
Begin …End peut être omis lorsque la séquence se réduit a une seule instruction .
10
4°) La boucle " répéter ... jusqu'à ".
Comme la boucle " tant que ", ce type de répétitive est utilisé lorsque le nombre de fois que la
séquence d'instructions à répéter est inconnu au moment où cette séquence est abordée pour la première fois
mais le corps de la boucle est toujours exécuté au moins une fois .
a ) Algorithme..
Sa formulation générale est:
Répéter
séquence d'instructions
jusqu'à (expression logique)
L'expression logique est évaluée après l'exécution du corps de la boucle : si sa valeur est faux , le corps
de la boucle est exécuté à nouveau puis l'expression logique est réévaluée ( il faut donc qu'elle puisse
changer de valeur pour sortir de la boucle ) et si elle a la valeur vrai , on exécute l'instruction qui suit
jusqu'à .
b ) Traduction en langage Pascal
La traduction en Pascal de :
Répéter
séquence d'instructions
jusqu'à (expression logique)
se fait pratiquement mot à mot :
REPEAT
séquence d'instructions ;
UNTIL (expression logique);
Remarque: La séquence d'instructions n'est pas entourée par BEGIN ... END.
DECLARATION DU TYPE TABLEAU EN PASCAL
En Pascal , un tableau est déclaré du type ARRAY et le nombre de dimensions ( indices ) du tableau
s'indique entre crochets en citant les valeurs minimales et maximales successives des différents indices ,
..
séparées par deux points (
) . La déclaration du type des éléments contenus dans le tableau se fait en
ajoutant OF INTEGER , ou OF REAL ou of string ...
Exemple:
tableau a(i,j,k),i=0..12 , j=1..5 , k=12..19 d'entier
b(i),i=12..25 de chaîne
c(i,j,k),i=1..6 , j=1..15 , k=1..9 de réel
Cette déclaration se traduit en Pascal par :
Type
vecteurA = ARRAY[ 0..12,1..5,12..19 ] OF INTEGER;
vecteurB = ARRAY[ 12..25 ] OF STRING;
vecteurC = ARRAY[1..6,1..15,1..9 ] OF REAL;
Var
A : vecteurA;
B : vecteurB;
C : vecteurC;
Remarque : l'élément a( i , j , k ) en notation algorithmique d’un tableau s'écrit , a[i,j,k] en Pascal .
11
FONCTIONS ET PROCEDURES
I –. FONCTION
a ) Définition
Une fonction est une entité qui calcule un résultat unique en fonction d’un ou de plusieurs paramètres
d’entrée .
Exemple :
L’aire S d’un rectangle de largeur x et de longueur y : S = f (x , y ) = x * y .
x et y sont les paramètres ou les arguments d’entrée de la fonction . Pour évaluer la fonction , il
faut que tous les paramètres soient définis au moment de l’appel de la fonction .
Une fonction se caractérise par un en – tête , qui décrit le nom de la fonction et les paramètres à
transférer , suivi d’un corps , qui représente l’algorithme effectuant les traitements associés à la fonction .
Une fonction peut elle – même contenir d’autres fonctions . Tous les objets définis à l’intérieur
d’une fonction sont dits locaux : ils ne sont pas accessibles en dehors du corps de cette fonction .
b ) Algorithme
Exemple : Calcul de l’aire S d’un rectangle de largeur x et de longueur y .
Fonction airerectangle ( x,y : réel ) : réel
En - tête
Réel S
Partie déclarative
Début
S  x*y
Airerectangle
Fin.
Bloc d’instructions
 S
L’en – tête identifie la fonction par son identificateur , nom donné par le programmeur ( ici :
airerectangle ) et fournit une liste de paramètres ( ici , x et y ) avec leur type ( ici réel ) . L’en – tête précise
aussi le type de la valeur retournée par la fonction ( ici réel )
Le corps d’une fonction comporte toutes les sections d’un programme : déclarations et bloc
d’instructions exécutables .
c ) Traduction en Pascal
L’exemple ci – dessus se traduit en Pascal par :
Function airerectangle ( x,y : real ):real;
Var S : real ;
Begin
S:= x*y ;
Airerectangle:= S ;
End ;
En - tête
Partie déclarative
Bloc d’instructions
d ) Appel de la fonction
Algorithme
Algo Surface
Réel x,y,S
En – tête du programme
Partie déclarative
Fonction airerectangle ( x1,y1 : réel ) : réel
Réel S1
Début
S1  x1*y1
Airerectangle
Fin.
En - tête
Partie déclarative
Déclaration
de la fonction
Bloc d’instructions
 S1
12
DEBUT
Ecrire ‘‘ Introduire la valeur de la largeur x : ’’
Lire x
Ecrire ‘‘ Introduire la valeur de la largeur y : ’’
Lire y
S  airerectangle( x , y )
Ecrire ‘‘ S( ’’, x , ‘‘ , ’’ , y ,‘‘ ) = ’’, S
FIN .
Programme
principal : appel
de la fonction
L’en – tête identifie la fonction par son identificateur , nom donné par le programmeur ( ici : airerectangle ) et
fournit une liste de paramètres ( ici , x et y ) avec leur type ( ici réel ) . L’en – tête précise aussi le type de la
valeur retournée par la fonction ( ici réel )
Le corps d’une fonction comporte toutes les sections d’un programme : déclarations et bloc
d’instructions exécutables .
Traduction en Pascal
Program surface;
Var
x,y,S:real;
En – tête du programme
Function airerectangle ( x1,y1 : real ):real;
Var S1: real ;
Begin
S1:= x1*y1;
Airerectangle:= S1;
End ;
En - tête
Partie déclarative
Partie déclarative
Bloc d ’ instructions
de la fonction
Begin
write (‘ Donner la valeur de x : ’);
readln (x);
write (‘ Donner la valeur de y : ’);
readln (y);
S := airerectangle( x , y );
writeln (‘ S( ’, x:6:2 , ‘ , ’ , y:6:2 ,‘ ) = ’, S:6:2 );
End .
13
Programme
principal :
appel
de la fonction
II –. PROCEDURE
a ) Définition
Une procédure est un bloc de programme travaillant sur des données fournies ou contenues dans le
bloc du programme . Ces données sont définies à l’appel de la procédure , et leur traitement permet de
retourner des résultats accessibles au bloc appelant . Données et résultats constituent les paramètres ou
arguments de la procédure
b ) Déclaration d’une procédure
Toute procédure doit être déclarée dans la section appropriée du programme . Une déclaration de
procédure comprend un en – tête et un corps :
 l’ en – tête contient l’identificateur ( le nom ) de la procédure , suivi entre parenthèses de la liste des
paramètres avec leur type . Les différents types de paramètres sont séparés par des points virgules alors que
les paramètres de même type le sont par des virgules .
 le corps d’une procédure est un bloc . Il peut donc contenir toutes les déclarations et instructions du
langage . Dans le corps d’une procédure , tous les objets non transmis comme paramètres doivent être
déclarés .
Il est possible de définir d’autres procédures ou fonctions à l’intérieur d’une procédure . Des
emboîtements de fonctions et procédures sont donc possibles à plusieurs niveaux de la procédure .
c ) Appel de la procédure
L’appel d’une procédure constitue une instruction composée du nom de la procédure suivi , éventuellement
entre parenthèses , de la suite des paramètres effectifs , séparés par des virgules .
d ) Algorithme
Exemple :
Calcul de l’expression A + cos (B) , utilisant une procédure nommée calculAB , pour différentes
valeurs de A et B .
Algo Calcul
En – tête de l’algorithme
Réel x , y , z
Partie déclarative de l’action principale
Procedure SaisieAB (A,B:réel )
En – tête de la procédure
Début
Ecrire ‘‘ Donner la valeur de A : ’’
Lire A
Ecrire ‘‘ Donner la valeur de B : ’’
Lire B
Fin
Procédure 1
Procedure calculAB ( A,B:réel ; resultat: réel )
En – tête de la procédure 2
Réel D
Partie déclarative de la procédure 2 ( Variable locale )
Début
D  cos(B)
Resultat  A + D
Procédure 2
Bloc d’instructions de la procédure 2
Fin
DEBUT
saisieAB( x , y )
Appel de la procédure saisie
calculAB( x , y , z )
Appel de la procédure calculAB
ecrire ‘‘ Le resultat est : resultat = ’’, z
FIN .
14
Programme principal :
appel des procédures
e ) Traduction en Pascal
Program Calcul ;
En – tête du programme
Var
x , y , z : real ;
Partie déclarative du programme principal
Procedure SaisieAB ( Var
A,B:real ) ;
En – tête de la procédure
Begin
write (‘ Donner la valeur de A : ’);
readln (A)
Procédure 1
Bloc d’instructions
de la procédure 1
write (‘ Donner la valeur de B : ’);
readln (B);
End;
Procedure calculAB ( A,B :real; Var
resultat : real) ;
En – tête de la procédure 2
Var
D : real ;
Begin
D := cos(B) ;
Resultat := A + D ;
End ;
BEGIN
saisieAB( x , y ) ;
Partie déclarative de la procédure 2 ( Variable locale )
Procédure 2
Bloc d’instructions de la procédure 2
Appel de la procédure saisie
Programme principal
:
calculAB( x , y , z ) ;
Appel de la procédure calculAB
writeln(‘ Le resultat est :resultat = ’, z :8 :3 );
END.
Résultat de l’exécution
Donner la valeur de A : 6.7
Donner la valeur de B : 1.0472
Le resultat est : resultat =
7.200
15
appel des procédures
RECURSIVITE
1°) Définition
La récursivité donne la possibilité de faire figurer dans la définition d’un objet une référence à ce
même objet .
Par exemple , la somme des n premiers entiers peut faire référence à la somme des ( n – 1 ) premiers
entiers en écrivant :
Som(n) = n + Som(n-1) avec Som(1) = 1
Une procédure ou une fonction récursive est un sous-programme qui appelle lui – même , et qui fait
intervenir une variable de contrôle permettant d’arrêter le processus d’appel .
2°) Exemple numérique simple
Calcul de la somme de n premiers entiers en utilisant une méthode récursive .
a ) Méthode classique
Algorithme
Algo Somme1 ( En – tête )
entier i , N , som ( Déclaration des variables avec leur type )
Début
écrire " Donner un nombre entier N : "
Lire N
som  0
pour i de 1 à N par 1 faire som  som + i fpour
écrire " Somme = " ,som
Fin .
Traduction en Pascal :
PROGRAM Somme1; ( En – tête )
VAR
i , N, som : INTEGER; ( Déclaration des variables avec leur type )
BEGIN
Write (‘ Donner un nombre entier N : ‘ );
Readln ( N );
Som:= 0;
FOR i := 1 to N do
som := som + i
Writeln (‘ Somme = ‘ , som );
END.
Résultat de l’exécution
Donner un nombre entier N : 4
Somme = 10
( Instructions )
( Instructions )
b ) Méthode récursive
Algorithme
Algo Somme2
Entier N
( En – tête )
( Déclaration de la variable avec son type )
Fonction som ( val : entier ) : entier
Début
Si val =1 alors som  1
Sinon som  val + som ( val – 1 )
Fsi
Fin
DEBUT
Ecrire ‘‘ Donner un nombre entier N : ’’
Lire N
Ecrire ‘‘ Somme = ’’ , som(N)
FIN.
16
Fonction
récursive
( Action principale )
Traduction en Pascal :
PROGRAM Somme2; ( En – tête )
VAR
N : INTEGER; ( Déclaration de la variable avec son type )
Function som ( val : integer ) : integer ;
Begin
If val =1 then som:=1
else som := val + som ( val – 1 );
End;
BEGIN
Write (‘ Donner un nombre entier N : ’ );
Readln ( N );
Writeln (‘ Somme =’ , som( n ) : 5 );
END.
Résultat de l’exécution
Donner un nombre entier N : 4
Somme = 10
Fonction
recursive
( programme principale )
3°) Exercice d’application
Calcul de N! en utilisant la méthode récursive .
Algorithme
Algo Factoriel ( En – tête )
Entier N
( Déclaration de la variable avec son type )
Fonction Fac ( val : entier ) : entier
Début
Si val =1 alors fac  1
Sinon fac  val * fac ( val – 1 )
Fsi
Fin
DEBUT
Ecrire ‘‘ Donner un nombre entier N : ’’
Lire N
Ecrire ‘‘ Factoriel(‘‘,N,’’ ) = ‘‘ , fac(n)
FIN.
Fonction
récursive
( Action principale )
Traduction en Pascal :
PROGRAM Factoriel; ( En – tête )
VAR
N : INTEGER; ( Déclaration de la variable avec son type )
Function Fac ( val : integer ) : integer ;
Begin
If val =1 then fac:=1
else fac:= val * fac( val – 1 );
End;
BEGIN
Write (‘ Donner un nombre entier N : ‘ );
Readln ( N );
Writeln (‘ Factoriel(‘,N,’)
= ‘ , Fac( n ) : 5 );
END.
Résultat de l’exécution
Donner un nombre entier N : 4
Factoriel(4) = 24
17
Fonction
recursive
( programme principale )
APPLICATION : ANALYSE NUMERIQUE
Séparation des racines de l’équation algébrique f(x) =0
Séparer dans un intervalle [ a , b ] les racines réelles d’une équation algébrique f(x) = 0 , consiste à
établir des segments [ x , x + dx ] les plus serrés possibles contenant une racine et une seulement .
Principe
 On subdivise I en n domaines [ x i , x i+1 ] de largeur x , i variant de 0 à n – 1 :
 x  x i1  x i 
ba
 Cte
n
 Un domaine [ x i , x i+1 ] contient une racine si f ( x i ) . f ( x i+1 ) < 0
METHODE DES APPROXIMATIONS SUCCESSIVES POUR LA RESOLUTION
DE L’EQUATION F(X) = 0
1° ) Principe de la méthode
Soit l’équation f(x) = 0 où f(x) est une fonction continue sur le segment [ a , b ] .
On remplace l’équation par x =  (x ) .
On sélectionne par un moyen quelconque une valeur grossièrement approchée de la racine : xo
On calcule successivement :
x1 =
x2 =
x3 =
x4 =
 ( xo )
 ( x1 )
 ( x2 )
 ( x3 )
.
.
.
x N =  ( xN
–-1 )
avec
N = 1 , 2 , 3 , …..
Si la suite converge , alors :   lim x N est la racine cherchée .
N 
18
Remarques :
 La solution s’obtient :

sous forme d’une ligne échelonnée si  ‘ ( x ) > 0 ,

en spirale si  ‘ ( x ) < 0
 Le théorème suivant donne une condition suffisante de convergence du processus itératif :
Théorème :
Soit la fonction  (x ) définie et dérivable sur
b ] . S’il existe un nombre q tel que   ‘ ( x )  
1°) le processus itératif xN =
initiale xo  [ a , b ] .
2°) la valeur limite   lim x N
le segment [ a , b ] avec toutes ses valeurs  (x )  [ a ,
q  1 pour a < x < b :
 ( xN –-1 ) converge indépendamment de la valeur
est l’unique racine de l’équation x =  (x ) sur [ a , b ] .
N 
On peut prendre q la plus petite valeur ou la borne inférieure de   ‘ ( x )  pour
a < x < b .
 L’équation f ( x ) = 0 peut être mise sous la forme x =  (x ) par différentes façons . La
condition ,   ‘ ( x )   q  1 est la représentation la plus avantageuse pour le processus itératif .
2° ) Organigramme
représentation graphique d'un algorithme . Un organigramme est donc un diagramme
qui montre le cheminement des données dans un programme ou dans un système d'information , ainsi que les
opérations pratiquées sur ces données lors des différentes étapes du traitement . Ces opérations sont
représentées par des cases dont les formes sont normalisées : rectangles pour les calculs , losanges pour les
tests, parallélogrammes pour les entrées et les sorties de données . Ces cases sont reliées entre elles par des
lignes fléchées qui indiquent le cheminement . L'organigramme est ainsi un outil graphique qui peut servir
d'aide pour comprendre le fonctionnement ou le comportement d'un programme donné .
Organigramme :
19
RESOLUTION NUMERIQUE D’UN SYSTEME TRIANGULAIRE
1° ) Principe de la méthode
Soit le système d’équations :
A 1,1 . X1 + A 1,2 . X2 + A 1,3 . X3 + … + A 1,N . XN = B1
A 2,2 . X2 + A 2,3 . X3 + … + A 2,N . XN = B2
A 3,3 . X3 + … + A 3,N . XN = B3
……….
……..…
A N,N . XN = BN
Une condition nécessaire et suffisante pour que ce système triangulaire admette une et une seule
solution est que les éléments diagonaux soient différents de zéro ( AI,I  0 : I = 1 à N ) .
Les valeurs des solutions sont obtenues en résolvant d’abord la dernière équation :
XN 
BN
AN, N
Puis en remontant ,
X N 1 
1
A N 1 , N 1
 B N 1  A N 1 , N . X N 
……
XI 
1
A I, I
 B I  A I , I 1 . X I 1 
  A I, N . X N
……
X1 
1
A 1,1
 B1  A 1, 2 . X 2 
  A 1, N . X N
2° ) Exemple numérique
2.X1 + 3. X2 – X3 = 1
0.X1 + X2 – 5. X3 = – 3
0.X1 + 0. X2 + 6 . X3 = 2

 2 3  1   X1   1 

    
 0 1  5  .  X 2     3 
0 0 6   X   2 

  3  
X3 
2 1
4
 ; X2 
6 3
3
20
et X 1 
8
3


3° ) Organigramme
RESOLUTION D’UN SYSTEME D’EQUATIONS LINEAIRES ( A*X = B )
PAR L’ALGORITHME DE GAUSS
1° ) Principe de la méthode
Soit le système de N équations linéaires à N inconnues ,
A 1,1 . X1 + A 1,2 . X2 + A 1,3 . X3 + … + A 1,N . XN = B1
A 2,1 . X1 + A 2,2 . X2 + A 2,3 . X3 + … + A 2,N . XN = B2
A 3,1 . X1 + A 3,2 . X2 + A 3,3 . X3 + … + A 3,N . XN = B3
…….
….
……
A N,1 . X1 + A N,2 . X2 + A N,3 . X3 + … + A N,N . XN = BN
Où les coefficients A I , J et BI sont donnés et les XI , inconnues .
La méthode de Gauss est la méthode classique de substitution ou de triangulation . La matrice
d’origine est transformée en une matrice triangulaire supérieure droite de la manière suivante :
 A partir de la 1ère équation , on extrait l’expression de X1 en fonction des autres inconnues .
Ensuite , dans toutes les équations suivantes , on remplace X1 par cette expression . On obtient alors un
système linéaire d’ordre N dans lequel tous coefficients de X1 sont nuls , sauf dans la 1ère équation .
 On répète ce processus sur les N – 1 autres inconnues pour obtenir finalement un système linéaire
triangulaire .
 On sait résoudre un tel système .
21
EXEMPLE
Soit le système de 3 équations linéaires à 3 inconnues suivant :
A 1,1 . X1 + A 1,2 . X2 + A 1,3 . X3 = B1
A 2,1 . X1 + A 2,2 . X2 + A 2,3 . X3 = B2
A 3,1 . X1 + A 3,2 . X2 + A 3,3 . X3 = B3
 Substitution de X1
A1,2
A1,3
B
A1,1 s’appelle le premier pivot .
X1 
.X 2 
.X 3  1
A1,1
A1,1
A1,1
On pose ,
A1(,22) 
A1,2
A1(,23) 
;
A1,1
( 2)
A1,3
A1,1
( 2)
B1( 2) 
et
B1
A1,1
( 2)
( 2)

( 2)
( 2)
1ère équation  X1  A1,2 .X 2  A1,3 .X 3  B1
 X1  B1  A1,2 .X 2  A1,3 .X 3
On remplace X1 par cette expression dans les équations suivantes :

( 2)
2ème équation  A 2,1. B1
A
2, 2

3,2


 A 2,1. A1(,22) .X 2  A 2,3  A 2,1. A1(,23) .X 3  B 2  A 2,1.B1( 2)

( 2)
3ème équation  A 3,1. B1
A

 A1(,22) .X 2  A1(,23) .X 3  A 2,2 .X 2  A 2,3 .X 3  B 2 


 A1(,22) .X 2  A1(,23) .X 3  A 3,2 .X 2  A 3,3 .X 3  B 3 


 A 3,1. A1(,22) .X 2  A 3,3  A 3,1. A1(,23) .X 3  B 3  A 3,1.B1( 2)
On obtient le système suivant :
X1
A 1(,22) .X 2 +
+
A
A

. X
2,2
 A 2,1. A1(,22) . X 2

3, 2
 A 3,1. A1(,22)

( 2)
2
( 2)
On pose : A 2,2  A 2,2  A 2,1.A1,2
A
A
A1(,23) . X 3  B1( 2)

 .X
2,3
 A 2,1. A1(,23) . X 3  B 2  A 2,1.B1( 2)
3,3
 A 3,1. A1(,23)
3
 B 3  A 3,1.B1( 2)
; A (22,3)  A 2,3  A 2,1.A1(,23) ; A 3(2,2)  A 3,2  A 3,1.A1(,22)
A 3( 2,3)  A 3,3  A 3,1.A1(,23) ; B(22)  B 2  A 2,1.B1(2) ; B3(2)  B3  A 3,1.B1(2)
On obtient alors le système suivant :
X1  A1(,22) .X 2  A1(,23) .X 3  B1( 2)
A (22,2) .X 2  A (22,3) .X 3  B (22)
A 3( 2,2) .X 2  A 3( 2,3) .X 3  B 3( 2)
 Substitution de X2
( 2)
La première équation reste inchangée . La 2ème équation est divisée par le coefficient A 2,2 de X2 .
A (22,2) est appelé le 2ème pivot .
On obtient
X2 
3ème
A (22,3)
B (22)
A (22,3)

.X 3 
 X2 
A (22,2) A (22,2)
 (2) A (2)


2,3
( 2)
( 2)
( 2)  B 2
équation  A 3,2 .

.X 3  + A 3,3 . X 3  B 3
(
2
)
(
2
)
 A 2,2 A 2,2



A (22,2)
.X 3 
B (22)
A (22,2)
22

( 2)

A ( 2) 
 ( 2)
( 2)
( 2) B 2
( 2) 2,3 
 A 3,3  A 3,2 . (2)  . X 3 = B3  A 3,2 . (2)

A 2,2
A 2,2 


A (23,3) 
On pose
B (23)
A (22,3)
A (22,2)

B (22)
A (22,2)
A ( 2)
(3)
( 2)
( 2) 2,3
; A 3,3  A 3,3  A 3,2 .
A (22,2)
( 2)
(3)
( 2)
( 2) B 2
; B3  B3  A 3,2 .
A (22,2)
On obtient alors , finalement le système triangulaire suivant :
X1  A1(,22) .X 2
 A1(,23) .X 3  B1( 2)
X2
 A (23,3) .X 3  B (23)
A 3(3,3) .X 3  B 3(3)
On sait résoudre ce système triangulaire .
2° ) Exemple numérique
Soit le système de 3 équations linéaires à 3 inconnues suivant :
2 . X1
X1
– X1
+ 3 . X2 – X3
+
X2 + 2. X3
–
X2 + X3
= 1
= 2
=–1
3
1
1
1 3
1
= 1  X1  .X 2  .X 3 
 X1   .X 2  .X 3
2
2
2
2 2
2
1
5
3
1
1 3

X1 + X2 + 2. X3 = 2    .X 2  .X 3   X 2  2.X 3  2   .X 2  .X 3 
2
2
2
2
2 2

1
1
1
1
1 3

.X 2  .X 3  
– X1 – X2 + X3 = – 1     .X 2  .X 3   X 2  X 3  1 
2
2
2
2
2 2

2 . X1
+ 3 . X2
–
X3
D’où ,
3
1
1
X1  .X 2  .X 3 
2
2
2
 X 2  5. X 3  3
X 2  X3
 1
 X 2  5. X 3  3  X 2  3  5 . X 3  X 2  5 . X 3  3
X 2  X3
 1   3  5. X 3   X 3  1  6.X 3  2
D’où ,
3
1
1
X1  .X 2  .X 3 
2
2
2
X 2  5 . X 3  3

1

0
0



6.X 3  2
C’est un système triangulaire dont on sait résoudre :
La solution est
1
4
8

X 3  ; X 2   ; X 1  
3
3
3

23
3
2
1
0
1
 1 
   X1   
2    2 
 5  .  X 2     3
6   X 3   2 

 
TABMATAlgo2011B / AlgoLIER2011 / Bureau / Toshiba1
ALGORITHMIQUE ET PROGRAMMATION
( Langage Pascal)
Pages
NOTION D’ALGORITHMIQUE
1°) Définitions d’un algorithme d’un programme et d’une instruction .
2°) Qualités d'un algorithme ou d'un programme.
3°) Méthodologie
4°) Structures rencontrées en algorithme
5°) Syntaxe général d’un algorithme ( ou d’un programme )
6°) Définition d’une constante et d’une variable en programmation
7°) Symbole d’affectation ( ou d’assignation ) en algorithme
8°) Définition d’une expression en programmation
9°) Définition du type d’une variable .
10°) Définition d’un tableau .
NOTION DE PROGRAMMATION : TURBO PASCAL
1°) Syntaxe générale d’un algorithme
2°) Manipulation des nombres.
a ) Le type entier.
b ) Le type réel.
4°) Manipulation des chaînes de caractères .
a ) Le type caractère.
b ) Le type chaîne.
STRUCTURE DE CHOIX ( OU STRUCTURE CONDITIONNELLE ).
1°) Définition
2°) La structure alternative.
a ) Forme générale d’une structure alternative .
b ) Traduction en langage Pascal .
3°) Expression logique
4°) Variable booléenne
5°) Le choix multiple ( ou sélection ) .
a ) Définition
b ) Forme générale d’une sélection
STRUCTURES REPETITIVES .
1°) Définition
2°) La boucle " tant que ".
a ) Algorithme
b ) Traduction en langage Pascal
3°) La boucle " pour".
a ) Algorithme..
b ) Traduction en langage Pascal
3°) La boucle " répéter ... jusqu'à ".
a ) Algorithme..
b ) Traduction en langage Pascal
DECLARATION DU TYPE TABLEAU EN PASCAL
FONCTIONS ET PROCEDURES
I –. FONCTION
a ) Définition
b ) Algorithme
c ) Traduction en Pascal
d ) Appel de la fonction
II –. PROCEDURE
a ) Définition
b ) Déclaration d’une procédure
c ) Appel de la procédure
d ) Algorithme
24
2
2
2
2
2
2
3
3
3
4
4
5
5
5
5
6
6
6
6
7
7
7
7
7
7
8
8
8
8
9
9
9
9
9
10
10
10
11
11
11
11
12
12
12
12
12
12
14
14
14
14
14
Pages
15
16
16
16
16
16
17
e ) Traduction en Pascal
RECURSIVITE
1°) Définition
2°) Exemple numérique simple
a ) Méthode classique
b ) Méthode récursive
3°) Exercice d’application
APPLICATION : ANALYSE NUMERIQUE
18
SEPARATION DES RACINES DE L’EQUATION ALGEBRIQUE F(X) =0
Principe de la méthode
METHODE DES APPROXIMATIONS SUCCESSIVES POUR LA RESOLUTION DE L’EQUATION F(X) = 0
1°) Principe de la méthode
2° ) Organigramme
RESOLUTION NUMERIQUE D’UN SYSTEME TRIANGULAIRE
1° ) Principe de la méthode
2° ) Exemple numérique
3° ) Organigramme
RESOLUTION D’UN SYSTEME D’EQUATIONS LINEAIRES (A*X=B) PAR L’ALGORITHME DE GAUSS
1° ) Principe de la méthode
2° ) Exemple numérique
18
18
18
18
19
20
20
20
21
21
21
23
TABLE DES MATIERES
24
-------------------------------------
25
Téléchargement