Algorithmique programmation et Java en Cou[s et exe[cices cor[igés 4e édition Illustradteci oounv ertu:r e Abstract background - Spheres © DreaminAgn dy- Fotolia.com Lep ictogrqaumifm ieg ucrie- condt'enrseiegn emnets upériperovoquru,an tu ne mériutneee xplicSaotnio obnj.ee stt baisbsrutea ldee sa chadtels i vetr dees d'alelrelt eecrt seuulrr am enaqcuee revuaeupos i,n qtu lepa o ssimbêimpleoi utér repréposuernl t'ea vdeeln 'iérc rit, leasu teduerc sr éer œduevsr es particuldiaènlrsede ommeanitn e nouveeltdl ele efssa iérdeic toerr DANGER del 'édtietcihonnei tuqn iuvrese i rectemeesantut j oumredn'ahcuéei . tailrede é,v eloppement @ma)ss if Ndouur sa ppedloonnqcsu teou et photocopillage. reropducti,po anrtoiuet loltea le, LeC oddee l ap ropriinétteél lec del a prépusbelnititcnoea e ts tuedlul1e er j ui1l99l2e itn terLEd PHOiTtOCœL LAGE intersdaintse autodrei sation ene ffeextp ressléapm heontto co l'autdeesu orné, d itoeuud ru TUE LE LIVRE "O 0 piàe u sgaec ollseacnatsui tfo ri Centfrrea ndça'iesx plodiut ation c: satdieoasny andtrsoO irtc,.e tptrea tiqdureo diet copi(eC FC2,0, rued es ::J 0 s'egsétn éradlainlsseé éset ablissGermnaedn-sAtusgu tsins,7 5006 Paris). '<t" T"-1 0 N @ © Dunod2,0 00, 2004, 2010, 2014 ....., ..c: Ol ·c 5 rueL aromiguiè75r0e05, P aris > a. www.dunod.com 0 u ISBN9 78-2-10-071452-0 LeC oded e lap ropriiénttée llenc'tauuetlolreai usxat netr,m dees l 'article L.1 225-,2 °e t3 °a )d,' unpea rqtu,e l e«sc opioeusr eproducsttiroinctse ment réseràv lé'euss pargied vuéc opiesttn eo nd estiàn uéneesu tiliscaotliloenc tive» eld,' auptarreqt u,el easn alyestle escs o urctietsa tdiaonnussn b udt' exemeptl e d'illus«tt roautrtieeop nr,é senotuar teiporno duicnttiéognor uap laer tielle faite sanlse c onsentedmeel n'ta utoeuud res esa yandtrso oiuta yanctasu sees t illi» c(iatrLet.1 . 2 24). Cetrteep résenotura etpiroond upcatrqi uoenl,q pureo céqduéec es oicto,n stitue raidto nuc nec ontrefsaaçnocnt iopnanrlé eeas r ticlLe.3s 3 5-e2ts uivadnut s Coded el ap ropriinétteél lectuelle. à Maud -0 0 c: =i 0 "<:t" ,..-1 0 N @ ....... ..c: O'l ·c > Cl. 0 u .µ ..c Ol ï::: >- 0. 0 u Table des matières AVANT-PROPOS XV CHAPITRE 1 • INTRODUCTION 1 1 1.1 Environnement matériel 1.2 Environnement logiciel 4 5 1.3 Les langages de programmation 11 1.4 Construction des programmes 1.5 Démonstration de validité 13 CHAPITRE 2 • ACTIONS ÉLÉMENTAIRES 15 15 2.1 Lecture d'une donnée 16 -0 2.2 Exécution d'une routine prédéfinie 0 c: =i 2.3 Écriture d'un résultat 17 0 "<:t' 2.4 Affectation d'un nom à un objet 17 ,..-1 0 N 2.5 Déclaration d'un nom 18 @ 2.5.1 Déclaration de constantes 18 ....... ..c O'l 2.5.2 Déclaration de variables 19 ·c >- 19 Cl. 2.6 Règles de déduction 0 u 2.6.1 L'affectation 19 2.6.2 L'appel de procédure 20 2.7 Le programme sinus écrit en Java 20 2.8 Exercices 22 CHAPITRE 3 • TYPES ÉLÉMENTAIRES 23 3.1 Le type entier 24 5 3.2 Le type réel 2 Algorithmique et programmation en Java VIII 3.3 Le type booléen 28 3.4 Le type caractère 29 31 3.5 Constructeurs de types simples 31 3.5.1 Les types énumérés 32 3.5.2 Les types intervalles 32 3.6 Exercices CHAPITRE 4 • EXPRESSIONS 35 4.1 Évaluation 36 36 4.1.1 Composition du même opérateur plusieurs fois 4.1.2 Composition de plusieurs opérateurs différents 36 4.1.3 Parenthésage des parties d'une expression 37 37 4.2 Type d'une expression 38 4.3 Conversions de type 38 4.4 Un exemple 41 4.5 Exercices CHAPITRE 5 • ÉNONCÉS STRUCTURÉS 43 5.1 Énoncé composé 43 5.2 Énoncés conditionnels 44 44 5.2.1 Énoncé choix 5.2.2 Énoncé si 46 5.3 Résolution d'une équation du second degré 47 50 5.4 Exercices CHAPITRE 6 • PROCÉDURES ET FONCTIONS 53 53 6.1 Intérêt 54 6.2 Déclaration d'une routine -0 6.3 Appel d'une routine 55 0 c: =i 6.4 Transmission des paramètres 56 0 "<:t' 6.4.1 Transmission par valeur 57 ,..-1 0N 6.4.2 Transmission par résultat 57 @ 6.5 Retour d'une routine 57 ....... ..c: O'l 6.6 Localisation 58 ·c >- 60 Cl. 6.7 Règles de déduction 0 u 61 6.8 Exemples 65 6.9 Exercices CHAPITRE 7 •PROGRAMMATION PAR OBJETS 67 7.1 Objets et classes 67 68 7 .1.1 Création des objets 7.1.2 Destruction des objets 69 69 7.1.3 Accès aux attributs Table des matières IX 70 7.1.4 Attributs de classe partagés 70 7.1.5 Les classes en Java 7.2 Les méthodes 71 72 7.2.1 Accès aux méthodes 72 7.2.2 Constructeurs 7.2.3 Constructeurs en Java 73 7.2.4 Les méthodes en Java 73 75 7.3 Assertions sur les classes 7.4 Exemples 76 76 7.4.1 Équation du second degré 79 7.4.2 Date du lendemain 82 7.5 Exercices CHAPITRE 8 • ÉNONCÉS ITÉRATIFS 85 8.1 Forme générale 85 86 8.2 L'énoncé tantque 8.3 L'énoncé répéter 87 88 8.4 Finitude 88 8.5 Exemples 88 8.5.1 Factorielle 8.5.2 Minimum et maximum 89 89 8.5.3 Division entière 90 8.5.4 Plus grand commun diviseur 91 8.5.5 Multiplication 91 8.5.6 Puissance 92 8.6 Exercices CHAPITRE 9 •LES TABLEAUX 95 -00 9.1 Déclaration d'un tableau 95 c: =i 9.2 Dénotation d'un composant de tableau 96 0 "<:t" 9.3 Modification sélective 97 ,..-1 0N 9.4 Opérations sur les tableaux 97 @ 9.5 Les tableaux en Java 97 ...... ..c: O'l 9.6 Un exemple 99 ·c >- 101 Cl. 9.7 Les chaînes de caractères 0 u 102 9.8 Exercices CHAPITRE 10 • L'ÉNONCÉ ITÉRATIF 105 POUR 105 10.1 Forme générale 106 10.2 Forme restreinte 106 10.3 Les énoncés pour de Java 108 10.4 Exemples 108 10.4.1 Le schéma de HORNER Algorithmique et programmation en Java X 109 10.4.2 Un tri interne simple 110 10.4.3 Confrontation de modèle 114 10.5 Complexité des algorithmes 116 10.6 Exercices CHAPITRE 11 • LES TABLEAUX À PLUSIEURS DIMENSIONS 119 119 11.1 Déclaration 120 11.2 Dénotation d'un composant de tableau 120 11.3 Modification sélective 121 11.4 Opérations 121 11.5 Tableaux à plusieurs dimensions en Java 122 11.6 Exemples 122 11.6.1 Initialisation d'une matrice 122 11.6.2 Matrice symétrique 123 11.6.3 Produit de matrices 124 11.6.4 Carré magique 126 11. 7 Exercices CHAPITRE 12 •HÉRITAGE 131 131 12.1 Classes héritières 134 12.2 Redéfinition de méthodes 135 12.3 Recherche d'un attribut ou d'une méthode 136 12.4 Polymorphisme et liaison dynamique 137 12.5 Classes abstraites 138 12.6 Héritage simple et multiple 139 12.7 Héritage et assertions 12.7.1 Assertions sur les classes héritières 139 139 12.7.2 Assertions sur les méthodes -0 12.8 Relation d'héritage ou de clientèle 139 0 c: =i 12.9 L'héritage en Java 140 0 "<:t' 0,. .-1 CHAPITRE 13 • FONCTIONS ANONYMES 143 N 144 @ 13.1 Paramètres fonctions ..c:....... 13.1.1 Fonctions anonymes en Java 145 O'l ·c >- 13.1.2 Foreach et map 147 Cl. 0 148 u 13.1.3 Continuation 150 13.2 Fonctions anonymes en résultat 150 13.2.1 Composition 151 13.2.2 Cur ryfication 152 13.3 Fermeture 153 13.3.1 Fermeture en Java 154 13.3.2 Lambda récursives 155 13 .4 Exercices Table des matières XI CHAPITRE 14 • LES EXCEPTIONS 157 157 14.1 Émission d'une exception 158 14.2 Traitement d'une exception 159 14.3 Le mécanisme d'exception de Java 159 14.3.1 Traitement d'une exception 160 14.3.2 Émission d'une exception 161 14.4 Exercices CHAPITRE 15 • LES FICHIERS SÉQUENTIELS 163 164 15.1 Déclaration de type 164 15.2 Notation 15.3 Manipulation des fichiers 165 165 15.3.1 Écriture 166 15.3.2 Lecture 167 15.4 Les fichiers de Java 167 15.4.1 Fichiers d'octets 169 15.4.2 Fichiers d'objets élémentaires 173 15.4.3 Fichiers d'objets structurés 173 15.5 Les fichiers de texte 174 15.6 Les fichiers de texte en Java 178 15.7 Exercices CHAPITRE 16 • RÉCURSIVITÉ 181 182 16.1 Récursivité des actions 182 16.1.1 Définition 182 16.1.2 Finitude 182 16.1.3 Écriture récursive des routines 185 16.1.4 La pile d'évalution -0 16.1.5 Quand ne pas utiliser la récursivité? 186 0 c: =i 16.1.6 Récursivité directe et croisée 188 0 190 "<:t" 16.2 Récursivité des objets ,..-1 0 16.3 Exercices 192 N @ ..c:....... CHAPITRE 17 STRUCTURES DE DONNÉES 195 O'l • ·c 196 >- 17 .1 Définition d'un type abstrait Cl. 0 198 u 17.2 timplémentation d'un type abstrait 200 17.3 Utilisation du type abstrait CHAPITRE 18 • STRUCTURES LINÉAIRES 203 203 18.1 Les listes 18.1.1 Définition abstraite 204 18.1.2 timplémentation en Java 205 216 18.1.3 Énumération Algorithmique et programmation en Java XII 219 18.2 Les piles 220 18.2.1 Définition abstraite 221 18.2.2 L'implémentation en Java 223 18.3 Les files 224 18.3.1 Définition abstraite 225 18.3.2 L'implémentation en Java 226 18.4 Les dèques 226 18.4.1 Définition abstraite 227 18.4.2 L'implémentation en Java 228 18.5 Exercices CHAPITRE 19 • GRAPHES 231 232 19.1 Terminologie 233 19.2 Définition abstraite d'un graphe 19.3 L'implémentation en Java 234 235 19.3.1 Matrice d'adjacence 238 19.3.2 Listes d'adjacence 19.4 Parcours d'un graphe 239 239 19.4.1 Parcours en profondeur 240 19.4.2 Parcours en largeur 241 19.4.3 Programmation en Java des parcours de graphe 243 19.5 Exercices CHAPITRE 20 • STRUCTURES ARBORESCENTES 245 246 20.1 Terminologie 247 20.2 Les arbres 248 20.2.1 Définition abstraite 249 20.2.2 L'implémentation en Java 251 -0 20.2.3 Algorithmes de parcours d'un arbre 0 c: 252 =i 20.3 Arbre binaire 0 254 "<:t" 20.3.1 Définition abstraite ,..-1 0 20.3.2 L'implémentation en Java 255 N @ 20.3.3 Parcours d'un arbre binaire 257 ....... ..c: 259 O'l 20.4 Représentation binaire des arbres généraux ·c > 20.5 Exercices 260 Cl. 0 u CHAPITRE 21 • TABLES 263 264 21.1 Définition abstraite 264 21.1.1 Ensembles 264 21.1.2 Description fonctionnelle 21.1.3 Description axiomatique 264 264 21.2 Représentation des éléments en Java 266 21.3 Représentation par une liste
Description: