4/4.2 la programmation structurée en pascal

10
Turbo PASCAL : Définitions et rappels de base Partie 4 Chapitre 4.2 page 1 Partie 4 : Langages du CPC 4/4.2 La programmation structurée en PASCAL Dans ce chapitre, nous allons étudier : la structure d'un programme écrit en Turbo PASCAL (I), et, en détails, les concepts évolués du langage (II). Le premier volet de ces études est surtout réservé aux personnes qui ne connaissent pas le langage PASCAL. Nous y présentons tout ce qu'il est nécessaire de savoir pour débuter en PASCAL. Le deuxième volet concerne tous les programmeurs qui, même s'ils ne débutent pas en PASCAL, ont quelques lacunes sur des concepts spéci- fiques comme, par exemple, utilisation des overlay, insertion de langage machine dans un programme PASCAL, manipulation de fichiers, etc. De nombreux exemples vous aideront à mieux appréhender ces divers pro- blèmes. I. Structure d'un programme écrit en Turbo PASCAL La programmation en Turbo PASCAL se fait selon des règles bien préci- ses que nous allons passer en revue. Les concepts manipulés par ces règles vont très loin. Leur but est de : planifier l'enchaînement logique d'actions élémentaires, augmenter la lisibilité des programmes, simplifier la maintenance et/ou la reprise des programmes. Pour parvenir à de telles fins, un programme PASCAL est partitionné en plusieurs blocs : identification du programme par son nom (program), déclaration des étiquettes (label), déclaration des types (type), déclaration des constantes (const), déclaration des variables (var), déclaration des procédures et des fonctions, programme principal. 1er Complément

Upload: others

Post on 20-Jun-2022

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 4/4.2 La programmation structurée en PASCAL

Turbo PASCAL : Définitions et rappels de base Partie 4 Chapitre 4.2 page 1

Partie 4 : Langages du CPC

4/4.2

La programmation structurée en PASCAL

Dans ce chapitre, nous allons étudier :

— la structure d'un programme écrit en Turbo PASCAL (I),

— et, en détails, les concepts évolués du langage (II).

Le premier volet de ces études est surtout réservé aux personnes qui ne connaissent pas le langage PASCAL. Nous y présentons tout ce qu'il est nécessaire de savoir pour débuter en PASCAL.

Le deuxième volet concerne tous les programmeurs qui, même s'ils ne débutent pas en PASCAL, ont quelques lacunes sur des concepts spéci­fiques comme, par exemple, utilisation des overlay, insertion de langage machine dans un programme PASCAL, manipulation de fichiers, etc. De nombreux exemples vous aideront à mieux appréhender ces divers pro­blèmes.

I. Structure d'un programme écrit en Turbo PASCAL

La programmation en Turbo PASCAL se fait selon des règles bien préci­ses que nous allons passer en revue. Les concepts manipulés par ces règles vont très loin. Leur but est de :

— planifier l'enchaînement logique d'actions élémentaires,

— augmenter la lisibilité des programmes,

— simplifier la maintenance et/ou la reprise des programmes.

Pour parvenir à de telles fins, un programme PASCAL est partitionné en plusieurs blocs :

— identification du programme par son nom (program),

— déclaration des étiquettes (label),

— déclaration des types (type),

— déclaration des constantes (const),

— déclaration des variables (var),

— déclaration des procédures et des fonctions,

— programme principal.

1er Complément

Page 2: 4/4.2 La programmation structurée en PASCAL

Partie 4 Chapitre 4.2 page 2 Turbo PASCAL : Définitions et rappels de base

Partie 4 : Langages du CPC

Un programme typique écrit en PASCAL aura donc la structure suivante :

Program Mon_ premier__essai ;

label

<déclaration d'une ou plusieurs étiquettes>;

type

< déclaration d'un ou plusieurs types >;

const

< déclaration d'une ou plusieurs constantes >;

var

<declaration d'une ou plusieurs variables>;

< déclaration d'une ou plusieurs procedures >;

< déclaration d'une ou plusieurs fonctions>;

begin

< programme principal >

end.

Toutes les données qui sont utilisées dans les procédures, les fonctions ou le programme principal doivent être déclarés dans des blocs de décla­ration (de labels, de type, etc.) selon l'ordre qui vient d'être donné. Cela peut vous sembler contraignant. En fait, vous vous apercevrez bien vite qu'il n'en est rien, et que le fait de bien définir le type des données mani­pulées vous fera gagner un temps précieux lors de la mise au point de vos programmes. C'est un des points forts du langage : avant d'utiliser une variable, il faut définir son type. Vous êtes donc obligé(e) de vous poser des questions sur cette variable, et sur l'utilisation que vous allez en faire. Cette démarche vous évitera en particulier de confondre deux variables, ou de faire des opérations concernant les chaînes sur une varia­ble numérique ou inversement...

II. Les concepts évolués du Turbo PASCAL

Nous allons maintenant étudier dans chaque bloc les possibilités offer­tes par le Turbo PASCAL.

A. En-tête du programme

La première ligne d'un programme écrit en Turbo peut commencer par le mot « program » suivi d'un nom de programme, le plus explicite pos­sible, afin d'avoir une idée de sa fonction par la seule lecture de l'en­tête. En Turbo, cette en-tête est facultative, mais nous vous conseillons cependant de la faire figurer dans vos programmes, ne serait-ce que pour

Page 3: 4/4.2 La programmation structurée en PASCAL

Turbo PASCAL : Définitions et rappels de base Partie 4 Chapitre 4.2 page 3

Partie 4 : Langages du CPC

la raison qui vient d'être citée. N'hésitez pas à employer des noms assez longs. Au besoin, séparez les divers mots du titre par un caractère souli­gné (__). Si le programme doit communiquer avec un ou plusieurs péri­phériques, il(s) est (sont) indiqué(s) entre parenthèses derrière le nom du programme. Par exemple :

Program essai (input, output) ;

B. Etiquettes

Les étiquettes sont des noms alphanumériques qui servent à repérer une ligne de programme pour y accéder par l'instruction goto. Cette instruc­tion ne doit être employée que dans les cas désespérés ! Si vous utilisez correctement les ordres structurés du Turbo (repeat, for do, while, case, etc.), vous pourrez sans doute éviter d'utiliser l'instruction goto, et le bloc de déclaration d'étiquettes sera donc vide.

Si malgré tout, vous désirez utiliser une ou plusieurs étiquettes, voici la façon dont il faudra vous y prendre :

Program test-etiquette ;

label

ici;

begin

writeln ('Cette ligne s'affichera une fois,');

ici :

writeln ('et celle-ci indéfiniment.');

goto ici;

end.

C. Types

En PASCAL, les variables doivent être identifiées selon leur type. Pour cela, il existe plusieurs types prédéfinis, et le programmeur peut égale­ment définir ses propres types de données.

Dans le premier cas, il suffira d'indiquer le type de donnée après chaque variable dans le bloc de déclaration des variables.

Dans le deuxième cas, il faudra en plus définir le ou les nouveau(x) type(s) dans le bloc de déclaration des types.

1 •' Complément

Page 4: 4/4.2 La programmation structurée en PASCAL

Partie 4 Chapitre 4.2 page 4 Turbo PASCAL : Définitions et rappels de base

Partie 4 : Langages du CPC

1) Types prédéfinis

Les types prédéfinis sont les suivants :

boolean

Deux valeurs : False et True.

Ce type concerne tous les tests logiques.

Nous aurons par exemple :

Var oui__ou__non : boolean;trouve : boolean;

char

Caractère. C'est une chaîne de longueur 1 caractère. Nous aurons par exemple :

Var lettre : char;

integer

Nombre entier compris entre - 32767 et 32767.

Une distinction est faite entre entiers et réels. La raison est liée à des contraintes technologiques qui font que les deux types de nombres ne sont pas représentés de la même manière en mémoire, et par là même, ils ne peuvent subir les mêmes opérations.

Nous aurons par exemple :

Var i,j : integer;début : integer;

real

Nombres réels compris entre - 1E37 et“1 E37

Ces nombres sont représentés en notation flottante de la manière suivante :

Nous aurons par exemple :

Var x, y : real; résultat : real;

Page 5: 4/4.2 La programmation structurée en PASCAL

Turbo PASCAL : Définitions et rappels de base Partie 4 Chapitre 4.2 page 5

Partie 4 : Langages du CPC

string

Chaîne alphanumérique de longueur maximale 255 caractères.

Ces ordres de manipulations de chaînes sont :

Copy, Concat, Delete, Insert, Length, Pos, Str, Val

Nous aurons par exemple :

Var Nom : string[15J;

Prénom : string[15];

Adresse : string[80];

array

Un tableau est un ensemble de variables indicées de même type acces­sibles par un nom de tableau et un indice dans le tableau.

Nous aurons par exemple :

Var table : array [1..10] of real;

Type résultat : array [1..100] of integer;

Var res1 : résultat;res2 : résultat;

record

Un enregistrement est une structure de données constituée d'un nom­bre fixe de données hétérogènes appelées champs.

Reportez-vous à l'instruction « with » qui facilite la manipulation des varia­bles de type record. (Voir Partie 4 chap. 4.3.)

Nous aurons’par exemple :

type mes__amis = record

Nom : string[15];

Prénom : string[1 5];

Adresse : string[3O];

Téléphoné: string[11);

Age : integer;

end;

1er Complément

Page 6: 4/4.2 La programmation structurée en PASCAL

Partie 4 Chapitre 4.2 page 6 Turbo PASCAL : Définitions et rappels de base

Partie 4 : Langages du CPC

set

Un ensemble est un regroupement de variables de même nature. Par exemple, nous pourrons définir l'ensemble des caractères alphanuméri­ques comme :

type

Alpha = set of ['A'..'Z', 'a'./z', 'O'..'9'J;

D'une façon générale, un ensemble sera défini dans le bloc de déclara­tion des types par les mots-clés "set of", et réutilisé pour définir le type d'une ou plusieurs variable(s) dans le bloc de déclaration des variables.

file of

Un fichier est une collection de données du même type qui peuvent être manipulées en mémoire ou sur disque.

Pour pouvoir être manipulé, un fichier doit d'abord être défini dans le bloc de déclaration des types, puis affecté à une variable dans le bloc de déclaration des variables comme suit :

type

fichier = file of record

Nom : string[15J;

Prénom : string[15J;

Adresse : string[30J;

Téléphoné: stringfll];

Age : integer;

end;

var

ami : fichier;

Pour faciliter la manipulation des fichiers, des ordres spéciaux ont été implémentés dans le Turbo PASCAL. Il s'agit de : Assign, Close, Erase, Flush, Read, Rename, Reset, Rewrite, Seek, Write.

De même, des fonctions ont été créées. Il s'agit de : EOF, Filepos et Filesize.

Un pointeur permet de définir une variable dont la taille peut varier dans le temps : une variable (pointeur) contenant l'adresse d'une autre varia­ble permet d'accéder à cette dernière.

Un pointeur devra être déclaré dans le bloc de déclaration des types en faisant référence à un autre type (souvent Record), puis être affecté à une ou plusieurs variables dans le bloc de déclaration des variables.

Page 7: 4/4.2 La programmation structurée en PASCAL

Turbo PASCAL : Définitions et rappels de base Partie 4 Chapitre 4.2 page 7

Partie 4 : Langages du CPC

type

ptr = mes__amis;

mes__amie record

Nom : string[15];

Prénom : string[15J;

Adresse : string[30];

Téléphoné: string[11);

Age : integer;

end;

var

ptr__amis : p;

2. Types définis par l'utilisateur

intervalle

Ce type permet d'affecter un sous-ensemble ordonné d'ensemble déjà défini (mis à part l'ensemble des réels dont on ne peut extraire un sous- ensemble pour l'affecter à un type intervalle.) Nous aurons par exemple :

type lettre-majuscule = 'A'..'Z';

lettre-minuscule = 'a'..'z';

chiffre = '0'..'9';

mois = janvier..décembre;

scalaire

Un type scalaire défini par l'utilisateur (appelé scalaire déclaré) permet de définir des ensembles finis en indiquant, dans l'ordre, les éléments de cet ensemble.

Par exemple, nous définirons le scalaire mois__de__l'annee de la façonsuivante :

type

mois__de_J'annee = (Janvier,Février,Mars,Avril, Mai, Juin, Juillet, Août,Septembre,Octobre, Novembre,Décembre) ;

Les ordres Suce (successeur), Pred (prédéces­seur) et Ord (valeur ordinale) sont appliquables à de tels types.

7er Complément

Page 8: 4/4.2 La programmation structurée en PASCAL

Partie 4 Chapitre 4.2 page 8 Turbo PASCAL : Définitions et rappels de base

Partie 4 : Langages du CPC

Toutes sortes de types peuvent être créés à partir des types de base. Par exemple, nous pourrons créer les types suivants :

type

courte__chaîne = string[2O];

longue__chaîne = string[80];

table 1 = array [1 ..10] of integer;

table 2 = array [1 ..10, 1..5] of courte chaîne;

D. Constantes

Les constantes sont des entités qui sont définies une fois pour toutes dans le bloc de définition des constantes, et dont la valeur ne peut être redéfinie dans le cours du programme.

Les constantes peuvent être des nombres entiers ou réels ou des chaî­nes de caractères.

<constante> = <valeur numérique ou alphanumérique>

Les quatre constantes suivantes sont définies dans le Turbo PASCAL debase :

Pi

False

True

Maxint

3.1415926536 E + 00

Faux

Vrai

32767

type Real

type Boolean

type Boolean

type Integer

E. Variables

Toute variable utilisée dans un programme, une procédure ou une fonc­tion doit être déclarée dans le bloc de déclaration des variables. La décla­ration consiste à donner le nom de la variable suivi de son type. Le type peut être un des types prédéfinis dans le Turbo PASCAL ou un type défini par l'utilisateur.

<nom de variable> : <type de la variable>

F. Procédures et fonctions

Une procédure est un programme à part entière et est définie dans un programme avant le premier begin. Une procédure peut posséder ses propres variables (variables locales) ou faire appel, et éventuellement modifier les variables du programme principal (variables globales). Une procédure est activée par son nom, à l'intérieur d'une autre procédure, d'une fonction ou du programme principal.

Une fonction est un programme à part entière dont le but est d'effec­tuer un ou plusieurs calcul(s) et de le(s) renvoyer dans une variable. Pour ce faire, une fonction (au même titre qu'une variable) possède un type :

Page 9: 4/4.2 La programmation structurée en PASCAL

Turbo PASCAL : Définitions et rappels de base Partie 4 Chapitre 4.2 page 9

Partie 4 : Langages du CPC

le type de la valeur qui sera fournie en sortie. Une fonction est activée par son affectation à une variable du même type, à l'intérieur d'une pro­cédure, d'une autre fonction ou du programme principal.

G. Programme principal

Il doit commencer par l'ordre « begin » et finir par l'ordre « end ». Il peut faire appel à toutes les procédures et fonctions définies dans le bloc pré­cédent, et manipuler toutes les variables dont le type a été défini dans le bloc de déclaration des variables. Il peut également faire appel à tou­tes les variables et structures prédéfinies de Turbo PASCAL.

Normalement, le programme principal doit être très court. Il doit se contenter d'enchaîner logiquement les procédures et fonctions qui ont été définies précédemment sans descendre au niveau élémentaire (les procédures et fonctions sont là pour ça I).

1er Complément

Page 10: 4/4.2 La programmation structurée en PASCAL

Partie 4 Chapitre 4.2 page 10 Turbo PASCAL : Définitions et rappels de base

Partie 4 : Langages du CPC