Les Enregistrement En Language PASCAL

الموضوع في 'أرشيف المنتدى التعليمي' بواسطة zribi-sat, بتاريخ ‏26 سبتمبر 2008.

  1. zribi-sat

    zribi-sat عضو

    إنضم إلينا في:
    ‏8 أوت 2008
    المشاركات:
    226
    الإعجابات المتلقاة:
    128
      26-09-2008 22:02
    Les Enregistrement En Language

    Dans un tableau, tous les constituants doivent être semblables. Ce n'est pas le cas des enregistrements, qui sont des variables composées de plusieurs variables (ou CHAMPS) de types différents. DECLARATION

    structure d'une déclaration d'enregistrement :
    VAR nom_variable :RECORD champ1:type ; champ2:type ;.... END
    ou
    TYPE nom_type = RECORD champ1:type ; champ2:type ;.... END

    ex: TYPE date = RECORD
    jour:1..31;
    mois:1..12;
    an:1980..1999
    END;
    facture = RECORD
    reference:integer;
    jour:date; {enregistrement d'enregistrement**
    client:string[100];
    total_HT:real
    END;
    VAR date1,date2:date;
    comptes:array[1..100] of facture;
    fact:facture;
    Dans un enregistrement, chaque champ doit avoir un nom différent. Mais pour des enregistrements différents on peut réutiliser le même nom de champ (ici JOUR). UTILISATION DES ENREGISTREMENTS

    Comme l'affectation fonctionne toujours pour des variables de même type, on peut écrire DATE1:=DATE2.
    On accède à une composante par NOM_VARIABLE . NOM_CHAMP :
    writeln('référence de la facture ? ');
    readln(fact.reference);
    writeln('mois de la facture ? ');
    readln(fact.jour.mois);
    writeln('jour de la facture ? ');
    readln(fact.jour.jour);

    for i:= 1 to nb_fact do writeln(comptes.prix);
    Une composante d'enregistrement s'utilise comme une variable du même type (avec les mêmes possibilités mais aussi les mêmes limitations). LA STRUCTURE WITH - DO (avec - faire)

    structure : WITH nom_enregistrement DO instruction
    Elle permet d'omettre le nom_enregistrement dans l'instruction.
    ex : FOR I:=1 TO nb_fact DO
    WITH comptes DO begin
    reference:=i; (* c.a.d comptes.reference *)
    writeln('nom du client de la facture ndeg.',i,' ? ');
    readln(client);
    END
    Dans un WITH on peut évidement accéder à d'autres enregis-trements, il suffit de préciser le nom_enregistrement.champ. Si l'on utilise des WITH imbriqués, en cas d'ambiguïté des noms de champs on se réfère au WITH le plus proche (intérieur).ex : WITH fact DO begin
    WITH date1 DO begin
    mois:=12; {date1.mois**
    reference:=1; {fact.reference car date1.reference n'existe pas**
    jour:=15; {date1.jour car WITH DATE1 le plus à l'intérieur**
    fact.jour:=date2 {fact.jour puisqu'on le précise**
    end
    end ENREGISTREMENTS AVEC VARIANTES

    Certains champs d'un enregistrement peuvent être différents suivant la valeur d'un des champs en utilisant la structure CASE OF dans la déclaration de l'enregistrement.
    ex: TYPE statut=(celibataire,marie,divorce,veuf);
    perso=RECORD
    nom:string[20];
    CASE situation:statut OF
    celibataire:();
    marie:(enfants:0..10);
    divorce,veuf:(enfants:0..10;remarie:boolean)
    END;
    Il ne peut y avoir qu'un CASE par enregistrement. Celui-ci doit se placer en dernier, après les champs commun (si il y en a). Mais dans ce CASE on peut avoir UN autre CASE imbriqué (etc). Les cas où il n'y a pas de champ variant doivent être précisés (ici celibataire). Le champ discriminant (situation) s'utilise comme un autre champ commun.
    exemples d'instructions possibles : (x déclaré comme perso)
    x.situation:=marie;
    if x.situation=veuf then writeln(x.enfants)
    EXERCICE (tel) A l'aide d'un tableau de personnes (nom, prénom, numéro dans la rue, rue, département, ville, numéro de téléphone), faire un programme de recherche automatique de toutes les informations sur les personnes répondant à une valeur d'une rubrique donnée (tous les PATRICK , tous ceux de Saverne, etc...)

    MADE BY ZRIBI-SAT


     
  2. unis

    unis عضو جديد

    إنضم إلينا في:
    ‏17 فيفري 2008
    المشاركات:
    44
    الإعجابات المتلقاة:
    51
      28-09-2008 13:02

مشاركة هذه الصفحة

جاري تحميل الصفحة...