Section courante

A propos

Section administrative du site

 Langage  Elément  Tutoriel  Emulateur  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Introduction
Les remarques
Références de mots réservés (mots clefs)
Référence de interfaces
Référence de procédures et de fonctions
Référence des directives de compilation
MPW et le Macintosh
À propos de MPW Pascal
Les symboles
Les instructions
Fichiers et entrée/sortie
Routines prédéfinies
Programmation orientée objet
Options et directives du compilateur
Basilisk II
MPW Pascal et autres Pascals
La bibliothèque SANE
L'utilitaire PasMat
L'utilitaire PasRef
L'utilitaire ProcNames
Prise en charge du 68020
Préface
Notes légal
Dictionnaire
Recherche

Les instructions

Les instructions sont constituées d'expressions combinées à certains mots réservés. Les instructions décrivent des algorithmes et sont exécutables. Ils effectuent le travail réel du programme Pascal, en effectuant des tâches telles que donner une valeur à une variable ou fournir une exécution conditionnelle d'autres instructions.

Le MPW Pascal a 13 instructions :

Ces instructions sont discutées dans cette page.

Instructions d'affectation

L'instruction d'affectation définit la valeur d'une variable. Le symbole := peut être lu comme "fixer à". La déclaration est écrite :

La référence de variable du côté gauche identifie une variable de n'importe quel type à l'exception d'un type de fichier. Pour la plupart des variables, il s'agit simplement d'un nom d'identification, mais dans quatre cas, il s'agit d'un nom suivi d'une qualification :

Lorsque vous écrivez des associations, gardez ces règles à l'esprit :

Voici quelques exemples d'énoncés d'affectation :

  1. x:=y+z;
  2. p:=(1<=i) AND (i<100);
  3. i:=Sqr(k)-(i*j);
  4. hue1:=[blue,succ(c)];

Instructions composées

Lors de l'écriture de programmes Pascal, vous devez souvent traiter plusieurs instructions comme si elles n'en formaient qu'une seule, par exemple lorsqu'elles sont toutes exécutées par une seule instruction de contrôle. Pour ce faire, vous utilisez l'instruction composée.

Le corps de chaque procédure, fonction et programme principal Pascal est constitué d'une seule instruction composée. Pour créer une seule instruction composée à partir d'une séquence d'instructions, faites précéder la séquence par BEGIN et terminez-la par END, en séparant les instructions internes par des points-virgules.

La flèche revenant sur le point-virgule indique que de nombreuses instructions peuvent être placées entre BEGIN et END, aussi longtemps qu'elles sont séparées par des points-virgules.

Vous pouvez imbriquer n'importe quel nombre d'instructions BEGIN ... END. Dans n'importe quel bloc, le compilateur associera le dernier BEGIN au premier END, l'avant-dernier BEGIN au deuxième END, et ainsi de suite. Si vous avez écrit plus de BEGIN que de END, le compilateur s'arrêtera et affichera un message d'erreur.

Voici un exemple d'instruction composée :

  1. BEGIN
  2.  z:=x;
  3.  x:=y;
  4.  y:=z;
  5. END

Instructions de procédure

Une procédure est appelée en écrivant son identifiant dans le texte source, suivi de sa liste de paramètres réelle (si elle en a une) entre parenthèses. Les paramètres d'une liste de paramètres sont séparés par des virgules.

L'identificateur doit être le même que l'identificateur utilisé dans la déclaration de procédure ou de fonction.

La liste de paramètres dans un appel de procédure ou de fonction contient le même nombre de paramètres formels que ceux répertoriés dans la déclaration de procédure ou de fonction. Ceux de la déclaration sont appelés paramètres formels; ceux de l'instruction appelante, les paramètres réels (ou source). Les valeurs des paramètres réels sont censées être transmises aux paramètres formels dans le cadre de l'appel.

L'ordre et le nombre de paramètres réels dans l'appel doivent correspondre à l'ordre et au nombre de paramètres formels dans la déclaration. Chaque paramètre réel doit avoir le même type que le paramètre formel correspondant, avec ces exceptions :

De plus, les paramètres actuelles spécifiés dans tout appel de procédure ou de fonction doivent suivre ces règles :

Voici quelques exemples d'instructions de procédure :

  1. printheading;
  2. transpose(a, n, m);
  3. bisect(fct, -1.0, +1.0, x);

Instructions de répétition

Pascal propose trois manières d'exécuter la même section de programme de manière répétée : le processus appelé bouclage. Mais Pascal configure les routines de boucle et de sortie pour vous; il suffit de lui indiquer les conditions de répétition. Les instructions de répétition sont les suivantes :

Les instructions FOR

L'instruction FOR nécessite une variable locale de type scalaire préalablement déclarée. Il incrémente ou décrémente à plusieurs reprises la valeur de la variable, exécutant à chaque fois une section de votre programme. Vous définissez les valeurs scalaires de début et de fin (pouvant être constantes ou calculées) et si l'instruction FOR doit compter vers le haut ou vers le bas.

La variable de contrôle est le nom d'une variable scalaire : Integer, Char, Boolean, sous-intervalle ou définie par l'utilisateur. Il ne peut pas s'agir d'un élément de tableau ou de chaîne de caractères, d'un champ d'enregistrement ou d'une variable dynamique. Il doit être déclaré dans le bloc contenant l'instruction FOR. L'instruction FOR lui donne une valeur avant chaque passage dans la section du programme qu'elle contrôle. A noter que la valeur de cette variable est accessible dans la section contrôlée.

Les expressions de valeur initiale et finale doivent avoir le même type scalaire que la variable. Il peut s'agir de simples constantes ou variables, ou d'expressions complexes contenant des opérateurs et des fonctions.

Vous écrivez TO ou DOWNTO, selon que l'ordinanalité de la valeur de la deuxième expression est supérieure ou inférieure à l'ordinanalité de la valeur de la première expression. L'instruction contrôlée par l'instruction FOR peut être une autre instruction unique (telle qu'une affectation ou un appel de procédure) ou une instruction composée contenant de nombreuses autres instructions.

Respectez ces règles et mises en garde lorsque vous rédigez une instruction FOR :

Voici quelques exemples d'instructions FOR :

  1. For i:=2 To 63 do If a[i]>max Then max:=a[i];
  2. For i:=1 To n do For j:= 1 TO n do Begin
  3.  x:=0;
  4.  For k:=1 To n do x:=x+m1[i,k]*m2[k,j];
  5.  m[i,j]:=x;
  6. End;
  7. FOR c:=red To blue do q(c);

Instructions WHILE

L'instruction WHILE évalue une expression booléenne puis exécute une instruction si l'expression est vraie. Il répète l'exécution, en évaluant l'expression avant chaque passage, jusqu'à ce que l'expression devienne fausse. L'instruction WHILE s'écrit comme suit :

L'expression de contrôle doit être de type booléen; il est généralement formé d'opérateurs relationnels et logiques.

L'instruction contrôlée par WHILE ... DO peut être soit une instruction unique, soit une construction composée BEGIN ... END contenant d'autres instructions.

Voici quelques exemples d'instructions WHILE :

  1. While a[i]<>x do i:=i+1;
  2. While i>0 do Begin
  3.  If odd(i) Then z:=z*x;
  4.  i:=i div 2;
  5.  x:=Sqr(x)
  6. End;
  7. While not Eof(f) do Begin
  8.  process(f^);
  9.  get(f);
  10. End;

Instructions REPEAT

L'instruction REPEAT se comporte de manière similaire à l'instruction WHILE, mais elle évalue son expression booléenne après avoir exécuté les instructions qu'elle contrôle. Il est écrit ainsi :

REPEAT et UNTIL créent leur propre composé à partir des instructions qu'ils contrôlent ; vous n'avez pas besoin d'utiliser BEGIN et END.

L'expression de contrôle doit être de type Boolean ; il est généralement formé d'opérateurs relationnels et logiques.

Remarque : avec WHILE et REPEAT, veillez à ce que les instructions de programme qu'elles contrôlent incluent des moyens pratiques pour modifier l'expression, ou pour s'échapper au moyen d'une instruction GOTO ou Leave ou d'un appel Exit. Sinon, votre programme ne pourra jamais se terminer.

Voici quelques exemples d'instructions REPEAT :

  1. REPEAT
  2.  k:=i MOD j;
  3.  i:=j;
  4.  j:=k
  5. UNTIL j=0;
  6. REPEAT
  7.  process(f^);
  8.  get(f)
  9. UNTIL Eof(f);

Contrôle de boucle : une comparaison

Les trois instructions de répétition présentent chacune des avantages et des inconvénients spécifiques dans une situation de programmation donnée. En voici quelques uns.

L'instruction FOR garde automatiquement une trace de la répétition qu'elle exécute, en modifiant la valeur de sa variable de contrôle à la fin de chaque passe. Ainsi, vous pouvez utiliser la valeur de contrôle pour modifier ce que fait votre programme à chaque fois. Par exemple, la valeur de contrôle peut amener la section répétée à :

L'instruction FOR est cependant quelque peu rigide. Vous pouvez modifier son nombre de répétitions uniquement en le terminant par une instruction GOTO ou Leave.

Les instructions WHILE et REPEAT permettent un meilleur contrôle des conditions dans lesquelles elles arrêtent de s'exécuter. La principale différence entre eux est que l'instruction WHILE n'a pas besoin d'être exécutée du tout, alors que l'instruction REPEAT s'exécute au moins une fois. Ainsi, l'instruction WHILE est plus utile lorsque la condition contrôlant son exécution a déjà été satisfaite ; l'instruction REPEAT est particulièrement utile lorsque la condition ne peut être satisfaite qu'en exécutant l'instruction.

L'instruction WHILE doit également être utilisée dans les cas où son exécution dans de mauvaises conditions pourrait être préjudiciable, car elle évalue son contrôle avant chaque passage.

Expressions conditionnelles

Le Pascal propose à votre programme deux manières de choisir ce qu'il doit faire ensuite : le processus parfois appelé branchement :

Instructions IF

L'instruction IF exécute une seule instruction contrôlée (qui peut être une construction composée BEGIN ... END) si une expression booléenne est vraie. Vous pouvez ajouter une partie ELSE facultative à la fin qui exécute une autre instruction (éventuellement composée) si elle est fausse :

L'expression de contrôle entre IF et THEN doit être de type booléen ; il est généralement formé d'opérateurs relationnels et logiques.

L'une ou les deux instructions contrôlées peuvent être des instructions uniques ou des constructions composées BEGIN ... END contenant d'autres instructions. Le seul endroit où vous devez mettre un point-virgule dans une instruction IF est dans une construction composée BEGIN ... END.

Lors de l'exécution d'une instruction IF, Pascal effectue ces étapes :

  1. Il évalue l'expression booléenne.
  2. Si sa valeur est vraie, Pascal exécute l'instruction suivant THEN et quitte l'instruction IF.
  3. Si sa valeur est fausse et qu'il y a une instruction après ELSE, Pascal l'exécute ; sinon, il quitte les instructions IF.

Voici quelques exemples d'instructions IF :

  1. If x<l.5 Then z:=x+y Else z:=1.5;
  2. If p1<>NIL Then p1:=p1^.father;

Instructions IF imbriquées

Dans toute instruction IF, l'instruction suivant le mot ELSE peut également être une instruction IF et contenir sa propre clause ELSE. Ainsi, une instruction IF peut être écrite pour entreprendre différentes actions pour chacune de plusieurs conditions mutuellement exclusives.

Pascal évaluera les expressions booléennes uniquement jusqu'à ce qu'une vraie soit trouvée. Vous obtenez une vitesse d'exécution maximale si vous donnez la priorité aux conditions les plus probables.

L'instruction suivant le mot THEN peut également être une instruction IF imbriquée, mais cela peut créer une confusion dans le texte source. S'il devient difficile de savoir lequel ELSE correspond à quel THEN ; clarifiez la situation en utilisant une construction composée BEGIN ... END ou une indentation appropriée.

Instructions CASE

L'instruction CASE vous permet d'écrire une liste d'instructions alternatives à exécuter, en associant à chacune une constante scalaire. Lors de l'exécution de l'instruction CASE, Pascal évalue une expression scalaire de contrôle; si sa valeur correspond à l'une des constantes, Pascal exécute l'instruction correspondante. Vous pouvez ajouter une partie facultative OTHERWISE à la fin qui exécute une instruction supplémentaire si rien n'a été sélectionné dans la liste. L'instruction CASE suit cette syntaxe :

Les clauses présentées dans le diagramme ont le format suivant :

L'expression de contrôle peut avoir n'importe quel type scalaire : integer, char, boolean, sous-intervalle ou défini par l'utilisateur. Il doit être capable de renvoyer la valeur de n'importe laquelle des constantes de la clause CASE.

Les expressions constantes de la clause CASE doivent avoir le même type scalaire que l'expression de contrôle.

N'importe laquelle des instructions contrôlées dans la clause CASE ou l'instruction par défaut suivant OTHERWISE peut être des instructions simples ou des constructions composées BEGIN ... END contenant d'autres instructions.

Voici deux exemples d'instructions CASE :

  1. Case operator of
  2.  plus:x:=x+y;
  3.  minus:x:=x-y;
  4.  times:x:=x*y;
  5. End;
  6. Case i of
  7.  1:x:=Sin(x);
  8.  2:x:=Cos(x);
  9.  3,4,5:x:=Exp(x);
  10.  Otherwise x:=Ln(x);
  11. End;

Instructions de contrôle

Les trois instructions de répétition et les deux instructions conditionnelles décrites dans cette page, ainsi que les affectations et les appels de procédure, sont suffisamment flexibles pour gérer presque tous les travaux de programmation. Parfois, cependant, vous pouvez encourager une situation exigeant un transfert immédiat ou une suspension de l'exécution du programme. Pour ces cas, Pascal propose cinq outils supplémentaires :

Les instructions GOTO, Cycle et Leave sont décrites ci-dessous.

Instructions i

L'instruction GOTO transfère l'exécution du programme au début de toute instruction se trouvant dans la même procédure, fonction ou programme principal. Avant de pouvoir utiliser une instruction GOTO, vous devez effectuer deux choses :

L'instruction GOTO s'écrit :

L'entier non signé est l'étiquette de destination ; il ne doit pas dépasser quatre chiffres décimaux.

Deux autres précautions s'appliquent aux instructions GOTO :

Ainsi, chaque destination GOTO doit être le début d'une instruction se trouvant au niveau supérieur d'imbrication dans un bloc de programme.

Voici un exemple illustrant l'utilisation d'une instruction GOTO :

  1. BEGIN
  2.  1234:Write('Donnez-moi un nombre : ');
  3.  ReadLn(n);
  4.  IF n=0 THEN GOTO 1234
  5. END

Instructions Cycle

L'instruction Cycle transmet le contrôle du programme à la fin de la partie en boucle de la plus petite instruction WHILE, REPEAT ou FOR l'entourant. C'est similaire à l'instruction continue du langage de programmation C.

Voici un exemple illustrant l'utilisation d'une instruction cycle. Elle appelle la procédure f pour toutes les valeurs positives de a[i] :

  1. For i:=1 To n do Begin
  2.  If a[il<=0 Then Cycle;
  3.  f(a[i])
  4. End

Remarque : Le mot Cycle n'est pas un mot réservé. Si vous le redéfinissez, vous ne pouvez pas utiliser les instructions Cycle dans le cadre de votre définition.

Instructions Leave

L'instruction Leave termine la plus petite instruction WHILE, REPEAT ou FOR la contenant, en passant le contrôle à l'instruction suivante. Cela ressemble à l'instruction break en C.

Voici un exemple illustrant l'utilisation d'une instruction Leave ; dans celui-ci, l'instruction WHILE se termine lorsque la première valeur x d'un [i] est trouvée :

  1. While i<63 do Begin
  2.  If a[i]=x Then Leave;
  3.  i:=i+1
  4. End

Remarque : Le mot Leave n'est pas un mot réservé. Si vous le redéfinissez, vous ne pouvez pas utiliser les instructions Leave dans le cadre de votre définition.

Instructions WITH

L'instruction WITH ... DO fournit un moyen par lequel les champs des enregistrements spécifiés peuvent être référencés en utilisant uniquement leurs identificateurs de champ. Il a la syntaxe suivante :

N'importe quel nombre d'identificateurs de variables d'enregistrement, y compris ceux d'enregistrements étant des champs d'autres enregistrements, peuvent être répertoriés entre WITH et DO. La déclaration :

  1. WITH v1, v2, v3 DO s;

est équivalent au groupe d'instructions WITH :

  1. WITH v1 DO
  2.  WITH v2 DO
  3.   WITH v3 DO s;

Les règles suivantes régissent l'utilisation de WITH ... DO :

Voici un exemple d'instruction WITH :

  1. With Date do If Month=12 Then Begin
  2.  Month:=1;
  3.  Year:=Year+1
  4. End
  5.  Else 
  6. Month:=Month+1;

Instruction NULL

Les instructions NULL sont des instructions ne contenant rien. Cela signifie simplement que chaque fois que la syntaxe Pascal appelle une instruction, vous pouvez l'omettre. Cela signifie également que lorsqu'un programme contient un point-virgule inutile, le compilateur Pascal considère que le point-virgule sépare une instruction NULL d'une autre instruction. Le résultat est deux déclarations alors que vous n'en prévoyez qu'une. La plupart du temps, cela est inoffensif, mais cela provoque parfois une erreur lorsqu'une seule instruction est autorisée.



PARTAGER CETTE PAGE SUR
Dernière mise à jour : Vendredi, le 28 juin 2024