• Aucun résultat trouvé

CHAPITRE 8 : Les tableaux, fichiers et fonctions CHAPITRE 8 : Les tableaux, fichiers et fonctions

N/A
N/A
Protected

Academic year: 2022

Partager "CHAPITRE 8 : Les tableaux, fichiers et fonctions CHAPITRE 8 : Les tableaux, fichiers et fonctions"

Copied!
1
0
0

Texte intégral

(1)

CHAPITRE 8 : Les tableaux, fichiers et fonctions CHAPITRE 8 : Les tableaux, fichiers et fonctions

A) Conseils pratiques

Bien qu'il soit possible d'utiliser des pointeurs pour manipuler les tableaux, on vous conseille fortement, pour le cours IFT 1969, d'utiliser des indices. Le moyen avec des pointeurs sera abordé seulement dans le deuxième cours de programmation, soit le cours IFT 1160 (Programmation avec le langage C).

Dans l'en-tête des fonctions, on n'a pas besoin de mentionner les bornes des tableaux à un seul indice :

float moyenne(float t[], int n)

/* Cette fonction calcule et retourne la valeur moyenne d'un tableau t qui contient n réels */

...

void trier(int age[], float taille[], int nbPers) ...

Dans le corps d'une fonction qui manipule des tableaux, pour le cours IFT 1969, on vous suggère fortement d'utiliser des indices :

float moyenne(float t[], int n) {

float somme = 0;

int i;

for (i = 0; i < n; i++) somme += t[i];

return somme / n;

}

B) Traitement de l'information

Pour le cours IFT 1969, on lit très souvent un seul fichier de données pour créer quelques tableaux à un seul indice. On compte toujours le nombre effectif (le nombre réel) d'éléments lus. Une fois que ces tableaux sont créés, ils se trouvent en mémoire de l'ordinateur. On peut les manipuler pour :

 afficher leur contenu;

 calculer et afficher les statistiques;

 trier;

 chercher un élément en particulier;

 ajouter des nouveaux éléments;

 modifier;

 supprimer;

 etc.

(2)

Avant de quitter le programme, on peut créer de nouveaux fichiers ou faire la mise à jour du fichier original.

C) Exemples et exercices

Exemple 1 : création des tableaux et calculs des statistiques

On dispose du fichier texte "mesures.dta". Chaque ligne de ce fichier contient les informations d'une seule personne : sa taille et son poids.

On a 20 personnes ou moins dans le fichier.

Écrire un programme utilisant des tableaux et des fonctions pour calculer et afficher les statistiques ci-dessous.

Pour 17 personnes lues dans le fichier:

1. La taille

- moyenne : 1.68 metre - la plus grande : 1.83 metre - la plus petite : 1.43 metre 2. Le poids

- moyen : 61.69 kg - le plus lourd : 86.20 kg - le plus léger : 42.50 kg

Solution

/*

Matière principale: tableaux à un seul indice

Données : "mesures.dta" (une taille et un poids par ligne) 1.63 54.9

1.57 56.3 1.73 63.0 etc.

*/

#include <stdio.h>

/* Cette fonction permet de lire le fichier "mesures.dta" et de créer les 2 tableaux. Elle compte aussi le nombre effectif de personnes lues :

*/

void creer(float taille[], float poids[], int *p) {

FILE *aLire = fopen("mesures.dta", "r");

int n = 0; /* compteur du nombre de personnes lues*/

(3)

while (!feof(aLire)){

fscanf(aLire, "%f%f\n", &taille[n], &poids[n]);

n++;

}

fclose(aLire);

*p = n;

}

/* Cette fonction permet de calculer la valeur moyenne d'un tableau t qui contient exactement n réels.

*/

float moyenne(float t[], int n) {

float somme = 0.0;

int i;

for (i = 0; i < n; i++) somme += t[i];

return somme / n;

}

/* Cette fonction détermine la plus grande et la plus petite valeur dans un tableau t de n réels.

*/

void determiner(float t[], int n, float *pG, float *pP) {

float plusGrande = t[0], /* comme *pG */

plusPetite = t[0]; /* comme *pP */

int i;

for (i = 1; i < n; i++){

if (t[i] > plusGrande) plusGrande = t[i];

if (t[i] < plusPetite) plusPetite = t[i];

}

*pG = plusGrande;

*pP = plusPetite;

}

void main() {

#define MAX_PERS 20 /* 20 personnes ou moins dans le fichier */

float taille[MAX_PERS], poids[MAX_PERS];

int nbPers;

float grandeTaille, petiteTaille, lourdPoids, legerPoids;

(4)

creer(taille, poids, &nbPers);

printf("Pour %d personnes lues dans le fichier:\n\n", nbPers);

determiner(taille, nbPers, &grandeTaille, &petiteTaille);

printf(" 1. La taille\n");

printf(" - moyenne : %6.2f metre\n", moyenne(taille, nbPers));

printf(" - la plus grande : %6.2f metre\n", grandeTaille);

printf(" - la plus petite : %6.2f metre\n", petiteTaille);

printf("\n\n");

determiner (poids, nbPers, &lourdPoids, &legerPoids);

printf(" 2. Le poids\n");

printf(" - moyen : %6.2f kg\n", moyenne(poids, nbPers));

printf(" - le plus lourd : %6.2f kg\n", lourdPoids);

printf(" - le plus leger : %6.2f kg\n", legerPoids);

printf("Cliquez sur le bouton de fermeture ");

}

Exercice 1

Ajouter au programme de l'exemple 1 (exemple précédent) :

 une fonction avec l'en-tête suivant :

void afficher(float taille[], float poids[], int nbPers)

et un appel de cette fonction pour afficher le contenu de ces deux tableaux à l'écran.

 une fonction avec l'en-tête suivant :

void afficher2(float *p, float *s, int n)

et un appel de cette fonction pour afficher le contenu des 5 premiers éléments

des deux tableaux taille et poids à l'écran.

(5)

Exemple 2 : tri d'un tableau

Soit t un tableau de n réels. Écrire une fonction qui permet de trier le tableau N.

Solution

void trier(float t[], int n) {

int i, j, indMinimum;

float temporaire;

for (i = 0; i < n - 1; i++){ /* du premier à avant dernier */

indMinimum = i;

for (j = i + 1; j < n; j++) if (t[j] < t[indMinimum]) indMinimum = j;

if (indMinimum != i){ /* on échange */

temporaire = t[i];

t[i] = t[indMinimum];

t[indMinimum] = temporaire;

} } }

N.B. : En classe, on va réviser cette méthode de tri; dans le cours suivant (IFT 1160), on apprendra aussi d'autres méthodes de tri plus rapides.

Exemple 3 : recherche avec une sentinelle

On va programmer l'algorithme ci-dessous. Celui-ci permet de chercher un élément dans un tableau (trié ou non).

Soit t un tableau de n éléments (triés ou non). Soit aChercher une valeur à chercher.

L'algorithme de la recherche avec une sentinelle se présente comme suit :

indice = -1 t[n] = aChercher Répéter

indice = indice + 1

Tant que (t[indice] est différent de aChercher) Si (indice < n) Alors

élément trouvé à la position "indice"

Sinon

élément non trouvé Fin Si

(6)

Solution

void chercher(int t[], int n, int aChercher, int *p) {

int indice = -1;

t[n] = aChercher;

do {

indice++;

} while (t[indice] != aChercher);

*p = indice;

}

Exemple d'utilisation

/* Chercher un numéro donné dans un tableau de numéros de nbEmp employés */

#define MAX_EMP 1250

int unNumero, numero[MAX_EMP];

int nbEmp, indice;

...

printf("Quel est le numero de l'employe recherche ? ");

scanf("%d", &unNumero);

chercher (numero, nbEmp, unNumero, &indice);

if (indice == nbEmp)

printf("Desole! on ne le trouve pas %d\n", unNumero);

else {

printf("Son numero : %d\n", numero[indice]);

printf("son age : %d\n", age [indice]);

}

Exemple de révision

On dispose du fichier texte "employes.dta". Chaque ligne de ce fichier contient les informations d'un seul employé. On y trouve :

 le poste de travail (un caractère) : 'A' pour analyste 'P' pour programmeur 'O' pour opérateur 'S' pour secrétaire

 le numéro d'employé (un entier)

 le nombre d'heures de travail (un réel)

 le taux d'horaire (un réel)

On a 250 employés au maximum dans le fichier.

(7)

Contenu du fichier :

P 2754 40.01 19.01 P 1848 40.02 23.01 S 2636 32.50 12.00 A 1750 30.03 25.16 A 2168 33.04 25.20 O 4612 42.00 10.12 etc.

Écrire un programme en langage C qui permet :

 de lire le fichier, de mémoriser les données dans 3 tableaux : poste, numero, salHebdo (salaire hebdomadaire);

 d'offrir un menu et de traiter le choix de l'usager pour :

 afficher la liste des employés;

 trier selon les numéros des employés;

 rechercher un employé (recherche avec une sentinelle pour le niveau du cours IFT 1969);

 calculer et afficher quelques statistiques.

Une solution possible

/* Fichier : Tableaux.C Objectifs pédagogiques :

revoir presque toutes les matières vues au cours IFT 1969.

Données :

Employes.Dta contenant moins de 250 employés */

#include <stdio.h>

#include <ctype.h> /* pour la Conversion de type (ex. toupper(...))*/

/******************************************************************

* But de la fonction meilleur: * * Cette fonction permet de calculer et de retourner le * * meilleur salaire hebdomadaire d'un poste de travail donné * * Paramètres d'entrée : Le tableau des salaires hebdo. * * Le nombre d'employés n * * Le poste voulu : un caractère * * Matières pédagogiques: * * tableaux, boucle for, fonction "naturelle" * ******************************************************************/

float meilleur(float salHebdo[], int n, char posteVoulu) {

float plusGrand = 0.0;

int i;

for (i = 0; i < n; i++)

if (poste[i] == posteVoulu) if (salHebdo[i] > plusGrand) plusGrand = salHebdo[i];

return plusGrand;

(8)

}

(9)

/*******************************************************************

* But de la fonction obtenir: * * afficher un menu et obtenir le choix de l'usager * * Paramètres d'entrée : Aucun * * Paramètres de sortie : leChoix via un pointeur * * Matières pédagogiques : boucle do while, opérateurs * *******************************************************************/

void obtenir(char * c) {

char leChoix ;

int valide; /* Oui ou Non le choix est valide */

printf("Tapez :\n");

printf(" - V pour visualiser\n");

printf(" - T pour trier\n");

printf(" - R pour rechercher\n");

printf(" - S pour statistiques\n");

printf(" - Q pour quitter\n");

do {

printf("\nVotre choix parmi A, T, C, S ou Q >> ");

leChoix = toupper(getchar());

/* une version améliorée sera présentée plus tard en utilisant les chaînes des caractères*/

valide = (leChoix == 'A' || leChoix == 'T' ||

leChoix == 'C' || leChoix == 'S' ||

leChoix == 'Q');

if (!valide)

printf("votre choix est invalide, recommencez S.V.P. >> ");

} while (!valide);

*c = leChoix;

}

(10)

/********************************************************************

* But de la fonction lireCreer: * * La fonction permet de lire le fichier employes.dta, de remplir * * les 3 tableaux et de compter le nombre effectif d'employés lus * * Paramètres d'entrée : Aucun * * Paramètres de sortie : Les trois tableaux, * * un paramètre transmis par pointeur pour * * le nombre effectif d'employés lus * * Appelé par la fonction principale * * Matières pédagogiques : tableaux, fichier, paramètres transmis * * par pointeur * ********************************************************************/

void lireCreer(char poste[], int numero[], float salHebdo[], int *p) {

int n = 0; /* compteur du nombre effectif d'employés lus

déclaration et "initialisation" (courant en langage C)*/

float nbHr, taux;

FILE *donnees;

/* localiser et ouvrir le fichier pour la lecture */

donnees = fopen("employes.dta", "r");

if (donnees == NULL)

printf("Problème d'ouverture du fichier à lire!\n");

else {

while (!feof(donnees)){

fscanf(donnees,"%c%d%f%f\n", &poste[n], &numero[n], &nbHr, &taux);

salHebdo[n] = nbHr * taux;

n++;

}

fclose(donnees);

*p = n;

} }

/*******************************************************************

* But de la fonction ecrire: * * afficher "explicitement" un poste de travail * * Paramètres d'entrée : unPoste (type caractère) * * * * Paramètres de sortie : Aucun * * * * Matières pédagogiques : sélection multiple avec switch * *******************************************************************/

void ecrire(char unPoste) {

switch (unPoste){

case 'A': printf(" Analyste");

break;

case 'P': printf(" Programmeur");

break;

case 'O': printf(" Operateur");

break;

case 'S': printf(" Secretaire");

}

(11)

printf("\n");

}

/*******************************************************************

* But de la fonction afficher: * * Permettre d'afficher la liste des employés * * à raison de 20 employés par écran. L'usager peut * * interrompre l'affichage * * Paramètres d'entrée: les tableaux poste, numero, salHebdo * * le nombre effectif d'éléments dans les * * tableaux * * Paramètres de sortie: Aucun * * Matières pédagogiques: boucle for et l'instruction break * *******************************************************************/

void afficher(char poste[], int numero[], float salHebdo[], int n) {

const int parEcran = 20;

int i;

printf("Liste d'employes :\n");

for (i = 0; i < n; i++){

printf("%4d) %5d %7.2f", i + 1, numero[i], salHebdo[i]);

ecrire(poste[i]);

if ((i + 1) % parEcran == 0 || i == (n-1)){

printf("\nAppuyez sur Q pour quitter ");

if (i < n-1)

printf(" ou Entrée pour continuer ");

if (toupper(getchar()) == 'Q') break;

} /* fin de if */

} /* fin de for */

}

(12)

/*******************************************************************

* But de la fonction chercherSenti : * * Effectuer une recherche séquentielle avec "sentinelle" * * dans un tableau * * Paramètres d'entrée: la valeur du poste recherchée, * * les tableaux poste, numero, salHebdo * * le nombre effectif d'éléments dans les * * tableaux * * Paramètres de sortie: la fonction retourne l'indice * * de l'élément trouvé ou –1 si non trouvé * * via le pointeur p * *******************************************************************/

void chercherSenti(int aChercher, int numero[], int nbEmpl, int *p) {

int indice;

printf("\nRecherche sequentielle avec une sentinelle :\n\n");

indice = - 1;

numero[nbEmpl] = aChercher;

do {

indice++;

} while (numero[indice] != aChercher);

if (indice == nbEmpl) indice = -1;

*p = indice;

}

/***************************************************************

* La fonction continuer: * * pour avoir le temps de consulter l'écran durant l'affichage * ***************************************************************/

void continuer() {

printf("\n\nAppuyez sur Entree ");

getchar();

}

/*******************************************************************

* But de la fonction demander: * * Permettre d'obtenir un numéro d'employé * * pour effectuer une recherche * * Paramètres d'entrée: Aucun * * Paramètres de sortie: le numéro d'employé via le pointeur p * * Matières pédagogiques: paramètre transmis par pointeur * * notion d'adresse * *******************************************************************/

void demander(int *p) {

int num;

printf("Quelques numeros existants : 4371, 1750, 2325, 3215\n");

printf("Quel est le numero de l'employe recherche ? ");

scanf("%d", &num); /* on peut faire aussi scanf("%d", p);*/

(13)

*p = num;

}

/*******************************************************************

* But de la fonction trier * * trier les employés selon les numéros d'employés *

* Paramètres d'entrée: les tableaux poste, numero, salHebdo * * le nombre effectif d'éléments dans les * * tableaux * * Paramètres de sortie: les tableaux modifiés par le tri * * Matières pédagogiques: méthode de tri par sélection *

********************************************************************/

void trier(char poste[], int numero[], float salHebdo[], int nbEmpl) {

int i, j, indMin;

int tempoNum;

float tempoSal;

char tempoPost;

for (i = 0; i < nbEmpl - 1; i++){

indMin = i;

for (j = i + 1; j < nbEmpl; j++) if (numero[j] < numero[indMin]) indMin = j;

if (indMin != i){

tempoNum = numero[i];

numero[i] = numero[indMin];

numero[indMin] = tempo_Num;

tempoSal = salHebdo[i];

salHebdo[i] = salHebdo[indMin];

salHebdo[indMin] = tempoSal;

tempoPost = poste[i];

poste[i] = poste[indMin];

poste[indMin] = tempoPost;

} } }

(14)

/****************************************************************************

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

******* FONCTION main ********

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

****************************************************************************/

void main() {

/* déclaration des tableaux : */

#define MAX_EMP 250 /* au maximum, 250 employés */

char poste[MAX_EMP];

int numero[MAX_EMP];

float salHebdo[MAX_EMP];

int nbEmpl; /* nombre effectif d'éléments dans un tableau */

char choix;

int aChercher, indice;

lireCreer(poste, numero, salHebdo, &nbEmpl);

do {

obtenir(&choix);

switch (choix){

case 'V': afficher ( poste, numero, salHebdo, nbEmpl );

break;

case 'S': printf("meilleur salaire :\n");

printf(" - des analystes : %8.2f $\n",

meilleur(salHebdo, nbEmpl, 'A'));

printf(" - des operateurs: %8.2f $\n",

meilleur(salHebdo, nbEmpl, 'O'));

continuer();

break ;

case 'R': demander(&aChercher);

chercherSenti(aChercher, numero, nbEmpl, &indice);

if (indice >= 0){

printf("Yahou! on a trouve :\n");

printf("%5d %7.2f", numero[indice], salHebdo[indice]);

ecrire(poste[indice]);

} else

printf("Desole, on ne trouve pas %d\n", aChercher);

continuer();

break ;

case 'T': trier(poste, numero, salHebdo, nbEmpl);

break ; }

} while (choix != 'Q');

}

(15)

Exécution

Tapez :

- A pour visualiser - T pour trier - C pour rechercher - S pour statistiques - Q pour quitter

Votre choix parmi A, T, C, S ou Q >> a Liste d'employes :

1) 2754 760.59 Programmeur 2) 1848 920.86 Programmeur 3) 2636 390.00 Secretaire 4) 1750 755.55 Analyste 5) 2168 832.61 Analyste 6) 4612 425.04 Operateur 7) 2325 405.20 Operateur etc.

19) 4119 879.70 Analyste 20) 4121 648.59 Programmeur

Appuyez sur Q pour quitter ou Entree pour continuer 21) 1023 857.11 Analyste

22) 1868 390.00 Secretaire 23) 1944 390.00 Secretaire 24) 1430 610.19 Programmeur 25) 3727 892.56 Programmeur 26) 4613 451.50 Operateur 27) 3628 452.36 Operateur 28) 4368 453.22 Operateur 29) 2047 487.50 Secretaire 30) 2565 422.50 Secretaire 31) 3026 855.40 Programmeur 32) 4342 847.79 Analyste 33) 2451 822.76 Analyste 34) 1741 436.65 Operateur 35) 1957 422.50 Secretaire 36) 1327 853.75 Analyste 37) 1631 487.50 Secretaire 38) 1644 390.00 Secretaire 39) 2028 462.25 Operateur 40) 2021 422.50 Secretaire

Appuyez sur Q pour quitter ou Entree pour continuer >> q Tapez :

- A pour visualiser - T pour trier - C pour rechercher - S pour statistiques

(16)

- Q pour quitter

Votre choix parmi A, T, C, S ou Q >> s meilleur salaire :

- des analystes : 1217.20 $ - des operateurs: 760.59 $ Appuyez sur Entree

Tapez :

- A pour visualiser - T pour trier - C pour rechercher - S pour statistiques - Q pour quitter

Votre choix parmi A, T, C, S ou Q >> c

Quelques numeros existants : 4371, 1750, 2325, 3215 Quel est le numero de l'employe recherche ? 2325 Recherche sequentielle avec une sentinelle : Yahou! on a trouve :

2325 405.20 Operateur Appuyez sur Entree Tapez :

- A pour visualiser - T pour trier - C pour rechercher - S pour statistiques - Q pour quitter

Votre choix parmi A, T, C, S ou Q >> c

Quelques numeros existants : 4371, 1750, 2325, 3215 Quel est le numéro de l'employe recherche ? 5555 Recherche sequentielle avec une sentinelle : Desole, on ne trouve pas 5555

Appuyez sur Entree Tapez :

- A pour visualiser - T pour trier - C pour rechercher - S pour statistiques - Q pour quitter

(17)

Votre choix parmi A, T, C, S ou Q t etc.

(18)

Autres exemples Exemple 1

/* Fichier sousPro1.c (exemple de fonctions en langage C) Données pour tester : imperial.tst

F 5 4 121 M 5 2 124 M 5 4 135 M 5 1 113 M 5 5 136 F 5 4 105 Ce programme permet de :

1) lire le fichier imperial.tst,

créer les 3 tableaux sexe, taille, poids;

compter et retourner le nombre exact de personnes lues fonction avec return : lireRemplir

2) afficher la liste des personnes lues fonction afficher de type void 3) compter et afficher :

- le nombre d'hommes - le nombre de femmes

fonction avec return : leNombre

4) créer 2 nouveaux fichiers "hommes.dta" (pour les hommes) et "femmes.dta" (pour les femmes)

5) déterminer et afficher : - la taille la plus grande - le poids le plus lourd */

#include <stdio.h>

#define MAX_PERS 10

/* S'assurer que le fichier est déjà copié sur le disque R: */

#define NOM_A_LIRE "R:\\imperial.tst"

int lireRemplir(char sexe[], float taille[], float poids[]) {

const float FACTEUR1 = 0.3048, FACTEUR2 = 0.454;

FILE *aLire = fopen(NOM_A_LIRE, "r");

int n = 0, nbPieds, nbPouces, nbLivres;

(19)

while (!feof(aLire)){

fscanf(aLire, "%c%d%d%d\n", &sexe[n], &nbPieds, &nbPouces, &nbLivres);

taille[n] = (nbPieds + nbPouces / 12.0) * FACTEUR1;

poids[n] = (nbLivres) * FACTEUR2;

n++;

}

fclose(aLire);

return n;

}

void afficher(char sexe[], float taille[], float poids[], int nbPers) {

int i;

printf("Liste des personnes lues :\n");

for (i = 0; i < nbPers; i++)

printf("%3d) %6.2f %8.1f %s\n", i+1, taille[i], poids[i],

sexe[i] == 'F' ? "feminin" : "masculin");

printf("\n");

}

void creer(char nomFichier[], char sexeVoulu, float taille[], float poids[], int nbPers, char sexe[]) {

int i;

FILE *aCreer = fopen(nomFichier, "w"); /* ouverture en écriture */

for (i = 0; i < nbPers; i++) if (sexe[i] == sexeVoulu)

fprintf(aCreer, "%c %7.2f %10.1f\n", sexe[i], taille[i], poids[i]);

fclose(aCreer);

}

int leNombre(char sexeDonne, char sexe[], int nbPers) {

int n = 0, i;

for (i = 0 ;i < nbPers; i++) if (sexe[i] == sexeDonne) n++;

return n;

}

(20)

float plusGrand(float t[], int nbPers) {

float maxi = 0.0;

int i;

for (i = 0; i < nbPers; i++) if (t[i] > maxi)

maxi = t[i];

return maxi;

}

void main() {

char sexe[MAX_PERS];

float taille[MAX_PERS], poids [MAX_PERS];

int nbPers;

nbPers = lireRemplir(sexe, taille, poids);

afficher(sexe, taille, poids, nbPers);

printf("Le nombre de femmes : %d\n", leNombre('F', sexe, nbPers));

printf("Le nombre d'hommes : %d\n", leNombre('M', sexe, nbPers));

creer("R:\\hommes.dta", 'M', taille, poids, nbPers, sexe);

creer("R:\\femmes.dta", 'F', taille, poids, nbPers, sexe);

printf("La taille la plus grande : %6.2f metre\n",

plusGrand(taille, nbPers) );

printf("Le poids le plus lourd : %6.2f kg\n",

plusGrand(poids , nbPers) );

}

Exécution

Liste des personnes lues : 1) 1.63 54.9 feminin 2) 1.57 56.3 masculin 3) 1.63 61.3 masculin 4) 1.55 51.3 masculin 5) 1.65 61.7 masculin 6) 1.63 47.7 feminin Le nombre de femmes : 2

Le nombre d'hommes : 4

La taille la plus grande : 1.65 metre Le poids le plus lourd : 61.74 kg

Références

Documents relatifs

Pour conserver les modifications du contenu de ces tableaux (après les avoir triées ou, après des ajouts, etc.), on recopie ces tableaux dans le fichier original ou

On appelle tableau une variable composée de données de même type, stockée de manière contiguë en mémoire (les unes à la suite des autres).. Un tableau est une suite des

Caractéristiques de l'indice: sert à parcourir les éléments d'un tableau et peut être exprimé comme un nombre ou une variable.. La valeur d'un indice

Modifier le programme de l’exercice 2 pour qu’il pr´esente un menu initial (utiliser l’instruc- tion switch) permettant de : i) Saisir les informations sur le personnel (exercice 2)

(*) Décrire votre méthode pour construire un tableau de signes à partir du

Vous avez beaucoup de liberté dans ce TP, il est donc essentiel de faire apparaître clairement dans le compte-rendu comment vous avez choisi de le structurer, quelles fonctions

-       décisions stratégiques prises au niveau direction générale -       délégation à des opérationnels (responsables de centres)  .. Déléguer signifie :

• qui retourne True si les éléments de la liste L sont rangés dans l’ordre croissant (au sens strict) et False sinon. Exercice 2 (Présence d’une sous-liste dans une liste)