Termes les plus recherchés
[PDF](+169👁️) Télécharger FRENCHPDF. COM S'initier À La Programmation pdf
www.frenchpdf.comwww.facebook.com/frenchpdfTélécharger gratuit FRENCHPDF. COM S'initier À La Programmation pdf
1
n
r i j
S'initier a ia
programmation
Avec des exemp/es en
C, C++, C#, Java et PHP
www.frenchpdf.com
CHEZ LE MEME EDITEUR
Du meme auteur
C. Delannoy. - Programmer en Java. Java 5 et 6.
N°12232, 5 e edition, 2007, 800 pages + CD-Rom.
C. Delannoy. - Exercices en Java.
N° 11989, 2 e edition, 2006, 340 pages.
C. Delannoy. - Apprendre le C++.
N°12135, 2007, 760 pages.
C. Delannoy. - C++ pour les programmeurs C.
N°12231, 2007, 620 pages.
C. Delannoy. - Exercices en langage C++.
N°12201, 3 e edition 2007, 336 pages.
C. Delannoy. - Langage C.
N°11123, 1998, 944 pages (format poche).
C. Delannoy. - Programmer en langage C. Avec exercices corriges.
N°11072, 1996, 280 pages.
C. Delannoy. - Exercices en langage C.
N°11105, 1997, 260 pages.
Autres ouvrages
J. Engels. - PHP 5 : cours et exercices.
N°11407, 2005, 518 pages.
E. Daspet et C. Pierre de Geyer. - PHP 5 avance.
N°12167, 4 e edition, 2007, 792 pages.
M. Nebra. Reussir son site web avec XHTML et CSS.
N°12307, 2 e edition, 2008, 316 pages.
R. Goetter. - CSS 2 : pratique du design web.
N°11976, 2 e edition, 2007, 324 pages.
P. Roques. - UML 2 par la pratique.
N°12322, 6 e edition, 2008, environ 380 pages.
H. Bersini, I. Wellesz. - L’oriente objet.
Cours et exercices en UML 2 avec PHP, Java, Python, C# et C+ +
N°12084, 3 e edition, 2007, 520 pages.
C. Soutou, O. Teste. - SQL pour Oracle.
N°12299, 3 e edition 2008, 554 pages.
C. Soutou. - Apprendre SQL avec MySQL.
N°11915, 2006, 418 pages.
A. Brillant. - XML : cours et exercices.
N°12151, 2007, 282 pages.
www.frenchpdf.com
Claude Delannoy
S'initier a ia
pro c rammation
Avec des exemp/es en
C, C++, C#, Java et PHP
EYROLLES
www.frenchpdf.com
EDITIONS EYROLLES
61, bd Saint-Germain
75240 Paris Cedex 05
www.editions-eyrolles.com
PHOTOCOPILLAGE
TUE LE UVRE
DANGER Le code de la propriete intellectuelle du l er juillet 1992 interdit en effet expressement la photocopie a
usage collectif sans autorisation des ayants droit. Or, cette pratique s’est generalisee notamment dans les
etablissements d’enseignement, provoquant une baisse brutale des achats de livres, au point que la possibilite
meme pour les auteurs de creer des oeuvres nouvelles et de les faire editer correctement est aujourd’hui
menacee.
En application de la loi du 11 mars 1957, il est interdit de reproduire integralement ou partiellement le
present ouvrage, sur quelque support que ce soit, sans autorisation de l’editeur ou du Centre Frangais d’ Exploitation du
Droit de Copie, 20, rue des Grands-Augustins, 75006 Paris.
© Groupe Eyrolles, 2008, ISBN : 978-2-212-11990-9
www.frenchpdf.com
Avant-propos
Objectif de I’ouvrage
Ce livre se propose de vous apprendre a programmer en exprimant les concepts
fondamentaux a l’aide d’un « pseudo-code ». Cela vous permet de rediger des programmes
en privilegiant l’aspect algorithmique, sans etre pollue par la complexity et la technicite d’un
langage donne. Par ailleurs, l’ouvrage montre comment ces concepts fondamentaux se
traduisent dans cinq langages tres usites (C, C++, Java, C# et PHP) et fournit des exemples
complets. II prepare ainsi efficacement a l’etude d’un langage reel.
Forme de I’ouvrage
L’ouvrage a ete conqu sous forme d’un cours, avec une demarche tres progressive. De nom-
breux exemples complets, ecrits en pseudo-code et accompagnes du resultat fourni par leur
execution, viennent illustrer la plupart des concepts fondamentaux. Des exercices appropries
proposent la redaction de programmes en pseudo-code, permettant ainsi la mise en pratique
des acquis. Plutot que de les regrouper classiquement en fin de chapitre, nous avons prefere
les placer aux endroits juges opportuns pour leur resolution. Une correction est fournie en fin
de volume ; nous vous encourageons vivement a ne la consulter qu’apres une recherche per-
sonnels et a reflechir aux differences de redaction qui ne manqueront pas d’apparartre.
Chaque chapitre se termine par :
• Une rubrique « Cote langages » qui montre comment les concepts exposes prealablement
s’expriment dans les cinq langages choisis ; elle constitue une sorte de guide de traduction
www.frenchpdf.com
VI
S'initier a la programmation
du pseudo-code dans un veritable langage. Notez que le langage C n’etant pas oriente objet,
il n’est pris en compte que jusqu’au chapitre 8.
• Une rubrique « Exemples langages » qui propose des programmes complets, traduction de
certains des exemples presentes en pseudo-code.
A qui s’adresse cet ouvrage
Cet ouvrage s’adressse aux debutants en programmation et aux etudiants du premier cycle
d’universite. II peut egalement servir :
• a ceux qui apprennent a programmer directement dans un langage donne : il leur permettra
d’accompagner leur etude, en degageant les concepts fondamentaux et en prenant un peu de
recul par rapport a leur langage ;
• a ceux qui maitrisent deja la programmation dans un langage donne et qui desirent « passer
a un autre langage » ;
• a ceux qui connaissent deja la programmation procedural et qui souhaitent aborder la pro-
grammation orientee objet.
Enfin, sa conception permet a l’ouvrage d’etre facilement utilise comme « support de
cours ».
Plan de Pouvrage
Le chapitre 1 presente le role de l’ordinateur, les grandes lignes de son fonctionnement et la
maniere de l’utiliser. Il degage les importantes notions de langage, de programme, de don-
nees et de resultats, de systeme d’ exploitation et d’environnement de programmation.
Le chapitre 2 introduit les concepts de variable et de type, et la premiere instruction de base
qu’est l’affectation. Il se limite a trois types de base : les entiers, les reels et les caracteres. Il
presente les erreurs susceptibles d’apparaitre dans revaluation d’une expression et les
differentes fagons dont un langage donne peut les gerer. On y inclut les notions d’expression
mixte et d’expression constante.
Le chapitre 3 est consacre aux deux autres instmctions de base que sont la lecture et
l’ecriture. Il nous a paru utile de les placer a ce niveau pour permettre, le plus rapidement
possible, de presenter et de faire ecrire des programmes complets. On situe ces instructions
par rapport aux differents modes de communication entre l’utilisateur et le programme :
mode console, programmation par evenements, mode batch, programmation Internet.
Le chapitre 4 etudie la structure de choix, en presentant la notion de condition et en introdui-
sant le type booleen. On y aborde les choix imbriques. L’ existence de structures de choix
multiple (instruction switch des cinq langages examines) est evoquee dans la partie « Cote
langages ».
www.frenchpdf.com
Avant-propos
VII
Le chapitre 5 aborde tout d’abord les structures de repetition conditionnelle. II presente la
notion de compteur, avant d’examiner les structures de repetition inconditionnelle (ou « avec
compteur ») et les risques inherents a la modification intempestive du compteur.
Le chapitre 6 presente les « algorithmes elementaires » les plus usuels : comptage, accumu-
lation, recherche de maximum, imbrication de repetitions. II donne un apergu de ce qu’est
P iteration.
Le chapitre 7 traite des tableaux, a une ou deux dimensions. II se place a priori dans un
contexte de gestion statique des emplacements memoire correspondants et il decrit les
contraintes qui pesent alors sur la taille d’un tableau. Les autres modes de gestion
(automatique et dynamique) sont neanmoins evoques en fin de chapitre, ainsi que la notion
de tableau associatif (utilise par exemple par PHP) qui est comparee a celle de tableau indice.
Les situations de debordement d’indice sont examinees, avec leurs consequences potentielles
dependantes du langage.
Le chapitre 8 est consacre aux fonctions. II presente les notions de parametres, de variable
locale et de resultat, et distingue la transmission par valeur de la transmission par reference
(par adresse), en examinant le cas particulier des tableaux. II aborde la duree de vie des varia-
bles locales, ce qui amene a traiter du mode de gestion automatique correspondant (et du
concept de pile qu’il utilise souvent). II degage le concept de « programme principal » ou de
« fonction principale ». Enfin, il donne un apergu de ce qu’est la recursivite.
Le chapitre 9 introduit les notions de classe, d’attribut, d’objet, de methode, d’encapsulation
des donnees et de constructeur. Il fournit quelques elements concernant les deux modes de
gestion possibles des objets, a savoir par reference ou par valeur. Il etudie les possibility's
d’amendement du principe d’encapsulation par modification des droits d’acces aux attributs
ou aux methodes.
Le chapitre 10 examine l’incidence du mode de gestion des objets (par reference ou par
valeur) sur l’affectation d’objets et sur la duree de vie des objets locaux. Il aborde les objets
transmis en parametre et il convient, comme c’est le cas dans la plupart des langages objet,
que « l’unite d’encapsulation est la classe et non l’objet ». Il analyse le cas des objets fournis
en resultat. Puis, il etudie les attributs et les methodes de classe, et traite sommairement des
tableaux d’objets et des problemes qu’ils posent dans l’appel des constructeurs, ainsi que des
situations « d’auto-reference ».
Le chapitre 11 est consacre a la composition des objets, c’est-a-dire au cas ou un attribut
d’une classe est lui-meme de type classe. Il examine les problemes qui peuvent alors se poser
au niveau des droits d’acces et dans la nature de la relation qui se cree entre les objets concer-
nes. Il presente la distinction entre copie profonde et copie superficielle d’un objet. Il montre
egalement comment resoudre un probleme frequent, a savoir realiser une classe a instance
unique (singleton).
Le chapitre 12 presente la notion d’heritage ou de classe derivee et son incidence sur les
droits d’acces aux attributs et aux methodes. Il fait le point sur la construction des objets der-
ives avant de traiter de la redefinition des methodes. Il aborde les situations de derivations
www.frenchpdf.com
VIII
S'initier a la programmation
successives et decrit succinctement les possibilities de modification des droits d’acces lors de
la definition d’une classe derivee.
Le chapitre 13 expose les notions de base du polymorphisme, a savoir la compatibilite par
affectation et la ligature dynamique. II en examine les consequences dans plusieurs situations
et montre quelles sont les limites de ce polymorphisme, ce qui conduit, au passsage, a parler
de valeurs de retour covariantes presentes dans certains langages.
Le chapitre 14 traite enfin de concepts moins fondamentaux que l’heritage ou le polymor-
phisme, parfois absents de certains langages, mais qui peuvent faciliter la conception des
logiciels. II s’agit des notions de classes abstraites (ou retardees), d’interface et d’heritage
multiple.
Justifications de certains choix
Void quelques elements justifiant les choix que nous avons opere dans la conception de cet
ouvrage.
• Nous presentons la programmation procedurale avant d’introduire la programmation objet,
pour differentes raisons :
- la plupart des langages objet actuels offrent des possibility de programmation
procedurale ;
- la programmation orientee objet s’appuie sur les concepts de la programmation
procedurale ; la seule exception concerne la notion de fonction independante qui peut
etre absente de certains langages objet mais qui se retrouve quand meme sous une
forme tres proche dans la notion de methode ;
- sur un plan pedagogique, il est difficile d’introduire directement des methodes dans
une classe si l’on n’a pas encore etudie l’algorithmique procedurale.
• Dans le choix des concepts fondamentaux, nous avons evite de nous limiter a un sous-
ensemble commun a tous les langages car cela aurait ete trop reducteur a notre sens. Nous
avons choisi les concepts qu’il nous a paru important de maitriser pour pouvoir ensuite
aborder la programmation dans n’importe quel langage.
Ces choix font ainsi du pseudo-code, non pas la « matrice » de tous les langages, mais plutot
un langage a part entiere, simple, mais renfermant la plupart des concepts fondamentaux de
la programmation - certains pouvant ne pas exister dans tel ou tel langage. C’est
precisement le role de la partie « Cote langages » que de monter en quoi les langages reels
peuvent differer les uns des autres et ce au-dela de leur syntaxe (les cinq langages choisis
possedent la meme syntaxe de base et jouissent pourtant de proprietes differentes). Ainsi, le
lecteur est non seulement amene a programmer en pseudo-code mais, en meme temps, il est
prepare a affronter un vrai langage. Void par exemple quelques points sur lesquels les
langages peuvent se differencier les uns des autres :
www.frenchpdf.com
Avant-propos
IX
- mode de traduction : compilation (C, C++), interpretation (PHP) ou traduction dans un
langage intermediaire (Java, C) ;
- mode de gestion de la memoire : statique, automatique, dynamique ;
- nature des expressions constantes et des expression mixtes ;
- gestion des tableaux (sous forme indicee ou sous forme de tableau associatif comme en
PHP);
- mode de transmission des parametres d’une fonction : par valeur, par reference ;
- utilisation pour les objets d’une « semantique de valeur » ou d’une « semantique de
reference » (Java n’utilise que la premiere, tandis que C++ utilise les deux) ;
- mode standard de recopie des objets : copie superficielle ou copie profonde.
• Nous n’avons pas introduit de type chalne car son implementation varie fortement suivant
les langages (type de base dans certains langages proceduraux, type hybride en C, type
classe dans les langages objet...). Sa gestion peut se faire par reference ou par valeur. Dans
certains langages, ces chalnes sont constantes (non modifiables), alors qu’elles sont
modifiables dans d’autres...
www.frenchpdf.com
www.frenchpdf.com
Table des matieres
Chapitre 1 : Ordinateur, programme et langage 1
1 - Le role de l’ordinateur 1
1 . 1 La multiplicite des applications 1
1.2 Le programme : source de diversite 2
1 .3 Les donnees du programme, les resultats 2
1 .4 Communication ou archivage 3
2 - Pour donner une forme a l’information : le codage 3
2.1 L’ordinateur code l’information 3
2.2 L’homme code l’information 4
2.3 Ce qui differencie l’homme de l’ordinateur 4
3 - Fonctionnement de l’ordinateur 5
3.1 A chacun son role 5
3.2 La memoire centrale 6
3.3 L’unite centrale 7
3.4 Les peripheriques 7
3.4.1 Les peripheriques de communication 7
3.4.2 Les peripheriques d' archivage 7
4 - Le langage de l’ordinateur 8
4. 1 Langage machine ou langage de notre cru 8
4.2 En langage assembleur 9
4.3 En langage evolue 9
5 - Les concepts de base des langages evolues 11
6 - La progr animation 12
7 - Notion de systeme d’exploitation et d’environnement de programmation 13
www.frenchpdf.com
XII
Table des matieres
Chapitre 2 : Variables et instruction d’affectation 15
1 - La variable 15
1.1 Introduction 15
1.2 Choix des noms des variables 16
1.3 Attention aux habitudes de l’algebre 16
2 - Type d’une variable 17
2.1 La notion de type est une consequence du codage en binaire 17
2.2 Contraintes imposees par le type 17
2.3 Les types que nous utiliserons 18
2.4 Declaration de type 18
3 - L’instruction d’affectation 19
3.1 Introduction 19
3.2 Notation 19
3.3 Role 20
3.4 Quelques precautions 21
3.5 Echanger les valeurs de deux variables 22
4 - Les expressions 23
4. 1 Expressions de type entier 24
4.1.1 Constantes de type entier 24
4.1.2 Expressions de type entier 24
4.1.3 Les erreurs possibles 25
4.2 Expressions de type reel 26
4.2.1 Constantes reelles 26
4.2.2 Les expressions reelles 27
4.2.3 Les erreurs possibles 27
4.3 Expressions mixtes 28
4.4 Expressions de type caractere 30
4.5 Affectation et conversions 30
5 - Les variables non definies 31
6 - Initialisation de variables et constantes 32
6.1 Initialisation de variables 32
6.2 Constantes 32
6.3 Expressions constantes 33
7 - Les fonctions predefinies 33
Cote langages 34
Noms de variables 34
Types de base et codage 34
Declaration de types 35
Instruction d’affectation 35
Operateurs et expressions 36
www.frenchpdf.com
XIII
Table des matieres
Chapitre 3 : Instructions d’ecriture et de lecture 39
1 - L’instruction d’ecriture 39
1.1 Role 39
1.2 Presentation des resultats 40
1.2.1 Rien ne les identife 40
1.2.2 Comment seront-ils presentes ? 41
1.2.3 Affichage de libelles 41
1.2.4 Cas des valeurs reelles 42
2 - L’instruction de lecture 43
2.1 Role 43
2.2 Interet de l’instruction de lecture 44
2.3 Presentation des donnees 45
2.4 Exemple 45
3 - Autres modes de communication avec l’utilisateur 46
3. 1 Mode console ou programmation par evenements 46
3.2 Mode batch 47
3.3 Programmation Internet 47
Exemples langages 48
En C 48
En C++ 49
En C# 49
En Java 50
PHP 50
Chapitre 4 : La structure de choix 51
1 - Presentation de l’instruction de choix 52
1.1 Exemple introductif 52
1.2 Notion de bloc destructions 52
1.3 Un programme complet 54
2 - La condition du choix 54
2.1 Les conditions simples 54
2.2 Les conditions complexes 56
2.2.1 Presentation 56
2.2.2 Exemple 57
3 - Cas particulier : une partie du choix absente 58
4 - Les choix imbriques 59
4.1 Exemple 59
4.2 En cas d’ambigui'te 60
4.3 Choix imbriques ou succession de choix 61
5 - Un nouveau type de base : booleen 63
6 - Nos conventions d’ecriture 64
www.frenchpdf.com
XIV
Table des matieres
Cote langages 64
Instruction de choix 64
Type booleen 65
Instruction de choix multiple 65
Exemples langages 66
C 66
C++ 67
Java 67
C# 68
PHP 68
Chapitre 5 : Les structures de repetition 69
1 - La repetition jusqu’a’ 69
1 . 1 Exemple introductif 69
1.2 Nos conventions d’ecriture 71
1 .3 Exemples 72
1.3.1 Recherche de la premiere voyelle d’un mot 72
1.3.2 Doublement de capital 72
1.4 Faire des choix dans une boucle 74
2 - La repetition tant que 74
2. 1 Exemple introductif 75
2.2 Conventions d’ecriture 75
2.3 Lien entre repetition tant que et repetition jusqu’a 76
2.4 Exemple 77
3 - Comment realiser des repetitions inconditionnelles 78
3.1 La notion de compteur de boucle 79
3.2 Introduire un compteur dans une repetition 79
3.2.1 Exemple 1 79
3.2.2 Exemple 2 80
3.3 Imposer un nornbre de tours 81
3.3.1 Exemple 1 82
3.3.2 Exemple 2 82
3.3.3 Exemple 3 83
4 - La repetition inconditionnelle 84
4.1 Exemples d’ introduction 84
4.1.1 Exemple 1 84
4.1.2 Exemple 2 85
4.2 Conventions d’ecriture 86
4.3 Utiliser le compteur dans une repetition inconditionnelle 87
4.4 Eviter d’agir sur le compteur dans la boucle 87
4.5 Compteur et boucle pour 88
4.6 Un tour pour rien 89
4.7 Le compteur en dehors de la boucle 90
www.frenchpdf.com
XV
Table des matieres
Cote langages 90
Les repetitions tant que et jusqu’a 90
La repetition pour 91
Exemples langages 92
C 92
C++ 92
C# 93
PHP 94
Chapitre 6 : Quelques techniques usuelles 95
1 - Le comptage d’une maniere generate 95
1.1 Compter le nombre de lettres e d’un texte 96
1.2 Compter le pourcentage de lettres e d’un texte 96
2 - L’accumulation 98
2.1 Accumulation systematique 98
2.1.1 Un premier exemple 98
2.1.2 Un second exemple 99
2.2 Accumulation selective 100
3 - Recherche de maximum 101
4 - Imbrication de repetitions 102
4. 1 Exemple de boucle avec compteur dans une boucle conditionnelle 102
4.2 Exemple de boucle conditionnelle dans une boucle avec compteur 103
4.3 Exemple de boucle inconditionnelle dans une autre boucle inconditionnelle 104
4.3.1 Premier exemple 104
4.3.2 Second exemple 104
4.4 Une erreur a ne pas commettre 106
5 - L’ iteration 107
Chapitre 7 : Les tableaux 109
1 - Notion de tableau a une dimension 110
1.1 Quand la notion de variable ne suffit plus 110
1.2 La solution : le tableau 110
2 - Utilisation d’un tableau a une dimension Ill
2. 1 Declaration Ill
2.2 Manipulation des elements d’un tableau 112
2.3 Affectation de valeurs a des elements d’un tableau 112
2.4 Lecture des elements d’un tableau 113
2.5 Ecriture des elements d’un tableau 114
2.6 Utilisation de variables indicees dans des expressions 114
2.7 Initialisation d’un tableau a une dimension 116
3 - Quelques techniques classiques appliquees aux tableaux a une dimension 116
3.1 Somme et maximum des elements d’un tableau 116
3.2 Test de presence d’une valeur dans un tableau 117
www.frenchpdf.com
XVI
Table des matieres
4 - Exemple d’utilisation d’un tableau 118
5 - Tri d’un tableau a une dimension 119
6 - Contraintes sur la dimension d’un tableau 120
7 - Debordement d’indice d’un tableau a une dimension 121
8 - Introduction aux tableaux a deux dimensions 122
9 - Utilisation d’un tableau a deux dimensions 124
9.1 Declaration 124
9.2 Affectation de valeurs 124
9.3 Lecture des elements 125
9.4 Ecriture des elements 126
10 - Quelques techniques classiques appliquees aux tableaux a deux dimensions 128
11 - Gestion de l’emplacement memoire
d’un tableau 128
12 - Notion de tableau associatif 129
Cotelangages 130
C/C++ 130
Java, C# 131
PHP 132
Exemples langages 133
C++ 133
C 134
C# 134
Java 135
PHP 137
Chapitre 8 : Les fonctions 139
1 - Notion de fonction 140
1.1 Premier exemple 140
1.2 Notion de parametre 141
1.3 Parametres formels ou effectifs 143
1 .4 Notion de variable locale 143
1.5 Notion de resultat 144
1.6 Exemple de fonctions a plusieurs parametres 146
1.7 Independance entre fonction et programme 147
2 - Mode de transmission des parametres 149
2.1 Introduction 149
2.2 Consequences de la transmission par valeur 150
2.3 La transmission par reference 150
2.4 Nature des parametres effectifs 152
2.5 Un autre exemple de transmission par reference 152
3 - Tableaux en parametres 153
3.1 Cas des tableaux de taille determinee 153
www.frenchpdf.com
XVII
Table des matieres
3.2 Cas des tableaux de taille indeterminee 154
3.3 Exemple 155
4 - Les fonctions en general 156
4.1 Proprietes des variables locales 156
4.1.1 Les variables locales ne sont pas remanentes 156
4.1.2 Initialisation des variables locales 157
4.1.3 Tableaux locaux 158
4.1.4 Imposer a line variable locale d’etre remanente 158
4.2 Proprietes du resultat 159
4.3 Appels imbriques 160
4.4 Variables globales 161
4.5 Concordance de type 161
4.6 Surdefinition des fonctions 162
5 - Gestion de la memoire des variables locales : notion de pile 162
6 - Programme principal et fonctions 163
7 - La recursivite 164
8 - Bibliotheques de fonctions 166
9 - Une autre presentation de la notion de fonction 167
Cotelangages 168
Structure d’une fonction 168
Mode de transmission des parametres 169
Programme principal 169
Separation entre fonction et programme 170
Exemples langages 171
Fonction somme des elements d’un tableau 171
Resultat 171
Variables globales 171
Fonction estVoyelle 173
Fonction tri d’un tableau avec fonction echange 175
Chapitre 9 : Classes et objets 179
1 - Introduction 179
2 - Un premier exemple : une classe Point 180
2. 1 Utilisation de notre classe Point 181
2.1.1 Le mecanisme declaration, instanciation 181
2.1.2 Utilisation d’objets de type Point 182
2.2 Definition de la classe Point 183
2.3 En definitive 184
2.4 Independance entre classe et programme 184
3 - L’encapsulation et ses consequences 185
3.1 Methodes d’acces et d’ alteration 185
3.2 Notions d’interface, de contrat et d’implementation 186
3.3 Derogations au principe d’ encapsulation 187
www.frenchpdf.com
XVIII
Table des matieres
4 - Me thode appelant une autre methode 188
5 - Les constructeurs 188
5.1 Introduction 188
5.2 Exemple d’adaptation de notre classe Point 189
5.3 Surdefinition du constructeur 190
5.4 Appel automatique du constructeur 191
5.5 Exemple : une classe Carre 192
6 - Mode des gestion des objets 195
Cote langages 196
Definition d’une classe 196
Utilisation d’une classe 197
Exemples langage 197
Java 197
C# 198
PHP 199
C++ 200
Chapitre 10 : Proprietes des objets et des methodes 203
1 - Affectation et comparaison d’objets 203
1 . 1 Premier exemple 203
1.2 Second exemple 205
1.3 Comparaison d’objets 206
1.4 Cas des langages gerant les objets par valeur 206
2 - Les objets locaux et leur duree de vie 207
3 - Cas des objets transmis en parametre 208
3.1 Mode de transmission d’un objet en parametre 209
3.2 L’unite d’ encapsulation est la classe 210
3.3 Exemple 212
4 - Objet en resultat 214
5 - Atributs et methodes de classe 215
5.1 Attributs de classe 215
5.1.1 Presentation 215
5.1.2 Exemple 217
5.2 Methodes de classe 217
5.2.1 Generalites 217
5.2.2 Exemple 218
5.2.3 Autres utilisations des attributs et des methodes de classe 219
6 - Tableaux d’objets 219
7 - Autoreference 221
7.1 Generalites 221
7.2 Exemples d’utilisation de courant 221
8 - Classes standards et classe Chaine 222
www.frenchpdf.com
XIX
Table des matieres
Cote langages 223
Affectation, transmission en parametre et en resultat 223
Methodes et attributs de classe 223
Autoreference 224
Exemples langages 224
C# 224
Java 225
C++ 226
PHP 227
Chapitre 11 : Composition des objets 229
1 - Premier exemple : une classe Cercle 229
1 . 1 Droits d’ acces 230
1.1.1 Comment doter Cercle d’une methode ajfiche 230
1.1.2 Doter Cercle d’une methode deplace 231
1.2 Relations etablies a la construction 231
1.2.1 Coordonnees en parametres 232
1.2.2 Objet de type point en parametre 233
1.3 Cas de la gestion par valeur 233
2 - Deuxieme exemple : une classe Segment 235
3 - Relations entre objets 238
4 - Copie profonde ou superficielle des objets 239
5 - Une classe « singleton » 240
Cote langages 242
Java, C#et PHP 242
C++ 242
Java 243
C++ 244
PHP 245
Chapitre 12 : L’heritage 247
1 - La notion d’heritage 248
2 - Droits d’acces d’une classe derivee a sa classe de base 250
2. 1 Une classe derivee n’accede pas aux membres prives de la classe de base 250
2.2 Une classe derivee accede aux membres publics 251
2.3 Exemple de programme complet 252
3 - Heritage et constructeur 254
4 - Comparaison entre heritage et composition 256
5 - Derivations successives 258
6 - Redefinition de methodes 259
6.1 Introduction 259
6.2 La notion de redefinition de methode 259
www.frenchpdf.com
XX
Table des matieres
6.3 La redefinition d’une maniere generate 261
6.4 Redefinition de methode et derivations successives 262
7 - Heritage et droits d’acces 263
Cote langages 264
Syntaxe de la derivation et droits d’acces 264
Gestion des constructeurs 265
Redefinition de methodes 265
266
Exemples langage 267
Java 267
C# 267
C++ 268
PHP 269
Chapitre 13 : Le polymorphisme 271
1 - Les bases du polymorphisme 271
1 . 1 Compatibility par affectation 272
1.2 La ligature dynamique 273
1.3 En resume 273
1 .4 Cas de la gestion par valeur 274
1 .5 Exemple 1 274
1 .6 Exemple 2 275
2 - Generalisation a plusieurs classes 276
3 - Autre situation ou Eon exploite le polymorphisme 277
4 - Limites de l’heritage et du polymorphisme 280
4.1 Les limitations du polymorphisme 280
4.2 Valeurs de retour covariantes 281
Cote langages 283
Java et PHP 283
C# 283
C++ 283
Exemples langages 284
Java 284
C# 285
PHP 286
C++ 287
Chapitre 14 : Classes abstraites, interfaces et heritage multiple 289
1 - Classes abstraites et methodes retardees 289
1 . 1 Les classes abstraites 289
1.2 Methodes retardees (ou abstraites) 290
1.3 Interet des classes abstraites et des methodes retardees 291
1 .4 Exemple 292
www.frenchpdf.com
XXI
Table des matieres
2 - Les interfaces 293
2.1 Definition d'une interface 294
2.2 Implementation d’une interface 294
2.3 Variables de type interface et polymorphisme 295
2.4 Exemple complet 296
2.5 Interface et classe derivee 297
3 - L’heritage multiple 297
Cote langages 298
Classes abstraites et methodes retardees 298
Exemples langage 299
Classes et methodes abstraites 299
Interfaces 299
Interfaces 303
Chapitre 15 : Correction des exercices 307
Chapitre2 307
Chapitre 3 310
Chapitre 4 312
Chapitre 5 314
Chapitre 6 318
Chapitre 7 321
Chapitre 8 325
Chapitre 9 328
Chapitre 10 333
Chapitre 11 335
Chapitre 12 339
Index 339
www.frenchpdf.com
www.frenchpdf.com
Ordinateur, programme
et langage
Ce chapitre expose tout d’abord les notions de programme et de traitement de l’information.
Nous examinerons ensuite le role de l’ordinateur et ses differents constituants. Nous aborde-
rons alors l’importante notion de langage de programmation et nous vous indiquerons suc-
cinctement quels sont les concepts fondamentaux que l’on rencontre dans la plupart des
langages actuels, ce qui nous permettra d’introduire la demarche que nous utiliserons dans la
suite de l’ouvrage.
1 Le role de I’ordinateur
1.1 La multiplicite des applications
Les applications de l’ordinateur sont tres nombreuses. En voici quelques exemples :
• acces a Internet ;
• envoi de courrier electronique ;
• creation de sites Web ;
• lecture de CD-Rom ou de DVD ;
• archivage et retouche de photos ;
• jeux video ;
www.frenchpdf.com
2
Ordinateur, programme et langage
Chapitre 1
• bureautique : traitement de texte, tableur, gestion de bases de donnees... ;
• gestion et comptabilite : facturation, paye, stocks... ;
• analyse numerique ;
• previsions meteorologiques ;
• aide a la conception electronique (CAO) ou graphique (DAO) ;
• pilotage de satellites, d’experiences...
1.2 Le programme : source de diversity
Si un ordinateur peut effectuer des taches aussi variees, c’est essentiellement parce qu’il est
possible de le programmer. Effectivement, 1’ ordinateur est capable de mettre en memoire un
programme qu’on lui fournit ou, plus souvent qu’on lui designe (en general, on fournira le
moyen de trouver le programme, plutot que le programme lui-meme) puis de l’executer.
Plus precisement, un ordinateur possede un repertoire limite d’operations elementaires qu’il
sait executer tres rapidement. Un programme est alors constitue d’un ensemble de directives,
nominees instructions, qui specifient :
• les operations elementaires a executer,
• la maniere dont elles s’enchainent.
En definitive, la vitesse d’execution de l’ordinateur fait sa puissance ; le programme lui
donne sa souplesse. En particulier, nous verrons que certaines des instructions permettent soit
de repeter plusieurs fois un ensemble donne d’ instructions, soit de choisir entre plusieurs
ensembles d’instructions.
1.3 Les donnees du programme, les resultats
Supposez qu’un enseignant dispose d’un ordinateur et d’un programme de calcul de moyen-
nes de notes. Pour fonctionner, un tel programme necessite qu’on lui fournisse les notes dont
on cherche la moyenne. Nous les appellerons informations donnees ou plus simplement don-
nees. En retour, le programme va fournir la moyenne cherchee. Nous l’appellerons informa-
tion resultat ou plus simplement resultat. Si le programme a ete prevu pour cela, il peut
fournir d’autres resultats tels que le nombre de notes superieures a 10.
De la meme maniere, un programme de paye necessite des donnees telles que le nom des dif-
ferents employes, leur situation de famille, leur numero de securite sociale et differentes
informations permettant de determiner leur salaire du mois. Parmi les resultats imprimes sur
les differents bulletins de salaire, on trouvera notamment : le salaire brut, les differentes rete-
nues legales, le salaire net...
Un programme de reservation de billet d’avion par Internet necessitera des donnees telles que
votre nom, votre numero de carte d’identite ainsi que le choix du vol.
www.frenchpdf.com
3
Pour donner une forme a I’information : le codage
1.4 Communication ou archivage
D’ou proviennent les donnees ? Que deviennent les resultats ? Les reponses les plus naturel-
les sont : les donnees sont communiquees au programme par Putilisateur ; les resultats sont
communiques a Putilisateur par le programme.
Cela correspond effectivement a une situation fort classique dans laquelle l’ordinateur doit
etre en mesure de communiquer avec l’homme. Cependant, les donnees ne sont pas toujours
foumies manuellement. Par exemple, dans le cas d’un programme de paye, il est probable
que certaines informations relativement permanentes (noms, numeros de securite sociale...)
auront ete prealablement archivees dans un fichier ou dans une base de donnees. Le pro-
gramme y accedera alors directement.
Dans le cas de la reservation d’un billet d’avion, vous n’aurez pas a fournir explicitement les
caracteristiques du vol souhaite (aeroport de depart, aeroport d’arrivee, heure de depart,
numero de vol...). Vous effectuerez un choix parmi une liste de possibilities que le programme
aura trouvees, la encore, dans une base de donnees, en fonction de certains criteres que vous
aurez exprimes.
On notera, a propos des bases de donnees, que les informations qu’elles renfement auront du
etre prealablement archivees par d’autres programmes dont elles constituaient alors les res-
ultats. Ceci montre la relativite de la notion de donnee ou de resultat. Une meme information
peut etre tantot donnee, tantot resultat, suivant l’usage que l’on en fait.
En general, cet echange d’ informations entre programme et milieu exterieur parait assez
naturel. En revanche, on voit que le programme represente lui-meme une information parti-
culiere. Comme les donnees, il sera, soit preleve automatiquement dans des archives (de pro-
grammes, cette fois), soit (plus rarement) communique a l’ordinateur par l’homme.
Qui plus est, nous verrons, des que nous parlerons de langage et de traducteur, que l’informa-
tion programme pourra, elle aussi, apparaltre tantot comme donnee, tantot comme resultat
d’un autre programme.
2 Pour donner une forme a I’information : le codage
2.1 L’ordinateur code I’information
Lorsque nous echangeons de l’information avec d’autres personnes, nous utilisons des chif-
fres, des lettres, des graphiques, des paroles, etc.
Or, pour des raisons purement technologiques, l’ordinateur ne peut traiter ou manipuler
qu’une information exprimee sous forme binaire. On imagine souvent une telle information
comme une suite de 0 et de 1, mais on pourrait en fait utiliser n’importe quel couple de sym-
boles (comme rond blanc et rond noir, ampoule allumee et ampoule eteinte).
www.frenchpdf.com
Ordinateur, programme et langage
Chapitre 1
Quand vous transmettez une information a 1’ ordinateur, par exemple en tapant sur les touches
d’un clavier, il est necessaire qu’il la transforme en binaire. Nous dirons qu’il realise un
codage en binaire de cette information. De la meme maniere, avant de vous fournir un
resultat, il devra operer une transformation symetrique.
2.2 L’homme code I’information
En toute rigueur, l’ordinateur n’est pas le seul a coder l’information. Pour vous en convain-
cre, considerez cette petite phrase :
13, treize, vous avez dit XIII.
Vous constatez que la meme valeur apparart exprimee sous trois formes differentes :
13
treize
XIII
La premiere forme s’ exprime avec deux symboles, chacun etant choisi parmi les chiffres de 0
a 9. Nous disons que nous avons utilise deux positions d’un code a dix moments (les dix chif-
fres 0, 1, 2... 9).
La deuxieme forme s’ exprime avec six symboles (lettres), chacun etant choisi parmi les
vingt-six lettres de l’alphabet. Nous disons que nous avons utilise six positions d’un code a
vingt-six moments.
La derniere forme s’exprime avec quatre positions d’un code a sept moments (les lettres
representant les chiffres romains : I, V, X, L, C, M et D).
Quant aux codes binaires employes par l’ordinateur, ce sont tout simplement des codes a
deux moments puisqu’il suffit de deux symboles pour exprimer une information binaire. Le
choix de ces deux symboles est purement conventionnel ; generalement on emploie les deux
premiers chiffres de notre systeme decimal. Ainsi :
10011010
represente une information binaire utilisant huit positions. Chaque position porte le nom de
bit, terme qui est done l’equivalent, pour les codes binaires, des termes chiffres ou lettres
employes par les codes rencontres precedemment.
2.3 Ce qui difference I’homme de I’ordinateur
En definitive, on peut se dire que l’ordinateur et l’homme different dans leur fag on de repres-
enter l’information puisque l’ordinateur ne connart que le binaire tandis que l’homme est
capable d’utiliser une tres grande variete de codes. Mais est-ce bien la seule difference ?
En fait, lorsque, dans un texte, vous rencontrez « 13 » ou « bonjour », il n’est pas besoin
qu’on vous precise quel code a ete effectivement employe. Au vu des symboles utilises, vous
arrivez a leur attribuer une signification. Qui plus est, lorsque vous rencontrez « XII I» dans
la petite phrase du paragraphe 2.2, vous reconnaissez immediatement le code « chiffres
romains » et non plus le code « lettres de l’alphabet » (et ceci, bien que les chiffres romains
www.frenchpdf.com
5
Fonctionnement de I’ordinateur
soient des lettres de l’alphabet !). Dans ce cas, vous avez utilise votre experience, votre intel-
ligence et le contexte de la phrase pour attribuer une signification a « XIII ».
Le binaire, en revanche, est beaucoup moins naturel, non seulement pour l’homme mais egal-
ement pour l’ordinateur. Pour vous en convaincre, imaginez que vous ayez besoin de savoir
ce que represented les huit bits 00101001. Certes, vous pouvez toujours dire que cela peut
representer l’ecriture en binaire du nombre entier 41. Mais pourquoi cela representerait-il un
nombre ? En effet, toutes les informations (nombres, textes, instructions de programme, des-
sins, photos, videos,...) devront, au bout du compte, etre codees en binaire. Dans ces condi-
tions, les huit bits ci-dessus peuvent tres bien representer une lettre, un nombre, une
instruction de programme ou tout autre chose.
En definitive, nous voyons que l’ordinateur code l’information ; l’homme agit de meme.
Cependant, on pourrait dire que l’ordinateur « code plus » que l’homme ; en effet, il n’est pas
possible d’attribuer un sens a la seule vue d’une information binaire. II est, en outre,
necessaire de savoir comment elle a ete codee. Nous verrons qu’une consequence immediate
de ce phenomene reside dans l’importante notion de type, lequel indique precisement le
codage utilise pour representer une information.
3 Fonctionnement de I’ordinateur
Apres avoir vu quel etait le role de l’ordinateur, nous allons maintenant exposer succincte-
ment ses constituants et son fonctionnement.
3.1 A chacun son role
Nous avons done vu qu’un ordinateur :
• traite l’information grace a un programme qu’il memorise ;
• communique et archive des informations.
Ces differentes fonctions correspondent en fait a trois constituants differents :
• La memoire centrale, qui permet de memoriser les programmes pendant le temps necessaire
a leur execution. On y trouve egalement les informations temporaires manipulees par ces
programmes : donnees apres leur introduction, resultats avant leur communication a
l’exterieur, informations intermediates apparaissant pendant le deroulement d’un
programme. Signalons que, parfois, on emploie le terme donnee a la place de celui
d’information : on dit alors qu’en memoire centrale, se trouvent a la fois le programme et
les donnees manipulees par ce programme.
• L’unite centrale, qui est la partie active de l’ordinateur. Elle est chargee de prelever en mem-
oire, une a une, chaque instmetion de programme et de l’executer. D’ores et deja, nous pou-
vons distinguer deux sortes d’instmetions :
www.frenchpdf.com
6
Ordinateur, programme et langage
Chapitre 1
- Celles qui agissent sur des informations situees en memoire centrale ; ce sont elles qui
permettent veritablement d’effectuer le traitement escompte.
- Celles qui assurent la communication ou l’archivage d’ informations ; elles realisent en
fait un echange d’ informations entre la memoire centrale et d’autres dispositifs nom-
mes peripheriques.
• Les peripheriques (evoques ci-dessus), qui correspondent a tous les appareils susceptibles
d’echanger des informations avec la memoire centrale. On en distingue deux sortes :
- ceux qui assurent la communication entre l’homme et l’ordinateur : clavier, ecran, im-
primante, souris...
- ceux qui assurent l’archivage d’ in
Lire la suite
- 3.43 MB
- 15
Vous recherchez le terme ""


169

59