Accueil        Lexique        Unités        Algorithmes        TUTORIEL        Groupe Facebook   

Sommaire Tutoriel

Les Variable et types de données scalaires

  1. Qu'est ce qu'une variable ?
  2. Définir un type pour une variable
  3. Définir de nouveaux types
  4. Récapitulatif du cours

  1. Qu'est ce qu'une variable ?

    Nous avons besoin de définir ce qu'est une VARIABLE et un type scalaire (les autres types seront abordés dans d'autres chapitres) avant de continuer sur la fonction de lecture en Pascal.

    Jusqu'à présent, nous avons travaillé sur des valeurs. Si vous vous souvenez de vos cours de mathématiques, vous avez vu la notion d'Inconnues. En mathématiques, on nommait ces inconnues X et Z (voire Z pour les nombres complexes).

    En programmation informatique, on utilise également ce concept. A part qu'ici, on appelle cela une Variable. Une variable en informatique est un espace réservé, plus ou moins grand, avec un nom unique, ayant un type qui peut changer de valeur à la volée. Il est à opposer à Constante qui est une valeur attribuée dès le début à un nom de constante ne changeant JAMAIS de valeur.

    Définir le nom d'une variable

    Comment attribuer un nom ? Un nom de variable commence par une lettre (majuscule ou minuscule) OU le caractère UNDERSCRORE "_" (eh oui le tiret du 8 a un NOM) suivi d'un ensemble de lettres, chiffres, ou caractères UNDERSCORE.
    En Langage PASCAL, les lettres majuscules et muniscules sont indifférenciées pour nommer les noms de variables, les instructions, les noms de fonctions etc. Ainsi, les noms write, Write, wRItEdésigneront la même chose!! C'est une des différences du Pascal avec d'autres langages comme le C, Java, Python etc... Le langage Pascal est un langage d'apprentissage de la programmation (ce qui n'empêche pas d'être puissant et utilisable pour tout type d'algorithmes).

    Attention : Vous devez nommer vos variables différemment des Instructions de langages, des noms de fonctions existant déjà (dans l'unité System ou d'autres unités), etc.

    Exemple de noms de variable acceptées

    Tous les noms données ici sont acceptés:
    • Toto
    • Nom_de_famille
    • Jeu_des_7_familles
    • _Cocotiers_bananiers
    • Sept_fois_3_egal_21
    • forwhile
    En revanche,les noms suivant seront refusés :
    • 7_fois_3_egal_21 : ne commence ni par une lettre, ni par UNDERSCORE
    • Nom-de-famille : les signes de calcul (signe moins ici) sont interdits dans un nom (utilisés pour les opérations)
    • for, while, do, etc ... sont des mots résevés en Pascal. Forwhileest autorisé car le mot entier n'est pas "for" ou "while"

  2. Définir les types de variables

    Les types de données SCALAIRE sont des types simples, n'ayant qu'une valeur à déclarer par variable. Une valeur peut être un nombre (entier ou réel), une chaine de caractère, une valeur logique... On oppose les variables scalaires (atomique ou simple) aux types complexes tels les tableaux, les structures, voire les objets. Dans ce chapitre, nous ne verrons que les types scalaires.

    Dans un programme Pascal, les types de variables sont toujours déclarés dans une zone commençant par le mot clé VAR comme dans l'exemple suivant

    program Mesvars;
    var
        Montexte : String[30];
        Element : char;
        a, b, c : word;
        i, j, k:byte;
        x,y; real;
    Begin
        {corps du programme}
    End.
    

    Types numériques

    En mathématiques, vous avez vu des ensembles N (entiers naturel), Z (entiers relatifs), Q (Rationnels), R (Réels).
    En programmation informatique, dans des langages typés (Pascal, C, Java), vous devez OBLIGATOIREMENT DECLARER les variables que vous utilisez au sein de votre programme afin d'indiquer au compilateur comment seront traités lesdites variables. Voir les différents types Pascal dans le lexique de ce site internet.

    En langage Pascal, il y a différents types de données numériques... Une distinction se fait entre les types entiers et les types réels, qui ne sont pas du tout codés de la même manière (et ce, quelle que soit le langage de programmation, typé ou pas) : c'est pourquoi il est important de définir le type de données. Les langages de scripts (Python, PHP, JavaScript, Pearl) ne nécessitent pas de déclarer le type mais cela entraine une perte de performance et des bugs dans le programme si on n'y prend garde.

    Liste des types numériques en Pascal :

    • Types entiers (Byte, Integer, Word, ShortInt, LongInt) : les types Byte et Word sont des Entiers Naturel et les autres types sont des Entiers relatifs
    • Types réels (single, double, real, extended) : font parti de l'ensemble des réels mais avec plus ou moins de précision et plus ou moins de valeurs limites suivant le type. Le type extended est le type ayant le plus de précision en Pascal et la plage la plus large. De plus, le type extended ne peut être utilisé que si un coprocesseur arithmétique existe dans l'architecture de l'ordinateur (sinon c'est le type real qui sera employé).
    • Type Booléen : qui ne prend que 2 valeurs, Vrai ou Faux et qui n'existait pas en langage C jusqu'à récemment.
    Remarque : On constate que plus un type nécessite d'octets, plus les valeurs limites sont élevées (en valeur absolue) et (pour les réels) plus il est précis. On ne s'attardera pas sur la notion de précision de réel, cette explication nécessitant des bonnes notions sur l'Octet.

    Exemple

    program Mesvars;
    var
        a, b, c : word;
        x,y; real;
    Begin
        a := 851;
        b := 202;
        c := a-b;
        writeln('a - b = ', c);
        c := a+b;
        writeln('a + b = ', c);
        c := a*b;{Résultat dépendant des options de compilation}
        writeln('a * b = ', c);
        c := a/b;{Retourne une erreur de compatibilité de type}
        writeln('a / b = ', c);
        x := a/b;
        writeln('a / b = ', y);
        c := a div b;{division entière}
        writeln('a div b = ', c);
        RealLn;
    End.
    

    Commentaires sur ce programme :

    • Les variables Montexte, Element , ...,y, ont été définies avec des types particuliers et, pour chaque variable, un emplacement en RAM sera réservé.
    • On voit dans la première fois dans ces tutoriels, comment on attribut une valeur à une variable, avec le couple de symbole ":=". Quand vous initialisez une variable, celle ci est VIDE (ou plutôt est remplie de 0). Une variable étant "variable", vous pouvez lui attribuer toute valeur compatible avec son type.
    • Les résultats des sommes et différences sont du même type que la variable ayant le type dont l'ensemble est le plus large (ici "word")
    • Concernant la multiplication, le résultat peut dépasser la capacité de la variable c et donner un résultat erroné. Il vaut meux utiliser un type de variable ayant le double d'octet, en l'occurence LongInt. De plus la compilation du programme peut signaler une erreur à ce propos (suivant les options de compilations).Je vous conseille d'utiliser les options de compilations les plus restrictives pour éviter les mauvaises surprises de ce genre
    • Comme nous l'avons vu dans le cours précédent, le résultat de la division (opérateur "/") de 2 entiers est toujours un réel. Lorsqu'on effectue c := a/b; il y a une erreur indiquant que le type de la variable c n'est pas compatible avec le résultat de l'opération (puisque c est detype entier). Une variable entière ne peut être le résultat d'une division que si cette division est entière (opérateur "div"). Par conséquent, c:= a div b; ne retourne pas d'erreur (à condition que b ne soit pas nul)
    • On voit dans toutes ces instructions l'importance capitale d'attribuer les bons types aux variables suivant ce qu'on souhaite en faire!
  3. Types chaîne de caractère et char

    Dans tous les langages de programmation, il existe un type Chaîne de caractères et éventuellement, char. Dans le langage Pascal avec compilateur Pure Pascal 1.1 et Turbo Pascal 7, il existe 2 types de chaînes de caractères. Voici la liste de ces types :

    Saisissons le programme suivant:

    program Untexte;
    var
        a,b : String[40];
        c : PChar;
    Begin
        a:='Mon nom est : ';
        b:='Arthur';
        writeln (a+b);
        c:='Ceci est une chaine de type Pchar. Elle se termine par le caractère NUL.';
        writeln('Longueur de la chaine a = ',ord(a[0]));
        writeln('Longueur de la chaine b = ',ord(b[0]));
        writeln(c);
        writeln ('Le premier caractère de la chaine c a pour caractère ascii : ',c[0]);
        readln;
    End.
    
    Commentaires sur ce programme : Les compilateurs Pure Pascal 1.1 et Turbo Pascal 7 possèdent plusieurs fonction de traîtement de chaine de type Pchar et, de plus, ces compilateur peuvent permettre de manipuler ensemble des varables de types String et Pchar (concaténation de chaine String et Pchar par exemple).

    Le Type String contient directement la taille de la chaïne dans l'octet 0 (contrairement au type Pchar) du tableau de caractères, mais le type String est limité à 255 caractères.


  4. Définir de nouveaux types

    Le langage Pascal permet de définir de nouveaux types, basés sur les types préexistant. Soit l'exemple suivant:
    program NouveauxTypes;
    TYPE
        Id_Mois = 1..12;
        Id_Jour = 1..7;
        Mois = Array [Id_Mois] of String[20];
        Jour = Array [Id_Jour] of String[20];
    var
        {Liste de variables}
    Begin
        {Corps du programme}
    End.
    
    Ce programme définis des types d'index de mois, jours, un tableaux de chaines de caractères de mois et un tableau de chaines de caractères de jours.
    Le langage Pascal est un langage verbeux et typé permettant d'appeler de définir non seulement lesvariables et constantes mais également des types.
    Cela peut s'avérer for utile dans l'organisation de ses idée dans un programme. Mais attention de ne point trop en utiliser.
  5. Notions vues dans ce cours

    • Qu'est ce qu'une variable?
    • Constante
    • Nommer une variable
    • Types entiers (Byte, ShortInt, Integer, Word, LongInt)
    • Types Réels (Single, Double, Real, Extended)
    • Attribuer une valeur à une variable avec :=
    • Type Booléen
    • Types chaine : String, char, Pchar
    • Accès à un caractère d'une chaîne
    • Définir de nouveaux types

Sommaire Tutoriel


Copyright © 2021 par Albatros Concept (Bruno Aubin)