• Like
Le langage Pascal
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Le langage Pascal

  • 2,407 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to like this
No Downloads

Views

Total Views
2,407
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
152
Comments
1
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal SommairePRÉ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].............................................................................................5HISTORIQUE...........................................................................................................7 LA NAISSANCE DE PASCAL..............................................................................................7 L’ÉVOLUTION DE PASCAL................................................................................................7 LE P CODE................................................................................................................7LES 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.......................................................................................................10LA 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].........................................14LES 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 dapproximation................................................................................17 1
  • 2. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage PascalLES 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 dattente.............................................................................................21 Utiliser For avec précaution.................................................................................22LES 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...........................................................................................25LES PROCÉDURES ET LES FONCTIONS...................................................................27 LE BLOC DINSTRUCTIONS.............................................................................................27 LES TYPES DE VARIABLE...............................................................................................27 La variable globale.............................................................................................27 La variable locale...............................................................................................27 LA PROCÉDURE [PROCEDURE]........................................................................................27 Appeler une procédure à partir dune autre procédure............................................27 Les méthodes dappel dune procédure.................................................................28 LES FONCTIONS........................................................................................................28 Appeler une fonction...........................................................................................28 Affecter la valeur dune fonction..........................................................................28 La définition nintervenant quaprès appel.............................................................29 REMARQUES.............................................................................................................29 La programmation modulaire...............................................................................29 Différencier variable globale et variable locale.......................................................29 Les paramètres dentrée, de sortie, mixte.............................................................29 L’effet de bord...................................................................................................29LES 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 PascalDélimiter des domaines de validité.......................................................................32Utiliser les constantes pour le débogage...............................................................32 3
  • 4. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage PascalPrésentation Le programme source, le programme compilé Un programme écrit en Pascal est appelé programme source. Il nest pas compréhensible directement par lordinateur. Pour quil puisse être exécuté, il faut procéder à une autre étape : la compilation. Cest 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 lexé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 dun bloc. La séquence ce touches Ctrl-K, C Les touches Ctrl-K puis C recopie le bloc sélectionné par F7 et F8 à lendroit 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 denregistrer 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 dune 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 dune chaîne autorisé (par défaut) {$V-} Test de la longueur d’une chaîne interdit {$R+} Contrôle de lindex 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 Lintérêt dune telle instruction est visible par exemple dans le cas suivant : Si erreur Alors Faire Message derreur Aller à la fin du programme FinFaire Corps du programmeLa 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 PascalHistorique La naissance de Pascal Pascal est un langage de programmation créé en 1963 par le Professeur Niklaus Wirth de lEidgenossisch Technische Hochshcule de Zurich. Il a pris naissance après constatation de Dahl et de Dijkstra que 50 % du coût de lélaboration dun logiciel incombait à la maintenance, contre 10 % seulement pour la première écriture du programme. Ceci explique la naissance dun langage de science exacte, et non pas artistique. Wirth sest inspiré de lAlgol, et a doté Pascal dune certaine cohérence (il en est le seul auteur, au contraire de Ada), dune simplicité, et dune 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 lUniversité of California at San Diego (UCSD) : version optimisée (overlays, librairies, utilisation statistiques pour la fréquence des instructions, ...), • beaucoup dautres : TINY PASCAL, PASCAL MT+, PASCAL JRT, ... • et maintenant le phénomène TURBO PASCAL. Le P Code Dès lorigine apparut lidé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 PascalLes bases Introduction La syntaxe est un ensemble de règles dutilisation 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 dautre • les mots réservés ne peuvent être utilisés comme noms didentificateurs. 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 dinstruction dans le « Block Statement », qui comprend à la fois BEGIN et END. A lunique 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 nimporte où dans un programme. Ils sont introduits par (* et terminés par *). Ils seront ignorés aussi bien lors de lexécution du programme que lors de la compilation du source. 9
  • 8. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage PascalLe contrôle de l’écran Afficher un texte [Write, WriteLn] Les ordres WRITE et WRITELN affichent des messages à lécran. WRITE permet dafficher 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 lordre 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é à lintersection 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 dinstructions 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 ligneLa 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. Lorsquune assignation dune expression à une variable est faite et quelle ne tient pas sur une ligne, la suite est inscrite juste sous la partie précédente de lexpression. Pour READ et READLN, cest 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 didentificateurs, 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 dutiliser des abréviations standards, comme lorsque vous prenez des notes lors dune conférence. Dans le même ordre didées, évitez de trop abréger les noms didentificateurs puisquil y a alors risque de créer des noms qui se ressemblent, source derreur.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 lauteur, 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 dun 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 douverture. 11
  • 10. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage PascalLa déclaration, l’assignation Les variables Les variables sont des emplacements dans la mémoire de lordinateur. Elles portent chacunes un nom. Vous devez déclarer lesquelles seront utilisées, ainsi que les genres de valeurs quelles 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 dune opération arithmétique sera réel si lun au moins des facteurs est réel. Déclarer une variable [Var] VAR est le mot réservé qui indique à lordinateur 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 lordre VAR et après la dernière variable déclarée. Lordre 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 dau plus 80 caractères sil 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 PascalAffecter 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 dune affectation directe est le suivant : Variable_Réceptrice := Expression_Source; Une expression étant une suite hiérarchisée dopérations élémentaires. Notez que le résultat dune opération arithmétique est réel si lun au moins des facteurs est réel. Affecter une valeur lue au clavier à une variable [Read] Lordre READ permet à lordinateur de capter une donnée en cours dexécution du programme. Utilisez READ si un « enter » (ou return) nest pas obligatoire à la fin de la saisie. Sinon, employée READLN. Les variables BOOLEAN ne peuvent recevoir de valeur quen assignation directe. Avec les variables CHAR, READ est utilisé, mais la plupart du temps, ce sera READLN, puis quun return est le plus souvent demandé. 14
  • 12. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage PascalLes opérateurs Introduction Les opérateurs arithmétiques sont des symboles qiu indiquent à lordinateur deffectuer certaines opérations mathématiques. On peut citer laddition, 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 dun 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 dentiers 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 » quun « B » ! (voir les codes ASCII pour plus de précisions).Les fonctions arithmétiques [Abs, Cos, Exp, Frac, ...] Voici dautres fonctions arithmétiques disponibles : Fonction Description Abs (Nombre) Renvoit la partie absolue de nombre ArcTan (Nombre) Renvoit larc-tangente de nombre Cos (Nombre) Renvoit le cosinus de nombre Exp (Nombre) Renvoit lexponentielle 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 larrondi à lentier 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 + 1Remarques L’ordre des priorités Après avoir tenu compte des priorités des opérateurs, lordinateur effectue les calculs de gauche à droite. Voici lordre de priorité des opérateurs : • dabord les multiplications et les divisions (*, /, DIV, MOD) • ensuite les additions et les soustractions (+, -) Toutefois, vous pouvez indiquer à lordinateur deffectuer un groupe dopé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 quen mathématiques. Note : pour effectuer les calculs, vous pouvez intégrer des opérateurs dans des expressions dassignation de variables. 16
  • 14. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage PascalLes erreurs dapproximation Attention, rappelez-vous que lensemble mathématiques de la machine nest pas continu, à cause du manque de précision de lordinateur. 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 PascalLes répétitions Introduction Un des grands intérêts de lordinateur 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 dinstructions en un minimum dinstructions. Voyons While et Repeat. Ils permettent la répétition dune série dordres un certain nombre de fois. Ce nombre nest 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 darrê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 PascalLa boucle Repeat Et celle de la boucle « repeat » : "REPEAT ordre UNTIL expression;" où expression a un rôle de valeur booléenne. Lalgorithme de Repeat .. Until est le suivant : Faire varier J de n à b par pas de p tant que <condition> Pour chaque J (ordres) FinFaireLa 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 à lordinateur dincrémenter le compteur. DOWNTO fait lopposé : il y a décrémentation. Si avec TO, expression1 est inférieur à expression2, (ou le contraire avec DOWNTO), alors la boucle nest 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 darrêt, qui constituent ainsi une formulation dune 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 darrêt doit être réalisable en un nombre fini ditérations.Remarques La différence entre WHILE et REPEAT est que REPEAT vérifie lexpression à 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 nest pas obligatoire. REPEAT implique la présence de BEGIN...END. Et même, si vous lommettez, lordinateur 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 nest pas nécessaire dans une boucle REPEAT. La boucle dattente En plaçant un point-virgule (;) juste après DO, vous générez une boucle dattente, cest-à-dire quun certain laps de temps sécoule sans quaucune instruction ne soit exécutée. 21
  • 18. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage PascalUtiliser 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 PascalLes conditions Définition Les ordres de condition constituent le coeur de tout programme effectuant une « décision ». Grâce à celles-ci, lordinateur 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) lexpression est vraie, alors (THEN) exécute les ordre(s) suivants. Dans le second cas, si (IF) lexpression 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 dordre conditionnel : CASE. La syntaxe est : CASE expression OF constant: ordre; constant: ordre; ... ... constant: ordre; END; Linstruction CASE permet de choisir un traitement, et un au plus, parmi plusieurs, en fonction dun critère. Si aucune condition nest 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 Lexpression 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 navez 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 dune 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 dabord, les ordres utilisés dans lordre 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 à lordre IF peut aider à identifier rapidement une instruction de branchement. Le schéma dun test est : SI hypothèse satisfaite ALORS (* donnée correcte *) lancer lalgorithme SINON erreur de donnée Ainsi, si la condition est remplie alors le premier traitement, et lui seul, est lancé (lancer lalgorithme). 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 PascalRemarques Une erreur classique Attention lerreur classique de placer un point-virgule (;) devant le ELSE ! Un IF est suivi dun point-virgule si et seulement sil précède une autre instruction dans le même groupe BEGIN. Les tests en cascade Remarquez lintérêt des tests en cascade : il permettent daméliorer les performances dun programme, en y effectuant le minimum indispensable de tests. 25
  • 22. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage PascalLes procédures et les fonctions Le bloc dinstructions 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 quelle sera utilisée partout dans le programme. La variable locale Si une variable est déclarée à lintérieur dun 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 dun point-virgule à la place dun point. Lobjectif majeur dune procédure est deffectuer une tâche spécifique. Cette tâche, ou routine, est généralement exécutée plus dune fois, et souvent appelée de divers endroits du programme. Appeler une procédure à partir dune 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 à lintérieur dune procédure nest 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 dappel dune 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 à lordre dappelle dune 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 dutiliser 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 dinformation dune procédure par utilisation de la liste de paramètres, pas lautre 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 dune 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 lappel dune fonction. En effet, il suffit dutiliser son nom nimporte où Pascal de placer une expression. Affecter la valeur dune fonction Remarque : nous ne pouvons assigner une valeur à la valeur de la fonction quà partir delle-même. 28
  • 24. Bruno Delb http://www.brunodelb.com Date : 14/04/2001 Le langage Pascal La définition nintervenant quaprè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 dun programme et la possibilité den faire ainsi un module utilisable par dautres 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 dune page affichable, essayez de la découper de façon logique. Différencier variable globale et variable locale Il pourra arriver quà la lecture dune procédure ou dune 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 dentrée, de sortie, mixte Un paramètre constitue linterface entre la procédure et son environnement. On définit les paramètres dentrée comme étant les données figurant dans la définition dune 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 quon 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 PascalLes 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ù linformation est stockée. Modifier une constante [=] Contrairement à une variable, vous ne pouvez pas modifier la valeur dune 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 ltilisation dexpressions 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 à lintérieur de ce type. Ainsi, chaque élément dun 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 dun 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 PascalLes 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 lindice (ou numéro de lélément). Cela est fait par la simple adjonction du nom du tableau et de lindice entre crochets. Utiliser des tableaux multidimensionel Les tableaux multi-dimentionels sont ceux possédant plus dune 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 dune portée dun autre standard ou dun type défini par lutilisateur. La syntaxe de la déclaration dun 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 PascalEffectuer des opérations sur un ensemble Voici ci-dessous une liste dopérations que lon 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 TYPEDélimiter des domaines de validité Les constantes peuvent être utilisées en particulier pour fixer le domaine (de validité, ...) dun 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