8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
Les fonctions A quoi ça sert ?
Algorithmique (suite)
Portée des variables VBA & Excel
Fonctions & procédures
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Les Structures. Introduction : Imaginons que lon veuille afficher les notes dune classe délèves par ordre croissant avec les noms et prénoms de chaque.
(Classes prédéfinies – API Java)
C.
1 Révisions. 2 Tableaux non contraints Déclaration du type : type Tvecteur = tableau ( intervalle dentiers) de entiers type Tvecteur is array (integer.
Paramètres et pointeurs
Tableaux Certains problèmes nécessitent beaucoup de variables du même type. Exemple : relevé de températures matin et soir dans 10 villes pour 10 jours.
Chap. 1 Structures séquentielles : listes linéaires
8. Les tableaux P. Costamagna – ISEN N1.
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Principes de programmation (suite)
Points importants de la semaine Les fonctions. La portée. La passage par copie. Les tableaux.
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Algorithmique et Programmation
8PRO100 Éléments de programmation Comment faire prendre une décision à un ordinateur?
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que lon veut allouer. Le premier exemple: #include void main()
Leçon 2 : Surcharge des opérateurs IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
8PRO107 Éléments de programmation
8PRO107 Éléments de programmation
1 La récursion. Nous avons vu qu'un programme est constitué d'un ensemble de fonctions. Il est possible pour une fonction donnée d'appeler une autre fonction.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Les Algorithmes de Tri Introduction Tri par Sélection
Structures de données IFT-2000
Structures de données IFT-10541
Structures de données IFT-2000 Abder Alikacem Retour sur les listes ordonnées Département dinformatique et de génie logiciel Édition Septembre 2009.
Plan cours La notion de pointeur et d’adresse mémoire.
Le langage C Structures de données
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
8PRO100 Éléments de programmation Comment répéter plusieurs fois une séquence d’instructions.
Algorithmes de tri et de recherche
Décomposition et paramétrage des algorithmes
Un survol du language C.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que l’on veut allouer. Le premier exemple: #include void main()
Cours C++ Fonctions Surcharge d’opérateurs Passage d’arguments
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
HistoriqueHistorique Langage C++, parution du livre Bjarne Stroustrup Normalisation ANSI.
Strings et Tableaux en Java
Les types composés Les enregistrements.
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
Cours LCS N°4 Présenté par Mr: LALLALI
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
8PRO107 Éléments de programmation Les tableaux multidimensionnels.
8PRO107 Éléments de programmation Les adresses et les pointeurs.
Introduction à la programmation (420-PK2-SL) cours 18 Gestion des applications Technologie de l’information (LEA.BW)
La pile de crêpes.
Algorithmique Tableaux de données
Algorithmique Boucles et Itérations
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Informatique 2A Langage C 2 è séance. Objectifs de la séance 2 Début de la modularité avec les fonctions Création d’une première bibliothèque.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Transcription de la présentation:

8PRO107 Éléments de programmation Les tableaux

É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.

É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}

É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.

Étude de cas 1 Exemple : tableau d’entiers TAB de taille TAB[4] TAB[3] TAB[2] TAB[1] TAB[0] entier

Étude de cas 1 Exemple : tableau d’entiers TAB de taille TAB[4] TAB[3] TAB[2] TAB[1] TAB[0] entier TAB[1]  31

Étude de cas 1 Exemple : tableau d’entiers TAB de taille 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

Étude de cas 1 Exemple : tableau de réels F de taille F[999] F[2] F[1] F[0] réel F[998]réel

Étude de cas 1 Exemple : tableau d’entiers Liste de taille Liste[499] Liste[2] Liste[1] Liste[0] entier Liste[498]entier

É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)

É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.

É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.

É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.

É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.

É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.

Étude de cas 1 Pas-à-pas Entrée : Liste[499] Liste[2] Liste[1] Liste[0] entier n entier n tableau d’entiers Liste de taille 500

Étude de cas 1 Pas-à-pas Entrée : Liste[499] Liste[2] Liste[1] Liste[0] entier n LIRE n

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n appel de la fonction : liretab(Liste, 0, 3) 3 0 debut entier fin entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n liretab entier i 3 0 debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n liretab entier i i  debut debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n liretab entier i i  debut TANT QUE (i < fin) FAIRE LIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier liretab entier i i  debut TANT QUE (i < fin) FAIRE LIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier liretab entier i i  debut TANT QUE (i < fin) FAIRE LIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier liretab entier i i  debut TANT QUE (i < fin) FAIRE LIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier liretab entier i i  debut TANT QUE (i < fin) FAIRE LIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier liretab entier i i  debut TANT QUE (i < fin) FAIRE LIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier liretab entier i i  debut TANT QUE (i < fin) FAIRE LIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier liretab entier i i  debut TANT QUE (i < fin) FAIRE LIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier liretab entier i i  debut TANT QUE (i < fin) FAIRE LIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier liretab entier i i  debut TANT QUE (i < fin) FAIRE LIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : Liste[499] Liste[2] Liste[1] Liste[0] entier n entier retour de la fonction liretab entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier appel de la fonction ecriretab1(Liste, 0, 3) 3 0 debut entier fin entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier ecriretab1 entier i 3 0 debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier ecriretab1 entier i i  debut debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n ecriretab1 entier i i  debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier ecriretab1 entier i i  debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier ecriretab1 entier i i  debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i  i debut entier fin i entier 18

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier ecriretab1 entier i i  debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier ecriretab1 entier i i  debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier ecriretab1 entier i i  debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i  i debut entier fin i entier 18 93

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier ecriretab1 entier i i  debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier ecriretab1 entier i i  debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier ecriretab1 entier i i  debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier ecriretab1 entier i i  debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier ecriretab1 entier i i  debut TANT QUE (i < fin) FAIRE ÉCRIRE T[i] i  i debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : Liste[499] Liste[2] Liste[1] Liste[0] entier n entier retour de la fonction ecriretab1 entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier appel de la fonction ecriretab2(Liste, 0, 3) 3 0 debut entier fin entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier ecriretab2 entier i 3 0 debut entier fin i entier

Étude de cas 1 T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier ecriretab2 entier i i  fin debut entier fin i entier Pas-à-pas Entrée :

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier ecriretab2 entier i i  fin TANT QUE (i >debut) FAIRE i  i - 1 ÉCRIRE T[i] debut entier fin i entier

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier debut entier fin i entier ecriretab2 entier i i  fin TANT QUE (i >debut) FAIRE i  i - 1 ÉCRIRE T[i]

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier debut entier fin i entier 107 ecriretab2 entier i i  fin TANT QUE (i >debut) FAIRE i  i - 1 ÉCRIRE T[i]

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier debut entier fin i entier ecriretab2 entier i i  fin TANT QUE (i > debut) FAIRE i  i - 1 ÉCRIRE T[i]

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier debut entier fin i entier ecriretab2 entier i i  fin TANT QUE (i > debut) FAIRE i  i - 1 ÉCRIRE T[i]

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier debut entier fin i entier ecriretab2 entier i i  fin TANT QUE (i > debut) FAIRE i  i - 1 ÉCRIRE T[i]

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier debut entier fin i entier ecriretab2 entier i i  fin TANT QUE (i > debut) FAIRE i  i - 1 ÉCRIRE T[i]

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier debut entier fin i entier ecriretab2 entier i i  fin TANT QUE (i > debut) FAIRE i  i - 1 ÉCRIRE T[i]

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier debut entier fin i entier ecriretab2 entier i i  fin TANT QUE (i > debut) FAIRE i  i - 1 ÉCRIRE T[i]

Étude de cas 1 Pas-à-pas Entrée : T[499]  Liste[499] T[2]  Liste[2] T[1]  Liste[1] T[0]  Liste[0] entier n entier debut entier fin i entier ecriretab2 entier i i  fin TANT QUE (i > debut) FAIRE i  i - 1 ÉCRIRE T[i]

Étude de cas 1 Pas-à-pas Entrée : Liste[499] Liste[2] Liste[1] Liste[0] entier n entier retour de la fonction ecriretab2 fin du programme entier

Défi 1.Résoudre ce problème sans utiliser de tableau. 2.Afficher la liste à l’envers d’abord puis à l’endroit

É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.

É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)

É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)

É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 ?

É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 ?

É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 ?

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] ;

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] ; T:T:

Les tableaux Exemple : tableau d’entiers TAB de taille TAB[4] TAB[3] TAB[2] TAB[1] TAB[0] entier TAB : Deux façons de se représenter un tableau

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.

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 »

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 ? TAB1 : TAB2 : TAB3 :

Copier un tableau dans un autre POUR i  0 À (MAX-1), PAS de 1 TAB3[i]  TAB2[i] Et avec des TANT QUE ? TAB2 : TAB3 :

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

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 ?

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 »

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 »

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 »

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 : MAX=5 n=3

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 : x MAX=5 n=4 0

Enlever un élément à la fin SI (n > 0) ALORS n  n - 1 SINON ÉCRIRE « impossible d’enlever un élément »

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 »

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 »

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 : MAX=5 n=4

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 : MAX=5 n=3 6

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 : La valeur -1 indique qu’il n’y a pas de valeur à cet emplacement.

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 TAB : MAX=5 n= TAB : i=1 et j=4

Changer l’ordre des éléments Observation Pour pouvoir changer l’ordre d’un tableau il suffit de savoir échanger deux éléments TAB : MAX=5 n= TAB : échanger TAB[0] et TAB[3]: TAB : échanger TAB[1] et TAB[2]: TAB : échanger TAB[3] et TAB[4]: TAB : 01234

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.

32140 TAB : On cherche le plus petit élément On échange TAB[0] et TAB[4] On échange TAB[1] et TAB[2] 243 On échange TAB[2] et TAB[2] On cherche le plus petit élément On échange TAB[3] et TAB[4] Trier un tableau

/* 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 ; }

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 ; }

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] ); }

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 ; }

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 ; }

É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.

Étude de cas 3 Rappel Le produit scalaire du vecteur et du vecteurest un nombre entier AB défini par l’équation suivante :

É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

É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