Support de cours : Langage pascal. Première partie

Documents pareils
LES TYPES DE DONNÉES DU LANGAGE PASCAL

Examen Médian - 1 heure 30

Corrigé des TD 1 à 5

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java


Enseignement secondaire technique

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Algorithmique et Programmation, IMA

Cours Informatique Master STEP

Algorithmique et programmation : les bases (VBA) Corrigé

Compilation (INF 564)

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Algorithmes et programmation en Pascal. Cours

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Notions fondamentales du langage C# Version 1.0

Plan du cours. Historique du langage Nouveautés de Java 7

STAGE IREM 0- Premiers pas en Python

Programmation C++ (débutant)/instructions for, while et do...while

Bases de programmation. Cours 5. Structurer les données

INF 321 : mémento de la syntaxe de Java

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Licence Sciences et Technologies Examen janvier 2010

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Cours d algorithmique pour la classe de 2nde

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Rappels d architecture

Java Licence Professionnelle CISII,

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Programmer en JAVA. par Tama

Programmation C. Apprendre à développer des programmes simples dans le langage C

MINISTERE DE L ENSEIGNEMENT TECHNIQUE ET DE LA FORMATION PROFESSIONNELLE. (Pour l obtention du diplôme d analyste programmeur)

1. Structure d'un programme FORTRAN 95

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Maple: premiers calculs et premières applications

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Introduction au langage C

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Logiciel. Table de matières I Environnement requis...2

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Initiation à la programmation en Python

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Conventions d écriture et outils de mise au point

Le langage C. Séance n 4

TP 1. Prise en main du langage Python

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Organigramme / Algorigramme Dossier élève 1 SI

Présentation du langage et premières fonctions

Chapitre 6. Fonction réelle d une variable réelle

Initiation à la Programmation en Logique avec SISCtus Prolog

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

GUIDE Excel (version débutante) Version 2013

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Claude Delannoy. 3 e édition C++

Introduction à MATLAB R

Définitions. Numéro à préciser. (Durée : )

Glossaire des nombres

Présentation du PL/SQL

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

Programmation en Java IUT GEII (MC-II1) 1

Représentation d un entier en base b

Cours d Informatique

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

L informatique en BCPST

Cours 1 : La compilation

Cours d Algorithmique et de Langage C v 3.0

COURS ALGORITHMIE. Mathématiques. Le monde merveilleux des algorithmes!! Croyez-moi, vous allez les adorer. Julien Bordas T.S 3

UE C avancé cours 1: introduction et révisions

C2AI 9 rue de Catalogne Décines cedex Tél. : Fax :

Les structures. Chapitre 3

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

ALGORITHMIQUE ET PROGRAMMATION En C

Rappels sur les suites - Algorithme

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Algorithmique avec Algobox

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Recherche dans un tableau

Génie Logiciel avec Ada. 4 février 2013

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

CM2 L architecture MIPS32

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

Introduction à l informatique en BCPST

Solutions du chapitre 4

Calcul Formel et Numérique, Partie I

Transcription:

Support de cours : Langage pascal Première partie Références : Edouard Thiel, Algorithmes et programmation en Pascal 2004. Jean-Philippe Poli, Introduction au Turbo Pascal 2009. Hugo Etievant, Cours de Turbo Pascal 7 2009. F. KAHLESSENANE 2013-2014 1

sommaire Sommaire... 2 1. Introduction... 3 1.1 Algorithmes et programmes... 3 1.2 La compilation... 3 1.3 Le langage pascal... 4 2. Utiliser l environnement de programmation... 5 2.1 Description des menus... 5 2.1.1 Menu File... 6 2.1.2 Menu Edit... 6 2.1.3 Menu Run... 7 2.1.4 Menu Compile... 7 3. Programmer en Pascal... 8 3.1 Architecture standard d'une source en Pascal... 8 3.2 Mots réservés du langage Pascal... 9 3.3 Entrées et sorties à l écran... 9 3.3.1 sorties à l écran... 9 3.3.2 Entrées à partir du clavier... 10 3.4 Opérateurs... 11 3.4.1 Opérateurs mathématiques... 11 3.4.2 Opérateurs relationnels... 11 3.4.3 Opérateurs logiques... 11 3.5 types prédéfinis... 11 3.5.1 Nombres entiers... 11 3.5.2 Nombres réels... 12 3.5.3 Les Booléens... 14 3.5.4 Les chaines de caractères... 14 3.6 Les structures conditionnelles... 15 a) La structure if... 15 b) La structure case... 16 3.7 Les structures répétitives... 16 3.7.1 La boucle For... 17 3.7.2 La boucle While... 17 3.7.3 La boucle Repeat... 18 3.7.4 Choix de la boucle... 19 2

INTRODUCTION 1. Introduction Dans ce chapitre, nous allons introduire différentes notions d informatique qui permettront de comprendre ce que nous allons faire tout au long de l année. 1. Algorithmes et programmes Les notions d algorithme et de programme sont des notions liées mais qu il ne faut pas confondre. On appelle algorithme une suite d opérations élémentaires permettant de résoudre un problème ou d effectuer un calcul et qui peut être écrite dans un langage proche de notre langue naturelle, (c est-à-dire le français, l anglai, l arabe, le chinois,...etc.). Un programme est une suite d instructions écrites dans un langage appelé langage machine, constitué uniquement de 0 et de 1, et qui est le seul langage compris par un ordinateur. Par exemple, les traitements de texte et les messageries instantanées sont des programmes. Le rôle d un programmeur est donc d écrire une suite d instructions que l ordinateur devra exécuter lorsqu un utilisateur démarre un programme. Il est très difficile, pour des raisons évidentes, d écrire un programme en langage machine. Le programmeur utilise donc un langage appelé «langage de programmation» qui est un intermédiaire entre la langue naturelle et le langage machine. 2. La compilation Ainsi, le programmeur écrit dans un fichier (parfois appelé «code source») l ensemble des instructions en utilisant le langage de programmation. Puisque l ordinateur ne comprend pas ces instructions, il faut les traduire en langage machine ; cette phase de traduction est appelée «compilation» (voir figure 1) et est effectuée par un logiciel. Après la compilation, on obtient un programme. 3

INTRODUCTION Program test; Begin Write( hello ); End. Fichier text.pas Compilation 10110010101001010 01010101111000101 10000101001010100 00010101010010000 01010000010000010 Exécutable Fig. 1 La compilation : transformation du code source en un programme. Pour écrire un programme dans un langage donné, nous utilisons un environnement de programmation. Il s agit d un ensemble de logiciels destinés au programmeur et comprenant : un éditeur de texte, un compilateur, un système d aide, un système de débogage... 3. Le langage Pascal Le langage Pascal a été créé initialement par Nicklaus Wirth, un professeur suisse, à la fin des années soixante-dix. Le langage Pascal offre une très bonne approche de la programmation. Très utilisé dans le milieu scolaire, il permet d'acquérir des notions solides que l'on retrouve dans tous les autres langages. Turbo Pascal, le compilateur de Borland mondialement connu, a été introduit en 1985. Il a été l un des compilateurs les plus vendus de tous les temps et a rendu le langage particulièrement populaire grâce à son équilibre entre simplicité et puissance. Turbo Pascal a introduit un Environnement de Développement Intégré (EDI) dans lequel on pouvait éditer du code, faire tourner le compilateur, visualiser les erreurs et revenir aux lignes contenant ces erreurs. 4

Utiliser l environnement de programmation 2. Utiliser l environnement de programmation Dans ce chapitre, nous allons étudier l environnement de développement, c est-à-dire le logiciel qui nous permet d écrire des programmes en Pascal. 1. Description des menus L environnement de programmation que nous utilisons apparaît dans une fenêtre en haut de laquelle se trouve la barre des menus (voir figure 2) qui permet d accéder aux fonctionnalités du logiciel. Zone d édition du code source Barre des menus Nom du programme Fig. 2 Apperçu de turbo pascal 7.0. 5

Utiliser l environnement de programmation Nous allons à présent passer en revue les fonctionnalités dont vous aurez besoin durant les travaux pratiques. 1.1 Menu File Le menu File permet d accéder aux fonctionnalités suivantes : New : ouvre une nouvelle fenêtre d édition (dans laquelle le code source doit être écrit). Open : ouvre un fichier existant. Save : enregistre le contenu de la fenêtre dans un fichier. Lors de la première sauvegarde, un nom de fichier est demandé. Les sauvegardes suivantes s effectuent dans le même fichier. Fig. 3 Enregistrement d un programme. : Signifie qu on va sauvegarder le programme (fichier) dans le répertoire tp du lecteur d, et dont le nom est test.pas Save as : enregistre le contenu de la fenêtre dans un nouveau fichier. Exit : quitte le logiciel. 1.2 Menu Edit Le menu Edit permet d accéder aux fonctionnalités concernant l édition du texte : Undo : annule la dernière action. Cut : supprime le texte sélectionné et le copie en mémoire. Copy : copie le texte sélectionné en mémoire sans le supprimer. Paste : colle le texte mémorisé à l emplacement actuel du curseur. 6

Utiliser l environnement de programmation 1.3 Menu Run Dans ce menu, nous n utiliserons que l option Run qui permet d exécuter le programme correspondant à votre code source. Si votre code source n est pas compilé, la commande Run exécutera préalablement une compilation. Il est toutefois préférable de lancer la compilation manuellement. 1.4 Menu Compile Dans ce menu, l option «Compile» compile le code source actuel. La compilation crée alors un programme exécutable à partir du menu Run. 7

3. Programmer en Pascal A présent, nous allons décrire l ensemble des règles qui permettent d écrire un programme en langage Pascal. Les mots-clés du langage Pascal sont inspirés de mots anglais. 1. Architecture standard d'une source en Pascal { Les commentaires peuvent êtres entre accolades... } (*...ou encadrés comme ceci *) Program { nom du programme } ; Uses { unités utilisées } ; Const { déclaration de constantes } ; Type { déclaration de types } ; Var { déclaration de variables } ; Function { déclaration de fonctions } ; Procedure { déclaration de procédures } ; BEGIN { début du programme principal } { Le corps du programme principal } END. Un nom de programme respecte les règles liées aux identificateurs (cf. plus bas) et ne peut pas contenir le caractère point ".". Un programme principal débute toujours par BEGIN et se termine par END. (avec un point). Alors qu'un sous-programme (ou fonction, procédure, bloc conditionnel...) commence lui aussi par Begin mais se termine par End; (sans point mais avec un point-virgule). Chaque instruction doit se terminer avec un point-virgule. Il n'y a pas d'exception à la règle hormis l'instruction précédant Else. N'hésitez pas à insérer des commentaires dans votre code, cela vous permettra de comprendre vos programmes un an après les avoir écrit, et ainsi d'autres personnes n'auront aucun mal à réutiliser vos procédures, fonctions... 8

Les identificateurs doivent impérativement être différents de ceux d'unités utilisées, de mots réservés du langage Pascal et ne doivent pas excéder 127 signes (1 lettre au minimum). Les identificateurs ne peuvent contenir que les caractères a à z, A à Z, les chiffres 0 à 9, et le caractère de soulignement _. Ils doivent obligatoirement commencer par une lettre. Un identificateur ne peut être égal à un mot réservé du langage Pascal! 2. Mots réservés du langage Pascal (liste non exhaustive) AND - ARRAY - ASM BEGIN CASE - CONST - CONSTRUCTOR DESTRUCTOR - DIV - DO - DOWNTO ELSE - END - EXPORTS FILE - FOR - FUNCTION GOTO IF - IMPLEMENTATION - IN - INHERITED - INLINE - INTERFACE LABEL - LIBRARY MOD NIL - NOT OBJECT - OF - OR PACKED - PROCEDURE - PROGRAM RECORD REPEAT - ROUND SET - SHL - SHR - STRING THEN - TO TRUNC - TYPE UNIT - UNTIL - USES VAR WHILE - WITH XOR 3. Entrées et sorties à l écran 3.1 sorties à l écran (write) a) La commande write permet d'afficher du texte et de laisser le curseur à la fin du texte affiché. Cette commande permet d'afficher des chaînes de caractères n'excédant pas 255 signes ainsi que des valeurs de variables, de constantes, de types... Le texte doit être entre apostrophe. Si le texte à afficher contient une apostrophe, il faut alors la doubler. Les différents noms de variables doivent être séparés par des virgules. Syntaxe : Write ('Texte à afficher', variable1, variable2, 'texte2'); Write ('L''apostrophe se double.'); 9

La commande WriteLn est semblable à la précédente à la différence près que le curseur est maintenant renvoyé à la ligne suivante. Syntaxe : WriteLn ('Texte avec renvoi à la ligne') ; b) La commande clrscr permet l effacement du contenu de l écran utilisateur (écran noir d exécution). Cette instruction nécessite l utilisation de l unité crt. Syntaxe Clrscr ; 3.2 Entrées à partir du clavier (read) a) La commande read permet à l'utilisateur de rentrer une valeur qui sera utilisée par le programme. Cette commande ne provoque pas de retour Chariot, c'est-à-dire que le curseur ne passe pas à la ligne. Syntaxe : Read (variable) ; La commande ReadLn permet à l'utilisateur de rentrer une valeur qui sera utilisée par le programme. Cette commande provoque le retour Chariot, c'est-à-dire que le curseur passe à la ligne suivante. Syntaxe : ReadLn (variable1, variable2) ; c) La commande readkey permet à l utilisateur de rentrer une variable de type char à partir du clavier. Cette instruction a pour but la mise en pause de l écran utilisateur jusqu à ce qu on appuie sur une touche du clavier (c.à.d. on rentre un caractère). Cette instruction nécessite l utilisation de l unité crt. Syntaxe : Readkey; Exemple illustratif program exemple_illustratif1; uses crt; begin clrscr; writeln('hello world'); readkey; end. 10

Ce programme permet d afficher le texte hello world sur l écran utilisateur. La commande clrscr sert à effacer le contenu de l écran utilisateur, tandis que la commande readkey mis cet écran en attente d une touche clavier (un caractère) avant de revenir à l éditeur du code source. 4. Opérateurs 4.1 Opérateurs mathématiques + Addition (et union 1 ) Soustraction (et complément 1 ) / Division * Multiplication (et intersection 1 ) = Egalité MOD : renvoie le reste de la division DIV : renvoie le quotient de la division 4.2 Opérateurs relationnels < Inférieur strict <= Inférieur ou égale (et inclu 1 ) > Supérieur strict >= Supérieur ou égale (et contenant 1 ) <> Différent 4.2 Opérateurs logiques : AND : le "et" logique OR : le "ou" XOR : le "ou" exclusif NOT : le "non". 5. types prédéfinis Un type décrit un ensemble de valeurs pouvant être manipulées par un ensemble d opérateurs. Nous allons étudier quelques types simples, mais nous verrons plus tard des types dits structurés. 5.1 Nombres entiers Les valeurs de type integer sont un sous-ensemble des entiers relatifs sur 16 bits signé, c est-à-dire les entiers de l intervalle [-32768 ; 32767]. C est le type le plus utilisé pour les nombres entiers. Si on dépasse les valeurs de cet intervalle, il y aura une erreur à l exécution (parfois même à la compilation). Pour remédier, il faut utiliser d autres types : 1 Les opérateurs union, complément, intersection, inclu et contenant s'appliquent au type ensemble. 11

Type Description Intervalle de valeurs Espace mémoire integer Entier signé -32768..32767 16 bits byte Entier non signé 0..255 8 bits shortint Entier signé -128..127 8 bits word Entier non signé 0..65535 16 bits longint Entier signé -2147483648..2147486647 32 bits Soit x et y deux entiers, les opérateurs sur les entiers sont : +x Opérateur unaire d identité x Opérateur unaire pour le signe opposé x+y Addition entière x y Soustraction entière x*y Multiplication entière x/y Division réelle. Si y est nul, il y aura une erreur à l exécution. Le résultat de x/y est le quotient réel de la division de x par y x div y Division entière. Si y est nul, il y aura une erreur à l exécution. Le résultat de x div y est la partie entière du quotient de la division de x par y x mod y Modulo. Si y est négatif ou nul, il y a une erreur à l exécution. Le résultat est le reste de la division entière de x par y. Et les fonctions prédéfinies sur les entiers sont : abs(x) Calcule la valeur absolue x de x. sqr(x) Calcule x 2. inc(x) incrémente x {x x+1 ;}. dec(x) décrémente x {x x-1 ;}. odd(x) renvoie vrai si X est impair et faux si X est pair. 5.2 Nombres réels Il s agit du type real couvrant les valeurs de l intervalle [2.9E-39 ; 1.7 E38] aussi bien dans les réels négatifs que positifs et dont la précision peut atteindre 11 à 12 chiffres significatifs. Il faut remarquer qu il n y a pas d espace entres les chiffres, et surtout que le séparateur décimal, qui en français est la virgule, est ici le point. Type Description Intervalle de valeurs Espace mémoire Real Réel 2.9E-039 et 1.7E+038 6 octets Single* Réel 1.5E-045 et 3.4E+038 4 octets Double* Réel 5.0E-324 et 1.7E+308 8 octets Extended* Réel 3.4E-4932 et 1.2E+4932 10 octets Comp* Réel -2E+063 +1 et 2E+063+1 8 octets (*) : Pour pouvoir utiliser ces types, il faut d abord activer le coprocesseur arithmétique. 12

Comment activer le coprocesseur arithmétique? Allez dans Options --> Compiler, puis dans le cadre Numeric processing, cochez 8087/80287 et Emulation. Cocher la case 8087/80287, puis cliquer sur OK Fig. 4 Activation du coprocesseur arithmétique. Soit x et y deux réels, voici les opérateurs du type real : +x Identité. y Opposé. x+y Addition réelle. x y Soustraction réelle. x_y Multiplication réelle. x/y Division réelle. Si y est nul, il y a une erreur à l exécution. Le résultat de ces opérations est toujours un real. 13

Il existe aussi des fonctions prédéfinies prenant en paramètre un real : Programmer en pascal abs(x) Calcule la valeur absolue x de x. sqr(x) Calcule x 2. sin(x) Sinus de x, avec x en radians. cos(x) Cosinus de x, avec x en radians. exp(x) e x. ln(x) Logarithme népérien de x (Ln x). Si x n est pas strictement positif, il y aura une erreur à l exécution. sqrt(x) Racine carrée de x ( ). Si x est strictement négatif, il y aura une erreur à l exécution. arctan(x) Valeur principale en radians de l arc tangente de x exprimé en radians. trunc(x) Partie entière de x round(x) Entier le plus proche de x. Le résultat de ces fonctions est toujours un real à l exception de trunc et round qui renvoient des entiers. 5.3 Les Booléens Il s agit du type boolean qui a deux valeurs possibles notées «true» et «false» et qui est utilisé pour représenter les valeurs logiques «vrai» et «faux». Quatre opérateurs permettent de manipuler des booléens : la négation (not), la conjonction (and), la disjonction (or) et le OU Exclusif (xor). A titre de rappel, voici les tables de vérités de ces opérateurs : X Y Not(x) X and Y X or Y X xor Y True True False True True True True False False False True False False True True False True False False False True False False True 5.4 Les chaines de caractères Nous utiliserons les chaînes de caractères pour afficher un résultat ; nous n irons donc pas plus loin dans la définition de ce type. Une chaîne de caractères représente un mot ou une phrase qui n est pas interprétée par la machine. Une chaîne de caractères est délimitée par les cotes, c est-à-dire le caractère apostrophe. Exemple. Voici quelques chaînes de caractères : ' Bonjour '. ' La programmation est amusante '. ' L''informatique est devenue très vaste'. 14

Si dans une chaîne de caractères on veut utiliser l apostrophe, il faut le doubler : ' l''informatique ' 6. Les structures conditionnelles a) La structure if...then... else.. L instruction de branchement conditionnel permet d exécuter une instruction en fonction d une certaine condition. Elle s écrit : Si <condition> alors <Traitement> Finsi. if <condition> then <Traitement> Si <condition> alors <Traitement_1> Sinon <Traitement_2> Finsi. if <condition> then <Traitement_1> Else <Traitement_2> Pour une structure imbriquée : Si <condition_1> alors <Traitement_a> Sinon Si <condition_2> alors <Traitement_b> Sinon <Traitement_c> Finsi. if <condition_1> then <Traitement_a> Else if <condition_2> then <Traitement_b> Else <Traitement_c> Avec : <condition> : une expression logique. <traitement> : contient un nombre n d instructions. Si n>1, l ensemble des instructions constituant le bloc <traitement> doit être placé entre Begin et End; (avec ;). Comme nous l avons déjà dit, l instruction précédant le «Else» ne doit pas se terminer par un point-virgule. Exemple If nbr_instr>1 then Begin Writeln( le nombre d instructions est supérieur à 1 ); Writeln ( il faut les mettre entre begin et end ); End Else Writeln( je suis la seule instruction du bloc ); 15

b) La structure case..of..else..end; Pour éviter l imbrication de plusieurs instructions «if» quand il y a plus de deux choix, on préfèrera utiliser l instruction de choix multiples «case». Syntaxe : Case variable of Etiquette_1 : <Traitement_1> Etiquette_2 : <Traitement_2>... Etiquette_n : <Traitement_n> End ; Case variable of Etiquette_1 : <Traitement_1> Etiquette_2 : <Traitement_2>... Etiquette_n : <Traitement_n> Else <Traitement_n+1> End ; Le mot case doit être suivi d un variable de type énuméré (integer, char,enum). Les étiquette sont de même type que la variable : constante, caractère, ensemble de constantes ou ensemble de caractères. Exemple : Program Exemple_case; Var Age : Integer; Begin Write('Entrez votre âge : '); Readln(Age); case Age of 18 : WriteLn('vous êtes major!'); 0..17 : WriteLn('vous êtes mineur!'); 60..99 : WriteLn('vous êtes vieux?!!!') else WriteLn('Vous êtes d''un autre âge...'); end ; End. 7. Les structures répétitives Une instruction d itération permet de répéter l exécution d une ou plusieurs instructions sous certaines conditions. Il existe trois types de boucles. 16

7.1 La boucle For La boucle for est la boucle la plus simple. Elle permet de faire varier la valeur d une variable d une valeur à une autre en l augmentant (ou la diminuant) de 1 à chaque étape. Cette variable, appelée «sentinelle», doit être, à notre niveau, de type integer. Si var dénote une variable entière et si inf et sup sont deux expressions entières, la boucle for peut s écrire : Pour var allant de inf à sup faire <Traitement> For var:=inf to sup do <Traitement> Finpour La boucle for se traduit par «pour var allant de inf à sup répéter l instruction». Cette boucle ne peut donc être utilisée que lorsque l on connaît a priori le nombre d itérations (i.e. de passage dans la boucle). Pour qu elle fonctionne correctement, c est-à-dire qu il y ait effectivement une répétition, il faut au moins que la condition inf sup soit vérifiée. Si sup < inf, aucune erreur n est générée mais la boucle ne sera jamais exécutée. Exemple : Voici un programme qui affiche la table de multiplication du nombre 8 : program multiplication_8; var i : integer; begin for i:=1 to 10 do writeln(i, *8 =,8*i); end. Variante : For var:=sup downto inf do <Traitement> Il est peu recommandé de modifier la valeur de la sentinelle (var) à l intérieur d une boucle for car cela peut rendre le nombre d itérations imprévisible. Il vaut mieux laisser la boucle for faire varier toute seule la sentinelle. 7.2 La boucle While La boucle while permet de répéter une instruction sans connaître à l avance le nombre de répétitions. Si condition dénote une expression booléenne, la boucle while est de la forme : 17

Tantque condition faire <Traitement> while condition do <Traitement> Cette boucle peut se traduire par «tant que la condition est vraie répéter l instruction». Lorsque le programme arrive sur une telle boucle, il va en effet évaluer la valeur de la condition : si celle-ci vaut false, la boucle est sautée et le programme sort de la boucle. En revanche, si la condition vaut true, l instruction de la boucle est exécutée puis l ordinateur réévalue la condition et décide de poursuivre ou non la boucle en fonction de sa valeur. On dit alors que la condition est une condition d entrée dans la boucle ce qui fait qu une boucle while peut ne jamais exécuter l instruction à répéter. Exemple: Programme calculant la somme des nombres de 1 à 100. program Somme; var s,k :integer; begin s:= 0; k:= 1; while k<=100 do begin s:=s+k; k:=k+1; end; writeln(s); end. L instruction de la boucle while doit forcément changer la valeur de la condition; si ce n est pas le cas, cela peut conduire à une boucle qui s exécute indéfiniment (boucle infinie). 7.3 La boucle Repeat Comme la boucle while, la boucle repeat permet de répéter une instruction sans connaître à l avance le nombre de répétitions. Si condition dénote une expression booléenne, la boucle repeat est de la forme : Répéter <Traitement> Jusqu à condition Repeat <Traitement> Until condition La boucle repeat peut se traduire par «répéter les instructions jusqu à ce que la condition soit vraie». Lorsque le programme arrive sur une telle boucle, il va commencer par exécuter les instructions qui se trouvent entre le mot-clé repeat et le mot-clé until. Une fois ces instructions exécutées, la condition est évaluée ; si elle vaut false le programme sort de la 18

boucle, sinon il réexécute la boucle. Cette fois-ci, la condition est une condition de sortie de la boucle, ce qui fait que les instructions sont répétées au moins une fois. Comme pour la boucle while, il est important que les instructions dans la boucle modifient la condition de sortie afin d éviter une boucle infinie. Exemple : Le programme suivant demande à l utilisateur de rentrer un entier non nul. Tant que l utilisateur se trompe et rentre un nombre nul, l ordinateur lui redemande un entier. program exemple_repeat; var entier: integer; begin repeat writeln ( Entrer un nombre <>0: ); readln ( entier ); until entier <>0; end. 7.4 Choix de la boucle La règle est simple (l'apprendre par cœur) : Si le nombre d'itérations est connu a priori, alors on utilise un for. Sinon : on utilise le repeat (quand il y a toujours au moins une itération), ou le while (quand le nombre d'itérations peut être nul). 19