Algorithmique
Des bases à la programmation orientée objet en Java (avec exercices et corrigés)
Tous les langages de programmation ont leurs spécificités mais lorsqu'un développeur crée un nouveau programme, la première étape est toujours la même : réfléchir à l'enchaînement des différentes actions à réaliser par la machine. L'objectif de ce livre est de vous apprendre à comprendre et concevoir les algorithmes permettant [...]
[lire le résumé du livre]
Auteur : Hervé BOISGONTIER
Editeur : Eni
Collection : Ressources informatiques
Date parution : 11/2023 (2ème édition)CB Google/Apple Pay, Chèque, Virement
Quel est le sujet du livre "Algorithmique"
Tous les langages de programmation ont leurs spécificités mais lorsqu'un développeur crée un nouveau programme, la première étape est toujours la même : réfléchir à l'enchaînement des différentes actions à réaliser par la machine. L'objectif de ce livre est de vous apprendre à comprendre et concevoir les algorithmes permettant le fonctionnement d'un programme.
Pour cela, après une introduction générale sur l'algorithmique, vous apprenez les bases de la programmation en utilisant du pseudo-code : variables, conditionnelles, boucles, tableaux, procédures et fonctions.
Ensuite, ce livre présente les concepts de la programmation orientée objet, utilisée par la plupart des langages actuels, en utilisant l'algorithmique mais également comment programmer en orienté objet avec Java. Ainsi, vous apprenez à créer des classes et des instances de celles-ci, à créer des associations entre elles, à utiliser la notion d'héritage, de classes abstraites et d'interfaces. Vous serez capable de traiter des exceptions et de traquer les bugs de vos applications. Vous apprendrez à utiliser la généricité afin de coder des méthodes, des interfaces et des classes génériques.
Un chapitre du livre est consacré à l'organisation de la mémoire afin de mieux comprendre le fonctionnement de la programmation.
Enfin, le dernier chapitre du livre présente la notion de complexité d'un algorithme en illustrant cela au travers de différents algorithmes de tris de tableaux.
Afin de vous aider à mettre en pratique et à développer votre maîtrise de l'algorithmique et de Java, des exercices sont proposés avec leurs corrections en pseudo-code ainsi que leurs implémentations en Java.
La plupart des algorithmes (exemples et exercices) de ce livre sont implémentés en Java et les sources, directement utilisables, sont disponibles en téléchargement sur le site www.editions-eni.fr.Téléchargements
Sommaire et contenu du livre "Algorithmique - Des bases à la programmation orientée objet en Java (avec exercices et corrigés)"
Introduction à l’algorithmique
- 1. Introduction
- 2. Les algorithmes hors du domaine de l’informatique
- 3. Les objectifs de l’algorithmique
- 3.1 La conception
- 3.2 La complexité
- 3.3 La calculabilité
- 3.4 La correction
- 4. Les représentations possibles pour un algorithme informatique
- 4.1 Les logigrammes
- 4.2 Le pseudo-code
Le pseudo-code
- 1. La structure de l’algorithme
- 2. Les commentaires
- 3. La déclaration de variables
- 3.1 Qu'est-ce qu'une variable ?
- 3.2 Les types
- 3.3 La déclaration d'une variable
- 4. L'affectation d'une valeur
- 5. La déclaration d'une constante
- 6. Les opérations
- 6.1 Les opérations arithmétiques
- 6.1.1 Les quatre opérations arithmétiques usuelles
- 6.1.2 La division entière et son reste
- 6.1.3 Les opérateurs d'affectation combinésà un opérateur arithmétique
- 6.1.4 L'incrémentation et la décrémentation
- 6.1.5 La priorité d'exécution des calculs
- 6.1 Les opérations arithmétiques
- 6.2 Les opérateurs de comparaison
- 6.2.1 L'égalité
- 6.2.2 La différence
- 6.2.3 La supériorité et l'infériorité
- 6.3 Les opérateurs booléens
- 6.3.1 L'opérateur et
- 6.3.2 L'opérateur ou
- 6.3.3 L'opérateur non
- 7.1 L’écriture de messages à l’utilisateur
- 7.2 L’affichage formaté en Java
- 7.3 L’affichage standard et l’affichage des erreurs en Java
- 7.4 La saisie de valeur par l'utilisateur
- 9.1 L’utilisation de Notepad++ pour écrire du pseudo-code
- 9.2 Les environnements de développement intégré
- 10.1 Valeurs des variables
- 10.2 Quels affichages ?
- 10.3 Il fait quoi ?
- 10.4 Vitesse moyenne
- 11.1 Valeurs des variables
- 11.2 Quels affichages ?
- 11.3 Il fait quoi ?
- 11.4 Vitesse moyenne
Les conditionnelles
- 1. Présentation
- 2. La structure de contrôle Si (forme simple)
- 3. La structure de contrôle Si (forme double)
- 4. L'imbrication des structures de contrôle
- 5. La structure de contrôle Selon
- 6. L’opérateur ternaire ? :
- 7. Exercices
- 7.1 La météo
- 7.2 La météo version 2
- 7.3 Le nom du mois
- 7.4 Le temps de cuisson
- 7.5 Le bulletin de paie
- 8. Solutions des exercices
- 8.1 La météo
- 8.2 La météo version 2
- 8.3 Le nom du mois
- 8.4 Le temps de cuisson
- 8.5 Le bulletin de paie
Les boucles
- 1. Présentation
- 2. La structure de contrôle Pour
- 3. La structure de contrôle TantQue
- 4. La structure de contrôle Répéter
- 5. Le choix de la boucle la plus adaptée
- 6. Les boucles imbriquées
- 7. Exercices
- 7.1 La moyenne de notes (version 1)
- 7.2 La moyenne de notes (version 2)
- 7.3 La moyenne de notes (version 3)
- 7.4 Devinez à quel nombre je pense
- 7.5 À moi de trouver
- 7.6 Que fait cet algorithme ?
- 7.7 Affichage de répliques de films (version 1)
- 7.8 Affichage de répliques de films (version 2)
- 7.9 Saisie d’un multiple de trois
- 7.10 ASCII Art !
- 7.11 ASCII Art 2
- 8. Solutions des exercices
- 8.1 La moyenne de notes (version 1)
- 8.2 La moyenne de notes (version 2)
- 8.3 La moyenne de notes (version 3)
- 8.4 Devinez à quel nombre je pense
- 8.5 À moi de trouver
- 8.6 Que fait cet algorithme ?
- 8.7 Affichage de répliques de films (version 1)
- 8.8 Affichage de répliques de films (version 2)
- 8.9 Saisie d’un multiple de trois
- 8.10 ASCII Art !
- 8.11 ASCII Art 2
Les tableaux
- 1. Présentation
- 2. La déclaration d’un tableau
- 3. L’utilisation d’un tableau
- 4. Le parcours d’un tableau
- 5. Les tableaux : un type référence
- 6. Les tableaux multidimensionnels
- 7. Exercices
- 7.1 Décollage immédiat
- 7.2 Nombres d'occurrences
- 7.3 Moyenne de notes (version 4)
- 7.4 Machine à voter
- 7.5 Palindrome
- 7.6 Que fait-il donc ?
- 7.7 Matrix
- 7.8 Micro bataille navale
- 7.9 Morpion
- 8. Solutions des exercices
- 8.1 Décollage immédiat
- 8.2 Nombres d'occurrences
- 8.3 Moyenne de notes (version 4)
- 8.4 Machine à voter
- 8.5 Palindrome
- 8.6 Que fait-il donc ?
- 8.7 Matrix
- 8.8 Micro bataille navale
- 8.9 Morpion
Les procédures et fonctions
- 1. Présentation
- 2. La déclaration d'un sous-algorithme
- 2.1 Déclaration d'une procédure
- 2.2 Déclaration d'une fonction
- 3. L'appel à un sous-algorithme
- 3.1 L'appel à une procédure
- 3.2 L'appel à une fonction
- 4. La transmission d'informations entreun sous-algorithme et l'algorithme appelant
- 4.1 Les constantes globales
- 4.2 Le passage de paramètres
- 4.2.1 Le passage en paramètres des types valeur
- 4.2.2 Le passage en paramètre des types référence
- 4.3 Le retour d'une fonction
- 6.1 C'est le plus grand
- 6.2 Micro bataille navale (version 2)
- 6.3 Un tableau et des fonctions
- 6.4 Le jeu du saute-mouton
- 6.5 ASCII Art Studio
- 7.1 C'est le plus grand
- 7.2 Micro bataille navale (version 2)
- 7.3 Un tableau et des fonctions
- 7.4 Le jeu du saute-mouton
- 7.5 ASCII Art Studio
La programmation orientée objet
- 1. Présentation
- 1.1 Qu'est-ce que la programmation orientée objet ?
- 1.2 L'intérêt de la programmation orientée objet
- 2. Les notions de classe et d'instance
- 3. La déclaration d'une classe
- 4. Les attributs d’instance
- 5. Les constantes
- 6. Les méthodes d'instance
- 6.1 La déclaration d'une méthode d'instance
- 6.2 Les méthodes Getters et Setters
- 6.3 La surcharge de méthodes
- 7. La création d’une instance
- 7.1 La déclaration et l'instanciation d'une variable de type classe
- 7.2 Les tableaux d'instances
- 8. Les constructeurs
- 8.1 Le constructeur par défaut
- 8.2 Les constructeurs
- 8.3 La surcharge de constructeurs
- 9. Les attributs de classe
- 10. Les méthodes de classe
- 10.1 La déclaration d'une méthode de classe
- 10.2 L’appel à une méthode de classe
- 10.3 Récapitulatif des méthodes de classepar rapport aux méthodes d'instance
- 11. Les instances : un type référence
- 12. Exercices
- 12.1 Les dés
- 12.2 Les clients
- 12.3 Micro bataille navale (version 3)
- 12.4 Micro bataille navale (version 4)
- 13. Solutions des exercices
- 13.1 Les dés
- 13.2 Les clients
- 13.3 Micro bataille navale (version 3)
- 13.4 Micro bataille navale (version 4)
Les relations entre les classes
- 1. Présentation
- 2. L'utilisation d'une classe par une autre
- 3. Les associations
- 4. L’héritage
- 4.1 La notion d'héritage
- 4.2 La déclaration de l'héritage
- 4.3 Les constructeurs et l'héritage
- 4.3.1 Le constructeur par défaut
- 4.3.2 Définir un constructeur
- 4.4 La substitution de méthodes
- 4.5 Le transtypage
- 4.5.1 Le transtypage ascendant
- 4.5.2 Le transtypage descendant
- 4.5.3 Le transtypage et les méthodes substituées
- 5.1 La définition
- 5.2 L'accès aux attributs
- 6.1 L'encapsulation des constructeurs
- 6.2 Un nommage différent pour les créateurs d'instance
- 6.3 Le renvoi d'un sous-type
- 7.1 La bataille de dés
- 7.2 Les clients (version 2)
- 8.1 La bataille de dés
- 8.2 Les clients (version 2)
Les éléments abstraits
- 1. Les classes abstraites
- 2. Les méthodes abstraites
- 2.1 La déclaration de méthodes abstraites
- 2.2 L'implémentation d'une méthode abstraite
- 2.3 L'appel à des méthodes abstraites
- 3. Les interfaces
- 3.1 La déclaration d'une interface
- 3.2 L'implémentation d'une interface
- 3.3 Le transtypage et les interfaces
- 3.4 Les méthodes par défaut en Java
- 4. Exercices
- 4.1 La location de cycles
- 4.1.1 Les classes et leurs attributs
- 4.1.2 Les méthodes
- 4.1.3 Le code
- 4.1 La location de cycles
- 4.2 Vitesse moyenne version multilingue
- 5.1 La location de cycles
- 5.1.1 Les classes et leurs attributs
- 5.1.2 Les méthodes
- 5.1.3 Le code
Les erreurs et les exceptions
- 1. Présentation
- 2. Les erreurs détectées à la compilation
- 3. Les erreurs détectées à l'exécution
- 3.1 Les erreurs irrécupérables
- 3.1.1 La saturation de la pile des appels de méthodes
- 3.1.2 La saturation de la mémoire
- 3.1.3 Solutions
- 3.1 Les erreurs irrécupérables
- 3.2 Les exceptions en algorithmique
- 3.2.1 Le traitement d’une exception
- 3.2.2 La levée d'une exception
- 3.3 Les exceptions en Java
- 3.3.1 La levée d'une exception
- 3.3.2 Les catégories d'exceptions
- 3.3.3 La propagation d'une exception
- 3.3.4 Le traitement d'une exception
- 3.3.5 Les traitements à effectuer dans tous les cas
- 3.4 Les exceptions personnalisées en Java
- 4.1 Le calcul de la racine carrée
- 4.2 La calculatrice en Java
- 4.2.1 Création d’une classe DepassementCapaciteException
- 4.2.2 Création de la classe utilitaire Operation
- 4.2.3 Création de la calculatrice
- 5.1 Le calcul de la racine carrée
- 5.2 La calculatrice en Java
- 5.2.1 Création d’une classe DepassementCapaciteException
- 5.2.2 Création de la classe utilitaire Operation
- 5.2.3 Création de la calculatrice
La généricité
- 1. Présentation
- 2. Les procédures et les fonctions génériques
- 2.1 La déclaration
- 2.2 L'appel
- 2.3 L'utilisation du type générique dans la procédureou la fonction
- 2.4 Les contraintes sur un type générique
- 2.4.1 Type avec des valeurs ordonnées
- 2.4.2 Type implémentant une interface
- 2.4.3 Type héritant d'une classe
- 2.5 Plusieurs types génériques
- 3.1 La déclaration
- 3.2 L'instanciation
- 4.1 La déclaration
- 4.2 L'implémentation
- 4.2.1 L'implémentation par une classe non générique
- 4.2.2 L'implémentation par une classe générique
- 5.1 Les méthodes génériques
- 5.1.1 La déclaration
- 5.1.2 L'appel
- 5.1.3 Les méthodes génériques de Java
- 5.2.1 Type héritant d'une classe ou implémentantune interface
- 5.2.2 Type de valeurs ordonnées
- 5.3.1 La déclaration
- 5.3.2 L'instanciation
- 5.3.3 Les classes génériques de Java
- 5.4.1 La déclaration
- 5.4.2 L'implémentation
- 5.4.3 Les interfaces génériques de Java
- 6.1 Tirage au sort
- 6.2 À l'envers
- 6.3 Se mélanger les pinceaux
- 6.4 Le plus grand
- 6.5 Procédures et fonctions génériques en Java
- 6.6 Apprentissage liste de vocabulaire
- 6.7 Le podium
- 7.1 Tirage au sort
- 7.2 À l'envers
- 7.3 Se mélanger les pinceaux
- 7.4 Le plus grand
- 7.5 Procédures et fonctions génériques en Java
- 7.5.1 Tirage au sort
- 7.5.2 À l'envers
- 7.5.3 Se mélanger les pinceaux
- 7.5.4 Le plus grand
La mémoire
- 1. Présentation
- 2. Les bases
- 2.1 Les nombres entiers
- 2.1.1 Les bases utilisées en informatique
- 2.1.2 Notation
- 2.1.3 La conversion d'une base vers la base dix
- 2.1.4 La conversion de la base dix vers une autre base
- 2.1 Les nombres entiers
- 2.2 Les nombres réels
- 2.2.1 La conversion d'une base vers la base dix
- 2.2.2 La conversion de la base dix vers une autre base
- 3.1 Les octets
- 3.1.1 Les bits et les octets
- 3.1.2 Les multiples
- 4.1 La forme normalisée
- 4.2 La norme IEEE-754
- 4.2.1 Le codage du signe
- 4.2.2 Le codage de l'exposant
- 4.2.3 Le codage de la mantisse
- 4.2.4 L'assemblage
- 4.2.5 Les valeurs particulières
- 5.1 Le code ASCII
- 5.2 Les pages nationales ou ASCII étendu
- 5.3 L'Unicode
- 5.3.1 L'UTF-32
- 5.3.2 L'UTF-16
- 5.3.3 L'UTF-8
- 5.4.1 L'incrémentation et la décrémentation
- 5.4.2 Le changement de type
- 5.4.3 L'addition et la soustraction
- 5.4.4 La comparaison
- 6.1 La pile
- 6.2 Le tas
- 6.3 Les instances et les tableaux
- 6.3.1 Les instances
- 6.3.2 Les instances et l'héritage
- 6.3.3 Les tableaux
- 6.3.4 Les opérations sur les instances et les tableaux
- 6.4.1 Le passage en paramètre de types valeur
- 6.4.2 Le passage en paramètre de types référence
- 6.5.1 Le retour d'un type valeur
- 6.5.2 Le retour d'un type référence
- 7.1 Conversion d'une base à une autre
- 7.1.1 Convertir les valeurs suivantes en base 10
- 7.1.2 Convertir les valeurs suivantes en base 2 et en base 16
- 7.1.3 Convertir les valeurs suivantes en base 16
- 7.1.4 Convertir les valeurs suivantes en base 2
- 7.1.5 Convertir les valeurs suivantes en base 10
- 7.1.6 Convertir les valeurs suivantes en base 2
- 7.3.1 Comment sont codées les valeurs suivantes en byte ?
- 7.3.2 Comment sont codées les valeurs suivantes en short ?
- 7.3.3 Comment sont codées les valeurs suivantes en int ?
- 7.4.1 Quelles valeurs sont codées par les octets suivants ?
- 7.4.2 Comment sont codées les valeurs suivantes en float ?
- 8.1 Conversion d'une base à une autre
- 8.1.1 Convertir les valeurs suivantes en base 10
- 8.1.2 Convertir les valeurs suivantes en base 2 et en base 16
- 8.1.3 Convertir les valeurs suivantes en base 16
- 8.1.4 Convertir les valeurs suivantes en base 2
- 8.1.5 Convertir les valeurs suivantes en base 10
- 8.1.6 Convertir les valeurs suivantes en base 2
- 8.3.1 Comment sont codées les valeurs suivantes en byte ?
- 8.3.2 Comment sont codées les valeurs suivantes en short ?
- 8.3.3 Comment sont codées les valeurs suivantes en int ?
- 8.4.1 Quelles valeurs sont codées par octets suivants ?
- 8.4.2 Comment sont codées les valeurs suivantes en float ?
- 8.5.1 UTF-8
- 8.5.2 UTF-32
- 8.5.3 UTF-16
La complexité des algorithmes
- 1. Présentation
- 2. L’ordre de grandeur de la complexité
- 3. Les catégories de complexité
- 4. Illustration avec les algorithmes de tri
- 4.1 Le tri par sélection
- 4.1.1 Le principe de fonctionnement
- 4.1.2 L'algorithme
- 4.1.3 Un exemple d'utilisation
- 4.1.4 La complexité
- 4.1 Le tri par sélection
- 4.2 Le tri à bulles
- 4.2.1 Le principe de fonctionnement
- 4.2.2 L'algorithme
- 4.2.3 Un exemple d'utilisation
- 4.2.4 La complexité
- 4.3 Le tri par insertion
- 4.3.1 Le principe de fonctionnement
- 4.3.2 L'algorithme
- 4.3.3 Un exemple d'utilisation
- 4.3.4 La complexité
- 4.4 Le tri de Shell
- 4.4.1 Le principe de fonctionnement
- 4.4.2 L'algorithme
- 4.4.3 Un exemple d'utilisation
- 4.4.4 La complexité
- 4.5 Le tri fusion
- 4.5.1 Le principe de fonctionnement
- 4.5.2 L'algorithme
- 4.5.3 Un exemple d'utilisation
- 4.5.4 La complexité
- 4.6 Le tri rapide
- 4.6.1 Le principe de fonctionnement
- 4.6.2 L'algorithme
- 4.6.3 Un exemple d'utilisation
- 4.6.4 La complexité
- 4.7 Le tri par tas
- 4.7.1 Le principe de fonctionnement
- 4.7.2 L'algorithme
- 4.7.3 Un exemple d'utilisation
- 4.7.4 La complexité
- 4.8 Synthèse
- 4.9 Les limites de la complexité
- 5.1 L'ordre de grandeur
- 5.2 L'implémentation des algorithmes de tri en Java
- 6.1 L'ordre de grandeur
- 6.2 L'implémentation des algorithmes de tri en Java