Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parMarc Paré Modifié depuis plus de 9 années
1
8PRO107 Éléments de programmation Les tableaux
2
Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre qu’elle a été lue puis dans l’ordre inverse. Spécification de l’entrée : Un entier 0 < n 500 suivi de n nombres entiers. Sortie : Deux listes d’entiers.
3
Étude de cas 1 Fonction principale variables n : entier instructions LIRE n SI (n 0 OU n > 500) ÉCRIRE « erreur dans les données » SINON {lire n entiers et les mettre en mémoire} {afficher les n valeurs dans l’ordre} {afficher les n valeurs dans l’ordre inverse}
4
Étude de cas 1 Comment mémoriser 500 valeurs ? Tableau : permet de déclarer un grand nombre de cases mémoire en utilisant un seul nom.
5
Étude de cas 1 Exemple : tableau d’entiers TAB de taille 5............ TAB[4] TAB[3] TAB[2] TAB[1] TAB[0]............ entier
6
Étude de cas 1 Exemple : tableau d’entiers TAB de taille 5 31............ TAB[4] TAB[3] TAB[2] TAB[1] TAB[0]............ entier TAB[1] 31
7
Étude de cas 1 Exemple : tableau d’entiers TAB de taille 5 2 31 4 3............ TAB[4] TAB[3] TAB[2] TAB[1] TAB[0]............ entier TAB[1] 31 POUR i 2 À 4, PAS DE 1 TAB[i] i OU TAB[1] 31 i 2 TANT QUE i < 5 FAIRE TAB[i] i i i + 1
8
Étude de cas 1 Exemple : tableau de réels F de taille 1000............ F[999] F[2] F[1] F[0]............ réel............ F[998]réel
9
Étude de cas 1 Exemple : tableau d’entiers Liste de taille 500............ Liste[499] Liste[2] Liste[1] Liste[0]............ entier............ Liste[498]entier
10
Étude de cas 1 Fonction principale variables n : entier Liste : tableau d’entiers de taille 500 instructions LIRE n SI ( n 0 OU n > 500 ) ALORS ÉCRIRE « erreur dans les données » SINON liretab (Liste, 0, n) ecriretab1 (Liste, 0, n) ecriretab2 (Liste, 0, n) FIN. où les trois fonctions satisfont les prototypes suivants : liretab (tableau d’entiers, entier, entier) ecriretab1 (tableau d’entiers, entier, entier) ecriretab2 (tableau d’entiers, entier, entier)
11
Étude de cas 1 Remarque Lorsqu’on passe un tableau en paramètre, il est toujours passé par référence et non par copie. Ainsi, on peut modifier le contenu d’un tableau en appelant une fonction. Nous verrons l’explication de ce comportement dans quelques semaines alors que nous étudierons les pointeurs.
12
Étude de cas 1 Fonction liretab prototype liretab ( tableau d’entiers T, entier debut, entier fin) variables entier i instructions i debut TANT QUE ( i < fin ) FAIRE {lire le prochain entier et le placer à la i-ième position du tableau} {incrémenter i} But : Les valeurs lues ont été mises dans le tableau T de la position debut à la position fin.
13
Étude de cas 1 Fonction liretab prototype liretab ( tableau d’entiers T, entier debut, entier fin) variables entier i instructions i debut TANT QUE ( i < fin ) FAIRE LIRE T[i] i i + 1 But : Les valeurs lues ont été mises dans le tableau T de la position debut à la position fin.
14
Étude de cas 1 Fonction ecriretab1 prototype ecriretab1 (tableau d’entiers T, entier debut, entier fin) variables entier i instructions i debut TANT QUE ( i < fin ) FAIRE ÉCRIRE T[i] i i + 1 But : Les valeurs T[debut] à T[fin] ont été affichées.
15
Étude de cas 1 Fonction ecriretab2 prototype ecriretab2 (tableau d’entiers T, entier debut, entier fin) variables entier i instructions i fin TANT QUE ( i > debut ) FAIRE i i - 1 ÉCRIRE T[i] But : Les valeurs T[debut] à T[fin] ont été affichées.
16
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 Liste[499] Liste[2] Liste[1] Liste[0] entier........................ n entier n tableau d’entiers Liste de taille 500
17
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 Liste[499] Liste[2] Liste[1] Liste[0] entier 3........................ n LIRE n
18
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3........................ n appel de la fonction : liretab(Liste, 0, 3) 3 0 debut entier fin entier
19
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3........................ n liretab entier i 3 0 debut entier fin i entier
20
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3........................ n liretab entier i i debut 0 3 0 debut entier fin i entier
21
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3........................ n liretab entier i i debut TANT QUE (i < fin) FAIRE LIRE T[i] i i + 1 0 3 0 debut entier fin i entier
22
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3............ 18............ n entier liretab entier i i debut TANT QUE (i < fin) FAIRE LIRE T[i] i i + 1 0 3 0 debut entier fin i entier
23
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3............ 18............ n entier liretab entier i i debut TANT QUE (i < fin) FAIRE LIRE T[i] i i + 1 1 3 0 debut entier fin i entier
24
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3............ 18............ n entier liretab entier i i debut TANT QUE (i < fin) FAIRE LIRE T[i] i i + 1 1 3 0 debut entier fin i entier
25
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3............ 93 18............ n entier liretab entier i i debut TANT QUE (i < fin) FAIRE LIRE T[i] i i + 1 1 3 0 debut entier fin i entier
26
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3............ 93 18............ n entier liretab entier i i debut TANT QUE (i < fin) FAIRE LIRE T[i] i i + 1 2 3 0 debut entier fin i entier
27
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3............ 93 18............ n entier liretab entier i i debut TANT QUE (i < fin) FAIRE LIRE T[i] i i + 1 2 3 0 debut entier fin i entier
28
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier liretab entier i i debut TANT QUE (i < fin) FAIRE LIRE T[i] i i + 1 2 3 0 debut entier fin i entier
29
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier liretab entier i i debut TANT QUE (i < fin) FAIRE LIRE T[i] i i + 1 3 3 0 debut entier fin i entier
30
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier liretab entier i i debut TANT QUE (i < fin) FAIRE LIRE T[i] i i + 1 3 3 0 debut entier fin i entier
31
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 Liste[499] Liste[2] Liste[1] Liste[0] entier 3 107............ 93 18............ n entier retour de la fonction liretab entier
32
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier appel de la fonction ecriretab1(Liste, 0, 3) 3 0 debut entier fin entier
33
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier ecriretab1 entier i 3 0 debut entier fin i entier
34
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier ecriretab1 entier i i debut 0 3 0 debut entier fin i entier
35
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3........................ n ecriretab1 entier i i debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i i + 1 0 3 0 debut entier fin i entier 107 93 18
36
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier ecriretab1 entier i i debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i i + 1 0 3 0 debut entier fin i entier
37
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier ecriretab1 entier i i debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i i + 1 0 3 0 debut entier fin i entier 18
38
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier ecriretab1 entier i i debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i i + 1 1 3 0 debut entier fin i entier
39
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier ecriretab1 entier i i debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i i + 1 1 3 0 debut entier fin i entier
40
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier ecriretab1 entier i i debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i i + 1 1 3 0 debut entier fin i entier 18 93
41
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier ecriretab1 entier i i debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i i + 1 2 3 0 debut entier fin i entier
42
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier ecriretab1 entier i i debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i i + 1 2 3 0 debut entier fin i entier
43
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier ecriretab1 entier i i debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i i + 1 2 3 0 debut entier fin i entier 18 93 107
44
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier ecriretab1 entier i i debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i i + 1 3 3 0 debut entier fin i entier
45
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier ecriretab1 entier i i debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i i + 1 3 3 0 debut entier fin i entier
46
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 Liste[499] Liste[2] Liste[1] Liste[0] entier 3 107............ 93 18............ n entier retour de la fonction ecriretab1 entier
47
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier appel de la fonction ecriretab2(Liste, 0, 3) 3 0 debut entier fin entier
48
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier ecriretab2 entier i 3 0 debut entier fin i entier
49
Étude de cas 1 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier ecriretab2 entier i i fin 3 3 0 debut entier fin i entier Pas-à-pas Entrée : 3 18 93 107
50
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier ecriretab2 entier i i fin TANT QUE (i >debut) FAIRE i i - 1 ÉCRIRE T[i] 3 3 0 debut entier fin i entier
51
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier 2 3 0 debut entier fin i entier ecriretab2 entier i i fin TANT QUE (i >debut) FAIRE i i - 1 ÉCRIRE T[i]
52
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier 2 3 0 debut entier fin i entier 107 ecriretab2 entier i i fin TANT QUE (i >debut) FAIRE i i - 1 ÉCRIRE T[i]
53
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier 2 3 0 debut entier fin i entier ecriretab2 entier i i fin TANT QUE (i > debut) FAIRE i i - 1 ÉCRIRE T[i]
54
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier 1 3 0 debut entier fin i entier ecriretab2 entier i i fin TANT QUE (i > debut) FAIRE i i - 1 ÉCRIRE T[i]
55
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier 1 3 0 debut entier fin i entier 107 93 ecriretab2 entier i i fin TANT QUE (i > debut) FAIRE i i - 1 ÉCRIRE T[i]
56
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier 1 3 0 debut entier fin i entier ecriretab2 entier i i fin TANT QUE (i > debut) FAIRE i i - 1 ÉCRIRE T[i]
57
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier 0 3 0 debut entier fin i entier ecriretab2 entier i i fin TANT QUE (i > debut) FAIRE i i - 1 ÉCRIRE T[i]
58
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier 0 3 0 debut entier fin i entier 107 93 18 ecriretab2 entier i i fin TANT QUE (i > debut) FAIRE i i - 1 ÉCRIRE T[i]
59
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 T[499] Liste[499] T[2] Liste[2] T[1] Liste[1] T[0] Liste[0] entier 3 107............ 93 18............ n entier 0 3 0 debut entier fin i entier ecriretab2 entier i i fin TANT QUE (i > debut) FAIRE i i - 1 ÉCRIRE T[i]
60
Étude de cas 1 Pas-à-pas Entrée : 3 18 93 107 Liste[499] Liste[2] Liste[1] Liste[0] entier 3 107............ 93 18............ n entier retour de la fonction ecriretab2 fin du programme entier
61
Défi 1.Résoudre ce problème sans utiliser de tableau. 2.Afficher la liste à l’envers d’abord puis à l’endroit
62
Étude de cas 2 Description du problème : Une liste de notes a été produite pour une classe. Afficher cette liste et afficher la plus petite note, la plus grande et la moyenne. Finalement, afficher la liste des notes sous la moyenne. Spécification de l’entrée : Un entier n suivi d’une liste de n notes. Sortie : Une liste de n entiers suivie de deux entiers puis d’un réel et finalement une liste de moins de n entiers.
63
Étude de cas 2 Fonction principale variables tableau d’entiers Notes de taille 300 entier n réel notemoyenne instructions LIRE n SI ( n 0 OU n > 300 ) ÉCRIRE « erreur dans les données » SINON liretab(Notes, 0, n) ecriretab1(Notes, 0, n) ÉCRIRE « le maximum est » maximum(Notes, n) ÉCRIRE « le minimum est » minimum(Notes, n) notemoyenne moyenne(Notes, n) ÉCRIRE « la moyenne est » notemoyenne ecrire_sous_moyenne(Notes, n, notemoyenne)
64
Étude de cas 2 où les prototypes des fonctions utilisées sont: liretab(tableau d’entiers, entier, entier) écriretab1(tableau d’entiers, entier, entier) maximum(tableau d’entiers, entier) retourne un entier minimum(tableau d’entiers, entier) retourne un entier moyenne(tableau d’entiers, entier) retourne un réel ecrire_sous_moyenne(tableau d’entiers, entier, réel)
65
Étude de cas 2 Fonction maximum prototype maximum (tableau d’entiers T, entier n) retourne un entier variables entier max, i instructions max T[0] POUR i 1 À (n-1) AVEC PAS DE 1, FAIRE SI max < T[i] ALORS max T[i] But : La variable max contient le maximum de T[0]...T[n-1] RETOURNER max Comment faire avec un TANT QUE ?
66
Étude de cas 2 Fonction moyenne prototype moyenne (tableau d’entiers T, entier n) retourne un réel variables entier somme, i instructions somme 0 POUR i 0 À (n-1) AVEC PAS DE 1, FAIRE somme somme + T[i] But : La variable somme contient la somme de T[0] à T[n-1] RETOURNER somme / n Comment faire avec un TANT QUE ?
67
Étude de cas 2 Fonction ecrire_sous_moyenne prototype ecrire_sous_moyenne (tableau d’entiers T, entier n, réel m) variables entier i instructions somme 0 POUR i 0 À (n-1) AVEC PAS DE 1, FAIRE SI T[i] < m ALORS ÉCRIRE T[i] i i + 1 But : Toutes les notes sous la moyenne parmi T[0]...T[n-1] ont été affichées Comment faire avec un TANT QUE ?
68
Comment le faire en C++ Déclarer le tableau de réels F de taille 1000 double F[1000] ; Déclarer le tableau d’entiers TAB de taille 5 int TAB[5] ; Déclarer le tableau d’entiers Liste de taille500 int Liste[500] ;
69
Comment le faire en C++ Exemple : la suite de Fibonacci int T[10] ; n = 10 ; T[0] = 0 ; T[1] = 1 ; for ( i = 2; i < n; i = i + 1 ) T[i] = T[i-1] + T[i-2] ; 0134125321138 T:T: 0123456789
70
Les tableaux Exemple : tableau d’entiers TAB de taille 5............ TAB[4] TAB[3] TAB[2] TAB[1] TAB[0] entier TAB : 01234 Deux façons de se représenter un tableau
71
Opérations courantes Lire une liste de valeurs à mettre dans un tableau Initialiser un tableau Copier un tableau dans un autre Afficher le contenu d’un tableau Chercher un élément dans un tableau Chercher le plus grand élément dans un tableau Chercher le plus petit élément dans un tableau Ajouter un élément dans un tableau Enlever un élément dans un tableau Changer l’ordre des éléments dans un tableau Trier un tableau Etc.
72
Lire une liste de valeurs 3 méthodes: - longueur de la liste au début - valeur spéciale à la fin - lire jusqu’à la fin du fichier Exemple : (On suppose que MAX est une constante) tableau d’entiers TAB de taille MAX entier n n 0 TANT QUE ((n<MAX) ET (LIRE(TAB[n]) FDF)) FAIRE n n + 1 SI (n = MAX) ALORS ÉCRIRE « Liste trop longue »
73
Initialiser un tableau Trois exemples : POUR i 0 À (MAX-1), PAS de 1 TAB1[i] 0 POUR i 0 À (MAX-1), PAS de 1 TAB2[i] 2*i POUR i 0 À (MAX-1), PAS de 1 TAB3[i] TAB2[i] Et avec des TANT QUE ? 00000 TAB1 : 01234... 02468 TAB2 : 01234... 02468 TAB3 : 01234...
74
Copier un tableau dans un autre POUR i 0 À (MAX-1), PAS de 1 TAB3[i] TAB2[i] Et avec des TANT QUE ? 02468 TAB2 : 01234... 02468 TAB3 : 01234...
75
Afficher le contenu d’un tableau POUR i 0 À (MAX-1), PAS de 1 ÉCRIRE TAB[i] ou i 0 TANT QUE i < MAX FAIRE ÉCRIRE TAB[i] i i + 1
76
Chercher un élément Fonction chercher prototype chercher(tableau de réels TAB, entier n, réel x) retourne un entier Cette fonction cherche la première occurrence de l’élément x parmi les n premiers éléments du tableau TAB et retourne la position de cet élément. Si x n’est pas trouvé alors la fonction retourne -1. variables entier i {indique la position dans le tableau} instructions POUR i 0 À (n-1), PAS de 1 SI (TAB[i] = x) ALORS RETOURNER i RETOURNER -1 TANT QUE ?
77
Ajouter un élément x à la fin On suppose que MAX est la taille du tableau TAB et n est le nombre d’éléments dans TAB. SI (n < MAX) ALORS TAB[n] x n n + 1 SINON ÉCRIRE « impossible d’ajouter un élément »
78
Ajouter un élément x au début On suppose que MAX est la taille du tableau TAB et n est le nombre d’éléments dans TAB. On veut ajouter x au début du tableau. SI (n < MAX) ALORS Déplacer tous les éléments d’une case vers la fin. Insérer x au début du tableau. Incrémenter n. SINON ÉCRIRE « impossible d’ajouter un élément »
79
Ajouter un élément x au début On suppose que MAX est la taille du tableau TAB et n est le nombre d’éléments dans TAB. On veut ajouter x au début du tableau. SI (n < MAX) ALORS POUR i n À 1, PAS de -1 TAB[i] TAB[i-1] Insérer x au début du tableau. Incrémenter n. SINON ÉCRIRE « impossible d’ajouter un élément »
80
Ajouter un élément au début On suppose que MAX est la taille du tableau TAB et n est le nombre d’éléments dans TAB. On veut ajouter x au début du tableau. SI (n < MAX) ALORS POUR i n À 1, PAS de -1 TAB[i] TAB[i-1] Insérer x au début du tableau. Incrémenter n SINON ÉCRIRE « impossible d’ajouter un élément » 024 TAB : 01234 0024 01234 MAX=5 n=3
81
Ajouter un élément au début On suppose que MAX est la taille du tableau TAB et n est le nombre d’éléments dans TAB. On veut ajouter x au début du tableau. SI (n < MAX) ALORS POUR i n À 1, PAS de -1 TAB[i] TAB[i-1] TAB[0] x n n + 1 SINON ÉCRIRE « impossible d’ajouter un élément » 024 TAB : 0 1234 x024 01234 MAX=5 n=4 0
82
Enlever un élément à la fin SI (n > 0) ALORS n n - 1 SINON ÉCRIRE « impossible d’enlever un élément »
83
Enlever un élément au début SI (n > 0) ALORS Déplacer les éléments du tableaux vers le début Décrémenter n SINON ÉCRIRE « impossible d’enlever un élément »
84
Enlever un élément au début SI (n > 0) ALORS POUR i 1 À (n-1), PAS de 1 TAB[i-1] TAB[i] Décrémenter n SINON ÉCRIRE « impossible d’enlever un élément »
85
Enlever un élément au début SI (n > 0) ALORS POUR i 1 À (n-1), PAS de 1 TAB[i-1] TAB[i] Décrémenter n SINON ÉCRIRE « impossible d’enlever un élément » 0246 TAB : 01234 2466 01234 MAX=5 n=4
86
Enlever un élément au début SI (n > 0) ALORS POUR i 1 À (n-1), PAS de 1 TAB[i-1] TAB[i] n n - 1 SINON ÉCRIRE « impossible d’enlever un élément » 246 TAB : 01234 246 01234 MAX=5 n=3 6
87
Enlever un élément Dans certaines situations, il n’est pas nécessaire de déplacer les éléments pour en enlever un. On remplace alors l’élément à enlever par une valeur spéciale indiquant qu’il n’y a pas d’élément à cet emplacement. C’est alors comme s’il y avait des trous dans le tableau. 246 TAB : 01234 736 56789 La valeur -1 indique qu’il n’y a pas de valeur à cet emplacement.
88
Changer l’ordre des éléments L’opération de base ici consiste à échanger le contenu de deux cases (disons i et j) dans un tableau: x TAB[i] TAB[i] TAB[j] TAB[j] x 02465 TAB : 01234 MAX=5 n=4 05462 TAB : 01234 i=1 et j=4
89
Changer l’ordre des éléments Observation Pour pouvoir changer l’ordre d’un tableau il suffit de savoir échanger deux éléments. 01234 TAB : 01234 MAX=5 n=4 32140 TAB : 01234 échanger TAB[0] et TAB[3]: 31204 TAB : 01234 échanger TAB[1] et TAB[2]: 32104 TAB : 01234 échanger TAB[3] et TAB[4]: 32140 TAB : 01234
90
Trier un tableau Il existe une très grande variété de techniques permettant de trier un tableau en ordre croissant. En voici une. Trouver le plus petit élément L’échanger avec TAB[0] Trouver le second plus petit élément L’échanger avec TAB[1] Trouver le troisième plus petit élément L’échanger avec TAB[2] ETC.
91
32140 TAB : 01234 On cherche le plus petit élément 02143 On échange TAB[0] et TAB[4] 2143 01243 On échange TAB[1] et TAB[2] 243 On échange TAB[2] et TAB[2] 01243 43 On cherche le plus petit élément On échange TAB[3] et TAB[4] 01234 Trier un tableau
92
/* Ce programme lit un maximum de MAX entiers, les trie et les affiche */ int main() { int tab[MAX] ; int n ; n = lire(tab,MAX) ; trier(tab,n) ; afficher(tab,n) ; return 0 ; }
93
Trier un tableau /* Lit en entrée un maximum de M entiers et les place dans le tableau T */ int lire (int T[], int M) { int i = 0 ; while ( i > T[i] ) i = i + 1 ; return i ; } /* Affiche le contenu des n premières cases du tableau T */ void afficher (int T[], int n) { int i ; for ( i = 0; i < n; i = i + 1 ) std::cout << T[i] << std::endl ; }
94
Trier un tableau /* Trie les n premiers éléments du tableau T */ void trier ( int T[], int n) { int i, pmin ; for ( i = 0; i < n - 1; i = i + 1 ) { pmin = minimum( T, i, n ) ; echanger ( T[i], T[pmin] ); }
95
Trier un tableau /* Retourne la position du plus petit élément du tableau T entre les positions i et n-1 */ int minimum ( int T[], int i, int n ) { int k, min, pos ; min = T[i] ; pos = i ; for ( k = i + 1; k < n; k = k + 1 ) if ( T[k] < min) { min = T[k] ; pos = k ; } return pos ; }
96
Trier un tableau /* Échange le contenu des positions a et b du tableau T */ void echanger ( int & a, int & b ) { int tmp ; tmp = a ; a = b ; b = tmp ; }
97
Étude de cas 3 Description du problème : Calculer le produit de deux vecteurs de longueur n. Spécification de l’entrée : Un entier n suivi d’une liste de n nombres réels définissant le premier vecteur puis, une deuxième liste de n nombres réels définissant le second vecteur. Sortie: Une liste de n nombres réels.
98
Étude de cas 3 Rappel Le produit scalaire du vecteur et du vecteurest un nombre entier AB défini par l’équation suivante :
99
Étude de cas 3 Fonction principale entier n tableau de réels A de taille n {Premier vecteur} tableau de réels B de taille n {Second vecteur} LIRE n liretab(A, 0, n) liretab(B, 0, n) ÉCRIRE prodvecteur(A, B, n) où prodvecteur satisfait le prototype: prodvecteur(tableau de réels, tableau de réels, entier) retourne un réel
100
Étude de cas 3 prodvecteur(tableau de réels X, tableau de réels Y, entier n) retourne un réel entier i réel somme somme 0 POUR i 0 À (n-1), PAS de 1 somme somme + X[i]*Y[i] But : somme = X[0]*Y[0] + + X[n-1]*Y[n-1] RETOURNER somme
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.