Théorie

LANGAGES DE PROGRAMMATION

Un ordinateur est une machine bête, ne sachant qu'obéir, et à très peu de choses :

* addition, soustraction, multiplication en binaire, uniquement sur des entiers,

* sortir un résultat ou lire une valeur binaire (dans une mémoire par exemple),

* comparer des nombres.

Sa puissance vient du fait qu'il peut être programmé, c'est à dire que l'on peut lui donner, à l'avance, la séquence (la suite ordonnée) des ordres à effectuer l'un après l'autre. Le grand avantage de l'ordinateur est sa rapidité. Par contre, c'est le programmeur qui doit TOUT faire. L'ordinateur ne comprennant que des ordres codés en binaire (le langage machine), des langages dits "évolués" ont été mis au point pour faciliter la programmation.

Le PASCAL est un langage compilé, c'est à dire qu'il faut :

* entrer un texte dans l'ordinateur

* le traduire en langage machine (c'est à dire en codes binaires compréhensibles par l'ordinateur) : c'est la compilation et éventuellement l'édition de liens.

* l'exécuter.

Contrairement à un basic interprété, l'exécution sera beaucoup plus rapide puisqu'il n'y a plus de traduction à effectuer. Bien que le langage soit normalisé, un certain nombre de points dépendent de la machine et du compilateur utilisé (par exemple comment appeler le compilateur). Ces indications ne seront pas données ici. Si vous avez le choix, nous vous conseillons TURBO PASCAL, le plus pratique d'emploi (en particulier parce qu'il possède son propre éditeur de texte).

ENTIERS

déclaration : VAR variable1,variable2,... : INTEGER;

rappel : un nombre entier est un nombre qui n’as pas de" virgule " comme 2.185

et qui n’es pas négatif comme –5447

La variable integer choisie devra correspondre à un nombre entier.

Ex VAR nombre : INTEGER

REELS

déclaration : VAR liste de variables : REAL;

opérations : + - * /

Quand une opération comprend un argument réel et un entier, le rséultat est reél. / donne toujours un résultat reél, même si les deux arguments sont entiers.

En cas d'ambiguïté utilisez des parenthèses (il n'y a aucun inconvénient à mettre plus de parenthèses que nécessaire).

BOOLEENS

Déclaration : VAR liste de variables : BOOLEAN;

Ces variables peuvent prendre soit la valeur TRUE (vrai), soit la valeur FALSE (faux).

opérations booléennes : AND, OR, NOT. Ces opérations nécessitent des arguments booléens.

opérations à valeur booléenne : > (supérieur), < (inf), >= (sup ou égal), <=, = (égal), <> (différent).

CARACTERES

Déclaration : VAR liste de variables : CHAR;

ces variables contiennent UN caractère. Ceux-ci sont classé suivant un ordre précis:

- les chiffres '0' à '9' par ordre croissant

- les majuscules 'A' à 'Z' par ordre alphabétique

- les minuscules 'a' à 'z'

INSTRUCTION

On appelle "instruction simple" soit :

* une affectation

* un appel à une procédure (une procédure est un ensemble d'instructions regroupées sous un nom, par exemple READLN)

* une structure de contrôle (voir plus bas);

On appelle "instruction " le regroupement de plusieurs ou une seule instruction(s) sous la forme :

BEGIN instruction1;instruction2; ... ;instruction END

…. END

On ne met pas de ";" après BEGIN ni avant END (puisque le ";" sépare deux instructions). Par contre, si l'instruction composeé est SUIVIE d'une autre instruction, on mettra un ";" après le END .

La lisibilité du programme sera meilleure en mettant une instruction par ligne, et en décalant à droite les instructions comprises entre un begin et un end.

On appelle "instruction" une instruction soit simple soit composeé

Ex : program bienvenue

begin

Writeln (‘bonjour’)

End.

Nos connaissances actuelles ne nous permettent pas de faire des programmes utilisant la capacité de l'ordinateur à répéter rapidement et sans erreur beaucoup de calculs. Nous allons donc remdéier immédiatement à cela. Chaque structure de contrôle forme une instruction (qui peut donc être utilisée dans une autre structure de contrôle).

BOUCLE WHILE - DO (tant que - faire)

structure : WHILE expression booleénne DO instruction

elle permet de répéter l'instruction tant que l'expression (ou la variable) booleénne est vraie.

ex : PROGRAM racine_a_deux_decimales(input,output);

VAR nombre,racine:REAL;

begin

writeln('entrez un réel entre 0 et 10');

readln(nombre);

racine:=0;

WHILE racine*racine < nombre DO racine:=racine+0.01 >;

writeln('la racine de ',nombre,' vaut à peu près',racine)

END.

Il faut noter que si l'expression booléenne est fausse dès le début, l'instruction n'est jamais exécutée (ici si NOMBRE=0). Attention, Pascal n'initialise pas automatiquement les variables à 0, c'est à dire que sans l'instruction RACINE:=0 le programme risquerait de donner une réponse fausse (RACINE valant n'importe quoi, il sera en général très supérieur à la racine cherchée).

On ne peut répéter qu'UNE seule instruction. Mais celle-ci peut être simple (comme dans l'exemple précédent) ou composée (begin - end).

BOUCLE REPEAT - UNTIL (répéter - jusqu'à ce que)

structure : REPEAt

instruction1;

instruction2;

...etc...

instruction X

UNTIL condition

Les instructions sont répétées jusqu'à ce que la condition soit vérifiée. Même si la condition est vraie dès le début, elles sont au moins exécutées une fois.

ex: PROGRAM jeu_simpliste ;

VAR a: integer;

begin

writeln('entrez le nombre 482');

REPEAT

readln(a)

UNTIL a=482;

writeln('merci beaucoup ! ! !')

end.

Quelle que soit la valeur initiale de A (même 482), la question sera au moins posée une fois (plus si vous donnez le mauvais chiffre).

BOUCLE FOR - DO (pour - faire)

structure :

FOR nombre:= 1 TO 5 DO

instruction

traduction : pour le nombre de 1 à 5 fait les instructions suivantes. Contrairement aux autres boucles celle-ci n’as pas comme end ou until ,

INSTRUCTION IF - THEN - ELSE (si - alors - sinon)

structure : IF condition THEN instruction1 (CAS 1)

ou : IF condition THEN instruction1 ELSE instruction2 (CAS 2)

Si la condition est vraie, alors on exécute l'instruction1 (simple ou composée). Sinon, on passe à la suite (cas 1), ou on exécute l'instruction2 (cas 2).

Remarquez qu'il n'y a pas de ";" devant le ELSE.

CASE - OF (cas - parmi)

Elle évite d'utiliser une trop grande suite de ELSE IF.

structure : CASE expression OF {regardez bien oû j'ai mis les ;}

liste_de_cas1:instruction1;

liste_de_cas2:instruction2;

.....

liste_de_casN:instructionN

END

L'instruction x sera exécutée si l'expression appartient à la liste_de_cas x. Les autres ne seront pas exécutées (on passe directement au END).