pascal

De plus, on trouve des compilateurs Pascal très conviviaux (Turbo Pascal sur ...
les sujets d'exercices et leur correction (que l'on trouvera en fin du document).

Part of the document



Institut des Carrières Commerciales
________
Rue de la Fontaine, 4
1000 Bruxelles







Langage

PASCAL





Support du Cours
« Bases de Programmation »












Syllabus destiné aux
1ères années de
Graduat en Informatique









Auteur :


Patrick TRAU
Université de Strasbourg


1998 - 1999



Langage PASCAL

Patrick TRAU Janvier 92
version HTML mars 97 : http://www-ipst.u-strasbg.fr/pat/program/pascal.htm

Ce document présente (de manière claire je crois, d'après ce qu'en ont dit
certains) le langage PASCAL. Il a été publié dans APTEP - INFO il y a
quelques années. Depuis, bien que je maîtrisais bien ce langage et avais
développé de nombreux programmes en Pascal, je suis passé au C. Le C est
d'après moi plus souple et plus efficace à condition de bien en comprendre
les mécanismes (il faut d'après moi comprendre à la fois l'assembleur et
les objets pour bien programmer en C). De plus le C est plus utilisé dans
mon environnement d'informaticiens. Néanmoins le Pascal reste bien meilleur
pour le débutant et le programmeur moyen : parfaitement structuré et clair,
il conduit rapidement à un programme de bonne qualité et assez facilement
maintenable (ce qui l'est moins en C, qui possède trop souvent trop de
possibilités pour résoudre le même problème).
De plus, on trouve des compilateurs Pascal très conviviaux (Turbo Pascal
sur PC, avec aide en ligne, déboguage,...).
Ce document reste donc d'actualité : le Pascal est d'après moi une très
bonne manière d'aborder la programmation. C'est pourquoi j'ai choisi de
mettre à disposition ce document sur Internet, qu'il serve à qui en a
besoin ! Néanmoins, je n'ai pas passé trop de temps à sa mise en page, les
graphiques restent en mode caractère, il n'y a pas de lien direct entre les
sujets d'exercices et leur correction (que l'on trouvera en fin du
document).
Voici quelques adresses intéressantes :
Pascalissime (http://www.mygale.org/~jmy51)
Point de rencontre des utilisateurs de Borland Pascal
(http://members.aol.com/chaussaron/bcpasc.htm)
Site officiel de Borland France (http://www.borland.fr)

Copyright : utilisation de ce document libre pour tout usage personnel.
Utilisation autorisée pour tout usage public non commercial, à condition de
citer son auteur (Patrick TRAU, IPST, Université Louis Pasteur Strasbourg)
et de me signaler tout usage intensif. Utilisation commerciale interdite
sans accord écrit de ma part.

Table des Matières


PASCAL 1
Langage PASCAL 2
Table des Matières 3
INTRODUCTION 4
LES LOGICIELS 4
ORGANISATION DE L'ORDINATEUR 4
LANGAGES DE PROGRAMMATION 4
UN PREMIER PETIT PROGRAMME 6
CONSTANTES 8
INSTRUCTION D'AFFECTATION 9
LES TYPES DE VARIABLES STANDARD SIMPLES ET OPERATEURS ASSOCIES 10
ENTIERS 10
REELS 10
BOOLEENS 10
CARACTERES 11
LES FONCTIONS STANDARD 12
INSTRUCTION 13
STRUCTURES DE CONTROLE 14
BOUCLE WHILE - DO (tant que - faire) 14
BOUCLE REPEAT - UNTIL (répéter - jusqu'à ce que) 14
BOUCLE FOR - DO (pour - faire) 15
INSTRUCTION IF - THEN - ELSE (si - alors - sinon) 15
LA STRUCTURE CASE - OF (cas - parmi) 16
TYPES ENUMERES NON STANDARDS 17
LES TYPES INTERVALLES 18
TABLEAUX 19
TABLEAUX UNIDIMENSIONNELS 19
LES CHAINES DE CARACTERES 19
TABLEAUX DE TABLEAUX 20
TABLEAUX COMPACTES 20
ENREGISTREMENTS 21
DECLARATION 21
UTILISATION DES ENREGISTREMENTS 21
LA STRUCTURE WITH - DO (avec - faire) 22
ENREGISTREMENTS AVEC VARIANTES 22
PROCEDURES ET FONCTIONS 24
GENERALITES 24
PORTEE DES DECLARATIONS 25
ARGUMENTS (OU PARAMETRES) 26
LES FONCTIONS 26
RECURSIVITE 27
LES ENTREES / SORTIES 29
SUR LA CONSOLE 29
LES FICHIERS DE TEXTE 30
EXTENSIONS NON STANDARD 31
ENSEMBLES 32
POINTEURS 33
LES LISTES CHAINEES ET ARBRES 33
LES POINTEURS EN PASCAL 34
CORRECTION DES EXERCICES 36
Qui suis-je ? 48

INTRODUCTION

LES LOGICIELS
ORGANISATION DE L'ORDINATEUR
LANGAGES DE PROGRAMMATION


LES LOGICIELS
Dans la majorité des cas, on achète des programmes (logiciels) tout faits
qui correspondent plus ou moins au besoin :
* Traitement de texte - P.A.O :avec mise en page, justification,
numérotation chapitres - pages, table des matières, dictionnaire...
* Tableur : tableau de nombres à 2 dimensions et calculs
* Base de données : ensemble de fiches (nom, adresse...) et recherche par
rubrique, publipostage...
* C.A.O, Dessin par ordinateur : propre, modification aisée, archivage...
* Gestion : paye, facturation, stock...
* Communication : transfert de programmes par modem et ligne téléphonique,
serveur minitel...
Un Intégré regroupe plusieurs de ces possibilités.
Soit on achète un logiciel général : très bon niveau, parfaitement testé,
documentation, formation... mais trop général (fonctions inutiles,
fonctions utiles avec trop de paramètres ou difficilement accessibles).
Soit on fait (ou fait faire) un logiciel particulier : plus pratique, mais
plus hasardeux (erreurs, SAV, doc...). Le cahier des charges doit être très
précis.

ORGANISATION DE L'ORDINATEUR
* Multiposte : plusieurs consoles sur un même ordinateur (CPU puissant,
tout est partageable)
* Réseau : plusieurs CPU et MC non partageable (sauf réseau de
multipostes), MdM et périphériques partageables ou locaux.

LANGAGES DE PROGRAMMATION
Un ordinateur est une machine bête, ne sachant qu'obéir, et à très peu de
choses :
* addition, soustraction, multiplication en binaire, uniquement sur des
entiers,
* sortir un résultat ou lire une valeur binaire (dans une mémoire par
exemple),
* comparer des nombres.
Sa puissance vient du fait qu'il peut être PROGRAMME, c'est à dire que l'on
peut lui donner, à l'avance, la séquence (la suite ordonnée) des ordres à
effectuer l'un après l'autre. Le grand avantage de l'ordinateur est sa
rapidité. Par contre, c'est le programmeur qui doit TOUT faire.
L'ordinateur ne comprennant que des ordres codés en binaire (le langage
machine), des langages dits "évolués" ont été mis au point pour faciliter
la programmation.
Le PASCAL, créé par WIRTH au début des années 70, possède des instructions
assez claires (si vous comprenez l'anglais), et favorise une approche
méthodique et disciplinée (on dit "structurée").
Le PASCAL est un langage compilé, c'est à dire qu'il faut :
* entrer un texte dans l'ordinateur (à l'aide d'un programme appelé
EDITEUR),
* le traduire en langage machine (c'est à dire en codes binaires
compréhensibles par l'ordinateur) : c'est la compilation et éventuellement
l'édition de liens (LINK),
* l'exécuter.
Contrairement à un basic interprété, l'exécution sera beaucoup plus rapide
puisqu'il n'y a plus de traduction à effectuer.
Bien que le langage soit normalisé, un certain nombre de points dépendent
de la machine et du compilateur utilisé (par exemple comment appeler le
compilateur). Ces indications ne seront pas données ici. Si vous avez le
choix, je vous conseille TURBO PASCAL, le plus pratique d'emploi (en
particulier parce qu'il possède son propre éditeur de texte).

UN PREMIER PETIT PROGRAMME



Un programme PASCAL est composé d'une entête, des déclarations et des
instructions (délimitées par BEGIN et END. ).
ex : PROGRAM cercle (input,output); (* entête *)
VAR perimetre,diametre : REAL; (* déclarations *)
BEGIN
readln(diametre); (* instruction *)
perimetre := 3.141592 * diametre; (* instruction *)
writeln(diametre,perimetre) (* instruction *)
END.
L'entête est composée du mot PROGRAM, suivi du nom du programme (cercle),
et d'indications sur les Entrées/Sorties (ici le clavier et l'écran).
La partie déclarative de notre programme est limitée à la déclaration de
deux variables (mot clef VAR). Une variable est une "case" mémoire de
l'ordinateur, à laquelle on donne ici un nom. Chaque case peut contenir une
valeur. On a précisé ici que nos deux variables PERIMETRE et DIAMETRE
contiendraient des réels. Les types simples connus en PASCAL sont : REAL,
INTEGER (entier naturel), CHAR (contient UN est un seul caractère), et
BOOLEAN (booléen, c.a.d qui peut valoir soit TRUE (vrai) soit FALSE (faux).
En TURBO PASCAL, les entiers admissibles sont compris entre -32768 et
+32767. Dans tous les PASCALs on possède la variable prédéclarée MAXINT qui
donne le plus grand entier admissible. Les réels doivent être compris en
TURBO entre + et -1.7E37 (c.a.d 1,7 fois 10 puissance 37), avec 11 chiffres
significatifs. La virgule décimale est toujours représentée par un point en
informatique.
Un identificateur (tout nom que vous choisissez : variable, programme...)
peut être formé de lettres (A à Z), de chiffres et (pas sur toutes les
versions de PASCAL) du signe _ (souligné). TURBO PASCAL accepte des noms de
127 caractères maximum, certains PASCAL sont plus limités (31 caractères
par ex). Le premier caractère doit être une lettre. Par exemple, VALEUR1 ou
PREM_VALEUR sont possibles mais pas 1ERE_VALEUR. En PASCAL les minuscules
sont traitées comme des majuscules (SURface et surFACE désignent la même
case mémoire). Je n'utilise les majuscules que pour faire ressortir les
mots importants. Les accents et autres ç ne sont pas autorisés (var
diamètre:real est interdit à cause de l'accent). Un blanc dans un
identificateur est également interdit (utilisez _ pour séparer des mots
dans un même identificateur).
Toute variable utilisée dans un programme doit être déclarée. Ceci évite la
plupart des erreurs de frappe, et rend le p