Le Pascal  
 

 


Structure générale d'un programme

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

('Nom?');
    readln (vecteurpersonne[totalpersonne].nom);
    writeln ('Prénom?');
    readln (vecteurpersonne[totalpersonne].prenom);
    writeln ('Téléphone?');
    readln (vecteurpersonne[totalpersonne].telephone);
    writeln ('Adresse?');
    readln (vecteurpersonne[totalpersonne].adresse)
end;

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.

 

-= From guill.net =-