Sie sind auf Seite 1von 43

Caroline DETENTE

Notes de cours : algorithmique


Dapr` s le cours de J-M. Adam e Master 2 ICA IHS

2006-2007

Table des mati` res e


1 Notion dalgorithmique 1.1 D nitions . . . . . . . . . . . . . . . . . . . . . . e 1.2 Construction dun algorithme . . . . . . . . . . . 1.2.1 D nition plus avanc e dun algorithme e e 1.2.2 Etapes de construction dun algorithme . 1.2.3 Exemple JHMS . . . . . . . . . . . . . . . . 1.3 Types de base de la notation algorithmique . . . 1.3.1 Entiers relatifs Z . . . . . . . . . . . . . . 1.3.2 R els R . . . . . . . . . . . . . . . . . . . . e 1.3.3 Bool ens B  tvrai, f auxu . . . . . . . . . e 1.3.4 Caract` res C . . . . . . . . . . . . . . . . . e 1.3.5 Chanes de caract` res . . . . . . . . . . . e 2 2 3 3 3 4 5 5 6 7 8 9 11 11 11 11 12 12 12 12 14 14 14 15 15 16 17 17 19 19 22 22 24 26

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Fonctions 2.1 D nition de fonctions math matiques associ es . . . . . . . . e e e 2.2 Fonctions pr d nies . . . . . . . . . . . . . . . . . . . . . . . . e e e 2.2.1 d b() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 n() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 pre() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4 der() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Exemple dalgorithme qui manipule des chanes de caract` res e

Analyse par cas 3.1 Notation algorithmique des cas possibles et des actions associ es e 3.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Solution 1 : examen de tous les r sultats possibles . . . . . e 3.2.2 Solution 2 : analyse par cas embot s . . . . . . . . . . . . . e 3.2.3 Solution 3 : proc der par etapes . . . . . . . . . . . . . . . . e 3.2.4 S rialisation des analyses par cas . . . . . . . . . . . . . . . e 3.2.5 Notation de lanalyse par cas . . . . . . . . . . . . . . . . . Param trisation des algorithmes e 4.1 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Exemple : ecrire une fonction qui calcule la somme de deux dures e 4.3 D nition de nouveaux types . . . . . . . . . . . . . . . . . . e 4.4 Description des etats dun syst` me : actions nomm es . . . . e e 4.5 Op rations en m moire lors du passage de param` tres . . . e e e 0 . . . . . . . . . . . . . . .

4.6 4.7

Exemples avec la machine-tracs e Fonctions tabul es . . . . . . e 4.7.1 D nitions . . . . . . . e 4.7.2 Exemples . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

27 28 28 29 32 32 32 32 33 33 34 34 34 35 35 37 38 38 41

Traitement s quentiel e 5.1 Introduction : notion de s quence . . . . . . . . . . . . . e 5.2 Formes de composition it rative . . . . . . . . . . . . . e e e 5.2.1 R p ter n fois . . . . . . . . . . . . . . . . . . . . 5.2.2 Tantque . . . . . . . . . . . . . . . . . . . . . . . 5.2.3 R p ter jusqu` . . . . . . . . . . . . . . . . . . . e e a 5.2.4 Attention ! . . . . . . . . . . . . . . . . . . . . . . 5.3 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 Fichiers s quentiels . . . . . . . . . . . . . . . . . . . . . e 5.5 Sch mas de parcours dune s quence . . . . . . . . . . . e e 5.5.1 Exemples de parcours . . . . . . . . . . . . . . . . . 5.5.2 G n ralisation : sch mas de parcours . . . . . . e e e 5.6 Sch mas de recherche s quentielle . . . . . . . . . . . . e e 5.7 Mise en oeuvre des sch mas . . . . . . . . . . . . . . . . e 5.8 R capitulatif : les diverses repr sentations de s quence e e e

Chapitre 1 Notion dalgorithmique


1.1 D nitions e

Action : Ev` nement produit par un acteur/ex cutant (personne, machine, animal...) e e Prend toujours place dans une p riode nie e Produit un r sultat pr vu a lavance e e ` En informatique : Acteur = machine le plus souvent D crit les actions que la machine fait pour lhomme e Indicateur : Est une information On lui donne un nom, et une valeur qui peut changer dans le temps Exemple : le pr sident de la R publique : J.Chirac en ce moment, mais cela peut changer. e e La valeur nest pas forc ment un nombre/une valeur num rique (en informatique, linformation e e est en binaire, mais son interpr tation peut changer) e A un instant T, un indicateur a une certaine valeur Un indicateur a toujours une valeur (qui peut etre ind termin e) e e Syst` me : e Ensemble dindicateurs Etat du syst` me : e Ensemble des valeurs des indicateurs a un instant T ` Eet de laction : 2 etats du syst` me : etat initial et etat nal e Repr sentent respectivement lensemble des valeurs des indicateurs avant et apr` s laction e e action t0 t1 Sp cier une action : e Description des etats initial et nal de laction Algorithmique : 2

Ethymologie : Alkhaouarizmi Suite logique dop rations permettant darriver a un r sultat d termin e e e e ` D crit un comportement en termes dactions r alisables a priori, et dinformations identi es e e e dans un lexique de lagorithmique

1.2
1.2.1

Construction dun algorithme


D nition plus avanc e dun algorithme e e

D couvrir les actions quil faut organiser dans le temps, et choisir la mani` re de les organiser, pour e e obtenir un r sultat escompt par leurs eets cumul s. e e e Etat Initial (EI) etat interm diaire 1 (ei1) etat interm diaire 2 (ei2) Etat Final (EF) e e Exemples dalgorithmes : Traverser une rue Recette de cuisine (EI : ingr dients ; ei1 : p te a cr pes) e a ` e Mode demploi (monter un meuble) Strat gie gagnante pour un jeu simple e Syst` me simple pour r soudre des syst` mes d quations e e e e Exemple de jeu : Une personne dit un nombre entre 0 et 45. En face, en fonction du nombre exprim , 5 personnes d cident sans se concerter de choisir un e e chire entre 0 et 9. Chacune des personnes dit son chire. On fait la somme des chires exprim s : les participants gagnent si ce r sultat correspond au e e nombre donn au d part. e e Rponse 1 : Les 4 premiers disent le mutiple de 4 inf rieur au nombre propos , sachant que ce e e e multiple ne peut etre sup rieur a 36. e ` Le dernier compl` te la somme. e Rponse 2 : On divise le nombre par 5. Les 4 premiers annoncent ce nombre, et le 5e compl` te, e e voire le 4e si la somme nest pas compl` te. Il est aussi possible de r partir le reste sur lensemble e e des 5 personnes. Rponse 3 : On divise le nombre par 9. Un nombre de personnes correspondant au quotient de e cette op ration prononce 9. Le suivant annonce le reste. Les derniers disent 0. e

1.2.2

Etapes de construction dun algorithme

Conditions de travail du probl` me : e Objets caract risant les informations manipul es e e Op rations e R pertoire dactions dont on dispose e M thode : e e e e D crire une m thode sans ambiguit s Evaluer la m thode d crite (temps dex cution, nombre dop rations, taille, etc.) e e e e 3

R chir aux qualit s/d fauts de la m thode choisie e e e e e Organisation s quentielle dun calcul : e Pr ciser les informations pertinentes pour une mod lisation algorithmique, notamment les e e donn es et r sultats e e Typer ces informations : donner des domaines de valeurs, et recenser dans ces donn es les e op rations pertinentes pour le probl` me e e Formuler les relations qui les caract risent e Trouver la solution algorithmique Lexique dun algorithme : D nition des informations manipul es (indicateurs) e e Aectation : Se dit aussi : ( prend pour valeur ) ( ) Symbole : On evalue la valeur a droite de la ` che, et on laecte (= transf` re) dans lindicateur plac a e e e ` ` gauche de la ` che e Donn es : e Valeurs donn es par lutilisateur : conserv es, et laiss es intactes e e e Op rations dentr es/sorties : e e Lecture de donn es et ecriture de r sultats e e Intervention externe dun utilisateur, pour introduire une donn e e deux op rations : e lire(liste des informations lues) e Lecture de donn es Indicateurs d nis dans le lexique comme des donn es e e Exemple : lire(A,B) Modie (= elabore) les valeurs de A et B, saisies par un op rateur externe qui eectue la saisie e correspondante ecrire(liste des valeurs a ecrire) ` Achage de r sultats e Constantes, expressions, noms dinformations... Exemple : ecrire(Total = , TTL + 3) Evalue lexpression ( TTL + 3 ) lache apr` s la chane de caract` res (( Total = )) ( )et e e Un indicateur na quune seule d nition e On cr e un nouvel indicateur/objet pour un nouveau role e Respecter le role quon a d ni pour un objet : permet d tre coh rent et d viter des erreurs e e e e

1.2.3

Exemple JHMS

Lexique de lalgorithme : ns : entier entre 0 et 999 999 t donne : nombre total de secondes e j : entier 0 t donne : nombre de jours u e h : entier entre 0 et 23 t donne : nombre dheures u e 4

m : entier entre 0 et 59 t donne : nombre de minutes u e s : entier entre 0 et 59 t donne : nombre de secondes u e r1 : entier entre 0 et 86 399 t intermdiaire : ns modulo 86400 e r2 : entier entre 0 et 3599t intermdiaire : r1 modulo 3600 u e Relation entre les donn es et le r sultat : e e n = (86400 * j) + (3600 * h) + 60 * m + s Algorithme principal : t ns = ?, j = ?, h = ?, m = ?, s = ? u lire(ns)

t ns = n, j = ?, h = ?, m = ?, s = ? u j ns mod 86400 r1 ns mod 86400 t ns = n, j = j0, h = ?, m = ?, s = ?, ns = j0 * 86400 + r1 u h r1 div 3600 r2 r1 mod 3600 t ns = n, j = j0, h = h0, m = ?, s = ?, ns = j0 * 86400 + h0 * 3600 + r2 u m r2 div 60 s r2 mod 60 t ns = n, j = j0, h = h0, m = m0, s = s0, ns = j0 * 86400 + h0 * 3600 + m0 * 60 + s u
crire(ns, " = ", j, " jours ", h, " heures ", m, " minutes ", s, " secondes ") e

1.3

Types de base de la notation algorithmique

Produit cart sien (Wikip dia) : ( Le produit cart sien () de deux ensembles X et Y est lensemble de e e ( e tous les couples, dont la premi` re composante appartient a X et la seconde a Y )). e ` `

1.3.1

Entiers relatifs Z

Constantes : 156 -12 1998 Op rations sur les entiers : e + * / 5

div (quotient dune division euclidienne/enti` re) e mod (reste dune division euclidienne/enti` re) e Domaines de d nition et co-domaines : e +-*:ZZZ div mod : Z Z Z / : Z Z R Comparaisons sur les entiers : = Domaines de d nition et co-domaines : e Z Z B  tvrai, f auxu (Note : entiers naturels N = entiers 0)

1.3.2

R els R e

Constantes : 3,14159 -0,01 1.2E5 (= 1,2 * 105 ) Op rations sur les r els : e e + * / Domaines de d nition et co-domaines : e +-*:RRR / : R R R Comparaisons sur les r els : e = Domaines de d nition et co-domaines : e R R B  tvrai, f auxu Fonctions pr d nies : e e pent : d signer la partie enti` re dun r el e e e pdec : d signer la partie d cimale dun r el e e e Exemple : A = -14,372 pdec(A) = 0,372 pent(A) = -14

Domaines de d nition et co-domaines : e pent : R Z pdec : R [0, 1[

1.3.3

Bool ens B  tvrai, f auxu e

Indicateurs qui ne peuvent prendre que deux valeurs. Constantes : vrai faux Op rations 1 : e et (binaire) ou (binaire) non (unaire) Op rations 2 : e et ou : B B B non (unaire) : B B B Comparaisons 1 : = Comparaisons 2 : BBB Exemple dutilisation des boolens : e Lexique : A : boolen e B : boolen e Algorithme : A vrai B non A C A ou B Algorithme 2 : lire(I, J) A (I J) ou B On compare I et J, ce qui donne un bool en, on le compare avec B, ce qui donne un nouveau bool en, e e et on range le r sultat dans A e Tables de v rit : e e A vrai faux non A faux vrai

t t

dfinition prcise de linformation e e dfinition prcise de linformation e e

u u

A vrai vrai faux faux

B vrai faux vrai faux

A ou B vrai vrai vrai faux

A et B vrai faux faux faux

Lecture des tables de v rit : ( si A vaut ..., alors non A vaut... )) e e ( Domaine de d nitions des op rateurs : e e = : R R B Exemple : si on souhaite ecrire la ngation de A ou B : e non(A ou B) = non A et non B non A inverse de A Forme duale dune expression logique : et ou ou et 10 01 Si une expression logique est vraie, la duale est vraie aussi : non (A et B) = non A ou non B non A non B non A et non B non A ou non B non A ou non B faux faux faux faux faux faux vrai faux faux vrai vrai faux faux faux vrai vrai vrai vrai vrai vrai Op rateurs ( et puis ) ( ou alors ) e ( ), ( ) a b a et b a ou b a et puis b V V V V valeur de b V F F V valeur de b F V F V F F F F F F a ou alors b V V valeur de b valeur de b

a et puis b : si a alors b, sinon faux a ou alors b : si a alors vrai, sinon b (( ou alors ) )est la duale de ( et puis ) ( )

1.3.4

Caract` res C e

Ensemble des caract` res (C) : ensemble ni compos de tous les caract` res achables par un e e e ordinateur C = t A, B, ..., Z, a, ..., z, 0, ..., 9, ., ,, !, ... u On les note entre apostrophes e e Lapostrophe correspond a une constante/litt ral de type caract` re ` Les apostrophes permettent d viter les ambiguit s : param` tres formels de fonction, etc. e e e 8

Lexique : e e C : caract`re t dfinition prcise u e B : boolen t B est vrai si C est un A e

Les chires sont repr sent s en machine par leur valeur binaire e e Les caract` res sont repr sent s en machine par un code de caract` re (ASCII le plus souvent, les e e e e 128 caract` res de base non-accentu s. Cest un standard am ricain) e e e Attention si on souhaite passer dun type a lautre (nombre en caract` re vers la valeur enti` re ` e e correspondante) Exemples : lire(C) Il est possible d crire : C 0 (C prend la valeur du caract` re 0) e e Op ration sur les bool ens (avec exemple) : e e Il nexiste pas dop rations sur les caract` res, a part la comparaison a l galit : B (C = A) e e e ` ` e On compare C au caract` re A, si cest vrai : expression vraie, sinon expression fausse e Dans B on m morise le r sultat de la comparaison (B : bool en) e e e

1.3.5

Chanes de caract` res e

Ensemble des chanes de caract` res : C* e Le type chane de caract` res nest pas un type simple, cest une information structur e : cest une e e suite de caract` res e Si on souhaite ecrire une constante chane de caract` res, elle doit etre entre doubles apostrophes e Exemple : BONJOUR Tous les messages ach s aux utilisateurs sont des suites de caract` res e e Attention : ce type est tr` s di rent dun caract` re e e e Lexique : M1 : chane

dfinition prcise e e

Regrouper/concat ner/juxtaposer deux chanes pour en former une plus grande : e On utilise des op rateurs et des fonctions qui permettent de constuire des chanes e Symboles de la concat nation : e Algorithmique : & Java : + Exemples : BON & JOUR a pour r sultat BONJOUR e M1 BON ; M2 JOUR ; M3 M1 & M2 Il ne faut pas confondre la constante chane de caract` res dun indicateur qui contient une valeur e chane de caract` res e Domaine de d nition de lop ration de concat nation : e e e & : C* C* C*

El ment neutre : e Addition : 0 Multiplication : 1 Concat nations de chanes de caract` res : chane vide not e e e e Une chane est une liste de caract` res. Cette liste peut ne comporter aucun caract` re e e Si on concat` ne une chane avec du vide, on obtient la m me chane (vide) e e Exemple : BON & = BON Le caract` re vide nexiste pas (attention : barre espace produit un espace, qui est un code comme e un autre) Exemple dintrt de la chane vide : on a un nombre entier, et on veut construire la C* correspondante. ee On construit la chane caract` re par caract` re, donc on a besoin dune chane vide au d part. e e e Lespace est not : e Comparaison de chanes de caract` res : e = ; : C* C* B Les comparaisons (, etc.) de caract` res ou de chanes de caract` res d pendent de leurs codes e e e respectifs, donc leur emploi est rare et un peu dangeureux Op rations dajout a gauche dun caract` re a une chane (on combine un caract` re et une chane) : e ` e ` e : C C* C (C+ d signe lensemble des chanes non-vides, ie comportant au moins un caract` re) e e Exemple : A BCD = ABCD Exemple : A = A Op rations dajout a droite dun caract` re a une chane (on combine un caract` re et une chane) : e ` e ` e  C* C C Exemple : BCD  A = BCDA Exemple :  A = A ( ( Impossible (math matiquement faux) : (( BCD (car on doit avoir la chane en premier) e A (((

10

Chapitre 2 Fonctions
2.1 D nition de fonctions math matiques associ es e e e

Fonction en math matiques : e Exemple : f pxq  x2 (la courbe de cette fonction est une parabole) x est une variable en math matiques, et x est un param` tre en informatique e e En informatique on utilise des fonctions pour calculer des valeurs particuli` res e La fonction repr sente un calcul e On ne connat pas la donn e a partir de laquelle on va eectuer le calcul, dou le nom x e ` ` On ecrit un algorithme de mani` re g n rale, pour quil puisse sappliquer a toute valeur du e e e ` domaine de d nition de la fonction e Domaines de d nition : e Quelque soit x appartenant au domaine de d nition : dx D, f pxq  x2 1 e Pour lexemple : le domaine de d nition est lensemble des nombres r els e e La fonction poss` de un domaine image : f = D I e Exemple : le domaine image de f pxq  x2 est R [1, +V[ (un carr est toujours positif) e Ces domaines (R et I) sont les types en informatique Il existe des types de base, et on peut aussi construire ses propres types Exemples de domaines de dnition : e pent : R pdec : R Exemples de domaines image : pent : Z (possible davoir des nombres R n gatifs) e pdec : R [0, 1[

2.2
2.2.1

Fonctions pr d nies e e
d b() e

d b() : e C C* 11

On na pas le droit dappliquer cette fonction pour une chane vide d b(x) d signe le d but de la chane x (tous les caract` res de x, sauf le dernier) e e e e Soit x C On peut obtenir une chane vide comme r sultat, dou le co-domaine (domaine image) C* e `

Exemples : db("ABCD") = "ABC" e db("A") = "" e

2.2.2

n()

n() : C+ C* n(x) d signe la n de la chane x (ie tous les caract` res de x, sauf le premier) e e Exemples : fin("ABCD") = "BCD" fin("A") = ""

2.2.3

pre()

pre() : C C pre(x) d signe le premier caract` re de la chane non-vide x e e Exemples : pre("ABCD") = A

2.2.4

der()

der() : C C der(x) d signe le dernier caract` re de la chane non-vide x e e Exemples : der("ABCD") = D Il est impossible dappliquer pre et der a la chane vide : si on na aucun caract` re, il ny a pas de e ` premier caract` re e Donc dans un algorithme, il faut v rier si la valeur est di rente de la chane vide (comparaison) e e avant dappliquer lune de ces deux fonctions

2.3

Exemple dalgorithme qui manipule des chanes de caract` res e

Conjuguer un verbe du premier groupe simple (exemple : chanter) au prsent de lindicatif e

12

Lexique principal de lalgorithme : V : chane t donne : verbe ` conjuguer u e a pps, dps, tps, ppp, dpp, tpp : chanes t rsultats : conjugaison de V aux diffrentes personnes du prsent de lindicatif e e e e radical : chane t intermdiaire : radical de V u Algorithme principal : crire("Verbe ` conjuguer :") e a t V =? u lire(V) t V = verbe ` conjuguer u a radical db(db(V)) e e pps ("je " & radical)  "e" dps ("tu " & radical)  "es" tps ("il ou elle" & radical)  "e" ppp ("nous " & radical)  "ons" dpp ("vous " & radical)  "ez" tpp ("ils ou elles" & radical)  "ent" crire(pps, dps, tps, ppp, dpp, tpp) e Attention aux ( c ) aux ( ge ) et aux valeurs erron es donn es par lutilisateur. ( ), ( ), e e Il faut normalement pr voir les cas. e Autre solution : ... crire(pps ("je " & radical) e ... Autre solution 2 : ... pps ("je ", radical, "e") ... Autre solution 3 : ... pps ("je " & radical, "e") ...

"e")

13

Chapitre 3 Analyse par cas


3.1 Notation algorithmique des cas possibles et des actions associ es e
concerns par les diffrents cas possibles e e 1 2 n

selon liste dindicateurs condition 1 : action condition 2 : action ... condition n : action fselon

3.2

Exemple

Ecrire un algorithme qui ache dans lordre croissant trois entiers donn s e Hypoth` se : on suppose que ces trois entiers sont distincts deux a deux e ` (Il ny a pas de valeurs identiques parmi les trois valeurs a acher) ` Il existe plusieurs solutions pour r soudre cet algorithme e

14

Lexique principal : e a A, B, C : entiers t donnes : valeurs ` afficher en ordre croissant u P, S, T : entiers t rsultats : valeurs ordonnes de A, B, C, de sorte que e e P S T u

3.2.1

Solution 1 : examen de tous les r sultats possibles e


P A A B B C C S B C A C A B T C B C A B A

Tous les cas : ABC ACB BAC BCA CAB CBA

Attention : Il ne faut pas comparer un entier a un bool en e ` Donc pour eectuer les comparaisons successives de A, B et C, evaluer (A B) et (B C) Algorithme principal : lire(A, B, C) (A B) et (B C) : (A C) et (C B) : (B A) et (A C) : (B C) et (C A) : (C A) et (A B) : (C B) et (B A) : crire(P, S, T) e

P P P P P P

A; A; B; B; C; C;

S S S S S S

B; C; A; C; A; B;

T T T T T T

C B C A B A

3.2.2

Solution 2 : analyse par cas embot s e

AB AB e e Et ensuite on essaye de placer C en fonction des deux cas pr c dents Algorithme principal : lire(A, B, C) selon A, B A B selon A, B, C C B : P C; S B; T A (C B) et (C A) : P B ; S C ; T A C A : P B; S A; T C fselon 15

A B selon A, B, C C A : P C; S A; T B (C A) et (C B) : P A ; S C ; T B C B : P A; S B; T C fselon crire(P, S, T) e

3.2.3

Solution 3 : proc der par etapes e

Recopier A, B, C dans P, S, T Placer la plus petite valeur dans P, et ensuite classer les valeurs S et T On proc` de a des echanges de valeurs e ` A a P p B b S s C c T t

Lexique de lalgorithme : A, B, C : entiers t donnes : entiers ` afficher en ordre croisant u e a e P, S, T : entiers t rsultats : valeurs de A, B, C de sorte que P S T u I : entier t intermdiaire : double dune valeur pour faire lchange de deux e e entiers u Algorithme principal : lire(A, B, C) t A = a, B = b, C = c u P A; S B; T C selon P, S, T t P = a, S = b, T = c u (P S) et (P T) : t action vide u (S P) et (S T) : I P ; P S ; S I (T P) et (T S) : I P ; P T ; T I finselon t P = min(a, b, c), les deux autres valeurs sont dans S et T si S T alors I S ; S T ; T I finsi t P S T u crire(P, S, T) e Echange des deux valeurs P et S : t P = a, S = b, I = ? u I P t P = a, S = b, I = a u P S t P = b, S = b, I = a u S I t P = b, S = a, I = a u 16

3.2.4

S rialisation des analyses par cas e

Algorithme principal : lire(A, B, C) P A; S B; T C t A = a, B = c, P = a, S = b, T = c u si P S alors I P ; P S ; S I finsi t P = min(a, b), S = max(a, b) T = c u si S T alors I S ; S T ; T I finsi t P = min(a, b), T = max(a, b, c), S = min(max(a, b), c) si P S alors I P ; P S ; S I finsi

3.2.5

Notation de lanalyse par cas

selon liste dindicateurs C1 : A1 C2 : A2 ... : ... Cn : An finselon Parmi les conditions Ci , 1 condition et une seule peut etre vraie a un instant donn ` e Lune des conditions C1 a Cn doit correspondre a la totalit de ces possibles ` e ` On peut ajouter un terme ( autrement )) si n cessaire ( e Ce terme correspond aux cas possibles non-exprim s dans les conditions C1 a Cn e ` selon liste dindicateurs C1 : A1 C2 : A2 ... : ... Cn : An autrement : An1 finselon Trois mani` res equivalentes entre elles de noter e selon liste dindicateurs C : A non C : B finselon si C alors A sinon B finsi

17

Deux mani` re equivalentes entre elles de noter e selon liste dindicateurs C : A non C (peut aussi se noter ( C2 ))) : action vide ( finselon si C alors A finsi

18

Chapitre 4 Param trisation des algorithmes e


Eviter de refaire les m mes formules sur des valeurs di rentes e e Disposer de fonctions pour param trer les calculs e

4.1

Fonctions
Une fonction est un nom associ a un calcul e` F:DI d x D, Fpxq = expression de (x) En math matiques : x est une variable e En informatique : les param` tres formels sont les variables en math matiques e e

Notation informatique dune fonction : NomFonction : fonction (liste de param`tres formels) type (t) de calcul effectu e e par la fonction t NomFonction(X...) dsigne ... description de ce qui est calcul (contient les noms e e des param`tres formels) u e Lexique de NomFonction RC : t Algorithme de NomFonction t Description du calcul u RC expression du rsultat du calcul e renvoyer(RC) Param` tres formels : traduction informatique du domaine de d nition e e La liste des param` tres formels de la fonction font partie du lexique de la fonction, et on ne les e r p` te donc pas dans le lexique de la fonction e e On peut les utiliser dans la fonction le type de calcul eectu par la fonction est la traduction informatique du co-domaine e Sp cication de la fonction (commentaires (( NomFonction(X...) d signe ... ))) : explication de ce e e que fait la fonction Lexique : on introduit ce dont on a besoin pour eectuer le calcul (peut etre vide) Ce lexique ne contient pas de r sultats : le terme (( r sultat ))nest utilis que pour les valeurs qui e e e

19

sont ach es en n dalgorithme e On utilise donc le terme ( interm diaire )), m me pour la valeur renvoy e en n de fonction ( e e e Description du calcul : se termine par le renvoi du calcul Ent te de la fonction : ( NomFonction : fonction (liste de param` tres formels) type de calcul e ( e eectu par la fonction ) e ) Appel de fonction : fait davoir le nom de la fonction dans le corps de lalgorithme Exemple de dnition dune fonction avec le minimum de deux valeurs : e Min2V : fonction (X,Y : rels) rel e e t Min2V(X,Y) dsigne le minimum de X et de Y u e Lexique de Min2V MN : rel t intermdiaire : contient le minimum de X et de Y e e algorithme de Min2V selon X et Y X Y : MN X X Y : MN Y finselon t MN = min(X,Y) u MN Dans lexemple ci-dessus : Domaine de d nition et co-domaine : R R R e Exemple dutilisation dune fonction (cf exercice 1 TD 2, calcul de la note nale dun etudiant) : On suppose quon a cr e la fonction ci-dessus Min2V e Lexique principal N1, N2, N3 : rels entre 0 et 20 t donnes : notes obtenues u e e NF : rel entre 0 et 20 t rsultat : note finale u e e Fonction utilise : Min2V e MIN1 : rel entre 0 et 20 t intermdiaire : minimum de N1 et N2 e e MIN2 : rel entre 0 et 20 t intermdiaire : minimum de N2 et N3 e e Algorithme principal lire(N1, N2, N3) MIN1 Min2V(N1,N2) MIN2 Min2V(MIN1,N3) NF (N1 + N2 + N3 - MIN2)/2 crire(NF) e

u u

Dans lexemple dapplication de Min2V : Il y a 2 appels de la fonction Min2V dans lalgorithme principal Dans lalgorithme principal, N1,N2 de Min2V(N1,N2) sont des param` tres eectifs e Quelques soient X et Y r els, la fonction d crit comment proc der pour calculer le minimum de e e e deux nombres, appel s X et Y de mani` re formelle e e Dans lexemple : X et Y d signent N1 et N2 pour le premier appel de fonction, et MIN1 et N3 pour e le deuxi` me appel de Min2V e

20

Exemple de fonction mathmatique classique : X2 (Fpxq  x2 ) : e F : fonction (X : r el) r el e e t F(X) d signe la valeur X2 u e Lexique de F RC : r el t interm diaire : X2 u e e Algorithme de F RC X * X renvoyer(RC) Exemple dutilisation de cette fonction dans un algorithme : Fonction F, avec 3 comme param` tre eectif e V F(3) + 5 t F(3) = 3 * 3 = 9 u Exemple de fonction pour obtenir la valeur absolue dun rel : e abs : fonction (A : r el) r els 0 e e t abs(A) d signe |A| u e Lexique de abs RC : r el t interm diaire : |A| u e e Algorithme de abs selon A A 0 : RC -A A 0 : RC A nselon renvoyer(RC) Exemple de fonction Min2V modie pour prendre en compte la fonction abs() : e Min2V : fonction (X,Y : rels) rel e e t Min2V(X,Y) dsigne le minimum de X et de Y u e Lexique de Min2V MN : rel t intermdiaire : contient le minimum de X et de Y u e e Fonction utilise : abs e algorithme de Min2V MN X + Y - abs(X,Y) MN Dans lexemple ci-dessus : Ces deux X et Y sont des param` tres eectifs de lappel de la fonction abs e On evalue X - Y, et le r sultat de cette expression est pass en param` tre eectif de la fonction abs e e e On a ici une fonction qui en appelle une autre Caract ristique dune fonction : e Les param` tres eectifs dune fonction peuvent etre nimporte quelle formule math matique e e Composition fonctionnelle : quand on appelle plusieurs fois la m me fonction e Exemple : NF N1 + N2 + N3 - Min2V(N1,Min2V(N2,N3)) On peut ainsi ecrire en une seule ligne

21

4.2

Exemple : ecrire une fonction qui calcule la somme de deux dur es e

La dur e est form e dheures, de minutes et de secondes e e (H1 M1 S1) + (H2 M2 S2) = H M S e Attention au cas ou on d passe 60 ! ` Domaine de d nition : deux dur es quelconques (6 entiers) e e Co-domaine : une dur e (3 entiers) e On peut tout convertir en secondes Lexique de lalgorithme : H1, H2 : entiers 0 t donnes : heures des dures ` additionner u e e a e M1, M2, S1, S2 : entiers entre 0 et 59 t donnes : minutes et secondes des dures ` additionner u e a H : entier 0 t rsultat : heures de la dure totale u e e M, S : entiers entre 0 et 59 t rsultats : minutes et secondes de la dure totale u e e ns : entier 0 t intermdiaire : nombre de secondes de la somme des dures u e e r : entier entre 0 et 3599 t intermdiaire : reste de la division de ns par 3600 u e Algorithme lire(H1, M1, S1) lire(H2, M2, S2) ns H1 * 3600 + M1 * 60 + S1 + H2 * 3600 + M2 * 60 + S2 H ns div 3600 r ns mod 3600 M r div 60 S r mod 60 crire(H, M, S) e

4.3

D nition de nouveaux types e


Type : donner un nom a un domaine de valeurs ` On peut d nir ses propres types e Ces nouveaux types permettent dam liorer la lisibilit des algorithmes e e Ils permettent aussi de cr er des regroupements logiques de valeurs e

Exemple (reprise de lexercice section pr c dente, la somme de deux dur es) : e e e heure : type entier 0 minute : type entier entre 0 et 59 seconde : type entier entre 0 et 59

Lexique de lalgorithme H : heure t rsultat : heures de la dure totale u e e M : minute t rsultat : minutes de la dure totale u e e S : seconde t rsultat : secondes de la dure totale e e e e On peut aussi d nir des types structur s : 22

Type structur : information compos e de plusieurs el ments, qui sont soit : e e e Des informations simples Des informations structur es e Exemple : e e a D1, D2 : dures t donnes : dures ` additionner u e Notation dun type structur : e Lexique NomStructure : lments/champs qui composent la structure e e DT : H : heure, M : minute, S : seconde Cette notation suppose que les types heure, minute, seconde ont et d nis auparavant e e Pour d signer un champ a lint rieur dun type structur : e e e ` TypeStructur .Champ e Exemple : DT.H Nom du champ H du type structur DT e Exemple : DT.H ns div 3600 Donner un nom au descripteur : dure : type h : heure, m : minute, s : seconde e

Ou d nir ces types ? ` e On peut d nir un lexique particulier, pour que ces types soient accessibles dans tout lalgoe rithme et les fonctions utilis es (si n cessaire) e e On cr e donc un lexique partag , qui ne contient que des types e e Exemple complet : ecrire la somme de deux dures e Lexique partag e dure : type H : heure e M : minute S : seconde heure : type entier 0 minute : type entier entre 0 et 59 seconde : type entier entre 0 et 59 Lexique principal D1, D2 : dures t donnes : dures ` additionner e e e a DT : dure t rsultat : dure totale u e e e Fonction utilise : SommeD e

Algorithme principal lire(D1, D2) DT SommeD(D1, D2) crire("Dure totale : ", DT.H, " heures, ", DT.M, " minutes, ", DT.S, " secondes.") e e

23

SommeD : fonction (X, Y : dures) dure e e t SommeD(X, Y) dsigne la dure correspondant ` la somme des dures X et Y e e a e Lexique de SommeD D : dure t intermdiaire : somme de X et Y u e e Fonctions utilises : e e ConvDS : fonction (X : dure) entier 0 ConvSD : fonction (N : entier 0) dure e Algorithme de SommeD D (ConvSD(ConvDS(X) + ConvDS(Y)) renvoyer(D)

ConvDS : fonction(X : dure) entier 0 e ConvDS(X) dsigne le nombre de secondes correspondant ` la dure X e a e

Lexique de ConvDS Algorithme de ConvDS renvoyer(X.H * 3600 + X.M * 60 + X.S) e ConvSD : fonction(N : entier 0) dure t ConvSD(N) dsigne la dure correspondant ` N secondes e e a

u u

Lexique de ConvSD D : dure : t intermdiaire : dure correspondant ` N secondes e e e a NM : entier 0 t intermdiaire : N converti en minutes u e Algorithme de ConvSD D.S N mod 60 NM N div 60 D.M NM mod 60 D.H NM div 60 renvoyer(D)

4.4

Description des etats dun syst` me : actions nomm es e e

D nition dune action (rappel, voir 1.1) e Op rations qui modient l tat du syst` me e e e Fonction : Nom donn a un calcul e` Etat du syst` me : e Valeurs des indicateurs mis en jeu par laction Action nomm e : e Nom donn a une suite dactions, ayant pour objet la modication de l tat du syst` me e` e e 24

Pourquoi donner un nom a un bout dalgorithme ? ` Pour d composer un probl` me en sous-probl` mes plus simples e e e Syntaxe dun action nomm e : e NomAction : action (liste de param`tres formels daction) e t Effet de laction sur ltat du syst`me u e e t Etat initial : u t Etat final : u Lexique de NomAction Algorithme de NomAction Nature des param` tres formels dune action nomm e : e e Param` tre consult par laction : laction utilise la valeur du param` tre pour r aliser lop ration e e e e e demand e e Param` tre elabor par laction : le param` tre est ind termin au d part, et laction a pour objet de e e e e e e d terminer/construire la valeur du param` tre e e Param` tre modi par laction : la valeur du param` tre est modi e par laction e e e e Exemple : NomAction : action (Consult X : type, Elabor : type, Modifi Z, type) e e e t Effet de laction sur ltat du syst`me u e e t Etat initial : X = x0, Y = ?, Z = z0 u t Etat final : X = x0, Y = y1, Z = z1 u Lexique de NomAction Algorithme de NomAction Exemple : action lire() t Etat initial : A = ?, B = ?, C = ? u t Etat final : A = a, B = b, C = c u Donc ici, on a des param` tres elabor s e e Leur valeur nest pas d nie au d but de laction, et on les elabore durant laction e e Exemple : action ecrire() t Etat initial : A = a, B = b, C = c t Etat final : A = a, B = b, C = c u Donc ici, on a des param` tres consult s e e L tat du syst` me modi ici est l cran e e e e

Exemple : Action qui classe trois valeurs en ordre croissant Classer3V : action (Consults X, Y, Z : entiers, Elabors : P, S, T : entiers) e e t Effet : classe les valeurs de X, Y et Z en ordre croissant, dans P, S, T, de sorte que P S T u t Etat initial : X = x0, Y = y0, Z = z0, P = ?, S = ?, T = ? u t Etat final : X = x0, Y = y0, Z = z0, P = min(x0, y0, z0), T = max(x0, y0, z0), S = valeur intermdiaire u e Lexique de Classer3V Action utilise : Echanger e Algorithme de Classer3V 25

P X; S Y; T Z; si P S alors Echanger(P, S) finsi t P S, P = min(x0, y0), S = max(x0, y0) u si S T alors Echanger(S, T) finsi t P = min(x0, y0), S = min(max(x0, y0),z0), T = max(max(x0, y0),z0) u si P S alors Echanger(P, S) finsi t P = min(x0, y0, z0), S = valeur intermdiaire de (x0, y0, z0), T = max(x0, y0, z0) e Exemple : Action qui classe deux valeurs en ordre croissant Echanger : action (Modifis : X, Y : entiers) e e t Effet : change les valeurs de X et de Y u t Etat initial : X = x0, Y = y0 u t Etat final : X = y0, Y = x0 u Lexique de Echanger I : entier t copie de X pour faire lchange u e Algorithme de Echanger I X t X = x0 , Y = y0 , I = x0 u X Y t X = y0 , Y = y0 , I = x0 u Y X t X = y0 , Y = x0 , I = x0 u Lexique principal A, B, C : entiers t donnes : entiers ` classer u e a Min, Inter, Max : entiers t rsultats : min, inter et max de A, B, C u e Action utilise : Classer3V e Algorithme principal lire(A, B, C) t A = a, B = b, C = c u Classer3V(A, B, C, Min, Inter, Max) t A = a, B = b, C = c, Min = min(a, b, c), Inter = intermdiaire(a, b, c), e Max = max(a, b, c) u crire(Min, Inter, Max) e

4.5

Op rations en m moire lors du passage de param` tres e e e

En m moire : e Les lexiques de lalgorithme principal et de laction (ou fonction) ne sont pas plac s au m me e e endroit en m moire e Le contenu du lexique dune action ou fonction est d truit a la n de lex cution de celles-ci e ` e

26

Lorsquun param` tre est elabor ou modi dans une action : e e e En m moire, on fait r f rence a ladresse m moire du param` tre, tel quil existe dans le lexique e ee ` e e de lalgorithme principal On parle de ( relais dindirection ) de (( passage de param` tre par r f rence )) ( )et e ee

4.6

Exemples avec la machine-trac s e

Tracer un carr e Lexique de lalgorithme principal m : machine-tracs e c : rel 0 t donne : taille ou ct du carr u e e o e e s : point t donne : coin infrieur gauche du carr ` tracer u e e e a Algorithme principal t Ecran et plume indiffrents u e lire(c,s) m.Vider t Ecran vide, cap = 0, position dcriture = haute, position dans le plan = e m.Pos(s) t Ecran vide, cap = 0, pe = haute, pp = s u m.Baisser t Ecran vide, cap = 0, pe = basse, pp = su m.Av(c) t 1e ct trac, cap = 0, pe = basse, pp = s1 u o e e m.Gauche(90) t 1e ct trac, cap = 90, pe = basse, pp = s1 u o e e m.Av(c) t 2 cts tracs, cap = 90, pe = basse, pp = s2 u o e e m.Gauche(90) m.Av(c) t 3 cts tracs, cap = 180, pe = basse, pp = s3 u o e e m.Gauche(90) m.Av(c) t 4 cts tracs, cap = 270, pe = basse, pp = s u o e e m.Lever m.Gauche(90) t 4 cts tracs, cap = 0, pe = basse, pp = s u o e e On peut condenser l criture du bloc : e m.Av(c) m.Gauche(90) rpter 4 fois e e m.Av(c) m.Gauche(90) finrpter e e Crer une action qui gnralise la cration dun carr e e e e e

0,0 u

27

Ce qui caract rise un carr : point de d part, angle, sens de trac , taille de cot e e e e e TCarr : action (consult : C : carr, modifi : m : machine-tracs) e e e e e t Effet : trace le carr C ` laide de la machine-tracs m, dans e a e le sens trigonomtrique u e t Etat initial : m indiffrent u e t Etat final : le carr C est trac u e e Lexique partag e carr : type s : point, a : angle, c : r el 0 e e point : type x, y : r els e e angle : type r el entre -360 et 360 Algorithme de TCarr e t Ecran et plume indiffrents ; C = s0, a0, c0 u e m.Lever t pe = haute u m.Pos(C.s) t pe = haute, pp = s0 u m.Dir(C.a) t pe = haute, pp = s0 , cap = a0 u m.Baisser t pe = basse, pp = s0 , cap = a0 u rpter 4 fois e e m.Av(C.c) m.Ga(90) finrpter t Carr C trac, pe = basse, pp = s0 , cap = a0 e e e e Autre action qui gnralise la cration dun carr e e e e e e e e TCarr2 : action (consult : TC : rel 0, modifi : m : machine-tracs) e t Effet : trace le carr de ct TC ` laide de la machine-tracs m, dans e o e a e le sens trigonomtrique u e t Etat initial : cran indiffrent, pe = basse, cap = a0, pp = s0 u e e t Etat final : le carr est trac u e e Algorithme de TCarr2 e rpter 4 fois e e m.Av(C.c) m.Ga(90) finrpter e e

4.7
4.7.1

Fonctions tabul es e
D nitions e

On m morise un r sultat dans une table : e e Pour gagner du temps de calcul Ce qui est stock en m moire nest plus a calculer e e ` 28

Quand on a un r sultat dicile a obtenir avec une formule e ` Si on a un domaine de d nition ni, on range la valeur du co-domaine de chacun des el ments e e du domaine en m moire e Table ou tableau : Emplacement m moire form d l ments de m me type e e ee e e e e Information homog` ne (tous les el ments sont de m me type) qui porte un nom, structur e de e mani` re particuli` re e e Chaque el ment porte un num ro pour le d signer (indice) e e e Lintervalle des num ros utilisables est donn dans la d nition du tableau e e e Exemple : Tableau T 1 Max D nition dun tableau de nom t dans un lexique : e t : tableau sur [borne infrieure ... borne suprieure] de type des lments e e e e Exemples : t : tableau sur [1 ... 10] dentiers t : tableau sur [1 ... 300] dhoraires D signer un el ment du tableau : e e T1[indice] Exemples : T1[3] T1[i + 2] : attention, cette valeur doit appartenir a lintervalle d termin par les bornes du tableau e e ` TH[4].h TH[i + 3].m

4.7.2

Exemples

Ecrire une fonction qui calcule le quanti`me dune date e Quanti`me : numro de lordre dun jour dans lanne e e e On d nit une table NJEDM (nombre de jours ecoul s depuis le d but du mois) : e e e 1 2 3 4 5 6 7 8 9 10 11 12 0 31 59 90 120 151 181 212 243 273 304 334 29

Q = J + nombre de jours ecoul s avant le premier du mois e Q = J + NJEDM[M] Attention aux ann es bissextiles ! e Lexique partag : e e date : type j : jour, m : mois, a : anne jour : type entier entre 1 et 31 mois : type entier entre 1 et 12 anne : type entier 1583 e

Quanti`me : fonction(D : date) entier entre 1 et 366 e t Quanti`me(D) dsigne le quanti`me de la date D dans lanne u e e e e Lexique de Quanti`me e NJEDM : le tableau sur [1, 12] dentiers [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334] Q : entier entre 1 et 336 t intermdiaire : quanti`me de D dans lanne u e e e fonction utilise : EstBissextile e Algorithme de Quanti`me e Q D.j + NJEDM[D.m] si EstBissextile(D.a) ET D.m 2 alors Q Q + 1 renvoyer(Q) Autre solution : on peut aussi partir du principe que les mois font 30 jours, et appliquer une correction (contenue dans un tableau) en fonction du mois : Formule : Q = J + 30 * (M-1) + Correction Tableau : Correction[0, 1, -1, 0, 0, 1, 1, 2, 3, 3, 4, 4] La formule de lalgorithme principal devient : Q <- D.j + 30 * M - 1 + NJEDM[D.m] Ecrire une fonction qui convertit un entier entre 0 et 9 dans le caract`re correspondant e CVEC : fonction(X : entier entre 0 et 9) t CVEC(X) dsigne le caract`re correspondant au chiffre X u e e Lexique de CVEC C : caract`re t intermdiaire : caract`re correspondant ` X e e e a Algorithme de CVEC selon X X = 0 : C 0 X = 1 : C 1 X = 2 : C 2 X = 3 : C 3 X = 4 : C 4 X = 5 : C 5 X = 6 : C 6 X = 7 : C 7 X = 8 : C 8 X = 9 : C 9

30

finselon renvoyer(C) Autre solution : CVEC : fonction(X : entier entre 0 et 9) Lexique de CVEC C : caract`re t intermdiaire : caract`re correspondant ` X u e e e a Chiffres : le tableau sur[0, 9] de caract`res [0, 1, 2, 3, 4, 5, 6, e 7, 8, 9] Algorithme de CVEC C Chiffres[X] renvoyer(C)

31

Chapitre 5 Traitement s quentiel e


5.1 Introduction : notion de s quence e

En informatique, on peut etre amen a r p ter des actions plusieurs fois e` e e On raisonne donc sur une s quence : suite d l ments de m me type, et de valeurs di rentes e ee e e Exemples de squences : chiers, tableaux e Ces s quences peuvent etre repr sent es de diverses mani` res sur le plan informatique e e e e R p ter : enum rer les el ments de la s quence e e e e e Deux raisons a enum rer les el ments dune s quence : e e ` e 1. Appliquer un (m me) traitement a chaque el ment de cette s quence e e ` e Cette op ration se nomme ( parcours dune s quence )) e ( e 2. Rechercher un el ment v riant une propri t donn e e e ee e Cette op ration se nomme ( Recherche s quentielle )) e ( e Si on consid` re une s quence comme un ensemble (au sens math matique) : e e e d X s quence, eectuer telle action e

5.2

Formes de composition it rative e

Ce sont des notations algorithmiques permettant dexprimer une r p tition e e

5.2.1

R p ter n fois e e

Action B rpter expression fois e e Action A finrpter e e Action C On eectue donc laction B, puis un certain nombre de fois laction A, puis une fois laction C

32

5.2.2

Tantque

Action B tantque faire Action A fintantque Action C = invariant de lit ration : etat interm diaire qui est vrai pour toutes les it rations e e e On eectue toujours laction B On eectue laction A un certain nombre de fois (Il est possible de ne jamais eectuer laction A) On eectue laction C Sch ma : B, A, ..., A, C (A : z ro ou plus) e e

5.2.3

R p ter jusqu` e e a

Action B rpter e e Action A jusqu` a Action C (= non ) = condition darr t de lit ration e e On eectue toujours laction B On eectue laction A un certain nombre de fois (laction A est eectu e au moins une fois, puisque e la condition darr t est evalu apr` s avoir eectu A) e e e e On eectue laction C Sch ma : B, A, ..., A, C (A : une ou plus) e

33

5.2.4

Attention !

Laction A doit agir sur les indicateurs mis en jeu dans l valuation de la condition darr t (de e e continuation) de lit ration e Si A ne modie jamais les indicateurs qui evaluent sur les conditions alpha ou beta, on obtient un cas dit ration sans n e

5.3

Exemples

Ecrire un algorithme qui ache les n premiers entiers naturels Lexique principal n : entier 0 t donne : nombre dentiers ` afficher u e a e : entier 0 t intermdiaire : prochain entier ` afficher e a Algorithme principal lire(n) e 0 tantque e n faire t On a affich les (i) premiers entiers, i n et e = i u e crire(e) e e e + 1 t On a affich les (i + 1) premiers entiers u e fintantque t On a affich les n premiers entiers u e crire("termin !") e e

5.4

Fichiers s quentiels e

34

Exemple de structure dinformations a acc` s s quentiel ` e e (` distinguer des chiers index s) a e Support externe (` la machine), permettant de m moriser de linformation a e Un chier est une suite d l ments de m me type : ee e Exemple : une ligne de texte = chane de caract` res e Cette information est organis e en s quences e e Le chier se termine quand on atteint la marque de n de chier (fdf) Cette marque ne fait pas partie du chier (elle est li e au SGF) e A chaque fois quon ajoute un el ment : on eectue un enregistrement e Un chier est donc une suite denregistrements Di rences avec les tableaux : e Les tableaux sont en m moire e Les tableaux poss` dent un indice, pour acc der directement a un el ment particulier du tableau e e ` e (ce nest pas le cas des chiers) D nir un chier dans un lexique : e NomF : fichier de type des lments e e On dispose (cf. polycopi ) : e Dactions et fonctions pour enum rer les el ments dune s quence m moris e dans un chier e e e e e Dactions et fonctions pour enregistrer, cr er une s quence dans un chiers e e

5.5
5.5.1

Sch mas de parcours dune s quence e e


Exemples de parcours

D terminer la longueur dune chane de caract` res e e Crer une fonction Long, qui calcule la longueur dune chane de caract`res e e Soit une chane X abcde Longueur de X : Si X est vide : X=0 Si X comporte un caract` re e d b(X) = e n(X) = Premier el ment de X : e pre(X) CH : pap EC : premier el ment de la pap e Pour avancer dans la s quence : e CH fin(CH) t CH = "bcde" u 35

CH fin(CH) CH = "cde" u CH fin(CH) t CH = "de" u CH fin(CH) t CH = "e" u CH fin(CH) t CH = "" u

On observe qu` la n de lavancement, l l ment courant nest pas signicatif a ee (CH = ) Long : fonction(X : chane de caract`res) entier 0 e t Long(X) dsigne la longueur de X u e Lexique de Long CH : chane de caract`res t intermdiaire : pap de la squence X u e e e L : entier 0 t intermdiaire : longueur de la pp de X u e Algorithme de Long CH X L 0 tantque CH "" L L + 1 CH fin(CH) fintantque renvoyer(L) Copier un chier de caract` res dans un autre e Lexique principal F : fichier de caract`res t donne : squence examine e e e e FR : fichier de caract`res t rsultat : fichier cr u e e ee Algorithme principal FR.PreparerEnregistrement F.LirePremier tantque non F.FDF faire FR.Enregistrer(F.EC) F.LireSuivant fintantque FR.Marquer

36

Comparaison des deux exemples Fichier F.LirePremier F.LireSuivant non F.FDF FR.PreparerEnregistrement FR.Enregistrer FR.Marquer F repr sente la s quence e e Chane CH X CH n(CH) CH L0 LL+1 renvoyer(L) CH repr sente X e

Calcul du nombre d l ments dun chier ee Lexique principal F : fichier de caract`res t donne : squence examine u e e e e FR : fichier de caract`res t rsultat : fichier cr u e e ee L : entier 0 t intermdiaire : longueur de la pp de F e Algorithme principal F.LirePremier L 0 tantque non F.FDF faire L L + 1 F.LireSuivant fintantque crire(L) e

5.5.2

G n ralisation : sch mas de parcours e e e

Parcours Appliquer un m me traitement a tous les el ments dune s quence e e ` e 4 el ments caract risent une s quence : e e e El mentCourant (EC) : comment repr senter l l ment courant sur le plan informatique ? e e ee FindeS quence : comment r perer la n de la s quence ? e e e D marrer : comment obtenir le premier el ment de la s quence ? e e e Avancer : comment passer de l l ment courant a l l ment suivant ? ee ` ee Exemple avec un chier F : F.EC F.FDF F.LirePremier F.LireSuivant Exemple avec une chane X : pre(CH) CH = CH X CH n(CH) 37

Sch ma de parcours pour lequel le cas de la s quence vide est int gr au cas g n ral e e e e e e Cf. polycopi e Sch ma de parcours pour lequel le cas de la s quence vide est s par du cas g n ral e e e e e e Cf. polycopi e

5.6

Sch mas de recherche s quentielle e e

D terminer si la s quence comporte au moins un el ment v riant une certaine propri t P e e e e ee Deux solutions : On trouve un el ment qui v rie P e e On ne trouve pas d l ment qui v rie P, et on atteint la n de s quence ee e e Donc deux cas darr t : e On atteint la n de s quence e On atteint la v rication de P e Il ny a pas de traitements, on ne fait qu num rer les el ments de la s quence e e e e Dmarrer e tantque non FDS ET PUIS non P(EC) faire Avancer fintantque t FDS ou alors P(EC) u selon FDS FDS : t aucun lment de la squence ne vrifie P u e e e e non FDS : t EC est le premier lment de la squence qui vrifie P e e e e finselon Remarque : on impose un ordre dans l valuation des conditions e e On regarde dabord si on nest pas dans la n de s quence On regarde ensuite si la propri t P est v ri e ee e e

5.7

Mise en oeuvre des sch mas e

Dans certaines situations, il est n cessaire de combiner recherche et parcours e On parle de parcours dune sous-s quence e On a donc une premi` re sous-s quence jusqu` un el ment qui v rie une propri t P, et ensuite e e a e ee e une deuxi` me sous-s quence apr` s P e e e P fait partie de la premi` re ou de la deuxi` me sous-s quence suivant les cas e e e Il est possible davoir dabord une recherche, puis un parcours, et inversement Ecrire un algorithme qui dtermine si un chier de caract`res comporte au moins x occurences dun caract`re c e e e donn e x ( 0) et c sont des donnes de lalgorithme e Lexique principal FC : fichier de caract`res e

donne : squence examine e e e 38

c : caract`re t donne : caract`re recherch en x exemplaires u e e e e x : entier 0 t donne : nombre doccurences de c rencontres u e e nbc : entier 0 t intermdiaire : nombre doccurences de c rencontres de la e e pp de FC u Algorithme principal lire(c,x) FC.LirePremier selon FC FC.FDF : crire("Fichier vide !") e non FC.FDF : rpter e e si FC.EC = c alors nbc nbc + 1 finsi FC.LireSuivant jusqu` FC.FDF OU nbc = x a selon nbc, x nbc = x : crire("Au moins ", x, " occurences de ", c) e nbc x : crire("Moins de ", x, " occurences de ", c) e finselon finselon Supposons maintenant que la squence de caract`res soit reprsente dans un tableau de caract`res (TC[1,lmax]) e e e e e En gnral, le tableau est plus grand que la longueur de la squence (L) e e e L est aussi lindice du dernier elment de la squence mmorise dans TC e e e e EC : TC[i] FDS : i = L + 1 D marrer : i 1 e Avancer : i i + 1

Lexique principal TC : tableau sur [1...LMAX] de caract`res t donne : squence examine dj` e e e e e a initialise u e L : entier 0 t donne : indice du dernier lment mmoris dans TC u e e e e e i : entier sur 1...LMAX + 1 t intermdiaire : indice de llment courant u e e e c : caract`re t donne : caract`re recherch en x exemplaires u e e e e x : entier 0 t donne : nombre doccurences de c rencontres u e e nbc : entier 0 t intermdiaire : nombre doccurences de c rencontres de la e e pp de FC u Algorithme principal lire(c,x) i 1 selon i, L i = L + 1 : crire("Fichier vide !") e

39

L + 1 : rpter e e si TC[i] = c alors nbc nbc + 1 finsi i i + 1 jusqu` i = L + 1 OU nbc = x a selon nbc, x nbc = x : crire("Au moins ", x, " occurences de ", c) e nbc x : crire("Moins de ", x, " occurences de ", c) e finselon finselon Supposons maintenant que la squence de caract`res soit reprsente dans une chane e e e e EC : pre(CHI) FDS : CHI = D marrer : CHI CH e Avancer : CHI n(CHI)

Lexique principal CH : chane de caract`res t donne : squence examine dj` e e e e e a initialise u e e CHI : chane de caract`res t intermdiaire : pap de CH u e c : caract`re t donne : caract`re recherch en x exemplaires u e e e e e e x : entier 0 t donne : nombre doccurences de c rencontres u nbc : entier 0 t intermdiaire : nombre doccurences de c rencontres de la e e pp de FC u Algorithme principal lire(c,x) CHI CH selon CHI CHI = "" : crire("Fichier vide !") e CHI "" : rpter e e si pre(CHI) = c alors nbc nbc + 1 finsi CHI fin(CHI) jusqu` CHI = "" OU nbc = x a selon nbc, x nbc = x : crire("Au moins ", x, " occurences de ", c) e nbc x : crire("Moins de ", x, " occurences de ", c) e finselon finselon

40

Entre les trois sch mas, seule la repr sentation de la s quence est modi e e e e e Dans le lexique, l num ration de la s quence change e e e Les el ments de lalgorithme concernant le traitement ne changent pas e Dans le lexique, les objets de traitement de la s quence ne changent pas non plus e (dans lexemple : c, x, nbc)

5.8

R capitulatif : les diverses repr sentations de s quence e e e


Fichier s quentiel e Chane de caract` res e Chane de caract` res e en sens inverse CH : chane de caract` res t e s quence u e CHI : chane t pap u Tableau d l ments ee Tableau d l ments ee en sens inverse T : tableau sur [1...LMAX] de type l m ee LMAX d ni dans e un lexique partag ) L : e entier 0 t indice du dernier el ment ou e 0 si vide u i : entier sur [0...LMAX] t indice de parcours u T[i] i=0 iL ii-1 S quence e calcul e e

Lexique

F : chier de type l m ee

CH : chane de caract` res t e s quence u e CHI : chane t pap u

T : tableau sur [1...LMAX] de type l m ee LMAX d ni dans e un lexique partag ) L : e entier 0 t indice du dernier el ment u i : e entier sur [1...LMAX + 1] t indice de parcours T[i] i=L+1 i1 ii+1

EC FDS D marrer e Avancer

F.EC pre(CHI) F.FDF CHI = F.LirePremier CHI CH F.LireSuivant CHI n(CHI)

der(CHI) CHI = CHI CH d b(CHI) e

41

Das könnte Ihnen auch gefallen