Académique Documents
Professionnel Documents
Culture Documents
Université de Kinshasa
Faculté polytechnique
Troisième graduat
Chapitre 1.
Mais quelle est la signification ou la portée des termes que sont l‟informatique
d‟une part et la gestion d‟autre part.
Informatique Informatique
Gestion
Gestion
Chapitre 2.
Si hier dans la plupart des milieux professionnels, les gens avaient l‟impression
que l‟informatique, et plus particulièrement l‟ordinateur, était quelque chose de
très mystérieux et accessible seulement aux personnes bien initiées dans ce
domaine, aujourd‟hui avec le progrès électronique, notamment avec la
miniaturisation, l‟informatique est à la portée de tout le monde qui fait l‟effort
de comprendre le travail que l‟ordinateur fait.
a) En informatique de gestion
Dans le traitement, le programme quel que soit le langage utilisé (C++, pascal,
Vbasic) utilise des calculs peu complexes. Par exemple, pour calculer le salaire
d‟un agent ou la facture d‟un client, on a souvent recours aux opérations de
simples addition, soustraction, multiplication et division.
6
b) En informatique scientifique
En entrée, les données sont peu nombreuses. On saisit juste les données du
problème à résoudre. Dans le traitement, on recourt aux calculs parfois très
complexes. En sortie, le résultat est souvent un condensé.
L‟ingénieur civil se retrouve souvent dans le deuxième cas de figure, dans la
pratique de son métier.
Cette capture des besoins se fera souvent en partenariat avec les experts
métier de l‟entreprise.
SISR ou SLAM, quelle que soit la voie choisie, "le service informatique rendu
est défini comme un ensemble de solutions techniques (d'infrastructure ou
applicatives) soutenu par des activités de maintien en condition opérationnelle et
de support, sur lequel le prestataire informatique s'engage".
8
1) Analyste d'applications ;
2) Analyste d'études ;
3) Analyste programmeur ;
4) Chargé d'études informatiques ;
5) Développeur d'applications informatiques ;
9
6) Programmeur analyste ;
7) Programmeur d'applications ;
8) Responsable des services applicatifs ;
9) Technicien d'études informatiques.
Les perspectives sont la responsabilité de projets ou des fonctions de
management d'une équipe.
Chapitre 3
Pour celui qui n‟est pas en contact étroit avec elle, une entreprise c‟est un
bâtiment, des machines, une enseigne, des produits, des salariés, un patron…
donc des éléments disparates. Or une entreprise c‟est beaucoup plus que cela.
C‟est une communauté humaine qui produit des richesses. Cette communauté a
une culture et une histoire : elle naît, se développe, connaît des échecs mais aussi
des réussites, elle surmonte des périodes critiques ou au contraire elle cesse ses
activités.
Selon la taille (chiffre d‟affaire, nombre de salariés), nous avons les petites et
moyennes entreprises et les grandes entreprises ;
Selon le statut juridique, il y a des entreprises privées (entreprises individuelles ;
sociétés en nom collectif ; sociétés anonymes) et des entreprises publiques et
semi-publiques, donc mixtes).
L‟entreprise acquiert ses intrants en s‟appuyant sur les 5 marchés des facteurs de
production
Figure
- l‟Etat, les communes et les organismes sociaux perçoivent des impôts et des
cotisations sociales (INSS).
L‟entreprise est un organisme vivant. Comme l‟être humain, elle semble avoir
un cycle de vie : elle naît par la volonté de ses créateurs, elle se développe et
arrive à maturité, puis voit parfois son activité décliner. Ce qui la conduit à
disparaître ou à être reprise par une autre entreprise. Mais ce cycle de vie est
théorique : certaines entreprises ne connaîtront pas de phase de maturité,
d‟autres ne semblent jamais devoir mourir. La vie de l‟entreprise dépend
fortement de la qualité des hommes qui la composent et de son adaptation à son
environnement.
Toute création d‟entreprise repose sur la mise en valeur d‟une idée. A titre
d‟exemple :
« Mata Mata a une passion pour le maïs. A l’en croire, il a créé son entreprise,
une minoterie, pour résoudre le problème d’approvisionnement de la ville de
Kinshasa en farine de maïs, suite à la pénurie de cette denrée alimentaire, en
décembre 2010. IL achète une étendue (100 hectares) pour cultiver le maïs, il
monte son usine. Comme toutes les idées simples, celle-ci marche. 20 millions
de francs congolais de chiffre d’affaires en 2011 pour un effectif de 10
personnes. »
2.4.3. Déclin
- mévente de ses produits : elle n‟a pas réussi à imposer ses produits ou
elle ne les a pas renouvelés à temps ;
- soit à faire faillite, cette faillite peut se traduire selon le cas par une
disparition totale ou par un nouveau départ sur des bases nouvelles ;
b) Description de l‟environnement
Un système est un ensemble d‟éléments liés logiquement entre eux, qui, réunis,
concourent à la réalisation d‟un objectif commun.
- Les fonctions
Quelle que soit sa taille, son statut juridique, son secteur d‟activité, l‟entreprise
pour réaliser son objectif général, doit effectuer de multiples tâches.
Une fonction est un regroupement de tâches et non un regroupement d‟emplois :
un même emploi peut donc assurer des tâches appartenant à des fonctions
différentes. Ainsi, par exemple, un fermier a la charge de la production mais il
est en plus gestionnaire et responsable du personnel. Inversement une même
17
fonction peut être remplie par plusieurs emplois : dans une grande boulangerie,
comme UPAK, plusieurs vendeuses assurent la fonction commerciale.
- La classification d‟Evgrafoff
L‟analyse de B. Evgrafoff (1970) est plus moderne. Elle traduit les mutations de
l‟environnement de l‟entreprise. Cependant certaines des fonctions qu‟il propose
sont souvent des fonctions annexes, voire services. Alors qu‟une fonction est un
regroupement de tâches, un service est un regroupement d‟hommes placés sous
une même autorité.
Il apparaît qu‟il existe des fonctions qui doivent de toute façon être assurées pour que
l‟entreprise puisse jouer son rôle ou simplement exister. Il s‟agit de :
N‟importe lequel de ses éléments peut avoir une influence sur l‟entreprise : la
réclamation d‟un client, la maladie d‟un salarié, la hausse du prix des matières
premières, la panne d‟une machine, un défaut de qualité chez un concurrent, par
exemple, ont des répercussions sur la bonne marche de l‟entreprise.
- L‟entreprise est un système ouvert finalisé et dirigé. Elle poursuit des buts
(profit, puissance, pérennité etc.), s‟organise pour les atteindre (définition
de plans d‟action, de budgets…), se dote de structures d‟exécution, de
direction et de contrôle.
et qui doivent également être pris en compte si l‟on veut comprendre exactement
ce qui s‟y passe.
1. Loi de Parkinson
Parkinson soutient l‟idée qu‟il y a très peu de relation entre la quantité de travail
effectué dans une organisation et le nombre d‟employés. Pour expliquer ce
phénomène, il propose une explication sous forme de loi, la loi de parkinson
«Tout travail tend à se dilater pour remplir tout le temps disponible. » (…) Aussi
ne doit-on pas s’étonner de ce que les responsables administratifs se trouvent
eux-mêmes surchargés.
Parkinson pense que ces responsables réagissent alors en engageant plus de
personnel selon l’axiome « tout responsable souhaite multiplier ses subordonnés
et non ses rivaux ». Au lieu de partager son travail avec un collègue B, le
responsable A nommera des subordonnés C et D. De cette façon, A préserve sa
position en étant le seul comprenant l’ensemble du travail. Puis quand C se
plaint de trop de travail, A préserve l’équité en accordant à C 2 subordonnés E
et F, et aussi à D 2 autres subordonnés G et H. Avec un tel personnel, la
promotion de A est presque certaine. Comme entre en jeu un deuxième axiome
« les responsables se donnent mutuellement du travail », 7 personnes font
maintenant le travail d’une seule mais la routine des projets, comptes rendus,
rapports, fait que tous travaillent beaucoup et que A travaille plus dur que
jamais.
2. Le principe de Peter
Chapitre 4
LE SYSTEME D‟INFORMATION
Par système d‟information, nous considérons à la fois les informations (au sens
le plus large du mot) utilisées par l‟entreprise et l‟ensemble des moyens mis en
œuvre pour gérer ces informations.
Méthodes :
On peut trouver :
Il s‟agit notamment de :
Nous venons de voir que le système d‟information des entreprises s‟appuie sur
les technologies de l‟informatique et plus particulièrement sur les disciplines de
l‟informatique de gestion pour son automatisation.
Informations spécialisées
Dans l‟entreprise, on perd du temps, on commet des erreurs, on fait des redits et
un travail inutile du fait qu‟on ignore si l‟information nécessaire existe et où il
est possible de se le procurer.
Il y a aussi des sources externes. Elles sont nombreuses. La difficulté réside dans
le choix des sources à partir des critères tels que la qualité de l‟information, son
coût, le délai pour l‟obtenir :
Exemple des sources externes : Banque du Congo, INS (Institut National des
Statistiques)
Les informations informelles sont celles dont l‟entreprise n‟a défini ni la forme,
ni le fond; un bon exemple en est les informations échangées entre
collaborateurs lors de pause-café. Pour en revenir au domaine des ordinateurs, il
est évident que de l‟information informelle peut être traitée au moyen des outils
informatiques de l‟entreprise; par exemple au travers d‟Internet ou de la
messagerie.
Les informations formelles sont celles dont l‟entreprise a défini la forme, voire
le fond, et dont elle a besoin pour garantir un fonctionnement correct de ses
activités opérationnelles et de pilotage.
Nous allons donner une réponse à cette question par le biais de la systémique
que nous exposons brièvement ci-après :
Une entreprise est un système complexe qui peut être compris à l‟aide de la
systémique; ce système-entreprise (3) peut être décomposé en trois sous-
systèmes : le sous-système opérant (SO) ; le sous-système de pilotage (SP) et le
sous système d‟information (SI).
Nous venons de faire allusion aux « services informatiques offerts » et dès lors,
nous pouvons nous poser la question de la nature du lien entre ces services
informatiques et l‟ « informatique de gestion ».
Nous allons donner une réponse à cette question par le biais de la systémique
que nous exposons brièvement ci-après :
Une entreprise est un système complexe qui peut être compris à l‟aide de la
systémique; ce système-entreprise peut être décomposé en trois sous-systèmes :
le sous-système opérant (SO) ; le sous-système de pilotage (SP) et le sous
système d‟information (SI).
29
Nous venons de faire allusion aux « services informatiques offerts » et dès lors,
nous pouvons nous poser la question de la nature du lien entre ces services
informatiques et l‟ « informatique de gestion ».
le réseau formel
1. 2 Le réseau informel
A son tour, le système d‟information formel peut être découpé en deux parties
ou sous systèmes distincts:
Pour illustrer notre propos, prenons comme exemple, la production d‟un procès-
verbal (PV) de séance.
Dans le cadre d‟un système d‟information non automatisé, le collaborateur
utilisera un outil bureautique qui lui permettra de respecter la forme mais il lui
appartiendra d‟intégrer le contenu sur la base de ses compétences en
bureautique.
Dans le premier cas, le collaborateur devra gérer lui-même les données de son
rapport en les sauvant probablement en tant que fichier sur un serveur de fichier;
dans ce cas l‟informatique lui fournit un programme (traitement de texte) pour
l‟aider à rédiger son rapport et une infrastructure de mémorisation de ses
données (serveur de fichier). Dans le deuxième cas, les données seront gérées
automatiquement par le SII qui les sauvegardera probablement dans une base de
données.
1. L‟incapacité à évoluer
2. Le manque de stratégie
Qui n‟a pas en tête le cas d‟un dirigeant incapable d‟obtenir dans le délai
raisonnable, malgré un système informatique aussi important que coûteux, les
indicateurs d‟activité de son entreprise qui lui permettraient de corriger une
démarche mal conçue.
36
4. La pyramide de Maslow
6. La surpuissance du matériel
7. La maintenance
8. L‟inexistence de dialogue
9. Documentation insuffisante
Bien souvent les systèmes développés ne font l‟objet que de très peu de
documentation, voire aucune dans certains cas extrêmes. Il est rare que les
applications soient exhaustivement documentées en termes de spécifications
fonctionnelles, spécifications techniques, spécifications de réalisation, et manuel
d‟utilisation. Or un logiciel, qui est par nature un objet immatériel, n‟a de valeur
et d‟intérêt que par les documents qui permettent de comprendre :
Elle fournit des éléments pour effectuer les missions assignées. Par exemple, les
informations tarifaires permettent d‟établir la facturation. De même, les
informations du catalogue facilitent la vente.
Elle renseigne sur les actions accomplies par soi-même ou par d‟autres. La tenue
d‟une comptabilité en est le meilleur exemple.
39
Elle réduit l‟incertitude quand il faut décider. Par exemple, les ventes récentes
par catégories de produit apportent un élément pour ajuster les tarifs.
Ici l‟information n‟est plus simplement un reflet ou une trace : elle est elle-
même un objet de gestion. Les technologies de l‟information assurent sa
mémorisation et s transformation.
L‟approche classique considère que toute organisation peut être vue comme un
système, lui-même décomposé en 3 sous-systèmes en interaction : le système
opérant, le système d‟information et le système de pilotage.
De leur côté, les managers s‟appuient sur des informations mémorisées. Par
exemple, l‟évolution des ventes, par produit et par secteur, sur les 3 derniers
mois. Certaines de leurs décisions peuvent modifier des éléments du sous-
système d‟information. Par exemple, la modification des prix de vente pour
certains produits. Elles peuvent également avoir des conséquences sur le
système opérant. Par exemple, la modification du réseau de vente.
Système de pilotage
Système d’information
Entrée sortie
Système opérant
Selon cette approche, le système d‟information est considéré comme une image
une représentation du monde réel. Cette vue classique du système d‟information
est principalement orientée vers la construction d‟une base de données centrale,
gérant des informations de référence.
. Partie du réel : le système d‟information n‟est pas considéré comme une image
du monde réel, mais comme une partie de l‟entreprise. On s‟intéresse
particulièrement aux informations et à leur organisation, aux événements, aux
acteurs et aux processus.
. Acteur : un être humain ou une machine qui crée, manipule, transforme les
informations ou qui est sollicité par la présence ou la valeur de certaines
informations.
Système d‟information
Processus
S‟appuie permet
Système informatique
Applications et
Base de données
44
Chapitre 5
Le système informatique
On peut dire par analogie que la révolution informatique est l‟accroissement des
capacités mentales de l‟homme, l‟amplification du cerveau humain. Le simple
fait d‟appuyer sur le bouton permet à la machine d‟effectuer des calculs
compliqués, de prendre des décisions complexes, de stocker en mémoire et de
retrouver de grandes quantités d‟information. Les ordinateurs évitent, ainsi, à
l‟homme de gaspiller son énergie mentale en opérations répétitives.
L‟ordinateur est une machine qui peut effectuer des tâches intellectuelles de
routine en exécutant très rapidement des opérations simples. La simplicité des
opérations (l‟addition ou a comparaison de deux nombres en sont des exemples
typiques) est compensée par la vitesse à laquelle elles sont exécutées (environ un
million à la seconde).
L‟ordinateur au départ était conçu comme une machine capable de faire des
calculs numériques complexes. Le terme anglo-saxon « computer » qui veut dire
calculateur en dit long. Ainsi, la plupart des applications étant scientifiques,
l‟ordinateur ne se trouvait que dans des centres de recherche et dans des
universités. Et le langage de programmation comme le Fortran en tirait une
bonne fortune.
Dans ces trois contextes, l‟ordinateur manipule des chiffres binaires (0 ou 1).
Cela ne veut pas dire qu‟à l‟intérieur il y a des 0 et des 1. C‟est une façon de se
symboliser les informations qui sont introduites, traitées et stockées en termes de
pulsions électriques dans l‟ordinateur. Il apparaît que pour symboliser l‟état de n
ampoules électriques, allumées ou éteintes, la représentation binaire est la plus
simple qui soit en adoptant la convention suivante :
0 0 état « 0 »
0 1 état « 1 »
1 0 état « 2 »
1 1 état « 3 »
46
et sa valeur est :
En binaire : 0 et 1
Par analogie, un chiffre binaire aura aussi une valeur pouvant être
1, 2, 22, 23, 24
NB. Le chiffre binaire est souvent abrégé en bit qui est l‟acronyme de l‟anglais
Binary digit. Un paquet de 8 bits forme un octet ou byte en anglais.
Le rapport entre le binaire (base 2) et l‟octal (base 8) est de 23, c‟est-à-dire il faut
3 chiffres binaires pour avoir un chiffre octal. Tandis qu‟entre le binaire et
47
l‟hexadécimal (base 16) le rapport est de 24, c‟est-à-dire que 4 chiffres binaires
équivalent à 1 chiffre hexadécimal.
Donc les nombres hexadécimaux présentent un double avantage : ils sont courts
à écrire et ils permettent un passage immédiat à la représentation binaire et
réciproquement.
En base 10 le nombre 2543 est composé de différents chiffres ayant des valeurs
différentes. Le 3 représente les unités, le 4 les dizaines, le 5 les centaines et le 2
les milliers. On peut dire que le 2 sur ce nombre en base 10 a plus de valeur
(poids) que le 3. En binaire c‟est pareil : dans 10111111, le 1 est appelé le bit
représentant le poids le plus fort. Ainsi le 1 est appelé le bit à la valeur la plus
faible. Le tableau 1 donne les valeurs des quelques poids exprimées en
Base 10, Base 2, Base 8 et Base 16.
2 8 4 2 1 0,5 0,25
Les puissances de la base B0, B1 …... B-1 ... sont appelées les poids.
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
48
5 0101 5 5
6 0110 6 6
7 0111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
Le moyen le plus rapide est d‟effectuer des divisions successives par 2, par 8 et
par 16 en retenant la présence d‟une partie fractionnée.
15 / 2 = 7 reste 1
7 / 2 = 3 reste 1
3 / 2 = 1 reste 1
1 / 2 = 0 reste 1
42 : 8 = 5 reste 2
5 : 8 = 0 reste 5
(1111)2 = 1 x 23 + 1 x 22 + 1 x 21 + 1 x 20 = 15
(642)8 = 6 x 82 + 4 x 81 + 2 x 80 = 6 x 64 + 4 x 8 + 2 x 1 = 418
567 en octal - 101 110 111 en binaire. Ici chaque chiffre octal correspond à
trois bits.
a) addition et soustraction
1000 10010 3F 2
- 111 - 1011 - 1A4
_____ ________ ______
1 1111 24E
(523)8 - (77)8 = 4 24
Lorsque la soustraction n‟est possible on emprunte la base. Ainsi pour le cas ci-
dessus :
8 + 3 = 11 – 7 = 4
8+1= 9–7=2
Reste 4
a) multiplication et division
- binaire
11,11
x 1,1
-------
51
1111
1111
------
101,101
- En octal
43
x 26
-------
322
106
-------
1402
- En hexadécimal
A3
x3
----
1E9
Division
111 : 10 = 11,1
Hexadécimal
Octal
L‟idée qui vient le plus naturellement à l‟esprit consiste à dire que le bit de poids
fort symbolise le signe et le reste la valeur absolue du nombre. Si le premier bit
est 0 alors le nombre est positif sinon il est négatif. Selon cette conversion,
représentée sur 4 bits :
+ 5 s‟écrit 0101
- 5 s‟écrit +1101
___ ____
0 10010
L‟addition ne donne pas une valeur qui correspond à la valeur attendue. Pour
surmonter cette difficulté, on a eu recours au complément à 2.
Ainsi :
-5 donne 0101
1 0 10
+ 1
_______
10 11
+5 ---- 0 1 0 1
- 5 ---- 1 0 1 1
___ _______
0 10 0 0 0
1011 0010 B2
1 + 1
____________ ___
1 0 1 1 0 0 1 1 ----- B3
53
Chapitre 6
Pour manipuler les données, quelle que soit l‟application, on a besoin d‟un
algorithme. Celui-ci est une notion fondamentale en informatique : donc sans
algorithme il n‟y aurait pas de programme, et sans programme il n‟y aurait rien à
exécuter. Les algorithmes sont fondamentaux en un autre sens : ils sont à la fois
indépendants du langage dans lequel ils sont énoncés et de l‟ordinateur qui les
exécute.
Cette indépendance des algorithmes nous pousse à dire que tous les ordinateurs
peuvent globalement mener à bien les mêmes opérations de base. Il faut noter
des différences de détail et de rapidité, mais en règle générale les capacités des
ordinateurs actuels sont les mêmes. Bien plus, ces capacités n‟ont pas été
affectées par l‟innovation technologique. Cette innovation ne changera pas ce
que les ordinateurs font, même si elle affecte la vitesse, le coût et la fiabilité.
Cela revient à dire que les algorithmes peuvent être conçus et étudiés
indépendamment de la technologie du moment. Les résultats resteront valables
en dépit de l‟arrivée de nouveaux ordinateurs et de nouveaux langages de
programmation.
55
b) concevoir une procédure qui une fois appliquée amènera à une solution du
problème. C‟est ce qu‟on appelle algorithme. En d‟autres, l‟algorithme est
un ensemble des règles opératoires dont l‟application permet de résoudre un
problème énoncé au moyen d‟un nombre fini d‟opérations.
- mode d‟emploi ;
- recette de cuisine ;
- itinéraire routier ;
- notice de montage
- calculer la racine carrée
- la multiplication de deux nombres etc.…
Résoudre un problème en prenant appui sur l‟ordinateur, ne peut se faire que s‟il
a été préalablement décomposé en problèmes plus simples, résolubles par
l‟ordinateur, se présentant sous forme d‟une suite d‟opérations à exécuter les uns
après les autres sans intervention extérieure (A. Gribaumont et al 1979).
A partir de ce qui précède, on peut définir l‟algorithme comme une suite logique
des prescriptions élémentaires effectuées en un nombre fini de pas en vue de
56
La calculabilité
Règle 3 - si les nombres posés sont égaux, chacun d‟eux donne le résultat
cherché. Le processus de calcul s‟arrête. Sinon passer à la règle suivante.
Règle 4 - si le premier nombre posé est plus petit que le deuxième, permuter les
2 nombres, continuer à poser les 2 nombres.
Règle 5 – soustraire le deuxième des nombres posés du premier et poser deux
nombres : celui qui est soustrait et la différence. Passer à la règle 2.
- il se peut que dans certains cas, on puisse démontrer une chose et son
contraire (inconsistance)
- il existe des vérités mathématiques qu‟il est impossible de démontrer
(incomplétude).
On l‟appelle thèse parce qu‟il s‟agit d‟un résultat qui ne peut pas être prouvé, car
il affirme l‟équivalence entre un concept intuitif, à savoir les fonctions
mécaniquement calculables et un concept formel, à savoir, les diverses
définitions des fonctions récursives. Elle s‟appelle la thèse de « Church »
puisque c‟est Alonso Church, mathématicien américain, qui en a eu le premier
l‟idée. Elle s‟appelle la thèse de Church - Turing puisque les machines de Turing
donnent une véritable idée de ce que « mécanique « veut dire.
En effet, pour prouver qu‟il n‟y a pas d‟algorithme pour un problème donné, des
mathématiciens ont tenté de définir exactement ce que l‟on entend par
algorithme. Gödel le définit comme une suite de règles pour établir la forme de
fonctions mathématiques complexes à partir de fonctions mathématiques plus
58
La thèse de Church - Turing nous confirme dans l‟idée que les définitions
précises du terme « algorithme » utilisées en informatique correspondent en fait
aux idées non formalisées que nous avons. Donc, chaque fois que nous
décrivons un certain nombre d‟étapes dont nous sentons qu‟elles peuvent être
parcourues d‟une manière purement routinière, il existe un algorithme formel, au
sens informatique du terme, pour la même tâche.
Dans une formulation simple et moderne, on peut dire que l‟algorithme est toute
chose qui peut être exécutée par un ordinateur. Dans cette perspective, tout
algorithme qui a été exécuté sur un ordinateur donné peut être exécuté sur
n‟importe quel autre ordinateur.
L‟équivalence entre tous les ordinateurs modernes d‟une part, et d‟autre part
entre eux et les machines de Turing ou autres définitions du concept
d‟algorithme est une confirmation de la thèse de Church - Turing. Cette
propriété remarquable des algorithmes est appelée universalité. En rapport avec
les ordinateurs, nous disons que l‟universalité signifie que tout ordinateur est
59
équivalent à tout autre ordinateur en ce sens qu‟ils peuvent tous accomplir les
mêmes tâches.
La complexité de l‟algorithme
Ainsi, en testant deux programmes, on peut se rendre compte que l‟un est plus
rapide que l‟autre. C‟est ce que l‟on appelle l‟efficacité d‟un algorithme. Pour la
mesurer ou la quantifier, on s‟intéresse à la complexité de l‟algorithme.
Pour être concret, on peut dire que la mesure de la complexité vise à obtenir des
résultats sur les principales caractéristiques d‟un algorithme à partir desquels on
pourra dériver une estimation précise des ressources pour l‟exécution de cet
algorithme sur une certaine machine.
Par exemple, soit T un tableau de n entiers que l‟on désire trier dans l‟ordre
croissant. On suppose que l‟on dispose de deux algorithmes permettant de
réaliser ce travail :
Algorithme 1 sur M1 :
Algorithme 2 sur M2
Au regard de ces résultats, nous pouvons conclure qu‟il ne suffit pas d‟avoir une
machine puissante, encore faut-il développer de bons algorithmes.
Un programme est une description codée d‟un algorithme ; celle-ci est donnée
en respectant des règles strictes de combinaison d‟éléments simples. Ces règles
définissent ce que l‟on convient d‟appeler un langage de programmation.
L‟intérêt du programme provient de l‟utilisation d‟un langage de
programmation.
5.3.1. Exactitude
choix des équipements pour les deux dernières étapes est la responsabilité du
demandeur.
a. Utilisation de tests.
être exécuté aveuglément pour une valeur arbitraire des données ; en d‟autres
termes, il est erroné ;
Les tests sont utiles pour montrer l‟existence d‟erreurs, mais ils ne peuvent pas
établir l‟absence d‟erreurs.
Remarque : seul le test exhaustif (qui couvre tous les cas de données) pourrait
établir l’absence d’erreurs. Mais, un tel test est presque toujours impraticable
vu le nombre de cas à considérer et l’obligation de posséder une méthode de
vérification de chaque résultat.
b. Appel à l‟autorité
c. Argumentation
5.3.3. Efficacité
L‟exactitude d‟un programme n‟est pas la seule caractéristique qui compte pour
le demandeur. Celui-ci s‟intéresse aussi à l‟efficacité du programme.
L‟efficacité d‟un programme est une mesure des ressources à mettre en œuvre
pour produire le résultat attendu du programme. Un programme sera d‟autant
plus efficace que la quantité de ressources à mettre en œuvre sera faible.
- Le nombre d‟opérations ;
- L‟espace de stockage (espace – mémoire) ;
- Le nombre de transferts d‟information entre zones de stockage.
- Les opérations
Les opérations d‟une machine ne prennent pas toutes le même temps. Une
opération de multiplication ou de division peut prendre cinq à six fois plus de
temps qu‟une addition ou une soustraction. Par contre, dans le cas d‟une
multiplication ou d‟une division par un facteur qui est une puissance de la base
de représentation des nombres, ces opérations retrouvent un temps d‟exécution
comparable à l‟addition.
- La mémoire
Un compromis peut exister entre l‟augmentation de l‟espace mémoire requis par
un programme et la diminution du temps total de l‟exécution du programme.
65
a. Une zone dont l‟accès est rapide pour l‟unité d‟exécution des
instructions : la mémoire centrale ;
b. Une zone de capacité de stockage beaucoup plus importante mais dont
l‟accès est relativement lent : la mémoire de masse.
Par exemple, une unité de traitement peut avoir une mémoire centrale
d‟une capacité de 5 millions d‟informations élémentaires et une mémoire
auxiliaire d‟une capacité de 500 millions d‟informations élémentaires.
3.3. La robustesse
C‟est l‟aptitude à bien réagir lorsque l‟on s‟écarte des conditions normales
d‟utilisation.
3..4. L‟extensibilité
C‟est la facilité avec laquelle un programme pourra être adapté pour satisfaire à
une évolution des spécifications.
3.5. La portabilité
Chapitre 7.
La pratique de la programmation
6.1. Définition
La programmation est une activité qui consiste à écrire un programme selon les
spécifications bien définies. La spécification détermine le type de données à
traiter et le résultat attendu.
Une condition nécessaire, mais non suffisante, pour faire la programmation est
la connaissance d‟un langage de programmation dans lequel le programme doit
être rédigé. Dans notre cas, c‟est le langage C++ et/ou le java. Il faut apprendre
les règles relatives à l‟utilisation du C pour résoudre les problèmes abordés dans
notre cours. Ces règles précisent :
- le vocabulaire utilisable ;
- la manière de combiner les « mots » du vocabulaire pour construire des
programmes ;
- la signification associée aux différentes constructions du langage.
Le jeu d‟instructions (langage) que l‟ordinateur est capable de traiter est donc
tout naturellement déterminé par le processeur.
- La première génération
- La deuxième génération
Elle est marquée par le langage d‟assemblage. Afin de rendre les programmes
plus faciles à écrire et à corriger, on a rapidement pensé à remplacer les
séquences de bits par des symboles, les instructions machines étant codées par
des mnémoniques et les données par des caractères alphanumériques associés.
- La troisième génération
- La quatrième génération
Parallèlement aux langages évolués, des langages encore plus spécialisés, voir
des méta-langages, ont fait leur apparition. On peut citer les langages
70
- De manière générale, on peut dire que les langages interprétés sont bien
adaptés pour le développement rapide :
Les données
Fonction 1
Fonction 2
Fonction 3
73
En plus de cela, les procédures s‟appellent entre elles et peuvent modifier les
mêmes données. Mais il va se poser un problème lorsqu‟on veut modifier une
procédure : comment avait-elle été appelée ?
En P.O.O, un programme est une société d‟entités. Lors de son exécution, les
entités collaborent pour résoudre le problème final en s‟envoyant des messages.
Un objet est une collection de variables sans organisation implicite. Les
variables d‟un objet sont simplement des membres de l‟objet. On désigne les
membres d‟un objet par leur nom.
Ensuite fut introduite la notion de classe, définie comme une entité chapeau,
permettant de décrire les comportements communs à un ensemble d‟objets.
Enfin apparut le principe de l‟héritage : une classe peut être constituée de sous-
classes, chacune de ces dernières « héritant » des caractéristiques et des
comportements de la classe à laquelle elle est rattachée, et pouvant en plus
posséder des informations et des actions qui lui sont propres.
74
Toutes ces caractéristiques sont bien développées dans les langages orienté objet
tels que C++, Java, Vbasic, Visual Dbase etc.
L‟algorithme de façon simpliste est une manière de tout prévoir. Pour le décrire,
on peut recourir à plusieurs formalismes. Dans ce cours nous allons en
développer deux et cela de façon parallèle. Il s‟agit de :
renvoi
Entrée - sortie
a) La séquentialité
L‟ordinateur est une machine séquentielle. Ce qui signifie que les instructions
sont exécutées :
- une à la fois
- dans l‟ordre où elles apparaissent dans le texte du programme.
76
Elles sont notées lire variables et signifient la saisie des données, c‟est-à-dire la
communication des données à l‟ordinateur.
Exemple : Lire quantité
Lire résultat
Elles sont notées écrire expression, écrire variable. Elles indiquent l‟affichage
ou l‟impression d‟un message et / ou du contenu d‟une variable ou du résultat
d‟un calcul.
A0
I I+1
Montant quantité * prix_unitaire
Action Effet
La sélection ou le choix est une structure qui permet de tester une condition et
d‟exécuter un traitement en cas de satisfaction de la condition.
Nous distinguons deux sortes de sélection :
Exemple :
C. La boucle
78
Exemple :
C.2 répéter
traitement(s)
jusqu‟à condition
Exemple : répéter
Compteur compteur + 1
Jusqu‟à compteur = 10.
fpour
Exemple :
Les boucles tant que et répéter sont utilisées lorsqu‟on ne connaît pas d‟avance
le nombre de fois que la boucle va tourner. Tandis que la boucle pour est
79
Une variable est une zone mémoire portant un nom appelé identifiant et dont la
valeur peut changer en cours d‟exécution du programme. Chaque variable doit
être déclarée de façon individuelle avant de figurer dans un programme. Une
variable est associée à un type de donnée.
A 40 C 15
Un type n‟a pas d‟existence physique. C‟est une définition d‟un ensemble des
propriétés. Donc, selon l‟information que l‟on souhaite manipuler, il est
essentiel de choisir son type. Cela induit ce qui suit :
A titre d‟exemple, la valeur entière 40 qui se trouve dans la variable A, dans une
représentation binaire, aura 101000 et prendra en mémoire 6 bits significatifs.
La valeur entière qui se trouve dans C se représente en binaire par 1111 et
occupera 4 bits significatifs. L‟opération A A – C donnera
40 – 15 = 25, c‟est-à-dire 101000 – 1111 = 11001.
b) l‟interprétation de ce code pour établir la correspondance entre langage et
la représentation informatique ;
c) les opérations autorisées sur l‟information : par exemple, les types entier
et réel sont utilisés pour effectuer des calculs. Dans ce registre il faut
signaler qu‟une variable de type entier ne peut que recevoir des nombres
entiers. Tandis qu‟une variable de type réel peut recevoir les nombres
entiers et les nombres décimaux.
Une constante est une zone mémoire portant un nom appelé identifiant et dont le
contenu ne varie pas pendant le déroulement du programme. Une constante doit
80
être déclarée avant d‟être utilisée dans le programme. A cette occasion une
valeur lui est attribuée de façon définitive.
Cas 1.
Début
Entier a, b, som, reste, quot, prod
Lire a, b
Som a + b
Reste a – b
Quot a / b
Prod a * b
Cas 2.
Début
Entier A, B, prod, quot, cpt
Lire A, B
(* calcul de produit en utilisant la boucle
Tant que not (cpt = B) faire
81
Prod prod + A
Cpt cpt + 1
Ftantque
Écrire prod
(*calcul du quotient en utilisant la boucle
Cpt 0
Tant que not (A<B) faire
AA–B
Cpt Cpt + 1
Ftantque
Ecrire Cpt.
Fin
Cas 3.
(Première solution)
Début
Entier A, B, résultat
Lire A, B
Tant que not (A = B) faire
Si A > B alors A A – B
Sinon B B – A
Fsi
Ftant que
Ecrire « le pgcd de ces deux nombres = « A
Fin
82
(Deuxième solution)
Début
Entier A, B, M, N, R, PGCD
Lire A, B
MA
NB
Tant que not (N = 0) faire
R M mod N
MN
N R
Ftant que
Pgcd M
Ecrire PGCD
Fin
Cas 4
Début
entier nbre, cpt, moy
tant que not (cpt = 10) faire
lire nbre
moy moy + nbre
cpt cpt + 1
ftant que
moy moy / Cpt
écrire moy
83
Fin
Cas 5
Début
entier nbre, cpt, pair, impair
tant que not (cpt = 10) faire
lire nbre
nbre nbre mod 2
si nbre = 0 alors pair pair + 1
sinon impair impair + 1
fsi
cpt cpt + 1
ftant que
écrire « le nombre des nombres pairs = « pair
écrire « le nombre des nombres impairs = « impair
Fin
Cas 6
Début
entier a, b
lire a, b
si a > b alors écrire « le plus grand est : « a
sinon écrire « le grand est : « b
fsi
Fin
Cas 7
Début
84
entier a, b, c, max
lire a, b, c
si a > b alors max a
sinon max b
fsi
si c > max alors max c
fsi
écrire max
Fin
(Deuxième solution)
Début
entier a, b, c, max
lire a, b, c
selon que (a > b) et (a > c) max a
écrire max
ou que (b > a) et (b > c) max b
écrire max
autrement Max C
Ecrire Max
Fselon que
Fin
Cas 8 : exercice sur l‟interversion des nombres
Début
entier a, b, c, sauve
lire a, b, c
si a < b alors sauve a
ab
b sauve
fsi
si a < c alors sauve a
a c
c sauve
fsi
si b < c alors sauve b
b c
c sauve
fsi
écrire a, b, c
85
Fin
Supposons, par exemple, que nous voulons calculer l‟amortissement d‟un bien
qui a coûté 8000 $ et dont la durée de vie s‟élève à 10 ans, avec la méthode de
l‟amortissement décroissant à taux constant. Le facteur d‟amortissement est
2/10 = 0,20. L‟amortissement pour la première année se calcule comme suit :
0,20 x 8000 $ = 1600 $. Celui de la deuxième année est de : 0,20 x (8000 $ -
1600 $) = 0,20 x 6400 $ = 1280 $ ; pour la troisième année, nous avons : 0,20 x
5120 $ = 1024 $ et ainsi de suite.
A titre d‟exemple, reprenons le bien d‟une valeur initiale de 8000 $ avec une
durée de 10 ans. L‟amortissement pour la première année sera de
(10 / 55) x 8000 $ = 1454,55 $ ; pour la seconde année : (9 / 55) x 8000 $ =
1309,09 $ et ainsi de suite.
Début
Entier val, org, amort, n, cpt, choix
Bool drapeau
(* initialisation de drapeau
Drapeau vrai
Répéter
Lire choix
Si choix <> 4 alors lire val
Lire n
Fsi
Selon que choix = 1 (*méthode linéaire)
Amort = val / n
pour cpt de 1 à n faire
Val = val – amort
Ecrire cpt, amort, val
Fpour
87
- Dans une promotion de 100 étudiants, on demande de lire une série des 5
cotes obtenues par chaque étudiant à la session d‟examen. Le maximum de
chaque cours est de 20 points. Calculer et afficher les nombres d‟étudiants
qui ont obtenu :
a) la plus grande distinction
b) la grande distinction
c) la distinction
d) la satisfaction
e) la mention ajourné
f) la mention refusé.
88
On peut écrire aisément des programmes sous une forme modulaire, permettant
ainsi la décomposition d‟un problème global en une séquence de sous-
programmes individuels. La modularisation offre des avantages importants :
Tout d‟abord, elle épargne la programmation redondante (répétée) du même jeu
d‟instructions, pour les tâches à exécuter plus d‟une fois. De plus, le recours au
module de programme réduit de façon appréciable la longueur d‟un programme.
Il faut aussi retenir la clarté logique résultant de la décomposition d‟un
programme en modules individuels et concis. De tels programmes sont faciles à
écrire et à déboguer. On distingue généralement deux types de module, à savoir
la procédure et la fonction.
Exemple :
Début
Entier a, b, c
Procédure maximum
Début
Entier max
Si a > b alors max a
89
Sinon max b
Fsi
Si c > max alors max c
Fsi
Ecrire max
Fin
(* appel de la procédure)
Lire a, b, c
Tant que not (a = 0) faire
Maximum
Lire a, b, c
Ftant que
Jusqu‟ici on lisait les données à partir du clavier. Cela nous obligeait à taper
plusieurs fois les données, une fois obtenu le résultat des premières données.
Pour éviter cela, nous allons recourir au fichier.
Un fichier est une collection homogène des données. En ce sens, chaque fichier
porte sur un objet bien déterminé : fichier client, fichier produit, fichier vente,
fichier commande, fichier facture, fichier agents, fichier étudiants etc. Donc les
informations qui se trouvent dans un fichier donné se rapportent à son objet. On
le définit aussi comme un ensemble d‟enregistrements. La notion de fichier est
intimement liée au support sur lequel il est enregistré. Ainsi, on parle de fichier
physique et de fichier logique. Le premier se réfère au support physique et le
second se rapporte à la copie qui est transférée dans la mémoire centrale pour
être traité par le programme.
Les données dans un fichier sont organisées soit séquentiellement, soit en accès
direct, soit encore de façon indexée séquentielle. Dans l‟organisation
séquentielle, les données sont traitées les unes après les autres, c‟est-à-dire selon
l‟ordre de leur enregistrement sur le support. Ce type d‟organisation est simple à
faire, mais prend beaucoup de temps lorsqu‟il est question de retrouver une
information dont on a besoin. Pour corriger cette faiblesse, on recourt à
l‟organisation à accès direct. Ici les données sont retrouvées grâce aux adresses.
90
Exemples :
La zone num est l‟identifiant. Notons que chaque zone a un type de données à
recevoir. Dans cet exemple, toutes les zones sont de type chaîne.
Un fichier doit être ouvert avant son traitement et fermé après celui-ci. Pour
accéder aux données du fichier, on doit le lire. En informatique, on peut
imprimer les données d‟un fichier, les visualiser, faire une recherche, faire une
mise à jour des données. Dans ce cours, il est question d‟écrire des algorithmes
pour des traitements simples du fichier.
Cas 12.
Début
Fichier nombre des enregistrements
91
Cas 13.
Début
Fichier vente des enregistrements
Entier montant_partiel, montant_total
Ouvrir vente
Lire enregistrement dans vente
Tant que not eof de vente faire
montant_partiel qtev * pu
montant_total montant_total + montant_partiel
Lire enregistrement dans vente
Ftant que
Ecrire montant_total
Fermer vente
Fin
Cas 14.
92
Début
Fichier vente des enregistrements
Entier cpt
Réel rabais, mont, net
Chaine noms
Ouvrir vente
Lire enregistrement dans vente
Tant que not eof de vente faire
Mont qte * pu
Si mont > 50.000 alors rabais mont * 0.02
Sinon rabais 0
fsi
net mont – rabais
cpt cpt + 1
noms nom
Ecrire cpt, noms, mont, rabais, net
Lire enregistrement dans vente
Ftant que
Fermer vente
Fin
Etant une structure interne, la table offre un traitement plus rapide que le fichier.
En ce sens, les données étant toutes chargées dans la table en mémoire centrale
93
3 9 198 67 5 88
Tab [i, j]
23 78 90 76 112 65 44
45 27 345 23 345 33 32
56 11 100 41 12 22 51
98 90 287 9 14 55 72
Cas 15
Début
Vecteur A [1..10] des entiers
Entier i, som, nbre
i0
som 0
nbre 0
(* chargement du vecteur
Pour i de 1 à 10 faire
Lire nbre
A [i] nbre
Fpour
Pour i de 1 à 10 faire
Som som + A [i]
Fpour
Ecrire som
Fin
Cas 16
Soit dans la mémoire centrale une matrice « A « de 10 lignes et 10 colonnes,
chargée de nombres entiers positifs. On demande en sortie de calculer et
d‟afficher la somme de chaque ligne.
Début
Matrice A [1..10, 1..10] des entiers
Entier i, j, som
Pour i de 1 à 10 faire
Pour j de 1 à 10 faire
Som som + A [i, j]
Fpour
Ecrire som
Som 0
Fpour
Fin
cas 17 :
95
23 55 88 99 10 54 98 96 12
11
17 23 56 90 76 786 45 987 123
45 12 56 76 5 7 9 122
15 54 71 21 34
44 77 111
33 44
22
Début
Matrice tab [1.. 10, 1..10] des entiers
Entier i, j, som
Pour i de 1 à 10 faire
Pour j de i de 10 faire
Som som + tab [I, j]
Fpour
Fpour
Ecrire som
96
Fin
Cas 18 :
Début
Matrice tab [1..10, 1..10] des entiers
Entier i, som
Pour i de 1 à 10 faire
Som som + tab [i, i]
Fpour
Ecrire som
Fin
6.8.1. Présentation
Développé dans les laboratoires d‟AT et T Bell au début des années 1980 par
Bjarne Stroustrup, le langage C++ est un langage :
- à typage fort,
- compilé
- et orienté objet (pOO c‟est-à-dire programmation orientée objet)
97
Pour pouvoir être compilé en une séquence binaire exécutable, le code source
doit fournir au compilateur un point d‟entrée. Par convention, ce point d‟entrée
est en C++ une fonction intitulée main
Compilateur C++
#include <iostream>
Void main ( ) 0101010000011111
{ 0111111000001010
Cout << “ hello world ! “ 0010111011111100
<< endl;
}
Le programme C++ le plus simple et le plus inutile (puisqu‟il ne fait rien) est :
Void main ( )
{
}
Void main ( )
{
/*
Corps du programme
(à définir par la suite
*/
}
L‟aspect orienté objet de C++ va ensuite permettre d‟intégrer les données et les
traitements dans une structure unique appelée objet. Cet aspect de chose ne sera
pas développé dans ce cours d‟introduction.
Ax2 + b x + c = 0
#include <cmath>
# include <iostream>
Void main ( )
{
Float a (0.0)
Float b (0.0)
Float c (0.0)
Float delta (0.0)
Pour pouvoir être utilisée dans un programme C++, une donnée doit être
associée à une variable, c‟est-à-dire un élément informatique qui sera manipulé
par le programme. Une variable est décrite à l‟aide de trois caractéristiques :
b) Son identificateur : qui est le nom par lequel la donnée est désignée dans
le programme.
100
Dans les langages fortement typés comme C++, la création d‟une variable se fait
à l‟aide d‟une déclaration, et l‟association effective d‟une valeur à la variable
créée se fait à l‟aide d‟une initialisation.
Pour ce point précis, notons que le compilateur n‟interdit pas l‟utilisation d‟une
variable non initialisée, mais il exclut l‟utilisation des variables non déclarées.
Exemple : int i ;
float exemple_de_variable ;
Exemple : X
B5
Tailleur
Nb_etudiants
Exemple :
Int i ( 3 ) ;
Float exemple_de_variable (3.14) ;
Char c („ a‟) ;
Int j ( i ) ;
Float x ( 2.0 * exemple_de_variable) ;
102
Où valeur est une valeur littérale ou une expression de même type que la
variable référencée par l‟identificateur.
Exemple : i = 3 ;
Cout << <expression1> << < expression2> <<….. << <expressionn >
Les chaînes de caractères doivent être indiquées entre guillemets, tandis que les
caractères simples sont eux indiqués entre apostrophes « „ «.
Les valeurs affichées ne sont pas délimitées par défaut (pas d‟espaces
séparateurs). Les délimiteurs sont donc à indiquer explicitement par exemple par
„ „ ou « « .
Exemple 1 :
Int a (1) ;
Cout << „ [ „ << - a << « , «
[- 1, 1]
Exemple 2 :
Int i (2);
Float x (3.14);
Cout << « => « << 2 * i +5 << « , « << x << endl;
Cin >> <var1> >> < var2 > >> … >> < var- n> ;
Permet à l‟utilisateur de saisir au clavier une liste de valeurs val1, val2,.. valn
qui seront stockées dans les variables < var1>.
104
Exemple :
Int i ;
Double x ;
Exemple de programme
#include <iostream>
Void main ( )
{
Int i ;
Double x;
Cout << “valeurs pour i et x : “ flush;
Cin >> i >> x ;
Cout << « => « << i << « , « << x << endl ;
Remarque
Ainsi, les opérateurs arithmétiques (+, -, /, *, …) sont définis pour les types
numériques (entiers et réels par exemple), les opérateurs logiques ( ! , &&, | | )
sont définis eux (en particulier) pour le type booléen.
105
* Multiplication
/ Division
% Modulo
+ Addition
- Soustraction
Du fait que les opérateurs ont non seulement une syntaxe, mais aussi une
définition opératoire, une expression peut être évaluée, c‟est-à-dire associée à la
valeur littérale correspondant au résultat de l‟expression.
Ainsi, l‟évaluation de l‟expression (2*(13 – 3) / (1+4) correspond à la valeur
littérale de type entier 4.
(2 * 3) - (21 / 3 % 4) + (5)
106
Z = (x + 3 ) % y ;
Z = (3 * x + y) / 10 ;
Z = (x = 3 *y) + 2 ;
x+=y
x=x+y; x-=y
idem pour (/, *, %, - ) x*=y
x/=y
x%=y
x=x+1 ++x
Au sens strict, une expression logique (ou une condition) est une expression
booléenne, c‟est-à-dire de type booléen) qui peut avoir comme résultat : soit la
valeur « vraie « , dans ce cas on dit que la condition est vérifiée, soit la valeur
« fausse », et dans ce cas, la condition n‟est pas vérifiée.
Opérateur opération
== égalité
!= différence (non-égalité)
(x >= y)
(x +y = = 4)
opérateur Opération
! NON logique (négation)
|| Ou logique
Les opérateurs logiques ET, OU et NON sont définis par les tables de vérités
usuelles.
A B Non A A ET B A OU B
V V F V V
V F F F V
F V V F V
F F V F F
Pour pouvoir être utilisée, les instructions d‟un programme C++ doivent être
regroupées en entités appelées séquences d‟instructions ou blocs. Ces séquences
sont explicitement délimitées par les accolades « { « et « } « :
109
{
Int tmp (a) ; // échange du contenu
a=b; // de deux variables
b = tmp ;
}
Exemple :
If (x ! = 0) {cout << 1/x << endl ;}
Else {cout << « erreur « << endl ;
If (<condition-1>)
{
<instructions-1 : si condition-1 vérifiée>
}
Else if (<condition-2>)
{
110
Switch (<expression>)
{
Case <Constante-1> : <instruction-1> ;
…
Case <constante-n> : <instruction-n> ;
[ default : <instructions> ; ]
}
L‟expression « expression » est évaluée, puis comparée successivement à
chacune des valeurs <constante » introduites par le mot réservé case. En cas
d‟égalité, le bloc (ou l‟instruction) associé est exécuté. Dans le cas où il n‟y a
aucune « constante » égale à la valeur de l‟expression, l‟éventuel bloc introduit
par le mot réservé default est exécuté.
Exemple de sélection :
111
Switch (a + b)
{
Case 0 : a = b ; // exécute seulement lorsque (a+b) vaut 0
break ;
case 2 :
case 3 : b = a ; // lorsque (a + b) vaut 2 ou 3
case 4 :
case 5 : a = 0 ; // lorsque (a + b) vaut 2, 3, 4 ou 5
break ;
default
Remarque :
Do
{
< actions >
{ while (<conditions>)
Exemple :
Do
{
Cout << « valeur de i (>= 0) : « ;
Cin >> i ;
Cout << « => « << i << endl ;
}
While (i < 0) ;
112
While (<condition>)
{
< actions >
}
Exemple :
While ( x > 0)
{
Cout << x ;
X/=2;
}
{
<actions>
}
Le langage Java
Pour bien fixer cette notion que nous avons déjà présentée, nous aimerions y
revenir à ce niveau. Cette approche que nous voulons pédagogique permettra
aux étudiants d‟établir directement un lien entre cette notion de P.O.O et le
langage java.
I.1. L‟OBJET
Le principe fondamental est que le langage Java doit permettre
d'exprimer la solution d'un problème à l'aide de ses éléments. Un programme
traitant des images doit manipuler des structures de données représentant des
116
Il faut noter que chaque objet joue un rôle particulier (à travers ses
différentes méthodes ainsi que ses attributs) dans l‟univers du problème à traiter,
de sorte à ce qu‟il puisse s‟échanger des informations avec d‟autres objets
(encapsulation de données) et constituer un système (programme). Ainsi au
cours de l‟exécution d‟un programme (son processus), les objets crées ou
instanciés se mettent en action afin de calculer le résultat du problème posé dans
la nature. Les objets appartiennent ensuite à des classes bien définies.
I.2. LA CLASSE
Les objets appartiennent à des catégories appelées classes.
L'ensemble des classes découpe l'univers (Par univers, il faut entendre
117
Cette ligne d‟instruction suffit pour que la machine virtuelle Java (JVM) alloue
un espace mémoire nécessaire à cet objet lors de l‟exécution du programme.
I.3.2. La Méthode
La méthode (tout comme le constructeur) est une fonction qui
implémente les traitements de la classe. Elle représente une encapsulation des
instructions qui déterminent le fonctionnement d'une classe. Sans méthodes pour
agir, une classe ne fait rien de particulier, dans ce cas elle ne fait que contenir
des attributs. L‟ensemble de méthodes, en dehors du constructeur, définissent
donc le rôle que jouent les instances d‟une classe donnée dans l‟univers du
problème à résoudre (le programme).
Il n'est pas possible d'avoir deux méthodes de même nom dont tous les
paramètres sont identiques et dont seul le type retourné diffère, telles que :
122
}
Public void setTaille(int taille) {
This.taille = taille;
}
Public void setPrix(int prix) {
This.prix = prix ;
}
Pour un attribut de type booléen (contenant soit true, soit false), il est
possible de faire commencer l'accesseur en lecture par is au lieu de get.
Meuble table = new Meuble („‟table‟‟, 12, 30) ; // création de l’objet table
String infos = table.AfficherInfos(); //récupération de
l’info
System.out.println(infos); //Affichage de l’info
Héritage simple
Classe fille
125
Grâce à l'héritage, les objets d'une classe fille ont accès aux données
(attributs ou champs) et aux méthodes de la classe mère et peuvent les étendre,
c'est-à-dire que les sous classes peuvent redéfinir les variables et les méthodes
héritées. Pour les variables, il suffit de les redéclarer sous le même nom avec un
type différent. Les méthodes sont redéfinies avec le même nom, les mêmes types
et le même nombre d'arguments, sinon il s'agit d'une surcharge.
Le polymorphysme est ainsi la possibilité qu‟ont les objets ou les
instances d‟appartenir à deux classes (on parlera de l‟héritage simple) ou à plus
de deux classes (on parle de l‟héritage multiple). C'est-à-dire qu‟un objet peut
appartenir à une structure ou une autre suivant l‟angle sous lequel on aborde le
problème.
Par exemple, il paraît naturel de définir une classe Etudiant comme
dérivant de la classe Homme parce qu‟un étudiant hérite de caractères des
Hommes. Alors, pour matérialiser l‟héritage dans un code java, les mots extends
et super s‟avèrent indispensables.
Public class Homme {
Private String nom = „‟ „‟;
Selon l‟exemple précédent, la classe Homme est considérée comme une super
classe ou classe mère. Pour l‟étendre, la classe Etudiant doit être définie de la
manière suivante :
126
Interface Homme :
Public interface Homme {
String sexe = „‟Masculin‟‟ ; //une constante
Interface Femme :
Public interface Femme {
String sexe = „‟Féminin‟‟ ; //une constante
Interface Travailleur :
Public interface Travailleur {
Public void travailler();
Public void parler();
}
Interface Sportif :
Public interface Sportif {
Public void lutter();
Public void parler();
}
Classe Etudiant :
Pour que les instances de la classe Etudiant soient polymorphes, il
faudra que celle-ci implémente toutes les interfaces présentées au dessus comme
suit :
public class Etudiant implements Homme, Femme, Sportif, Travailleur {
}
}
Notons que le type String ne s‟ajoute pas à la liste des éléments
primitifs parce qu‟en réalité une chaîne des caractères est un objet, instance de la
classe String qui, en revanche, implémente plusieurs méthodes (que nous vous
proposons de voire plus tard) qui permettent de manipuler des chaînes.
I.6.2. les opérateurs
132
}
Exemple : 1) un programme java qui permet d‟afficher un message à l‟écran
disant si une valeur numérique donnée est paire ou pas.
Public class Programme {
Public static void main (String[] args){
int a = 120;
int reste = a%2;
boolean cond = (reste==0) ;
if(cond==true)System.out.println(a+“ est une valeur paire‟‟) ;
else System.out.println(a+ “ est une valeur impaire”);
}
}
Résultat :
120 est une valeur paire
switch(rest){
case 0 : System.out.println (a+" est paire !");
break;
case 1 : System.out.println (a+" est impaire !");
break;
default : System.out.println ("Rien à signaler !");
break;
}
}
}
Résultat :
120 est paire !
La boucle « for » :
136
Résultat de l‟exécution :
Bonjour !
Bonjour !
Bonjour !
Bonjour !
Bonjour !
Bonjour !
Bonjour !
Bonjour !
Bonjour !
Bonjour !
La boucle « while » :
Il arrive fréquemment qu'une boucle doive être exécutée tant qu'une
condition est ou n'est pas remplie, sans que cette condition porte sur une forme
d'indice. L'instruction while est prévue pour le cas où la condition doit être
testée avant toute exécution. Elle est utile lorsque le nombre maximal
d'itérations (répétitions) n'est pas connu à l'avance, et lorsque la condition de
sortie est indépendante de celui-ci.
Initialization;
while (test){
Instructions ;
137
Incrémentation ou actualisation;
}
Ou
Initialization;
do {
Instructions ;
Incrémentation ou actualisation;
} while (test) ;
Exemple : un programme qui écrit dix fois à l‟écran le mot « Bonjour ». (avec
while).
Public class Programme {
Public static void main (String[] args){
int i=0;
while (i<10) {
System.out.println ("Bonjour !");
i ++;
}
}
}
Résultat de l‟exécution :
Bonjour !
Bonjour !
Bonjour !
Bonjour !
Bonjour !
Bonjour !
Bonjour !
Bonjour !
Bonjour !
Bonjour !
Exemple : un programme qui affiche la liste des diviseurs d‟un nombre affecté à
une variable numérique. Et en même temps affiche à côté de chaque diviseur le
mot « pair » si celui-ci est pair, si non le programme affiche le mot « impaire ».
Public class Programme {
Public static void main (String[] args){
int nombre = 100;
for(int i=1; i<=nombre; i++){
138
if((nombre%i)==0){
if((i%2)==0)System.out.println(i+" pair.");
else System.out.println(i+" impair.");
}
}
}
}
Résultat de l‟exécution :
1 impair.
2 pair.
4 pair.
5 impair.
10 pair.
20 pair.
25 impair.
50 pair.
100 pair.
//chargement manuel:
tableau[0] = 1;
tableau[1] = 2;
tableau[2] = 3;
tableau[3] = 4;
tableau[4] = 5;
System.out.println(tableau[3]);
System.out.println(tableau[4]);
tableau[i][j] = valeur;
//affichage sur une ligne (sans saut)
if(valeur<10)System.out.print("0"+tableau[i][j]+" ");
else System.out.print(tableau[i][j]+" ");
//incrémentation
valeur ++;
}
//saut de ligne
System.out.println();
}
}
}
Résultat de l‟exécution :
00 01 02 03 04
05 06 07 08 09
10 11 12 13 14
15 16 17 18 19
20 21 22 23 24
- Element 5
- Element 6
- Element 7
- Element 8
- Element 9
Parcours du contenu à l'aide de la boucle while
- Element 0
- Element 1
- Element 2
- Element 3
- Element 4
- Element 5
- Element 6
- Element 7
- Element 8
- Element 9
//constructeur
Compter();
System.out.println("Phrase [" + phrase + "]");
System.out.println("La voyelle [" + voyelle + "] y est reprise " + nbre_voyelle + "
fois.");
}else {
System.out.println("[" + voyelle + "] n'est pas reconnue comme voyelle !");
System.out.println("Impossible de compter !");
}
System.out.println();
voyelle = "u";
compteur = new CompteurVolyelle(phrase, voyelle);
compteur.parler();
}
}
Résultat de l‟exécution du programme :
[t] n'est pas reconnue comme voyelle !
Impossible de compter !
}
Résultat de l‟exécution :
a/b = 6
int a = 0;
148
int b = 0;
}
Résultat de l‟exécution :
a/b = 6
comportaient aucune entrée, car ils traitaient les données qui avaient été incluses
dans le programme lui-même. Dans ce point, nous allons étudier une possibilité
d‟entrée de données aux programmes Java.
Pour effectuer une entrée de donné simple en Java, la démarche se
résume en quelques opérations suivantes :
- Ouverture d'un moyen de communication (BufferedReader);
- Lecture des données (InputStreamReader et System.in) ;
- Fermeture du moyen de communication (.close()).
int, des doubles, des long, etc. Il y a alors nécessité de les reconvertir au format
natif avant des les utiliser dans le programme. La conversion de type
(transtypage ou casting) est donc le mécanisme approprié à cet effet.
Conversion de types :
En Java, les conversions de type se font par des méthodes. Ces
méthodes sont implémentées dans des API de la librairie J2SE (String, Integer,
Long, Float, Double et Boolean).
a. Conversion des valeurs numériques en chaînes de caractères
Il suffit de faire une concaténation avec une chaîne des caractères vide :
public class Calculateur {
public static void main(String[] args) {
int a = 12;
String aa = a+"";
}
}
String a = "12";
long aa = Long.parseLong(a);
}
}
EXERCICES
I. LES CLASSES ET LES OBJETS
Ecrire un programme utilisant cette classe pour créer un point, en afficher les
caractéristiques, le déplacer et en afficher à nouveau les caractéristiques.
Exercice 3.1 : Quelles erreurs ont été commises dans chacun des groupes
d’instructions suivants. On suppose que les variables concernées sont d’un type
primitif numérique et qu’elles ont été correctement déclarées (un groupe ne
comporte aucune erreur) :
//groupe 2
if(a<b){
System.out.println ("ascendant");
max = b
}
//groupe 3
switch (n) {
case 2:System.out.println ("petit");
break;
case p :System.out.println ("petit");
break;
}
//groupe 4
final int LIMITE = 20;
switch (n) {
case LIMITE - 1:System.out.println ("un peu trop petit");
break;
155
}
}
Exercice 4.2 : Ecrire une classe utilitaire UtilTab disposant des méthodes
statiques suivantes ;
- Somme qui fournit la somme des valeurs d’un tableau des réels (doubles)
de taille quelconque ;
- Incre qui incrémente d’une valeur donnée toutes les valeurs d’un tableau
de réels (double).
156
Exercice 5.1 : Ecrire un programme qui lit un mot ou une phrase au clavier et
qui indique combien de fois sont présentes chacune des voyelles a, e, i, o, u ou y,
que celle-ci soient écrites en majuscules ou en minuscules, comme dans cet
exemple :
Tapez votre mot ou phrase :
LA REPUBLIQUE DEMOCRATIQUE DU CONGO EST EN PAIX MAINTENANT
Il comporte :
5 fois la lettre a
7 fois la lettre e
4 fois la lettre i
3 fois la lettre o
4 fois la lettre u
0 fois la lettre y
Exercice 5.2 : Ecrire un programme qui lit une phrase au clavier et qui indique
combien de voyelles celle-ci contient, comme dans cet exemple :
Tapez votre mot ou phrase :
la republique democratique du congo
Il comporte 15 voyelles !
157
Chapitre 7.
1. Le schéma directeur
Un schéma directeur est un dessein d‟ensemble qui comporte les traits essentiels
du dessein de l‟entreprise, c‟est-à-dire du système d‟information cible dont elle a
l‟ambition de se doter, ainsi que des efforts qui seront nécessaires à la réussite
de cette ambition.
2. Etude préalable
Chapitre 8.
L‟information est considérée de nos jours comme une ressource stratégique dans
beaucoup d‟entreprises. Cela revient à dire qu‟une mauvaise gestion de
l‟information peut entraîner une désorganisation ou un chaos au sein de
l‟entreprise.
Quelle serait notre réaction, en tant que dirigeant d‟une entreprise qui utilise
l‟informatique, si l‟on nous disait qu‟il est trop difficile et trop coûteux d‟obtenir
certains renseignements utiles que nous réclamons sur les employés ?
stockées dans une base de données commune, on pourrait utiliser une fonction
de langage d‟interrogation du SGBD pour obtenir facilement l‟information
désirée.
Quels sont les problèmes engendrés par le traitement des fichiers pour les
applications des utilisateurs ?
La dispersion des données dans des fichiers indépendants complique l‟accès des
utilisateurs à l‟information lors des demandes qui font appel à des données
stockés dans plusieurs fichiers différents. Il faut créer des programmes différents
pour extraire les données de chaque fichier indépendant. En raison de la
longueur et la lenteur de cette démarche, certaines entreprises se voient dans
l‟incapacité de fournir l‟information désirée aux utilisateurs ou à la direction.
Parfois les utilisateurs doivent extraire manuellement l‟information requise dans
divers rapports produits par chaque application, et rédiger des rapports
personnalisés à l‟intention de la direction.
Les figures ci-dessous montrent les opérations bancaires effectuées par les
systèmes de traitement de fichiers. On remarque que le recours à des
programmes informatiques distincts et à des fichiers indépendants selon la
méthode de traitement de fichiers appliquée aux comptes d‟épargne, aux prêts à
tempérament et aux comptes chèques.
Quittance du client
Opérations du client
Programme des
Comptes chèques
Pgr. Compte prg. Prêt à
Epargne tempérament
L‟accent est donc plutôt mis sur les notions de base (qu‟est-ce qu‟un SGBD,
qu‟une base de données, qu‟un langage d‟interrogation) et leur application
pratique. Il demandé d‟avoir acquis à la fin du cours les connaissances
nécessaires à l‟utilisation d‟un SGBD par un informaticien non-spécialiste:
création d‟un schéma, insertion, mise-à-jour, destruction, interrogation de
données, et compréhension des mécanismes de concurrence intervenant dans la
gestion d‟un SGBD. En revanche, tout ce qui relève de la compréhension des
mécanismes internes d‟un SGBD (représentation physique, évaluation de
requêtes) ou des fondements théoriques du modèle relationnel n‟est pas abordé
ici.
Pour bien comprendre le point de vue de l‟informaticien sur cette question, nous
pensons que la première chose à faire est d‟établir quelques points de
terminologie.
D‟où le recours à un logiciel chargé de gérer les fichiers constituant une base de
données, de prendre en charge les fonctionnalités de protection et de sécurité et
de fournir les différents types d‟interface nécessaires à l‟accès aux données. Ce
logiciel (le SGBD) est très complexe et fournit le sujet principal de ce chapitre.
En fait, dans un SGBD, il existe plusieurs modèles plus ou moins abstraits des
mêmes objets, à savoir :
Exemple :
débit = crédit;
167
Cette approche offre de très grands avantages : Tout d‟abord elle ouvre
l‟utilisation des SGBD à des utilisateurs non-experts : les langages proposés par
les modèles logiques sont plus simples, et donc plus accessibles, que les outils
de gestion de fichiers.
Une bonne partie du travail sur les SGBD consiste à satisfaire ces besoins. Le
résultat est ce que l‟on appelle un langage de requêtes, et constitue une
caractéristique essentielle de chaque SGBD. Le langage le plus répandu à
l‟heure actuelle est SQL.
A propos de l‟optimisation
LE MODÈLE ENTITÉ/ASSOCIATION
Considérons une table livre stockant des ouvrages avec quelques informations
de base, dont l‟auteur. Voici une représentation de cette table.
Nous constatons que même pour une information aussi simple, il est facile
d‟énumérer tout un ensemble de problèmes potentiels. Tous ou presque
découlent d‟un grave défaut de la table ci-dessus : il est possible de représenter
la même information plusieurs fois.
Rien n‟empêche de représenter plusieurs fois le même titre. Pire : il est possible
d‟insérer plusieurs fois le titre Algorithme en le décrivant à chaque fois de
manière différente, par exemple en lui attribuant une fois comme auteur Kanga
puis une autre fois Bumba, etc.
Peut-il y avoir deux livres différents avec le même titre par exemple ? Si la
réponse est non, alors on devrait pouvoir assurer qu‟il n‟y a pas deux lignes dans
la table avec la même valeur pour l‟attribut titre. Si la réponse est oui, il reste à
170
Les mêmes questions que précédemment se posent d‟ailleurs. Jusqu‟à quel point
peut-on dire qu‟il n‟y a qu‟un seul auteur nommé Kanga, et qu‟il ne doit donc y
avoir qu‟une seule année de naissance pour un auteur de ce nom ?
On ne peut pas supprimer un titre sans supprimer du même coup son auteur. Si
on souhaite, par exemple, ne plus voir le livre Apa figurer dans la base de
données, on va effacer du même coup les informations sur Mabenza Betty.
Pour éviter les anomalies exposées ci-dessus, une bonne approche consiste à :
2. définir une méthode d‟identification d‟un titre ou d‟un auteur, qui permette
d‟assurer que la même information est représentée une seule fois ;
3. préserver le lien entre les titres et les auteurs, mais sans introduire de
redondance.
Table livre
titre année
Cuisine 1999
Algorithme 2013
Adolescence 2013
Psychosociale 2011
Apa 2008
Université 2000
Table auteur
Table livre
cuisine 1999 1
Algorithme 2013 2
Adolescence 2013 3
Psychosociale 2011 2
APA 2008 4
Université 2000 5
La nouvelle table des Livres doit être mise en relation avec la table des auteurs.
Vérifions maintenant si toutes les anomalies que nous avons évoquées ont été
éliminées.
a) Anomalie d‟insertion.
Maintenant que l‟on sait quelles sont les caractéristiques qui identifient un livre,
il est possible de déterminer au moment d‟une insertion si elle va introduire ou
non une redondance. Si c‟est le cas on doit interdire cette insertion.
Il n‟y a plus de redondance. Ainsi, toute mise à jour affecte l‟unique instance de
la donnée à modifier.
c) Anomalie de destruction.
173
Ce gain dans la qualité du schéma n‟a pas pour contrepartie une perte
d‟information. Il est en effet facile de voir que l‟information initiale (autrement
dit, avant décomposition) peut être reconstituée intégralement.
En prenant un livre, on obtient l‟identité de son auteur, et cette identité permet
de trouver l‟unique ligne dans la table des auteurs qui contient toutes les
informations sur cet auteur.
Cette colonne permet d‟identifier une entité et elle aussi la ligne qui représente
cette dernière dans la table. C‟est le cas de code.
C‟est une colonne qui est une copie de l‟identifiant d‟une autre table. Chacune
de ses valeurs joue le rôle d‟une référence à une ligne de cette table. On
l‟appelle clé étrangère.
On peut dans une table imposer plus d‟identifiant. Par exemple une table qui
reprend les informations signalétiques d‟une population dotée d‟une couverture
sociale pourrait inclure, entre autres, une colonne num-inscription et une
colonne num-carte-identité, chacune constituant un identifiant. Parmi les
identifiants d‟une table, l‟un est choisi comme le plus représentatif. Il sera
174
Une valeur d‟une clé étrangère constituée de la colonne RA d‟une table B (ou
étant donné l‟existence d‟identifiants multicomposants, constituée d‟un groupe
de colonnes de référence) est destinée à désigner une ligne d‟une table A.
Concrètement, on peut imposer que pour toute valeur de RA dans B, il y ait une
ligne de la table A identifiée par cette valeur. On en déduit une propriété très
importante appelée contrainte référentielle. Celle stipule que l‟ensemble des
valeurs d‟une clé étrangère est à tout instant une partie de l‟ensemble des valeurs
de l‟identifiant primaire de la table référencée.
*Modèle météorologique –*
*Modèle économique –*
*Modèle démographique –*
*Plans –*
Pourquoi modéliser ?
d) Conception détaillée
f) Tests unitaires
g) Intégration
i) Documentation
j) Mise en production
k) Maintenance
Une illustration...
Figure 1.1: Modèle du cycle de vie en cascade
Une illustration...
Figure 1.2: Modèle du cycle de vie en V