Le pascal est réputé pour être le langage le plus clair qui soit. Voyons si c'est vrai!
Voici la structure générale d'un programme pascal.
Plusieurs choses à remarquer :
- Après avoir donné le nom du programme, il faut spécifier si il utilise les entrées et les sorties ( clavier et écran ) de l'ordinateur. Si vous utilisez la saisie au clavier, il faut rajouter input, et si vous utilisez l'écriture sur l'écran, il faut rajouter output, comme sur cet exemple.
- Début programme et fin programme sont traduit en BEGIN et END..
- Il faut un point-virgule après chaque instruction, sauf celles qui sont juste avant un "end".
- Les noms de variables (et les autres!) ne contiennent que des lettres de l'alphabet, des chiffres et ventuellement le caractère "_" (certains compilateurs le refuse).
Les fonctions
Chaque fois qu'il y a begin end dans une fonction, vous n'êtes pas obligé de le mettre si le contenu est une seule instruction. Cependant, mettez-le, et vous ne vous tromperez jamais...
Les variables et constantes
Types de variable les plus courants :
Entiers i, j : INTEGER;
Reels taux, racine_x : REAL;
Booléens possible, sortir : BOOLEAN;
Caractères choix : CHAR;
Pour donner une valeur à une variable ( équivalent de "=" en algorithmique, appelé instruction d'affectation ), on utilise l'opérateur ":=" qui se lit "prend pour valeur".
Exemple : a := 10; (* a prend pour valeur 10 *)
Instructions Lire et Ecrire
L'intruction writeln ( ) écrit à l'écran ce qu'il y a entre parenthèses retourne à la ligne.
L'instruction readln ( ) prend ce qui est entré au clavier jusqu'à ce que "Entrée" soit tapé et le met dans la variable spécifiée dans les parenthèses.
Instruction Si - Alors - Sinon - Fin Si
Les begin end ne sont pas obligatoire si il n'y a qu'une seule instruction.
La partie else n'est pas non plus obligatoire si on ne fait lorsque la condition est fausse.
Le type Booléen : les conditions
Peut être comprenez-vous pourquoi je parlais d'un travail de traduction...
Les tableaux et les vecteurs
On aura un tableau de 10 sur 10 rempli d'entiers et qui s'appelera montableau.
Un tel tableau peut-être pratique pour programmer une bataille navale...
La définition de type
Juste un rappel : jamais de point-virgule avant un end...
La boucle Pour
Les mots begin end ne sont pas nécessaire si il n'y a qu'une instruction.
Si vous voulez compter dans l'ordre décroissant, vous pouvez faire for compteur:=10 downto 1 do...
La boucle Tant Que
La boucle Répéter - Jusqu'à
Contrairement aux autres boucles, celle si ne nécessite pas begin end, quelque soit le nombre d'instructions...
La structure Selon
Je ne suis pas sûr que le else soit accepté par tous les compilateurs... En tout cas, il n'est pas obligatoire.
Fonctions et Procédures
La partie entre parenthèse après le nom de la procédure n'est pas obligatoire.
Pour la fonction, à la fin de la ligne, il y a ": real", cela veut dire que la fonction renvoie un réel. Il faut spécifié le type de variable que renvoie la fonction (ou le type de la fonction...)
Fonctions mathématiques
Le programme Agenda
program
Agenda (input, output);
type personne = record;
nom, prenom, telephone : string[15];
adresse : string [40]
end ;
var
choix : char;
sortir : boolean;
vecteurpersonne : array [1..100] of personne;
totalpersonne : integer;
procedure ajouterqqun;
begin
totalpersonne := totalpersonne + 1;
writeln
procedure afficherliste;
var
compteur : integer;
begin
for compteur := 1 to totalpersonne do
begin
writeln (vecteurpersonne[compteur].nom);
writeln (vecteurpersonne[compteur].prenom);
writeln (vecteurpersonne[compteur].adresse);
writeln (vecteurpersonne[compteur].telephone)
end
end;
procedure afficherqqun;
var
compteur : integer;
nomcherche : string [15];
begin
writeln ('Nom?');
readln (nomcherche);
for compteur :=1 to totalpersonne do
begin
if ( vecteurpersonne[compteur].nom = nomcherche ) then
begin
writeln (vecteurpersonne[compteur].nom);
writeln (vecteurpersonne[compteur].prenom);
writeln (vecteurpersonne[compteur].adresse);
writeln (vecteurpersonne[compteur].telephone)
end
end
end;
procedure supprimerqqun;
var
compteur : integer;
nomcherche : string[15];
apresceluiquonasupprime : boolean;
begin
apresceluiquonasupprime := false;
writeln ('Nom à supprimer?');
readln (nomcherche);
for compteur := 1 to totalpersonne do
begin
if ( vecteurpersonne[compteur].nom] = nomcherche ) then
apresceluiquonasupprime := true;
if ( apresceluiquonasupprime ) then
begin
vecteurpersonne[compteur-1].nom := vecteurpersonne[compteur].nom;
vecteurpersonne[compteur-1].prenom := vecteurpersonne[compteur].prenom;
vecteurpersonne[compteur-1].adresse := vecteurpersonne[compteur].adresse;
vecteurpersonne[compteur-1].telephone := vecteurpersonne[compteur].telephone;
end
end;
totalpersonne := totalpersonne – 1;
end;
BEGIN
totalpersonne := 0;
sortir := false;
repeat
writeln ('Agenda');
writeln; (* pour sauter une ligne *)
writeln ('1 – Ajouter quelqu''un');
writeln ('2 – Supprimer quelqu''un');
writeln ('3 – Trouver quelqu''un');
writeln ('4 – Liste des personnes');
writeln ('X - Sortir');
readln (choix);
case choix of
'1' : ajouterqqun;
'2' : supprimerqqun;
'3' : afficherqqun;
'4' : afficherliste;
'X' : sortir := true
end
until ( sortir )
END.