Vous êtes sur la page 1sur 13

Chapitre 4

Résumé syntaxique du
langage Pascal

Le Pascal est un langage procédural induisant une approche par les trai-
tements pour résoudre un problème donné. Cette approche peut être descen-
dante ou ascendante. Il supporte la notion de fonction ou de procédure et des
mécanismes de passage d’arguments à ces fonctions ou procédures ainsi qu’un
mécanisme de renvoi de valeur par les fonctions.

4.1 Méthode de développement d’un logiciel


En génie logiciel on utilise souvent la méthodologie suivante pour résoudre
les problème de programmation. Elle comporte cinq étapes

4.1.1 Etapes de développement d’un logiciel


1. Formulation du problème : Cette phase consiste à redéfinir précisement
le problème avec un gain de la compréhension sur les parametres dont on
a besoin pour la solution en éliminant toutes les redondances.
2. Analyse : Cette étape identifie les entrées du problèmes et les sorties
désirées, ainsi que les contraintes. Elle identifie les informations à fournir
comme donnés et les résultats à calculer. Elle précise egalement la forme
sous laquelle les résultats pourront être présentés.
3. Conception : Ici on développe l’ algorithme pour résoudre le problème
eton vérifie que l’algorithme résoud bien le problème comme attendu. C’est
souvent l’aspect le plus difficile dans la résolution du problème. On doit
donc mettre beaucoup de soin dans les vérifications inhérante à cette étape.
On utilise souvent la technique de diviser pour règner puis on résoud
séparément les sous problèmes

24
4. Implémentation : Ici on traduit l’algorithme en programme. Chaque
étape de l’algorithme va être codé en instruction dans un langage de pro-
grammation. Il y a donc nécessité de la maı̂triser un langage de program-
mation.
5. Test et vérification : Dans cette phase on teste le programme complet
afin de vérifier qu’il marche comme prévu en utilisant diverses sortes de
données.
Dans cette démarche, les trois premières phases sont critiques. De leurs bons
déroulements dépend la fiabilité de toute la méthode.

4.1.2 Analyse descendante


Elle est basée sur la technique de diviser pour règner. En effet on décrit en
pseudo-langage, l’algorithme en partant d’un niveau de description abstrait et
en décomposant chaque traitement en sous-traitement jusqu’à ce qu’il n’y ait
plus de décomposition à faire.

4.1.3 Modularité
Un problème est en général découpé en des sous-problèmes ; chaque sous-
problème est résolu séparément. Cette approche facilite la maintenance et la
réutilisation des codes grâce aux mécanismes de complilation séparée.

4.1.4 Programmation structurée


Une approche disciplinée de programmation conduisant à des programmes
faciles à lire et à comprendre, exempts d’erreurs de logique. Ce style de pro-
grammation permet d’écrire des codes clairs lisibles agrémentés de commentaires
facilitant sa maintenance.

4.2 Structure générale d’un programme Pascal


Selon la norme ANSI, tout programme Pascal comporte trois parties : l’entête,
la partie déclarative et le corps du programme (ou programme principale).
L’entête (non obligatoire en Turbo-pascal) permet d’attribuer un identifica-
teur (un nom) au programme.
La partie déclarative dit au compilateur la quantité de mémoire qui doit être
réservée au besoin du programme. Cette quantité dépend des données mises en
oeuvre. Elle annonce également tout ce qui va être donc utilisé dans le corps du
programme.
Le corps du programme ou programme principal commence avec la ligne
begin
et se termine par la ligne
end.

25
Elle contient les instructions (exécutables) qui, traduites par le compilateur,
seront ensuite exécutées.
Schématiquement on a la structure suivante :

Program nom ;  } Entête


const 

constante =valeur ;




.




constante =valeur ;




type




type = description ;




.




type = description ;




var




liste de variable : type ;




.




liste de variable : type ;



Procedure pnom(liste de paramètres) ; Corps du programme
var




.




begin




.




end ;




.




Function fnom(liste de paramètres) ;




var




.




begin




.




end ;

begin 
instruction ; 
. Programme principale
instruction ;

end.

Comme tout langage, le Pascal pessède un alphabet, un vocabulaire et une


grammaire.
L’alphabet du Pascal est formé des 26 lettres de l’alphabet anglais sans prise
en compte de la casse, des 10 chiffres (du système décimal) et quelques symboles
spéciaux tels que les ponctuations etc. . ..
Le vocabulaire est constitué d’un certain nombre de mots réservés et des
identificateurs standard.
La grammaire est vue à travers les constructions syntaxiques autorisées par
le langage. Il est essentiel de retenir que chaque phrase en Pascal se termine par
le point virgule ” ;”

26
Les commentaires (utiles à la maintenance mais non interprêtés par le com-
pilateur) sont délimités par des couples d’accolades ”{. . .}”.
Dans la suite nous donnons un aperçu succint de la grammaire du Pascal.

4.3 Types de données


En pascal on a des données simples et des données structurées.

4.3.1 Donnés simples


Elles sont de deux sortes : les scalaires et les réels.
Les données de type scalaire regroupent les entiers, les booléens, les ca-
ractères, les types énumérés et les types intervalles.

Types entiers
Les types entiers du turbo pascal sont :

Type Intervalle Exemple de déclaration


byte 0 .. 255 const beep=25 ;
var x,y, a : byte ;
shortint -128 .. 127

integer -32768 .. 32767

longint -2147483648 .. 2147483647

word 0 .. 65535

Types énumérés
Les types énumérés définissent un ensemble ordonné de valeurs en énumérant
les identificateurs qui répresentent ces valeurs. L’ordre est celui de énumération.
Syntaxe :

type enumere = (element1 , . . . , elementN )


Exemple
type
Carte =(Trefle, Carreau,Coeur,Pique)

27
Types énumérés
C’est un type énuméré particulier ayant deux valeurs False (vrai) ou True
(faux) et utilisé pour les données logiques (boolean).

Types intervalles
Un type intervalle est une portion de l’intervalle des valeurs d’un type sca-
laire.
Syntaxe :

type intervalle = constantei ..constantef


Exemple
type
inf100=0..99 ;
prime=trefle..coeur ;

types réels
Les types réels sont :

Type Intervalle Exemple de déclaration


real 2.9 10−39 .. 1.7 1038 const pi=3.1416 ;
var x,y : real ;
single 1.5 10−45 .. 3.4 1038

double 5.0 10−324 .. 1.7 10308

extended 3.4 10−4932 .. 1.1 104932

comp −263 + 1 .. 263 − 1

4.3.2 Donnés structurées


Types chaine de caractères
Le type chaine de caractères (String) avec un attribut de longueur variable
en cours d’exécution.
Syntaxe :

type chaine = string


ou
type chaine = string[N] ou N ∈ 1..255 la longueur prescrite

28
Exemple

type chaine32= string[32] ;


var
nom, prenom : chaine32 ;
commentaire : string ;
note : string[3] ;

Types tableaux
le type tableau (array) est une structure formée d’un nombre fixe d’éléments
de même type, le type composant.
Syntaxe :

type tableau = array[type d’indice ] of type composant


Exemple

array[boolean ] of array[1..10 ] of real

Types enregistrements
Le type enregistrement (record) est composé d’un certain nombre d’éléments
ou champs qui peuvent être de différents types. Un enregistrement comporte
une partie fixe et parfois une partie variable.
Pour un enregistrement simple on a :
Syntaxe :

type enregistrement = record


champ : type champ ;

champ : type champ ;


end ;
Exemple

type
date = record
An : integer ;
mois : 1..12 ;
jour : 1..31 ;
end ;
Pour un enregistrement àvariante on a : Syntaxe :

29
type enregistrement = record
champ : type champ ;
.
champ : type champ ;
case type de selecteur of
selecteur : (liste de champs) ;
.
selecteur : (liste de champs) ;
end ;
Exemple

type
Personne = record
Nom, Prenom : string ;
datenaiss : date ;
case citoyen : boolean of
True : (Lieunaiss : String[40]) ;
False : (Pays : String[20] ;
Lieuarrive : String[20] ;
datearrive : date ;
datedepart : date ;) ;
end ;
Remarque :
Dans un enregistrement à variante, la partie fixe peut être vide.

Types ensembles
Un type ensemble ( ouset) d’un type scalaire ordinal peut contenir tous les
sous ensembles possibles de valeurs du type scalaire de base. Le type de base ne
peut contenir plus de 256 valeurs possibles.
Syntaxe :

type ensemble = set of type scalaire


Exemple

Remarque :
Le type de base ne peut être Integer

Types fichiers
Un type fichier file est une suite lineairre d’éléments d’un même type à
l’exception d’un type fichier, appelé type composant. On distingue des fichiers
typés, des fichiers text et des fichier non typés

30
Syntaxe :

type fichier = file


ou
type fichier = file of type
Exemple

4.3.3 Quelques types ésotériques


Il s’agit des types pointeurs et des types sous-programmes. On reviendra plus
en détail sur ces types. Les types objets ne seront pas étudiés dans ce cours.

4.4 L’affectation et les entrées / sorties


4.4.1 affectation
C’est l’instruction la plus élémentaire. Elle est réalisée en Pascal grace à
l’opérateur ” :=”
Syntaxe :

variable := expression
Exemple

A := 5 ;
B := -22 ;
C := B+A ;
D := sqrt(3) ;

4.4.2 entrées / sorties standard


La lecture (ou entrée d’informations )standard se fait au clavier à l’aide des
instructions read ou readln si le tampon de lecture change après exécution.
Syntaxe :

Read( liste de variable) ;


Readln( liste de variable) ;
Readln ;
Exemple

La sortie standard d’information ou écriture se fait à l’écran grace aux ins-


tructions write ou writeln. Le writeln ajoute un saut de ligne après l’écriture.

31
Syntaxe :

Write( liste de variable) ;


Writeln( liste de variable) ;
Writeln ;
Exemple

4.5 Les structures de controle


4.5.1 Structures conditionnelles
Elles permettent d’opérer un choix et sont de deux sortes : les structures if
et les structures case.
Les structures case se présentent en trois syntaxes :

Structure if ..then
Syntaxe :

if condition then instruction ;


Exemple

Structure if ..then .. else


Syntaxe :

if condition then instruction


else instruction ;
Exemple

Structure if imbriqué
Syntaxe :

if condition then instruction


else if condition then instruction
...
else if condition then instruction
else instruction ;
Exemple

32
Structure case
Ici on utilise un sélecteur de type ordinal. On a deux cas :
Syntaxe :

case expression of
domaine : instruction ;
...
domaine : instruction
end ;
Exemple

Syntaxe :

case expression of
domaine : instruction ;
...
domaine : instruction ;
else instruction
end ;
Exemple

4.5.2 Structures itératives


Trois types de structures itératives ou boucles.
La boucle For est utilisée lorsque les instructions sont répétées de façon
inconditionnelle un nombre bien défini de fois. Cette instruction revet deux
formes suivant l’ordre entre les valeurs initiale et finale de la variable de contrôle :
Syntaxe :

for variable controle := valeur initiale to valeur finale do


instruction ;
for variable controle := valeur initiale downto valeur finale do
instruction ;
Exemple

Lorsque la poursuite ou l’abandon des répétions des instrutions sont condi-


tionnés par ce qui se passe dans la boucle, celle-ci est en Pascal par les instruc-
tions :
– repeat ..until pour répéter des instrustion jusqu’à ce qu’une condition soit
réalisée. On parle aussi d’instruction répéter ..jusqu’à .

33
Syntaxe :

repeat
instruction ;
instruction ;
...
instruction
until condition ;
– do while pour répéter des instrustions tant qu’une certaine condition est
réalisée. On parle aussi d’instruction tant que .
Syntaxe :

while condition do instruction ;


Exemple

4.6 Les procédures et fonctions


Comme tous les langages de haut niveau, le Pascal permet la programmation
modulaire qui facilite la decomposition en plusieurs parties independantes ou
modules. Ceci permet le developpement et le partage d’outil commun mis au
point une fois pour toute grace au notion d’argument et àla compilation séparée.
En Pascal, on dispose de deux types de modules : les procédures et les fonctions.
Un module Pascal a la même structure générale qu’un programme. Il com-
porte :
– L’entête (obligatoire)
– La partie déclaration
– Le corps du module (exécutable)
Une fonction diffère d’une procédure par sa capacité de retourner un résultat
à travers son nom. De ce fait elle peut être utilisée dans une expression et
apparaitre dans le membre de droite d’une affectation.
Remarque :

Les variables utilisées dans un module peuvent être de portée locale ou glo-
bale. Pour une bonne maitrise des effets de bord, il est conseillé de privilegier
la transmission d’arguments à l’usage des variables globales.

34
4.6.1 Procédures
Syntaxe :

Procedure Nom procedure Procedure Nom procedure( Liste arguments ) ;


{ declaration } { declaration }
... ...
begin begin
instruction ; ou instruction ;
instruction ; instruction ;
... ...
instruction ; instruction ;
end ; end ;
Exemple

Remarque :
L’appel de procédure se fait par :
Nom procedure ;
ou
Nom procedure(liste arguments reels) ;

4.6.2 fonctions
Syntaxe :

Procedure Nom fonction : Procedure Nom fonction (Liste arguments) :


type resultat ; type resultat ;
{ declaration } { declaration }
... ...
begin begin
instruction ; ou instruction ;
instruction ; instruction ;
... ...
Nom fonction := resultat ; Nom fonction := resultat ;
end ; end ;
Exemple

Remarque :
Un appel de fonction peut revêtir une des formes :
Nom fonction ;
ou
Nom fonction(liste arguments reels) ;
et peut apparaitre dans une expression ou une affectation.

35
4.7 Le passage de paramètres
On a deux modes essentiels de transmission d’arguments : la transmission
par valeur ou la transmission par adresse ou référence.

4.7.1 Passage par valeur


C’est le mécanisme par défaut de transmission des arguments. Il préserve
l’argument de l’altèration. C’est une copie du paramètre réel qui est transmise
au module ; donc les manipulations internes du module n’influencent pas cet
argument à la sortie.

4.7.2 Passage par réference


Lorsqu’on envisage de récupérer les modifications d’un argument, il faut
lui imposer un mécanisme de transmission par adresse en le faisant précédé
du mot clé ”Var”. Dans ce mode de passage de paramètre, le module manipule
directement la case mémoire réservée à l’argument réel. Ainsi toute modification
du paramètre formel est repercutée sur le paramètre effectif.

36

Vous aimerez peut-être aussi