Vous êtes sur la page 1sur 28

UNIVERSITE MOHAMED KHIDER-BISKRA

DEPARTEMENT DE GESTION

MODULE : INFORMATIQUE :

2005/2006

Cours et Exercices Corrigs en Algorithmes

Dpartement de Gestion

INTRODUCTION GENERALE

I : ANALYSE, ALGORITHME, PROGRAMMATION :

But : acqurir une mthode, des outils : dmarche a suivre dun problme a rsoudre un programme informatique.
Domaines dapplications : Gestion (facturation, paye,) Informatique scientifique (mtorologie, astronomie,) Systmes industriels (commandes numriques, robotique,) Informatique ludique (informatique personnelle, jeux,) Etc Quelque soit le domaine, la dmarche de conception du programme reste identique. Dmarche Problme a rsoudre Etude Pralable Spcification des donnes et des rsultats Spcification de fonctionnalits Solution en langage naturel Donnes structures / Algorithme Programmation Programme excutable Test et valuation du travail ralis Documentation Comprhension du problme, modlisation du problme Recenser les informations et prciser leur nature Recenser et prciser Savoir rsoudre le problme avant dautomatiser la solution Mise en forme informatique des informations et des traitements raliser Choix du langage, traduction de la solution (algorithme) sous forme de programme Compilation du programme en programme excutable Test de la cohrence par rapport aux spcifications Manuel dutilisateur, aide en ligne, manuel de maintenance du logiciel

II LA NOTION DALGORITHME : Du mathmaticien persan Al-Khwa-Rizm (Bagdad, 780 850) Pour les notions de Al-Jabr (Algbre) thorie du calcul Plus ancien : Euclide (3eme sicle avant JC) Babyloniens (1800 avant JC)

Selon le LAROUSSE, la dfinition dalgorithme est un ensemble de rgles opratoires dont lenchanement permet de rsoudre un problme au moyen dun nombre fini doprations.
Quelques points importants :

Un algorithme dcrit un traitement sur un ensemble fini de donnes de nature simple (nombres ou caractres),
ou plus complexes (donnes structures) Un algorithme est constitu dun ensemble fini dactions composes doprations ou actions lmentaires. Ces actions lmentaires doivent tre effectives (ralisable par la machine), non ambigus. Un algorithme doit toujours se terminer aprs un nombre fini doprations. Lexpression dun algorithme ncessite un langage clair (comprhension) structur (enchanements doprations) non ambigu, universel (indpendants du langage de programmation choisi)

M.Rezig

Cours et Exercices Corrigs en Algorithmes Problme : un tel langage nexiste pas, on dfinit son propre langage.

Dpartement de Gestion

III MTHODOLOGIE DE CONCEPTION DUN ALGORITHME : Analyse descendante : (ou programmation structures) : on dcompose un problme complexe en sous problmes et ces sous problmes en dautres sous problmes jusqu' obtenir des problmes faciles a rsoudre c'est--dire connus. On rsout les sous problmes simples sous forme dalgorithme puis on recompose les algorithmes pour obtenir lalgorithme global du problme de dpart. Garder lesprit :

La modularit : un module rsout un petit problme donn. Un module doit tre rutilisable. Lisibilit de lalgorithme (mise en page, commentaires, spcification : dire quoi mais pas comment) Attention la complexit de lalgorithme : o Complexit en temps : mesure du temps dexcution en fonction de la taille des donnes o Complexit en espace : espace mmoire ncessaire pour effectuer les traitements. Ne pas rinventer la roue (c'est--dire ne pas refaire les programmes standard dont les solutions sont connues)
ce qui implique avoir une certaine culture et un outil technique standard

I-Introduction
Un type de donne dtermine : - un domaine : ensemble des valeurs possibles pour les objets de ce type. - primitives : ensembles des oprations permettant de manipuler les objets de ce type. On distingue : - les types lmentaires : simples (entiers, caractres,) prdfinis dans la plupart des langages de programmation - les types structurs : construits laide de constructeurs de types (exemple : tableaux) - les types abstraits : rservs des structures plus volues (listes, files, arbres,) Remarque : certains types peuvent ne pas exister (ou pas totalement). Dans ce cas, il est possible de les simuler : - coder les objets laide des constructeurs existants (coder une liste par un tableau) - crire les primitives sous forme dactions ou de fonctions

types lmentaires
1-LES ENTIERS
domaine [-N ; =N[ ou N dpend du nombre doctets primitives : - arithmtique : + - * div mod - comparaison = < - fonctions particulires (ValAbs,) ATTENTION : problmes de dbordements (sortir du domaine)

2-LES RELS (NOMBRES A VIRGULES FLOTTANTES)


Domaine : un sous ensemble fini, dun intervalle de la forme : [-N, -]U[0]U[, N] Primitives : idem que les entiers, plus les fonctions mathmatiques. ATTENTION : les calculs sont toujours faux : ils sont approchs. Exemple : A B*(A/B) En pratique : on utilise des bibliothques implmentant, par exemple, les dcimaux 1000000 de dcimales en assurant, par exemple, une prcision exacte jusqua la nme . dcimale

3-LE TYPE BOOLEN


Domaine : Vrai, Faux Primitives : oprateur boolenne, comparaisons Remarque : se familiariser avec les critures : Tant que non fini tant que fini = faux Si correct alors si correct = vrai alors

M.Rezig

Cours et Exercices Corrigs en Algorithmes Retourner (tri) Si tri = vrai alors retourner (vrai) sinon retourner (faux)

Dpartement de Gestion

4-TYPE CARACTRES
Domaine : cods sur un octet (ASCII) voire deux octets. Quelque soit le codage : a, b,,z : sont conscutifs A, B,,Z : sont conscutifs 0,,9 : sont conscutifs lespace _ prcde les caractres alphabtiques.

Primitives :
ORD : 1 entier => le caractre ayant ce code CHR : 1 caractre => son code A savoir : - Si (car 0) et (car 9) : tester un caractre chiffre - Car<=chr(ord(car)+ord(A)-ord(a)) : convertir une minuscule en majuscule sans avoir a connatre le codage des lettres car les lettres sont codes conscutivement. - Val<=ord(car)-ord(0) : rcupre la valeur dun chiffre.

LES CHANES DE CARACTRES


En ASD : Var : ch1 : chane [30] : longueur 30 Ch2 : chane : longueur quelconque Codage en C/C++ B o n j o u r 1 octet = 1 caractre Primitives : - accs au ime car : ch(i-1) - concatnation : + - fonction longueur - fonction spcifiques (cf doc) - comparaison =, <,

II-Elments de base de lalgorithme


Notion dobjet
Un algorithme ou une action manipule des donnes pour obtenir un rsultat. Pour cela on manipule des objets simples ou structurs.

Exemple : on calcule le quotient q et le reste r de la division entire de a par b par soustraction successives. 25-6=19
donc q=1 puis 19-6=13 donc q=2 puis 13-6=7 donc q=3 puis 7-6=1 donc q=4 puis 1-6 impossible donc q=4 et r=1. Un objet va tre caractris par :

un identificateur (son nom) : pour le dsigner cet identificateur doit tre parlant : q=quotient Un type (nature de lobjet : entier, caractre) simple ou structur. Un type dtermine en particulier les
valeurs possibles de lobjet et les oprations primitives applicable lobjet. Une valeur (contenu de lobjet) unique. Cette valeur peut varier au cours de lalgorithme ou dune excution lautre : ces objets sont des variables.

Dans les cas contraires (valeur fixe) ce sont des constantes. Tous les objets manipul par un algorithme doivent tre clairement dfinis : Mots clefs => const : PI=3.14 => var a, b : entiers x, y : caractres a, b, x, y sont des identificateurs

M.Rezig

Cours et Exercices Corrigs en Algorithmes

Dpartement de Gestion

Actions lmentaires :
Actions lmentaires : oprations simple, directement utilisable.

1-AFFECTATION
Permet de donner une valeur une variable : A<=28 reoit Si A avait une valeur auparavant, cette valeur disparat : elle est cras par 28 Format gnral : <id_variable> <= <expression> A<=28+13 A lexcution : lexpression est value (calcule) et sa valeur est range dans la variable. Donc les types <id_variable> et <expression> doivent tre compatibles. Attention : A<=B+3 B doit avoir une valeur. Or au dbut dune action, les variables ont une valeur indtermine/ B doit avoir t initialis.

2-LES OPRATIONS EN ENTRE SORTIE


Elles permettent de rcuprer une valeur venant de lextrieur (lecture) ou de transmettre une valeur lextrieur (criture) : var A, B, C : entiers plus rapide : lire (A, B) Lire (A, B) crire (A+B) C<=A+B Ecrire C

Remarques :
La notion de littral : A<=28 28 est un objet caractris par son type (entier [numrique]), son nom (sa valeur), et sa valeur (28) Le littral est lobjet constante , le nom est sa valeur On note les littraux de type caractre entre quotte A. On note les littraux de type chane de caractres entre double quotte : bonjour Autre remarque : Lors de lcriture dun algorithme, viter les dtails de programmation au niveau des entres sorties : par exemple on crira : crire (A, B, C) Et non crire (Le produit de, A, par, B, vaut, C)

Les structures de contrle conditionnelles :


Une action dcrit un enchanement dactions lmentaires. Lenchanement est dcrit par les structures de contrle. Une structure de contrle dj vue : lenchanement squentiel lire (A, B) C <= 2*A + B La plupart des autres structures de contrle utilise la notion de condition (expression boolenne) : Une condition a une valeur qui est, soit vrai, soit fausse. Pour dterminer la ralit de cette valeur on utilise : - les oprateurs de comparaisons =, , , - les oprateurs boolens (logique) : ET, OU, NON

LALTERNATIVE SI-ALORS-SINON
Elle permet deffectuer tel ou tel traitement en fonction de la valeur dune condition. Syntaxe : Exemple : Lire (note)

M.Rezig

Cours et Exercices Corrigs en Algorithmes Si <condition> Alors < action _alors> Sinon < action _sinon> Remarque, la ligne Sinon <action_sinon> est facultative. Principe de fonctionnement : 1 : la condition est value 2 : Si la condition a la valeur vrai on excute <action_alors> Si la condition a la valeur fausse on excute <action_sinon> Remarque : Les <action_alors> ou <action_sinon> peuvent tre soit : - des actions lmentaires - des composes (bloc) Dans ce cas on utilise les structures imbriques. Exemple de structure imbrique: Si A 10 Alors dbut Si A 10 Alors crire (oui) Fin Sinon crire (non)

Dpartement de Gestion Si note 10 Alors crire Bravo Sinon crire Dsol

STRUCTURE CHOIX MULTIPLES SELON-QUE :


Exemple : Selon que Note 16 : crire (TB) Note 14 : crire (B) Note 12 : crire (AB) Note 16 : crire (Passable) Sinon : crire (ajourn) Fin selon Fonctionnement : 1 : la condition 1 est value : Si la condition 1 est vraie, alors on excute laction correspondante et on quitte la structure selon-que Si la condition 1 est fausse , on value la condition 2et ainsi de suite. Si aucune nest vraie on effectue laction sinon. Syntaxe : Selon que <condition 1> : <action 1> <condition 2> : <action 2> <condition n> : <action n> sinon : <action_sinon> fin selon Remarque : en programmation, cette structure peut exister mais avec une forme ou un fonctionnement ventuellement diffrent. Si elle nexiste pas, il faut se souvenir que, en fait, SELON QUE est un raccourci dcriture pour des SI imbriqus.

Actions et fonctions : Un algorithme est compos dun ensemble fini dactions. En fait, on distingue : - les actions qui ralisent un traitement (lecture dun complexe, tri du fichier tudiant) - les fonctions qui effectuent un calcul et retournent un rsultat

M.Rezig

Cours et Exercices Corrigs en Algorithmes Dpartement de Gestion En programmation, on trouve parfois cette distinction de faon explicite. Comme en Pascal, ou lon a procedure et functions. En revanche, en C ou C++ cette distinction nexiste pas, il ny a que des fonctions. En algorithme, on savisera de faire cette distinction entre fonction et action, pour la simple raison que chacune ne fait pas intervenir le mme type de variable ou de paramtres :

SYNTAXE DUNE FONCTION :


Fonction <nom_fonction> ( <liste des paramtres> ) : <type de rsultat> < dclaration des objets locaux la fonction> dbut { corps de la fonction} retourner rsultat (en gnral vers une fonction ou action principale) fin

SYNTAXE DUNE ACTION :


Action <nom_action> < dclaration des objets locaux laction> dbut {corps de laction} fin

EXEMPLE DE FONCTION :
Fonction primtre rectangle (largeur, longueur : entiers) : entier Dbut Retourner [ 2*(largeur+longueur)] Fin

UN EXEMPLE DE FONCTION ET DACTION QUI FAIT APPEL UNE FONCTION :


Soit la fonction max3 qui donne le maximum de trois entiers : Fontion max3 (x, y, z : entiers) : entier {cette fonction dtermine le max de trois entier} var : max :entier dbut si x < y alors dbut si z<y alors max <= y sinon max <=z fin sinon dbut si x < z alors max <= z sinon max <= x fin retourner (max) fin <= Remarque : on peut insrer des commentaires entre {}

Maintenant, on peut crer laction qui dtermine le maximum et le minimum de trois entiers, en faisant appel la fonction max3 : Action max&min Var : a, b, c, min, max : entiers Dbut Lire (a, b, c) Max <= max3 (a, b, c) Min <= -max3 (-a, -b, -c) Ecrire (min, max) Fin

M.Rezig

Cours et Exercices Corrigs en Algorithmes Dpartement de Gestion Remarques : X, y, z sont les paramtres formels de la fonction max3. Ce sont des paramtres dentrs : lors de lappel de la fonction max3, les valeurs des arguments dappel (ici : a, b, c) ou (-a, -b, -c)) sont transmises aux paramtres x, y, z en fonction de leur ordre. Les arguments sont des expressions (par exemple : max <= max3 (2*a+b, c-b, a*c)) qui sont values lappel. Leur valeur est transmise aux paramtres. Naturellement, le type des expressions doit tre compatible avec le type des paramtres.

Structures rptitives :
Ide : rpter un ensemble doprations, arrter la rptition en fonction dune condition

LA STRUCTURE TANT QUE :


Syntaxe : Tant que <condition> Faire <action> Cette action peut tre simple ou compose Exemple : I<=5 Tant que i 5 Faire dbut Ecrire (i*i) I<=i+1 Fin Fonctionnement : 1 : la condition est valu 2 : si la condition est fausse : cest fini, on quitte le tant que 3 : si la condition est vraie, on excute le contenu du tant que puis on remonte ltape 1 tester de nouveau la condition. Remarque : Le contenu de la structure tant que peut ne jamais tre excut. Donc cette structure permet en ralit de rpter un traitement, 0, 1 ou plusieurs fois. La condition tant value au dbut, les variables tant utilise dans la condition doivent avoir t initialises. On doit sassurer de la terminaison (sinon le programme ne se termine jamais) Pour cela, il faut ncessairement que dans le corps de la structure, la condition soit modifi quelque part. Faisons lanalyse dun programme crit avec une structure tant que : Action Division entire {dtermine et affiche le quotient et le reste de la division de 2 entiers} Var : a, b, q, r : entiers Dbut : Lire (a, b) r<=a q<=0 tant que r b faire dbut q<=q+1 r<=r-b fin crire (q, r) fin Faire tourner la main pour vrifier si le programme fonctionne. Par exemple vrifions quil marche pour la division de 15 par 6 : Instructions Lire (a,b) a b 15 6 q r

M.Rezig

Cours et Exercices Corrigs en Algorithmes r<=a 0 15 r b vrai q<=q+1 1 r<=r-b 9 r b vrai q<=q+1 2 r<=r-b 3 r b faux crire 2 3

Dpartement de Gestion

On peut se poser la question de la terminaison : En effet si b<0 alors problme : il faut rajouter des conditions. De plus, si b=0 la division nest pas dfinie. Donc cet algorithme ne marche que pour 2 entiers a et b lus au clavier tels que a 0 et b >0

STRUCTURE RPTER :
Syntaxe : Rpter <actions simples> jusqu' <condition> Fonctionnement : 1 : on excute le corps 2 : on value la condition 3 : si Vraie : on quitte le rpter 4 : si Fausse on recommence Remarques : Il y a toujours au moins une excution du corps. La structure rpter permet de rpter un traitement 1 ou plusieurs fois. Pour choisir entre rpter et tant que il faut se poser la question : faut-il ventuellement ne jamais faire le traitement ? Si oui : il faut utiliser tant que, sinon utiliser la structure rpter qui excute au moins une fois laction. Attention, en C++ : La structure est dowhile : cest dire Fairetant que. Alors que la structure algorithmique est rpterjusqu'. Cest dire quen C++ on excute laction tant que une condition est vrai alors quen algorithme on excute une action tant que le condition est fausse, cest dire jusqu' ce que la condition inverse soit vraie.

STRUCTURE POUR :
Elle permet de parcourir un intervalle en rptant un traitement pour chacune des valeurs de cet intervalle. Exemples : 1) Pour I de 1 5 faire Ecrire (I*I) 2) Pour I de 1 11 par pas de 3 faire Ecrire (I*I) Syntaxe : Pour <id_variable> DE <val_infrieure> A <val_suprieure> [ par pas de <val_pas>] <= facultatif Faire <actions> Les actions peuvent tre simples ou composes.

Fonctionnement :
1 : Automatiquement, on a id_variable <= val_infrieure Donc, on a pas besoin dinitialiser, la structure se charge de la faire 2 : id_variable > val_suprieure ? Si oui, alors STOP, on quitte la structure Sinon : - on excute le programme

M.Rezig

Cours et Exercices Corrigs en Algorithmes Dpartement de Gestion - automatiquement, lincrmentation se fait (+1 ou +pas si lon a dfinit un pas particulier, par dfaut, le pas est 1) - on remonte au dbut du 2 tester la condition id_variable > val_suprieure ?

Remarques :
Il est possible que laction ne soit jamais excute. Il est cependant possible davoir un intervalle invers condition davoir un pas ngatif. IMPORTANT : Il est absolument interdit de modifier <id_variable>, <val_infrieure>, <val_suprieure>, <val_pas> dans le corps de boucle. Parfois cette structure nest pas prsente dans un langage de programmation, il faut donc retenir que ce nest quun raccourci pour crire des tant que. Utilisation du POUR : On sen sert ds que lon connat au dbut de la boucle le nombre de rptitions effectuer. Dans les cas contraire, on utilisera des TANT QUE ou des REPETER

Structures de donnes : les tableaux :


Exemple de tableau de 5 entiers :
0 1 2 3 4

32

-8

19

-3

T signifie que cest un objet de type tableau. Les numros en indices 0, 1, 2, 3, 4 correspondent aux valeurs colonnes. Le contenu de T : les 5 entiers (dans un certain ordre) La premire valeur est T[0] ou 0 correspond donc lindice de la premire colonne. Dclaration dun tableau dans un algorithme : Ctaille est la constante qui indique le nombre de case du tableau. Const Ctaille=25 Var Tab : tableau [Ctaille] dentiers Pour I de 0 Ctaille 1 Faire Lire tab [I] {Cet algorithme permettra notamment de rentrer les variables dans le tableau.} Pour crer une fonction tableau : Fonction Mintableau (T :tableau dentiers, N entier) : entier {pour crer la fonction Mintableau qui retournera par exemple le minimum dun tableau, on dsigne le tableau par T et N par le nombre de colonnes, ainsi, mme si lon a dclar auparavant un tableau 50 colonnes et que lon nutilise en fait que 30 colonnes, N=30 permet de dfinir lordinateur le nombre de colonnes rellement utilises et limiter la dure du traitement. N est donc indpendant de Ctaille} Exemple : dterminer si un tableau est tri : 5 8 8 12 15 3 2 1

Le nombre nest pas toujours fix donc pas de structure POUR.

PREMIRE PROPOSITION
Fonction : est tri (T : Tableau [ ] dentiers, N : entier) : boolen Var : I : entier Dbut : I <= 0 Tant que (I < N-1) et (T[I] T[I+1]) faire I<=I+1 Retourner (I=N-1) Fin

M.Rezig

10

Cours et Exercices Corrigs en Algorithmes

Dpartement de Gestion

Remarque :
Il y a un problme qaudn I atteint le niveau N-1 : on value la condition I<N-1 et (T[I] T[I+1]) or la case T[I+1] nexiste pas. Or la premire partie (I<N-1) renvoie faux : mais certains langages value quand mme la deuxime condition (ce nest pas le cas du C++) : ce langage nest pas universel, donc on ne peut pas lappliquer en algorithmique.

DEUXIME PROPOSITION :
On utilise une variable boolenne : Fonction : Est tri Var : I entier Tri : boolen Dbut I<=0 tri<=vrai Tant que (I<N-1) et tri Faire Si T[I] T[I+1] alors I<=I+1 Sinon tri<=faux Retourner tri Fin

M.Rezig

11

Cours et Exercices Corrigs en Algorithmes

Dpartement de Gestion

Exercices Simples
Exercice 1 : Ecrire un algorithme dune action qui change deux variables A et B B A Action : Echange Var : A, B, C : rels Dbut : Ecrire ( Saisissez deux variables ) Lire (A, B) C <= A A <= B B <= C Ecrire ( les valeurs de , A, et de , B, ont t changes ) Fin Exercice 2 : Ecrire une fonction qui donne les carr dun rel Fonction : carr (x :rel) :rel Var : x_au_carr Dbut x_au_carr <= x*x retourner x_au_carr fin Remarques : Dans une fonction, la seule variable qui est dfinie est celle du rsultat, les autres sont dfinies dans la fonction mre, et apparaissent ici en temps quentres. Dans une fonction, ne pas oublier de retourner le rsultat.

exercice en utilisant les structures SIALORSSINON et SELONQUE Exercice 3 : Ecrire une action qui fournit les flicitations ou lajournement dun tudiant suivant sa note en utilisant Si-alors-sinon. Action : Jury Var : note : rel Dbut : lire (note)

M.Rezig

12

Cours et Exercices Corrigs en Algorithmes Si note <10 alors crire ( ajourn ) Sinon crire ( reu ) Fin

Dpartement de Gestion

Exercice 4 : Ecrire un programme qui donne la valeur absolue de 2 rels : Action : Valeur_absolue Var : a, b : rels Dbut : Ecrire ( saisissez 2 rels ) Lire (A, B) Ecrire les valeurs absolues de A et de B sont : ) Si A<0 alors crire (-A) Sinon crire (A) Ecrire ( et ) Si B<0 alors crire (-A) Sinon crire (A) Fin Remarque : on peut aller plus vite en crant une fonction valeur absolue et en faisant appel cette fonction dans une action : Fonction : valAbs (x :rel) :rel Var : absx : rel Dbut : si x <0 alors absx <= -x Sinon absx <= x Retourner absx Fin Et Action : Valeur_absolue2 Var : A, B rels Dbut : Ecrire ( saisissez 2 rels ) Lire (A, B) Ecrire ( les valeurs de A et B sont : , valAbs(A), et , valAbs(B)) Ecrire 5 : Faire un programme qui donne le volume dun cylindre en faisant appel une fonction aire dun cercle. Fonction : aire_cercle (rayon :rel) :rel Var : Aire : rel Const : PI=3.14 Dbut : Aire <= PI*rayon*rayon Retourner (Aire) Fin Fonction : volume_cercle (hauteur, rayon :rels) :rel Var : volume : rel Dbut : Volume <=aire_cercle (rayon)*hauteur Retourner volume Fin Exercice 6 : Ecrire un algorithme permettant de rsoudre une quation du premier degr Action : premierdegre

M.Rezig

13

Cours et Exercices Corrigs en Algorithmes Var : a, b, x rels Dbut : Ecrire ( saisissez les valeurs a et b de lquation ax+b=0 : ) Lire (a, b) Si a = 0 alors crire ( pas de solution ) Sinon crire ( la solution est x= , -b/a) Fin

Dpartement de Gestion

Exercice 7 : Ecrire un algorithme permettant de rsoudre une quation du second degr en utilisant des si alors.. Action : seconddegr Var : a, b, c, delta Dbut : Ecrire ( saisissez les valeurs a, b et c de lquation ax+bx+c=0 : ) Lire (a, b, c) Si a=0 alors crire ( quation du premier degr ) Sinon delta<=b-4*a*c Dbut Si delta>0 alors crire ( les solutions de lquation sont , (-b-sqrt(delta))/(2*a), et , (b+sqrt(delta))/(2*a)) Sinon Dbut Si d=0 alors crire ( -b/(2a)) Sinon crire ( pas de solutions relles ) Fin Fin Fin Ecrire le mme algorithme avec des selon-que : Action : seconddegr Var : a, b, c, delta Dbut : Ecrire (saisissez les valeurs de a, b et c de lquation ax+bx+c) Lire (a, b, c) Si a=0 alors crire ( rsoudre permier degr ) Sinon dbut Delta <= b-4*a*c Selon que Delta > 0 : crire ((-b-sqrt(delta))/(2*a), (-b+sqrt(delta))/(2*a)) Delta = 0 : crire (( -b/(2a)) Sinon crire ( pas de solution relle ) Fin selon Fin Exercice 8 Ecrire un algorithme qui donne la dure de vol en heure minute connaissant lheure de dpart et lheure darrive. 1) on considre que le dpart et larrive ont lieu mme jour 2) idem mais sans faire les conversions en minutes 3) on suppose que la dure de vol est infrieure 24 heures mais que larrive peut avoir lieu le lendemain. . 1-- 2- .3- 42 1) Action : DureVol1 Var : h1, h2, m1, m2, hr, mr : entiers Dbut : Ecrire ( entrer horaire de dpart et darrive ) Lire (h1, m1, h2, m2) mr <= [h2*60+m2] [h1*60+m1] hr <= mr/60 mr <= mr%60

M.Rezig

14

Cours et Exercices Corrigs en Algorithmes Ecrire ( dure de vol : , hr, mr) Fin Remarque : lopration % (modulo) permet de calculer le reste de la division entire. 2) Action : DureVol2 Var : h1, h2, hr, m1, m2, mr : entiers Dbut : Ecrire ( entrer horaire de dpart et darrive ) Lire (h1, m1, h2, m2) Si m2>m1 alors hr <= h2-h1 et mr <= m2-m1 Ecrire (hr, mr) Sinon hr <= h2-h1-1 et mr <= m2+60-m1 Ecrire (hr, mr) Fin 3) Action : DureVol3 Var : h1, h2, m1, m2, hr, mr : entiers Dbut : Ecrire ( entrer horaire de dpart et darrive ) Lire (h1, m1, h2, m2) Si h2>h1 alors Si m2>m1 alors hr <= h2-h1 et mr <= m2-m1 Ecrire (hr, mr) Sinon hr <= h2-h1-1 et mr <= m2+60-m1 Ecrire (hr, mr) Sinon Si m2>m1 alors hr <= h2-h1+24 et mr <= m2-m1 Ecrire (hr, mr) Sinon hr <= h2-h1+24-1 et mr <= m2+60-m1 Ecrire (hr, mr) Fin

Dpartement de Gestion

Exercice 9 1) Ecrire une fonction max3 qui retourne le maximum de trois entiers 2) Ecrire une fonction min3 qui retourne le minimum de trois entiers 3) Ecrire une fonction max2 qui retourne le maximum de deux entiers 4) Ecrire une fonction max3 qui retourne le maximum de trois entiers en faisant appel max2 1) Fonction : max3(a, b, c : entier) : entier : Var : max3 : entier Dbut : Si a>b alors Si a>c alors max3 <= a Sinon max3 <= c Sinon Si c>b alors max3 <= c Sinon max3 <= b Retourner (max3) Fin 2) Fonction : min3(a, b, c : entier ) : entier : Var min3 : entier Dbut Retourner (max3(-a, -b, -c))

M.Rezig

15

Cours et Exercices Corrigs en Algorithmes Fin 3) Fonction : max2 (a, b : entier) : entier Var : max2 : entier Dbut : Si a<b alors max2 <= b Sinon max2 <= a Retourner (max2) Fin 4) Fonction : max3 (a, b, c : entier) : entier : Var : max3 : entier Dbut : max3 <= max2 [max2 (a, b), c) Retourner (max3) Fin

Dpartement de Gestion

Exercice 10 Ecrire avec des Si Alors Sinon une action permettant la saisie dune note n (0 n 20) et qui affiche la mention (n 16 : Trs Bien, n 14 : Bien, n 12 : Assez Bien, n 10 : Passable, n 10 : Ajourn) . Action : Mention Var Note : rel Dbut : Ecrire ( saisissez une note ) Lire (Note) Si Note 16 alors crire ( TB ) Sinon Si Note 14 alors crire ( B ) Sinon Si Note 12 alors crire ( AB ) Sinon Si Note 10 alors crire ( Passable ) Sinon crire ( ajourn ) Fin Alternative : crire le mme Algorithme avec des Selon Que : Action : Note Var : Note : rel Selon que Note 16 crire ( TB ) Note 14 crire ( B ) Note 12 crire ( AB ) Note 10 crire ( Passable ) Sinon crire ( ajourn ) Exercice 11 Soit lalgorithme suivant : Action : Permis_voiture Var : permis, voiture : boolen Dbut : Ecrire ( avez-vous le permis ? (0/1) ) Lire (permis) Ecrire ( avez vous une voiture ? (0/1) ) Lire (voiture) Si non permis ou voiture alors Si voiture alors crire ( conduisez moi la gare ) Sinon crire ( jai une voiture pas chre ) Sinon Si voiture alors crire ( vous tes hors la loi ) Sinon crire ( vive le vlo ) fin

M.Rezig

16

Cours et Exercices Corrigs en Algorithmes 1) 2) 3) 4) Ecrire larbre des conditionnelles Corriger les tests pour que tous les cas soient couvert de manire cohrente Faites correspondre les actions et les tests correctement Si possible, crire cet algorithme avec des selon que. Permis Vive le vlo Voiture pas chre voiture Conduisez moi la gare Hors la loi

Dpartement de Gestion

Permis et voiture Gare Conduisez moi la gare

Ni permis ni voiture Voiture pas chre Vive le vlo

En clair, selon lalgorithme propos : si lon a le permis et la voiture on peut amener quelquun la gare ; si lon a que le permis on dit vive le vlo, si lon na que la voiture on conduit aussi la gare, enfin si lon a ni permis ni voiture alors on achte une voiture pas chre. Le cas hors la loi nest pas voqu et les correspondance sont inexactes. Il faut videmment avoir : - permis et voiture : conduire la gare - permis : jai une voiture pas chre - voiture : vous tes hors la loi - ni voiture, ni permis : vive le vlo Correction de lalgorithme propos : Action : Permis_voiture Var : permis, voiture : boolen Dbut : Ecrire ( avez-vous le permis ? (0/1) ) Lire (permis) Ecrire ( avez vous une voiture ? (0/1) ) Lire (voiture) Si permis ou voiture alors Si voiture alors crire ( conduisez moi la gare ) Sinon crire ( jai une voiture pas chre ) Sinon Si voiture alors crire ( vous tes hors la loi ) Sinon crire ( vive le vlo ) On peut effectivement crire cet algorithme avec des selon-que : Action : permis_voiture Var : permis voiture : rel Dbut : Ecrire ( avez-vous le permis ? (0/1) ) Lire (permis) Ecrire ( avez vous une voiture ? (0/1) ) Lire (voiture) Selon que : Permis et voiture : crire ( conduisez moi la gare ) Permis et non voiture : crire ( jai une voiture pas chre ) Non permis et voiture : ( vous tes hors la loi ) Non permis et non voiture : ( vive le vlo ) Fin Exercice 12 Ecrire un Algorithme calculatrice permettant la saisie de deux entiers et une opration boolen- ( +, - , / , x ) et affichant le rsultat. Donner avant cela les spcifications, la solution en langage naturel, les structures de donnes. . Spcifications : Donnes : 2 oprandes et un oprateur Rsultat : rsultat de lopration choisie Solution en langage naturel : Saisie des donnes, envisager tous les cas : +, - , x, /. Attention la division par zro qui est impossible Structure de donnes : 2 oprandes : des entiers Un oprateur boolen : +, -, * , /

M.Rezig

17

Cours et Exercices Corrigs en Algorithmes Algorithme : Action : calcul Var : a, b : rel op : boolen Dbut Ecrire ( saisissez le premier entier ) Lire (a) Ecrire ( saisissez loprateur ) Lire (op) Ecrire ( saisissez la deuxime variable ) Lire (b) Selon que : Op = + : Ecrire (a+b) Op = * : Ecrire (a*b) Op = / : Si b= 0 alors crire ( division impossible ) Sinon crire (a/b) Op = - : Ecrire (a-b) Fin selon Fin

Dpartement de Gestion

Exercices en utilisant les structures rptitives TANT QUE et REPETER JUSQU'A et POUR
Exercice 13 Ecrire le Algorithme qui affiche la somme dune suite dentiers saisie par lutilisateur se terminant par zro. Exemple : lutilisateur entre 1, puis 5, puis 2, puis 0 : affiche : 8 1) donner les spcifications 2) donner la solution en langage naturel 3) indiquer les structures de donnes 4) faites lalgorithme Spcifications : - donnes : suite de nombre entiers se terminant par zro - rsultat : la somme de ces entiers Solution en langage naturel : tant que lentier saisi nest pas zro, lajouter la somme partielle et saisir lentier suivant. Structure de donnes : - entier : entier courant (saisi) - entier : somme partielle Algorithme : Action : Somme Suite Var : a, s : entiers Dbut s<=0 Lire (a) Tant que a 0 faire Dbut s<=s+a Lire (a) Fin Ecrire (s) Fin

Attention : dans une structure tant que ne pas oublier dinitialiser!!!

Exercice 14 Ecrire un algorithme qui affiche la moyenne dune suite dentiers se terminant par zro (le zro nentrant pas en compte dans la moyenne : il est juste la pour indiquer la fin de saisie) 1) donner les spcifications 2) donner la solution en langage naturel 3) indiquer les structures de donnes

M.Rezig

18

Cours et Exercices Corrigs en Algorithmes 4) faites lalgorithme Spcification : - donnes : suite dentier se terminant par zro - rsultat : la moyenne de ces entiers (zro exclu)

Dpartement de Gestion

Solution en langage naturel : Tant que lentier saisi diffrent de 0 alors ajouter lentier aux entiers prcdents et faire la moyenne (cest dire diviser par le nombre dentiers Structures de donnes : - entier : entier saisi - entier : rsultat moyenne Algorithme : Action : Moyenne Var : n, moy, s : entiers Dbut : moy<=0 s<=0 Lire (n) Tant que n 0 faire Dbut Moy <= moy*s+n)/(s+1) s<=s+1 lire (n) fin Ecrire (moy) Fin Exercice 15 Ecrire un algorithme permettant la saisie dune suite dentiers se terminant par zro et vrifier si cette suite contient deux entiers conscutifs gaux en utilisant les structures tant que. 1) donner les spcifications 2) donner la solution en langage naturel 3) indiquer les structures de donnes 4) faites lalgorithme Spcifications : - donnes : suite dentier se terminant par zro - rsultat : vrai si deux entiers conscutifs, faux sinon. Solution en langage naturel : comparer lentier courant et le prcdent. Et tant que ils sont diffrents, on continu la lecture et tant que lentier courant est diffrent de zro. Structures de donnes : - entier : nombre courant - entier : nombre prcdent Algorithme : Action : Entiers conscutifs Var : nc, np : entier {on dsignera par nc le nombre courant et np le nombre prcdent} Dbut Lire (nc) np<=nc-1 {pour tre sur que le nombre courant ne sera pas le mme que le nombre prcdent ds le dpart on affecte la valeur nc1 au nombre prcdent. On aurait tout aussi bien pu lui donner la valeur zro) Tant que nc 0 et np nc faire Dbut np<=nc lire (nc) fin Si nc 0 alors crire ( oui )

M.Rezig

19

Cours et Exercices Corrigs en Algorithmes Sinon crire ( non ) Fin Refaire le mme algorithme en utilisant une structure rpter jusqu' Action : Entiers conscutifs Var : nc, np : entiers Dbut Lire (nc) Si nc 0 alors Rpter Dbut np <= nc lire (nc) jusqu' (nc=np ou nc=0) Si nc=0 alors crire ( oui ) Sinon crire ( non ) Fin Exercice 16 Ecrire un algorithme qui affiche le maximum dune suite se terminant par zro 1) donner les spcifications 2) donner la solution en langage naturel 3) indiquer les structures de donnes 4) faites lalgorithme Spcifications : - donnes : une suite dentiers se terminant par zro - rsultat : un entier : le maximum de cette suite

Dpartement de Gestion

Solution en langage naturel : comparer lentier courant avec le maximum et tant que nc<max on continue, sinon on affiche la rsultat et on continue, et tant que nc 0 Structures de donnes - n : entier courant (saisi) - max : entier max de la suite Algorithme : Action : max suite Var : n, max : entiers Dbut Lire (n) Max<=n Tant que n 0 faire Dbut Lire (n) Si max<n alors max<=n Fin Ecrire (max) Fin Exercice 17 Ecrire un programme mettant en uvre le jeu suivant : Le premier utilisateur saisi un entier que le second doit deviner. Pour cela, il a le droit autant de tentatives quil souhaite. A chaque chec, le programme lui indique si lentier cherch est plus grand ou plus petit que sa proposition. Un score indiquant le nombre de coups jous est mis jour et affich lorsque lentier est trouv. 1) donner les spcifications 2) donner la solution en langage naturel 3) indiquer les structures de donnes 4) faites lalgorithme Spcifications :

M.Rezig

20

Cours et Exercices Corrigs en Algorithmes - donnes : nombre entier - rsultat : nombre de tentatives

Dpartement de Gestion

Solution en langage naturel : saisir un nombre entier par le premier joueur. Tant que le joueur 2 n saisie, dire si n est > ou < nombre cherch, incrmenter de 1 et continuer. Quand le rsultat est trouv, afficher le nombre de tentatives. Structures de donnes : - a : nombre saisi par lutilisateur 1 - n : nombre saisi par lutilisateur 2 - t : tentatives Algorithme : Action : devinette Var : a, n, t : entiers Dbut : Lire (a) Lire (n) t=0 Tant que a n faire Dbut Si n>a alors crire ( nombre cherch plus petit ) Sinon crire ( nombre cherch plus grand ) t<=t+1 lire (n) fin crire (t+1) fin Exercice 18 Ecrire un algorithme permettant de calculer le PGCD de deux nombres en utilisant lastuce suivante : soustraite le plus petit des deux entiers du plus grand jusqu' ce quils soient gaux Ecrire le mme programme en utilisant lalgorithme dEuclide : dune part en utilisant uniquement les structures TANT QUE, dautre part en utilisant uniquement les structures REPETER JUSQU'A. Action : PGCD Var : a, b entiers Lire (a, b) Dbut a = ValAbs (a) b = ValAbs (b) Rpter Selon que a>b a<=a-b a<b b<=b-a jusqua a=b crire (a) Fin Mme programme avec Euclide et des TANT QUE : Action : PGCD Var : a, b, r entiers Lire (a, b) r<=a%b tant que r 0 faire dbut a<=b b<=r r<=a%b fin crire (b) fin

M.Rezig

21

Cours et Exercices Corrigs en Algorithmes Mme programme avec Euclide et des REPETER JUSQU'A : Action : PGCD Var : a, b, r entiers Lire (a, b) Rpter r<=a%b a<=b b<=r jusqu' r=0 crire (b) fin

Dpartement de Gestion

Exercice 19 Ecrire avec la commande POUR un algorithme qui permet de faire la somme dune suite de nombre entre par lutilisateur. Faire la mme chose en comptant par pas de 1. Action :somme_nombre Var : k, nb, n, somme : entier Dbut : Somme <= 0 Ecrire ( combien voulez-vous entrer de nombres ? ) Lire (nb) Pour k de 1 nb faire Dbut Lire (n) Somme<=somme + n Fin Ecrire (somme) Fin Mme programme par pas de 1 : Action : somme_entier Var : k, nb, n, somme : entiers Dbut : Somme<=0 Ecrire ( combien voulez-vous entrer de nombres ? Lire (nb) Pour k de nb 1 par pas de 1 faire Dbut Lire (n) Somme<=somme + n Fin Ecrire (somme) Fin Exercice 20 Traduire le POUR de lalgorithme suivant en REPETER JUSQU'A : Action : bidon Var : k, nb : entiers Dbut Lire (nb) Pour k de 1 nb faire Ecrire (k) Fin Action : Bidon Var : k, nb : entier Dbut Lire (nb) K<=1 Si nb>0 alors Rpter crire (k) K<=k+1

M.Rezig

22

Cours et Exercices Corrigs en Algorithmes Jusqu k>nb Fin Exercice 21 Ecrire une fonction qui fait la somme des entiers compris dans un intervalle. Fonction : intervalle (a, b ; entiers) : entier Var : k, somme : entier Dbut Somme <= 0 Pour k de a b faire Somme<=somme + k Retourner (somme) Fin Exercice 22 Ecrire une fonction multiplication de a et b par addition successives. Fonction : multiplication (a, b : entiers) : entier Var : k, produit : entiers Dbut produit<=0 Pour k de 1 a faire Produit<=produit + b Retourner (produit) Fin

Dpartement de Gestion

exercices sur les Tableaux


Exercice 23 Ecrire une action qui permette la saisie dun tableau croissant : si T[k]<T[k+1] on enregistre, si T[k]>T[k+1] on redemande la saisie dun nombre plus grand Const : MAX=100 Ttype : Ttab=tableau [max]dentier Action : saisie_tableau_croissant Var : tab : Ttab, i : entier Dbut Lire (Tab[0]) Pour i de 1 MAX-1 faire Rpter lire (tab[i]) jusqu' tab[i] tab[i-1] Fin Exercice 24 Ecrire une fonction retournant le maximum dun tableau de taille n. Faire le mme algorithme mais qui ne retourne que lindice de la case du tableau contenant le maximum du tableau. Fonction : maximum (tab : Tableau dentier n :entier) : entier Var : max, i : entiers Dbut Max <= tab[0] Pour i de 1 n-1 faire Si tab[i]>max alors max<=tab[i] Retourner (max) Fin

M.Rezig

23

Cours et Exercices Corrigs en Algorithmes Fonction : maximum (tab : Tableau dentier n :entier) : entier Var : indice, i, max : entiers Dbut Max<=tab[0] Indice <=0 Pour i de 1 n-1 faire Si tab[i]>max alors max<=tab[i] indice<=i Retourner (indice) Fin

Dpartement de Gestion

Exercices gnraux sur les actions paramtres

Exercice 25 Ecrire une fonction Afficher qui affiche a lcran le contenu dun tableau. Ecrire aussi laction principale qui permettra de comprendre comment fonctionne cette fonction afficher. {Ne pas oublier dindiquer les paramtres du tableau !} Const : MAX : entier=100 Type : Ttab : Tableau [MAX] dentier Fonction Afficher (tab : tableau dentiers, n entiers) Var : i entier Dbut : Pour i de 0 n-1 Ecrire (tab[i], ) Fin Action principale Var t1 t2 : Ttab Dbut T1[0]<=1 T1[1]<=3 T2[0]<=4 T2[1]<=5 T2[2]<=7 Afficher (T1, 2) Afficher (T2, 3) Fin Rsultat lcran : 13 457 Exercice 26 Ecrire une fonction qui permet la saisie dun tableau. Faite aussi laction principale qui permettra daccder a cette fonction saisie mais aussi dafficher dans un second temps le rsultat Fonction : saisie (Stab : tableau dentiers, N :entier) Var : i entier Dbut : Pour i de 0 n-1 faire Lire (tab[i]) Fin Action principale Var : tabl : Ttab Dbut

M.Rezig

24

Cours et Exercices Corrigs en Algorithmes Saisie (toto, 10) Afficher (toto, 10) Fin Ou afficher est la fonction de lexercice 1.

Dpartement de Gestion

Exercice 27 Ecrire une fonction qui calcule le nombre dinversion dun tableau de taille n (cest dire i<j et tab[i]>tab[j] pour tout i et j.) Fonction inversion (tab : tableau dentiers, N entier) Var : j, C, i entiers Dbut C<=0 Pour i de 0 n-2 faire Dbut Pour j de i+1 n-1 faire Si tab[i]>tab[j] alors C<=C+1 Fin Retourner ( C ) Fin Exercice 28 Ecrire une action qui affiche les n premiers lments de la suite dfinie par u0=1 et un+1=somme de k=0 jusqu' n de (uk*un-k) Aide : stocker les lments dans un tableau toto avec toto[0]=1. Puis on utilise une boucle imbrique pour calculer toto[n+1]=somme k=0 k=n de toto[k]*toto[n-k]. Action Suite (E : d :entier) Var : toto : Ttab, i, k : entiers Dbut : Toto[0]<=1 Pour I de 1 d-1 faire Toto[i]<=0 Pour k de 0 n-1 faire Toto[i]<=toto[i]+toto[k]+toto[i-1-k] Afficher (toto, d) Fin Exercice 29 Voyons maintenant quelques exercices rudimentaires de changements dans un tableau Ecrire une action permettant de remplacer toutes les occurrences de x par y dans un tableau de taille n. Ecrire un algorithme qui change les valeurs des cases i et j dans un tableau. Ecrire un programme qui inverse un tableau. (exemple : 1 5 6 7 3 devient 3 7 6 5 1) Action : Remplacer (E : x : entier, E : y : entier, ES tab : tableau dentiers, E : n : entier) Var : i :entier Dbut Pour i de 0 n-1 faire Si tab[i]=x alors tab[i]<=y Fin Action : Echanger (E : i : entier, E : j : entier, ES : tab : tableau dentier, E : n :entier) Var : temp Dbut Si i<n ET j<n alors Temp<=tab[i] Tab[I]<=tab[j] Tab[j]<=temp Fin

M.Rezig

25

Cours et Exercices Corrigs en Algorithmes Action : inverser (ES : tab : tableau dentiers, E : n : entier) Var : i :entier Dbut Pour i de 0 n/2 1 faire Echanger (i, n-1-in tab, n) {ou Echanger est la deuxime action de cet exercice} Fin

Dpartement de Gestion

Tableaux tris et dcoupages fonctionnels


Exercice 30 Le but de lexercice est de crer une action de saisie de tableau, qui trie, au fur et mesure des entres, les valeurs par ordre croissant dans le tableau. Exemple : Soit le tableau suivant :
0 1 2 3

2 5 7 9 Comment insrer 6 dans le tableau tri (en supposant quil ny a pas de doublon dans le tableau) ? - je cherche la bonne position (ici : la case dindice 2) - dcalage droite si ncessaire :
0 1 2 3 4

2 0

5
1

7 7 9 Insertion de llment
2 3 4

On a donc ici le dcoupage fonctionnel : On va donc crer une fonction IndiceEltSup qui cherche la bonne position, une action Insrer qui inclue le nombre entr dans la bonne case du tableau, et une action DcalageDroite qui dcale comme dans lexemple toutes les cases dun rang vers la droite si ncessaire. Const MAX=100 Type TtabVar = entit (tab : tableau[MAX] dentiers, taille : entier) Fonction IndiceEltSup (tvt : TtabVar, entier, n : entier) : entier Var : i : entier Dbut Tant que (i tvt.taille ET tvt.tab[i]<n) i<=i+1 retourner (i) Fin Action DcalageDroite (ES : tvt : TtabVar, E : i : entier) Var : j : entier Dbut Pour j de tvt.taille 1 i par pas de 1 faire Tvt.tab[j+1]<=tvt.tab[j] Tvt.taille++ Fin Action Insrer (ES : tvt : TtabVar, E : i : entier, E : i : entier) Dbut DcalageDroite (tvt, i) Tvt.tab[i]<=i Fin Action SaisieTri (S : tvt : TtabVar) Var : rep : chane, nb : entier, i : entier Dbut

M.Rezig

26

Cours et Exercices Corrigs en Algorithmes Tvt.taille<=0 Rpter Ecrire (Rentrer encore un entier ?) Lire (rep) Si rep non alors Lire (nb) I<=IndiceEltSup(tvt, nb) Si non(i<tvt.taille ET tvt.tab[i]=nb) Insrer (tvt, i, nb) Jusqu rep= non ou tvt.taille=MAX Fin

Dpartement de Gestion

Exercice 31 Faire un algorithme qui fait une recherche dichotomique dans un tableau tri. On pourra utiliser les fonctions de lexercice prcdent. Nous allons crer une action qui dfinie la zone de recherche, puis laction RechercheDicho qui oprera la recherche dichotomique dans lintervalle dfinie par la zone de recherche. Action ZoneRecherche (E : tvt : TtabVar, E : n : entier, ES : Binf : entier, ES : Bsup : entier) Var : milieu : entier Dbut Milieu <= (Binf + Bsup)/2 Si tvt.tab[milieu]=n alors Dbut Binf<=milieu Bsup<=milieu Fin Sinon Si tvt.tab[milieu]>n alors Bsup<=milieu 1 Sinon Binf<=milieu+1 Fin Fonction RechercheDicho (E : tvt : TtabVar, E : n : entier) Var : Binf, Bsup : entiers Dbut Binf<=0 Bsup<=tvt.taille 1 Tant que Bsup>Binf faire ZoneRecherche (tvt, n, Binf, Bsup) Si Bsup=Binf alors Retourner (Binf) Sinon retourner ( -1) Exercice 32 Faire un algorithme qui supprime une valeur dans un tableau tri. On pourra utiliser des fonctions des deux exercices prcdents. Le but est dutiliser la recherche dichotomique de lexercice prcdent pour trouver dans le tableau lindice de la valeur que lon veut supprimer puis faire un dcalage gauche pour remettre en place les valeurs (sans quil y ait de vide dans une case du tableau) Action Supprimer (ES : tvt : TtabVar, E : n : entier) Var : i : entier Dbut i<=RechercheDicho(tvt, n) Si i -1 alors DecalageGauche (tvt, i) Fin

M.Rezig

27

Cours et Exercices Corrigs en Algorithmes Action DecalageGauche (Es : tvt : TtabVar, E : i : entier) Var : j: entier Dbut Pour j de i+1 tvt.taille 1 faire Tvt.tab[j 1] <= tvt.tab[j] Tvt.taille <= tvt.taille 1 Fin

Dpartement de Gestion

M.Rezig

28