Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
- A. Perlis
Note historique
Donald Knuth, informaticien amricain, est lun des pionniers du domaine de lanalyse dalgorithmes. Il est lauteur de lun des livres les plus respects en informatique (The Art of Computer Programming) et du systme de composition pour textes (scientifiques) TeX. Edsger Dijkstra, informaticien hollandais, a dvelopp lalgorithme du chemin le plus court (qui porte son nom) et du concept de smaphore pour les programmes et processeurs parallles. Son article de 1968, "Go To Statement Considered Harmful" a rvolutionn lutilisation de linstruction GOTO au profit des structures de 166 contrle telles que la boucle while.
Instruction de boucle
Nous avons parfois besoin de rpter un bloc dinstruction. Dans un modle logiciel, nous utilisons une instruction de boucle:
Le bloc dinstruction dans la boucle est rpt jusqu ce que le test devienne faux.
167
169
170
171
172
173
174
Test?
faux
Bloc dinstructions
175
Algorithme: Somme de 1 n
DONNE: INTERMDIAIRE: RSULTAT: EN-TTE: MODULE: n (un entier positif) compteur (index allant de 1 n) somme (somme des entiers de 1 n) somme somme1N(n)
somme 0
compteur 1
compteur n ? faux
vrai
compteur compteur + 1
176
// MODULE DE LALGORITHME
compteur = 1; // Initialisation du compteur somme = 0; // Initialisation de la somme // Boucle while (compteur <= n) { somme = somme + compteur ; compteur = compteur + 1 ; }
177
Bloc dinstructions
Le bloc dinstruction de la boucle est excute au moins une fois et rpt jusqu ce que le test devienne faux. 178
Bloc dinstructions
Block dinstructions
180
// Module
}
181
Boucle FOR
Java offre une autre forme de boucle, qui peut remplacer une boucle WHILE lorsque nous savons lavance combien de fois une boucle sera excute (boucle dtermine). La boucle FOR a comme format: for (<initialisation>; <condition-test>; <incrment>) { // instructions } Dans la plupart des cas: Initialisation initialise un compteur condition-test teste si un compteur a atteint une certaine limite Incrment incrmente le compteur (+ 1, - 1, + 5, + Var, ) Toute boucle FOR peut tre reformule en boucle WHILE.
182
Initialisation
183
vrai
Traduction Java:
184
10
Tableaux informatiques
Simples variables ne contiennent quune valeur. Un tableau informatique (computer array en anglais) est compos de plusieurs positions, chacune capable de contenir une valeur. Le tableau est essentiellement une collection de variables du mme type.
Variables simples i1 i2 Nom de tableau nom de variable
186
Un tableau tbl
i3
i4 i5
11
12
Le nom du tableau
Que reprsente le nom dun tableau? Il peut reprsenter ladresse en mmoire o se trouve le tableaux. Ceci est semblable un nom de variable, mais se fait trait diffremment dun nom de variable Cette approche est utilise dans des langages tel que le C Limage dans les actates prcdentes reflte cette reprsentation. Le nom de tableau peux aussi tre le nom dune variable de rfrence et donc notre image devient:
Un tableau tbl adresse tbl[0] tbl[1] tbl[2] tbl[3] tbl[4]
189
La cration de tableaux
Lalgorithme standard suivant sera utilis pour crer des tableaux uneVarRefTbl crerTableau( L ) Cre un tableau ayant L positions ayant des valeurs inconnues. uneVarRefTbl est une variable de rfrence laquelle est affecte ladresse du tableau. E.g. tbl crerTableau( 5 )
Mmoire de travail Un tableau uneVarRefTbl adresse tbl[0] tbl[1] tbl[2] tbl[3] tbl[4]
190
Mmoire Globale
13
(de longueur 4)
t[2] = t[k] = t[2*k-1] = t[ t[0]+1 ] = t[expression] peut tre utilis comme toute autre variable dans des expressions plus complexes. 191 Rappelez-vous t est une variable de rfrence
14
193
194
15
195
16
6-17 Trouvez la position de la premire occurrence de la valeur maximale dun tableau de taille n. a) Utilisez lalgorithme de lexemple 7. b) Utilisez des algorithmes de nimporte quels exemples. c) Version avec une boucle sans autres algorithmes.
6-18 Vrifiez si un tableau de n valeurs contient ou non des valeurs dupliques. Stratgies?
197
Tableaux Java
Une variable tableau est dclare avec le type de ses lments (membres) Par exemple, voici une dclaration dune variable tableau dont les lments sont des nombres rels: double [] unTableau; // forme prfre ou encore: double unTableau[]; Lorsquune variable tableau est dclare, le tableau lui-mme nest PAS cr. Nous avons une variable de rfrence qui peut pointer au tableau. unTableau contient la valeur spciale null jusqu ce quune rfrence valide y est affecte.
198
17
0 ?
1 ?
2 ? 3
200
length
18
201
Initialisation de tableaux
Les lments dun tableau peuvent tre initialiss individuellement: int [] intTableau = new int[3]; intTableau[0] = 3; intTableau[1] = 5; intTableau[2] = 4; ou lors de la cration du tableau: int [] intTableau; intTableau = new int [] { 3, 5, 4 };
19
Quand un tableau est utilis, il est parfois utile davoir une autre variable (ou plusieurs) qui permettra de savoir quelles sont les indices pour lesquelles une valeur a t affecte. 203
Types de rfrence
Un type tableau est un type de rfrence, cause du pointeur vers le tableau. Il est important de distinguer la rfrence (pointeur) de litem rfrenc. Dans le diagramme suivant, A est la rfrence, et le tableau est ce qui est rfrenc. Java ne nous permet pas de regarder la valeur de A pour voir le pointeur. 0 1 2A A adresse 5 2 17 3
204
length
20
Types de rfrence
Que dire des affectations et des comparaisons pour les types de rfrences? Ce sont les rfrences qui sont compares ou affectes, pas les tableaux!. a == b est vrai a a
adresse1
a == b est faux
adresse1
0
length
3 2 3 2
205
0
adresse1
3 2
a b
length
0
adresse2 length
Types de rfrence
Laffectation ne copie que la rfrence, pas lobjet rfrenc. b = a
donne:
NON: 0
length
0
length
3 2
a a
adresse1
3 2
a
b
adresse1
adresse1
adresse2
0
length
2
206
21
Rfrences perdues
Avec les types de rfrence, il faut faire attention de ne pas perdre un objet rfrenc.
AVANT
b = a a adresse1
APRS
b = a
length 2
length 2
a adresse1 5 6 19 b adresse1 5 6 19
adresse2
length 3
length 3
Aprs laffectation, il ny a plus de rfrence vers le deuxime tableau! Celui-ci sera oubli par Java et ne pourra pas tre rcupr. Voir exemple: AssignationTableaux.ppt
Les objets peuvent tre classifis scientifiquement en trois catgories: ceux qui fonctionnent, ceux qui se brisent, et ceux qui se perdent. R. Baker
207
Ide:
Stratgie parcours et mise jour . Premirement, utiliser le premier lment comme candidat la valeur maximal. Ensuite, parcourir les autres lments du tableau et mettre jour le maximum vu jusquici lorsquun nombre plus grand est rencontr.
208
22
Le modle logiciel
DONNES: INTERMDIAIRE: RSULTAT: EN-TTE MODULE n t index max max (un entier positif) (tableau de n valeurs) (index pour t) (lment maximal de t) maxDansTableau( t, n )
max t[0]
index 1
index < n ?
faux
index index + 1
209
210
23
Ainsi, les chanes de caractres sont souvent des cas spciaux dans un langage de programmation.
211
212
24
213
Si les caractres sont les mmes pour chaque position et que les deux chanes on la mme taille, alors la mthode retourne 0.
214
25
Exemple 2:
String str1 = "abcde" ; String str2 = "ab" ; int rsultat = str1.compareTo(str2);
215
26