3.1. Structures cartésiennes simples

Les structures cartésiennes simples sont des structures regroupant plusieurs composantes de type de base. Nous verrons ici trois types de structures cartésiennes simples :

Des variables ayant ces structures fondamentales ne changent que de valeurs, jamais de structure ou d'ensemble de valeurs de base. Conséquence : l'espace qu'elles occupent en mémoire reste constant.

3.1.1. Les tableaux

Les tableaux sont constitués d'un regroupement de données homogènes (ayant le même type) de type quelconque. Les données individuelles sont repérées par un sélecteur que l'on nomme indice du tableau. L'indice d'un tableau doit être de type énuméré. Cela pourra donc être un type défini par l'utilisateur, un intervalle d'entiers, de caractères ou de booléens.

Exemple

       type Index = 0..9;  
            Semaine = (Dimanche, Lundi, Mardi,  
                       Mercredi, Jeudi, Vendredi,  
                       Samedi);  
            T1 = array [Index] of integer;  
            T2 = array [0..9] of integer;  
            T3 = array [boolean] of char;  
            T4 = array [false..true] of char;  
            T5 = array [char] of integer;  
            T6 = array [Semaine] of integer;  
      
       var HeuresDeTravail : T6;  
        
       begin  
         ...  
         HeuresDeTravail[Lundi] := 8;  
         ...  
       end  

les opérations possibles se limitent à la manipulation des composantes individuelles (affectation, comparaison...). Seul le passage de paramètre permet de manipuler un tableau dans sa totalité. Pas de constantes "tableau" possibles en Pascal; en Ada, c'est toutefois possible, les valeurs sont énumérées entre parenthèses, par exemple ainsi : (Constante1, Constante2 . . . ) ou (Indicem . . Indicen => Constante1, . . . ).

3.1.2. Les enregistrements

Les enregistrements sont constitués d'un regroupement de données hétérogènes (de types différents) de type quelconque. Les données individuelles sont repérées par un sélecteur que l'on nomme champ de l'enregistrement. L'identificateur de champ doit être un identificateur conforme aux règles lexicales du Pascal.

Exemple

       type Individu = record  
                      Nom, Prenom: string;  
                      Age: integer;  
                      Sexe: (Feminin, Masculin);  
                      end; { Individu }  
         
       var Lui: Individu;  
         
       begin  
         . . .  
         Lui.Age := 15;  
         . . .  
       end  

Les opérations possibles sur les enregistrements dans leur globalité sont : l'affectation et la comparaison ( =, <> ). Les opérations possibles sur les différents champs d'un enregistrement sont celles associées au type du champ.

Pas de constantes "enregistrement" possibles en Pascal; en Ada, c'est toutefois possible (agrégats) : les valeurs sont énumérées entre parenthèses, dans l'ordre des champs ou en indiquant explicitement le nom du champ avant chaque valeur, par exemple (Constante1, Constante2 . . . ) ou (Champi => Constantei, . . . ).

3.1.3. Les ensembles

Les ensembles sont des structures que l'on ne retrouve quasiment qu'en Pascal. Modula 2 en restreint nettement l'utilisation et Ada ne l'offre pas de manière prédéfinie. Les ensembles se rappochent beaucoup de la notion mathématique d'ensembles. Ils sont construits à partir de types de bases énumérés et permettent d'indiquer, pour chacune des valeurs du type de base, si cette valeur est présente ou absente de l'ensemble en question. Il n'y a pas de sélecteur possible.

Exemple

       var S, Voyelles, Consonnes: set of char;  
       . . .  
       S := []; { ensemble vide }  
       Voyelles := ['a','e','i','o','u','y'];  
       Consonnes := ['b'..'d','f'..'h','j'..'n',  
                     'p'..'t','v'..'x' ,'z'];  
       S := [ 'b'..c ]; { noter le fait que c  
                          est une variable }  

Les opérations sur les ensembles ne sont possibles que globalement. On dispose de l'affectation, l'union (+), l'intersection (*), la diffé rence (-), la comparaison ( =, <> ), le test d'appartenance d'une valeur du type de base ( in ) et l'inclusion (<).

N.B. L'expression aS sera notée : not (a in S).

3.2. Cardinalité

Table des matières.

Site Hosting: Bronco