Vous êtes sur la page 1sur 52

Anne Universitaire 2006/2007

UNIVERSITE MOULAY ISMAIL


Facult des Sciences et Techniques
DErrachidia
Dpartement de Mathmatiques

Filire P.C et G.E

Polycopie des cours de programmation


(Turbo-Pascal)
(M124/2 et M144/2 )

Prsent par :

Mohamed Derouich
Table des matires

1 Structure des ordinateurs 3


1.1 Systme informatique . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 Introduction : . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 Systme informatique : . . . . . . . . . . . . . . . . . 3
1.1.3 Le matriels informatique : . . . . . . . . . . . . . . . . 5
1.2 Systme dexploitation : . . . . . . . . . . . . . . . . . . . . . 6
1.2.1 Dfinitions et concepts : . . . . . . . . . . . . . . . . . 6
1.2.2 Les fonctions dun systme dexploitation : . . . . . . . 6

2 Gnralits sur linformation 8


2.1 Dfinition de linformatique . . . . . . . . . . . . . . . . . . . 8
2.2 Linformation . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 Le codage de linformation . . . . . . . . . . . . . . . . . . . . 9
2.3.1 Dfinitions : . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.2 Reprsentation des donnes . . . . . . . . . . . . . . . 9
2.3.3 Passage de la base 10 vers une base quelconque . . . . 12
2.3.4 Les oprations en binaire . . . . . . . . . . . . . . . . 12

3 Introduction la programmation Pascal 14


3.1 Introduction : . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2 Langages de programmation . . . . . . . . . . . . . . . . . . . 14
3.2.1 Dfinitions . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2.2 Langage Machine Interne (LMI) . . . . . . . . . . . . . 15
3.2.3 Langage Machine Externe (LME) . . . . . . . . . . . . 15
3.2.4 Langages Evolus (LE) : . . . . . . . . . . . . . . . . . 15
3.2.5 Exemples de langages volus (les plus connus) . . . . 16
3.2.6 Systmes de traduction : . . . . . . . . . . . . . . . . 16
3.3 Introduction la programmation avec Turbo-PASCAL . . . . 16
3.3.1 Types de donnes : . . . . . . . . . . . . . . . . . . . . 17
3.3.2 types de donnes scalaires : . . . . . . . . . . . . . . . 17
3.3.3 Identification dobjets : . . . . . . . . . . . . . . . . . . 19

1
3.3.4 Dclaration de constantes et de variables scalaires : . . 20
3.3.5 structure gnrale, d programme : . . . . . . . . . . . 22
3.4 Outils de communication . . . . . . . . . . . . . . . . . . . . . 23
3.4.1 Expression scalaires : . . . . . . . . . . . . . . . . . . . 23
3.4.2 Instructions de base : . . . . . . . . . . . . . . . . . . . 25
3.4.3 Affichage et saisie de donnes : . . . . . . . . . . . . . 26

4 Instructions de rptition et de test 29


4.1 Instructios de rptition : . . . . . . . . . . . . . . . . . . . . . 29
4.1.1 While... do... : . . . . . . . . . . . . . . . . . . . . . . . 29
4.1.2 Repeat... until... : . . . . . . . . . . . . . . . . . . . . . 30
4.1.3 For ... Do ... : . . . . . . . . . . . . . . . . . . . . . . . 31
4.2 Instructions conditionnelles : . . . . . . . . . . . . . . . . . . . 32
4.2.1 If ... Then ... Else ... . . . . . . . . . . . . . . . . . . . 32
4.2.2 Cose ... of ...END : . . . . . . . . . . . . . . . . . . . . 33

5 Types de donnes structurs. 35


5.1 Types scalaires dfinis par le programmeur : . . . . . . . . . . 35
5.1.1 Type intervalle : . . . . . . . . . . . . . . . . . . . . . 35
5.1.2 Type numr : . . . . . . . . . . . . . . . . . . . . . . 36
5.2 type tableau (ARRAY) : . . . . . . . . . . . . . . . . . . . . . 36
5.3 Chane de caractres (string) : . . . . . . . . . . . . . . . . . . 38
5.4 Type Enregistrement (RECORD) : . . . . . . . . . . . . . . . 39
5.5 Ensemble(SET) : . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.6 Fichier(File) : . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

A Exemples du calcul numrique 43


A.1 Interpolation dune fonction continue par un polynme . . . . 43
A.2 Intgration numrique . . . . . . . . . . . . . . . . . . . . . . 45
A.2.1 Formule du trapze . . . . . . . . . . . . . . . . . . . . 45
A.2.2 formule de Simpson . . . . . . . . . . . . . . . . . . . . 47
A.3 Mthode de Newton . . . . . . . . . . . . . . . . . . . . . . . 48

2
Chapitre 1

Structure des ordinateurs

1.1 Systme informatique


1.1.1 Introduction :
Linformatique est la science de traitement rationnel, notamment laide
de machine automatique, de linformation considre comme le support des
connaissances et des communications. En Anglais on trouve les termes : In-
formatics, computer Science et Electronic Data Processing (traitement lec-
tronique des donnes).

1.1.2 Systme informatique :


Pour comprendre comment fonctionnent un ordinateur on va tablir une
analogie avec la faon dont travail lhomme . prenons comme exemples un
employ de bureau :
. Lemploy sinstalle au centre de son bureau (Unit Centrale de traite-
ment).
. On lui remet dans une corbeille le travail faire (information en entre).
. Dans une autre corbeille il devra mettre le travail fait (Information en
sortie).
Ainsi nous pouvons donc considrer lemploy comme un systme de traite-
ment qui lon remet des informations en entre et qui traite ces informations
et nous restitue des informations en sortie.

3
? Pour effectu sont travail lemploy peut avoir besoin de raliser des
calculs, il dispose dune calculatrice (unit de calcul).
? Pour ne pas oublier ce quon lui demande, il note sur brouillon de ins-
tructions quon lui demande reus du directeur (cest le programme).
Il note certain information sur les donnes quil va traiter (Mmori-
sation des instructions excuter).
? Il a besoin de certain informations comme les prix des produit qui
existent sur des catalogues volumineux, les adresses des clients qui
existent sur des rpertoires classs, .... (Mmoires auxiliaires)

4
1.1.3 Le matriels informatique :
Dans lexemples cit on peut distingu deux choses : Lemploy de bureau
et les instruction excuter par lemploy (ce quon lui demande).
Ainsi le systme informatique est composer de deux parties :
Le matriels : constitus de lunit centrale et les organes dentr/sortie.
Les logiciels : Ce sont des programmes (ensembles dinstruction que la
machine doit excuter).
1. La partie matrielle (Hardware)
i) Lunit centrale ou le Processeur (En anglais CPU Central Proces-
sing Unit) cest dans cette partie que linformation est traite, lunit
central est constitue de deux organes :
Lunit arithmtique et logique : qui permet deffectuer des opra-
tions sur les donnes telles que Addition, Soustraction, Multiplica-
tion, Division et les opration logique .
Unit de commande : Dirige toutes les oprations qui se droulent
dans lordinateur .
ii) Une Mmoire centrale contenant les programme excuter et les
donnes traiter.
iii)Les organes priphriques : ils comprennent :
Les organes dentres comme : clavier, la souris, lecteur de disquettes,...
Les organes de sorties comme : qui fournis des rsultats comme :
Ecran, Imprimante, haut-parleur, ....
2. Partie logiciels
i) Logiciels : est un (ensemble) de programme(s) qui permet(tent)
dutiliser la partie matriels de lordinateur , on distingues deux fa-
milles de logiciels :
ii) Logiciels de base :Il permet la gestion du matriels (lordinateur
et ses priphriques) . il est gnralement fourni par le constructeur,
parmis les logiciels de base on trouve les systmes dexploitations (Dos,
Windows, Linux,..) , les compilateur des langages (Pascal, C,C++,...)
iii) Logiciels dapplications : logiciels outils (Traitement de texte Ta-
bleur,..) ou toutes programmes dun utilisateurs.

5
1.2 Systme dexploitation :
1.2.1 Dfinitions et concepts :
Sans ses logiciels un ordinateur nest quun mtal, grce ses logiciels, il
peut mmoriser, traiter et restituer des informations.
Les logiciels se rpartissent en deux grandes catgories : les programmes
systmes qui permettent le fonctionnement de lordinateur et les programmes
dapplications qui rsolvent les problmes des utilisateurs.
Le systme dexploitation et le programme fondamental des programmes
systmes, il contrle les ressources de lordinateur comme la mmoire, lunit
centrale, le disque dur, limprimante, et fourni la base sur laquelle seront
construit les programmes dapplications.

1.2.2 Les fonctions dun systme dexploitation :


Les fonctions majeurs dun systme dexploitation sont la gestion des res-
sources (Mmoires, C.P.U, fichiers partags, ...), gestion des donnes, gestion
des tches et fournir une interface de communication entre lutilisateur et
lordinateur.

6
Gestion des ressources : Il sagit de lallocation et libration de res-
sources telle que le temps C.P.U, Mmoire Central, Le matriel dentr
sortie, afin doptimiser lutilisation de ses ressources et daccrotre la
disponibilit de lordinateur pour chaque utilisateur.
Gestion des donnes : Il gre les entres et sortis des donnes et leurs
emplacements, sauvegarde et rcupration de linformation et lorgani-
sation de celle-ci sur disque.
Gestion des tches : Une tche et un ensemble de programmes et de
donnes associes, le systme contrle les taches en excution
Fourni une interface lutilisateur : Linterface est la partie du logiciel
qui communique avec lutilisateur est Il fournit usager un ensembles
de commande qui contrle le matriel, cette interface prend en gnral
trois forme :
Ligne de commande : lutilisateur doit taper la commande ex-
cuter en utilisant un langage de commande bien dfinit.
Interface Menu : permet lutilisateur de slectionn une com-
mande de menus, la slection se fait par souris ou clavier.
Interface graphique : gnralement est constitue des lments sui-
vantes : Icne : Image graphique qui reprsente un objet (Fichier,
Rpertoire,) Pointeur graphique : Pour slectionner les icnes, les
commandes et pour dplacer les objets sur cran. Menu droulant,
Fentre, boites de dialogue,...

7
Chapitre 2

Gnralits sur linformation

2.1 Dfinition de linformatique


Le mot informatique a t propos par Philippe Dreyfus en 1962 ; cest
un mot-valise, form dinformation et dautomatique. Linformatique cest
donc une automatisation de linformation, plus exactement un traitement
automatique de linformation. Linformation dsigne ici tout ce qui peut tre
trait par lordinateur (textes, nombres, images, sons, vidos,...). Loutil uti-
lis pour traiter linformation de manire automatique sappelle un ordina-
teur. Ce nom a t propos par Jacques Perret (professeur de Latin La
Sorbonne) en 1954. Ce mot tait lorigine un adjectif qui signifiait "qui
met de lordre", "qui arrange". Langlais, plus restrictif, utilise le terme de
computer qui peut se traduire par calculateur, machine calculer. Linfor-
matique dsigne donc un concept, une science, tandis que lordinateur est un
outil, une machine conue pour raliser des oprations informatiques

2.2 Linformation
Information est tout forme de donnes reprsentant un ou plusieurs rensei-
gnement . On distingue gnralement diffrents types dinformations : textes,
nombres, sons, images, etc .... Linformation sous sa forme brute, ne peut tre
directement trait est analyse par une machine logique telle que lordinateur.
Alors pour remdier ce problme on la traduit dans une alphabet propre
ce dernier. Cest lopration de codage.

8
2.3 Le codage de linformation
2.3.1 Dfinitions :
3 Le codage dune information consiste tablir une correspondance
entre la reprsentation externe (habituelle) de linformation ( ex : le
caractre A ou le nombre 36), et sa reprsentation interne dans la ma-
chine, qui est une suite de 0 et 1.
3 Le transcodage est le passage dun code un autre pour la mme
information.
3 Le BIT signifie "binary digit", cest--dire 0 ou 1 en numrotation
binaire. Cest la plus petite unit dinformation manipulable par une
machine. On peut le reprsenter physiquement :
* par une impulsion lectrique qui correspond la valeur 1 ou une
absence dimpulsion qui correspond la valeur 0.
* par des alvoles ou des espaces dans une surface (CD-ROM)
* grce des bistables, cest--dire des composants qui ont deux
tats dquilibre (un correspond ltat 1, lautre 0)
3 Loctet est une unit dinformation compose de 8 bits. Il permet de
stocker un caractre, tel quune lettre, un chiffre ...
i) Le kilo-octet (kO) : 210 = 1024 octets
ii) Le mega-octet (MO) : 220 = 1048576 octets
iii) Le giga-octet (GO) : 230 = 1073741824 octets = 1024 MO
iv) Le tera-octet (TO) : 240 = 1099511627776 octets = 1024 GO

2.3.2 Reprsentation des donnes


la base 10 :
Habituellement, on utilise la base 10 pour reprsenter les nombres, cest-
-dire que lon crit laide de 10 symboles distincts, (les chiffres 0 1 2 3 4 5
6 7 8 9).
Donc pour un nombre x = an an1 a1 a0 avec ai {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
n
X
on a : x = an an 1 a1 a0 = ai 10i
i=0

cas gnrale :
En gnrale dans une base b, on utilise b chiffres. Notons ai la suite des
chiffres utiliss pour crire un nombre x = an an1 a1 a0 avec ai < b alors

9
n
X
x est donn par : x = an an 1 a1 a0 = ai bi
i=0
a0 est le chiffre de poids faible, et an le chiffre de poids fort.

le code binaire pur (CBP) :


On utilise la reprsentation binaire car elle est simple, facile raliser
techniquement laide de bistable (systme deux tats raliss laide de
transistors). Enfin, les oprations arithmtiques de base sont facile exprimer
en base 2. En binaire on a : b = 2 et ai {0, 1} : 2 chiffres binaires, ou bits.

le code hexadcimal :
En notation hexadcimale on dispose de 16 symboles : 10 chiffres 0,1, ,9
et 6 symboles A,B,,F . Donc en hexadcimal, b=16,
ai {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F } (avec A reprsente 10, B 11,
et F 15).

Exemples 2.3.1 :
En base 10 :
(1996)10 = 1 103 + 9 102 + 9 101 + 6 100
En base 2 :
(101)2 = 1 22 + 0 21 + 1 20 = (5)10
En base Hexadcimal :
(AB)16 = 10 161 + 11 160 = 160 + 11 = (171)10
Remarque 2.3.1 :
La notation ()b indique que le nombre est crit en base b.

Le code ASCII
La mmoire de lordinateur conserve toutes les donnes sous forme nu-
mrique. Il nexiste pas e mthode pour stocker directement les caractres.
Chaque caractre possde donc son quivalent en code numrique : cest le
code ASCII (American Standard Code for Information Interchange - tradui-
sez " Code Americain Standard pour lEchange dInformations"). Le code
ASCII de base reprsentait les caractres sur 7 bits (cest--dire 128 carac-
tres possibles, de 0 127). Le code ASCII a t tendu 8 bits (un oc-
tet) pour pouvoir coder plus de caractres (on parle dailleurs de code ASCII
tendu...). Ce code attribue les valeurs 0 255 (donc codes sur 8 bits, soit
1 octet) aux lettres majuscules et minuscules, aux chiffres, aux marques de
ponctuation et aux autres symboles(voir le tableau de code ASCII)

10
11
Les codes 0 31 ne sont pas des caractres. On les appelle caractres
de contrle car ils permettent de faire des actions telles que :
retour la ligne (CR) ;
Bip sonore (BEL)
Les codes 65 90 reprsentent les majuscules ;
Les codes 97 122 reprsentent les minuscules.

Remarque 2.3.2 :
il suffit de modifier le 5me bit pour passer de majuscules minuscules, cest-
-dire ajouter 32 au code ASCII en base dcimale.

2.3.3 Passage de la base 10 vers une base quelconque


pour passer de base 10 vers une base quelconque on procde par divisions
successives. On divise le nombre par la base , puit le quotient par la base,
et ainsi de suite jusqu a lobtention dun quotient nul. la suite des restes
obtenus correspond aux chiffres dans la base vise,

Exemple 2.3.2 : soit convertir (44)10 vers la base 2 :

44 = 22 2 + 0 = a0 =0
22 = 11 2 + 0 = a1 =0
11 = 5 2 + 1 = a2 =1
5=22+1 = a3 =1
2=12+0 = a4 =0
1=02+1 = a5 =1

Donc : (44)10 = (101100)2

2.3.4 Les oprations en binaire


Laddition en binaire :
Laddition en binaire se fait avec les mmes rgles quen dcimale : On
commence additionner les bits de poids faible (les bits de droite) puis on a
des retenues lorsque la somme de deux bits de mmes poids dpasse la valeur
de lunit la plus grande (dans le cas du binaire : 1) ; cette retenue est reporte
sur le bit de poids plus fort suivant... Par exemple : 01101 + 01110 = 11011
(dcimal 13 + 14 = 27)

12
0 1 1 0 1
+ 0 1 1 1 0
1 1 0 1 1

La multiplication en binaire
La multiplication se fait entre bits de mme poids, avec le mme sys-
tme de retenue quen dcimale. La table de multiplication en binaire est trs
simple : 00 = 0; 01 = 0; 10 = 0; 11 = 1. Par exemple :0110100110 =
10011100 (dcimal 13 6 = 78)

0 1 1 0 1
0 0 1 1 0
0 1 1 0 1 0
0 1 1 0 1
1 0 0 1 1 1 0

13
Chapitre 3

Introduction la programmation
Pascal

3.1 Introduction :
Un ordinateur est une machine qui excute un certain nombre dopra-
tions comme par exemple :
addition, soustraction, multiplication,
afficher les rsultats des oprations sur lcran,
comparer des nombres.
Sa puissance vient du fait quil peut tre programm, cest dire que lon
peut lui donner, lavance, la squence (la suite ordonne) des ordres ef-
fectuer lun aprs lautre. Le grand avantage de lordinateur est sa rapidit.
Par contre, cest le programmeur qui doit TOUT faire. Lordinateur ne com-
prenant que des ordres cods en binaire (le langage machine), et donc pour
faciliter la programmation, des langages dits "volus" ont t mis au point.

3.2 Langages de programmation


Comme pour les langues naturelles (Franais, Anglais, Russe, Chinois,
etc.), il existe un grand nombre de langages de programmation. Certains sont
adapts des domaines particuliers, dautres dpendent de certains types
dordinateurs, etc.

3.2.1 Dfinitions
Dfinition 3.2.1
Un langage de programmation est un symbolisme conventionnel assurant la
communication entre la machine (ordinateur) et lutilisateur. Il possde un

14
vocabulaire bien dfini. On distingue trois types de langage de programma-
tion : langage machine interne, langage machine externe et langage volu.

Dfinition 3.2.2
Un programme est une suite dinstructions lmentaire, qui vont tre ex-
cutes dans lordre par lordinateur. Ces instructions correspondent des
actions trs simples, comme additionner deux nombre, lire ou crire une case
mmoire, etc ...

Dfinition 3.2.3
Un algorithme est la donnes dune suite fini dtape (ltape est une infor-
mation lmentaire, information gnral). A excuter dans un ordre donn
pour rsoudre un problme.

Remarque 3.2.1
1. Un algorithme doit exprime dans un langage compris par le lecteur.
2. un programme est un algorithme exprim dans un langage de program-
mation.

3.2.2 Langage Machine Interne (LMI)


Le langage machine interne est le seul langage qui directement compris
par lordinateur. Ses instructions ne sont rien dautre que des squences de
"0" et de "1".

3.2.3 Langage Machine Externe (LME)


Ce langage possde exactement la mme structuration que le langage ma-
chine interne lexception dune diffrence au niveau de la reprsentation
de ses instructions. Les oprations de ces dernires, dans le langage machine
interne sont reprsentes par des codes hexadcimaux ou binaires, alors que
dans le langage machine externe elles sont symbolises par des mnmonique
significatifs.

Exemple 3.2.1
Addition := ADD ; soustraction : = SUB ; Comparaison :=CMP.

3.2.4 Langages Evolus (LE) :


Ils sont appels aussi langage de haut niveau. Leur degr dvolution est
maximum (trs proche des langage naturels. Les symboles mis en jeu, sont
plus explicite que ceux de langage machines antrieurement vus.

15
3.2.5 Exemples de langages volus (les plus connus)
Fortran : ces le plus ancien des langage volu. (domaines scienti-
fiques)
Basic : il a t labor dans un cadre pdagogique. (simple et trs li-
mit)
Pascal : langage structur, efficace pour les structures arborescentes (
en hommage au philosophe et mathmaticien franais Blaise Pascale)
C : il ressemble beaucoup au langage Pascal mai il est trs puissant et
ouvert par rapport ce dernier. (efficace pour le traitement des chanes
de caractres)
Visual Basic : ( interfaces graphiques)
Java :(efficace pour des programmes en rapport avec Internet)

3.2.6 Systmes de traduction :


Assembleur :
Cest un programme qui convertit ou traduit une squence dunstrictions
(programme du LME en un programme du LMI (directement excutable par
lordinateur)

Compilateur :
Le compilateur est un programme important charg de traduire un pro-
gramme crit en LE (programme source) en un autre exprim en Lm (pro-
gramme objet). Lordinateur , par la suit, naurait excuter que le pro-
gramme objet.

Interprteur :
linterprteur possde une fonction presque analogue celle du compila-
teur sauf quil traduit et excute le programme instruction par instruction
N.B :
Le compilateur par opposition linterprteur, traduit tout le programme
avant son excution.

3.3 Introduction la programmation avec Turbo-


PASCAL
Le langage Pascal offre une trs bonne approche de la programmation.
Trs utilis dans le milieu scolaire et universitaire, il permet dacqurir des

16
notions solides que lon retrouve dans tous les autre langage Le PASCAL est
un langage compil, cest dire quil faut :
1. entrer un texte dans lordinateur ( laide dun programme appel EDI-
TEUR),
2. le traduire en langage machine (cest dire en codes binaires compr-
hensibles par lordinateur) : cest la compilation
3. et ventuellement lexcuter sur machine.

3.3.1 Types de donnes :


Une variable est une zone dans la mmoire vive de lordinateur, dote
dun nom et dun type. Le nom de la variable permet daccder au contenu
de la zone mmoire ; le type spcifie la nature de ce qui peut tre stock dans
la zone mmoire (entier, rel, caractre, etc..). Pascal supporte quatre types
de variables de base. Ces types sont :
1. integer (entier)
2. char (caractre)
3. boolean (boolen)
4. real (rel)

3.3.2 types de donnes scalaires :


entiers :
On appelle variable entire, une variable dont le contenu est une valeur
entire (dont lcriture ne ncessite pas lemploi de virgule). En turbo-pascal,
on distingue, pour les entiers, cinq types diffrent : INTEGER, LONGINT,
SHORTINT, BYTE et WORD. Et chaque type dfinit un ensemble dentiers
born. Ainsi, les intervalles associs chacun deux sont :

Dsignation Bornes Place en mmoire


Integer [-32 768, 32 767] 2 octets
Byte [0 ,255] 1 octet
Word [0 , 65535] 2 octets
Shorting [-128 , 127] 1 octet
longint [-2147483648 , 2147483647] 4 octets

Les oprations et les fonctions pouvant tre appliques aux entiers sont,
titre dexemple :
1) +, , DIV, M OD, ABS, IN C, DEC, SQR, SU CC, P RED,
2) oprateurs relationnels : >=, <=, >, <, <>, ...

17
Exemple 3.3.1 :
i) 7DIV 2 = 3 (quotient de la division euclidienne ).
ii) 7M OD2 = 1 (le reste de la division euclidienne).
iii) SQR(3) = 9 (le carr de 3)

Rels :
Les rels, en machine, ne sont en fait quun sous-ensemble de lensable
Q des rationnels. Comme pour les entiers , les rels sont regroups selon
leur grandeur, en cinq types : Real, Single, Double, Extended et Comp. Leurs
intervalles respectif sont :

Dsignation Bornes Place en mmoire


real [2.9E-39 , 1.7E38] 6 octets
sigle [1.5E-45 , 3.4E38] 4 octets
double [5.0E-324 , 1.7E308] 8octets
Extended [1.9E-4951 , 1.1E4932] 10 octets
Comp [-2E+063+1, 2E+063+1] 8 octets

Pour ces nombres, on dispose de deux notations, dcimale et scientifique.


*Notation dcimale :
(1) (2) (3)

1. (1)= signe,
2. (2)= partie entire,
3. (3)= partie fractionnaire
4. ()= virgule dcimale

Exemple 3.3.2 : -13.301 ; 205.12 (la mise du signe (+) est facultatif )
*Notation scientifique :
(1) E (2)

1. (1) = Mantisse (ou caractristique ), exprime en notation dcimale,


2. (2) = Exposant (cest un entier) positif ou ngatif de la puissance 10
3. (E) = Cest linitiale de Exposant.

Exemple 3.3.3 :
i) 6.1E 10 = 6.1 1010 = 0.00000000061
ii)1.34E5 = 1.34 105 = 134000

18
Ces nombres rels peuvent faire lobjet doprandes pour les opration sui-
vantes :
ABS, SQR, SQRT, SIN, COS, ARCT AN, LN, EXT, ROU N D, T RU N C, <=
, >=, >, <, ....

caractres (CHAR) :
dclaration : VAR liste de variables : CHAR ;
ces variables contiennent UN caractre.CHAR est le type reprsentant tous
les caractres du code ASCII(lettres, chiffres,...). Comme fonctions oprant
sur les CHAR,on cite : ORD, P RED, SU CC, CHR,

Exemple 3.3.4 :
- ORD (caractre) = code ASCII de ce caractre.
- CHR (caractre) = caractre quivalent ce code
- PRED (caractre) = caractre prcdent
- SUCC (caractre) = caractre suivant

Boolens :
Une variable logique ou boolenne ne peut prendre que deux valeurs :TRUE
et FALSE.
Des oprateurs logiques, on rappelle :
* Les oprateurs relationnels(<,>,>=,<=,<>)
* La conjonction AND
* La conjonction OU
* La ngation NOT

Exemple 3.3.5 : Lexpression, (condition 1) AND (condition 2), est TRUE


si (condition 1) et (condition 2) sont simultanment TRUE sinon elle est
FALSE.

Remarque 3.3.1 :
Les cas restants des type scalaires, seront voqus aux prochains chapitres.

3.3.3 Identification dobjets :


Le programmeur va devoir nommer tous les objets manipul dans son
programme. Ce nom est dit identificateur.
En Turbo pascal, on distingue trois catgories didentificateur : les mots cls
rservs (MCR), les mots cls standards (MCS) et les identificateurs propres
lutilisateur (MU).

19
Mots cls rservs : Ces mots sont propres au langage et ne peuvent
en aucun cas tre redfinis par lutilisateur pour son propre intrt
(identification de ses propres objets ).
Exemple : Program, TYPE, VAR, FUNCTION,PROCEDURE, LA-
BEL, BEGIN, END,...
Mots cls standards : Il sagit de mots prdefinits ; cependant, il
nest pas compltement interdit au programmeur de les adopter pour
reprsenter dautre objet. Cette possibilit est dconseille afin dviter
toute sorte de confusion au sien dun programme.
Exemple : ABS, MOD, DIV,....
Identification dfinis par le programme : Ce sont des identifi-
cateurs que le programmeur, selon la nature de sont programme, peut
introduire pour nommer des objets tels que programme, types, variables,
constantes, fonctions, procdures ....chaque identificateur doit respecter
les conditions suivantes :
son caractre initial doit tre une lettre alphabtique
il ne peut comprendre que des caractre alphanumriques et le trait
de soulignement(_ ).
seuls les 63 premiers caractres qui seront tenus en compte.
Exemple 3.3.6 :
Noms validation
Begin non valide( car cest rserv )
3SOT non valide (lettre initiale est 3)
SOT34AB valide
Dollar $ non valide
I LHAM non valide ( il y a un blanc)
Terre +ciel non valide (il y a + )
jour_nuit valide
Jour-nuit non valide
rayon non valide (il y a )

Remarque 3.3.2 :
Si les 63 premiers caractres sont identiques pour deux identificateurs alors
ces derniers sont exactement gaux cest--dire ils reprsentent le mme objet.

3.3.4 Dclaration de constantes et de variables sca-


laires :
En Turbo Pascal (T.P), tout objet (variable ou constante), avant de se
permettre son emploi au sein dun programme, il est ncessaire de le dclarer.

20
dclartion de constantes :
Elle se fait grce au mot cl rserv "CONST " de faon suivante :
CONST
<nom de la constante 1> = sa valeur ;
....
....
<nom de la constante n> = sa valeur ;

Exemple 3.3.7 :

CONST
PI = 3.14 ; {constante relle}
Alpha = 0.22 ; {constante relle}
Beta = A; {constante caractre}
Nom = ASMAE ; {constante chane}
ENT = 19 ; {constante entire}

Dclaration de variables :
Cette dclaration consiste prciser le nom et le type de chaque variable.
Elle sentame toujours par le mot rserv "VAR" et se fait de la manire
illustre ci-dessous :
VAR
<nom de la variable> : type ;
{ou dans le cas de plusieurs variable de mme type}
<nom de la variable1>,<nom de la variable2>....: type ;

Exemple 3.3.8 :
VAR
I, J, R :integer ;
A, B, C : real ;
X, Y, Z : CHAR ;
LG, KX, M, N : BYTE ;
Reponse, Etat,L: BOOLEAN ;

Remarque 3.3.3 :
En Turbo-Pascal, on ne diffrencie pas entre une lettre en majuscule et son
quivalent en minuscule.

21
3.3.5 structure gnrale, d programme :
En gnrale, un programme crit en Turbo-Pascal, possde la structure
syntaxique suivante :

* Lentente du programme nom du programme ;




[ CONST {dclaration de constantes}]


[ TYPE {dclaration de types}]

* Bloc De dclaration [ VAR {dclaration de variables}]



[FUNCTION {dclaration de fonctios}]


[PROCEDURE {dclaration de procedures}]


BEGIN



instruction1 ;


Instructions excutables instruction2 ;
*
ou corps du programme
... ...





instructionn ;

END.
N.B :
Les dclarations mises entre crochets ne sont quoptionnelles ; autrement dit
leur emploi dpend des besoins de lutilisateur en matire de donnes.
Un programme est compos, comme illustr ci-dessus, de trois parties dis-
tinctes :
* lentte :comprend le nom du programme.
* Le bloc de dclaration : Toute dclaration effectue doit figurer lin-
trieur de ce bloc.
* Le bloc dinstructions excutables : Ce bloc, dlimit par begin et end,
comporte lensemble des instructions qui ralisent lobjectif du programme.

Exemple 3.3.9 : un programme simple qui affiche les mots Bonjour. Com-
ment allez-vous ? sur lcran.
N.B : Le mot-cl writeln crit le texte sur lcran.
program MONPREMIER ;
begin
writeln (Bonjour. Comment allez-vous ?)
end.

Remarque 3.3.4 :
1. Si on a utiliser des units, on les appelle directement aprs len-tte
par la clause uses, comme suit : USES nom de lunit 1, nom de
lunit 2, ... ;
2. Tout commentaire est mis entre accolade { ...} ou entre (* ... *) ; il est
ignor lors de la compilation.

22
3. " ;" est appel sparateur dinstructions
4. "." est lindicateur de fin du programme.

Exemple 3.3.10 :

Programme exemp1
CONST
Semaine=7 ;
Mois=30 ;
Electron= -1.6E-19 ;
Ville=ERRECHIDIA ;
Lettre=? ;
VAR
Nbre1, Nbre2, Nbre3 : Integer ;
X, y, z, w, v : Real ;
C : CHAR ;
Answer : Boolean ;
Begin
{programme vide ;}
END.

3.4 Outils de communication


Dans cette partie , on expose quelque instructions ncessaire linstitution
dun pont de communication entre la machine et lutilisateur. De mme, le
droulement dexcution des expressions scalaires sera clairci afin dviter
toute erreur surtout de raisonnement.

3.4.1 Expression scalaires :


Expression arithmtique :
une expression arithmtique est une reprsentation mathmatique consti-
tue doprateur et doprandes arithmtiques (rels ou entiers). Son valua-
tion seffectue en respectant les rgles suivantes :
1. Loprateur le plus prioritaire est le premier tre excut.
2. Si deux oprateurs ont le mme ordre de priorit, alors celui de gauche
est execut le premier.
3. Un oprateur mis entre parenthses, est prioritaire.
Les oprateur aithmques :

23
*, +, - : respectivement la multiplication, laddition et la soustraction
entre reels ou entiers.
/ : La division rlle (ex : 5/2=2.5)
Div : La division entire (ex : 5Div2=2)
MOD : Le reste dune division entire (ex : 5MOD2=1).
Ordre de priorit :
ordre de priorit croissant
-
* / MOD DIV

Exemple 3.4.1 :
Droulement de lvaluation de :
Step1 21/2+4*3 Div 2-5 MOD 4 Div 5
Step2 10.5+4*3 Div 2-5 MOD 4 Div 5
Step3 10.5+12 Div 2-5 MOD 4 Div5
Step4 10.5+6-5 MOD 4 Div 5
Step5 10.5+6-1 Div5
Step6 10.5+6-0
Step7 16.5-0
Step8 16.5

Expressions Boolennes :
Une expression boolenne est une criture logique qui peut prendre la va-
leur True ou bien False. Ses oprateur classs suivant leur ordres de priorit,
sont :

Ordre de priorit :
ordre de priorit croissant
-
<=, >=, OR, XOR AND NOT (...)
<, >,
=, <>,

Exemple 3.4.2 :
(X=4) OR (X >= 0) AND (Y <= 0)

Remarque 3.4.1 :

? La rgle considre pour lvaluation des expressions arithmtique reste


valable pour les expressions boolennes.
? Pour rendre plus prioritaire une opration. Il suffit de lencadrer par
des parenthses.

24
Priorit des oprateurs :
On classe les diffrents oprateurs par ordre de priorit, les oprateurs de
plus forte priorit tant raliss avant ceux de plus faible priorit. Voici la
table des priorit classes par ordre dcroissant, les oprateurs sur une mme
ligne ayant une priorit gale.

1) ( ) fonction( )
2) + - not
3) * / div mod and
4) + - or
5) = <> < <= >= >

3.4.2 Instructions de base :


Affectation :
le signe daffectation en Turbo Pascal est " := " et on a linstruction sui-
vante :

Variable := valeur ;
"valeur" peut-tre une constante, une variable dj affecte ou une expression
valuable. Si le dernier cas se prsente lexpression sera tout dabord value
puis affecte " variable".
N.B : " variable" et "valeur" doivent avoir le mme type lexception dun
cas o on a une valeur de type entier affecte une variable de type rel.
Exemple 3.4.3 :
Program affectation ;
CONST A=32 ;
VAR X,Y,Z : real ;
I, j : integer ;
BEGIN
X:=40; {on charge X par 40}
Y:= X-3*A; {Y est affecte par une expression}
I := A ; {I est effectu par une constante }
J := A div 3 ;
Z:= J/I+TRUNC(Y)/3;
....
END.

25
Remarque 3.4.2 :
Quelques fonction prdfinies :
TRUNC : La partie entire dun nombre (TRUNC(14.3)=14)
ROUND : lentier le plus proche dun nombre (Round(0.9)=1)
SQR : le carr dun nombre (SQR(4)=16
SQRT : le racine carre dun nombre (SQRT(4)=2)
EXP : lexponentiel dun nombre (exp(x) = ex )
COS : cosinus
SIN : sinus
ARCTAN : arctangente

3.4.3 Affichage et saisie de donnes :


Lecture(Read) :
Linstruction de lecteur en Turbo Pascal scrit :
Read (VAR1, VAR2,...,VARn) ;
O VAR1, VAR2, ....,VARn sont les noms des variables lire .
A "READ", sajoute une autre instruction dite Readln qui assure la fonction
de READ et le dplacement du curseur la tte de la ligne suivante. Sa
syntaxe est pareille celle de READ :
READLN (VAR1, ....,VARn) ;
Exemple 3.4.4 :
Cas 1 :
READ(X,Y) ; READ(Z ,U,V) ;
A lexcution, on entre la ligne (1) : 3 4 5 6 8 entre ou -
Aprs excution : X=3, Y=4, Z=5, U=6 et V=8.
Cas2 :
READLN(X,Y) ; READ(Z ,U,V) ;
A lexcution : on on tape au clavier :
Ligne(1) : 3 4 5 6 8 entre ou -
Ligne(2) : 10 11 30 entre ou -
Aprs excution : X=3, Y=4, Z=10, U=11 et V=30.
Ecriture(write) :
La syntaxe de cette instruction est donne par :
Write(Message ventuel, Result1,..., Resultn) ;
Avec :
* Result1,..., Resultn sont des rsultats ventuels que, peut-tre, il fau-
drait afficher sur lcran.
* Message ventuel, cest un commentaire accompagnant les rsultats
dans un but dorientation ou dclaircissement.

26
Remarque 3.4.3 :
Les result i (i=1,...,n), aprs excution de linstruction :
"Write(Message ventuel, Result1,..., Resultn) ;", seront affichs lun
cot de lautre.
Si READLN coopre avec READ pour enrichir laction de lecture
alors de mme lcriture est renforce par WRITELN. Celle-ci, aprs
chaque ordre dcriture, fait passer le curseur au dbut de la ligne sui-
vante (retour chariot).

Exemple 3.4.5 :
i) write :

e :=0.1; r:=20.1 ;
write(l"erreur est :,e );
write(le rsultat est :,r );
Aprs excution, on a sur lcran :

Lerreur est 0.10000 E00 Le rsultat est : 20.1000


ii) writeln :
e :=0.1 ;r :=20.1 ;
writeln(l"erreur est :, e );
writeln(le rsultat est :, r );
Aprs excution, on a sur lcran :
Lerreur est 0.10000 E00
le rsultat est : 20.1000

Remarque 3.4.4 :
(
write(chose) ;
1. linstruction "writeln (chose) ; " est quivalente :
writeln ;

2. write (result : n) ; result est entier


n : est le nombre de colonnes quon choisit volontairement pour crire
lentier result.
3. write (result :n :m) ; result est rel
n : nombre de colonnes rserves pour laffichage de la partie entire.
m : le nombre de colonnes rserves pour laffichage de la partie frac-
tionnaire.

27
4. si n, dans le cas entier ou rel, est infrieur au nombre de chiffres de
la partie entire, on lignore.

Exemple 3.4.6 :

Program Essai ;
VAR data1,data2 :real ;
Car :CHAR;
i,j : integer ;
Begin
Writeln(donnez votre premire donne :)
Readln (data1) ;
Write (donnez la deuxime :) ;
Readln(data2) ;
i :=trunc (data1+data2) ;
j :=trunc (data1-data2) ;
car:= CHR(abs(l*j));
write (Le caractre qui a pour code ASCII, ABS(I*J), est : , car)
END.

N.B : le point virgule situ juste avant END est facultatif.

28
Chapitre 4

Instructions de rptition et de
test

Ce sont des instructions qui contrlent le nombre de rptition dexcution


dune ou de plusieurs autre instructions, suite un teste de validation dune
condition cl. On en distingue "while... do ..." , "Repeat ... until ... ", et "For
... do ... ". Aussi, existe-il dautres instruction qui permettent le contrle
dune simple excution (sans rptition) toujours en se rfrant la vrit
dune condition, telles que : "if ... then ... else ...",...

4.1 Instructios de rptition :


4.1.1 While... do... :
Cette instruction signifie "tant que ... faire". Sa syntaxe est donne ci-
dessous par :

While (condition) do (instruction) ;

Elle permet de rpter lexcution de (instruction) tant que (condition)


reste valide

Remarque 4.1.1 :
* instruction peu-tre simple ou compose.
* Une instruction est dite compose si elle est constitue de plusieurs
instruction rassembles entre begin et end, sinon elle est simple.

Exemple 4.1.1 :

Program moyenne ;{ programme qui calcule la moyenne des N premiers entiers}


VAR S,I,N : integer ;

29
M: real;
Begin
Write(Donner N) ;
Readln(N) ;
I :=0 ;S :=0 ;
While I < N do
begin
S : = S + I;
I :=I+1
END ;
M: =S/N;
Writeln ("la moyenne est :,M :2 :3") ;
Readin
END.

4.1.2 Repeat... until... :


Cette instruction signifie rpter .... jusqu . Pour lemployer, on na
qu respecter la syntaxe :

Repeat instruction 1 ;
Instruction 2 ;
...
instruction n ;
until (condition) ;

Elle permet comme le WHILE de rpter lexcution des (instructions) jus-


qu ce que (condition) soit valide (true).

Exemple 4.1.2 :

Program Bonjour ;
VAR C :CHAR ;
Begin
Repeat
Writeln (Good morning Youssef) ;
Readln ;
Writeln (How are you, Happy ? (Y)es or (N)o) ;
Realdln (C) ;
Until C=Y;
Writeln (Off........!!! Im too !) ;

30
Readln
END.

Remarque 4.1.2 :
Quoique les deux instruction "repeat ..." et " while ... " ralisent la mme
tche : rptition, leurs stratgies de manuvre sont diffrentes. En effet,
deux points non communs peuvent tre clairement nots :
1- while, avant toute excution, teste la vrit de sa condition cependant
repeat neffectue ce test qu la fin de chaque rptition.
2- Lors du droulement de lexcution de while, sa condition est True,
alors que pour repeat cest le cas inverse (la condition est False).

4.1.3 For ... Do ... :


Lorsquon sait lavance le nombre de fois lexcution dune ou de plu-
sieurs instructions sera rpte, on fait appel lordre " For... Do... ". Son
emploi se fait comme suit :

For <var entire > : = <valmin> to <valmax> Do


<instruction> ;

ou bien

For <var entire > : = <valmax> downto <valmin > Do


<instruction> ;

Avec :
i) " <var entire > " : cest une variable dite de contrle ; elle doit-tre de
type entier.
ii) " <valmin> " et " <valmax>" : ce sont les valeurs entires, minimale et
maximale de " <var entire > ".
iii) "< instruction>" : peut-tre simple compose.

Exemple 4.1.3 :

Program for-to ;
Uses CRT;
Const Min = 9 ; Max = 15 ;
VAR i,j integer ;
S :real ;
Begin
Clrscr;
S := 0 ;
for i := Min to Max do

31
S := S+1/i ;
J := 30;
for i := 20 to j do
begin
writeln (You are welcome in our world !) ;
Writeln (Please, set down and begin your work !);
End;
S := 0 ;
For j := 15 down to 1 Do
S := S+1/j ;
Writeln (la somme des inverses des entiers allant de 1 15 est, S :2 :3) ;
Readln
END.

Remarque 4.1.3 :
Le nombre de rptition pour FOR est donne lavance, pour repeat et
while, il ne lest pas.

4.2 Instructions conditionnelles :


4.2.1 If ... Then ... Else ...
Cest la traduction de "Si ... alors ... sinon ...". Sa syntaxe est donne
par :

If (condition) then (instruction 1) else (instruction 2) ;

Si (condition) est True, (instruction 1) sera excute sinon (instruction 2) le


sera. Dans le cas o (instruction 2) nexiste pas ; "If ...Then ... Else ... "
se rduit "If (condition) Then (instruction 1) ;"

Exemple 4.2.1 :

Program devinette ;
VAR J,C,CC :CHAR ;
Begin
J := O ;
Cc:= P ;
While J = O do
begin
Write (Devinez le caractre cc) ;
Readln (c) ;

32
If c = cc then
writeln (c"est GAGNE !)
else
Writeln (si vous voulez recommencer, tapez O !)
Read (J)
END ;
Readln
END.

4.2.2 Cose ... of ...END :


Cest une gnralisation de linstruction "If... Then ... Else...". Son in-
trt rside dans le fait quelle permet de tester et dexcuter une instruction
parmi plusieurs. Son mode demploi est donn ci-dessous :

CASE (var_test) of ou case (var_test) of


cas 1 : instruction 1 ; cas 1:instruction 1 ;
cas 2 : instruction 2 ; cas 2:instruction 2 ;
... ...
cas n : instruction n; cas n : instruction n
else instruction (n+1) END;
END;

(var_test) est une variable ; cas 1,...,cas n, sont les valeurs ventuelles de(var_test).

Remarque 4.2.1 :
i) "CASE ..." rsume les instruction conditionnelles suivantes :

if var_test = cas 1 then instruction 1 ;


if var_test = cas 2 then instruction 2 ;
....
if var_test = cas n then instruction n ;

ii) Remarquez quil ny a pas de ; devant le ELSE.

Exemple 4.2.2 :

Program chiffre ;
Var i :integer ;
Begin
Writeln (donnez un chiffre 0...9) ;
Readin (i) ;

33
Case i of
0: writeln(c"est Zro);
1: writeln(c"est Un);
2: writeln(c"est Deux);
3: writeln(c"est Trois);
....
9: writeln(c"est Neuf);
END ;
Readln
END.

34
Chapitre 5

Types de donnes structurs.

Ce sont des types de donnes composs de types lementaires tels que


integer, real, Char, type numr, type intervalle. Certains dentres eux re-
prsentent des informations homogne ; quant aux autres, leurs donnes sont
htrognes. On en distingue le type tableau (ARRAY), le type enregistrement
(RECORD), le type fichier (file) .....

5.1 Types scalaires dfinis par le programmeur :


5.1.1 Type intervalle :
ce type dcrit une suite de valeurs naturellement classes (nombres entiers
ou caractres) limite de part et dautre par deux bornes constantes extrmes.
Pour le dclarer, on na qu appeler :

Type nom=valinf..valsup ;

Exemple 5.1.1 :

...
Type mois=1 .. 12; {intervalle mois}
jour=1.. 31; {intervalle jour}
lettre_majus=A .. Z {intervalle alphabet majuscule }
lettre_minus=a.. z {intervalle alphabet minuscule }
chiffre=0..9 ;{intervalle chiffre}
Var m: mois;
j: jour;
Mlettre : lettre_majus;
lettre : lettre_minus ;
c: chiffre;
....

35
5.1.2 Type numr :
il reprsente une liste de constantes dont chacune, automatiquement, se
repre par sa position au sien de cet ensemble. La premire constante corres-
pond la position 0. Le type numr se dclare comme suit :

Type nom=(const1, const2,...) ; {Elles sont classes selon leur


succession}

Exemple 5.1.2 :

type Semaine=(lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche);


Annee_solaire=(Jan, Fev, Mar, Avr, Mai, Juin, Juil, Aout, Sept,
Oct, Nov, Des);
Annee_lunaire=(MOHARAM, SAFARE,JOUMADAI, JOUMADAII, RABIEI, RABIEII,
RAJAB, CHAABAN, RAMADAN, CHOUAL, THI EL KIADA, THI EL HIJJA);
...........

5.2 type tableau (ARRAY) :


cest un type prdfini qui offre la possibilit de construire un tableau de
donne (sous forme de vecteur ou matrice). Pour dclarer des variables sous
ce type, on procde comme suit :

TYPE VECTEURE=Array[type intervalle ou numr] of type;


MATRICE= Array[type intervalle ou numr, type intervalle
ou numr] of type;
VAR X,Y : VECTEURE;
V,W : MATRICE;
Ou bien:
VAR X,Y :Array[type intervalle ou numr] of type;
V,W= Array[type intervalle ou numr, type intervalle ou numr] of type;

Commentaire :
i) Vecteur : cest un nom, titre dexemple, attribu au type ainsi dfini .
ii) Type intervalle ou numr : Il dfinit les indices des composantes du
tableau ou de la matrice.
iii) Type : cest le type des donns ranges le vecteur ou dans la matrice.

Exemple 5.2.1 :

VAR Vect1, Vect2 : Array[1..13] of real ;{vecteur}


Mat1, Mat2, Mat3 : Array[3..4,6..10] of integer ;{matrice}
X,Y,Z : Array[1..5,1..7,1..4] of CHAR ;{vecteur matrice}

36
Exemple 5.2.2 :
TYPE TABVEC = Array[1..7] of CHAR ;
TABMAT = Array[1..5,1..6] of real ;
TABVECMAT = Array[1..7,1..7,1..10] of integer ;
VAR X,Y : TABVEC ;
Matrice1,Matrice2 :TABMAT ;
VM1,VM2 ,MV3 :TABVECMAT ;
Pour manipuler ou reprsenter les composantes dun tableau, on respecte les
notations suivantes :
X[i] ou X(.i.) avec I =1....7 ( cas du vecteur X dclar ci-avant en
Exmple4.2.2)
matrice1[i,j] ou matrice1 (.i,j.) avec i = 1...5, j = 1...6 (cas de la
matrice dclar en Exmple4.2.2)
VM1[i,j,k] ou VM(.i,j,k.) avec I = 1...7 , j = 1...7 , k = 1...10 (cas
dun vecteur de matrice dclar en Exmple4.2.2
i, j et k sont des variables de type integer, intervalle ou numr. Elles jouent
le rle des indices.
Exemples 5.2.3 :

Exemples1 :
TYPE intervalle = 1..12 ;
semaine=(Lun, MAR, MER, JEU, VEN, SAM, DIM);
Vect1: Array[intervalle] of real;
Vect2: Array[semaine] of integer;
Vect3: Array[A..Z] of CHAR;
MAT: Array[intervalle, semaine, A..Z] of bayte ;

MAT [1,Lun, A] est lment de MAT


Vect1 [3] est lment de Vect1
Vect2 [DIM] est lment de Vect2
Vect3 [X] est lment de Vect3

Exemple2 :
Program produit_scalaire;
uses CRT;
const MAX=10;
MIN=1;
VAR V,W : Array[MIN..MAX] of real;
I: integer;
ps: real ;

37
begin
Writeln (saisie des vecteurs V et W);
ps = 0;
For i: = MIN to MAX Do
Begin
write (v(,i:2, =); readln (v[i]);
write (w(,i:2, =); readln (w[i]);
ps:=ps+v[i]*w[i];
END;
Writeln ( Le produit scalaire calcul est:, ps:2:3) Readln
END.

Remarque 5.2.1 :
Pour minimiser la mmoire rserve aux composantes dun tableau dclar,
on adjoint "ARRAY" un mot de compactage, "Packed", comme ci-dessous :

TYPE Nom =Packed ARRAY[type intervalle] of type;


VAR variable: Nom;

Ou bien:
VAR variable: Packed ARRAY[type intervalle] of type;

5.3 Chane de caractres (string) :


une variable ou une constante de ce type sont des suites de caractres, de
tailles diffrentes (au plus 255 caractres). Une constante est toujours mise
entre qoutes (..). Une variable se dclare de la faon suivante :

VAR variable,.... :string[entier];{la longueur maximale de la chane=entier}

ou bien :
VAR variable,..... :string; {dans ce cas la chane peut avoir une longueur
de 255 caractres}

avec entier varie entre 1 et 255


Comme oprateurs sapplique sur les chanes, on note + (runion) , =, <>,
<, >, >=, <= (comparaison) , lenght(longueur de la chane).

Exemple 5.3.1 :

Program chaine ;
VAR x,y :string[10] ;
i,j : integer ;

38
Begin
Writeln(Entrer une chaine 1) ;
Readln(x) ;
Writeln(Entrer la chaine 2) ;
Readln(y) ;
i=length(x) ;
j=length(y) ;
Writeln(la longueur de la chaine 1 est :, i, et de la chaine 2est :, j);
Writeln(la longueur de, x+y,est : i+j) ;
{si on veut afficher les chaines sur deux colonnes lune cot de lautre}
For i :=1 to 10 do
Writeln(x[i], ,y[i]) ;
Readln
END.

5.4 Type Enregistrement (RECORD) :


le type record reprsente lensemble de tous les enregistrement. Cest un
type compos de plusieurs lments dits "champs" dont chacun possde son
propre type. On procde pour le dcaler de la manire suivante :

TYPE nom=RECORD
Champ1: type1;
...
Champn: typen;
END;
VAR enregistrement : nom ;

Ou bien :
VAR enregistrement: RECORD
Champ1: type1;
....
Champn: typen;
END;

Avec :
i) nom : nom de type enregistrement ainsi dfini
ii) enregistrement : nom dune variable dclare sous ce mme type
iii) champ1...champn : ce sont les noms des composantes de enregistrement,
dits "champs".

Exemple 5.4.1 :

39
TYPE Etudiant=Record
Nom, prnom: string [10];
Numero: integer;
Note: real
END;
Formation = Record
NBRAN: integer;
Nom:string;
END;
VAR E1,E2: Etudiant;
F1, F2, F3:formation;
Date:record
mois, jours, an : integer
END;
Vect: Array[1..30] of Etudiant;

Pour manipuler un champ, on lappelle par : "(nom de la variable enre-


gistrement).(nom du champ)", tels que par exemple
Date.mois, F1.NBRAN, E1.Note ...
Dans le cas ou certains champs sont conditionnellement dclars, on agit
pour mentionner cet aspect comme ci-dessous :

TYPE nom=Record
Champ1:type1;
.
.
.
case condition : type of
cas1(champs11:type11);
cas2(champs22:type22);
.
.
.
casn(champsnn:typenn);
end;

afin de ne pas rpter chaque appel de champs le nom de enregistrement et


allger ainsi lcriture du programme, on utilise linstruction "with....do...."
dont la syntaxe est suivante :

with(nom de enregistrement ) do (instruction ) ;

Exemple 5.4.2 : Sans "with" :

40
Program DATE ;
TYPE DAT =Record
Jour, mois, annee :integer ;
END ;
VAR DT :DAT ; Begin
DT.jour :=7 ;
DT .mois :=7 ;
DT.annee :=2006;
Writlen(DT.jour, /, DT.mois, /, DT.annee) ;
Readln
END.

Exemple 5.4.3 : Avec "with" :

Program DATE ;
TYPE DAT = Record
Jour, mois, annee :integer ;
END ;
VAR DT :DAT ;
Begin
With DT do begin
jour :=7 ;
mois :=7 ;
annee :=2006
Writlen(jour, /,mois, /, annee) ;
END ;
Readln
END.

5.5 Ensemble(SET) :
Le type SET est le domaine de tous les ensemble qui seront dclars.
Un ensemble est une collection dlments quelconque mais de types scalaire.
Ces lment ne sont pas manipuls individuellement mais en ensemble. Pour
dclarer des variable de ce type, on procde de la manire suivante :

Type <nom de lensemble>= set of <type scalaire> ;


VAR VARIABLE : <nom de lensemble>,
Ou bien:
VAR VARIABLE : set of <type scalaire> ;

41
Remarque 5.5.1 :
Type scalaire ne doit pas comporter plus de 256 valeurs (exemple :CHAR,
type intervalle, type numr )
Exemple 5.5.1 :
TYPE lettre = set of CHAR ;
VAR OO,XX,ZZ,alphanum :lettre ;

Soit par exemple :


XX :=[A,C,E] ;
YY:=[U,V,O] ;
ZZ :=[A,Z,K] ;
OO :=[ ] ;{ensemble vide}
Alphanum :=[A..Z,a..z,0..9] ;
Les oprateur quon peut applique aux ensembles, sont : + (union), * (inter-
section), - (diffrence), = (galit), <> (ingalit),<= ou >=(inclusion) et
IN ( appartence )
XX+YY=[A,C,E,U,V,O]
XX*ZZ=[A], XX*YY=[ ]
XX*ZZ XX+YY est true
A in XX est true
XX=YY est false, XX<>YY est true

5.6 Fichier(File) :
Un fichier est une collection dlment homogne. Sa dclaration se fait
comme suit :
Type nom=file of type ;
VAR varfile,...:nom;

Ou bien :
VAR varfile, .... : file of type ;
Avec type : est un type quelconque mais autre que file.
Exemple 5.6.1 :
Technicien= Record
Nom, prenom :string ;
Matricule :integer ;
END ;
VAR Tech :file of technicien ;

42
Annexe A

Exemples du calcul numrique

A.1 Interpolation dune fonction continue par


un polynme
Position du problme :
Le but de cet exercice est de complter un programme permettant dinterpoler
une fonction continue par un polynme (sect. 1.2, 1.3, 1.4 de la polycopie du
calcul numrique). Soit f : [a, b] IR une fonction continue donne et soit
t0 < t1 < t2 <, , < tn , (n+1) points de [a,b]. On cherche un polynme p
de degr n tel que
P (tj ) = f (tj ), 0 <= j <= n.
Daprs le cours le polynme p est donn par :
n
X
p(t) = f (tj )j (t),
j=0

O 0 , 1 , , n est la base de Lagrange de IP associe t0 , t1 , , tn. Les


fonction de base de Lagrange son dfinies par
n
Y
j (t) = (t ti )/(tj ti )
i=0
i6=j

Travail demand : A partir la donne de a, b, f, n le programme Lagrange


permet de calculer le polynme p qui interpole f aux points tj , 0 j n
, quidistribus uniformment sur lintervalle [a, b]. Ce programme est in-
complet, en particulier vous devez programmer la formule (1). Une fois le
programme crit et compil. Son excution aura pour consquence de calculer
la valeur de p des points donner par lutilisateur et compare le rsultat avec
la valeur de f ce point.
Exemple :(expemle 1.2 de la polycopie du calcul numrique)

43
Program LAGRANGE;
{Etant donne un entier n et une fonction continue f,
Le programme interpole la fonction f par un polynme
p de degr n aux points t[0],t[1], ,t[n]
paramtre :
n : degr du polynme p (interpolant de Lagrange)
f : la fonction interpoler
t[j] : est le j-eme point dinterpolation }
uses crt;
Const NMAX=1000;
Var t,y : Array [1..NMAX] of real;
I, J, N, K, M : Integer;
x,tt, pol_k,pol,phi_j :real;
rep:char;
Begin clrscr;
write(donner le nombr de ponts N:);
readln(N);
For I:=0 to N Do
Begin
write(donner x(,i,)=);
readln(t[I]) ;
write(donner f(,i,)=);
readln(y[I]) ;
End;
{ N := 80;
{Les points dinterpolation t[j] sont equidistribues entre -1 et +1}
For I:=0 to N Do
Begin
t[I] := -1+(2*I)/N ;
Writeln(t[I]);
readln;
End;}
rep:=o;
while rep=odo
begin
write(donner x:);
readln(x);
{M:=100;
For K := 0 to M Do
begin
x_k:=-1+(2*K)/M;}
pol:=0;

44
For J := 0 to N Do
{calcule de phi_j (la j_eme fonction de base de Lagrange)
au point x (formule de la polycopie)}
begin
phi_j:=1;
For I := 0 to N Do
begin
If I<>J then
phi_j:={A COMPLETER};
end;
tt:=t[j];
{Evalue p au point x}
pol:=pol+phi_j*y[j] {(3+4*tt*tt-tt);}
end;
pol_k:=pol;
writeln(x=,x, pol_k=,pol_k, fx=,3+4*x*x-x);
write(voulez-vous faire un auter aissai (O)ui ou (N)on?);
readln(rep);
end;
end.

A.2 Intgration numrique


A.2.1 Formule du trapze
Position du problme :
Soit f : [a, b] IR une fonction continue donne. Le but de cet exercice est
de complter et dutiliser un programme permettant dapproximer
Z b
f (x)dx(1)
a

en utilisant la formule du trapze 2 points dintgration (chap. 3 de la


polycopie du calcul numrique). Pour ce faire lintervalle [a, b] est partitionn
en N intervalles [xi , xi+1 ], i = 0, 1, 2, , N 1 de mme longueur h = (b
a)/N .
Travail demand :
A partir de la donne de f, a, b, N le programme trapeze permet dapprocher
(1). Ce programme est incomplet, en particulier vous devez :
1. monter que
2. programmer la formule (2).

45
Une fois le programme crit et compil. Son excution aura pour consquence
de calculer (dapproximer) (1).
Program trapeze;
{Etant donn un intervalle [a,b] et une fonction continue f,
le programme approche lintgrale de f entre a et b.
Paramtres :
a, b : lintervalle [a, b]
n : lintervalle [a, b] est partitionn en N intervalles
f : la fonction intgrer}

VAR n,i:integer;
a,b,integral,s,h,fx,fa,fb:real;
{Function f(x:real):real;
begin
f:=exp(x)*cos(x);
end;
Function df(x:real):real;
begin
df:= exp(x)*cos(x)-exp(x)*sin(x);
end;}

BEGIN
write(Entrer la valeur de a=);
readln(a);
write(Entrer la valeur de b=);
readln(b);
n :=100 ;
writeln(METHODE DE TRAPEZE);
{writeln(t In(f)\t\t It(f)\t\t Erc\t\t Ern\t\t Ern/Er2n\n");}
writeln(___________________________________________________________);
for i:=1 to 8 do
begin
n=:2*n;

h:=(b-a)/(n+1);
s:=0;
for i:=1 to n do {Formule de trapze A COMPLETER }
fx:=exp(a+i*h)*cos(a+i*h);
s:=s+fx;
fa:=exp(a)*cos(a);
fb:=exp(b)*cos(b);
intgral:={A COMPLETER };

46
Writeln(Integral, ,-12.0703463164-Integral);
writeln(__________________________________________________________);
end;
readln;
END.

A.2.2 formule de Simpson


Position du problme :
Soit f : [a, b] IR une fonction continue donne. Le but de cet exercice est
de complter et dutiliser un programme permettant dapproximer
Z b
f (x)dx(1)
a

en utilisant la formule de Simpson 2 points dintgration (chap. 3 de la


polycopie du calcul numrique). Pour ce faire lintervalle [a, b] est partitionn
en N intervalles [xi , xi+1 ], i = 0, 1, 2, , N 1 de mme longueur h = (b
a)/N .
Travail demand :
A partir de la donne de f, a, b, N le programme Simpson permet dapprocher
(1). Ce programme est incomplet, en particulier vous devez : 1
1. monter que
2. programmer la formule (2).
Une fois le programme crit et compil. Son excution aura pour consquence
de calculer la valeur de (1), et compare le rsultat avec le rsultat du pro-
gramme trapeze.
Program Simpson;
{Etant donn un intervalle [a,b] et une fonction continue f,
le programme approche lintgrale de f entre a et b.
Paramtres :
a, b : lintervalle [a, b]
n : lintervalle [a, b] est partitionn en N intervalles
f : la fonction intgrer}
VAR n,I,p,j:integer;
a,b,integral,S,L,h:real;
{Function f(x:real):real; begin
f:=exp(x)*cos(x);
end; Function df(x:real):real; begin
df:= exp(x)*cos(x)-exp(x)*sin(x);
{-2*exp(x)*(cos(x)+sin(x));} end;}

47
BEGIN
write(Entrer la valeur de a=);
readln(a);
write(Entrer la valeur de b=);
readln(b);
n :=100 ;
writeln(METHODE DE SIMPSON);
{printf("\t In(f)\t\t It(f)\t\t Erc\t\t Ern\t\tErn/Erc\n");}
writeln(__________________________________________________________);
for i:=1 to 8 do
begin
p:=n;
n:=2*n;
h:=(b-a)/(2*p);
S:=0;
L:=0;
If p>1 then {Formule de simpson A COMPLETER}
begin
for i:=1 to p-1 do
S:={A COMPLETER};
End;
for j:=1 to p do
L:={A COMPLETER};

Intgral:=(h/3)*(f(a)+f(b)+2*S+4*L);
writeln(Integral, ,-12.0703463164-Integral);
writeln(___________________________________________________________);
end ;
readln ;
END.

A.3 Mthode de Newton


Position du problme :
Le but de cet exercice est de complter et dutiliser un programme permettant
de rsoudre lquation f (x) = 0 grce la mthode de Newton.
La mthode
Lapproche graphique est la suivante : On choisit une valeur dabscisse raison-
nablement proche du vrai zro. On remplace alors la courbe par sa tangente
et on calcule le zro de lapproximation affine associe la tangente (ce qui
se ralise facilement avec lalgbre lmentaire). Ce zro de la tangente sera

48
gnralement plus proche du zro de la fonction, et la mthode peut tre r-
itre.

En pratique, voici les oprations poser pour f : [a, b] IR, fonction dfi-
nie et drivable et sur lintervalle [a, b], et valeurs relles. Choisissons une
valeur arbitraire x0 (le plus prs du zro est le mieux). On dfinit alors, par
rcurrence pour chaque nombre naturel n :

xn+1 = xn f (xn )/f 0 (xn )

o f 0 dsigne la drive de la fonction f.


On peut prouver que, si f 0 est continue et si le zro inconnu a est isol, alors
il existe un voisinage de a tel que pour toutes les valeurs de dpart x0 dans
ce voisinage, la suite (xn ) va converger vers a. De plus, si f 0 (a) 6= 0, alors
la convergence est quadratique, ce qui signifie intuitivement que le nombre de
chiffres corrects est approximativement doubl chaque tape.
Travail demand :
A partir du programme Newton et la donne de f, x0 , ce programme rsoud
lquation f (x) = 0. Ce programme est incomplet, en particulier vous devez
programmer la formule (2). Exemples Considrons le problme de trouver
le nombre positif x vrifiant cos(x) = x3 . Reformulons la question pour
introduire une fonction devant sannuler : on recherche le zro de f (x) =
cos(x) x3 .
La drivation donne f 0 (x) = sin(x) 3x2 .
Comme cos(x) 1 pour tout x et x3 > 1 pour x > 1, nous savons que notre
zro se situe entre 0 et 1. Nous essayons une valeur de dpart de x0 = 0, 5.

49
et les 12 premiers chiffres de cette valeur concident avec les 12 premiers
chiffres du vrai zro.
Program newton;
uses crt;
Var x0, x, eps,fx0,dfx0:real;
I, ITMAX: Integer;
Begin clrscr; write(donner x0=);
readln(x0);
write(donner eps=);
readln(eps);
write(donner itmax=);
readln(itmax);
for i:=1 to itmax do
begin
fx0:=cos(x0)-x0*x0*x0;
dfx0:=-sin(x0)-3*x0*x0;
x:=x0-fx0/dfx0;
if abs(x-x0)<=eps then
begin
writeln(racine=,x);
break;
end
else
begin
if i=itmax then
writeln(la methode nest pas satisfaite)
else
begin
x0:=x;
writeln(i, , x);
end;
end;
end;

50
readln;
End.

51