• Aucun résultat trouvé

[PDF] Formation sur les types du langage Pascal pdf | Cours informatique

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Formation sur les types du langage Pascal pdf | Cours informatique"

Copied!
32
0
0

Texte intégral

(1)

Sommaire

PRESENTATION ... 4

LE PROGRAMME SOURCE, LE PROGRAMME COMPILE ... 4

LES SPECIFICITES DE TURBO PASCAL 3.0 ... 4

L’édition, la compilation ... 4

Les touches de fonction F7, F8 ... 4

La séquence ce touches Ctrl-K, C ... 4

La séquence de touches Ctrl-K, W, Ctrl-K, R ... 4

Les directives ... 5

LES ETIQUETTES ET LE BRANCHEMENT DIRECT [LABEL, GOTO] ... 5

LA SORTIE [EXIT, HALT] ... 5

HISTORIQUE ... 7 LA NAISSANCE DE PASCAL ... 7 L’EVOLUTION DE PASCAL ... 7 LE P CODE ... 7 LES BASES ... 9 INTRODUCTION ... 9 Les identificateurs ... 9 Les règles ... 9 LA STRUCTURE DU PROGRAMME ... 9

Indiquer le nom du programme [Program] ... 9

Définir un bloc [Begin, End] ... 9

Insérer un commentaire [(* *) { }] ... 9

LE CONTROLE DE L’ECRAN ... 10

Afficher un texte [Write, WriteLn] ... 10

Positionner le curseur [GotoXY ... 10

Contrôler l’affichage [ClrScr, Delay, DelLine, InsLine, CtrEol] ... 10

LA PRESENTATION ... 10

Le débordement de ligne ... 10

Les conseils ... 10

LA DECLARATION, L’ASSIGNATION ... 13

LES VARIABLES ... 13

Nommer une variable ... 13

Evaluer une variable ... 13

DECLARER UNE VARIABLE [VAR] ... 13

AFFECTER UNE VALEUR A UNE VARIABLE... 14

Affecter une expression à une variable [:=] ... 14

Affecter une valeur lue au clavier à une variable [Read] ... 14

LES OPERATEURS ... 15

INTRODUCTION ... 15

LES OPERATEURS ARITHMETIQUES [*, /, DIV, MOD, +, -] ... 15

LES OPERATEURS DE COMPARAISON [<, >, =, <>, <=, >=]... 15

LES FONCTIONS ARITHMETIQUES [ABS, COS, EXP, FRAC, ...] ... 16

REMARQUES ... 16

(2)

Bruno Delb

http://www.brunodelb.com Date : 14/04/2001

Le langage Pascal

2 LES REPETITIONS ... 19 INTRODUCTION ... 19 LA BOUCLE WHILE ... 19 Algorithme de While...Wend ... 19 LA BOUCLE REPEAT ... 20 LA BOUCLE FOR ... 20

Les paramètres To et DownTo ... 20

La fréquence de Begin .. End dans For ... 20

Algorithme de For ... 21

REMARQUES ... 21

La boucle d'attente ... 21

Utiliser For avec précaution ... 22

LES CONDITIONS ... 23

DEFINITION ... 23

LE DOMAINE DE DEFINITION ... 23

TESTER UNE EXPRESSION EN FONCTION DE PLUSIEURS VALEURS [CASE] ... 23

Remarques ... 24

Combiner plusieurs constantes ... 24

LES CONDITIONS [IF, THEN, ELSE] ... 24

REMARQUES ... 25

Une erreur classique ... 25

Les tests en cascade ... 25

LES PROCEDURES ET LES FONCTIONS ... 27

LE BLOC D'INSTRUCTIONS ... 27

LES TYPES DE VARIABLE ... 27

La variable globale ... 27

La variable locale ... 27

LA PROCEDURE [PROCEDURE] ... 27

Appeler une procédure à partir d'une autre procédure ... 27

Les méthodes d'appel d'une procédure ... 28

LES FONCTIONS ... 28

Appeler une fonction ... 28

Affecter la valeur d'une fonction ... 28

La définition n'intervenant qu'après appel... 29

REMARQUES ... 29

La programmation modulaire ... 29

Différencier variable globale et variable locale ... 29

Les paramètres d'entrée, de sortie, mixte ... 29

L’effet de bord ... 29

LES TYPES DE STRUCTURES ... 30

LES CONSTANTES ... 30

Modifier une constante [=] ... 30

Déclarer une constante [Const] ... 30

Utiliser une expression dans la déclaration ... 30

LES TYPES SCALAIRES... 30

Déclarer un type scalaire ... 30

Le type ordinal ... 30

LES TABLEAUX [ARRAY] ... 31

Accéder à un élément ... 31

Utiliser des tableaux multidimensionel ... 31

Le type sous-porté ... 31

L’ENSEMBLE ... 31

Effectuer des opérations sur un ensemble ... 32

(3)
(4)

Bruno Delb

http://www.brunodelb.com Date : 14/04/2001

Le langage Pascal

4

Présentation

Le programme source, le programme compilé

Un programme écrit en Pascal est appelé programme source. Il n'est pas compréhensible directement par l'ordinateur. Pour qu'il puisse être exécuté, il faut procéder à une autre étape : la compilation. C'est là tout le rôle de Turbo Pascal. Le résultat est un programme en langage machine.

Les spécificités de Turbo Pascal 3.0

L’édition, la compilation

Turbo Pascal fournit un petit éditeur de texte. Pour y accéder, il suffit de presser E lorsque vous êtes au menu. Pour compiler un programme source, pressez C. Il sera compilé en mémoire. Si vous voulez le compiler en créant un fichier COM, pressez O (Options), puis C (Com-File), Q (Quitter le menu des options) et enfin C (Compile). Pour l'exécuter il ne vous restera plus qu'à quitter Turbo Pascal et à lancer le fichier COM.

Les touches de fonction F7, F8

Les touches du bloc curseur remplissent les fonctions usuelles d'édition. Les touches de fonction F7 et F8 délimitent respectivement le début et la fin d'un bloc.

La séquence ce touches Ctrl-K, C

Les touches Ctrl-K puis C recopie le bloc sélectionné par F7 et F8 à l'endroit positionné par le curseur. Les touches Ctrl-K puis Y effacent le contenu de ce bloc.

La séquence de touches Ctrl-K, W, Ctrl-K, R

Les touches Ctrl-K puis W permettent d'enregistrer sur disque le bloc sélectionné, tandis que Ctrl-K puis R effectue le contraire : la lecture du bloc.

(5)

Les directives

Vous pouvez fournir une directive de compilation à Turbo Pascal :

"{$lettre}", lettre désignant une lettre ou un groupe de lettres d'une ou de directives de compilation.

Voici une liste de directives de Turbo Pascal : Directive Description

{$I+} Contrôle des Entrées - Sorties autorisé (par défaut) {$I-} Contrôle des Entrées - Sorties interdit

{$V+} Test de la longueur d'une chaîne autorisé (par défaut)

{$V-} Test de la longueur d’une chaîne interdit {$R+} Contrôle de l'index de champ autorisé

{$R-} Contrôle de l’index de champ interdit (par défaut)

Les étiquettes et le branchement direct [LABEL, GOTO]

L’utilisation de Label et de Goto est une mauvaises habitudes. Turbo Pascal admet les instructions :

Label NOM ... ... Goto NOM

L'intérêt d'une telle instruction est visible par exemple dans le cas suivant :

Si erreur Alors Faire

Message d'erreur

Aller à la fin du programme FinFaire

Corps du programme

La sortie [EXIT, HALT]

Deux autres instructions sont aussi utilisées :

Exit quitte le bloc programme courant Halt quitte le programme

(6)
(7)

Historique

La naissance de Pascal

Pascal est un langage de programmation créé en 1963 par le Professeur Niklaus Wirth de l'Eidgenossisch Technische Hochshcule de Zurich. Il a pris naissance après constatation de Dahl et de Dijkstra que 50 % du coût de l'élaboration d'un logiciel incombait à la maintenance, contre 10 % seulement pour la première écriture du programme. Ceci explique la naissance d'un langage de science exacte, et non pas artistique.

Wirth s'est inspiré de l'Algol, et a doté Pascal d'une certaine cohérence (il en est le seul auteur, au contraire de Ada), d'une simplicité, et d'une efficacité.

L’évolution de Pascal

Plusieurs versions ont été dès lors créées :

 première version à Zurich sur un CDC 6000

 implantation sur micro-ordinateurs effectuée par Kenneth BOWLES de l'Université of California at San Diego (UCSD) : version optimisée (overlays, librairies, utilisation statistiques pour la fréquence des instructions, ...),

 beaucoup d'autres : TINY PASCAL, PASCAL MT+, PASCAL JRT, ...  et maintenant le phénomène TURBO PASCAL.

Le P Code

Dès l'origine apparut l'idée suivante =

 le programme source est transformé en P Code, véritable langage indépendant de la machine (90 % du travail total à fournir).

 le P Code, comprit par une machine virtuelle (P Machine) est alors transformé en langage machine sur la machine spécifique (10 % du travail total à fournir).

(8)
(9)

Les bases

Introduction

La syntaxe est un ensemble de règles d'utilisation des mots, nombres et ponctuation.

Les identificateurs

Les noms, ou identificateurs, sont fournis dans les procédures, fonctions et variables. Un identificateur reconnait au maximum huit caractères. Toutefois, vous pouvez en utiliser plus, à condition cependant de ne pas oublier que seuls les huit premiers seront reconnus par le langage.

Les règles

Il y a trois règles pour les identificateurs :

 ils doivent tous commencer par une lettre

 les caractères suivant le premier doivent être soit une lettre soit un chiffre, et rien d'autre

 les mots réservés ne peuvent être utilisés comme noms d'identificateurs.

La structure du programme

Indiquer le nom du programme [Program]

Un programme doit commencer par le mot réservé PROGRAM suivi du caractère ; (point virgule).

Définir un bloc [Begin, End]

Puis il faut fournir le jeu d'instruction dans le « Block Statement », qui comprend à la fois BEGIN et END. A l'unique exception « END. », tous les ordres du programme doit finir par un point-virgule.

Enfin, tous les ordres du programme principal sont décalés de trois espaces par rapport à BEGIN.

Insérer un commentaire [(* *) { }]

Des commentaires peuvent être ajoutés n'importe où dans un programme. Ils sont introduits par (* et terminés par *). Ils seront ignorés aussi bien lors de l'exécution du programme que lors de la compilation du source.

(10)

Bruno Delb

http://www.brunodelb.com Date : 14/04/2001

Le langage Pascal

10

Le contrôle de l’écran

Afficher un texte [Write, WriteLn]

Les ordres WRITE et WRITELN affichent des messages à l'écran. WRITE permet d'afficher plusieurs mots, tandis qu'à chaque exécution de WRITELN, un saut de ligne et un retour chariot sont opérés.

Positionner le curseur [GotoXY

On peut également déplacer le curseur sur l'écran par emploi de l'ordre GOTOXY. Le coin supérieur gauche correspond au point de coordonnées 0,0. Le point de coordonnées 1,1 correspond au point situé à l'intersection de la deuxième colonne et de la deuxième ligne.

Contrôler l’affichage [ClrScr, Delay, DelLine, InsLine, CtrEol]

De plus, Pascal met à votre disposition un certain nombre d'instructions très utiles :

Instruction Description

ClrScr Efface l'écran et place le curseur en haut à gauche de l'écran Delay Attend Temps millisecondes

DelLine Efface la ligne contenant le curseur InsLine Insère la ligne contenant le curseur

CtrEol Efface de la position du curseur jusqu'à la fin de la ligne

La présentation

Le débordement de ligne

Dans l'éventualité où la liste des paramètres ne tienne pas sur une ligne, arrangez-vous, si possible, de faire aligner les suivants avec les précédents.

Les deux ordres WRITELN (liste de données); et WRITE (liste de données); WRITELN;

sont équivalents.

Lorsqu'une assignation d'une expression à une variable est faite et qu'elle ne tient pas sur une ligne, la suite est inscrite juste sous la partie précédente de l'expression. Pour READ et READLN, c'est la même chose que pour WRITE et WRITELN.

Les conseils

Les abréviations

Premier conseil : dans la limite du possible, évitez de dépasser huit caractères de longueur pour les noms d'identificateurs, afin d'éviter le conflit de nomrs dû à d'éventuelles duplication. Essayez donc d'utiliser des

(11)

abréviations standards, comme lorsque vous prenez des notes lors d'une conférence.

Dans le même ordre d'idées, évitez de trop abréger les noms d'identificateurs puisqu'il y a alors risque de créer des noms qui se ressemblent, source d'erreur.

Les commentaires

Deuxième conseil : afin de faciliter la compréhension du programme, placez des commentaires entre les BEGIN...END.

Un commentaire placé au début renseigne sur l'auteur, la date d'écriture, le numéro de la version, ...

Les paramètres

Troisième conseil : les paramètres (ce qui est situé entre parenthèses), devraient être séparés par une virgule (,), suivi d'un espace ( ), le tout pour faciliter la relecture du programme. De même, il serait judicieux de placer un espace juste aprsès la parenthèse d'ouverture.

(12)
(13)

La déclaration, l’assignation

Les variables

Les variables sont des emplacements dans la mémoire de l'ordinateur. Elles portent chacunes un nom. Vous devez déclarer lesquelles seront utilisées, ainsi que les genres de valeurs qu'elles prendront.

Nommer une variable

Chaque nom de variable est décalé de trois espaces de VAR. A sa droite, doit figurer un commentaire explicitant son utilisation. Chaque type de variable est décalé de trois espaces, suivant la syntaxe « : type; ». Pour ce qui est des attributs de longueur (entre accolades), le même traitement est fait que pour les parenthèses.

Evaluer une variable

Le résultat d'une opération arithmétique sera réel si l'un au moins des facteurs est réel.

Déclarer une variable [Var]

VAR est le mot réservé qui indique à l'ordinateur que vous allez utiliser des variables. Leur nom et leur champ de valeur sera indiqué juste après VAR. La déclaration VAR doit être décalée de trois espaces, et une ligne doit être sautée à la fois avant l'ordre VAR et après la dernière variable déclarée. L'ordre VAR reconnait les types suivants.

Type Description

Integer Nombre entier compris entre 32767 et - 32768 Byte Sous ensemble de INTEGER, compris entre 0 et 255

String Chaîne de caractères d'au plus 80 caractères s'il figure [nombre] juste après STRING, alors la chaîne est limitée au nombre indiqué entre parenthèse (limite supérieure fixée à 256)

Char Un seul caractère

Boolean Contient la valeur TRUE (vrai) ou FALSE (faux)

(14)

Bruno Delb

http://www.brunodelb.com Date : 14/04/2001

Le langage Pascal

14

Affecter une valeur à une variable

Affecter une expression à une variable [:=]

« Assignation directe » range une valeur directement dans une variable. Le symbole « := » est alors placé entre le nom de la variable (à gauche) et la valeur (à droite).

Le schéma d'une affectation directe est le suivant : Variable_Réceptrice := Expression_Source;

Une expression étant une suite hiérarchisée d'opérations élémentaires. Notez que le résultat d'une opération arithmétique est réel si l'un au moins des facteurs est réel.

Affecter une valeur lue au clavier à une variable [Read]

L'ordre READ permet à l'ordinateur de capter une donnée en cours d'exécution du programme. Utilisez READ si un « enter » (ou return) n'est pas obligatoire à la fin de la saisie. Sinon, employée READLN.

Les variables BOOLEAN ne peuvent recevoir de valeur qu'en assignation directe. Avec les variables CHAR, READ est utilisé, mais la plupart du temps, ce sera READLN, puis qu'un return est le plus souvent demandé.

(15)

Les opérateurs

Introduction

Les opérateurs arithmétiques sont des symboles qiu indiquent à l'ordinateur d'effectuer certaines opérations mathématiques. On peut citer l'addition, la division, ... Ils sont utilisés avec des variables de type entier (INTEGER ou LONG INTEGER) ou réel (REAL).

Les opérateurs arithmétiques et de comparaison sont précédés et suivis d'un espace.

De plus, les expressions logiques (utilisant la logique booléenne) contenant plusieurs opérateurs doivent utiliser des parenthèses.

Les opérateurs arithmétiques [*, /, Div, Mod, +, -]

Ces opérateurs standards sont : Opérateur Description

* Multiplication

/ Division

DIV Division d'entiers

MOD Module (le reste, nombre entier, de la division de X par Y)

+ Addition

- Soustraction

Remarque : les résultats, sauf exception indiquée, sont des nombres réels.

Les opérateurs de comparaison [<, >, =, <>, <=, >=]

Voici maintenant une liste des opérateurs de comparaison : Opérateur Description

< plus petit que > plus grand que

= égal à (différent de :=) <> différent

>= plus grand ou égal à (dans cet ordre !)

<= plus petit ou égal à (dans cet ordre !)

(16)

Bruno Delb

http://www.brunodelb.com Date : 14/04/2001

Le langage Pascal

16

Note : les comparaisons sont effectuées de la même manière pour les chaînes de caractères que pour les nombres. Un « A » est « plus petit » qu'un « B » ! (voir les codes ASCII pour plus de précisions).

Les fonctions arithmétiques [Abs, Cos, Exp, Frac, ...]

Voici d'autres fonctions arithmétiques disponibles : Fonction Description

Abs (Nombre) Renvoit la partie absolue de nombre ArcTan (Nombre) Renvoit l'arc-tangente de nombre Cos (Nombre) Renvoit le cosinus de nombre Exp (Nombre) Renvoit l'exponentielle de nombre Frac (Nombre) Renvoit la partie décimale de nombre Int (Nombre) Renvoit la partie entière de nombre (en réel) Ln (Nombre) Renvoit le logarithme népérien de nombre Pred (Nombre) Equivaut à Nombre := Nombre - 1 Sin (Nombre) Renvoit le cosinus de nombre Sqr (Nombre) Renvoit le carré de nombre Sqrt (Nombre) Renvoit la racine carrée de nombre

Round (Nombre) Renvoit l'arrondi à l'entier le plus proche de nombre (en entier)

Trunc (Nombre) Renvoit la partie entière de nombre (en entier) Random Renvoit un nombre aléatoire compris entre 0 et 1 Random (Nombre) Renvoit un nombre aléatoire compris entre 0 et

nombre

Succ (Nombre) Equivaut à Nombre := Nombre + 1

Remarques

L’ordre des priorités

Après avoir tenu compte des priorités des opérateurs, l'ordinateur effectue les calculs de gauche à droite.

Voici l'ordre de priorité des opérateurs :

 d'abord les multiplications et les divisions (*, /, DIV, MOD)  ensuite les additions et les soustractions (+, -)

Toutefois, vous pouvez indiquer à l'ordinateur d'effectuer un groupe d'opérations avant les autres (quelque soit leur degré de priorité). Ce groupe est délimité par des parenthèses, de la même manière qu'en mathématiques.

Note : pour effectuer les calculs, vous pouvez intégrer des opérateurs dans des expressions d'assignation de variables.

(17)

Les erreurs d'approximation

Attention, rappelez-vous que l'ensemble mathématiques de la machine n'est pas continu, à cause du manque de précision de l'ordinateur. Il peut donc arriver que certains résultats semblent présenter des erreurs.

(18)
(19)

Les répétitions

Introduction

Un des grands intérêts de l'ordinateur est la possibilité de répéter de nombreuses fois une même tâche. Les instructions de boucle ont donc été créés. Ils permettent donc de faire répéter une séquence d'instructions en un minimum d'instructions.

Voyons While et Repeat. Ils permettent la répétition d'une série d'ordres un certain nombre de fois. Ce nombre n'est pas pré-défini, puisque la boucle est effectuée tant que la condition indiquée est remplie.

La boucle While

La syntaxe de la boucle « while » est :

WHILE expression DO ordre;

Algorithme de While...Wend

J := a

Tant que <condition> et (J <= b) faire Commencer

(ordres)

J = J + pas (équation de définition) Fin

Fin de tant que

La condition d'arrêt est :

 si p > 0 : (j > b) et (condition fausse)  si p < 0 : (j < b) et (condition fausse) ou encore, cas particulier :

Tant que <condition> faire Commencer

(ordres) Fin

Si une seule instruction, on peut écrire Tant que "<condition> faire <ordre>"

(20)

Bruno Delb

http://www.brunodelb.com Date : 14/04/2001

Le langage Pascal

20

La boucle Repeat

Et celle de la boucle « repeat » : "REPEAT ordre UNTIL expression;" où expression a un rôle de valeur booléenne.

L'algorithme de Repeat .. Until est le suivant :

Faire varier J de n à b par pas de p tant que <condition> Pour chaque J

(ordres) FinFaire

La boucle For

Voyons maintenant la boucle FOR. Sa syntaxe est "FOR variable:= expression1 TO expression2 DO ordre;" (parcours séquentiel en sens croissant) ou "FOR variable:= expression1 DOWNTO expression2 DO ordre;" (parcours séquentiel en sens décroissant).

Notez que la variable et les expressions doivent être du même type. De plus, le nombre de fois que la boucle est exécuté est égal à la différence entre les expressions plus un. La variable est utilisée comme compteur, ou variable de contrôle, et contient toutes les valeurs entières comprises entre expression1 et expression2.

Les paramètres To et DownTo

TO dit à l'ordinateur d'incrémenter le compteur. DOWNTO fait l'opposé : il y a décrémentation. Si avec TO, expression1 est inférieur à expression2, (ou le contraire avec DOWNTO), alors la boucle n'est pas du tout exécutée.

La fréquence de Begin .. End dans For

Les ordres entre BEGIN et END peuvent être aussi nombreux que vous le voulez. Toutefois, vous ne pourrez pas utiliser la variable de nom celui du compteur, sauf action précise sur le compteur recherchée. De plus, à la sortie de la boucle, la variable de contrôle doit être considérée comme ayant une valeur non définie. En ce sens, que sa valeur aura été altérée par la boucle.

(21)

Algorithme de For

Pour mieux comprendre les boucles de parcours conditionnelles, étudiez les deux algorithmes suivants :

Algorithme de FOR...NEXT :

(initialisation induites)

Faire varier J de a à b par pas de p tant que <condition> Pour chaque J

(ordres) FinFaire

(opérations finales)

Il y a deux critères d'arrêt, qui constituent ainsi une formulation d'une limite absolument nécessaire.

 si p>0, ils sont J>b et condition fausse  si p<0, ils sont J<b et condition fausse

Naturellement, la condition d'arrêt doit être réalisable en un nombre fini d'itérations.

Remarques

La différence entre WHILE et REPEAT est que REPEAT vérifie l'expression à la fin de la boucle, alors que WHILE le fait, mais au début. Donc REPEAT est exécuté au moins une fois, alors que pour WHILE, ce n'est pas obligatoire.

REPEAT implique la présence de BEGIN...END. Et même, si vous l'ommettez, l'ordinateur en place une, mais « invisible ».

Mêmes conseils à appliquer que pour les autres chapitres : décaler de trois espaces les ordres situés dans les boucles fermées par FOR, WHILE ou REPEAT. Rappelez-vous cependant que la structure BEGIN..END n'est pas nécessaire dans une boucle REPEAT.

La boucle d'attente

En plaçant un point-virgule (;) juste après DO, vous générez une boucle d'attente, c'est-à-dire qu'un certain laps de temps s'écoule sans qu'aucune instruction ne soit exécutée.

(22)

Bruno Delb

http://www.brunodelb.com Date : 14/04/2001

Le langage Pascal

22

Utiliser For avec précaution

De plus, prenez garde à ceci. La structure :

FOR I := 1 TO 10 DO FOR J := 1 TO 10 DO BEGIN END; BEGIN END;

est valide. Mais la structure suivante est invalide :

FOR I := 1 TO 10 DO BEGIN FOR J := 1 TO 10 DO END; BEGIN END;

(23)

Les conditions

Définition

Les ordres de condition constituent le coeur de tout programme effectuant une « décision ». Grâce à celles-ci, l'ordinateur devient très puissant.

Ces instructions sont :

IF expression THEN ordre;

ou

IF expression THEN ordre ELSE ordre;

où expression est de type booléen, et ordre est soit un ordre seul, ou alors une structure du type BEGIN..END.

Dans le premier cas, si (IF) l'expression est vraie, alors (THEN) exécute les ordre(s) suivants.

Dans le second cas, si (IF) l'expression est vraie, alors (THEN) exécute les ordre(s) suivants sinon (ELSE) exécute ces autres ordres.

IF..THEN..ELSE constitue un irdre en lui-même et doit donc satisfaire à la « règle du point-virgule ».

Le domaine de définition

Un algorithme est conçu pour un groupe de données (ou paramètres) dont le domaine de validité présente souvent des restrictions par rapport à leur ensemble de définition.

Tester une expression en fonction de plusieurs valeurs [Case]

Il existe un autre genre d'ordre conditionnel : CASE. La syntaxe est :

CASE expression OF constant: ordre; constant: ordre; ... ... constant: ordre; END;

L'instruction CASE permet de choisir un traitement, et un au plus, parmi plusieurs, en fonction d'un critère. Si aucune condition n'est remplie, il y a erreur. Si une condition est remplie, alors seul le traitement correspondant est exécuté, puis le programme reprend à la suite.

(24)

Bruno Delb

http://www.brunodelb.com Date : 14/04/2001

Le langage Pascal

24

Remarques

L'expression et les constantes doivent évidement être du même type ! De plus, la constante ne peut être une variable.

Notez que là aussi, comme pour la boucle REPEAT, cette instruction a un BEGIN induit, mais pas un END cette fois. De plus, vous n'avez pas le droit de placer une BEGIN.

Combiner plusieurs constantes

Au cas où vous voulez combiner plusieurs constantes, en ce sens que si expression est égal à constante1 ou à constante2, ... vous devez placer les différentes constantes les unes après les autres, séparées chacunes d'une virgule. Nous vous conseillons toutefois de placer la première constante sur la première ligne, la seconde sur la seconde, ...

Les constantes sont décalées de deux ou trois espaces. Les commentaires seront plutôt placés à la fin des instructions CASE et IF.

Les conditions [If, Then, Else]

Toujours les conseils pour facilité la relecture et la compréhension du programme.

Tout d'abord, les ordres utilisés dans l'ordre IF doivent être décalés de 2 ou 3 espaces. Si vous utilisez un ELSE, il doit venir se placer sous le IF, et même chose pour ses ordres que pour IF.

Notez aussi que raccorder ELSE à l'ordre IF peut aider à identifier rapidement une instruction de branchement.

Le schéma d'un test est :

SI hypothèse satisfaite

ALORS (* donnée correcte *) lancer l'algorithme SINON erreur de donnée

Ainsi, si la condition est remplie alors le premier traitement, et lui seul, est lancé (lancer l'algorithme). Si elle est fausse, alors seul le second traitement, et lui seul, est lancé (erreur de donnée).

(25)

Remarques

Une erreur classique

Attention l'erreur classique de placer un point-virgule (;) devant le ELSE ! Un IF est suivi d'un point-virgule si et seulement s'il précède une autre instruction dans le même groupe BEGIN.

Les tests en cascade

Remarquez l'intérêt des tests en cascade : il permettent d'améliorer les performances d'un programme, en y effectuant le minimum indispensable de tests.

(26)
(27)

Les procédures et les fonctions

Le bloc d'instructions

Chaque bloc en Pascal est identifié par un nom. Immédiatement après ce nom, se trouve le bloc lui-même, délimité par BEGIN..END.

La syntaxe est la suivante :

Nom (entrée : x, y, z; sortie : a, b);

a et b constituent les paramètres formels x, y et z constituent les paramètres effectifs

Les types de variable

La variable globale

Une variable déclarée en début de programme est dite variable globale, puis qu'elle sera utilisée partout dans le programme.

La variable locale

Si une variable est déclarée à l'intérieur d'un bloc autre que le bloc principal, la variable est appelée variable locale. Celle-ci ne peut être accédée qu'à partir du bloc où elle a été déclarée.

La procédure [Procedure]

Elle est similaire au programme (PROGRAM). Toutefois, il existe deux différences :

 le mot réservé PROCEDURE est utilisé à la place de PROGRAM  le END est suivi d'un point-virgule à la place d'un point.

L'objectif majeur d'une procédure est d'effectuer une tâche spécifique. Cette tâche, ou routine, est généralement exécutée plus d'une fois, et souvent appelée de divers endroits du programme.

Appeler une procédure à partir d'une autre procédure

Attention aussi à une chose : une procédure B peut appeler une procédure A à la seule condition que la définition de A figure avant celle de B. De plus, il doit alors y avoir correspondance absolue entre ces paramètres (même nombre, même type). De même, une constante, une variable, une procédure, ou une étiquette déclarée à l'intérieur d'une procédure n'est

(28)

Bruno Delb

http://www.brunodelb.com Date : 14/04/2001

Le langage Pascal

28

Les méthodes d'appel d'une procédure

Il existe deux méthode pour appeler une procédure :

L’appel par valeur (paramètres récepteurs)

Une valeur est passée et utilisée localement dans la procédure.

Les variables encadrées de parenthèses sont locales à la procédure et nommées paramètres formels. La déclaration de ces paramètres formels se fait de façon similaire à celle faite avec VAR.

La liste de paramètres associée à l'ordre d'appelle d'une procédure constitue les paramètres actuels. Les paramètres formels et ceux actuels doivent se correspondre en type, en ordre, et en nombre.

L’appel par adresse (ou paramètres variables ou vrais)

Les paramètres variables permettent aux procédures d'utiliser et de retourner une valeur dans le paramètres actuel.

Différences entre les deux méthodes

Trois grandes différences marquent les deux méthodes :

 les paramètres variables permettent le retour d'information d'une procédure par utilisation de la liste de paramètres, pas l'autre méthode.

 un paramètre actuel DOIT être une variable lorsque vous utilisez des paramètres variable. Une valeur littéralle peut être passée à une valeur de paramètre de type STRING, mais pas à un paramètre variable.

 vous définissez une paramètre variable dans une liste de paramètres en plaçant un préfixe VAR.

Les fonctions

Une différence entre une fonction et une procédure est le changement du mot réservé utilisé.

Après le nom d'une fonction, il faut spécifier le type de valeur que la fonction retournera. Cette valeur doit être de type simple (INTEGER, BOOLEAN, REAL, ou CHAR).

Appeler une fonction

Une autre différence réside dans l'appel d'une fonction.

En effet, il suffit d'utiliser son nom n'importe où Pascal de placer une expression.

Affecter la valeur d'une fonction

Remarque : nous ne pouvons assigner une valeur à la valeur de la fonction qu'à partir d'elle-même.

(29)

La définition n'intervenant qu'après appel

Dans des cas bien précis, il peut être utile de déclarer une fonction ou une procédure après son appel dans le programme source. On utilise alors une définition avec FORWARD.

Remarques

La programmation modulaire

Les procédures permettent de réaliser une chose très intéressante, à savoir la conception d'un programme et la possibilité d'en faire ainsi un module utilisable par d'autres programmes.

Un nom sera constitué selon la structure : <VERBE><NOM>.

Ces instructions permettent dès lors une programmation modulaire, autrement dit, vous pourrez découper votre programme en plusieurs petits blocs appelés procédures et fonctions. Si une procédure « fait » plus d'une page affichable, essayez de la découper de façon logique.

Différencier variable globale et variable locale

Il pourra arriver qu'à la lecture d'une procédure ou d'une fonction, vous oubliez si une variable particulière est globale ou locale. Pour une variable locale NOM, nommer la variable correspondante globale GNOM.

Les paramètres d'entrée, de sortie, mixte

Un paramètre constitue l'interface entre la procédure et son environnement. On définit les paramètres d'entrée comme étant les données figurant dans la définition d'une procédure, et les paramètres de sortie comme étant les données retournés par une procédure. On définit également un paramètre mixte comme étant une donnée utilisée par une procédure et modifiée après.

L’effet de bord

On observe ce qu'on appelle effet de bord lorsque le programme transmet des résultats directement à une variable externe, dont sans utiliser un paramètre VAR.

(30)

Bruno Delb

http://www.brunodelb.com Date : 14/04/2001

Le langage Pascal

30

Les types de structures

Les constantes

Les constantes sont très similaires aux variables. Une constante peut être assimilée à un emplacement de la mémoire de votre ordinateur où l'information est stockée.

Modifier une constante [=]

Contrairement à une variable, vous ne pouvez pas modifier la valeur d'une constante, exception faite pour les constantes modifiables par CONST nom : type = valeur;

Déclarer une constante [Const]

La déclaration de constantes se fait comme suit :

CONST

nom = valeur;

Comme tout identificateur, nom doit suivre les règles de Pascal en ce qui concerne les identificateurs.

Utiliser une expression dans la déclaration

Pascal ne permet pas l'tilisation d'expressions lors de la déclaration de constantes, mais uniquement des valeurs directes.

Les types scalaires

Les types de données scalaires. Ces types de données permettent la comparaison d'éléments à l'intérieur de ce type. Ainsi, chaque élément d'un type de donnée scalaire doit soit plus grand, soit plus petit, ou égal à un autre élément.

Déclarer un type scalaire

Vous spécifiez un nom identificateur, puis le =, et enfin les éléments du type :

TYPE

nom = (nom1, nom2, nom3);

Le type ordinal

Les types ordinaux sont simplement une petute partue du groupe de types scalaires, ce qui veut dire que tout élément d'un type ordinal ppeut être trouvé dans un type scalaire. Toutefois, le type REAL est un type scalaire mais par un type ordinal.

(31)

Les tableaux [Array]

En gros, un tableau est ene liste de valeurs accessibles chacunes par un index (ou la position) dans le tableau.

La syntaxe est :

ARRAY [ limite inférieure..limite supérieure ] OF type;

La portée des valeurs spécifiées entre les crochets doit être de type ordinal. Les deux points (..) équivaut à « et toute valeur ordinale comprises entre ces deux valeur ».

Accéder à un élément

Chaque emplacement est accessible par spécification de l'indice (ou numéro de l'élément). Cela est fait par la simple adjonction du nom du tableau et de l'indice entre crochets.

Utiliser des tableaux multidimensionel

Les tableaux multi-dimentionels sont ceux possédant plus d'une colonne. Pour déclarer le tableau NOM à deux dimensions, vous devez écrire :

VAR

NOM: ARRAY [ 1..6, 1..2 ] OF STRING;

Le type déclarer dans un tableau peut être tout type déclaré.

Le type sous-porté

Un type « sous-porté » est un type dans lequel les éléments sont d'une portée d'un autre standard ou d'un type défini par l'utilisateur. La syntaxe de la déclaration d'un type sous-portée est :

TYPE

nomdutype = limite inférieure..limite supérieure; Var

nom : type;

L’ensemble

Un jeu est un autre type structuré qui permet de faire quelque chose avec tout élément de celui-ci en même temps.

La syntaxe de déclaration de jeux est :

TYPE

nomdejeu = SET OF typedebase;

où une fois encore nomdejeu doit suivre les règles imposées par Pascal sur les noms. Typedebase est un type dont nous choisissons des éléments qui doivent être stoqués dans le jeu.

(32)

Bruno Delb

http://www.brunodelb.com Date : 14/04/2001

Le langage Pascal

32

Effectuer des opérations sur un ensemble

Voici ci-dessous une liste d'opérations que l'on peut opérer : Opération Syntaxe

Réunion {ensemble1} + {ensemble2} Ratrait {ensemble1} - {ensemble2} Test inclus dans ? {élément} IN {ensemble} Sous-ensemble TYPE sous_ensemble = debut..fin

ARRAY [sous_ensemble] OF TYPE

Délimiter des domaines de validité

Les constantes peuvent être utilisées en particulier pour fixer le domaine (de validité, ...) d'un programme, ces limites n'étant évidement pas variables.

Utiliser les constantes pour le débogage

Une autre utilisation très pratique est celle faite pour trouver ce qui ne « tourne pas rond » dans un programme :

CONST TEST = TRUE; puis IF TEST THEN BEGIN WRITELN( 'ICI'); END;

Ainsi, suivant la valeur que vous assignerez à TEST, certaines instructions seront exécutées ou non. Ceci est donc très pratique.

Références

Documents relatifs

Let M and N be two monoids. The transduction is rational if the set.. The proof mimics the proof of Theorem 2.1.. a matrix representation) As we claimed in the introduction, these

Diagnóstico de áreas potenciais para recuperação de área degradada, em região de extração de areia, com uso de sedimento de canal de adução de água e lodo de Estação

Au moment même où la plupart des sciences dites dures prennent leur distance avec les théories déterministes notamment à travers le recours aux théories

Les garçons Roms, dont les actes de délinquance (essentiellement des actes de petite délinquance : vol, recel, escroquerie) sont fortement réprimés, ne sont certes

Dans cet article, nous présentons les caractéristiques d’un laser Fabry-Perot verrouillé par injection optique en fonction de la puissance et de la longueur d’onde

On the opposite, in the HALCA model, each polyphonic source can have its own time varying spectral envelope, and the noise component is designed so that it cannot consider

The diversity of cases that can be found in repair and maintenance studies stands as an invitation to pursue the journey, and to document the multiple ecologies of visible

In this paper, the problem of testing impropriety (i.e., second-order noncircularity) of a sequence of complex- valued random variables (RVs) based on the generalized likelihood