Вы находитесь на странице: 1из 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
1.1 Systme informatique . . . . . . . . . . . . . .
1.1.1 Introduction : . . . . . . . . . . . . . . .
1.1.2 Systme informatique : . . . . . . . . .
1.1.3 Le matriels informatique : . . . . . . . .
1.2 Systme dexploitation : . . . . . . . . . . . . .
1.2.1 Dfinitions et concepts : . . . . . . . . .
1.2.2 Les fonctions dun systme dexploitation

.
.
.
.
.
.
:

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

2 Gnralits sur linformation


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

Introduction la programmation Pascal


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

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

3
3
3
3
5
6
6
6

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

8
8
8
9
9
9
12
12

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

14
14
14
14
15
15
15
16
16
16
17
17
19

3.4

3.3.4
3.3.5
Outils
3.4.1
3.4.2
3.4.3

Dclaration de constantes et de variables scalaires :


structure gnrale, d programme : . . . . . . . . .
de communication . . . . . . . . . . . . . . . . . . .
Expression scalaires : . . . . . . . . . . . . . . . . .
Instructions de base : . . . . . . . . . . . . . . . . .
Affichage et saisie de donnes : . . . . . . . . . . .

Instructions de rptition et de test


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

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

5 Types de donnes structurs.


5.1 Types scalaires dfinis par le programmeur :
5.1.1 Type intervalle : . . . . . . . . . . .
5.1.2 Type numr : . . . . . . . . . . . .
5.2 type tableau (ARRAY) : . . . . . . . . . . .
5.3 Chane de caractres (string) : . . . . . . . .
5.4 Type Enregistrement (RECORD) : . . . . .
5.5 Ensemble(SET) : . . . . . . . . . . . . . . .
5.6 Fichier(File) : . . . . . . . . . . . . . . . . .
A Exemples du calcul numrique
A.1 Interpolation dune fonction continue par
A.2 Intgration numrique . . . . . . . . . .
A.2.1 Formule du trapze . . . . . . . .
A.2.2 formule de Simpson . . . . . . . .
A.3 Mthode de Newton . . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

20
22
23
23
25
26

.
.
.
.
.
.
.

29
29
29
30
31
32
32
33

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

35
35
35
36
36
38
39
41
42

un polynme
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

43
43
45
45
47
48

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

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 : Informatics, computer Science et Electronic Data Processing (traitement lectronique 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 traitement).
. 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 traitement qui lon remet des informations en entre et qui traite ces informations
et nous restitue des informations en sortie.

? 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 instructions quon lui demande reus du directeur (cest le programme).
Il note certain information sur les donnes quil va traiter (Mmorisation 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)

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 Processing Unit) cest dans cette partie que linformation est traite, lunit
central est constitue de deux organes :
Lunit arithmtique et logique : qui permet deffectuer des oprations sur les donnes telles que Addition, Soustraction, Multiplication, 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 familles 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 Tableur,..) ou toutes programmes dun utilisateurs.

1.2
1.2.1

Systme dexploitation :
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 ressources (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 ressources 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 lorganisation 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 excuter en utilisant un langage de commande bien dfinit.
Interface Menu : permet lutilisateur de slectionn une commande de menus, la slection se fait par souris ou clavier.
Interface graphique : gnralement est constitue des lments suivantes : 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,...

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 utilis pour traiter linformation de manire automatique sappelle un ordinateur. 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. Linformatique 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 renseignement . 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.

2.3
2.3.1

Le codage de linformation
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 machine, 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}
on a : x = an an 1 a1 a0 =

n
X

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

x est donn par : x = an an 1 a1 a0 =

n
X

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 numrique. 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 - traduisez " Code Americain Standard pour lEchange dInformations"). Le code
ASCII de base reprsentait les caractres sur 7 bits (cest--dire 128 caractres possibles, de 0 127). Le code ASCII a t tendu 8 bits (un octet) 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
22 = 11 2 + 0
11 = 5 2 + 1
5=22+1
2=12+0
1=02+1

=
=
=
=
=
=

a0
a1
a2
a3
a4
a5

=0
=0
=1
=1
=0
=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 systme 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
0
0
0 1
1 0

1
0
1
1
0

1
1
1
0
1

13

0 1
1 0
0 1 0
1
1 1 0

Chapitre 3
Introduction la programmation
Pascal
3.1

Introduction :

Un ordinateur est une machine qui excute un certain nombre doprations 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 effectuer lun aprs lautre. Le grand avantage de lordinateur est sa rapidit.
Par contre, cest le programmeur qui doit TOUT faire. Lordinateur ne comprenant 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 programmation : langage machine interne, langage machine externe et langage volu.
Dfinition 3.2.2
Un programme est une suite dinstructions lmentaire, qui vont tre excutes 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 information 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 programmation.

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 machine 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 scientifiques)


Basic : il a t labor dans un cadre pdagogique. (simple et trs limit)
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 programme crit en LE (programme source) en un autre exprim en Lm (programme objet). Lordinateur , par la suit, naurait excuter que le programme objet.
Interprteur :
linterprteur possde une fonction presque analogue celle du compilateur 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 TurboPASCAL

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 EDITEUR),
2. le traduire en langage machine (cest dire en codes binaires comprhensibles 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
Integer
Byte
Word
Shorting
longint

Bornes
[-32 768, 32 767]
[0 ,255]
[0 , 65535]
[-128 , 127]
[-2147483648 , 2147483647]

Place en mmoire
2 octets
1 octet
2 octets
1 octet
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
real
sigle
double
Extended
Comp

Bornes
[2.9E-39 , 1.7E38]
[1.5E-45 , 3.4E38]
[5.0E-324 , 1.7E308]
[1.9E-4951 , 1.1E4932]
[-2E+063+1, 2E+063+1]

Place en mmoire
6 octets
4 octets
8octets
10 octets
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 ;
*Notation scientifique :

205.12 (la mise du signe (+) est facultatif )


(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 suivantes :
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, LABEL, 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 identificateurs 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
Begin
3SOT
SOT34AB
Dollar $
I LHAM
Terre +ciel
jour_nuit
Jour-nuit
rayon

validation
non valide( car cest rserv )
non valide (lettre initiale est 3)
valide
non valide
non valide ( il y a un blanc)
non valide (il y a + )
valide
non valide
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 scalaires :

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

* Bloc De dclaration

nom du programme ;

[ CONST {dclaration de constantes}]

[ TYPE {dclaration de types}]

[ VAR {dclaration de variables}]

[FUNCTION {dclaration de fonctios}]

[PROCEDURE {dclaration de procedures}]

BEGIN

instruction1 ;

Instructions excutables
ou corps du programme

instruction2 ;
... ...
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 distinctes :
* lentte :comprend le nom du programme.
* Le bloc de dclaration : Toute dclaration effectue doit figurer lintrieur 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. Comment allez-vous ? sur lcran.
N.B : Le mot-cl writeln crit le texte sur lcran.
program MONPREMIER ;
begin
writeln (Bonjour.
end.

Comment allez-vous ?)

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 constitue doprateur et doprandes arithmtiques (rels ou entiers). Son valuation 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 valeur 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)
2)
3)
4)
5)

3.4.2

( ) fonction( )
+ - not
* / div mod and
+ - or
= <> < <= >= >

Instructions de base :

Affectation :
le signe daffectation en Turbo Pascal est " := " et on a linstruction suivante :
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
CONST
VAR

affectation ;
A=32 ;
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 faudrait 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 suivante (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 :
(

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

write(chose) ;
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 fractionnaire.
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
4.1.1

Instructios de rptition :
While... do... :

Cette instruction signifie "tant que ... faire". Sa syntaxe est donne cidessous 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) jusqu 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 plusieurs 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
4.2.1

Instructions conditionnelles :
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 intrt 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
cas 1 : instruction 1 ;
cas 2 : instruction 2 ;
...
cas n : instruction n;
else instruction (n+1)
END;

ou

case (var_test) of
cas 1:instruction 1 ;
cas 2:instruction 2 ;
...
cas n : instruction n
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
1: writeln(c"est
2: writeln(c"est
3: writeln(c"est
....
9: writeln(c"est
END ;
Readln
END.

Zro);
Un);
Deux);
Trois);
Neuf);

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 reprsentent 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
5.1.1

Types scalaires dfinis par le programmeur :


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 correspond 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

VAR

TABVEC = Array[1..7] of CHAR ;


TABMAT = Array[1..5,1..6] of real ;
TABVECMAT = Array[1..7,1..7,1..10] of integer ;
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

5.3

variable: Packed ARRAY[type intervalle] of type;

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 enregistrement).(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
VAR
Ou bien:
VAR

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


VARIABLE : <nom de lensemble>,
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), * (intersection), - (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 :
p(t) =

n
X

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
j (t) =

n
Y

(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 incomplet, 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
A.2.1

Intgration numrique
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
a

f (x)dx(1)

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
a

f (x)dx(1)

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 programme 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 raisonnablement 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 ritre.

En pratique, voici les oprations poser pour f : [a, b] IR, fonction dfinie 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