Algorithmique, Structures des Données et Programmation Pascal et C++
Tome 1
Types de Données, Structures de Contrôle, Sous-Programmes et Fichiers Externes
Deuxième édition revue et augmentée
Serigne Bira Gueye
L'Harmattan
Avant-propos
vii
Table des Matières
xi
Table des Figures
xvii
Liste des Tableaux
xxi
1 Présentation, Définitions23
1.1 Systèmes de Numération23
1.1.1 Système Décimal ou de Base 1023
1.1.2 Système de Base 2 ou Binaire24
1.1.3 Système de Base 8 ou Octal24
1.1.4 Système de Base 16 ou Hexadécimal25
1.1.5 Tableau Récapitulatif25
1.2 Niveaux de Langages de Programmation26
1.2.1 Langage-Machine26
1.2.2 Langage d'assemblage, Assembleur (Assembler)26
1.2.3 Langage Haut-Niveau, Langage Evolué27
1.2.4 Récapitulation27
1.2.5 Exemples de Langages Haut-Niveau27
1.3 Etapes de la Programmation27
1.3.1 Quel est le Problème Posé ?28
1.3.2 Construction d'un modèle28
1.3.3 Spécification28
1.3.4 Algorithme28
1.3.5 Codage dans le Langage Choisi28
1.3.6 Compilation et Corrections des Erreurs de Syntaxe29
1.3.7 Exécution et Tests29
1.3.8 Documentation29
1.4 Conclusion30
1.5 Exercices30
2 Notions de Base, Premier Algorithme, Premier Programme33
2.1 Structure d'un Algorithme, Structure d'un Programme33
2.2 Entrée et Sortie des Données(input, output)34
2.2.1 Entrée des Données (input), Lecture des Données34
2.2.2 Lecture Interactive34
2.2.3 Sortie des Données (output), Ecriture des Données35
2.2.4 Readln, Writeln35
2.3 Constantes, Variables, Identifiants, Affectations, Commentaires35
2.3.1 Constantes35
2.3.2 Variables35
2.3.3 Identifiant (Identifier)36
2.3.4 Affectation (Assignment)36
2.3.5 Commentaires37
2.4 Présentation d'un Algorithme37
2.4.1 Pseudo-Langage37
2.4.2 Diagramme de Nassi-Shneiderman (NSD), Structogramme37
2.4.3 Diagramme de Flux38
2.5 Conclusion40
2.6 Exercices40
3 Types Élémentaires de Données, Types de Base45
3.1 Le Type Entier (integer)45
3.1.1 Catégories d'Entiers45
3.1.2 Opérateurs pour les Entiers46
3.2 Le Type Booléen (boolean)46
3.2.1 Définition46
3.2.2 Opérateurs Logiques47
3.3 Le Type Réel (real)48
3.3.1 Définition48
3.3.2 Opérateurs pour les Réels49
3.4 Le Type Caractère (character)50
3.4.1 Définition50
3.4.2 Opérateurs pour les Caractères50
3.4.3 Code ASCII à 7 bits51
3.5 Conclusion51
3.6 Exercices51
4 Structures de Contrôle 1 : Séquence et Branchements55
4.1 La Séquence55
4.2 Le Bloc d'instructions (Block)56
4.3 Structures de Branchement56
4.3.1 La Condition Si, Branchement Conditionné (if)56
4.3.2 Choix, Sélection, ʼSelonʼ, ʼCas Oùʼ60
4.4 Goto : Saut Labellisé64
4.4.1 Syntaxe de Goto65
4.4.2 Exemple en Pascal65
4.5 Conclusion65
4.6 Exercices66
5 Structures de Contrôle 2 : Les Boucles69
5.1 Introduction69
5.2 Les Boucles ʼPourʼ et ʼTant Queʼ70
5.2.1 La Boucle ʼPour ʼ(For-Loop)70
5.2.2 La Boucle ʼTant Que ʼ (While-Loop)77
5.3 La Boucle ʼRépéter ... Jusqu'àʼ (Repeat)79
5.3.1 Syntaxe de la Boucle ʼRépéter ... Jusqu'àʼ79
5.3.2 Exemples en Pascal80
5.3.3 Structogramme, NSD80
5.3.4 Diagramme de Flux de la Boucle ʼRépéter . Jusqu'à ʼ81
5.4 Comparaison des Boucles ʼPourʼ, ʼTant Queʼ et ʼRépéterʼ82
5.4.1 Pre-Check Loop : ʼPourʼ et ʼTant Queʼ82
5.4.2 Post-Check Loop : ʼRépéter...Jusqu'àʼ82
5.5 Exercices d'Application83
5.5.1 Produit Itératif : Puissance, Factorielle83
5.5.2 Calcul du Nombre d'Euler e85
5.6 Conclusion87
5.7 Exercices87
6 Le Type Tableau ou Array : Les Tableaux91
6.1 Tableau à une Dimension ou Vecteur91
6.1.1 Déclaration d'un Tableau92
6.1.2 Déclaration en Pascal92
6.1.3 Accès aux Eléments du Tableau92
6.1.4 Analogie avec un Vecteur en Mathématiques92
6.1.5 Lecture, Ecriture, Traitement d'un Tableau93
6.1.6 Exercices d'Application93
6.2 Tableau à deux Dimensions ou Matrice96
6.2.1 Déclaration d'un Tableau à deux Dimensions96
6.2.2 Lecture, Ecriture, Traitement d'une Matrice97
6.2.3 Exercices d'Application98
6.3 Tableau à 3-, 4-, N-Dimensions103
6.4 Conclusion103
6.5 Exercices104
7 Types de Données Structurés109
7.1 Définition d'un Nouveau Type de Données109
7.2 Le Type Enuméré, Enumération109
7.2.1 Définition109
7.2.2 Opérateurs, Opérations110
7.3 Le Type Intervalle Ordinal (Subrange)112
7.3.1 Exemple112
7.3.2 Syntaxe112
7.4 Sous-Ensemble (Set)113
7.4.1 Exemple113
7.4.2 Syntaxe113
7.4.3 Opérateurs d'Ensemble114
7.5 Les Chaînes de Caractères (String)115
7.5.1 Définition, Déclaration115
7.5.2 Opérateurs de Strings116
7.6 Les Enregistrements ou Structures (Record)117
7.6.1 Définition d'une Structure117
7.6.2 Accès aux Eléments d'un Enregistrement118
7.6.3 Applications Diverses119
7.7 Conclusion120
7.8 Exercices120
8 Sous-Programmes : Fonctions et Procédures123
8.1 Fonctions123
8.1.1 Introduction123
8.1.2 Déclaration et Définition d'une Fonction123
8.2 Procédures126
8.3 Appel d'un Sous-Programme : Call-by-Value, Call-by-Reference128
8.3.1 Call-by-Value128
8.3.2 Call-by-Reference130
8.4 Scope : Données Globales, Données Locales130
8.5 Récursion, Récursivité132
8.5.1 Fonction Récursive132
8.5.2 Procédure Récursive134
8.6 Données Aléatoires, Random, Randomize134
8.7 Exercices et Applications135
8.8 Conclusion138
8.9 Exercices138
9 Le Type Fichier (File Handling)143
9.1 Types de Fichiers143
9.2 Généralités sur les Traitements de Fichiers144
9.3 Déclaration d'un Fichier144
9.3.1 Fichier d'un Type de Données, File Of144
9.3.2 Fichier-Texte , Text-File (Text)145
9.3.3 Le Type File145
9.4 Assignation d'un Fichier145
9.5 Créer un Fichier Vide, Réécriture (Rewrite)146
9.6 Fermer un Fichier, Close()147
9.7 Lecture d'un Fichier, Reset() et EOF()147
9.8 Ecriture, Ajout dans un Fichier, Append()148
9.9 Renommer, Supprimer un Fichier Externe, Rename() et Erase()149
9.10 Application : Fichier de Plot149
9.11 Application : Séries de Fourier151
9.12 Bibliothèques, Include, Uses, Programmes Externes152
9.12.1 Include152
9.12.2 Uses153
9.13 Conclusion154
9.14 Exercices154
10 Programmation Impérative en CH++ : 1ere Partie157
10.1 Premier Programme, Types Simples157
10.1.1 Structure d'un programme en C++157
10.1.2 Types Simples ou Primitifs de Données158
10.1.3 Constante, Variable, Affectation, Commentaire159
10.1.4 Donnée Globale, Donnée Locale, Scope160
10.1.5 Donnée Automatique, Donnée Statique161
10.2 Types Structurés de Données162
10.2.1 Tableaux (Arrays)162
10.2.2 String, Chaînes de Caractères163
10.2.3 Enumération (enum), Type Enuméré164
10.2.4 Structures, struct (Record, Enregistrements)165
10.2.5 typedef167
10.3 Opérateurs ++,--, +=, - =, *=, /=, %=167
10.3.1 Opérateurs ++ et -167
10.3.2 Opérateurs +=, - =, *=, /=, %=168
10.4 Branchements : Condition et Choix168
10.4.1 Choix : switch168
10.4.2 Condition : if169
10.4.3 Opérateur Ternaire Conditionnel ( ? : )170
10.5 Conclusion170
10.6 Exercices171
11 Programmation Impérative en C++ : 2e Partie175
11.1 Boucles : Loop175
11.1.1 Boucle ʼPourʼ : for175
11.1.2 Boucle ʼTant Queʼ : while177
11.1.3 Boucle Répéter : do-while178
11.1.4 Comparaison des Boucles en C++180
11.2 Fonctions et Procédures180
11.2.1 Généralités180
11.2.2 Fonction Définie avant main()181
11.2.3 Fonction Définie après main()182
11.2.4 Fonction Récursive183
11.2.5 Procédure184
11.2.6 Call-by-Reference184
11.3 Fichiers Externes186
11.3.1 Ecriture dans un Fichier Externe186
11.3.2 Lecture d'un Fichier Externe187
11.4 Préprocesseur, Macro188
Tl.4.1 #include188
11.4.2 #define, #undef188
11.4.3 #fif, #else, #elif, #endif, #ifdef, #ifndef189
11.4.4 #error, #line, #pragma189
11.5 Conclusion190
11.6 Exercices190
Annexes193
A Mots Réservés du langage Pascal
195
A.l Mots Réservés de Turbo Pascal195
A.2 Mots Réservés de Free Pascal195
A.3 Mots Réservés de Pascal Objet195
A.4 Modificateurs195
B Mots Réservés et Opérateurs en C++
199
B.1 C++ Keywords199
B.2 Opérateurs200
Index
203