SlideShare une entreprise Scribd logo
1  sur  27
Bruno Delb                           http://www.brunodelb.com                         Date : 14/04/2001

                                               Le langage Pascal




                                               Sommaire

PRÉSENTATION.......................................................................................................4
  LE PROGRAMME SOURCE, LE PROGRAMME COMPILÉ.................................................................4
  LES SPÉCIFICITÉS 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 ÉTIQUETTES ET LE BRANCHEMENT DIRECT [LABEL, GOTO]................................................5
  LA SORTIE [EXIT, HALT].............................................................................................5
HISTORIQUE...........................................................................................................7
  LA NAISSANCE DE PASCAL..............................................................................................7
  L’ÉVOLUTION 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 CONTRÔLE DE L’ÉCRAN............................................................................................10
    Afficher un texte [Write, WriteLn]........................................................................10
    Positionner le curseur [GotoXY.............................................................................10
    Contrôler l’affichage [ClrScr, Delay, DelLine, InsLine, CtrEol]..................................10
  LA PRÉSENTATION......................................................................................................10
    Le débordement de ligne.....................................................................................10
    Les conseils.......................................................................................................10
LA DÉCLARATION, L’ASSIGNATION......................................................................13
  LES VARIABLES.........................................................................................................13
    Nommer une variable.........................................................................................13
    Evaluer une variable...........................................................................................13
  DÉCLARER UNE VARIABLE [VAR].....................................................................................13
  AFFECTER UNE VALEUR À UNE VARIABLE............................................................................14
    Affecter une expression à une variable [:=]..........................................................14
    Affecter une valeur lue au clavier à une variable [Read].........................................14
LES OPÉRATEURS..................................................................................................15
  INTRODUCTION.........................................................................................................15
  LES OPÉRATEURS ARITHMÉTIQUES [*, /, DIV, MOD, +, -].....................................................15
  LES OPÉRATEURS DE COMPARAISON [<, >, =, <>, <=, >=]...............................................15
  LES FONCTIONS ARITHMÉTIQUES [ABS, COS, EXP, FRAC, ...].................................................16
  REMARQUES.............................................................................................................16
    L’ordre des priorités............................................................................................16
    Les erreurs d'approximation................................................................................17


                                                            1
Bruno Delb                            http://www.brunodelb.com                        Date : 14/04/2001

                                              Le langage Pascal

LES RÉPÉTITIONS ................................................................................................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
  DÉFINITION.............................................................................................................23
  LE DOMAINE DE DÉFINITION..........................................................................................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 PROCÉDURES ET LES FONCTIONS...................................................................27
  LE BLOC D'INSTRUCTIONS.............................................................................................27
  LES TYPES DE VARIABLE...............................................................................................27
    La variable globale.............................................................................................27
    La variable locale...............................................................................................27
  LA PROCÉDURE [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



                                                            2
Bruno Delb                        http://www.brunodelb.com                    Date : 14/04/2001

                                     Le langage Pascal

Délimiter des domaines de validité.......................................................................32
Utiliser les constantes pour le débogage...............................................................32




                                                  3
Bruno Delb                http://www.brunodelb.com         Date : 14/04/2001

                              Le langage Pascal




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.




                                         4
Bruno Delb                      http://www.brunodelb.com                Date : 14/04/2001

                                  Le langage Pascal


 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




                                               5
Bruno Delb                  http://www.brunodelb.com           Date : 14/04/2001

                                Le langage Pascal




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).




                                           7
Bruno Delb                 http://www.brunodelb.com         Date : 14/04/2001

                               Le langage Pascal




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.




                                          9
Bruno Delb                  http://www.brunodelb.com                    Date : 14/04/2001

                              Le langage Pascal




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



                                         10
Bruno Delb               http://www.brunodelb.com         Date : 14/04/2001

                         Le langage Pascal

  conflit de nomrs dû à d'éventuelles duplication. Essayez donc d'utiliser des
  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.




                                    11
Bruno Delb                        http://www.brunodelb.com                   Date : 14/04/2001

                                      Le langage Pascal




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)
        Real      Nombre réel (souvent exprimé en notation scientifique)




                                                 13
Bruno Delb               http://www.brunodelb.com         Date : 14/04/2001

                           Le langage Pascal




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é.




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

                                      Le langage Pascal




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 !)

      Cas particulier : les chaînes de caractères.




                                                 15
Bruno Delb                     http://www.brunodelb.com                  Date : 14/04/2001

                                 Le langage Pascal

    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.




                                              16
Bruno Delb             http://www.brunodelb.com        Date : 14/04/2001

                         Le langage Pascal


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.




                                   17
Bruno Delb                     http://www.brunodelb.com   Date : 14/04/2001

                                   Le langage Pascal




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




                                              19
Bruno Delb                   http://www.brunodelb.com         Date : 14/04/2001

                               Le langage Pascal




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.




                                          20
Bruno Delb                    http://www.brunodelb.com        Date : 14/04/2001

                                Le langage Pascal


 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.




                                           21
Bruno Delb                http://www.brunodelb.com        Date : 14/04/2001

                           Le langage Pascal


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;




                                      22
Bruno Delb                    http://www.brunodelb.com     Date : 14/04/2001

                                  Le langage Pascal




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.




                                             23
Bruno Delb                   http://www.brunodelb.com        Date : 14/04/2001

                               Le langage Pascal


 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).




                                          24
Bruno Delb               http://www.brunodelb.com         Date : 14/04/2001

                           Le langage Pascal




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.




                                      25
Bruno Delb                   http://www.brunodelb.com        Date : 14/04/2001

                                 Le langage Pascal




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
      accessible qu'à partir de cette procédure.



                                            27
Bruno Delb               http://www.brunodelb.com            Date : 14/04/2001

                           Le langage Pascal


 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.




                                      28
Bruno Delb               http://www.brunodelb.com          Date : 14/04/2001

                           Le langage Pascal


 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.




                                      29
Bruno Delb                   http://www.brunodelb.com     Date : 14/04/2001

                                 Le langage Pascal




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.
                                             30
Bruno Delb                   http://www.brunodelb.com     Date : 14/04/2001

                               Le langage Pascal

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.




                                           31
Bruno Delb                       http://www.brunodelb.com   Date : 14/04/2001

                                    Le langage Pascal


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.




                                               32

Contenu connexe

Tendances

망고100 보드로 놀아보자 8
망고100 보드로 놀아보자 8망고100 보드로 놀아보자 8
망고100 보드로 놀아보자 8종인 전
 
0x01 - Breaking into Linux VMs for Fun and Profit
0x01 - Breaking into Linux VMs for Fun and Profit0x01 - Breaking into Linux VMs for Fun and Profit
0x01 - Breaking into Linux VMs for Fun and ProfitRussell Sanford
 
Physical Memory Management.pdf
Physical Memory Management.pdfPhysical Memory Management.pdf
Physical Memory Management.pdfAdrian Huang
 
8-класс.Электрондук таблицанын объекттери
8-класс.Электрондук таблицанын объекттери8-класс.Электрондук таблицанын объекттери
8-класс.Электрондук таблицанын объекттериKasymbek Junusaliev
 
Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3Elaine Cecília Gatto
 
Curso de Excel 2010 Básico
Curso de Excel 2010 BásicoCurso de Excel 2010 Básico
Curso de Excel 2010 BásicoJorgina Cunha
 
Ağ Protokollerine Yönelik Adli Bilişim Analizi
Ağ Protokollerine Yönelik Adli Bilişim AnaliziAğ Protokollerine Yönelik Adli Bilişim Analizi
Ağ Protokollerine Yönelik Adli Bilişim AnaliziBGA Cyber Security
 
Configuracion Windows Server 2008 r2
Configuracion Windows Server 2008 r2Configuracion Windows Server 2008 r2
Configuracion Windows Server 2008 r2Jorge Pfuño
 
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기SangJin Kang
 

Tendances (18)

망고100 보드로 놀아보자 8
망고100 보드로 놀아보자 8망고100 보드로 놀아보자 8
망고100 보드로 놀아보자 8
 
0x01 - Breaking into Linux VMs for Fun and Profit
0x01 - Breaking into Linux VMs for Fun and Profit0x01 - Breaking into Linux VMs for Fun and Profit
0x01 - Breaking into Linux VMs for Fun and Profit
 
Kali linux
Kali linuxKali linux
Kali linux
 
Physical Memory Management.pdf
Physical Memory Management.pdfPhysical Memory Management.pdf
Physical Memory Management.pdf
 
8-класс.Электрондук таблицанын объекттери
8-класс.Электрондук таблицанын объекттери8-класс.Электрондук таблицанын объекттери
8-класс.Электрондук таблицанын объекттери
 
Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3
 
Curso de Excel 2010 Básico
Curso de Excel 2010 BásicoCurso de Excel 2010 Básico
Curso de Excel 2010 Básico
 
Resta um java
Resta um javaResta um java
Resta um java
 
10 Adımda Sızma Testleri
10 Adımda Sızma Testleri10 Adımda Sızma Testleri
10 Adımda Sızma Testleri
 
Aula teclado
Aula tecladoAula teclado
Aula teclado
 
Android Uygulamaların Tersine Mühendislik Yöntemi ile İncelenmesi
Android Uygulamaların Tersine Mühendislik Yöntemi ile İncelenmesiAndroid Uygulamaların Tersine Mühendislik Yöntemi ile İncelenmesi
Android Uygulamaların Tersine Mühendislik Yöntemi ile İncelenmesi
 
Ağ Protokollerine Yönelik Adli Bilişim Analizi
Ağ Protokollerine Yönelik Adli Bilişim AnaliziAğ Protokollerine Yönelik Adli Bilişim Analizi
Ağ Protokollerine Yönelik Adli Bilişim Analizi
 
Configuracion Windows Server 2008 r2
Configuracion Windows Server 2008 r2Configuracion Windows Server 2008 r2
Configuracion Windows Server 2008 r2
 
CMake best practices
CMake best practicesCMake best practices
CMake best practices
 
Aula I - Word
Aula I - WordAula I - Word
Aula I - Word
 
Kali Linux Hakkında Herşey
Kali Linux Hakkında HerşeyKali Linux Hakkında Herşey
Kali Linux Hakkında Herşey
 
Curso Word Basico
Curso Word BasicoCurso Word Basico
Curso Word Basico
 
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
 

En vedette (20)

Guide iphone dce solutions
Guide iphone dce solutionsGuide iphone dce solutions
Guide iphone dce solutions
 
Roberto Laserna ¿Qué cambia con el proceso de cambio?
Roberto Laserna ¿Qué cambia con el proceso de cambio?Roberto Laserna ¿Qué cambia con el proceso de cambio?
Roberto Laserna ¿Qué cambia con el proceso de cambio?
 
Yafa presentation
Yafa presentationYafa presentation
Yafa presentation
 
Ordo malleous
Ordo malleousOrdo malleous
Ordo malleous
 
F:\manos a la_masa
F:\manos a la_masaF:\manos a la_masa
F:\manos a la_masa
 
Bicentenario
BicentenarioBicentenario
Bicentenario
 
Serti marketing material
Serti marketing materialSerti marketing material
Serti marketing material
 
B2 e desjardins ducharme
B2 e desjardins ducharmeB2 e desjardins ducharme
B2 e desjardins ducharme
 
Valores actitudes
Valores actitudesValores actitudes
Valores actitudes
 
Modulación am y fm
Modulación am y fmModulación am y fm
Modulación am y fm
 
Microcurrículo gramática
Microcurrículo gramáticaMicrocurrículo gramática
Microcurrículo gramática
 
Anexo1
Anexo1Anexo1
Anexo1
 
Seymour Papert.
Seymour Papert.Seymour Papert.
Seymour Papert.
 
Temporada 2009 2010 en cesped
Temporada 2009 2010 en cespedTemporada 2009 2010 en cesped
Temporada 2009 2010 en cesped
 
William prototipopps
William prototipoppsWilliam prototipopps
William prototipopps
 
Fatla
FatlaFatla
Fatla
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenable
 
Tarea. 2. prototipo.yadira.nt.sead
Tarea. 2. prototipo.yadira.nt.seadTarea. 2. prototipo.yadira.nt.sead
Tarea. 2. prototipo.yadira.nt.sead
 
La orquesta
La orquestaLa orquesta
La orquesta
 
ANI Formation 14 décembre 2013
ANI Formation 14 décembre 2013ANI Formation 14 décembre 2013
ANI Formation 14 décembre 2013
 

Similaire à Le langage Pascal

Assembleur et binaire
Assembleur et binaireAssembleur et binaire
Assembleur et binaireBruno Delb
 
Crown tsp6000 series turret order picker service repair manual
Crown tsp6000 series turret order picker service repair manualCrown tsp6000 series turret order picker service repair manual
Crown tsp6000 series turret order picker service repair manualudjdkdkdmm
 
Crown tsp6000 series turret order picker service repair manual
Crown tsp6000 series turret order picker service repair manualCrown tsp6000 series turret order picker service repair manual
Crown tsp6000 series turret order picker service repair manualfhhsjdkmem
 
Crown tsp6000 series turret order picker service repair manual
Crown tsp6000 series turret order picker service repair manualCrown tsp6000 series turret order picker service repair manual
Crown tsp6000 series turret order picker service repair manualjfksekmmdme
 
initiation-au-langage-c-et-exercices-corriges
initiation-au-langage-c-et-exercices-corrigesinitiation-au-langage-c-et-exercices-corriges
initiation-au-langage-c-et-exercices-corrigesjojo sekkat
 
The Ring programming language version 1.6 book - Part 1 of 189
The Ring programming language version 1.6 book - Part 1 of 189The Ring programming language version 1.6 book - Part 1 of 189
The Ring programming language version 1.6 book - Part 1 of 189Mahmoud Samir Fayed
 
The Ring programming language version 1.8 book - Part 1 of 202
The Ring programming language version 1.8 book - Part 1 of 202The Ring programming language version 1.8 book - Part 1 of 202
The Ring programming language version 1.8 book - Part 1 of 202Mahmoud Samir Fayed
 
The Ring programming language version 1.3 book - Part 1 of 88
The Ring programming language version 1.3 book - Part 1 of 88The Ring programming language version 1.3 book - Part 1 of 88
The Ring programming language version 1.3 book - Part 1 of 88Mahmoud Samir Fayed
 
The Ring programming language version 1.4 book - Part 1 of 30
The Ring programming language version 1.4 book - Part 1 of 30The Ring programming language version 1.4 book - Part 1 of 30
The Ring programming language version 1.4 book - Part 1 of 30Mahmoud Samir Fayed
 
Documentation AnkiDroid/Anki en français
Documentation AnkiDroid/Anki en françaisDocumentation AnkiDroid/Anki en français
Documentation AnkiDroid/Anki en françaisNicolas Raoul
 
The Ring programming language version 1.7 book - Part 1 of 196
The Ring programming language version 1.7 book - Part 1 of 196The Ring programming language version 1.7 book - Part 1 of 196
The Ring programming language version 1.7 book - Part 1 of 196Mahmoud Samir Fayed
 
The Ring programming language version 1.2 book - Part 1 of 84
The Ring programming language version 1.2 book - Part 1 of 84The Ring programming language version 1.2 book - Part 1 of 84
The Ring programming language version 1.2 book - Part 1 of 84Mahmoud Samir Fayed
 
Crown sp3400 (four point) series forklift service repair manual
Crown sp3400 (four point) series forklift service repair manualCrown sp3400 (four point) series forklift service repair manual
Crown sp3400 (four point) series forklift service repair manualudjdkdkdmm
 
Crown sp3400 (four point) series forklift service repair manual
Crown sp3400 (four point) series forklift service repair manualCrown sp3400 (four point) series forklift service repair manual
Crown sp3400 (four point) series forklift service repair manualfhhsjdkmem
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)safwenbenfredj
 

Similaire à Le langage Pascal (20)

Assembleur et binaire
Assembleur et binaireAssembleur et binaire
Assembleur et binaire
 
Complet
CompletComplet
Complet
 
Le PC
Le PCLe PC
Le PC
 
Crown tsp6000 series turret order picker service repair manual
Crown tsp6000 series turret order picker service repair manualCrown tsp6000 series turret order picker service repair manual
Crown tsp6000 series turret order picker service repair manual
 
Crown tsp6000 series turret order picker service repair manual
Crown tsp6000 series turret order picker service repair manualCrown tsp6000 series turret order picker service repair manual
Crown tsp6000 series turret order picker service repair manual
 
Crown tsp6000 series turret order picker service repair manual
Crown tsp6000 series turret order picker service repair manualCrown tsp6000 series turret order picker service repair manual
Crown tsp6000 series turret order picker service repair manual
 
Dea mip
Dea mipDea mip
Dea mip
 
initiation-au-langage-c-et-exercices-corriges
initiation-au-langage-c-et-exercices-corrigesinitiation-au-langage-c-et-exercices-corriges
initiation-au-langage-c-et-exercices-corriges
 
The Ring programming language version 1.6 book - Part 1 of 189
The Ring programming language version 1.6 book - Part 1 of 189The Ring programming language version 1.6 book - Part 1 of 189
The Ring programming language version 1.6 book - Part 1 of 189
 
Deviens un Ninja avec Angular2
Deviens un Ninja avec Angular2Deviens un Ninja avec Angular2
Deviens un Ninja avec Angular2
 
Bureautique
BureautiqueBureautique
Bureautique
 
The Ring programming language version 1.8 book - Part 1 of 202
The Ring programming language version 1.8 book - Part 1 of 202The Ring programming language version 1.8 book - Part 1 of 202
The Ring programming language version 1.8 book - Part 1 of 202
 
The Ring programming language version 1.3 book - Part 1 of 88
The Ring programming language version 1.3 book - Part 1 of 88The Ring programming language version 1.3 book - Part 1 of 88
The Ring programming language version 1.3 book - Part 1 of 88
 
The Ring programming language version 1.4 book - Part 1 of 30
The Ring programming language version 1.4 book - Part 1 of 30The Ring programming language version 1.4 book - Part 1 of 30
The Ring programming language version 1.4 book - Part 1 of 30
 
Documentation AnkiDroid/Anki en français
Documentation AnkiDroid/Anki en françaisDocumentation AnkiDroid/Anki en français
Documentation AnkiDroid/Anki en français
 
The Ring programming language version 1.7 book - Part 1 of 196
The Ring programming language version 1.7 book - Part 1 of 196The Ring programming language version 1.7 book - Part 1 of 196
The Ring programming language version 1.7 book - Part 1 of 196
 
The Ring programming language version 1.2 book - Part 1 of 84
The Ring programming language version 1.2 book - Part 1 of 84The Ring programming language version 1.2 book - Part 1 of 84
The Ring programming language version 1.2 book - Part 1 of 84
 
Crown sp3400 (four point) series forklift service repair manual
Crown sp3400 (four point) series forklift service repair manualCrown sp3400 (four point) series forklift service repair manual
Crown sp3400 (four point) series forklift service repair manual
 
Crown sp3400 (four point) series forklift service repair manual
Crown sp3400 (four point) series forklift service repair manualCrown sp3400 (four point) series forklift service repair manual
Crown sp3400 (four point) series forklift service repair manual
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
 

Plus de Bruno Delb

Introduction to Swift (tutorial)
Introduction to Swift (tutorial)Introduction to Swift (tutorial)
Introduction to Swift (tutorial)Bruno Delb
 
Android Lab Test : Storage of data with SharedPreferences (english)
Android Lab Test : Storage of data with SharedPreferences (english)Android Lab Test : Storage of data with SharedPreferences (english)
Android Lab Test : Storage of data with SharedPreferences (english)Bruno Delb
 
Android Lab Test : Using the sensor gyroscope (english)
Android Lab Test : Using the sensor gyroscope (english)Android Lab Test : Using the sensor gyroscope (english)
Android Lab Test : Using the sensor gyroscope (english)Bruno Delb
 
Android Lab Test : Using the network with HTTP (english)
Android Lab Test : Using the network with HTTP (english)Android Lab Test : Using the network with HTTP (english)
Android Lab Test : Using the network with HTTP (english)Bruno Delb
 
Android Lab Test : Managing sounds with SoundPool (english)
Android Lab Test : Managing sounds with SoundPool (english)Android Lab Test : Managing sounds with SoundPool (english)
Android Lab Test : Managing sounds with SoundPool (english)Bruno Delb
 
Android Lab Test : Using the text-to-speech (english)
Android Lab Test : Using the text-to-speech (english)Android Lab Test : Using the text-to-speech (english)
Android Lab Test : Using the text-to-speech (english)Bruno Delb
 
Android Lab Test : Reading the foot file list (english)
Android Lab Test : Reading the foot file list (english)Android Lab Test : Reading the foot file list (english)
Android Lab Test : Reading the foot file list (english)Bruno Delb
 
Android Lab Test : Creating a menu dynamically (english)
Android Lab Test : Creating a menu dynamically (english)Android Lab Test : Creating a menu dynamically (english)
Android Lab Test : Creating a menu dynamically (english)Bruno Delb
 
Android Lab Test : Creating a dialog Yes/No (english)
Android Lab Test : Creating a dialog Yes/No (english)Android Lab Test : Creating a dialog Yes/No (english)
Android Lab Test : Creating a dialog Yes/No (english)Bruno Delb
 
Android Lab Test : The styles of views (english)
Android Lab Test : The styles of views (english)Android Lab Test : The styles of views (english)
Android Lab Test : The styles of views (english)Bruno Delb
 
Android Lab Test : Creating a menu context (english)
Android Lab Test : Creating a menu context (english)Android Lab Test : Creating a menu context (english)
Android Lab Test : Creating a menu context (english)Bruno Delb
 
Android Lab Test : Using the camera preview (english)
Android Lab Test : Using the camera preview (english)Android Lab Test : Using the camera preview (english)
Android Lab Test : Using the camera preview (english)Bruno Delb
 
Android Lab Test : The views, the Gallery (english)
Android Lab Test : The views, the Gallery (english)Android Lab Test : The views, the Gallery (english)
Android Lab Test : The views, the Gallery (english)Bruno Delb
 
Android Lab Test : Using the WIFI (english)
Android Lab Test : Using the WIFI (english)Android Lab Test : Using the WIFI (english)
Android Lab Test : Using the WIFI (english)Bruno Delb
 
Android Lab Test : Managing the telephone calls (english)
Android Lab Test : Managing the telephone calls (english)Android Lab Test : Managing the telephone calls (english)
Android Lab Test : Managing the telephone calls (english)Bruno Delb
 
Android Lab Test : Reading the SMS-inbox (english)
Android Lab Test : Reading the SMS-inbox (english)Android Lab Test : Reading the SMS-inbox (english)
Android Lab Test : Reading the SMS-inbox (english)Bruno Delb
 
Android Lab Test : Installation of application in Java (english)
Android Lab Test : Installation of application in Java (english)Android Lab Test : Installation of application in Java (english)
Android Lab Test : Installation of application in Java (english)Bruno Delb
 
Android Lab Test : Ecrire un texte sur le canevas (français)
Android Lab Test : Ecrire un texte sur le canevas (français)Android Lab Test : Ecrire un texte sur le canevas (français)
Android Lab Test : Ecrire un texte sur le canevas (français)Bruno Delb
 
Android Lab Test : La connectivité réseau avec HTTP (français)
Android Lab Test : La connectivité réseau avec HTTP (français)Android Lab Test : La connectivité réseau avec HTTP (français)
Android Lab Test : La connectivité réseau avec HTTP (français)Bruno Delb
 
Android Lab Test : Le capteur gyroscope (français)
Android Lab Test : Le capteur gyroscope (français)Android Lab Test : Le capteur gyroscope (français)
Android Lab Test : Le capteur gyroscope (français)Bruno Delb
 

Plus de Bruno Delb (20)

Introduction to Swift (tutorial)
Introduction to Swift (tutorial)Introduction to Swift (tutorial)
Introduction to Swift (tutorial)
 
Android Lab Test : Storage of data with SharedPreferences (english)
Android Lab Test : Storage of data with SharedPreferences (english)Android Lab Test : Storage of data with SharedPreferences (english)
Android Lab Test : Storage of data with SharedPreferences (english)
 
Android Lab Test : Using the sensor gyroscope (english)
Android Lab Test : Using the sensor gyroscope (english)Android Lab Test : Using the sensor gyroscope (english)
Android Lab Test : Using the sensor gyroscope (english)
 
Android Lab Test : Using the network with HTTP (english)
Android Lab Test : Using the network with HTTP (english)Android Lab Test : Using the network with HTTP (english)
Android Lab Test : Using the network with HTTP (english)
 
Android Lab Test : Managing sounds with SoundPool (english)
Android Lab Test : Managing sounds with SoundPool (english)Android Lab Test : Managing sounds with SoundPool (english)
Android Lab Test : Managing sounds with SoundPool (english)
 
Android Lab Test : Using the text-to-speech (english)
Android Lab Test : Using the text-to-speech (english)Android Lab Test : Using the text-to-speech (english)
Android Lab Test : Using the text-to-speech (english)
 
Android Lab Test : Reading the foot file list (english)
Android Lab Test : Reading the foot file list (english)Android Lab Test : Reading the foot file list (english)
Android Lab Test : Reading the foot file list (english)
 
Android Lab Test : Creating a menu dynamically (english)
Android Lab Test : Creating a menu dynamically (english)Android Lab Test : Creating a menu dynamically (english)
Android Lab Test : Creating a menu dynamically (english)
 
Android Lab Test : Creating a dialog Yes/No (english)
Android Lab Test : Creating a dialog Yes/No (english)Android Lab Test : Creating a dialog Yes/No (english)
Android Lab Test : Creating a dialog Yes/No (english)
 
Android Lab Test : The styles of views (english)
Android Lab Test : The styles of views (english)Android Lab Test : The styles of views (english)
Android Lab Test : The styles of views (english)
 
Android Lab Test : Creating a menu context (english)
Android Lab Test : Creating a menu context (english)Android Lab Test : Creating a menu context (english)
Android Lab Test : Creating a menu context (english)
 
Android Lab Test : Using the camera preview (english)
Android Lab Test : Using the camera preview (english)Android Lab Test : Using the camera preview (english)
Android Lab Test : Using the camera preview (english)
 
Android Lab Test : The views, the Gallery (english)
Android Lab Test : The views, the Gallery (english)Android Lab Test : The views, the Gallery (english)
Android Lab Test : The views, the Gallery (english)
 
Android Lab Test : Using the WIFI (english)
Android Lab Test : Using the WIFI (english)Android Lab Test : Using the WIFI (english)
Android Lab Test : Using the WIFI (english)
 
Android Lab Test : Managing the telephone calls (english)
Android Lab Test : Managing the telephone calls (english)Android Lab Test : Managing the telephone calls (english)
Android Lab Test : Managing the telephone calls (english)
 
Android Lab Test : Reading the SMS-inbox (english)
Android Lab Test : Reading the SMS-inbox (english)Android Lab Test : Reading the SMS-inbox (english)
Android Lab Test : Reading the SMS-inbox (english)
 
Android Lab Test : Installation of application in Java (english)
Android Lab Test : Installation of application in Java (english)Android Lab Test : Installation of application in Java (english)
Android Lab Test : Installation of application in Java (english)
 
Android Lab Test : Ecrire un texte sur le canevas (français)
Android Lab Test : Ecrire un texte sur le canevas (français)Android Lab Test : Ecrire un texte sur le canevas (français)
Android Lab Test : Ecrire un texte sur le canevas (français)
 
Android Lab Test : La connectivité réseau avec HTTP (français)
Android Lab Test : La connectivité réseau avec HTTP (français)Android Lab Test : La connectivité réseau avec HTTP (français)
Android Lab Test : La connectivité réseau avec HTTP (français)
 
Android Lab Test : Le capteur gyroscope (français)
Android Lab Test : Le capteur gyroscope (français)Android Lab Test : Le capteur gyroscope (français)
Android Lab Test : Le capteur gyroscope (français)
 

Le langage Pascal

  • 1. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal Sommaire PRÉSENTATION.......................................................................................................4 LE PROGRAMME SOURCE, LE PROGRAMME COMPILÉ.................................................................4 LES SPÉCIFICITÉS 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 ÉTIQUETTES ET LE BRANCHEMENT DIRECT [LABEL, GOTO]................................................5 LA SORTIE [EXIT, HALT].............................................................................................5 HISTORIQUE...........................................................................................................7 LA NAISSANCE DE PASCAL..............................................................................................7 L’ÉVOLUTION 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 CONTRÔLE DE L’ÉCRAN............................................................................................10 Afficher un texte [Write, WriteLn]........................................................................10 Positionner le curseur [GotoXY.............................................................................10 Contrôler l’affichage [ClrScr, Delay, DelLine, InsLine, CtrEol]..................................10 LA PRÉSENTATION......................................................................................................10 Le débordement de ligne.....................................................................................10 Les conseils.......................................................................................................10 LA DÉCLARATION, L’ASSIGNATION......................................................................13 LES VARIABLES.........................................................................................................13 Nommer une variable.........................................................................................13 Evaluer une variable...........................................................................................13 DÉCLARER UNE VARIABLE [VAR].....................................................................................13 AFFECTER UNE VALEUR À UNE VARIABLE............................................................................14 Affecter une expression à une variable [:=]..........................................................14 Affecter une valeur lue au clavier à une variable [Read].........................................14 LES OPÉRATEURS..................................................................................................15 INTRODUCTION.........................................................................................................15 LES OPÉRATEURS ARITHMÉTIQUES [*, /, DIV, MOD, +, -].....................................................15 LES OPÉRATEURS DE COMPARAISON [<, >, =, <>, <=, >=]...............................................15 LES FONCTIONS ARITHMÉTIQUES [ABS, COS, EXP, FRAC, ...].................................................16 REMARQUES.............................................................................................................16 L’ordre des priorités............................................................................................16 Les erreurs d'approximation................................................................................17 1
  • 2. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal LES RÉPÉTITIONS ................................................................................................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 DÉFINITION.............................................................................................................23 LE DOMAINE DE DÉFINITION..........................................................................................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 PROCÉDURES ET LES FONCTIONS...................................................................27 LE BLOC D'INSTRUCTIONS.............................................................................................27 LES TYPES DE VARIABLE...............................................................................................27 La variable globale.............................................................................................27 La variable locale...............................................................................................27 LA PROCÉDURE [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 2
  • 3. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal Délimiter des domaines de validité.......................................................................32 Utiliser les constantes pour le débogage...............................................................32 3
  • 4. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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. 4
  • 5. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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 5
  • 6. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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). 7
  • 7. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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. 9
  • 8. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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 10
  • 9. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal conflit de nomrs dû à d'éventuelles duplication. Essayez donc d'utiliser des 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. 11
  • 10. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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) Real Nombre réel (souvent exprimé en notation scientifique) 13
  • 11. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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é. 14
  • 12. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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 !) Cas particulier : les chaînes de caractères. 15
  • 13. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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. 16
  • 14. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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. 17
  • 15. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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>" 19
  • 16. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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. 20
  • 17. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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. 21
  • 18. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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; 22
  • 19. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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. 23
  • 20. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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). 24
  • 21. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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. 25
  • 22. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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 accessible qu'à partir de cette procédure. 27
  • 23. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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. 28
  • 24. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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. 29
  • 25. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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. 30
  • 26. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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. 31
  • 27. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal 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. 32