0% ont trouvé ce document utile (0 vote)
35 vues20 pages

Algorithme Programmation PASCAL C Part4

Transféré par

dafex84535
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
35 vues20 pages

Algorithme Programmation PASCAL C Part4

Transféré par

dafex84535
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

5.

Les tableaux

5.1 Exemples introductifs


5.2 Tableaux à une dimension
5.3 Tableaux à deux dimensions
5. Les tableaux

5.1 Exemples introductifs


5.2 Tableaux à une dimension
5.3 Tableaux à deux dimensions
5.1 Exemples introductifs

1) Saisir une suite de 10 nombres, puis afficher cette suite après


avoir divisé tous les nombres par la valeur maximale de la suite.
2) Saisir une suite de 15 notes d'étudiants, puis afficher la suite ces
notes après avoir ajouter 1 point à chacun
Intuitivement, pour résoudre ces problèmes, vous êtes obligé de
déclarer autant de variables différentes, que de nombres (10) ou de
notes (15) à traiter.
Avec 15 notes c'est encore raisonnable, mais si l'on voulait réaliser
ce traitement avec 300, 400, 5000 notes, cela deviendrait fastidieux
En outre, le même traitement est effectué 15 fois sur des variables
différentes.
Comme les variables ont des noms différents, on ne peut pas utiliser
de boucle, ce qui allonge considérablement le code et le rend très
répétitif.

Fotsing Talla Bernard, Ph.D Algorithme et programmation - PASCAL/C 99


5.1 Exemples introductifs

Pour résoudre ces problèmes, il est tentant d'utiliser un nom


commun pour toutes les variables et de les repérer par un numéro.
Ainsi, on pourrait déclarer toutes les variables d'un seul coup et
utiliser une boucle pour effectuer le traitement en faisant varier le
numéro des variables.
Cela est possible grâce à l'utilisation d'un tableau.
Les tableaux sont des structures de données permettant d'effectuer
un même traitement sur des données de même nature
Exemples d'applications
Ensemble de valeurs entières, réelles, booléennes,....
Ensemble de noms (type chaîne)
Ensemble de caractères (type caractère)
Ensemble d'adresses (type Adresse : nom, adresse, téléphone)
Ensemble d'ouvrages
Fotsing Talla Bernard, Ph.D Algorithme et programmation - PASCAL/C 100
5.1 Exemples introductifs

Les traitements opérant sur des tableaux peuvent être :


créer des tableaux
ranger des valeurs dans un tableau
récupérer, consulter des valeurs rangées dans un tableau
rechercher si une valeur est dans un tableau
mettre à jour des valeurs dans un tableau
modifier la façon dont les valeurs sont rangées dans un tableau (par
exemple : les trier de différentes manières)
effectuer des opérations entre tableaux : comparaison de
tableaux, multiplication, ...

On distingue les tableaux à une dimension (une entrée) ou à deux


dimensions ( deux entrées)

Fotsing Talla Bernard, Ph.D Algorithme et programmation - PASCAL/C 101


5. Les tableaux

5.1 Exemples introductifs


5.2 Tableaux à une dimension
5.3 Tableaux à deux dimensions
5.2 Tableau à une dimension : vecteurs

Un tableau à une dimension (ou vecteur) peut être vu comme une


liste d'éléments.
On le représente souvent comme une suite de cases contenant
chacune une valeur.
Exemple : Salaire des employés d'une société de prestations de
services informatique
1 2 3 4 5 6 7 8

salaire 390 000 250 000 175 000 245 000 538 000 100 000 95 000 169 000

Un tableau possède un nom (on l'appellera salaire) et un nombre


d'éléments (de cases) qui représente sa taille (ici 8).
Tous les éléments d'un tableau ont le même type (c'est normal car
ils représentent des valeurs logiquement équivalentes)

Fotsing Talla Bernard, Ph.D Algorithme et programmation - PASCAL/C 103


5.2 Tableau à une dimension : vecteurs
1 2 3 4 5 6 7 8

390 000 250 000 175 000 245 000 538 000 100 000 95 000 169 000
salaire

Pour désigner un élément, on indique le nom du tableau suivi son


indice (son numéro) entre crochets: salaire [3] représente le 3ième
élément du tableau salaire et vaut 175000
La notion de « case contenant une valeur » doit faire penser à celle
de variable. Et, en effet, les cases du tableau, encore appelées
éléments du tableau, sont des variables, qualifiées d'indicées.
Différence : Les variables classiques sont déclarées
individuellement et ont un nom distinct ; les variables indicées sont
implicitement déclarées lors de la déclaration du tableau.
Le tableau lui-même constitue aussi une variable. C’est une variable
complexe (par opposition aux variables simples) car il est constitué
d'autres variables (les éléments du tableau).

Fotsing Talla Bernard, Ph.D Algorithme et programmation - PASCAL/C 104


5.2 Tableau à une dimension:
déclaration
La syntaxe est la suivante
VAR <identificateur> : tableau [<valeurIndiceMin> .. <valeurIndiceMax>] de type

Exemples :
VAR salaire : tableau [1..8] de Réel
notes : tableau [1..15] de Réel
nom_clients: tableau [1..20] de Chaîne

Exemple : déclaration d'un tableau qui contiendra les fréquences des


températures comprises entre –40°C et 50°C
VAR températures : tableau [-40, 50] de Réel

Fotsing Talla Bernard, Ph.D Algorithme et programmation - PASCAL/C 105


5.2 Tableau à une dimension:
déclaration
Lorsqu'on déclare un tableau, on déclare aussi de façon implicite toutes
les variables indicées qui le constituent.
En règle générale, l'indice minimum vaut 1.
Mais certains langages de programmations (C, C++) utilisent 0 comme
indice minimum.
Dans ce cas, l'indice maximum sera égal au nombre d'éléments – 1.
Lorsque l'indice minimum est 1, la taille du tableau (nombre d'éléments)
est égale à la valeur de l'indice maximum
Certains langages acceptent que les valeurs minimales et maximales
d'indice soient des variables.
Mais comme ce n'est pas le cas de tous les langages, nous nous
limiterons à des valeurs d'indice constantes.

Fotsing Talla Bernard, Ph.D Algorithme et programmation - PASCAL/C 106


5.2 Tableau à une dimension:
tableaux constants
Il est parfois utile de déclarer un tableau constant, c’est-à-dire un
tableau dont les valeurs ne peuvent pas changer.
Dans ce cas, comme pour toutes les autres constantes, il faut initialiser
les valeurs du tableau dès la déclaration.
Pour cela, on utilise une liste d’initialisation entre accolades :

Exemple : Voici un tableau constant qui mémorise le libellé des mois:


libmois[1..12] ={"janvier", "février", "mars", "avril", "mai", "juin", "juillet", "aôut",
"septembre", "octobre", "novembre", "décembre"}
ou
CONST libmois[1..12] {"janvier", "février", "mars", "avril", "mai", "juin", "juillet",
"aôut", "septembre", "octobre", "novembre", "décembre"}de Chaîne.

Fotsing Talla Bernard, Ph.D Algorithme et programmation - PASCAL/C 107


5.2 Tableau à une dimension:
synonyme
Il est parfois commode de définir un synonyme à un tableau en vue de
simplifier la lisibilité du programme.
La syntaxe est :
type <nom_synonyme> = <description_tableau>

Exemple : Déclaration d'un nouveau type Mot pour désigner un tableau


de 10 caractères

type Mot = tableau [1 .. 10] de Caractère


VAR nom, prenom, verbe : Mot

Fotsing Talla Bernard, Ph.D Algorithme et programmation - PASCAL/C 108


5.2 Tableau à une dimension:
utilisation par les indices
Les éléments d'un tableau sont des variables indicées qui s'utilisent
exactement comme n'importe quelles autres variables classiques.
Autrement dit, elles peuvent faire l'objet d'une affectation, elles peuvent
figurer dans une expression arithmétique, dans une comparaison, elles
peuvent être affichées et saisies, … L'indice d'un élément peut être:
directement une valeur ex: salaire [5];
une variable ex: salaire [i] ;
une expression entière ex: salaire [k+1] avec k de type entier
Quelque soit sa forme, la valeur de l'indice doit être entière et comprise
entre les valeurs minimales et maximales déterminées à la déclaration
du tableau.
Par exemple, avec le tableau tab[1..20] d'entiers, il est impossible
d'écrire tab[0] et tab[21]. Ces expressions font référence à des éléments
qui n'existent pas.
Fotsing Talla Bernard, Ph.D Algorithme et programmation - PASCAL/C 109
5.2 Tableau à une dimension:
utilisation par les indices
VAR tab : tableau [1..20] de Entier

Accès en lecture : Ecrire(tab[4]) :


le contenu du tableau à l'indice 4 est affiché à l'écran.

Accès en écriture : Lire(tab[5]) :


La valeur entrée par l'utilisateur est enregistrée dans le tableau à l'indice
5
Affectation : tab[3] 18 :
la valeur 18 est placée dans le tableau à l'indice 3

Attention : tab 45 est incorrect. De même que tab[3] '2'

Fotsing Talla Bernard, Ph.D Algorithme et programmation - PASCAL/C 110


5.2 Tableau à une dimension: exemples

Le fait que les éléments constituant un tableau soient indicés permet de


parcourir tous les éléments avec une boucle.
La boucle Pour est généralement la boucle la plus adaptée, puisque l’on
connaît le nombre de fois qu'on doit effectuer le traitement
La solution au problème 2 dans l'exemple introductif peut être :
Programme AjoutUn
Var note: tableau[1..15] de Réel
i: entier
Début
Ecrire ("Saisir la liste des 15 notes")
Pour i 1 à 15 Faire
Lire (note[i])
Fpour
Ecrire ("Voici la liste de ces notes augmentées de 1" )
Pour i 1 à 15 Faire
Ecrire (note[i]+1)
Fpour
Fin
Fotsing Talla Bernard, Ph.D Algorithme et programmation - PASCAL/C 111
5.2 Tableau à une dimension: exemples
Algorithme SaisieTableau
{remplit un tableau avec nbVal valeurs entières}
CONST TailleMAX 100 : entier
VAR nbVal, ind : entier
nombres : tableau [1.. TailleMAX] d'entiers
Début
Ecrire ("Combien de valeurs sont à saisir?")
Lire (nbVal)
Si (nbVal < 1 OU nbVal > TailleMAX) Alors
{refuser la saisie : la capacité du tableau est dépassée}
Ecrire ("trop de valeurs à saisir ou nb de val négatif")
Sinon
pour ind 1 à nbVal faire
Ecrire ("Donner une valeur")
{valeur à ranger dans la indème case du tableau}
Lire (nombres[ind])
Fpour
Fsi
Fin

Fotsing Talla Bernard, Ph.D Algorithme et programmation - PASCAL/C 112


5. Les tableaux

5.1 Exemples introductifs


5.2 Tableaux à une dimension
5.3 Tableaux à deux dimensions
5.3 Tableau à deux dimension : matrice

Un tableau à deux dimensions (deux entrées) sera vu comme une


matrice de dimension deux.
L'exemple suivant décrit un tableau à 2 lignes et 7 colonnes.
1 2 3 4 5 6 7
points 1 10 3 25 14 2 1 8
2 9 20 7 12 2 4 7
La syntaxe de déclaration est la suivante
VAR <ident> : tableau [<indMinLig> .. <indMaxLig> , <indMinCol> .. <indMaxCol>] de type

La première plage d'indices (<indMinLig> .. <indMaxLig>) représente


les indices des différentes lignes
La deuxième plage (<indMinCol> .. <indMaxCol>) les indices des
différentes colonnes. Ces deux plages sont séparées par une virgule.

Fotsing Talla Bernard, Ph.D Algorithme et programmation - PASCAL/C 114


5.3 Tableau à deux dimension :
utilisation
1 2 3 4 5 6 7
1 10 3 25 14 2 1 8
points
2 9 20 7 12 2 4 7

Pour l'exemple précédent on a la déclaration suivante :


VAR points : tableau [1..2 , 1..7] de Entier
Accès en lecture : Ecrire(points[1,7]) :
la valeur contenue en ligne 1 colonne 7 (ie 8) est affichée à l'écran
Accès en écriture : Lire(points[2,6]) :
La valeur fournie est enregistrée en ligne 2 colonne 6.
Affectation : points[2,4] 36 :
remplace la valeur en ligne 2 colonne 4 par 36.

Fotsing Talla Bernard, Ph.D Algorithme et programmation - PASCAL/C 115


5.3 Tableau à deux dimension : exemple
Algorithme SaisieTableau2D
{remplit un tableau à 2 dimensions }
CONSTTailleMAX 100 : entier
VAR nbLignes, nbColonnes, indL, indC : entiers
nombres : tableau [1.. TailleMAX ; 1.. TailleMAX] de Entier
début
Ecrire ("Combien de lignes?") ; Lire (nbLignes)
Ecrire ("Combien de colonnes?") ; Lire (nbColonnes)
si (nbLignes > TailleMAX ou nbColonnes > TailleMAX) alors
Ecrire ("trop de valeurs à saisir")
sinon
pour indL 1 à nbLignes faire
pour indC 1 à nbColonnes faire
Ecrire ("Ligne" , inL, "colonne", indC, " : ")
Lire (nombres[indL, indC])
fpour
fpour
fsi
fin

Fotsing Talla Bernard, Ph.D Algorithme et programmation - PASCAL/C 116

Vous aimerez peut-être aussi