Le PASCAL est sans doute le langage de programmation que je préfère. Ses qualités sont nombreuses : clair, facile, puissant, lisible… Son seul défaut est sa tendance à disparaître, et le fait qu’il ne soit pas utilisé sur toutes les plateformes.

Grand leader dans le domaine des Pascal, l’éditeur Borland (devenu Inprise maintenant), avait sorti de très bons produits : les Turbo Pascal (1-7), et Borland Pascal 7 (pour Windows). Borland a aujourd’hui rendu disponible à la communauté des programmeurs ses IDE Turbo Pascal 5.5 (édition d’un seul fichier, support de la POO) et Turbo Pascal 7 (multifenètre, POO, Turbo Vision,…). Puis le Pascal avait connu un certain déclin, jusqu’à ce que Borland sorte le Delphi, sorte de Visual Basic en Pascal, mais dont la particularité est la prise en charge des bases de données. Le succès de Delphi fait du Pascal un langage encore actuel.

Premiers programmes

Voici un petit programme, histoire de voir à quoi ressemble le pascal :

 (* Ce programme est un programme d'exemple *)
 PROGRAM HelloWorld;
 USES Dos,Crt;
 CONST Msg : String='Hello the World !';
 
 (* PrintMsg : Affiche n fois le Message *)
 Procedure PrintnMsg (Message : String, n : Integer);
 Var i : Byte;
 Begin
  For i:=1 To n do
   Begin
    Writeln ('Un petit message en ',n,'exemplaires : ',Message);
   End;
 End;
 
 (* Add : Additionne a et b *)
 Function Add (a,b : Integer) : Integer;
 Var c : Integer;
 Begin
  c := a + b;
  Add := c;
 End;

 BEGIN
  PrintMsg(Msg,Add(2,3));
 END.


Voila… Ce n’est pas très original mais ça fera l’affaire… A noter que ce programme comporte des lignes complètement inutiles, mais présentes à des fins didactiques…

On peut déjà tirer quelques généralités :

  • Toutes les instructions se terminent par ‘;’. Ceci est le séparateur d’instruction. Les retours chariots ne consistuent pas de séparateur d’instruction, donc le ; est obligatoire après chaque ligne de code. Vous pouvez mettre deux instruction sur la même ligne : a:=b;d:=c;… Attention juste à une petite subtilité : ne pas mettre de ; après le ‘do’ d’une boucle for, sinon la boucle ne fera… rien, et une autre : si vous mettez un else à une clause if, il ne faut pas mettre de ; après le bloc instruction du then : if a
  • Pour créer un bloc d’instruction, on utilise Begin et End; . Il est cependant très pratique de les mettre même pour une seule instruction (alors que ce n’est pas la peine), car cela vous éviteras bien de malheurs si vous voulez rajouter une instruction et que vous oubliez que du coup, les Begin et End; sont obligatoires…
  • Le Pascal n’est pas “case sensitive”. Donc foobar, FOOBAR, FoObaR, fOObar ne représente qu’une seule et même variable. Ce qui permet de mettre en avant des parties de votre nom de variable en évidence : CeciEstUneVariable, sans que si vous oubliez une fois d’appuyer sur MAJ, ce soit un drame… Ca fait tellement plus joli dans le code qu’il ne faut pas s’en priver !
  • Le Pascal demande que les variables sont déclarées et typées.

Reprenons ligne par ligne ce programme :

  • (* Ce programme est un programme d’exemple *) est un commentaire. Les commentaires sont délimités par (* *) ou par { } dans les versions récentes. Ces deux délimiteurs peuvent s’imbriquer.
  • PROGRAM HelloWorld; est une ligne facultative (mais c’est toujours bien de la mettre…) pour donner le nom du programme. Attention, dans le cas d’unités (librairies, modules, …) ce nom est important (au lieu de PROGRAM c’est UNIT)
  • USES Dos,Crt; déclare au Pascal que le programme va utiliser les unités Crt, et Dos. Ces deux-là sont les plus courantes. Les autres utiles sont String, et sous Windows, WinDOS, WinCRT, Windows, et beaucoup d’autres encore… A noter que l’unité standart system est sous-entendue.
  • CONST Msg : String=’Hello the World !’; est une déclaration d’une constante de type String, contenant le texte ‘Hello the World’. Les séparateurs de textes en Pascal sont ‘blabla’. Pour mettre une apostrophe, il suffit de doubler ” : ‘le pascal, c”est l”ideal’…
  • Procedure PrintnMsg (Message : String, n : Integer); déclare une procédure, c’est à dire une fonction qui ne renvoie pas de valeur. La syntaxe est Procedure NomdemaProcedure ( Arg1 : TypeArg1, Arg2,Arg3 : TypeArg2et3);
  • Var i : Byte; définit une variable qui s’appelle i, avec le type Byte. La syntaxe est Var nomvar1, nomvar2 : Type;
  • For i:=1 To n do définit une boucle for, de variable i (qui doit être déclarée avant) allant de 1 à n, et procédant à l’opération située derrière do (donc pas de ; !!!). DownTo existe aussi, pour aller de l’indice de départ à l’indice d’arrivée par pas de -1.
  • Writeln (‘Un petit message en ‘,n,’exemplaires : ‘,Message); écrit le message à l’écran. La syntaxe est : WriteLn (‘texte1′,var1,var2,’text2’); il suffit de mettre les diverses expressions séparées d’une virgule. WriteLn rajoute un retour chariot à la fin, Write, lui, ne rajoute rien.
  • Function Add (a,b : Integer) : Integer; déclare une fonction. La seule différence avec Procedure est la définition du type de la valeur retournée. Syntaxe : Function nomFonction (liste d’arguments) : TypeRetour;.
  • c := a + b; affecte la valeur a+b à la variable c. L’opérateur d’affectation est ‘:=’.
  • Add := c; indique la valeur de retour de la fonction. Cela se fait très simplement en mettant : nomdelaFonction := valeur à retourner.
  • BEGIN déclare le corps du programme. La routine principale du programme Pascal est comprise entre BEGIN et END. (notez bien le point, et non le point virgule traditionnel des procedures et fonctions.)
  • PrintMsg(Msg,Add(2,3)); fait appel à la procedure Add avec les arguments 2 et 3, puis appelle la procédure PrintMsg avec les arguments Msg et la valeur de retour de la fonction Add.
  • END. déclare la fin du programme principal. Tous les caractères situés après cette ligne sont ignorés. Cela peut vous permettre de mettre un petit bout d’aide, de documentation, etc. Attention, il ne faut pas mettre de procedure et de fonctions après cette ligne.

Voila, c’est fini pour cette petite introduction au langage Pascal… N’oubliez pas que les fichiers d’aide sont souvent d’un très grand secours, même pour apprendre.
Ce que je conseille pour apprendre, c’est de lire les pages principales des fichiers d’aide et les noms des fonctions et procédures des unités, et de regarder ce qu’elle font. Après, lorsque vous en avez besoin, regardez l’aide de cette fonction là, pour obtenir sa syntaxe.

Trucs et Astuces

Cette rubrique est pour l’instant un peu démunie, mais devraient y figurer à terme, des trucs et astuces divers de la programmation Pascal.

  • Créer facilement un format de chaîne
    Il suffit d’utiliser la puissance de l’instruction Write ou WriteLn, pour formater les chaînes. Par exemple, pour créer un format de date, vous seriez obligés de convertir d’abord les nombres en chaînes, puis de concaténer toutes les chaînes.
    Avec write, il vous faut déclarer une procédure spéciale, appelée par l’instruction write. Cette procédure concaténera alors ses arguments avec une chaîne globale, par exemple appelée WriteResult. Il vous suffira donc de mettre WriteResult:=””; de lancer write; puis récupérer le contenu dans la variable WriteResult.