User-defined data types · Types de données définis par l'utilisateur
| English | Français |
|---|---|
| user-defined types/ˈjuːzə dɪˈfaɪnd taɪps/ | types définis par l'utilisateur |
| non-composite/nɒn ˈkɒmpəzɪt/ | non-composite |
| composite/ˈkɒmpəzɪt/ | composite |
| enumerated type/ɪˈnjuːməreɪtɪd taɪp/ | type énuméré |
| pointer/ˈpɔɪntə/ | pointeur |
| dereference/ˌdiːˈrefrəns/ | déférence |
| record/ˈrekɔːd/ | enregistrement |
| set/set/ | réglée |
| class/klæs/ | classe |
| attributes/ˈætrɪbjuːts/ | attributs |
| methods/ˈmeθədz/ | méthodes |
A type that makes the mistake impossible
- A hospital system stored a patient's blood group as a
STRING. Someone typed "0+" instead of "O+": a zero for a letter. The field accepted it, because a string accepts anything. - Nothing in the program could tell that "0+" was not a blood group, so the error travelled untouched to the point where it mattered.
- Give the field a type whose values are exactly the eight blood groups, and the assignment is rejected the moment it is written, by the compiler, before the program ever runs.
- That is what user-defined types 用户定义类型 buy you. This lesson is the ones the syllabus names, and how to choose between them.
Un type qui rend l'erreur impossible
- Un système hospitalier a stocké le groupe sanguin d'un patient comme une
STRING. Quelqu'un a tapé "0+" au lieu de "O+" : un zéro pour une lettre. Le champ l'a accepté, car une chaîne accepte n'importe quoi. - Rien dans le programme ne pouvait dire que "0+" n'était pas un groupe sanguin, donc l'erreur a voyagé sans être détectée jusqu'au point où elle avait de l'importance.
- Donnez au champ un type dont les valeurs sont exactement les huit groupes sanguins, et l'assignation est rejetée au moment où elle est écrite, par le compilateur, avant même que le programme ne s'exécute.
- C'est ce que vous achètent les types définis par l'utilisateur 用户定义类型. Cette leçon correspond à ce que nomme le programme officiel, et comment choisir entre eux.
Why user-defined types are needed
- A built-in
STRINGlets you store nonsense in a field that should hold one of a few legal values; a user-defined type restricts it, so the compiler catches more mistakes. - Real entities are usually a collection of values of different types, and a built-in type can hold only one.
DECLARE MyTaxi : Vehicleis self-documenting: it says what the variable is, whereDECLARE MyTaxi : STRINGsays only how it is stored.
Pourquoi les types définis par l'utilisateur sont nécessaires
- Un
STRINGintégré vous permet de stocker des absurdités dans un champ censé contenir l'une de quelques valeurs légales ; un type défini par l'utilisateur le restreint, afin que le compilateur attrape plus d'erreurs. - Les entités réelles sont généralement une collection de valeurs de types différents, et un type intégré ne peut en contenir qu'un seul.
DECLARE MyTaxi : Vehicleest autodocumentant : il dit ce qu'est la variable, là oùDECLARE MyTaxi : STRINGdit seulement comment elle est stockée.
Why are user-defined types needed? Select all · tout that apply. · Pourquoi les types de données définis par l'utilisateur sont-ils nécessaires ? Sélectionnez tous ceux qui s'appliquent.
Restriction, grouping and self-documentation. Speed is not the reason; correctness and clarity are. · Restriction, groupement et auto-documentation. La vitesse n'est pas la raison ; la correction et la clarté le sont.
Non-composite types: enumerated
- A non-composite 非组合 type holds a single value; a composite 组合 type groups several values together.
- An enumerated type 枚举类型 has values that are a fixed list of named constants. The names are values of the new type, stored internally as small integers.
- Uses: days of the week, colours, status codes, blood groups: any field whose legal values are a short known list.
Six named values, and nothing else is assignable
Types non composites : énumérés
- Un type non-composite 非组合 contient une valeur unique ; un type composite 组合 regroupe plusieurs valeurs ensemble.
- Un type énuméré 枚举类型 a des valeurs qui forment une liste fixe de constantes nommées. Les noms sont des valeurs du nouveau type, stockés internement comme de petits entiers.
TYPE Vehicle = (M100, M230, T101, T102, T120, T150)
DECLARE MyTaxi : Vehicle
MyTaxi ← T102 // anything outside the list is rejected
- Usages : jours de la semaine, couleurs, codes de statut, groupes sanguins : tout champ dont les valeurs légales forment une courte liste connue.

Six valeurs nommées, et rien d'autre n'est assignable
An enumerated type holds: · Un type énuméré contient :
An enumerated type restricts a variable to one of a fixed set of named values (e.g. days of the week). · Un type énuméré restreint une variable à l'une d'un ensemble fixe de valeurs nommées (ex. jours de la semaine).
Non-composite types: pointer
- A pointer 指针 holds the memory address of another variable, or
NULLmeaning "no target". - To dereference 解引用 a pointer, written
p^, is to reach the variable it points at.
- Pointers are what make dynamic structures possible: a linked list is nodes joined by pointers, and a tree is nodes with two. They also pass a large record to a procedure without copying it.
The variable holds where the data is, not the data
Types non composites : pointeurs
- Un pointeur 指针 contient l'adresse mémoire d'une autre variable, ou
NULLsignifiant "pas de cible". - Déréférencer 解引用 un pointeur, noté
p^, consiste accéder à la variable vers laquelle il pointe.
TYPE PNode = ^TNode // a pointer to a TNode
DECLARE p : PNode
p ← NEW TNode
p^.Value ← 42 // dereference, then reach the field
- Les pointeurs rendent possibles les structures dynamiques : une liste chaînée est constituée de nœuds reliés par des pointeurs, et un arbre est constitué de nœuds avec deux. Ils permettent aussi de passer un grand enregistrement à une procédure sans le copier.

*La variable contient l'emplacement des données, pas les données elles-mêmes
A pointer stores the memory address of another variable, and dereferencing it (e.g. p^) reaches the variable it points to. · Un pointeur stocke l'adresse mémoire d'une autre variable, et le déréférencement (par ex. p^) accède à la variable vers laquelle il pointe.
Pointers (with NULL marking "points to nothing") are how dynamic structures like linked lists and trees are built. · Les pointeurs (avec NULL marquant « pointe vers rien ») sont la manière dont les structures dynamiques telles que les listes chaînées et les arbres sont construites.
Reaching the variable a pointer points at, written p^, is called ____. · Atteindre la variable à laquelle un pointeur fait référence, noté p^, s'appelle ____.
The pointer holds an address; dereferencing follows it to the data. That is how linked lists and trees are built. · Le pointeur contient une adresse ; le déférencement suit cette adresse vers les données. C'est ainsi que sont construits les listes chaînées et les arbres.
Composite types
- A record 记录 groups fields of different types under one name, in a
TYPE … ENDTYPEblock. You met it in topic 10. - A set 集合 is an unordered collection of unique values, with the operations add, remove, membership test, union and intersection.
- A class 类 and its instances, objects, combine data fields, the attributes 属性, with the operations on them, the methods 方法.
Fields of different types, one identifier
Types composites
- Un enregistrement 记录 regroupe des champs de types différents sous un seul nom, dans un bloc
TYPE … ENDTYPE. Vous l'avez rencontré dans le sujet 10. - Un ensemble 集合 est une collection non ordonnée de valeurs uniques, avec les opérations ajouter, supprimer, test d'appartenance, union et intersection.
DECLARE Available : SET OF Colour
Available ← {Red, Blue}
IF Green IN Available THEN
…
ENDIF
- Une classe 类 et ses instances, objets, combinent des champs de données, les attributs 属性, avec les opérations sur ces données, les méthodes 方法.

*Champs de types différents, un seul identificateur
Match each user-defined type to what it holds. · Reliez chaque type défini par l'utilisateur à ce qu'il contient.
Enumerated = fixed named values; pointer = an address; class = data + behaviour; set = unique unordered values. · Énuméré = valeurs nommées fixes ; pointeur = une adresse ; classe = données + comportement ; ensemble = valeurs uniques non ordonnées.
A set is an ordered collection in which a value may appear more than once. · Un ensemble est une collection ordonnée dans laquelle une valeur peut apparaître plus d'une fois.
A set is unordered and its values are unique. An array is the ordered structure that allows repeats. · Un ensemble est non ordonné et ses valeurs sont uniques. Un tableau est la structure ordonnée qui permet les répétitions.
The class
- A class is the definition; an object is an instance of it, one actual taxi with its own capacity.
- What distinguishes it from a record is the methods: a record is data alone, a class is data and the behaviour that belongs with it.
La classe
CLASS Taxi
PRIVATE Capacity : INTEGER
PUBLIC FUNCTION GetCapacity() RETURNS INTEGER
RETURN Capacity
ENDFUNCTION
ENDCLASS
- Une classe est la définition ; un objet est une instance de celle-ci, un taxi réel avec sa propre capacité.
- Ce qui la distingue d'un enregistrement, ce sont les méthodes : un enregistrement n'est que des données, une classe est des données et le comportement qui y est associé.
A class combines: · Une classe combine :
A class bundles attributes and methods; an object is an instance of a class. · Une classe regroupe attributs et méthodes ; un objet est une instance d'une classe.
What distinguishes a class from a record? · Qu'est-ce qui distingue une classe d'un enregistrement ?
Both group fields; only the class carries behaviour. An object is one instance of the class. · Les deux groupent des champs ; seule la classe porte du comportement. Un objet est une instance de la classe.
Worked example: choose the type and justify it
- A booking system stores, for each booking, a status that must be one of Requested, Confirmed or Cancelled. Which user-defined type, and why?
- An enumerated type: the legal values are a short fixed list, so the type prevents any other value being assigned and the code reads as the domain does.
- And for the booking itself: a reference, a date, a passenger count and a price? A record, because the values are of different types and always describe one booking together.
- And for the set of seats still free? A set: unordered, no duplicates, and membership is the operation you need.
Exemple résolu : choisir le type et justifier
- Un système de réservation stocke, pour chaque réservation, un statut qui doit être l'un des suivants : Requested, Confirmed ou Cancelled. Quel type défini par l'utilisateur, et pourquoi ?
- Un type énuméré : les valeurs légales forment une courte liste fixe, donc le type empêche toute autre valeur d'être assignée et le code se lit comme le domaine.
- Et pour la réservation elle-même : une référence, une date, un nombre de passagers et un prix ? Un enregistrement, car les valeurs sont de types différents et décrivent toujours une réservation ensemble.
- Et pour l'ensemble des sièges encore libres ? Un ensemble : non ordonné, sans doublons, et l'appartenance est l'opération dont on a besoin.
Choosing between them
| Need | Type |
|---|---|
| a value from a short fixed list | enumerated |
| indirection, or a structure that grows | pointer |
| several fields of different types describing one thing | record |
| an unordered collection of unique values | set |
| state and the behaviour that acts on it | class |
Choisir entre eux
| Besoin | Type |
|---|---|
| une valeur d'une courte liste fixe | énuméré |
| indirection, ou une structure qui croît | pointeur |
| plusieurs champs de types différents décrivant une chose | enregistrement |
| une collection non ordonnée de valeurs uniques | ensemble |
| état et le comportement qui agit dessus | classe |
Programming concept lab · Laboratoire de concepts de programmation
Connect examples to the programming idea they show. · Reliez les exemples au concept de programmation qu'ils illustrent.
For a variable that must be one of {Red, Green, Blue}, the best type is: · Pour une variable qui doit être l'une des {Red, Green, Blue}, le meilleur type est :
A fixed list of allowed values is exactly what an enumerated type is for. · Une liste fixe de valeurs autorisées correspond exactement à ce pour quoi sert un type énuméré.
Marks that slip away
- An enumerated type's values are named constants, not strings.
MyTaxi ← "T102"is a different thing and is wrong. - A pointer holds an address, not the value. Dereferencing is the step that reaches the value.
- A set is unordered with no duplicates; an array is ordered and may repeat. The question's wording tells you which.
- What makes a class more than a record is its methods. Say that when asked for the difference.
Pièges qui font perdre des points
- Les valeurs d'un type énuméré sont des constantes nommées, pas des chaînes.
MyTaxi ← "T102"est une chose différente et est incorrect. - Un pointeur contient une adresse, pas la valeur. La déréférence est l'étape qui accède à la valeur.
- Un ensemble est non ordonné et sans doublons ; un tableau est ordonné et peut contenir des doublons. Le libellé de la question indique lequel.
- Ce qui rend une classe plus qu'un enregistrement, ce sont ses méthodes. Dites-le quand on vous demande la différence.
You've got it
- user-defined types restrict what can be stored, group values that belong together, and make code self-documenting
- non-composite: enumerated (a fixed list of named constants) and pointer (an address, reached by dereferencing)
- composite: record (fields of different types), set (unordered, unique), class/object (attributes plus methods)
- choose from the need, and justify with the property that fits: a fixed list, indirection, mixed fields, uniqueness, or state with behaviour
Vous avez compris
- les types définis par l'utilisateur restreignent ce qui peut être stocké, regroupent les valeurs qui appartiennent ensemble, et rendent le code autodocumentant
- non-composite : énuméré (une liste fixe de constantes nommées) et pointeur (une adresse, atteinte par déréférencement)
- composite : enregistrement (champs de types différents), ensemble (non ordonné, unique), classe/objet (attributs plus méthodes)
- choisir selon le besoin, et justifier avec la propriété qui convient : une liste fixe, indirection, champs mixtes, unicité, ou état avec comportement