Le Turbo Pascal Facile

Objectifs

  Ce tutorial a été fait pour que vous puissiez apprendre le turbo pascal version 4 a 7, même et surtout si vous êtes débutant. J'ai fait de mon mieux pour qu'il soit facilement compréhensible; si vous avez des questions ou des rectifications, n'hésitez pas a me mailer à prof online

Sommaire

  1. Introduction

    1. Avantages du Pascal

    2. Désavantages du Pascal (par rapport au C)

  2. PREMIERE PARTIE

    1. Décalrations et en-têtes

    2. 1er programme

    3. Les variables

    4. Les types numéraux

    5. Les procédures utilitaires

    6. Les boucles

    7. Utilisation des functions

    8. Les conditions

    9. Synthèse en un programme


I. Introduction

Le pascal est un langage de programmation de haut niveau dit "structuré", par opposition aux langages dits "de programmation événementielle". C'est bien beau, mais ça veut dire quoi? Ca veut dire qu'on y retrouve une structure, donc il est plus facile à lire et à comprendre. Le terme "de haut niveau" veut dire qu'il est très proche du langage humain (anglais) et donc intuitif. Le Pascal est un langage compilé : cela veut dire que le compilateur (Turbo Pascal) produit un fichier exécutable directement compréhensible par le CPU.


Retour au sommaire


 

A. Avantages du pascal

  • Programmation structurée

  • Langage proche de la machine

  • Rapide à l'exécution

  • Compilé

  • Facile à comprendre(de haut niveau)


  • Retour au sommaire



    B. Désavantages du pascal (par rapport au C)

  • Un peu moins souple et rapide que le C

  • 16 bits(version 1 à 6) contre 32 pour les versions actuelles

  •  


    Retour au sommaire


    II. PREMIERE PARTIE

    A. Déclarations et en-têtes

    Comme je l'ai dit plus haut, ce langage est structuré ; on y retrouvera donc une structure :

    Titre du programme [Facultatif]
    Bibliothèques utilisées
    Déclaration de constantes

    Types
    Variables
    Procédures
    Fonctions

    Début du programme
    Fin du programme


     


    Retour au sommaire


     

    B. 1er programme

    Le programme ci-dessous n'est qu'un squelette des structures que l'on rencontre en Pascal. Le terme "MOT CLE" signifie "mot servant à la compréhension et à la définition de certaines choses au compilateur"

    Program Hello_world ;
    Begin
    Writeln('Hello, World !');
    End .


    Program : mot clé signalant le début du programme et son identification pour l'utilisateur, et n'influence pas le résultat. La barre entre le o et le w sert à remplir le blanc (facultatif).
    Begin : Mot-clé signalant le début du programme.
    L'instruction writeln permet d'afficher un texte à l'écran, puis de faire un retour chariot. Elle a été utilisée avec 'Hello …' comme ARGUMENT, et affiche donc la CHAINE DE CARACTERES qu'il constitue.
    End : signifie " Fin du programme".

    Notez que toutes les instructions, à part Begin et end. (qui sont des MOTS CLES), se terminent par un point-virgule. Cela signifie que l'instruction est terminée, et qu'il faut passer à la suivante.

    Résultat à l'écran :

    C:\TP\Hello.exe
    Hello, World !
    C:\TP\>


    Retour au sommaire



    C. Les variables

    On appelle une variable, une lettre, un nom auquel on peut attribuer une valeur, et modifier celle-ci au cours d'un programme. En Pascal, TOUTES les variables utilisées doivent être définies de cette manière :

    VAR variable1 : type_de_variable;
    Var2 : type_de_variable2;

    Comme toujours, le nom d'une variable ne peut pas contenir d'espaces, peut contenir des caractères alphanumériques, et doit commencer par une lettre (A-Z,a-z). Attention, il faut cependant vérifier que le nom de la variable n'est pas un mot réservé; nous en reparlerons plus loin.

    Voici le même programme, utilisant les variables :

    Program Hello_world_variable;
    Var texte : string ;    On définit la variable texte comme étant une chaîne de caractères.
    Begin
    Texte := 'Hello, Variables and types !' ;    On attribue 'Hello…' à la variable texte avec l'opérateur := (à ne pas confondre avec =)
    Writeln(texte);    Où sont passés les apostrophes ?
    End .

    Le texte en vert est bien-sûr des commentaires qui ne font pas partie du programme.
    L'opérateur := signifie "attribuer ceci à cela"
    Pourquoi il n'y a plus d'apostrophes ? C'est parce que dans les arguments, j'ai mit une variable, et non une chaîne de caractères. Si on subsitue texte, on obtient le même programme qu'en haut.


     


    Retour au sommaire



    D. Les types numéraux

    Il peut y avoir plusieurs types de variable, nous l'avons vu. Certains sont des nombres, mais pas classés de n'importe quelle manière :

    Genre

    Type

    Description

    Intervalle

    Entiers

    Byte

    Nombre 8 bits non-signé

    0..255

     

    Shortint

    Nombre 8 bits signé

    -127..128

     

    Integer

    Nombre 16 bits signé

    -32764..32763

     

    Longint

    Nombre 32 bits signé

    -231..231

     

    Word

    Nombre 16 bits Non-signé

    0..65535

    Nombres à virgule flottante

    Real

    Nombre décimal signé

     tres grand
    n'espérez pas avoir une super précision

     
    Il existe d'autres types de nombres associés au FPU (floting Point Unit, coprocesseur math si vous préférez).

    Pourquoi le pascal utilise plusieurs sortes de nombres ?
    Pour la bonne raison que si on doit utiliser 1000 valeurs, à mettre dans un tableau (cf. tableaux), il faut économiser de la place en memoire.
    Rappel : 8 bits font un byte, ou aussi appelé OCTET (perso je préfère byte, à pas confondre avec bit ou le mot obscène qui y ressemble)
    Comment choisir le type d'une variable ?
    Il suffit de réfléchir à quel usage on va prendre une variable
    Imaginons un compteur d'incrémentation

    Program types_1;
    Var i : word ;
    for i := 0 to 65535 do
         begin
         writeln(i);
         end ;
    end .

    Ici j'ai utilisé le type word, qui correspond à un entier 16 bits non signé, car notre programme n'utilisera jamais pour i que des valeurs de 0 à 65535
    j'ai appelé la variable 'i' parce que il est habituel de représenter un compteur par i , j ou k.
    x et y représentent souvent des coordonnées, et les autres noms sont 'proscris' pour une meilleure lisibilité du programme.
    Une somme := terme1 + terme2; est toujours plus clair qu'un c := a+b;
    Vous comprennez peut-etre pas à quoi correspond for; ça sert simplement à repeter 65535 fois l'écriture de i. cf les boucles

     


    Retour au sommaire


     

    E. Les procédures utilitaires

    Lorsqu'on fait de la programmation, il y a souvent des procédures et des fonctions qui reviennent très souvent. Au mieux on les utilise au mieux on programme !

    write et writeln :  affichent une chaine de caractère, un nombre ou un caractère spécial sur la sortie standard (écran ou bien fichier).

    syntaxe : write(arg1,arg2,arg3,...,argn);
    affiche les arguments les un à la suite des autres. meme syntaxe pour writeln. On vera plus tard comment ecrire dans un fichier
    note : writeln emet à la fin un caractère RC (retour chariot) pour passer à la ligne.

    clscr : efface l'écran. s'utilise tout seul et a comme syntaxe clscr ;
    read : attend l'entrée d'une chaine de caractère ou d'un ou plusieurs nombres au clavier.

    syntaxe : read(variable de n'importe quel type)
    read place la réponse dans la variable donnée

    x = random(y) : donne à x une valeur aléatoire entre 0 et y. cf function
    attention, il faut entrer une réponse du type donné en argument


     


    Retour au sommaire



    F. Les boucles

    Une boucle ??? qu'est-ce que c'est donc que cela pour une bête ???
    Bien c'est tout simplement une instruction ou un groupe d'instruction que l'on doit executer un nombre défini ou indéfini de fois.

    Exemple : calcul de la puissance nième d'un nombre entier.

    program boucles_1;
    var i,puissance : byte; { on n'a pas besoin d'aller plus loin que 255}
          nombre : integer ;  { 32000 c'est suffisant non ?}
          resultat : longint; {le resultat est forcément plus grand que l'entrée}
    begin
    write ('entrez un nombre entre -32000 et 32000 : ');
    read (nombre);
    write ('donnez la puissance voulue : ');
    read (puissance);
    resultat := 1
    for i := 0 to puissance do
          begin
          resultat := resultat * nombre ;
          end ;
    writeln('voici le resultat de ',nombre,'^',puissance,' : ',resultat);
    end .


    Commentaires :
    On demande à l'utilisateur de choisir des nombres et de les entrer.
    On donne à resultat la valeur 1 car x^0 = 1 dans tous les cas.
    for est le type de boucle le plus utilisé.
    i := 0 to puissance veut dire que i prendra à chaque itération une valeur entre 0 et puissance, de 1 en plus.
    do veut dire que l'argument de boucle commence.
    begin et end; encadrent l'argument de boucle.
    le writeln donne le résultat de manière 'propre' et 'présentable'.

    Il existe d'autres type de boucles : while et repeat until.
    Usage :

    WHILE condition DO instructions
    tant que la condition est vraie, les instructions sont exécutées.
    une condition peut etre
    -une condition : (x=5) ou ((x<4) and (y>5)) ou (4 = 5)
    -une valeur booléenne : false, true, keypressed...
    les instructions doivent soit etre encadrées par begin end; si elles sont plusieures, soit sans begin end; si elles sont uniques.
    ex :

    while (x=1) do
    begin
    write (x);
    x := x-1;
    end ;
    ou bien
    while (x=1) do
    x := x-1;


    REPEAT instructions UNTIL condition
    Equivaut à peu près à while sauf que la condition est testée à la fin de la boucle, donc le corps est executé au moins une fois.
    Les instructions ne nécéssitent pas d'encadrement par begin end; , car elles sont déjà encadrées par repeat et until.


    Retour au sommaire



    G. Utilisation des functions

    Kesako function ? jamais entendu parler !
    Mais si ! c'est en réalité une fonction !
    Pas plus clair ? non ?
    Une fonction est le résultat (numérique ou autre) de l'execution d'un 'mini-programme', soit interne au compilateur , soit interne au programme. Nous verons plus loin comment en créer soi-meme.

    Nous avons déjà utilisé une fonction dans random
    x := random (100) ;
    random retourne une valeur aléatoire entre 0 et le nombre en argument, et donne cette valeur à x.

    On peut aussi les utiliser dans une instruction :
    writeln (random(100));

    Les fonctions peuvent se mêler facilement aux nombres, mais ne sont pas accéptés comme arguments de boucle. Vous suivez ?
    for i := 0 to random(100) do n'est pas valable !!!
    Vous verez qu'à force de les utiliser cette notion passe facilement .


     


    Retour au sommaire


     

    H. Les conditions

    Il est souvent (tres souvent) utile (ou indispensable) de faire un choix. Tout le monde sait que de lui meme, un ordinateur ne peut faire de choix. Donc nous devons réfléchir pour lui.

    IF condition THEN
    BEGIN
    instruction(s)
    END ;
    ELSE
    BEGIN
    instructions
    END ;

    se lit comme ceci :

    Si condition alors
    instructions
    sinon
    instructions

    Comme d'hab , si il n'y a qu'une instruction BEGIN et END ; ne sont pas obligatoire, de meme ELSE n'est pas obligatoire.
    Cette notion ne me semble pas compliquée. Si la condition est vraie, l'instruction THEN est executée, sinon l'instruction ELSE est executée si elle existe.
    ex :

    Prog condit_1;
    var i : byte;
    begin
    write ('entrez un nombre : ');
    read (i);
    if (i > 128) then
    writeln('nombre plus grand que 128');
                     else
    begin
    if (i=128) then
         writeln('le nombre est 128');
                  else
        writeln('nombre plus petit que 128');
    end ;
    end .


    Conclusion : on peut imbriquer des if. pas conseillé mais bien pratique
    On peut se passer des else, à condition d'effectuer 3 tests à la place de 2

    if (i > 128) then
        writeln('n > 128');
    if (i = 128) then
        writeln ('n = 128');
    if (i < 128) then
        writeln ('n < 128');

    voilà.
    Avec tout ça vous devriez etre capable de faire un petit programme ...


     


    Retour au sommaire


     

    I. Synthèse en un programme

    Nous allons ici essayer de faire un programme regroupant ce que l'on a vu au dessus.
    Ici je vous demanderai un petit travail personnel consistant à réaliser ce programme tout seul avant de regarder les sources que je donne ici.
    Le programme consiste à choisir un nombre aléatoire entre 0 et 100, et à demander à l'utilisateur en un nombre maximal de 10 x de le deviner, en disant à chaque fois si le vrai nombre est plus grand ou plus petit, et si il est égal, de fermer le programme.
    dans notre programme entrent en compte le choix de variables, l'usage de write et de read, l'usage de fonctions, l'usage de boucles et de conditions.

    program jeu_1;
    var nreel, nuser : byte;
    i : byte;
    flag : boolean;
    begin
    nreel := random(100);
    i := 0;
    flag := true;
    repeat
    write ('donnez un nombre : ');
    read (nuser);
    if (nuser < nreel) then writeln ('nombre plus grand');
    if (nuser > nreel) then writeln ('nombre plus petit');
    if (nuser = nreel) then
          begin
          writeln ('REUSSI !');
          flag := false;
          end ;
    until ((i <10) and (flag));
    if (i = 10) then writeln('le nombre était ',i);
    end .


    Vous avez sans doute quelque chose de semblable au mien mais différent à certains points de vue.
    si il marche, tant mieux, mais n'oubliez pas que les bugs existent ! donc : testez votre programme !

     


    Retour au sommaire


    Fin.


    © Aflo Informatique , 2003-2004