# Algorithmique impérative/Pascal

Voici un guide de traduction d'un algorithme impératif en Pascal.

## Le Squelette

Pour le squelette de l'algorithme :
On traduit ainsi :

## Commentaires

Les commentaires notés
s'écrivent de la même façon

## Types

Voici l'équivalence des types
| type | Pascal |
| booléen | bool |
| entier | integer |
| réel | real |
| caractère | char |
| chaîne de caractères | string |
* Les valeurs booléennes sont true et false.
* Les parties entière et décimale d'un réel sont séparées par un point et non une virgule.
* les chaînes sont déclarées entre deux apostrophes ' pour échapper un caractère on le double.
Exemple sur ce dernier point : pour inclure une apostrophe dans une chaîne,
affiche

## Constantes et variables

Les constantes et les variables ont des identifiants qui doivent respectées une syntaxe précise.
* l'identifiant ne peut comporter que des caractères alpha-numériques (de A à Z, de a à z et de 0 à 9) et des tirets-bas ou underscore : _.
* le premier caractère est une lettre.
les variables sont déclarées dans le Lexique du programme délimité par sa partie Var. Chaque déclaration est de la forme
Ainsi le lexique
se traduit
Les accents ne sont généralement pas acceptés par les compilateurs Pascal.
Les identifiants des constantes respectent les mêmes règles. Par convention, on préférera les noter en majuscules. La déclaration d'une constante a pour syntaxe
Ceci
s'écrit en pascal :

## Instructions et blocs d'instructions

Pour exécuter une instruction (assignation, appel de fonction ou procédure) il suffit de l'écrire. Les paramètres sont précisés entre parenthèses et séparés par des virgules.
Les bloc d'instructions débutent par un begin et se terminent par un end. Les instructions du bloc sont séparées par des point-virgules. On gardera la convention algorithmique préférant une instruction par ligne.
Voici une ligne comportant une instruction unique :
Voici un bloc de k d'instructions :
Remarquez qu'aucun point-virgule ne ponctue la dernière instruction. En effet le ';' est un séparateur : il sépare les instructions entre elles. Il n'y a donc pas de point-virgule après la dernière instruction, pas plus qu'il n'y en a avant la première. Cela explique également pourquoi lorsqu'on écrit une seule instruction, elle n'est pas suivie d'un point-virgule.
Il est souvent affirmé à tort que « toutes les instructions se terminent par un point-virgule ». Ce n'est pas tout à fait vrai, comme nous venons de le voir. Cependant, cette croyance répandue a été prise en considération par les développeurs des compilateurs qui ignorent cette erreur.
Il convient de remarquer que le programme principal est un bloc d'instructions ponctué d'un point, ni plus ni moins.

## Lecture et Écriture (affichage)

L'affichage s'effectue à l'aide de la procédure write. Elle peut prendre de un à plusieurs paramètres de n'importe quel type de base. Elle affiche tous les paramètres les uns après les autres (résultat identique à celui d'une concaténation).
Il existe une variante de write ayant la même spécification mais effectuant un retour à la ligne à la fin : il s'agit de la procédure writeln. On peut également appeler la procédure writln sans préciser de paramètres, cela effectue un retour à la ligne.
La lecture se fait à l'aide de la fonction read qui prend en paramètre l'identifiant de la variable qui sera assignée.
readln est indentique à read mais fait un retour à la ligne une fois la donnée lue.
Exemple
affiche
alors que
affiche

## Assignation

L'assignation est une instruction et à ce titre elle doit respecter les règles sur les instructions (points-virgules...)
L'opérateur d'assignation est := (et non = qui est le test d'égalité)
La syntaxe de l'assignation est (espaces facultatifs) :
Il va sans dire que le type de l'expression doit être compatible avec celui de la variable assignée.

## Exécution conditionnelle

On rappelle qu'une exécution conditionnelle est une instruction. Elle ne comporte pas de point-virgule sauf si elle est à l'intérieur d'un bloc. On suppose ici que l'instruction est au sein d'un bloc.
donne
S'il y a plusieurs instructions, on utilise un bloc :
Avec une instruction à exécuter quand la condition est fausse (sinon) :
se traduit
De même on peut utiliser des blocs :

## Structures itératives

Une boucle à compteur
donne
On peut toujours utiliser un bloc comme instruction pour grouper plusieurs instructions à exécuter :
De même, une boucle répétée jusqu'à ce qu'une condition soit vraie (testée après chaque itération) :
et une boucle répétée tant qu'une condition est vraie (testée avant chaque itération) :

## Tableaux

donne :
Par exemple un tableau de 10 entiers, indicé de 1 à 10 :

## Le type enregistrement

donne
Exemple :