• Aide
  • Eurêkoi Eurêkoi

Livre

Algorithmique en C, C++, Java, Python et PHP

Résumé

Une approche progressive de la conception d'algorithmes et de l'analyse de données. Après une présentation des méthodes de conception logique des programmes, l'auteur analyse le fonctionnement de différents algorithmes connus. ©Electre 2022


  • Éditeur(s)
  • Date
    • DL 2022
  • Notes
    • Index
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (IV-642 p.) : ill. ; 25 cm
  • Collections
  • Sujet(s)
  • ISBN
    • 978-2-340-07119-3
  • Indice
  • Quatrième de couverture
    • Algorithmique en C, C++, Java, Python et PHP

      Un algorithme est une méthode logique de résolution d'un problème, afin qu'il soit développé dans un langage de programmation.

      Ce livre propose une approche progressive et pédagogique de conception d'algorithme. Il est structuré en deux grandes parties : la première traite de l'algorithmique et de l'analyse des données. Elle permet d'assimiler les méthodes usuelles de conception logique des programmes, utiles à la compréhension d'algorithmes plus complexes.

      La seconde partie présente des algorithmes connus. Elle en analyse le fonctionnement et détaille, pour chacun d'eux, les processus logiques utilisés. On y trouve, par exemple, des algorithmes de tri, de recherche ou d'analyse numérique.

      Chaque algorithme est présenté en pseudo-langage, C, C++, Java, PHP et Python, pour un total de 560 programmes. Cette approche multi-langages permet au lecteur de passer facilement d'un langage à l'autre. Les exercices permettent de mettre en pratique les notions exposées.

      Cette seconde édition propose des programmes source réactualisés et un supplément au chapitre 9 sur le chiffrement, disponibles au téléchargement.


  • Tables des matières
      • Algorithmique en C, C++, Java, Python et PHP

      • 2e édition

      • Jean-Michel Léry

      • Ellipses

      • Introduction 1
      • Environnement et conventions7
      • 1. Les étapes de développement d'une application 7
      • 1.1. L'analyse7
      • 1.2. L'algorithme10
      • 1.3. L'écriture du programme dans un langage de programmation11
      • 2. Le pseudo-langage 18
      • 2.1. Son rôle18
      • 2.2. Conventions syntaxiques18
      • 3. Le génie logiciel 20
      • 3.1. La modélisation des données20
      • 3.2. La modularité du programme20
      • 3.3. La lisibilité du programme20
      • 3.4. Privilégier les solutions simples21
      • 3.5. L'utilisation de conventions d'écriture21
      • 4. La performance algorithmique 21
      • Résumé 22
      • Exercices 22
      • Solutions 23
      • Les traitements logiques29
      • 1. Les tests ou instructions conditionnelles 29
      • 1.1. Présentation29
      • 1.2. La logique booléenne30
      • 1.3. L'instruction SI ALORS SINON31
      • 1.4. Le choix multiple33
      • 2. Les boucles ou instructions répétitives 37
      • 2.1. Présentation des boucles37
      • 2.2. Comprendre le fonctionnement d'une boucle46
      • 2.3. Construire une boucle49
      • 3. Les sous-programmes 54
      • 3.1. Les procédures54
      • 3.2. Les fonctions54
      • 3.3. Organisation en modules autonomes55
      • 4. La complexité algorithmique 61
      • 4.1. Principe61
      • 4.2. L'analyse de la complexité62
      • 4.3. Les grandes familles de complexité62
      • 4.4. Choisir un algorithme64
      • Résumé 64
      • Exercices 64
      • Solutions 67
      • La gestion des données93
      • 1. Principe de traitement des données 93
      • 1.1. Le rôle des variables93
      • 1.2. Le rôle des fichiers94
      • 2. Les tableaux 94
      • 2.1. Description94
      • 2.2. L'allocation mémoire95
      • 2.3. Gestion d'un tableau96
      • 3. Les enregistrements 121
      • 3.1. Description122
      • 3.2. Gestion d'un enregistrement122
      • 4. Les pointeurs 126
      • 4.1. Description126
      • 4.2. Les pointeurs et l'allocation statique de la mémoire127
      • 4.3. L'allocation dynamique de la mémoire129
      • 4.4. La particularité de Java130
      • 4.5. La particularité de PHP130
      • 4.6. La particularité de Python130
      • 5. Les listes chaînées 130
      • 5.1. Description130
      • 5.2. L'allocation mémoire131
      • 5.3. Gestion d'une liste chaînée132
      • 6. Gestion des données complexes 159
      • 6.1. Les tableaux d'enregistrements159
      • 6.2. Les listes d'enregistrements165
      • 7. Variantes sur les tableaux 166
      • 7.1. Les tableaux dynamiques166
      • 7.2. Les tableaux de pointeurs170
      • Résumé 172
      • Exercices 172
      • Solutions 173
      • La récursivité195
      • 1. Principe 195
      • 2. Diviser pour résoudre 200
      • 3. Suppression de la récursion 201
      • 4. Récursivité croisée 203
      • Résumé 206
      • Exercices 206
      • Solutions 208
      • Les données abstraites219
      • 1. Les piles 219
      • 1.1. Principe219
      • 1.2. Les primitives220
      • 1.3. Utilisation des tableaux220
      • 1.4. Utilisation des listes chaînées221
      • 1.5. Exemples223
      • 1.6. Les piles et la récursivité234
      • 1.7. La classe C++ stack236
      • 1.8. La classe Java Stack236
      • 1.9. La classe PHP SpIStack237
      • 1.10. Les listes Python en Piles238
      • 1.11. La classe Python deque238
      • 2. Les files 238
      • 2.1. Principe238
      • 2.2. Utilisation des tableaux239
      • 2.3. Utilisation des listes chaînées240
      • 2.4. La classe C++ deque241
      • 2.5. L'interface Java Queue avec la classe LinkedList242
      • 2.6. La classe PHP SpIQueue243
      • 2.7. Les listes Python en Files244
      • 2.8. La classe Python deque244
      • 3. Les arbres 245
      • 3.1. Principe et définitions245
      • 3.2. Les types d'arbres246
      • 3.3. Création d'un arbre binaire d'expression247
      • 3.4. Parcours d'un arbre binaire249
      • 3.5. Les arbres de recherche268
      • Résumé 269
      • Exercices 270
      • Solutions 271
      • Les tris317
      • 1. Tris élémentaires 317
      • 1.1. Le tri par sélection317
      • 1.2. Le tri par insertion325
      • 1.3. Le tri à bulles329
      • 1.4. Le tri par comptage333
      • 2. Tris avancés 334
      • 2.1. Le tri shell334
      • 2.2. Le tri indirect340
      • 2.3. Le tri rapide ou quicksort351
      • Résumé 359
      • Exercices 359
      • Solutions 360
      • Les recherches371
      • 1. La recherche séquentielle 371
      • 2. La recherche dichotomique 376
      • 2.1. Principe376
      • 2.2. Version récursive376
      • 2.3. Version itérative381
      • 3. La recherche par interpolation 382
      • 4. Tables de hachage ou adressage dispersé 383
      • 4.1. Principe383
      • 4.2. La fonction de hachage384
      • 4.3. Table de hachage chaînée386
      • 4.4. Table de hachage à adressage ouvert403
      • 5. Les arbres de recherche équilibrés 407
      • 5.1. Principe407
      • 5.2. Fonctionnement d'un arbre AVL408
      • 5.3. Gestion du facteur d'équilibre409
      • 5.4. Rotations des arbres AVL410
      • Résumé 414
      • Exercices 415
      • Solutions 416
      • Les méthodes numériques463
      • 1. Interpolation polynomiale 463
      • 1.1. Principe463
      • 1.2. Rappel sur les polynômes464
      • 1.3. Le polynôme d'interpolation465
      • 1.4. Le programme469
      • 1.5. La fonction interpolate.interp1d de la bibliothèque Python scipy484
      • 2. Méthode des moindres carrés 486
      • 2.1. Principe486
      • 2.2. Rappel sur le calcul des distances487
      • 2.3. Le programme488
      • 2.4. La fonction linalg.lstsq de la bibliothèque Python numpy498
      • 3. Recherche des solutions d'équations 500
      • 3.1. Principe de la méthode de Newton500
      • 3.2. Rappel sur les dérivées501
      • 3.3. Choix du point de départ pour la méthode de Newton504
      • 3.4. Le programme506
      • 3.5. La fonction optimize.bisect de la bibliothèque Python scipy541
      • Résumé 542
      • Les algorithmes classiques543
      • 1. Algorithme du plus court chemin de Dijkstra 543
      • 1.1. Rappel sur les graphes543
      • 1.2. Description de l'algorithme544
      • 1.3. L'algorithme547
      • 1.4. Application au calcul d'itinéraire573
      • 2. Algorithme de compression de données de Huffman 574
      • 2.1. Principe de la compression de données574
      • 2.2. Description de l'algorithme575
      • 2.3. L'algorithme579
      • Résumé 637
      • Index 639

  • Origine de la notice:
    • Electre
  • Disponible - 681.21 LER

    Niveau 3 - Informatique