Ch. 02 · Leçon 3
Le type scalaire énuméré, le type intervalle et les tableaux
Ce que vous saurez faire
- →Définir et déclarer un type scalaire énuméré en analyse et en Pascal.
- →Définir et déclarer un type intervalle.
- →Distinguer les opérateurs applicables aux types scalaires discrets.
- →Déclarer et manipuler un tableau unidimensionnel.
- →Utiliser un type tableau personnalisé pour structurer des données.
id: 33-231-types-enumere-intervalle-tableaux slug: 33-231-types-enumere-intervalle-tableaux titre: Le type scalaire énuméré, le type intervalle et les tableaux chapitre: 2 chapitre_titre: Les types de données et les structures de données lecon: 3 niveau: 4eme-sci ordre: 3 prerequis: [] duree_estimee_min: 45 mots_cles:
- type enumere
- type intervalle
- tableau
- vecteur
- array
- pascal
- ord
- pred
- succ langages:
- analyse
- pascal objectifs:
- Définir et déclarer un type scalaire énuméré en analyse et en Pascal.
- Définir et déclarer un type intervalle.
- Distinguer les opérateurs applicables aux types scalaires discrets.
- Déclarer et manipuler un tableau unidimensionnel.
- Utiliser un type tableau personnalisé pour structurer des données. status: published source_pdf: 33_231.pdf source_pages:
- 1 kind: cours
Leçon 3 — Le type scalaire énuméré et le type intervalle
I. Le type scalaire énuméré
Activité
Définir le type jour contenant les jours de la semaine.
Tableau de déclaration des nouveaux types :
| Types |
|---|
Jour = (Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche) |
Propriétés et opérateurs
-
On peut appliquer la fonction Ord sur les valeurs d'un type énuméré pour déterminer leur numéro d'ordre.
Exemple :
Ord(Lundi) = 0Ord(Mardi) = 1
-
Les opérateurs applicables à ces valeurs sont :
- Les opérateurs de relation :
>,<,<=,>=,=,<> - Les opérateurs Pred (prédécesseur) et Succ (successeur)
- Les opérateurs de relation :
Déclaration
Dans le Tableau de déclaration des nouveaux types :
| Types |
|---|
Jour = (Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche) |
Dans le TDO :
| Objet | Type/Nature |
|---|---|
| j | jour |
Dans le Tableau de déclaration des nouveaux types :
| Types |
|---|
Jour = (Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche) |
Dans le TDO :
| Objet | Type/Nature |
|---|---|
| j | jour |
Type
<nom_type> = (constante_1, constante_2, ..., constante_n);
Var
<nom_variable> : nom_type;
Exemple :
Type
jour = (Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche);
Var
j : jour;
II. Le type intervalle
Activité
Définir le type mois, le type week_end et le type lettres.
Tableau de déclaration des nouveaux types :
| Types |
|---|
Jour = (Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche) |
week_end = samedi..dimanche |
mois = 1..12 |
lettres = "a".."z" |
Déclaration
Type <nom_type> = borne_inf..borne_sup ;
Dans le TDO :
| Objet | Type/Nature |
|---|---|
| j | jour |
| m | mois |
| w | week_end |
| l | lettres |
Type <nom_type> = borne_inf..borne_sup ;
Dans le TDO :
| Objet | Type/Nature |
|---|---|
| j | jour |
| m | mois |
| w | week_end |
| l | lettres |
Type
jour = (Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche);
week_end = samedi..dimanche;
mois = 1..12;
lettres = 'a'..'z';
Var
j : jour;
m : mois;
w : week_end;
l : lettres;
Leçon 4 — Les tableaux
Activité d'introduction
On veut écrire un programme qui permet de saisir puis afficher la moyenne de 5 élèves d'une classe dans une matière donnée.
I. Déclaration d'un tableau
Tableau de déclaration des objets :
| Objet | Type/Nature |
|---|---|
| Ident_tableau | Tableau de taille et de type_element |
Tableau de déclaration des objets :
| Objet | Type/Nature |
|---|---|
| Ident_tableau | Tableau de taille et de type_element |
Var Ident_tableau : ARRAY [B_inf..B_sup] OF type_element;
Exemple
Tableau de déclaration des objets :
| Objet | Type/Nature | Rôle |
|---|---|---|
| Moyenne | Tableau de 5 réels | Stocker les notes de 5 élèves |
Tableau de déclaration des objets :
| Objet | Type/Nature | Rôle |
|---|---|---|
| Moyenne | Tableau de 5 réels | Stocker les notes de 5 élèves |
Var Moyenne : ARRAY [1..5] OF REAL;
II. Le type tableau
Il est possible de créer un nouveau type tableau afin de le réutiliser pour déclarer plusieurs variables.
Exercice introductif
On a deux classes pour lesquelles on veut stocker, pour chaque élève, son nom, sa moyenne et son rang.
Tableau de déclaration des nouveaux types :
| TYPES |
|---|
Classe = tableau de 20 chaînes de caractères |
T_Moyenne = tableau de 20 réels |
T_rang = tableau de 20 entiers |
Tableau de déclaration des objets :
| Objet | Type/Nature | Rôle |
|---|---|---|
| CL1 | Classe | Tableau des noms des élèves de cl1 |
| CL2 | Classe | Tableau des noms des élèves de cl2 |
| moyCl1 | T_moyenne | Tableau des moyennes de cl1 |
| moyCl2 | T_moyenne | Tableau des moyennes de cl2 |
| rangCl1 | T_rang | Tableau des rangs des élèves de cl1 |
| rangCl2 | T_rang | Tableau des rangs des élèves de cl2 |
Tableau de déclaration des nouveaux types :
| TYPES |
|---|
Classe = tableau de 20 chaînes de caractères |
T_Moyenne = tableau de 20 réels |
T_rang = tableau de 20 entiers |
Tableau de déclaration des objets :
| Objet | Type/Nature | Rôle |
|---|---|---|
| CL1 | Classe | Tableau des noms des élèves de cl1 |
| CL2 | Classe | Tableau des noms des élèves de cl2 |
| moyCl1 | T_moyenne | Tableau des moyennes de cl1 |
| moyCl2 | T_moyenne | Tableau des moyennes de cl2 |
| rangCl1 | T_rang | Tableau des rangs des élèves de cl1 |
| rangCl2 | T_rang | Tableau des rangs des élèves de cl2 |
Type
classe = array [1..5] of real;
Var
cl1 : classe;
Exercice d'application
Soit la séquence d'instructions suivante :
T[1] ← 30T[2] ← 7T[3] ← T[1] div T[2]T[4] ← T[3] * 10T[5] ← T[1] + T[3] * T[4]
Questions :
- Déclarer le tableau
T. - Quel est le contenu de chaque élément du tableau ?
Voir le corrigé
1) Déclaration du tableau T :
Comme toutes les valeurs manipulées sont entières, T est un tableau d'entiers de taille 5.
| Objet | Type/Nature |
|---|---|
| T | Tableau de 5 entiers |
| Objet | Type/Nature |
|---|---|
| T | Tableau de 5 entiers |
Var T : ARRAY [1..5] OF INTEGER;
2) Contenu de chaque élément (trace d'exécution) :
| N° | Instruction | T[1] | T[2] | T[3] | T[4] | T[5] |
|---|---|---|---|---|---|---|
| 01 | ··· | ? | ? | ? | ? | ? |
| 02 | ··· | ? | ? | ? | ? | ? |
| 03 | ··· | ? | ? | ? | ? | ? |
| 04 | ··· | ? | ? | ? | ? | ? |
| 05 | ··· | ? | ? | ? | ? | ? |
Détail des calculs :
T[3] = 30 div 7 = 4T[4] = 4 * 10 = 40T[5] = 30 + 4 * 40 = 30 + 160 = 190
Quiz : énumérés, intervalles, tableaux
Vérifiez votre maîtrise des types construits du programme.
Quiz (5 questions)
Soit le type énuméré `Jour = (Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche)`. Que vaut `Ord(Mercredi)` ?
Un **type intervalle** est utile pour :
Pour un tableau `T : tableau[1..n] de entier` en Analyse, les indices valides vont de :
Quelle déclaration est **valide** en Pascal pour un tableau de 10 entiers ?
Avantage principal d'un **type énuméré** par rapport à un entier ?