• Aucun résultat trouvé

TYPES STRUCTURES DEFINIS PAR L'UTILISATEUR

N/A
N/A
Protected

Academic year: 2022

Partager "TYPES STRUCTURES DEFINIS PAR L'UTILISATEUR"

Copied!
9
0
0

Texte intégral

(1)

TYPES STRUCTURES DEFINIS PAR L'UTILISATEUR

Les Tableaux

1- Pourquoi les tableaux?

2- Définition 3- Syntaxe

4-Taille d'un tableau 5- Indice

6- Manipulation des éléments d'un tableau 7- Type d'un tableau

8- Quelques traitements de base .

*******************************************************

1. Type tableau :

1.1Pourquoi les tableaux ?

Imaginons que l'on veuille calculer la moyenne des notes d'une promotion, quel algorithme allons nous utiliser ?

Imaginons que l'on veuille toujours calculer la moyenne des notes d'une promotion mais en gardant en mémoire toutes les notes des étudiants (pour par exemple faire d'autres calculs tels la note

minimale, la

(2)

note maximale, etc.)

Il faudrait alors déclarer autant de variables qu'il y a d'étudiants, par exemple en supposant qu'il y ait 3 étudiants, on aurait l'algorithme suivant :

Il faudrait pouvoir par l'intermédiaire d'une seule variable stocker plusieurs valeurs de même type : c'est le rôle des tableaux.

1.2 Définition :

Un tableau (array en pascal) est formé d'un ou de plusieurs éléments (ou composantes) tous de même type. Un indice est associé au tableau et permet de numéroter et de distinguer les éléments.

Remarque :

Le type défini par un tableau est fonction :

1- du nombre d'éléments maximal que peut contenir le tableau 1- du type des éléments que peut contenir le tableau

On peut utiliser directement des variables de type tableau, ou définir de nouveau type à partir du type tableau

1.3. Syntaxe :

On utilise un type tableau via la syntaxe suivante :

Tableau[intervalle] de type des éléments stockés par le tableau

où intervalle est un intervalle sur un type simple dénombrable avec des bornes constantes Exemple :

Type Notes = Tableau[1..3 ] d’entiers 1 2 3

(3)

Défini un nouveau type appelé Notes, qui est un tableau de 3 entiers

a : Notes Déclare une variable de type Notes

c : Tableau['a'..'z'] d'Entier Déclare une variable de type tableau de 26 entiers

1.4 La taille d’un tableau : C’est le nombre de ses éléments : Taille maximale : taille de a est 3.

Taille effective : <= 3 c’est l’espace utilisé.

1.5 Indice d’un tableau:

L’indice nous a permis d’accéder à n’importe quel élément d’un tableau.

On accède (en lecture ou en écriture) à la i ème valeur d'un tableau en utilisant la syntaxe suivante : nom de la variable[indice]

Par exemple si tab est un tableau de 10 entiers (tab : Tableau[1..10] d'Entier ) tab[2]← -5

Met la valeur -5 dans la 2 ième case du tableau.

En considérant le cas où x est une variable de type Entier, x←tab[2]

met la valeur de la 2 ième case du tableau tab dans a, c'est-à-dire 5

lire(tab[1]) : met l'entier saisi par l'utilisateur dans la première case du tableau.

ecrire(tab[1]) : affiche la valeur de la première case du tableau.

Exercice : écrire la suite d’instructions qui lit 10 entiers, puis affiche sur l’écran tout entier sa valeur dépasse la moyenne arithmétique des10 entiers

Remarque : l’indice doit être de type ordinal.

(4)

Exercice : écrire un algo d’affichage de la moyenne des notes d'une promo saisies par le prof.

1.6 Manipulation des éléments d’un tableau :

Un élément d'un tableau de composants d’un certain type est manipulable comme n'importe quelle variable de ce type.

Exemple : Affectation : L[40] := 'a; affichage: writeln(L[27] ); Evaluation: if (L[12] ='f') then

remarque1 : une erreur d'exécution se produit quand on tente d'accéder à un élément inexistant d'un tableau (si l'indice est hors bornes)

remarque2 : la taille et le type des éléments d'un tableau sont fixés au départ ; le compilateur alloue la place mémoire requise à la lecture de la déclaration.

1.7 Type d’un tableau :

Tableaux de même type : a et b ont le même type Type t1= array [ 1..100] of

integer Var a, b: t1;

Type t1= array [ 1..100] of integer ;

t2= t1;

Var a: t1; b : t2 ;

Var a,b : array [ 1..100] of integer ;

Tableaux de types différent: a et b n’ont pas le même typet:

Type t1= array [ 1..100] of integer

t2= array [ 1..100] of char;

Var a: t1; b: t2;

Type t1= array [ 1..100] of integer ;

t2= array [ 1..100] of integer;

Var a: t1; b : t2 ;

Var a: array [ 1..100] of integer ;

b: array [ 1..100] of integer ;

(5)

1.8 Quelques traitements de base : 1- Parcours :

Exercice: A et B sont deux tableaux de même taille N, supposant que la lecture de N et de A est effectuée, écrire la suite d’instructions qui copie le contenu du tableau A dans B .

2- Affectation globale :

- si T1 et T2 sont deux tableaux du même type, on peut écrire l’instruction suivante :T1←T2.

3- Recherche :

On a souvent besoin de rechercher, dans un grand tableau, la position d'un élément donné. Un point particulier à ne pas oublier pour tous les algorithmes est le traitement du cas où l'élément cherché n'est pas dans le tableau. Une autre caractéristique importante d'un algorithme de recherche est son comportement désiré en cas d'éléments identiques (doit-il donner le premier, le dernier, tous ?).

3.1 Recherche séquentielle : Il suffit de lire le tableau progressivement du début vers la fin. Si le tableau n'est pas trié, arriver en fin du tableau signifie que l'élément n'existe pas.

Localisation de la première occurrence :

calcule le premier j tel que a[j]= e, /*s'il existe */

i : un entier trouve : booléen début

trouve ← faux

i ←0

tant que ((trouve = faux) et i<N) faire i← i+1

si (a[i] = e) alors trouve ← vrai fin si

(6)

fin tant que

si (trouve=vrai) alors ecrire ( i) fin si fin

Écrire un algorithme de localisation de la dernière occurrence de la valeur cherchée.

Écrire un algorithme de localisation de toute occurrence de la valeur cherchée.

3.2 Recherche binaire : Dans le cas d'un tableau trié, on peut limiter le nombre de lectures à log(N) +1, en cherchant à limiter l'espace de recherche. On compare la valeur cherchée à l'élément central du tableau, si ce n'est pas la bonne, un test permet de trouver dans quelle moitié du tableau on trouvera la valeur. On continue récursivement jusqu'à un sous-tableau de taille 1.

G, M , D ,i : entier trouve : booléen début

trouve ← faux g ←0 ; d ← N

tant que g<= d et non trouve faire m← (g + d)/ 2 ;

si (a[m]> e ) alors d← m- 1 sinon si a[m] < e alors g← m + 1 sinon trouve ← vrai fin tant que

si (trouve=vrai) alors ecrire (m) fin si Calcul du minimum

(7)

/* calcule l'indice imin du minimum du segment du tableau a */

k,i,imin : entiers imin ←1

pour i de 2 à N faire si (a[i] < a[imin]) alors imin ← i fin si

fin pour

4.Comparaison : a, B : deux tableaux de type entiers de même taille effective N , écrire une suite d’instructions qui compare entre A et B et affiche : Egaux si A et B sont identiques et Différents dans le cas contraire.

5.Eclatement : V est un tableau de taille N et tous ses éléments sont positifs.

Ecrire une suite d’instructions qui éclate V en deux tableaux : VP : est un tableau des valeurs paires de V

VI : est un tableau des valeurs impaires de V.

(8)

6.Fusion :

X et Y : deux tableaux de taille effective Tx et Ty respectivement. Les deux tableaux sont triés par un ordre croissant.

Ecrire une suite d’instructions qui fusionne X et Y dans un seul tableau Z trié par un ordre croissant.

7.Sous tableau :

A et B : deux tableaux de taille effective Ta et Tb respectivement.

Ecrire une suite d’instructions qui cherche B dans A et affiche : Oui : si le tableau B fait partie du A

NON : sinon Remarques :

1- L'accès aux éléments d'un tableau est direct (temps d'accès constant).

2-Il n'y a pas conservation de l'information d'une exécution du programme à une autre.

3-Les opérations de bases sur des tableaux de même type sont :

L'affectation (ß) qui copie tous les éléments du tableau (opérande droite) dans un autre (opérande gauche)

L'égalité (=) qui permet de savoir si deux tableaux de même type possèdent des éléments de même valeur (v i, a[i]=b[i])

(9)

L'inégalité ( ≠ ) qui permet de savoir si deux tableaux de même type possèdent au moins un élément différent (• i, a[i] ≠b[i])

Attention :

On ne peut comparer deux tableaux que si ces derniers sont totalement remplis.

Références

Documents relatifs

Interpolation linéaire I) Etude d'un exemple. On se propose de trouver une valeur approchée de

• Sur une même colonne les atomes ont le même nombre d’électrons de valence sur leur couche externe : ils appartiennent à une même famille d’éléments (le nombre

(Attention : angles en radians !) Que peut-on remarquer ? b) Selon les calculs précédents, vers quelle valeur semble s’ap-..

The absence of a clear enhance- ment of the HONO-formation under UV-A light, as expected from the UV-A experiments on the humic acid coatings (i.e. by a factor of ≈3 under

We created Euclid-like galaxy mocks of 100 deg 2 based on the SLICS N-body simulations to build the covariance matrix, and on 25 di fferent cosmologies, the cosmo-SLICS simula-

Cette phrase de type IMPÉRATIF doit obligatoirement et préalablement être « détransformée » (elle doit redevenir déclarative : « Tu dévores ton déjeuner. ») pour qu’il puisse

the cyclonic gyre in the southern Adriatic basin, on the abundance of ultraphytoplankton and the concentration of nutrients, we looked for a possible relationship between density

We report an extensive set of measurements of light absorbing carbon aerosol (a quantity functionally similar to BC) emissions from commercial vessels taken onboard the NOAA