Vous êtes sur la page 1sur 70

UNIVERSITE DE KINSHASA

FACULTE POLYTECHNIQUE

SUPPORT DU COURS D’INFORMATIQUE DE GESTION


CT. BERNARD NSENGI KARASHARIRA

Novembre 2022

1
Table des matières

OBJECTIFS DU COURS .................................................................................................................................. 4

CHAPITRE 1. INTRODUCTION A L’INFORMATIQUE DE GESTION ....................................................................... 5

1.1 Définition de l’informatique de gestion .............................................................................................. 5


1.2 La portée de l’informatique de gestion .............................................................................................. 5
1.3 Caractéristiques de l’informatique de gestion .................................................................................... 6
CHAPITRE 2. L’ENTREPRISE, CHAMP D’APPLICATION DE L’INFORMATIQUE DE GESTION .................................. 7

2.1. Portraits de l’entreprise ................................................................................................................... 7


2.2. Les ressources nécessaires à l’entreprise ......................................................................................... 7
2.3. L’entreprise est une unité de production et de répartition .................................................................... 8
2.4. Le cycle de vie d’une entreprise ....................................................................................................... 8
2.5. L’entreprise et son organisation ..................................................................................................... 10
CHAPITRE 3. LE SYSTEME D’INFORMATION ...................................................................................................12

3.1. L’objet d’un système d’information ................................................................................................. 12


3.2. Le rôle du système d’information.................................................................................................... 12
3.3. Quels sont les besoins en information de l’entreprise ? .................................................................... 13
3.4. Quelles sont les sources d’informations ? ....................................................................................... 13
3.5. Organisation et élaboration d’un système d’information .................................................................... 14
3.6. Les problèmes du système d’information dans les entreprises .......................................................... 15
3.7. Vers une nouvelle approche du système d’information ..................................................................... 17
3.8. Le système d’information informatisée (SII) et le système d’information non automatisé ...................... 18
3.9. Est-ce que le système d’information informatisé doit-il évoluer ? ....................................................... 19
3.10. Quel est le rôle de l’informaticien de gestion ? ................................................................................. 20
3.11. Quels sont les métiers d’informatique de gestion ?........................................................................... 20
CHAPITRE 4. LE SYSTEME INFORMATIQUE ...................................................................................................22

4.1. Structure de l’ordinateur ................................................................................................................ 22


4.2. Représentation des informations ou codage binaire ......................................................................... 24
4.2.1. La base 2 .............................................................................................................................. 24
4.2.2. La base 8 .............................................................................................................................. 25
4.2.3. La base 16 ............................................................................................................................ 26
4.2.4. Notion de poids ..................................................................................................................... 27
4.2.5. Tableau de correspondances Base 10, Base 2, Base 8, Base 16 .................................................. 27
4.2.6. Conversion des nombres de Base 10 en binaire, octal et hexadécimal ......................................... 28
4.2.7. La conversion de binaire, octal et hexadécimal en décimal ......................................................... 28
4.2.8. La conversion octal, hexadécimal en binaire et vice versa .......................................................... 29

2
4.2.9. Les opérations avec les binaire, octal, hexadécimal................................................................... 29
4.2.10. La représentation du signe ..................................................................................................... 30
CHAPITRE 5. LE SYSTEME D’INFORMATION AUTOMATISE ..............................................................................32

5.1. Définition .......................................................................................................................................... 32


5.2. Modèle d’organisation selon la théorie des systèmes : ........................................................................... 32
5.3. Notion de Système d’Information (SI) ................................................................................................... 33
5.4. Système Automatisé d’Information (SAI)............................................................................................... 33
CHAPITRE 6. LA MODELISATION D’UN SYSTEME INFORMATIQUE (MERISE) .....................................................34

6.1. Introduction ................................................................................................................................. 34


6.2. Cycle d'abstraction de conception des systèmes d'information.......................................................... 34
6.3. Éléments constitutifs du modèle entités-associations ....................................................................... 35
6.4. Règles de bonne formation d’un modèle entités-associations ............................................................ 39
6.5. Élaboration d’un modèle entités-associations .................................................................................. 41
CHAPITRE 7. LA PROGRAMMATION (LANGAGE C) ..........................................................................................44

7.1. Introduction ................................................................................................................................. 44


7.2. Commentaires, noms et constantes ................................................................................................ 44
7.3. Les variables ................................................................................................................................ 47
7.4. Les opérateurs de calcul................................................................................................................ 48
7.5. Les structures de contrôle ............................................................................................................. 53
7.6. Les fonctions ............................................................................................................................... 57
7.7. Structure d'un programme C .......................................................................................................... 60
7.8. Les bibliothèques standards .......................................................................................................... 61
7.9. La compilation .............................................................................................................................. 65
EXERCICES ET TRAVAUX PRATIQUES ...........................................................................................................70

3
OBJECTIFS DU COURS

Amener les étudiants à :

1. Acquérir les connaissances relatives à la gestion du système d’information d’une entreprise et


comprendre le rôle et la portée de l’informatique de gestion ;
2. Avoir les notions de base de la conception, du développement et de l’exploitation d’un
système d’information numérisé ;
3. Faire la modélisation du système d’information digitalisé pour répondre aux besoins des
utilisateurs et de la direction des entreprises ;
4. Comprendre l’algorithmique et la programmation dans le contexte de gestion d’une entreprise ;
5. Structurer les données du système d’information sous forme des fichiers et/ou des base de
données.

4
CHAPITRE 1. INTRODUCTION A L’INFORMATIQUE DE GESTION

1.1 Définition de l’informatique de gestion

L’informatique de gestion est une branche particulière de l’informatique comme l’informatique


scientifique, l’informatique industrielle, l’informatique médicale etc.
Son objet principal est le traitement automatique des données des organisations en vue de renforcer
leur efficacité dans la prise des décisions relatives aux activités de gestion.

Il ressort de ce qui précède que l’informatique de gestion est


l’espace où la gestion et l’informatique se rencontrent

Question : Qu’est ce qui prédomine ? L’informatique ou la gestion


de l’entreprise
Réponse : La pratique sur le terrain prouve que les deux
composantes interagissent mais que les exigences de gestion
sont prédominantes.

Elles déterminent :
- comment on doit organiser les données ;
- comment on doit structurer et exploiter les fichiers (clients, stock ou fournisseurs… ) ;
- quel genre d’états en sortie produire dans une application de facturation, de paie, de
gestion commerciale etc.
Ainsi, pour bien faire de l’informatique de gestion, il est nécessaire de concilier le pôle de
gestion et le pôle informatique.

En fait, dans la pratique professionnelle, l’informatique est un outil au service de la gestion et non
l’inverse.

La subordination de l’informatique aux impératifs de gestion ne signifie pas la préséance des


gestionnaires sur les informaticiens. La subordination de l’informatique aux impératifs de gestion implique
que les moyens informatiques doivent satisfaire pleinement et uniquement les besoins des utilisateurs.

1.2 La portée de l’informatique de gestion

Le champ d’application de l’informatique de gestion est vaste et concerne les organisations telles que les
sociétés privées, l’administration publique, les universités, les écoles, les partis politiques, les ONG, les
hôpitaux etc.

L’informatique de gestion, au regard des transactions qui se font dans l’univers des affaires, occupe près
de 75 % d’informaticiens au monde.

Si par le passé 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, aujourd’hui avec

5
les progrès techniques, l’informatique est à la portée de tout le monde et est devenu un outil
indispensable de travail au quotidien.

Ainsi, à titre d’exemple, on fait de l’informatique de gestion lorsqu’à l’aide d’un logiciel approprié :

- Le jury calcule les points des étudiants en vue d’une délibération ;


- la SNEL ou la Regideso prélèvent les indices de consommation et facturent les abonnés ;
- les sociétés de téléphones tels Airtel, Vodacom, Africell et autres suivent la traçabilité et la durée des
appels ;
- un exploitant agricole fait avec son micro-ordinateur la comptabilité de sa ferme.

1.3 Caractéristiques de l’informatique de gestion

Cela étant dit, qu’est ce qui caractérise maintenant l’informatique de gestion ?

Pour distinguer l’informatique de gestion des autres branches de l’informatique, certains auteurs tels que
Aumiaux (1980) ont choisi de la comparer avec l’informatique scientifique.

Pour l’informatique de gestion, les données sont abondantes et variées en entrée. Celles-ci se
présentent sous forme de fichiers. Nous avons, par exemple, les fichiers clients, stocks, fournisseurs,
voyageurs, ventes, comptes (plan comptable)…
Dans le traitement, le programme quel que soit le langage utilisé (C++, Pascal, Vbasic) effectue des calculs
peu complexes. Par exemple, pour calculer le salaire d’un agent ou la facture d’un client, on recourt aux
opérations de simples addition, soustraction, multiplication et division.
En sortie, on a souvent des résultats abondants en termes d’états financiers, de gestion. La SNEL édite
beaucoup d’états en sortie pour ses abonnés. Les résultats sont libellés de façon simple.
On ne recourt pas à des annotations scientifiques. Quel désagrément pourra-t-on causer à un agent dont
le bulletin de paie indique qu’il a un salaire net de : 3 x 10 9 francs congolais..
Pour l’informatique scientifique, 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.

En conclusion, l’informatique de gestion est au service de la gestion des entreprises. Elle fournit les moyens
d’automatisation des systèmes d’information. L’informatique de gestion est une activité pluridisciplinaire qui
doit être menée avec méthode en recourant à de multiples compétences.

6
CHAPITRE 2. L’ENTREPRISE, CHAMP D’APPLICATION DE L’INFORMATIQUE DE GESTION

2.1. Portraits de l’entreprise

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.
En établissant la typologie des entreprises, nous pouvons les distinguer selon leur statut juridique, leur
taille ou leur activité.
Selon la taille (chiffre d’affaire, nombre de salariés), nous avons les Petites et Moyennes Entreprises
(PME) et les grandes entreprises ;
Selon le statut juridique, il y a des entreprises privées :

- SARL, Société à Responsabilité Limitée ;


- SAS, Société par Actions Simplifiées ;

- SARLU, Société Unipersonnelle à Responsabilité Limitée ;


- SA, Société Anonyme …
- et les entreprises publiques et mixtes (Standard Telecom, Sofide…).

Selon l’activité (secteur ou branche), nous distinguons :


- les entreprises agricoles,

- les entreprises industrielles (Pain Victoire, BraCongo …),

- les entreprises prestataires de services,

- les entreprises de transport,

- les entreprises commerciales,

- les entreprises télécom,

- les banques, etc.

2.2. Les ressources nécessaires à l’entreprise

Toute entreprise a besoin de ressources qui lui permettent de fonctionner. Il s’agit de moyens de
production :
- Les ressources humaines,

- Les ressources financières,

- Les matières premières,

- et les équipements techniques.

Elle achète des biens et des services à ses fournisseurs.


Elle produit des biens ou des services qu’elle vend à ses clients.
7
2.3. L’entreprise est une unité de production et de distribution

L’activité d’une entreprise peut être décomposée en deux phases distinctes :


- l’activité de production, c’est-à-dire la création des biens ou services
- l’activité de redistribution des richesses en contrepartie des biens ou services produits

a) L’entreprise produit des biens ou des services

Par l’opération de production, l’entreprise transforme des flux d’entrée (intrants ou inputs) en flux de sortie
(extrants ou outputs). Les intrants peuvent être classés en 3 catégories, à savoir :
- le travail fourni par le personnel de l’entreprise ;
- les équipements (matériels, bâtiments, etc.)
- les inputs intermédiaires, à savoir les biens (matières premières, produits semi-finis, énergie etc.)
et / ou les services (fournis par une agence publicitaire, une société de transport) incorporés au
cours du processus de production.

L’entreprise acquiert ses intrants en s’appuyant sur les 5 marchés des facteurs de production
- Réservoir de la population --- marché d’emploi --- entreprise
- Réserve d’énergie et matières premières -- marché de l’énergie et des matières premières
- Réserve de capital -- marché des capitaux - Banques
- Réserve de savoir - marché de l’innovation - Centres de recherches / Universités
- Autres entreprises - marché des biens de production - entreprise

b) L’entreprise, unité de répartition


La contrepartie de l’activité de production de l’entreprise s’exprime en unités monétaires.
Le produit de vente va permettre à l’entreprise de :
- rémunérer les facteurs de production qu’elle a utilisés ;
- payer ses charges sociales et fiscales
- dégager un bénéfice destiné à assurer son avenir.
Après paiement de ses fournisseurs, l’entreprise répartit la valeur ajoutée entre plusieurs bénéficiaires:
- le personnel de l’entreprise est rémunéré par des salaires et des avantages sociaux ;
- l’Etat, les communes et les organismes sociaux perçoivent des taxes, des impôts et des
cotisations sociales (CNSS).
- les prêteurs (organismes financiers ou particuliers) reçoivent des intérêts qui rétribuent les
capitaux qu’ils ont mis à la disposition de l’entreprise pour un temps déterminé. Les intérêts
versés sont proportionnels au montant des capitaux empruntés ;
- les propriétaires de l’entreprise prélèvent une partie des profits pour rémunérer les capitaux qu’ils
ont apportés définitivement à l’entreprise.
- La partie non prélevée est conservée dans l’entreprise pour lui permettre de renouveler son
matériel et de financer sa croissance : il s’agit de l’autofinancement.

2.4. Le cycle de vie d’une entreprise

8
L’entreprise a un cycle de vie : elle naît par la décision de ses fondateurs, 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.

2.4.1. La création d’entreprise

Toute création d’entreprise repose sur la mise en valeur d’une idée. A titre d’exemple : création d’une
société de maintenance des parcs informatiques.

2.4.2. Le développement de l’entreprise

La croissance de l’entreprise ne peut s’effectuer que si l’idée qui a favorisé son démarrage s’est traduite
en succès. Il faut ensuite que l’entreprise développe son idée en élargissant le nombre de ses clients.
Pour cela, il faut que la firme :
- augmente ses moyens de production par l’investissement ;
- s’adapte de façon continue aux besoins des clients actuels et potentiels ;
- modifie son organisation pour répondre au changement de sa taille (augmentation de l’effectif,
évolution du statut).

2.4.3. Le déclin

L’entreprise peut se trouver confrontée à des difficultés plus ou moins graves :


- mévente de ses produits : elle n’a pas réussi à imposer ses produits ou elle ne les a pas
renouvelés à temps ;
- mauvaise perception de l’évolution de son environnement ou perception trop tardive : elle n’a
pas pu ou su anticiper le changement des goûts des consommateurs ou l’évolution des coûts
(renchérissements du coût des matières premières), elle subit les attaques de concurrents plus
puissants etc.
- erreur de gestion : les dirigeants de l’entreprise n’ont pas su évaluer correctement leurs coûts :
ils ont fixé des prix de vente ne permettant pas de couvrir toutes les charges ; ils n’ont pas réussi
à motiver le personnel, ils n’ont pas maîtrisé les conséquences de l’introduction des technologies
de l’information et de communication (TIC).
Notons que les erreurs de gestion traduisent souvent l’incompétence du chef d’entreprise.
- Insuffisance de ressources financières : les prêteurs (banquier, Etat, etc.) ou les fournisseurs
n’ont pas assez confiance dans l’avenir de la firme. Le chef d’entreprise (entrepreneur individuel)
par crainte de perdre la maîtrise de son affaire, refuse d’y associer des partenaires extérieurs.

Si l’entreprise n’arrive pas à surmonter ses difficultés, alors elle est contrainte :
- 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 ;
- soit à être rachetée par une autre entreprise.

9
2.5.L’entreprise et son organisation

Quelle que soit sa taille, son statut juridique, son secteur d’activité, l’entreprise pour réaliser son objectif
général, doit effectuer plusieurs fonctions.
Par exemple, un fermier a la charge de la production des produits de ferme (viande, œufs, lait ...)
Pour arriver à produire, il est doit être gestionnaire et responsable du personnel, comptable pour gérer le
ventes et payer les impôts …

- La classification d’Henri Fayol


Henri Jules Fayol est un Ingénieur Civil des mines français, auteur de « L'administration industrielle et
générale (1916) ».
Pour H. Fayol, les fonctions de l’entreprise sont :
- la fonction technique (production),
- la fonction commerciale (« savoir acheter et vendre est aussi important que savoir fabriquer »),
- la fonction financière (recherche et gestion des capitaux),
- la fonction de sécurité (protection des biens et des personnes),
- la fonction de comptabilité (« elle doit donner sur la situation économique de l’entreprise des
renseignements exacts, clairs et précis »,
- la fonction administrative (« administrer, c’est prévoir, organiser, commander, coordonner et
contrôler

Si H. Fayol a eu le premier le mérite de mettre en évidence l’existence dans l’entreprise de différentes


fonctions, on lui reproche d’avoir accordé trop d’importance à la fonction comptable qui n’est qu’un aspect
particulier du contrôle et à la fonction sécurité.

- La classification d’Evgrafoff

Boris Evgrafoff était enseignant à l'Institut d'Administration des Entreprises de Montpellier.


Il a conçu une classification des activités nécessaires à la vie de l’entreprise en 4 grandes catégories :
- Les fonctions de direction :
Regroupent les activités dont le rôle est de gouverner l’entreprise. Elles peuvent être analysées
suivant six composantes : s’informer, décider, faire comprendre, faire pouvoir, faire vouloir.
Les fonctions de direction ont essentiellement pour rôle de fixer les buts à atteindre et les
modalités d’action.
- Les fonctions de distribution :
Comprennent les activités dont le rôle est de mettre à la disposition des clients, les biens ou les
services produits par l’entreprise. Il s’agit notamment des études commerciales, des ventes et de
la publicité.
- Les fonctions de production :
Concernent les activités dont le rôle est de créer les produits (ou les services) que l’entreprise a
choisi de mettre sur le marché. Il s’agit entre autres des fonctions de fabrication et de contrôle de
qualité.
- Les fonctions logistiques :
Correspondent aux activités dont le rôle est de mettre à la disposition de l’entreprise tous les
moyens nécessaires pour son fonctionnement. Ces fonctions se décomposent en fonction
d’approvisionnement, fonction d’équipement, fonction de maintenance, fonction de gestion du
10
personnel, fonction financière, fonction de recherche et de développement, fonction
d’administration générale.

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é.

Que retenir ?
De l’analyse de l’entreprise en termes de fonctions, que devons-nous retenir in fine ?
Il y a des fonctions qui doivent être assurées pour que l’entreprise puisse jouer son rôle ou exister.
Il s’agit de :

Fonctions Objet et finalité


Fonction commerciale vendre les produits finis ou semi-finis
Fonction de production transformer la matière première
Fonction d’approvisionnement acheter et approvisionner
Fonction financière gérer la trésorerie et les moyens financiers
Fonction administrative prévoir, contrôler et coordonner
Fonction du personnel gérer le personnel

11
CHAPITRE 3. LE SYSTEME D’INFORMATION

3.1. L’objet d’un système d’information


Par système d’information, on entend les informations utilisées par l’entreprise et l’ensemble des
moyens mis en œuvre pour gérer ces informations.
Le système d’information est donc l’ensemble des moyens humains et matériels, et des méthodes
se rapportant au traitement des différentes formes d’information rencontrées dans l’entreprise.
a- Moyens humains :
Il s’agit des différentes personnes qui manipulent, émettent ou transmettent de l’information utile à
l’entreprise.
A part quelques cas particuliers, tout le personnel d’une organisation fait partie de son système
d’information.
b- Moyens matériels :
 les machines telles que ordinateurs, machines à calculer, machines à écrire ;
 les supports de l’information : papier, fiches cartonnées, bande magnétique, Cd-rom ;
 les utilitaires divers : classeurs, téléphones, bureaux, armoires de rangement.
c- Méthodes :
 les algorithmes, logiciels, des programmes ;
 les modèles mathématiques, statistiques, graphes, probabilités ;
 les modèles comptables (comptabilité générale, analytique, matière …) ;
 les modèles de la recherche opérationnelle : perte, files d’attente…
3.2. Le rôle du système d’information
Le rôle du SI est double :
a. satisfaire les besoins informationnels de l’entreprise
Il s’agit notamment de :
 produire des informations réclamées par l’environnement socio-économique : les factures, les
bulletins de paie, les cotisations INS, les taxes DGRAD, les impôts DGI, etc.
 déclencher les décisions programmées
Exemples :
- émission d’un ordre d’approvisionnement lorsqu’un stock atteint son point de commande ;
- envoi d’une lettre de relance aux clients dont le règlement n’est pas intervenu durant la
période fixée.
- Aider à la prise des décisions en fournissant aux décideurs de l’organisation, un ensemble
d’information statistiques, des tableaux de bord, des simulations, etc.
b. favoriser la communication
Il s’agit d’assurer la coordination des tâches en permettant les communications entre les individus
dans l’entreprise.
Exemple : Intranet, email, GED …

12
3.3. Quels sont les besoins en information de l’entreprise ?
Les besoins en information d’une entreprise sont variés et peuvent être classés selon la nature de
l’information. Généralement, on distingue les types d’informations suivants :
 l’information technique : elle concerne plus particulièrement les machines, les ordinateurs,
le matériel de bureau, mais aussi l’innovation technologique.
 L’information comptable et financière : elle porte essentiellement sur les documents tels
que les factures, les écritures comptables, le bilan, le compte de résultat, etc.
 L’information juridique : elle a trait à différents domaines tels que la législation sociale, le
droit fiscal, le droit commercial.
 L’information commerciale : elle a pour but de mieux connaître la clientèle, la concurrence,
la distribution, afin de mieux répondre aux besoins des consommateurs et d’adopter une
politique commerciale plus efficace.
 L’information humaine et sociale : elles renseignent l’entreprise sur les caractéristiques du
personnel (nom, adresse, numéro CNSS, grade, profil psychologique,…), ses besoins. Elles
concernent non seulement le travail mais aussi la vie sociale et familiale (situation familiale,
nombre d’enfants).
 L’information culturelle et politique : elle a trait aux activités sportives, artistiques.
L’information politique renseigne sur les risques d’implantation dans un pays politiquement
instable.
 L’information économique : elle renseigne sur les tarifs des fournisseurs, des concurrents,
les taux d’inflation, de change.
Les besoins d’information peuvent évoluer. En effet, le système d’information devient de plus en plus
sophistiqué du fait de la complexification des besoins.
 Informations spécialisées
Les utilisateurs ont besoin d’informations de plus en plus fines, spécialisées en fonction de leurs
centres d’intérêts. Cette information doit être personnalisée pour la rendre le plus directement
utilisable par l’intéressé et mieux adaptée à ses besoins.
 Emergences de besoins transversaux / bourses
Il s’agit de développement d’informations pluridisciplinaires. En effet, au-delà des informations
spécialisées liées à la fonction de l’utilisateur (un vendeur a besoin en priorité d’informations
commerciales), celui-ci fait de plus en plus appel à des informations rattachées à d’autres
domaines (les vendeurs recherchent de plus en plus des informations culturelles, juridiques).
3.4. Quelles sont les sources d’informations ?
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 la procurer.
Pour répondre aux besoins informationnels et éviter la perte de temps, les différentes sources
d’informations de l’entreprise doivent être connues.
Pour les sources d’informations internes il s’agit :
 des documents comptables (journal, bilan, grand livre)
 des documents commerciaux (bon de commande, facture, chéquier)

13
 des rapports des délégués commerciaux
 des compétences et les opinions personnelles
Pour les sources externes, étant donné qu’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

3.5. Organisation et élaboration d’un système d’information


L’analyse du circuit d’information nous permet de mieux comprendre la fonction du système d’information.
A. Les composantes d’un circuit d’information
Dans un système d’information, les données empruntent différents circuits appelés flux d’information.
C’est pourquoi, l’organisation de ces flux ainsi que la qualité des moyens de transmission utilisés sont
essentiels pour assurer une bonne circulation de l’information.
L’information pour être utilisable doit être collectée, saisie, traitée, transmise puis stockée.
1. les circuits d’information
Avant de faire l’organisation des circuits d’information, il faut bien comprendre que ceux-ci peuvent avoir
été définis clairement, de façon formelle, ou bien exister de façon informelle.
L’ensemble des circuits d’information d’une entreprise constitue un réseau. Le réseau formel correspond
à l’information fonctionnelle (l’information technique et de gestion) alors que le réseau informel est
généralement mieux adapté aux informations de relations humaines.
1.1. Le réseau formel
Le réseau formel est le réseau officiel de l’information conformément à la structure hiérarchique et
fonctionnelle de l’entreprise. Le réseau formel peut être représenté par un organigramme par des
graphes, par des diagrammes de circulation de l’information.
Au sein d’un système hiérarchisé, on peut distinguer 3 types d’informations entre subordonnés et
supérieurs hiérarchiques :
- l’information descendante : émise par le supérieur vers le subordonné. Ex : un chef de service
peut dire à son secrétaire « préparez le document relatif au paiement des agents ».
- information ascendante : émise par le subordonné vers le supérieur. Elle permet au supérieur
de jouer d’une part le rôle de régulateur en vérifiant si les directives ont été correctement suivies,
puis d’agir en conséquence, et, d’autre part, un rôle de récepteur en recueillant des idées, des
suggestions, des informations nouvelles issues de la base.
- Information latérale : transmise entre émetteur et un récepteur de même niveau hiérarchique.
1. 2. Le réseau informel
Le réseau informel est le réseau non officiel de l’information. Celui-ci peut véhiculer des informations
utiles, de façon non hiérarchique, jouant alors un rôle régulateur. Mais il peut également véhiculer des
informations parasites nuisibles pour l’entreprise.
Le réseau informel peut avoir :
- un rôle régulateur quand il supplée de façon correcte au réseau formel inefficace ;
- un rôle révélateur lorsque la communication dans le cadre du réseau informel peut permettre de
détecter des difficultés, des problèmes, mais aussi des satisfactions, des idées novatrices que ne décèle
pas toujours le réseau formel ;
14
- un rôle parasite lorsqu’il perturbe le bon fonctionnement de l’entreprise (rumeurs, informations
confidentielles diffusées). La cause en est souvent la rétention d’informations.

3.6. Les problèmes du système d’information dans les entreprises


Depuis son apparition, la technologie de l’information s’est révélée difficile à maîtriser.
Le premier souci des dirigeants d’entreprise, c’est avoir la bonne information à tout moment. Mais rares
sont ceux qui sont satisfait par leur système d’information. Voici quelques raisons :
3.6.1. L’incapacité du SI à évoluer
L’entreprise performante est en situation de mutation permanente. Seules les entreprises qui sauront
apprivoiser le chaos pour en faire un principe de management pourront à l’avenir gagner. Pour
apprivoiser le chaos et en faire une contrainte permanente pour la concurrence, il faut une culture
d’entreprise très forte et un système d’information d’une très grande qualité, capable d’intégrer le
changement comme simplement une donnée nouvelle.
Peu d’entreprise disposent d’un tel système. Le système d’information ne devrait jamais être un obstacle
pour saisir des opportunités. Donc, il faut un système d’information qui est capable d’intégrer des
changements et d’évoluer.
En d’autres mots, la valeur intrinsèque d’un système d’information résultera plus de son aptitude à
évoluer rapidement que de la masse d’instructions écrites en java, C. …
3.6.2. Le manque de stratégie, la donnée étant désormais une ressource stratégique
La technologie de l’information a désormais droit de cité dans la stratégie d’entreprise. L’information
n’est plus seulement considérée comme une ressource opérationnelle, mais de plus en plus comme
une ressource stratégique : le système d’information devient un facteur de différenciation par rapport à
la concurrence.
Le destin de milliers d’entreprises est suspendu à leur capacité à utiliser l’information comme une
ressource stratégique. De sorte que le risque, pour beaucoup d’entreprises, est de ne pas dépenser
assez dans l’utilisation stratégique de leur système d’information.
3.6.3. Incapacité à alimenter le pilotage
Le monde économique devient complexe. Les forces concurrentielles évoluent très rapidement et sont en
perpétuelle interaction. La nécessité pour les dirigeants d’entreprises de disposer d’une information
pertinente, précise, fiable et disponible à temps se pose aujourd’hui avec acuité.
Le défi que doit relever un système d’information efficace est de fournir la bonne information à la
bonne personne au bon moment. Peu d’entreprises disposent aujourd’hui d’un tel système
d’information.
Il règne souvent, parmi les cadres supérieurs, un sentiment de malaise dû au fait que, malgré des coûts
informatiques importants, il leur est impossible d’obtenir l’information dont ils ont besoin.
Cette impossibilité du système d’information à alimenter l’action des dirigeants contrarie parfois leur
carrière personnelle. Elle affecte, dans tous les cas, la performance de l’entreprise.
La conséquence est que beaucoup de décisions d’ordre stratégique, susceptibles d’être appuyées de
façon pertinente par l’informatique, sont prises de façon empirique ou irrationnelle faute
d’information adéquate. Si on devrait chiffrer les pertes économiques générées par de telles décisions,
on se rendra bien compte de l’étendue de la catastrophe.

15
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.
3.6.4. La pyramide de Maslow
La pyramide d’Abraham Maslow (psychologue américain) nous indique qu’il ne sert à rien de vouloir
satisfaire les besoins nobles d’un individu (besoins spirituels, intellectuels, etc.) tant que ses besoins
d’ordre physiologique ne sont pas satisfaits. De même, en matière de système d’information, il est vain de
vouloir satisfaire le pilotage tant que l’opérationnel n’est pas fait.
En effet, les besoins en information de pilotage résultent pour l’essentiel de l’agrégation d’informations du
système opérationnel.
Le système d’information de pilotage repose sur le système d’information opérationnel de même que les
besoins intellectuels d’un individu reposent sur une physiologie assumée : une âme saine dans un
corps sain.
Une hiérarchie doit être instaurée dans la satisfaction des besoins, y compris pour le système
d’information. Ce précepte de base est trop souvent oublié.
3.6.5. Mutualisation et coordination
Malgré leur bonne volonté et malgré l’énergie déployée, les départements informatiques se trouvent
confrontés à l’impossibilité de répondre dans un délai raisonnable aux besoins sans cesse croissants des
utilisateurs.
Ces derniers mettent en place, sous la pression du marché, des solutions autonomes à base de Micro-
informatique qui ne font bien souvent qu’aggraver l’incohérence et la lourdeur du système d’information
pour un coût global toujours supérieur au coût apparent.
Il est, en effet, constant d’observer dans les entreprises que des cadres supérieurs investissent le plus
clair de leur temps à développer des applications sur micro-ordinateurs sans professionnalisme au
détriment de l’exercice de leur véritable métier.
En plus du fait que ces expériences n’aboutissent pas toujours, elles conduisent la plupart du temps à
l’obtention d’un système jetable car non documenté ou non réalisé dans les règles de l’art.
Les utilisateurs devraient être convaincus que, plutôt que de construire des systèmes bourgeonnant, il est
urgent d’attendre que les techniques d’analyse soient mises en œuvre au sein de l’entreprise.
3.6.7. La maintenance
L’essentiel des forces vives des départements informatiques consacre aujourd’hui le plus clair de son
temps à des tâches de maintenance pour aménager ce qui existe. Dans beaucoup d’entreprises, il est
assez curieux de constater que la charge de maintenance représente 80 % des efforts de
développement, ne laissant que 20 % d’allocation pour les nouveaux projets. Donc trop d’efforts sont
déployés dans les tâches de maintenance et trop peu de forces sont consacrées aux nouveaux projets
porteurs d’espoirs dans l’entreprise. Les idées nouvelles sont ainsi étouffées par la charge que
représente la maintenance.
3.6.8. L’inexistence de dialogue
Les départements informatiques sont complètement absorbés par les tâches fastidieuses de maintenance
qu’ils réalisent ; ce qui ne le prédispose que faiblement à s’ouvrir sur l’extérieur. Conséquence,
l’informatique se replie sur elle-même. Rien ne prédispose au dialogue les informaticiens et les
utilisateurs : absence de langage commun. Cet état des choses a dans l’entreprise des conséquences
catastrophiques.

16
3.6.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 :
- son mode d’emploi, afin de l’utiliser correctement ;
- sa logique de fonctionnement et les options prises dans sa conception, pour le faire évoluer ou,
plus simplement, pour corriger un défaut constaté.
L’insuffisance de documentation technique est un défaut dont les conséquences touchent en premier à
la pérennité du logiciel développé et, bien souvent, en second lieu à la pérennité de l’entreprise.
L’insuffisance de documentation d’utilisation est très souvent à l’origine des erreurs de manipulation du
système informatique dont les conséquences sont catastrophiques lorsque le système a, de surcroît, été
conçu sans toutes les sécurités nécessaires.
A l’instar de la documentation, la formation des utilisateurs est très souvent insuffisante pour leur
permettre de tirer le meilleur parti du système qui est mis entre leurs mains.
3.6.10. Projet sans issue
Beaucoup d’entreprises se lancent dans des projets importants de développement de système
d’information sans véritable méthode de développement et sans véritablement se doter d’une conduite de
projet. Conséquence, ces projets échouent immanquablement.

3.7. Vers une nouvelle approche du système d’information


L’information est un symbole qui a une signification pour les acteurs de l’entreprise. Elle peut se
transformer en connaissance utile à l’accomplissement de leur travail. Cette fonction est particulièrement
importante quand les tâches sont divisées entre plusieurs personnes ou étalées dans le temps.
Traditionnellement, on observe trois rôles joués par l’information.
a. L’information est un support pour l’action.
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.
b. L’information conserve une trace des activités
Elle renseigne sur les actions accomplies par soi-même ou par d’autres. La tenue d’une comptabilité en
est le meilleur exemple.
c. L’information apporte une aide à la prise de décision
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.
Actuellement, les technologies de l’information et de communication ont amplifié et étendu le rôle de
l’information dans l’entreprise. Elles offrent, en effet, des possibilités de mémorisation, de traitement
automatique, et de diffusion qui ouvrent de nouveaux horizons.
Ce phénomène est particulièrement perceptible dans trois courants qui influent sur la gestion des
entreprises : la dématérialisation des objets de gestion, l’exigence de qualité et la recherche continue
d’innovation.
3.7.1. La dématérialisation des objets de gestion

17
De nombreux objets de gestion ne sont plus aujourd’hui concrétisés par les objets physiques : leur
existence est liée à la naissance et au cycle de vue d’informations qui les caractérisent. Par exemple, les
valeurs mobilières, même les plus classiques telles les actions et les obligations, n’ont plus d’existence
matérielle. Leur propriété n’est plus assurée par la détention d’un certificat, mais par une inscription dans
la comptabilité de la banque dépositaire d’une ligne au compte client. Ce sont les écritures qui font foi et
non un papier détenu par le propriétaire.
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.
3.7.2. L’exigence de qualité
Sous la pression de la concurrence, un nombre croissant d’entreprises, à travers le monde, se
préoccupent non seulement de la qualité de leurs produits, mais aussi de celle de leurs processus. Pour
améliorer la qualité de leur fonctionnement, les entreprises doivent notamment identifier et maîtriser les
informations qui rendent compte du déroulement de leurs processus.
Par exemple, la norme ISO 9000 a imposé d’avoir un dispositif garantissant la maîtrise des documents
utilisés dans l’entreprise : documents de travail, documents techniques, documents de gestion, etc. Les
acteurs doivent pouvoir disposer en temps voulu des documents qui leur sont nécessaires. Il faut pour
cela mettre en place des procédures d’approbation, de diffusion et de remplacement des documents, ce
qui entraîne une gestion d’informations pour chaque document.
L’entreprise est donc conduite à gérer des informations supplémentaires pour améliorer la qualité de sa
gestion. Les technologies de l’information, notamment celles de l’intranet, facilitent la mémorisation,
l’actualisation et la diffusion de ce type d’information.
3.7.3. La recherche continue d’innovation
Pour se développer ou parfois pour survivre, les entreprises sont condamnées à entrer dans un cycle
continu d’amélioration et d’innovation. Les technologies de l’information sont aujourd’hui un des moyens
de développer de nouveaux produits et/ou services pour le client. Les services en ligne offerts par
certaines banques au Congo sont un bon exemple. Le développement de l’Internet et du commerce
électronique conduit certaines entreprises à développer des offres particulières pour ce nouveau circuit
de distribution.
Ces innovations placent l’information au cœur de l’activité. L’extension de la place de l’information dans
l’entreprise conduit à faire évoluer la notion de système d’information.

3.8. Le système d’information informatisée (SII) et le système d’information non automatisé


Le système d’information peut être découpé en deux sous-systèmes distincts, à savoir le sous-système
d’information informel et le sous-système d’information formalisé.
Les informations informelles sont celles dont l’entreprise n’a défini ni la forme, ni le fond. Par exemple,
les informations échangées entre les collaborateurs lors de pause-café. Notons que ce genre
d’informations peut être traité traitée au moyen des outils informatiques de l’entreprise : internet, intranet.
L’informatique mise en œuvre pour le traitement des informations informelles ne peut donc pas être
qualifiée de gestion car elle n’automatise pas l’administration des intérêts ou les affaires de l’entreprise.
Les informations formelles sont celles dont l’entreprise a défini la forme et le fond, et dont elle a besoin
pour garantir un fonctionnement correct de ses activités opérationnelles et de pilotage.
Le système d’information formalisé peut être découpé en deux sous-systèmes : l’information non
automatisé et l’information automatisé.

18
Le sous-système d’information non automatisé résulte du traitement de données effectué par un humain ;
naturellement, les moyens informatiques peuvent être utilisés mais, il est de la responsabilité de l’homme
d’assurer le couplage entre les données qu’il utilise et les traitements qu’il leur applique.
Le sous-système d’information informatisé offre un traitement de données automatisé par des
programmes informatiques ; l’essentiel de l’automatisme consiste à établir un couplage transparent pour
les utilisateurs entre les traitements informatiques d’une part et les données utilisées d’autre part. Ce
couplage entre les données et les multiples traitements informatiques qui les utilisent nécessite une
structuration rigoureuse des données.
Illustrons notre propos par un exemple. Admettons qu’à l’issue d’une réunion un procès-verbal soit
produit : Dans le cadre d’un système d’information non automatisé, le secrétaire utilisera un outil
bureautique qui lui permettra de respecter la forme mais il lui reviendra d’intégrer le contenu sur base de
ses compétences en bureautique.
Dans le cadre d’un système d’information automatisé ou SII, le secrétaire disposera d’un programme qui
lui demandera de saisir les différentes données utiles et nécessaires (dates, participants, sujet, décision)
et le processus de traitement manipulera les données pour fournir le procès-verbal attendu.
Cet exemple met en évidence le rôle du mode de couplage entre les données et les traitements. Dans le
premier cas, le secrétaire devra gérer lui-même les données de son rapport en les sauvant probablement
dans un fichier. Ici, 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. Tandis que dans le second cas, les
données seront gérées automatiquement par le SII qui les sauvegardera probablement dans une base de
données.

3.9. Est-ce que le système d’information informatisé doit-il évoluer ?


Dans la logique économique actuelle, les entreprises doivent régulièrement adapter leurs règles de
gestion, leurs procédures opérantes ou leurs communications internes et externes pour suivre l’évolution
de leur environnement et rester compétitives.
Cette auto-adaptation est une caractéristique essentielle des systèmes vivants qui développent des
mécanismes de régulation susceptibles de garantir leur survie ; ces mécanismes de régulation, en fait
des changements de fonctionnement et de comportement, sont de nature complexe, ils sont le fait du
personnel qui met en œuvre sa capacité d’inventivité, de réactivité ou encore d’intuition.
Tout changement de fonctionnement de l’entreprise a un impact sur son système d’information (SI) que
ce soit sous forme de modification de procédures de traitement, de stockage ou de communication de
l’information.
Face à un événement imprévu qui nécessite une réaction de sa part, l’entreprise va mettre en œuvre les
capacités de créativité et d’intuition de son personnel pour décider d’une adaptation de son
fonctionnement. Pendant cette démarche, l’incidence des changements de fonctionnement de l’entreprise
sur le système d’information informatisé doit impérativement être évaluée. Si le changement a une
incidence sur le SII, l’entreprise est certainement face à deux options essentielles :
- Mettre en œuvre le changement de son fonctionnement immédiatement. Cette option aura
comme effet de rendre inopérant tout ou partie du SII.
- Adapter le SII pour qu’il prenne en compte les nouvelles modalités et mettre en œuvre le
changement dès que l’adaptation du SII est réalisée.
En fait ces deux options sont relativement caricaturales ; la première relève de la position d’une direction
d’entreprise qui ne veut pas être dépendante de son SII. La deuxième relève de la position de force que
peut avoir le SII au sein de l’entreprise.
19
La première option est envisageable seulement si l’entreprise n’encourt pas de préjudice à terme en
utilisant des procédures du SII rendues caduques par le changement. Sinon, la direction du système
d’information doit obligatoirement informer la direction de l’entreprise des risques encourus.
La deuxième option est envisageable seulement si le temps nécessaire à l’adaptation du SII ne met pas
en péril l’entreprise qui tarde à réagir au changement. Sinon, la direction de l’entreprise doit imposer la
première solution à sa direction du système d’information.
En conclusion, seuls les changements qui ne sauraient attendre l’adaptation du SII pour être mis en
œuvre par l’entreprise posent problèmes. Ces changements nécessitent une concentration optimale de la
direction de l’entreprise et de la direction du système d’information. La direction de l’entreprise doit
imposer le changement à la direction du système d’information. A son tour, la direction du système
d’information doit proposer les mesures d’accompagnement susceptibles de limiter les risques de
dégradation du SII du fait du changement.
Au regard de tout ce qui précède, quelle est la portée de l’informatique de gestion ?
Les deux partitions, le système d’information non automatisé et le système d’information informatisé du
système d’information formel s’appuient sur l’informatique. L’informatique de gestion, en tant que
spécialité, s’applique essentiellement au système d’information informatisé ; elle a comme finalité de
fournir aux sous-systèmes opérationnel (SO) et de pilotage (SP) les informations utiles et nécessaires en
cachant au bénéficiaire les contingences d’acquisition, de mémorisation, de traitement et de
communication des données utilisées.
3.10. Quel est le rôle de l’informaticien de gestion ?
L’informaticien de gestion est formé pour assumer à terme la direction du système d’information de
l’entreprise.
Ainsi, durant ses études il est formé à la gestion des entreprises afin d’être capable de définir avec
pertinence les processus à automatiser d’une part et de proposer des phases transitoires de traitement
de l’information lorsqu’un changement de stratégie ou de procédures impératif et immédiat rend obsolète
tout ou partie du système d’information informatisé.
Durant ses études, l’informaticien de gestion est aussi formé aux technologies de l’informatique. Cela
lui permettra de mettre en place des processus automatisés tirant le meilleur parti des technologies
modernes de traitement de l’information d’une part et de mettre en place des solutions bureautiques ou
autres efficientes lors des phases transitoires d’indisponibilité de processus automatisés pour cause de
changement de stratégie, de tactique ou de procédures de l’entreprise.
En plus de ces deux champs de compétences en gestion et informatique, l’informaticien de gestion est
formé à la communication interpersonnelle afin de lui permettre de disposer des bases indispensables
à communiquer efficacement avec tous les acteurs impliqués par la définition, l’utilisation ou encore la
réalisation du système d’information informatisé.

3.11. Quels sont les métiers d’informatique de gestion ?


Les métiers sont en perpétuelle évolution. Néanmoins, on s’accorde pour les regrouper en classes.
1. Etudes et développement
Cette famille regroupe tous les métiers qui ont pour missions de définir, de concevoir et de développer de
nouvelles applications et de nouveaux programmes : logiciels systèmes, logiciels outils, logiciels de
gestion de base de données ou encore logiciels d’application.
2. Production et exploitation

20
Les informaticiens de cette famille s’occupent de la conduite des machines, de leur surveillance et de leur
maintenance. (Ingénieur en informatique industrielle)
3. Spécialistes réseaux et télécommunications
Aujourd’hui, la télécommunication occupe une place non négligeable en informatique. (Architecte de
réseaux)
4. Conseil
Dans un secteur qui évolue aussi vite, les entreprises qui ont le souci de rester performantes doivent être
bien conseillées dans leur choix d’équipement informatique. Le consultant détermine quelles sont les
solutions informatiques les plus efficaces pour répondre aux besoins du client, puis il suit la mise en place
des solutions qu’il a proposées.
5. Fonctions administratives (BdD, OS, Réseaux, Sécurité …)
Ce secteur rassemble des métiers qui impliquent d’avoir une bonne expérience professionnelle. Les
fonctions administratives regroupent tous les postes de gestionnaires qui supervisent et organisent le
travail des informaticiens de l’entreprise (directeur du service informatique, administrateur de base de
données).
6. Assistance aux utilisateurs
Dans cette famille, on trouve des conseillers qui assistent les utilisateurs en matière d’achat des
ordinateurs et des logiciels. En plus, ils s’appliquent à former les nouveaux utilisateurs (technicien de
maintenance informatique, vendeur-conseil en micro-informatique etc).

21
CHAPITRE 4. LE SYSTEME INFORMATIQUE

4.1. Structure de l’ordinateur


4.1.1. Hardware

La structure de base d'un ordinateur comprend les éléments fondamentaux suivants :


- Une unité centrale de traitement (unité centrale).
- Une unité de mémoire, appelée mémoire centrale.
- Les unités entrées/sorties
- Un système de bus permettant de véhiculer l'information entre les différentes unités

Les fonctions de l’ordinateur sont :


- Communication avec l'utilisateur
o fonction d’entrée : entrée des informations à traiter : les données
o fonction de sortie : communication des informations élaborées par le traitement : les résultats

- Le traitement des données par l’Unité Centrale. On trouve les fonctions :


o de mémorisation (temporaire) : mémoire centrale
o de calcul : unité arithmétique et logique, qui élabore les résultats à partir des données
22
o de séquencement : les opérations élémentaires sont exécutées l'une après l'autre selon un
certain ordre. Le choix d'une action peut éventuellement dépendre du résultat des actions
précédentes.
4.1.2. Software

 Système d’exploitation

Définition :
Un Système d’Exploitation (S.E.) est une machine abstraite conçue pour faciliter l’utilisation du
matériel (pilotes de périphériques) ou pour arbitrer l’accès au matériel par les utilisateurs.

Un système d'exploitation (de l'anglais Operating System, abrégé en OS) est un ensemble de
logiciels permettant l'utilisation d'un appareil informatique (ordinateur, tablette, mobile, console de
jeu…) – Dictionnaire Robert

Composition
Généralement composé d’un noyau et d’un ensemble d'outils système, le S.E. permet de
développer des applications portables, qui ne sont pas spécifiques à un ordinateur ou un système
donné

23
Exemples
Les systèmes d'exploitation les plus répandus sont Windows (pour les PC), Mac OS (pour les ordinateurs
d'Apple), Linux (pour les PC et les serveurs) et Unix (pour les serveurs). Pour les téléphones, on trouve
Android, iOS (chez Apple), Symbian et Windows Phone

4.2. Représentation des informations ou codage binaire


Les informations traitées par l’ordinateur sont codées en binaire, c’est à dire à base de 0 et de 1.
Un chiffre 0 ou 1 est appelé un bit (contraction de binary digit).
Dans ce paragraphe nous expliquons comment chacune des informations traitées par l’ordinateur est
traduite en une suite de bits. On dit qu’elles sont codées en binaire.

4.2.1. La base 2

Pour coder un nombre en base 2, il faut le décomposer en une suite de multiples de 2. C’est à dire que
l’on va l’écrire sous la forme :
X = an*2n + an-1*2n-1 + .... + a2*22 + a1*21 + a0*20
Chaque valeur an, an-1, … , a2, a1, a0 est égale à 0 ou 1.
Pour faire des conversions en binaire, il est utile de connaître la table des multiples de 2.

20 1
21 2
22 4
24
23 8
24 16
25 32
26 64
27 128
28 256
29 512
210 1024

Exemples :
12 = 8 + 4 = 1*23 + 1*22 + 0*21 + 0*20 = (1 1 0 0)2
5 = 4 + 1 = 1*22 + 0*21 + 1*20 = (1 0 1)2
27 = 16 + 8 + 2 + 1 = 1*24 + 1*23 + 0*22 + 1*21 + 1*20 = (1 1 0 1 1)2
(1 0 1 0 1 0)2 = 1*25 + 0*24 + 1*23 + 0*22 + 1*21 + 0*20 = 32+ 8 + 2 = 42

4.2.2. La base 8

L’octal est le codage en base 8. Suivant le même principe on utilise les chiffres entre 0 et 7 pour coder les
nombres en octal.
X = an*8n + an-1*8n-1 + .... + a2*82 + a1*81 + a0*80
Chaque valeur an, an-1, … , a2, a1, a0 est comprise entre 0 et 7. Pour faire des conversions en octal, il
est utile de connaître la table des multiples de 8.

80 1
81 8
82 64
83 512

Exemples :
12 = 8 + 4 = 1*81 + 4*80 = (1 4)8
121 = 64 + 56 + 1 = 1*82 + 7*81 + 1*80 = (1 7 1)8
(3 0)8 = 3*81 + 0*80 = 24
Un chiffre octal peut se coder directement en binaire sur 3 bits.

0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

25
De sorte que la conversion binaire/octal et octal/binaire est très simple.
Binaire : 010 101 011 001 110
Octal : 2 5 3 1 6
Il suffit de grouper les bits par 3 en partant de la droite et de traduire.

4.2.3. La base 16

L’hexadécimal est le codage en base 16. On utilise cette fois les chiffres entre 0 et 9 puis les lettres A(10)
B(11) C(12) D(13) E(14) F(15).
X = an*16n + an-1*16n-1 + .... + a2*162 + a1*161 + a0*160
Chaque valeur an, an-1, … , a2, a1, a0 est comprise entre 0 et 15.
Pour faire des conversions en hexadécimal, il est utile de connaître le début de la table des multiples de
16

160 1
161 16
162 256

Exemples :
18 = 16 + 2 = 1*161 + 2*160 = (1 2)16
125 = 112 + 13 = 7*161 + 13*160 = (7 D)16
(A B)16 = 10*161 + 11*160 = 160 + 11 = 171
Un chiffre hexadécimal peut se coder directement en binaire sur 4 bits.

0 0000 8 1000
1 0001 9 1001
2 0010 A 1010
3 0011 B 1011
4 0100 C 0100
5 0101 D 1101
6 0110 E 1110
7 0111 F 1111

De sorte que, la conversion binaire/hexadécimal et hexadécimal/binaire est très simple.


Binaire : 0010 1001 0101 0001 1110
Hexadécimal : 2 9 5 1 E
Il suffit de grouper les bits par 4 en partant de la droite et de traduire.

26
4.2.4. Notion de poids
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 a
plus de poids que le 3.
En binaire c’est pareil : dans 10111111, le 1 le plus à gauche est appelé le bit représentant le poids le
plus fort. Et le 1 le plus à droite 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.

Base B3 B2 B1 B0 B-1 B-2

10 1000 100 10 1 0,1 0,01

2 8 4 2 1 0,5 0,25

8 512 64 8 1 0,125 0,015625

16 4096 256 16 1 0,0625 0,00390625

Les puissances de la base B0, B1 …... B-1 ... sont appelées les poids.

4.2.5. Tableau de correspondances Base 10, Base 2, Base 8, Base 16

Base 10 Base 2 Base 8 Base 16


0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
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 système hexadécimal (base 16) couvre toutes les combinaisons de 4 bits possibles entre 0000 et
1111.
27
4.2.6. Conversion des nombres de Base 10 en binaire, octal et hexadécimal

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.
Exemples :
Que vaut 15 en base 2 ?
15 / 2 = 7 reste 1
7 / 2 = 3 reste 1
3 / 2 = 1 reste 1
1 / 2 = 0 reste 1
La réponse est la série des restes de la division successive de façon inversée : 1111
Exercices
1) Que vaut le nombre décimal 15,432 en base 2 ?
La partie entière est 15 et la partie décimale est 0,432. La partie entière vaut 1111.
La partie décimale fait l’objet d’une multiplication successive en reportant la partie entière résultante dans
le nombre binaire.
0,432 x 2 = 0,864 -> 0
0,864 x 2 = 1,728 -> 1
0,728 x 2 = 1,459 -> 1
0,459 x 2 = 0,914 -> 0
0,914 x 2 = 1,836 -> 1
0,836 x 2 = 1,672 -> 1
Contrairement à la partie entière, la lecture des reports se fait du haut en bas.
Donc 15,432 vaut approximativement 1111,01101. Il s’agit d’un nombre à fraction continue vu que
représente 15,432 en base 10 ne peut être représenté que par approximations successives en base 2.

2) Que vaut 42 en base 8 ?

42 : 8 = 5 reste 2
5 : 8 = 0 reste 5
Donc 42 en base 10 vaut 52 en base 8.

3) Que vaut 42 en base 16 ?

42 : 16 = 2 reste 10 qui en hexadécimal = A


2 : 16 = 0 reste 2
Donc 42 en base 10 vaut 2A en hexadécimal.

4.2.7. La conversion de binaire, octal et hexadécimal en décimal

(111)2 = 1*22 + 1*21+1*20 = 7


(1111)2 = 1 x 23 + 1 x 22 + 1 x 21 + 1 x 20 = 15
28
(111,01)2 = 1 x 22 + 1 x 21 + 1 x 20, 0 x 2-1 + 1 x 2- 2 = 4+2+1, 0 x 0,5 + 1 x 0,25 = 15,25
Ce même principe est valable pour l’octal (base 8) et l’hexadécimal (base 16)
(642)8 = 6 x 82 + 4 x 81 + 2 x 80 = 6 x 64 + 4 x 8 + 2 x 1 = 418
(12,4)8 = 1 x 81 + 2 x 80, 4 x 8-1 = 1 x 8 + 2 x 1, 4 x 0,125 = 10,5
(A 3 F)16 = A x 162 + 3 x 161 + F x 160 = 10 x 256 + 3 x 16 + 15 x 1 = 2623

4.2.8. La conversion octal, hexadécimal en binaire et vice versa

567 en octal --> 101 110 111 en binaire. Chaque chiffre octal correspond à trois bits.
341 en octal --> 011 100 001 en binaire.
A8F en hexadécimal --> 1010 1000 1111 en binaire. Chaque chiffre hexadécimal correspond à 4 bits ou
chiffres binaires.
10 0110 1011, 1100 1 --> 26B,C8.
En effet, un nombre binaire se convertira en hexadécimal en partant de part et d’autre de la position de la
virgule et en découpant le nombre par tranche de 4 chiffres binaires ou bits et en interprétant chaque
tranche. Le dernier chiffre 8 de l’exemple précédent est obtenu en faisant une extension de « 0 » à droite
du dernier « 1 ».

4.2.9. Les opérations avec les binaire, octal, hexadécimal

a) Addition et soustraction
111 10010 (5 6 5)8 AB2 D
+ 111 + 1011 + (3 3 3)8 + 5 4 D + 7
_____ _____ _______ _____ __
1110 11101 11 2 0 FFF 14

1000 10010 3F2


- 111 - 1011 -1A4
_____ _____ _____
1 1111 24E

(523)8 - (77)8 = 4 24
Lorsque la soustraction n’est pas possible on emprunte la base. Ainsi pour le cas ci-dessus :
8 + 3 = 11 – 7 = 4
8+1= 9–7=2
Reste 4

(356)16 - (DF)16 = 277


On emprunte la base 16, ainsi on a 16 + 6 = 22 – 15 = 7
16 +5 = 21 – 13 – 1 = 7
3–1=2

29
a) Multiplication et division
- binaire
11,11
x 1,1
-------
1111
1111
------
101,101

- octal
43
x 26
-------
322
106
-------
1402
- Hexadécimal
A3
x3
----
829
Division
111 : 10 = 11,1
En octal et hexadécimal, il est facile de transiter par le décimal.
Hexadécimal
40 : 4 = (10)8 équivaut en décimal à 64 : 4 = 16
Octal
40 : 4 = (10)8 équivaut en décimal à 32 : 4 = 8

4.2.10. La représentation du signe

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 :
30
-5 donne 0 1 0 1
1 0 10
+1
________
1 0 1 1 47

+ 5 --> 0 1 0 1
- 5 --> 1 0 1 1
___ _______
010000

En ignorant le report au-delà de la position du signe on obtient bien 0.


Remarquons que si nous travaillons sur un nombre binaire représenté en symbolisme hexadécimal, le
complément à 2n devient un complément 16p. On obtiendra la représentation hexadécimale de
l’opposé en complémentant chaque chiffre à F et en ajoutant.
0 1 0 0 1 1 0 1 -- 4 D (FF – 4D =B2)
1 0 1 1 0 0 1 0 B2
1+1
____________ ___
1 0 1 1 0 0 1 1 ----- B3
Donc, on obtient le complément à 2 en cherchant l’opposé de chaque bit, puis ajouter 1.

EXERCICES

31
CHAPITRE 5. LE SYSTEME D’INFORMATION AUTOMATISE

5.1. Définition
Un système est un ensemble d’éléments matériels et immatériels (hommes, machines, méthodes,
recettes, règles, etc...) unis par des relations qui transforme, par un processus, des éléments (les
entrées) en d’autres éléments (les sorties).

- Le système correspondant à l’activité de l’entreprise (transformation de flux) est


appelé Système Opérant (SO).
- L’entreprise a aussi besoin d’un système de prise de décision lui permettant de réaliser
les objectifs fixés. Ce système est appelé Système de Pilotage (SP).
Le SP procède à la régulation et au contrôle du système opérant en décidant du comportement
de celui-ci.

Avec l’augmentation en quantité et en complexité des informations échangées entre ces


deux systèmes, on a besoin d’avoir un autre système qui stocke et traite de façon plus
efficace ces informations.
Ce système est appelé système d’information (SI).

5.2. Modèle d’organisation selon la théorie des systèmes :

32
5.3. Notion de Système d’Information (SI)
Le système d’information est composé d’éléments divers (employés, ordinateurs, règles et méthodes,
etc...), chargés de stocker et de traiter les informations relatives au système opérant (SO) afin de
les mettre à la disposition du système de pilotage (SP).
Le SI possède deux aspects :
• Aspect statique (ou aspect données) :
- base d’information,
- modèle (ou structure) de données.
• Aspect dynamique (ou aspect traitement) :
- circulation de l’information entre les différents acteurs,
- évolution chronologique et causale des opérations provoquées par des évènements.

Dans un SI, on retrouve


- des décisions (homme)
-

Un SAI est un sous-système d’un SI dans lequel toutes les transformations significatives d’information
sont effectuées par des ordinateurs.

Un SAI permet une conservation et un traitement automatique des informations.

5.4. Système Automatisé d’Information (SAI)


Un SAI doit être :
- intégré : une même information n’est saisie qu’une fois en un point du système et est
récupérée dans tous les fichiers concernés.
- durable et adaptable : les logiciels de traitement des données (programmes) sont indépendant
des données.

33
CHAPITRE 6. LA MODELISATION D’UN SYSTEME INFORMATIQUE (MERISE)

6.1. Introduction
La conception d'un système d'information n'est pas évidente car il faut réfléchir à l'ensemble
de l'organisation que l'on doit mettre en place.
La phase de conception nécessite des méthodes permettant de mettre en place un modèle
sur lequel on va s'appuyer. La modélisation consiste à créer une représentation virtuelle d'une
réalité de telle façon à faire ressortir les points auxquels on s'intéresse.

Ce type de méthode est appelée analyse. Il existe plusieurs méthodes d'analyse, une des
méthodes les plus utilisées est la méthode MERISE (Méthode d’Etude et Réalisation
Informatiques pour les Systèmes d’Entreprise).

MERISE est une méthode de conception, de développement et de réalisation de projets


informatiques. Le but de cette méthode est d'arriver à concevoir un système d'information. La
méthode MERISE est basée sur la séparation des données et des traitements à effectuer en
plusieurs modèles conceptuels et physiques.
La séparation des données et des traitements assure une longévité au modèle. En effet,
l'agencement des données n'a pas à être souvent remanié, tandis que les traitements le sont
plus fréquemment.
MERISE définit trois niveaux de description du système d'information :
- le niveau conceptuel,
- le niveau organisationnel,
- le niveau physique.

La représentation distincte des données et des traitements selon les 3 niveaux évoqués,
conduit à l'élaboration de six modèles, mais ce document ne s'intéresse qu'à la modélisation
des données au niveau conceptuel.
Le niveau conceptuel décrit les choix de gestion adoptés par l'entreprise. Schématiquement,
ce niveau de description répond à la question « quoi ? », c'est-à-dire « que veut-on faire qui
reste vrai quelles que soient les solutions d'organisation et les solutions techniques à mettre
en œuvre ? ».
Nous synthétisons les différentes étapes nécessaires à la réalisation du modèle conceptuel
des données (MCD).
Ensuite nous abordons les aspects liés à la normalisation qui permet la conception de bases
de données cohérentes.

6.2. Cycle d'abstraction de conception des systèmes d'information


La conception du système d'information se fait par étapes, afin d'aboutir à un système
d'information fonctionnel reflétant une réalité physique. Il s'agit donc de valider une à une
chacune des étapes en prenant en compte les résultats de la phase précédente. D'autre part,
les données étant séparées des traitements, il faut vérifier la concordance entre données et
traitements afin de vérifier que toutes les données nécessaires aux traitements sont
présentes et qu'il n'y a pas de données superflues.
Cette succession d'étapes est appelée cycle d'abstraction pour la conception des systèmes
d'information :

34
6.3.Éléments constitutifs du modèle entités-associations

La représentation du modèle entités-associations s’appuie sur trois concepts de base :


- L’objet ou entité,
- L’association,
- la propriété.
L’objet est une entité ayant une existence propre. L’association est un lien ou relation entre objets sans
existence propre. La propriété est la plus petite donnée d’information décrivant un objet ou une
association.
6.3.1 Entité

Représentation graphique d’un exemple de type-entité


Une entité est un objet, une chose concrète ou abstraite qui peut être reconnue distinctement et qui est
caractérisée par son unicité.
Exemples d’entité : Kalala, Simon, le livre que je tiens entre les mains, la Mercedes qui se trouve dans
mon garage, mon compte à la banque etc.

6.3.2 Attribut ou propriété, valeur

Représentation graphique d’un exemple de type-entité comportant trois attributs

35
Un attribut (ou une propriété) est une caractéristique associée à un type-entité ou à un type-
association.
Exemples d’attribut : le nom d’une personne, le titre d’un livre, la puissance d’une voiture.

Au niveau du type-entité ou du type-association, chaque attribut possède un domaine qui définit


l’ensemble des valeurs possibles qui peuvent être choisies pour lui (entier, chaîne de caractères,
booléen).
Au niveau de l’entité, chaque attribut possède une valeur compatible avec son domaine.
Règles :
1. Un attribut ne peut en aucun cas être partagé par plusieurs type-entités ou type associations.
2. Un attribut est une donnée élémentaire, ce qui exclut des données calculées ou dérivées.
3. Un type-entité et ses attributs doivent être cohérents entre eux (i.e. ne traiter que d’un seul sujet).
Par exemple,
Si le modèle doit comporter des informations relatives à des articles et à leur fournisseur, ces
informations ne doivent pas coexister au sein d’un même type-entité. Il est préférable de mettre les
informations relatives aux articles dans un type-entité Article et les informations relatives aux fournisseurs
dans un type-entité Fournisseur. Ces deux type-entités seront probablement ensuite reliés par un type-
association.

6.3.3 Identifiant ou clé

Représentation graphique d’un exemple de type-entité comportant quatre


attributs dont un est un identifiant : deux personnes peuvent avoir le même nom,
le même prénom et le même âge, mais pas le même numéro de sécurité
sociale.

Un identifiant (ou clé) d’un type-entité ou d’un type-association est constitué par un ou plusieurs de ses
attributs qui doivent avoir une valeur unique pour chaque entité ou association de ce type.

Il est donc impossible que les attributs constituant l’identifiant d’un type-entité (respectivement
type-association) prennent la même valeur pour deux entités (respectivement deux associations)
distinctes.
Exemples d’identifiant : le numéro de sécurité sociale pour une personne, le numéro d’immatriculation
pour une voiture, le N° de téléphone pour individu d’une société connue.

Chaque type-entité possède au moins un identifiant, éventuellement formé de plusieurs attributs.


Ainsi, chaque type-entité possède au moins un attribut qui, s’il est seul, est donc forcément l’identifiant.
Dans la représentation graphique, les attributs qui constituent l’identifiant sont soulignés et placés en tête
(cf. figure).

36
6.3.4 Association ou relation

Représentation graphique d’un


exemple de type-association liant
deux type-entités.

Une association (ou une relation) est un lien entre plusieurs entités.
Exemples d’association :
L’emprunt par l’étudiante Gabrielle du 3ème exemplaire du livre «Mon SI ». Les associations ne sont
généralement pas représentées graphiquement.

Un type-association (ou un type-relation) désigne un ensemble de relations qui possèdent les mêmes
caractéristiques. Le type-association décrit un lien entre plusieurs type-entités. Les associations de ce
type-association lient des entités de ces type/entités.
Comme les type-entités, les type-associations sont définis à l’aide d’attributs qui prennent leur valeur
dans les associations.
Un attribut peut être placé dans un type-association uniquement lorsqu’il dépend de toutes les entités
liées par le type-association.
Un type-association peut ne pas posséder d’attribut explicite et cela est relativement fréquent, mais on
verra qu’il possède au moins des attributs implicites.
Exemples de type-association :
L’emprunt d’un livre à la bibliothèque. Une association est souvent nommée occurrence ou instance de
son type-association.
La figure montre la représentation graphique d’un exemple de type-association.
Par abus de langage, on utilise souvent le mot association en lieu et place du mot type/association, il faut
cependant prendre garde à ne pas confondre les deux concepts.

Les type-entités intervenant dans un type-association sont appelés les participants de ce type-
association.
L’ensemble des participants d’un type-association est appelé la collection de ce type-association.
Cette collection comporte au moins un type-entité, mais elle peut en contenir plus, on parle alors de type-
association n-aire (quand n=2 on parle de type-association binaire, quand n=3 de type/association
ternaire, etc.).

6.3.5 Cardinalité

37
Représentation graphique des
cardinalités d’un type-association.

Dans cet exemple, on suppose qu’un livre ne peut posséder qu’un auteur.

La cardinalité d’une patte reliant un type-association et un type/entité précise le nombre de fois minimal et
maximal d’interventions d’une entité dans une association. La cardinalité minimale doit être inférieure ou
égale à la cardinalité maximale.
Exemple de cardinalité :
Une personne peut être l’auteur de 0 à n livre, mais un livre ne peut être écrit que par une personne.
L’expression de la cardinalité est obligatoire pour chaque patte d’un type-association.
Une cardinalité minimal est toujours 0 ou 1 et une cardinalité maximale est toujours 1 ou n.

Ainsi, si une cardinalité maximale est connue et vaut 2, 3 ou plus, alors nous considérons qu’elle est
indéterminée et vaut n. En effet, si nous connaissons n au moment de la conception, il se peut que cette
valeur évolue au cours du temps. Il vaut donc mieux considérer n comme inconnue dès le départ.
De la même manière, on ne modélise pas des cardinalités minimales qui valent plus de 1 car ces valeurs
sont également susceptibles d’évoluer.
Enfin, une cardinalité maximale de 0 n’a pas de sens car elle rendrait le type-association inutile.
Les seuls cardinalités admises sont donc :
- 0,1 : Une occurrence du type-entité peut exister tout en étant impliquée dans aucune association
et peut être impliquée dans au maximum une association.
- 0,n : C’est la cardinalité la plus ouverte ; une occurrence du type-entité peut exister tout en étant
impliquée dans aucune association et peut être impliquée, sans limitation, dans plusieurs
associations.
- 1,1 : Une occurrence du type-entité ne peut exister que si elle est impliquée dans exactement (au
moins et au plus) une association.
- 1,n : Une occurrence du type-entité ne peut exister que si elle est impliquée dans au moins une
association.
Une cardinalité minimale de 1 doit se justifier par le fait que les entités du type-entité en question ont
besoin de l’association pour exister. Dans tous les autres cas, la cardinalité minimale vaut 0.
Ceci dit, la discussion autour d’une cardinalité minimale de 0 ou de 1 n’est intéressante que lorsque la
cardinalité maximale est 1.
En effet, lors de la traduction vers un schéma relationnel non prévu dans le cadre de ce cours, lorsque la
cardinalité maximale est n, nous ne ferons pas la différence entre une cardinalité minimale de 0 ou de 1.

Remarques

La seule difficulté pour établir correctement les cardinalités est de se poser la question dans le bon sens.
Pour augmenter le risque d’erreurs, il faut noter que, pour les habitués du modèle UML, les cardinalités
d’un type-association sont « à l’envers » (par référence à UML) pour les type-associations binaires et « à
l’endroit » pour les n-aires avec n>2.

38
La notion de cardinalité n’est pas définie de la même manière dans le modèle Américain et dans le
modèle Européen (Merise). Dans le premier il n’existe que la notion de cardinalité maximale.

6.4. Règles de bonne formation d’un modèle entités-associations

La bonne formation d’un modèle entités-associations permet d’éviter une grande partie des sources
d’incohérences et de redondance. Pour être bien formé, un modèle entités-associations doit respecter
certaines règles et les type-entités et type-associations doivent être normalisées.
Un bon principe de conception peut être formulé ainsi : « une seule place pour chaque fait ».
Bien que l’objectif des principes exposés dans cette section soit d’aider le concepteur à obtenir un
diagramme entités-associations bien formé, ces principes ne doivent pas être interprétés comme des lois.
Qu’il s’agisse des règles de bonne formation ou des règles de normalisation, il peut exister, très
occasionnellement, de bonnes raisons pour ne pas les appliquer.
6.4.1 Règles portant sur les noms
Dans un modèle entités-associations, le nom d’un type-entité, d’un type-association ou d’un attribut doit
être unique.

La présence des deux type-entités Enseignant et Etudiant est symptomatique d’une modélisation
inachevée. A terme, ces deux type-entités doivent être fusionnés en un unique type/entité Personne.

Ici, les attributs Adresse de facturation sont redondants. Cette situation doit être évitée à tout prix car elle
entraîne un gaspillage d’espace mémoire mais aussi et surtout un grand risque d’incohérence. En
effet, que faire si, dans le cadre d’une occurrence du type-association Correspondre, les valeurs des deux
attributs Adresse de facturation diffèrent ?

39
Dans cette situation, les deux attributs Adresse doivent simplement être renommés en Adresse client et
Adresse fournisseur. Il en va de même pour les deux attributs Nom.
Lorsque des attributs portent le même nom, c’est parfois le signe d’une modélisation inachevée figure ou
d’une redondance. Sinon, il faut simplement ajouter au nom de l’attribut le nom du type-entité ou du type-
association dans lequel il se trouve. Il faut toutefois remarquer que le dernier cas décrit n’est pas
rédhibitoire et que le système informatique s’accommode très bien de relations comportant des attributs
de même nom.
L’écriture des requêtes sera tout de même plus lisible si les attributs ont tous des noms différents.

6.4.2 Normalisation des type-entités et type-associations


Introduction
Les formes normales sont différentes de qualité afin d’éviter la redondance, source d’anomalies.
La normalisation peut être aussi bien effectuée sur un modèle entités-associations, où elle s’applique sur
les type-entités et type-associations, que sur un modèle relationnel.

Il existe 5 formes normales principales et deux extensions. Plus le niveau de normalisation est élevé,
plus le modèle est exempte de redondances. Une modélisation rigoureuse permet généralement d’aboutir
directement à des type-entités et type-associations en forme normale de Boyce-Codd.

Première forme normale (1FN)

Exemple de
normalisation
en première
forme normale.

Dans le cadre de ce cours nous ne présenterons que les 3 formes normales utiles à l’implémentation d’un
système informatique.

Un type-entité ou un type-association est en première forme normale si tous ses attributs sont
élémentaires, c’est-à-dire non décomposables.
Un attribut composite doit être décomposé en attributs élémentaires ou faire l’objet d’une entité
supplémentaire.
L’élémentarité d’un attribut est toutefois fonction des choix de gestion.
Par exemple, la propriété Adresse peut être considérée comme élémentaire si la gestion de ces adresses
est globale.
Par contre, s’il faut pouvoir considérer les codes postaux, les noms de rues, il convient d’éclater la
propriété Adresse en Adresse (au sens numéro d’appartement, numéro et nom de rue, Code postal et
Ville). En cas de doute, il est préférable d’éclater une propriété que les regrouper.

Deuxième forme normale (2FN)

Exemple de normalisation en deuxième


forme normale.

40
On suppose qu’un même fournisseur peut fournir plusieurs produits et qu’un même produit peut être
fourni par différents fournisseurs.
Un type-entité ou un type-association est en deuxième forme normale si, et seulement si, il est en
première forme normale et si tout attribut n’appartenant pas à la clé dépend de la totalité de cette clé.
Autrement dit, les attributs doivent dépendre de l’ensemble des attributs participant à la clé.
Ainsi, si la clé est réduite à un seul attribut, ou si elle contient tous les attributs, le type-entité ou le type-
association est, par définition, forcément en deuxième forme normale.
La figure montre un type-entité Article décrivant des produits provenant de différents fournisseurs. On
suppose qu’un même fournisseur peut fournir plusieurs produits et qu’un même produit peut être fourni
par différents fournisseurs. Dans ce cas, les attributs Produit ou Fournisseur ne peuvent constituer un
identifiant du type-entité Article. Par contre, le couple Produit/Fournisseur constitue bien un identifiant du
type-entité Article. Cependant, l’attribut Adresse fournisseur ne dépend maintenant que d’une partie de la
clé (Fournisseur). Opter pour une nouvelle clé arbitraire réduite à un seul attribut N° article permet
d’obtenir un type-entité Article en deuxième forme normale. On va voir dans ce qui suit que cette solution
n’a fait que déplacer le problème.

Troisième forme normale (3FN)

Exemple de
normalisation
en troisième
forme
normale.

Dans cet exemple, l’attribut Adresse fournisseur dépend de l’attribut Fournisseur.

Un type-entité ou un type-association est en troisième forme normale si, et seulement si, il est en
deuxième forme normale et si tous ses attributs dépendent directement de sa clé et pas D’autres
attributs.
Cette normalisation peut amener à des imbriquer des type-entités cachées comme sur la Figure ci-haut.
Un type-entité ou un type-association en deuxième forme normale avec au plus un attribut qui
n’appartient pas à la clé est, par définition, forcément en troisième forme normale.

6.5. Élaboration d’un modèle entités-associations

6.5.1 Étapes de conceptions d’un modèle entités-associations


Pour concevoir un modèle entités-associations, vous devrez certainement passer par une succession
d’étapes. Nous les décrivons ci-dessous dans l’ordre chronologique. Sachez cependant que la conception
d’un modèle entités-associations est un travail non linéaire. Vous devrez régulièrement revenir à une
étape précédente et vous n’avez pas besoin d’en avoir terminé avec une étape pour commencer l’étape
suivante.
Recueil des besoins
C’est une étape primordiale. Inventoriez l’ensemble des données à partir des documents de l’entreprise,
d’un éventuel cahier des charges et plus généralement de tous les supports de l’information. N’hésitez
pas à poser des questions.
Tri de l’information
41
Faites le tri dans les données recueillies. Il faut faire attention, à ce niveau, aux problèmes de
synonymie/polysémie. En effet, les attributs ne doivent pas être redondants. Par exemple, si dans le
langage de l’entreprise on peut parler indifféremment de référence d’article ou de n° de produit pour
désigner la même chose, cette caractéristique ne devra se concrétiser que par un unique attribut dans le
modèle. Inversement, on peut parler d’adresse pour désigner l’adresse du fournisseur et l’adresse du
client, le contexte permettant de lever l’ambiguïté. Par contre, dans le modèle, il faudra veiller à bien
distinguer ces deux caractéristiques par deux attributs distincts.
Un autre exemple est celui d’une entreprise de production fabricant des produits à destination d’une autre
société du même groupe. Il se peut que dans ce cas, le prix de production (i.e. le coût de revient
industriel) soit le même que prix de vente (aucune marge n’est réalisée). Même dans ce cas où les deux
caractéristiques sont identiques pour chaque entité (prix de production égale prix de vente), il faut
impérativement les scinder en deux attributs au niveau du type-entité

Produit. Sinon, cette égalité factuelle deviendrait une contrainte imposée par le modèle, obligeant alors
l’entreprise de production à revoir son système le jour où elle décidera de réaliser une marge (prix de
production inférieure au prix de vente).
Identification des type-entités
Le repérage d’attributs pouvant servir d’identifiant permet souvent de repérer un type-entité. Les attributs
de ce type-entité sont alors les attributs qui dépendent des attributs pouvant servir d’identifiant.
Attention, un même concept du monde réel peut être représenté dans certains cas comme un attribut et
dans D’autres cas comme un type-entité, selon qu’il a ou non une existence propre. Par exemple, la
marque d’une automobile peut être vue comme un attribut du type-entité Véhicule de la base de données
d’une préfecture mais aussi comme un type-entité Constructeur automobile dans la base de données du
Ministère de l’Industrie.
Lorsqu’on ne parvient pas à trouver d’identifiant pour un type-entité, il faut se demander s’il ne s’agit pas
en fait d’un type-association. Si ce n’est pas le cas, un identifiant arbitraire numérique entier peut faire
l’affaire.
Identification des type-associations
Identifiez les type-associations reliant les type-entités du modèle. Le cas échéant, leur affecter les
attributs correspondant.
Il est parfois difficile de faire un choix entre un type-entité et un type-association. Par exemple, un
mariage peut être considéré comme un type-association entre deux personnes ou comme un type-entité
pour lequel on veut conserver un numéro, une date, un lieu, et que l’on souhaite manipuler en tant que
tel.
Étudiez également les cardinalités des type-associations retenus. Lorsque toutes les pattes d’un type-
association portent la cardinalité 1,1, il faut se demander si ce type-association et les type/entités liés ne
décrivent pas en fait un seul type-entité.
Vérification du modèle
Vérifiez que le modèle respecte bien les règles que nous avons énoncées et les définitions concernant la
normalisation des type-entités et des type-associations. Le cas échéant, opérez les modifications
nécessaires pour que le modèle soit bien formé.

Remarque :
Pour faciliter la lecture du schéma, il est assez courant de ne pas y faire figurer les attributs ou de ne
conserver que ceux qui font partie des identifiants. Les attributs cachés doivent alors absolument être
spécifiés dans un document à part.

42
6.5.2 Conseils divers
Concernant le choix des noms
Pour les type-entités, choisissez un nom commun décrivant le type-entité (ex : Étudiant, Enseignant,
Matière). Certain préfèrent mettre le nom au pluriel (ex : Étudiants, Enseignants, Matières). Restez
cependant cohérents, soit tous les noms de type-entité sont au pluriel, soit ils sont tous au singulier.
Pour les type-association, choisissez un verbe à l’infinitif, éventuellement à la forme passive ou
accompagné d’un adverbe (ex : Enseigner, Avoir lieu dans).
Pour les attributs, utilisez un nom commun au singulier éventuellement accompagné du nom du type-
entité ou du type-association dans lequel il se trouve (ex : nom de client, numéro d’article).
Concernant le choix des identifiants des type-entités
Évitez les identifiants composés de plusieurs attributs (comme, par exemple, un identifiant formé par les
attributs nom et prénom d’un type-association Personne) car :
- ils dégradent les performances du système informatique,
- mais surtout l’unicité supposée par une telle démarche finit généralement, tôt ou tard, par être
démentie !
Évitez les identifiants susceptibles de changer au cours du temps (comme la plaque d’immatriculation
d’un véhicule). Évitez les identifiants du type chaîne de caractère. En fait, il est souvent préférable de
choisir un identifiant arbitraire de type entier pour les type-entités. Cet identifiant deviendra une clé
primaire dans le schéma relationnel et le SGBD l’incrémentera automatiquement lors de la création de
nouvelles instances. L’inconvénient de cette pratique est qu’il devient possible de se retrouver avec deux
instances du type-entités représentant le même objet mais avec deux numéros différents. Malgré cette
inconvénient, cette politique de l’identifiant reste largement avantageuse dans la pratique et permet, en
outre, de s’affranchir (en la satisfaisant automatiquement) de la deuxième forme normale.
Bien distinguer les concepts de données et de traitements
La modélisation conceptuelle des données exclut la représentation des traitements futurs sur ces
données. Toutefois, elle nécessite la connaissance de ces traitements pour prévoir les données
élémentaires indispensables à ceux-ci.
En conséquence, il existe une confusion fréquente entre les concepts de données et de traitements. Par
exemple, la facturation est un traitement qui nécessite de connaître toutes les caractéristiques d’une
commande. Par contre, la facturation ne se traduit ni par un type-entité, ni par un type-association dans le
schéma entités-associations.

43
CHAPITRE 7. LA PROGRAMMATION (LANGAGE C)
7.1. Introduction

Le langage C est né au début des années 70. Il a été créé pour le système UNIX. Mais sa simplicité
d'implémentation et sa puissance ont permis son développement sur la plupart des plates-formes
informatiques.

Voici quelques caractéristiques du langage :

 créé pour UNIX;


 normalisé (ANSI) ;
 langage procédural ;
 à la fois très puissant et très permissif ;
 proche de la machine et pourtant structuré ;
 est un sous-ensemble du langage C++ ;
 semble très compliqué et surtout illisible !

Sa normalisation ANSI rend la plupart de programmes correctement écrits portables d'une architecture
machine à une autre architecture sans modification quel que soit le compilateur utilisé.

Le C a été étendu pour devenir le C++1.1. Ce nouveau langage améliore encore de beaucoup la
puissance du langage C.

Java1.2 est un autre langage dérivé du C (et surtout du C++) qui va devenir très rapidement un standard
entre autres pour tous les développements concernant le WEB.

7.2.Commentaires, noms et constantes

Les commentaires

En C, il est possible d'insérer un commentaire partout où l'insertion d'un espace est possible.

Un commentaire commence par une barre oblique suivie d'une étoile (/*), et se termine par une étoile
suivie d'une barre oblique (*/). Tout ce qui est compris entre le deux est totalement ignoré par le
compilateur.

/* Ceci est un commentaire */


/* En voici un autre qui s'étend sur deux...
... lignes */

Les noms d'objets

Le premier caractère d'un nom ne peut pas être un chiffre. Les caractères suivants sont choisis parmi les
lettres (A...Z, a...z), les chiffres (0...9) ou l'underscore (_).

La norme ANSI n'impose aucune limite sur la longueur d'un nom. Si cette limite existe, les caractères la
dépassant ne sont pas pris en compte pour distinguer deux noms.

44
Attention : le C est sensible à la casse ! C'est à dire qu'il fait la distinction entre les majuscules et les
minuscules.

Les noms réservés en C sont les mots-clés du langage. Ces noms ne peuvent être utilisés comme noms
de variables, de fonctions ou de types. Il est possible que certains compilateurs y ajoutent quelques mots
qui leur sont propres.

Les constantes

On distingue quatre types de constantes : entières, flottantes, caractères et chaînes.

Les constantes entières

Les constantes entières sont représentées par une suite de chiffres (en décimal par défaut) précédée
éventuellement par un signe (+ ou - ). Si cette suite commence par 0, la constante s'exprime en octal
(base 8). Si cette suite commence par 0x ou 0X, la constante s'exprime en héxadécimal (base 16). Par
défaut, une constante entière est de type int. Si la constante se termine par l ou L, elle est de type long.
Si, elle se termine par u ou U, elle est de type unsigned.

Les constantes entières

Constante Valeur décimale Type

1924 1924 int

0110 96 ( = 82 + 81) int

0xFF 255 ( = 15 . 161 + 15) int

-123L -123 long

0200U 128 unsigned int

0xFFFFUL 65535 unsigned long

Les constantes réelles

Une constante réelle (on dit aussi flottante) est constituée d'une partie entière, d'un point décimal, d'une
partie décimale, de la lettre e ou E et enfin d'un exposant entier éventuellement négatif. Certains de ces
éléments peuvent être omis mais pour être considérée comme réelle, une constante doit contenir un point
décimal ou un exposant.

Par défaut, une constante réelle est de type double. Si la constante est terminée par la lettre f, elle est
alors de type float.

45
Les constantes réelles

Constante Valeur décimale Type

1. 1 double

7e3 7 . 103 = 7000 double

.1e3 0,1 . 103 = 100 double

-123.12e-2 -123,12 . 10-2 = -1,2312 double

-12.5f -12,5 float

Les constantes caractères

Une constante caractère est de type char. Elle est constituée d'un caractère écrit entre apostrophes (').
La valeur de cette constante est la valeur de ce caractère dans le codage de la machine utilisée (en
général le codage ASCII). Certains caractères ne peuvent pas être représentés par un seul caractère, on
utilise alors le caractère d'échappement ( \) selon la table suivante.

Tableau 2.4: Les constantes caractères

Effet ASCII Codage C

fin de ligne NL (LF) \n

Tabulation HT \t

retour arrière BS \b

retour chariot CR \r

saut de page FF \f

signal sonore BEL \a

barre oblique inverse \ \\

point d'interrogation ? \?

Apostrophe ' \'

46
Guillemet " \"

Pour les caractères impossibles à écrire normalement et non prévus dans la table précédente, on peut
donner directement la valeur du caractère dans le codage de la machine. Il suffit de faire suivre le
caractère d'échappement (\) d'un nombre à trois chiffres (en octal) ou d'un x suivi de deux chiffres (en
héxadécimal). Par exemple, la constante '\012' spécifie le caractère de code ASCII 10 (10 en décimal est
égal à 12 en octal). Ce même caractère pourrait être exprimé par la constante '\x0A' (exprimé en
héxadécimal cette fois). Ce codage sert surtout pour coder le caractère NUL qui permet de terminer les
chaînes de caractères (\0).

Les constantes chaînes

Les constantes chaînes de caractères s'écrivent entre des guillemets ("). Elles sont constituées d'une
suite de caractères. Comme pour les constantes caractères, on peut utiliser le caractère d'échappement
pour saisir des caractères spéciaux. Le compilateur ajoute tout seul le caractère NUL (\0) en fin de
chaîne. Une chaîne est de type pointeur sur caractère (char *) et pointe sur un tableau de caractères
contenant la suite des caractères complétée par le caractère NUL de fin de chaîne (\0).

"Voici une chaîne terminée par une fin de ligne\n"

7.3.Les variables

Définition d'une variable

Une variable permet de stocker une valeur. Le type de valeurs stockées dépend du type de la variable.
L'opérateur = permet d'affecter une valeur à une variable. Toutes les variables doivent être définies (ou
au moins déclarées) avant d'être utilisées.

On peut initialiser une variable lors de sa définition en lui affectant directement une valeur. Pour un même
type, on peut réunir plusieurs définitions de variables sur une même instruction.

Dans l'exemple suivant, on définit tout d'abord deux variables VarPrem et Houla de type int. Houla est
initialisée lors de sa déclaration. On définit une troisième variable de type double et enfin on lui affecte le
résultat de l'addition de Houla et de 25.

int VarPrem, Houla = 18;


double TroisiemeVariable;

TroisiemeVariable = Houla + 25;

Les types de base


47
Nous décrivons ici les types de base les plus usités. Nous ne rentrerons pas dans le détail de l'utilisation
des mots-clés comme static, auto, const ou register.

Caractère

Les caractères peuvent être de deux types: char ou unsigned char.

Ce type de variables occupe en général un octet en mémoire et stocke un caractère. La valeur stockée
est le code du caractère dans le codage de la machine utilisée (en général le code ASCII).

Ces valeurs vont de -128 à 127 dans le cas des char et de 0 à 255 dans le cas des unsigned char.

/* une première variable de type char, suivie d'une seconde


initialisée avec le caractère de code ASCII 255, enfin
une dernière initialisée par le caractère de fin de ligne */
char PremierChar;
unsigned char SecondChar = '\xFF';
char DernierChar = '\n';

Entier

Les types de base permettant de stocker des entiers sont short, int et long. Chacun de ces types peut
être spécifié comme étant sans signe en le précédant du mot-clé unsigned : unsigned int, unsigned
long... . .

short a = 12, b = 19;


unsigned long d = 3123456789ul;

Réel

Les deux types permettant de manipuler des valeurs «réelles» (au sens mathématique)
sont float et double. La précision (en nombre de décimales stockées) d'un double est à priori le double de
celle d'unfloat. Le tableau ci-dessous donne les caractéristiques de ces deux types sur une station SUN.

Caractéristiques des types réels

Type Taille Minimum > 0 Maximum

float 32 bits

double 64 bits

7.4. Les opérateurs de calcul

48
Le langage C intègre de nombreux opérateurs. Certains sont des opérateurs unaires : ils agissent sur
un seul argument. D'autres sont des opérateurs binaires : ils combinent deux arguments. Il existe même
un opérateur ternaire agissant sur trois arguments.

À tout programmeur (quel que soit son niveau), il est fortement conseillé d'utiliser les parenthèses pour
gérer explicitement l'ordre d'utilisation des opérateurs plutôt que de se fier à sa connaissance de ce
tableau de priorité. Cela évite de se tromper et rend surtout le programme plus lisible.

Les opérateurs arithmétiques

Opérateurs arithmétiques

Opérateurs Signification

+ (binaire) addition

- (binaire) soustraction

* (binaire) multiplication

/ (binaire) division

% (binaire) modulo

Ces opérateurs font le calcul demandé et le type de la valeur produite dépend de celui (ou ceux) de
l'opérande (ou des opérandes). Par exemple, la résultat d'une division sera de type int si ses deux
opérandes sont eux-mêmes de type int. Par contre, si au moins un des deux opérandes est de
type double alors le résultat sera de type double. La division entre deux entiers est donc une division
entière. Dans l'exemple suivant, a vaut 12 et b vaut 14 :

int x = 14, a;
double y = 14, b;
a = (x / 4) * 4;
b = (y / 4) * 4;

Les opérateurs incrémentaux

Opérateurs incrémentaux

Opérateurs Signification

++ (unaire) incrémenter

-- (unaire) décrémenter

On peut appliquer à une variable des opérateurs d'incrémentation ou de décrémentation. C'est une
49
incrémentation (ou une décrémentation) d'une unité. Le contenu de la variable est modifié par ces
opérateurs.

Ces opérateurs peuvent être placés avant ou après le nom de la variable. Si ils sont placés avant, la
variable est incrémentée (ou décrémentée) avant l'utilisation de sa valeur. Si ils sont placés après, la
variable est incrémentée après l'utilisation de sa valeur.

Dans l'exemple suivant, x vaut 11 ainsi que n.

int x, n = 10;
x = ++n;

Dans l'exemple suivant, x vaut 10 et n vaut 11.

int x, n = 10;
x = n++;

Les opérateurs bit à bit

Opérateurs bit à bit

Opérateurs Signification

! (unaire) négation

& (binaire) et

| (binaire) ou

^ (binaire) ou exclusif

Les opérateurs bit à bit effectue une opération logique (et, ou, ou exclusif, négation) sur chacun des bits

Les opérateurs de décalage

Opérateurs de décalage

Opérateurs Signification

<< (binaire) décalage vers la gauche

>> (binaire) décalage vers la droite

Ces deux opérateurs décalent les bits composant une valeur vers la gauche ou vers la droite.
50
Le premier argument est la valeur à décaler tandis que le second argument est le nombre de décalage à
effectuer. Les bits qui sortent de la valeur sont perdus. Les nouveaux bits sont mis à zéro. Un décalage à
gauche d'un bit correspond à une multiplication par deux. Alors qu'un décalage à droite d'un bit
correspond à une division entière par deux. Dans l'exemple suivant, on décale la valeur de n de 2 bits
vers la droite :

n = n >> 2;

Les opérateurs de comparaison

< , <=, >, >=, ==, !=

Par convention, le résultat de ces opérateurs est 1 (vrai) ou 0 (faux) .

Par exemple, dans le programme suivant, x vaut 1.

int x = (3*4) < (4*5);

Les opérateurs logiques

Opérateurs logiques

Opérateurs Signification

&& (binaire) et logique

|| (binaire) ou logique

! (unaire) négation logique

Les opérations logiques considèrent un opérande comme faux si sa valeur est 0 et vrai dans tous les
autres cas.

Par convention, le résultat de ces opérateurs est 1 (vrai) ou 0 (faux) . Par exemple, dans le programme
suivant, x vaut 1 et y vaut 0 :

int n = 0, m = 10, x, y;

x = (n < 20) && m;


y = !((n > 20) || (m == 10));

Les opérateurs d'affectation

Nous avons déjà dit qu'on utilisait l'opérateur = pour affecter le résultat d'une expression à une variable. Il
est possible de préfixer l'opérateur = par la plupart des opérateurs binaires. On obtient ainsi un nouvel
51
opérateur d'affectation qui effectuera d'abord le calcul entre l'expression et la valeur actuelle de la
variable puis affectera le résultat à la variable.

Les deux lignes C suivantes sont donc équivalentes :

a *= b + 10;
a = a * (b + 10);

Le résultat d'une affectation est la nouvelle valeur de la variable et il peut être utilisé dans une autre
expression. Dans l'exemple suivant a vaut 10 et b vaut 20 :

b = 2 * (a = 10);

L’opérateur conditionnel

Il existe un seul opérateur ternaire en C. Cet opérateur permet d'écrire des expressions conditionnelles.
L'expression conditionnelle débute par un test suivi du caractère ? puis la valeur lorsque le test est vrai
puis le caractère : et enfin la valeur lorsque le test est faux.

Par exemple, dans l'exemple suivant, a vaut 3.14 et b vaut 5 :

y = 100;
a = (y < 200) ? 3.14 : 25;
b = (a > 3) ? ((y > 200) ? 10.1 : 5.0) : 123.0;

Conversions de type

Nous avons vu que, lors d'une division, les types des opérandes étaient importants pour déterminer le
type du résultat. Ceci est vrai pour toutes les opérations en C. Le C effectue des conversions de type
implicites lorsqu'elles sont nécessaires. On peut forcer la conversion d'un type vers un autre grâce à
l'opérateur de conversion explicite.

Conversions implicites

Voici les règles simples permettant de déterminer les conversion implicites utilisées en C. Ces règles sont
appliquées dans l'ordre cité :

Si l'un des opérandes est double, convertir l'autre en double.

Si l'un des opérandes est float, convertir l'autre en float.

Convertir les opérandes de type char et short en int.

Si l'un des opérandes est long, convertir l'autre en long.

Lorsque la valeur d'une expression est un argument d'une fonction, la valeur est automatiquement
convertie vers le type de l'argument.
52
Conversions explicites

Il est possible de spécifier une conversion explicitement (pour effectuer une division entière entre
deux double par exemple). Il suffit de précéder une expression par le nouveau type mis entre parenthèse.
Dans l'exemple suivant, c vaut 3 (la division est une division entière puisqu'on a converti explicitement les
deux opérandes en int. Le résultat est automatiquement converti en double puisque c est de typedouble) :

double a = 10, b = 3;
double c;

c = ((int) a) / ((int) b);

7.5. Les structures de contrôle

Après avoir précisé la notion d'instruction, nous décrivons les différentes structures de contrôle
disponibles en C. Ces structures permettent de contrôler l'ordre dans lequel seront effectuées les
instructions.

Utilisation du point-virgule et des accolades

Le caractère ; termine une instruction. N'importe quelle expression devient une instruction simple dès
qu'elle est suivie d'un point-virgule.

Les accolades permettent de regrouper une suite de plusieurs instructions (simples ou composées) en
une seule instruction composée (ou bloc).

Il est possible de déclarer ou de définir des variables au début de chaque bloc. Ces variables n'existeront
que dans ce bloc.

Voici trois exemples d'instructions simples valides qui sont réunies en une instruction composée (ou bloc):

{
a = 1;
x++;
f(x);
}

Les structures de boucles

Les structures while

Il y a deux utilisations possibles du while

La première utilisation évalue une condition puis exécute l'instruction (simple ou composée) qui suit si la
condition est vraie. Cette boucle continue tant que la condition reste vraie. Le premier exemple l'illustre
avec une instruction simple tandis que le second utilise une instruction composée.

53
while (condition)
instruction

while (condition) {
instruction 1
...
instruction n
}

La seconde utilisation exécute tout d'abord l'instruction (simple ou composée). Puis la condition est
évaluée et, tant qu'elle reste vraie, l'instruction est exécutée à nouveau. Les deux exemples suivants
l'illustrent avec une instruction simple et une instruction composée.

do
instruction
while (condition);

do {
instruction 1
...
instruction n
} while (condition);

Les structures for

Le mot-clé for permet lui aussi d'effectuer des boucles. Il pourrait ne pas exister puisqu'on peut le
simuler avec while . Ainsi :

for (expr1; expr2; expr3) { expr1;


instruction 1 while (expr2) {
... instruction 1
instruction n ...
} instruction n
expr3;
est équivalent à : }

La première expression expr1 est l'expression d'initialisation. La seconde expression expr2 est le test de
continuation. La troisième expression expr3 est appelée expression d'incrémentation.

Une utilisation classique d'une boucle for est le parcours d'un tableau :

54
int Tab[10], i;

for (i = 0; i < 10; i++) {


/* manipulation du ieme element */
Tab[i] = ...
...
}

Dans un for , chacune des trois expressions peut-être absente par contre il faut conserver les points-
virgules. Si une expression n'est pas présente tout se passe comme si elle n'existait pas (en particulier, la
seconde expression est considérée comme vraie si elle n'existe pas). On peut donc écrire une boucle
infinie de la manière suivante :

for (;;) {
instruction 1
...
instruction n
}

Les instructions de contrôles de boucles

Il existe deux instructions particulières pour contrôler l'exécution d'une boucle.

L'instruction break permet de quitter immédiatement l'exécution d'une boucle (par exemple une boucle
infinie).
L'instruction continue permet de passer immédiatement au test suivant (sauf dans le cas du for où
l'expression expr3 est tout de même évaluée)..

Les structures de choix

La structures if

Le mot-clé if permet d'effectuer une instruction (simple ou composée) de manière conditionnelle. Il peut
être suivi du mot-clé else pour spécifier l'instruction à effectuer lorsque la condition est fausse.

if (condition) {
/* si la condition est vraie */
instruction 1
...
instruction n
}

55
if (condition) {
/* si la condition est vraie */
instruction 1
...
instruction n
} else {
/* si la condition est fausse */
instruction 1
...
instruction n
}

Il est possible d'enchaîner plusieurs tests successifs grâce à else if :

if (condition1)
/* si condition1 est vraie */
instruction
else if (condition2)
/* si condition1 est fausse et condition2 est vraie */
instruction
else
/* si les deux conditions sont fausses */
instruction

La structure de choix multiples

Le mot-clé switch permet d'effectuer un choix selon les valeurs possibles d'une expression. On
sélectionne une valeur particulière en la faisant précéder du mot-clé case . Le mot-clé default permet de
spécifier le comportement par défaut (c'est à dire lorsqu'aucune des valeurs spécifiées n'est la bonne).
switch (expression) {
case Constante1 :
/* si expression est égale a Constante1 */
instruction 1
...
instruction n
break;
case Constante2 :
/* si expression est égale a Constante2 */
instruction 1
...
instruction n
break;
...
default :
/* cas par defaut */

56
instruction 1
...
instruction n
break;
}

Attention: n'oubliez pas le break entre chaque cas sinon l'exécution continue sur le cas suivant. Ceci
permet de spécifier plusieurs valeurs pour une même série d'instructions.

Dans l'exemple suivant, les valeurs 1, 2 et 3 déclenchent le même traitement. La valeur 4 est traitée
séparément :

switch (a) {
case 1 :
case 2 :
case 3 :
b = 100;
break;
case 4 :
b = 200;
break;
default :
b = 0;
break;
}

7.6. Les fonctions

Les fonctions sont les éléments de base d'un programme C. Un programme C bien conçu contient en
général de nombreuses petites fonctions plutôt que peu de grosses fonctions. Chaque fonction contient
une série d'instructions qui seront exécutées à chaque fois que cette fonction sera appelée.

Définition d'une fonction

Pour définir une fonction, il faut donner le type de la valeur qu'elle produit, son nom, la liste de ses
paramètres et enfin le corps de la fonction :

type nom (type1 param1, ..., typeN paramN)


{
instruction 1
...
instruction N
}

57
Voici, par exemple, la définition d'une fonction qui calcule la moyenne de deux nombres :

double moyenne (double a, double b)


{
return (a + b) / 2;
}

Retour du résultat

Le mot-clé return est suivi d'une expression. La valeur de cette expression sera le résultat de la
fonction. La dernière instruction d'une fonction doit être une instruction return permettant de renvoyer le
résultat.

Il est possible d'utiliser return n'importe où et plusieurs fois dans une fonction. La fonction s'arrêtera
immédiatement et le résultat sera renvoyé. Néanmoins, dans le cadre d'une programmation structurée,
l'instruction return ne devrait apparaître que comme dernière instruction sauf si cela nuit à la
compréhension de la fonction.

Appel d'une fonction

Pour appeler une fonction, il suffit de mettre son nom suivi de la liste des valeurs à donner aux
paramètres entre parenthèses. Un appel de fonction est considérée comme une expression du type du
résultat de la fonction et la valeur de cette expression est le résultat de l'exécution de la fonction. Dans
l'exemple suivant, c contiendra la valeur moyenne de 30 et 75 :

c = moyenne(30, 75);

Le type du résultat de la fonction

Le type de la valeur retournée par une fonction peut être n'importe quel type (un type de base ou même
une structure). La fonction suivante calcule la somme de deux nombres complexes :

complexe AddComplexe(complexe op1, complexe op2) {


complexe somme;
somme.reel = op1.reel + op2.reel;
somme.imag = op1.imag + op2.imag;
return somme;
}

Le type void permet de spécifier que la fonction ne renvoie aucun résultat. Dans ce cas, pour terminer
l'exécution de la fonction, on peut utiliser le mot-clé return seul ou plus simplement atteindre la fin des
instructions.

Le type void mit seul à la place de la liste des arguments permet aussi de spécifier que la fonction ne
prend aucun argument. Voici une fonction qui ne fait qu'afficher un message sur la sortie standard :

58
void AffMessage(void) {
printf("Voici un message\n");
}

Corps de la fonction

On appelle corps de la fonction le bloc d'instructions qui commence après l'accolade ouvrante qui suit la
liste des paramètres et qui se termine par l'accolade fermante correspondante.

Comme tout autre bloc, le corps de la fonction peut débuter par une série de définitions de variables. Ces
variables sont appelées variables locales. Chaque appel de la fonction crée de nouvelles instances des
variables locales.

Paramètres d'une fonction

Il n'y a théoriquement pas de limite au nombre de paramètres (ou arguments) que peut prendre une
fonction. Chaque paramètre de la liste des paramètres doit être défini par son type suivi de son nom.
Comme pour le type du résultat, le type d'un paramètre peut être soit un type de base soit une structure
ou une union.

Passage par valeur

Les paramètres peuvent être considérés comme des variables locales à la fonction. Lors de l'appel de la
fonction, la valeur de chaque paramètre est recopiée dans un nouvel espace mémoire réservé pour ce
paramètre.

Une fonction peut donc localement modifier le contenu de ses paramètres. Les valeurs utilisées lors de
l'appel ne seront absolument pas modifiées. Dans l'exemple suivant, la variable a à la fin de la fonction f
reste égale à 1 puisque c'est la valeur de a et non pas la variable a qui est envoyée à la fonction g :

void g (int param) {


...
param = 150;
...
}
void f (void) {
int a = 1;
...
g(a);
...
}

59
La fonction main

La fonction dont le nom est main est une fonction particulière dans un programme C. C'est elle qui est
exécutée en premier lorsqu'on lance un programme. Le programme s'arrête lorsque l'exécution de cette
fonction se termine.

Elle peut être définie de différentes manières. Un programme simple définit main de la manière suivante :

int main(void) {
...
}

Le type de main est int afin de permettre de retourner au système d'exploitation un code d'erreur (0 si tout
se passe bien).

Elle peut aussi recevoir une liste d'arguments provenant du système d'exploitation. Elle est alors déclarée
de la manière suivante :

7.7. Structure d'un programme C

Un programme C, est une suite de définitions et/ou de déclarations.

On appelle déclaration le fait d'informer le compilateur qu'un objet existe et de lui associer un nom.

On appelle définition le fait de demander au compilateur de créer un objet et de lui associer un nom. Une
définition est aussi, de fait, une déclaration. En général, une définition réserve de l'espace en mémoire
pour stocker l'objet défini.

Un même objet peut en général être déclaré plusieurs fois mais, par contre, il doit être défini une fois et
une seule. Toute les déclarations et la définition d'un même objet doivent être identiques (les déclarations
et la définition traitent du même objet si elles utilisent le même nom).

Attention : selon les ouvrages et auteurs, les notions de définition et de déclaration peuvent être
inversées ! Si vous employez ces notions dans un document, pensez à préciser au lecteur dans quel
sens vous les utilisez et surtout restez cohérent tout au long de votre texte.

Déclaration de types

Les types ne sont jamais définis (puisqu'ils ne réservent pas d'espace en mémoire). Par contre un
même type (struct ou typedef ) ne doit être déclaré qu'une fois par fichier source.

Déclaration de fonctions

Nous avons déjà vu comment définir une fonction. Pour la déclarer, il suffit d'écrire le type de la fonction
suivi de son nom et de la liste de ses paramètres sans mettre le corps de la fonction elle-même et en
terminant la déclaration par un point-virgule. La ligne suivante déclare la fonction moyenne :

double moyenne(double a, double b);

60
À partir du moment où cette déclaration est faite, la fonction moyenne est utilisable. Sa définition peut
apparaître plus tard ou même dans un autre fichier source.

Déclaration de variables

Nous avons déjà vu comment définir des variables. Pour faire juste une déclaration d'une variable qui
sera définie plus tard ou dans un autre fichier source, il faut précéder la définition du mot-clé extern. Ainsi,
les deux lignes suivantes déclarent que a et b existent sans leur réserver d'espace en mémoire :

extern char a[100];


extern double *b;

À partir du moment où ces déclarations sont faites, le compilateur peut utiliser a et b puisqu'il connaît leur
type.

Notion de portée d'un nom

La norme définit une notion de portée d'un nom. La portée d'un nom représente la région (ou les régions)
dans le programme source où un nom est connu du compilateur.
Les fonctions définies dans un fichier source C sont visibles (et donc utilisables) dans tout le programme
sauf si leur définition est précédée du mot-clé static. Dans ce dernier cas, la fonction n'est visible que
dans le fichier source la contenant.
Les variables définies à l'intérieur d'un bloc (au début le corps d'une fonction par exemple ou plus
généralement au début d'une série d'instructions entourée par des accolades) ne sont visibles qu'à
l'intérieur de ce bloc. À l'extérieur de ce bloc, le nom peut être réutilisé pour un autre objet.
Les variables définies à l'extérieur de toutes les fonctions (et donc à l'extérieur de tous les blocs) sont
appelées des variables globales. Elles sont visibles dans tout le programme sauf si leur définition est
précédée du mot-clé static. Dans ce cas, la variable n'est utilisable que dans le fichier source la
contenant.

7.8. Les bibliothèques standards

En C, il n'existe aucune commande spécifique pour faire communiquer le programme avec l'extérieur. On
utilise des fonctions externes fournies par le système sur lequel le programme doit fonctionner.

La norme C impose que tous les compilateurs fournissent un certain nombre de fonctions standards dont
le fonctionnement et les paramètres sont définis par la norme. Chaque système peut proposer ses
propres fonctions spécifiques en plus des fonctions standards.

Dans ces fonctions standards, on trouve entre autre des fonctions de calcul mathématique (log, cos, sin,
sqrt, etc.), des fonctions d'entrées/sorties (printf, fprintf, scanf, fscanf, getc, putc, etc.), des fonctions
d'accès aux fichiers (fopen, fclose, fread, fwrite, etc.), des fonctions de manipulation de chaînes de
caractères (strlen, strcpy, strcat, etc.) et des fonctions de gestion de la mémoire (malloc, free,
calloc, etc.).

Sous UNIX, le système propose une page de manuel en ligne (via la commande man) pour chacune de
ces fonctions. Cette page précise à chaque fois le nom du fichier d'en-tête à inclure pour faire connaître
au compilateur la déclaration de la fonction ainsi que le nom de l'éventuelle bibliothèque contenant sa
définition. Si aucune bibliothèque n'est nécessaire, cela signifie que la définition de cette fonction externe
61
est présente dans la bibliothèque C. Cette bibliothèque est mise automatiquement à disposition du
compilateur lors de l'édition des liens d'un programme.

Nous ne détaillerons pas toutes ces fonctions. Nous nous focaliseront sur printf, scanf pour les
entrées/sorties et sur malloc et free pour l'allocation de mémoire dynamique.

La fonction printf

printf est une fonction externe inclue dans la bibliothèque de fonctions C standards. Elle permet d'afficher
à l'écran des informations provenant du programme.

Elle prend un nombre d'arguments variable. Son premier argument est une chaîne de caractères
spécifiant le format d'affichage. Les arguments suivants sont les valeurs qu'il faudra afficher. C'est le
contenu du format qui permet de dire comment les arguments suivants seront affichés :

printf(format, arg1, ... , argN);

Le format est interprété de la manière suivante :

 les caractères ordinaires sont affichés tel quel ;


 certains caractères précédés d'une barre oblique inverse ( ) permettent de faire de la mise en
page (tabulation, passage à la ligne, ...).
 une séquence commençant par le caractère % sera remplacé à l'affichage par la valeur d'un
argument. Le caractère qui suit le % précise le type de l'argument et la manière dont il sera
affiché. La première séquence sera remplacée par la valeur du premier argument suivant le
format. La seconde le sera par la valeur du second argument suivant le format et ainsi de
suite. Il faut vérifier qu'il y a assez d'arguments pour toutes les séquences du format (il peut y
en avoir trop).

Séquences spéciales dans un printf.

Séquence l'argument remplaçant la séquence doit être

%c un caractère seul

%s une chaîne de caractère

%d un entier (affiché en décimal)

%o un entier (affiché en octal)

%x un entier (affiché en héxadécimal)

%u un entier non signé (affiché en décimal)

%f un réel (affiché normalement)

%e un réel (affiché en notation exponentielle)

%g un réel (au mieux entre f et e)

62
On peut introduire entre le % et le caractère de spécification de format d'affichage quelques caractères de
contrôles d'affichage :

 le caractère - permet d'afficher l'argument aligné à gauche (par défaut à droite).


 le caractère + fait qu'un nombre est toujours affiché avec son signe (par défaut seul le moins
est affiché).
 un nombre indique la longueur totale exacte (en caractères) pour afficher l'argument.
 le caractère . suivi d'un nombre permet de spécifier pour les valeurs réels le nombre de
chiffres après la virgule.

Exemples :

double a=3.141592653589793115997963;
printf("Pi = %e n", a);
printf("Pi = %f n", a);
printf("Pi = %15f n", a);
printf("Pi = %18.13f n", a);
printf("Pi = %+.13f n", a);
printf("Pi = %-+18.13f n", a);
printf("Pi = %.25f n", a);

Affiche :

Pi = 3.141593e+00
Pi = 3.141593
Pi = 3.141593
Pi = 3.1415926535898
Pi = +3.1415926535898
Pi = +3.1415926535898
Pi = 3.1415926535897931159979635

Il faut inclure le fichier d'en-tête standard stdio.h avant de pouvoir utiliser la fonction printf :

#include <stdio.h>

L’allocation dynamique de la mémoire

La fonction malloc
La fonction malloc permet de demander au système de réserver un espace mémoire afin de l'utiliser dans
un programme C. L'allocation de la mémoire se fait de manière dynamique.

Pour pouvoir utiliser la fonction malloc, il faut inclure le fichier d'en-tête standard stdlib.h :

#include <stdlib.h>

63
Le seul paramètre de malloc est la taille en nombre d'octets du bloc mémoire à allouer. Le résultat
de malloc est de type void * (c'est à dire un pointeur générique). Il faut le convertir en un pointeur sur le
type de données que l'on veut stocker.

Pour connaître la taille d'un type, on utilise l'opérateur sizeof. L'utilisation de sizeof permet de garantir que
le programme se compilera correctement quelque soit la machine utilisée (ne pas oublier
qu'undouble n'occupe pas obligatoirement la même place sur toutes les machines).

Dans l'exemple suivant, on alloue dynamiquement tout d'abord un int, puis un complexe et enfin un
tableau de 100 short :

int * pInt;
complexe * pComplexe;
short * pShortTab;

pInt = (int *) malloc(sizeof(int));


pComplexe = (complexe *) malloc(sizeof(complexe));
pShortTab = (short *) malloc(sizeof(short) * 100);

Une fois ces allocations dynamiques effectuées, il est possible de stocker des données dans l'espace
mémoire pointé par ces trois pointeurs comme avec n'importe quel autre pointeur.

La fonction malloc retourne la valeur NULL si il n'y a plus assez de place pour allouer un bloc de la taille
demandée. Dans un programme C correct, on doit donc tester la valeur de retour de malloc pour vérifier
que l'allocation s'est bien déroulée. En général, s'il n'y a plus assez de mémoire, on arrête le programme
grâce à l'instruction exit qui stoppe instantanément le programme :

int * pTabInt;
pTabInt = (int *) malloc(sizeof(int) * 10000);
if (pTabInt == NULL) {
printf("Plus assez de mémoire pour continuer !\n");
exit(1);
}

Ceci étant, si un pointeur contient la valeur NULL, il est obligatoirement invalide et toute tentative
d'accéder à son contenu provoquera une erreur.

La fonction free

Toute la mémoire allouée dynamiquement durant l'exécution d'un programme sera libéré à la fin du
programme. Mais, il est plus propre et surtout moins consommateur de ressources mémoire de libérer
l'espace mémoire que l'on a réservé dès qu'on n'en a plus besoin. La fonction free permet de libérer un
bloc mémoire précédemment alloué via malloc. Cette espace mémoire est rendue au système qui pourra
le réutiliser pour un autre usage (par exemple un autre malloc).

64
Le seul paramètre de free est un pointeur (ce pointeur doit normalement être de type void *. Néanmoins,
le compilateur effectue tout seul la conversion si c'est un pointeur d'un autre type). Ce pointeur doit
absolument pointé sur un espace mémoire alloué par malloc.
Pour pouvoir utiliser la fonction free, il faut inclure le fichier d'en-tête standard stdlib.h :
#include <stdlib.h>

En général, après la libération de l'espace mémoire qu'il pointait, on stocke la valeur NULL dans le
pointeur afin d'éviter un accès involontaire à l'espace mémoire libéré. De même, tant qu'un pointeur ne
pointe vers rien de spécial, on l'initialise avec la valeur NULL :
int * pTabInt = NULL;
/* le contenu de pTabInt n'est pas accessible */
...
pTabInt = (int *) malloc(sizeof(int) * 10);
/* on peut utilises les dix elements du tableau pointés
par pTabInt : pTabInt[0], ..., pTabInt[9] */
...
free(pTabInt);
pTabInt = NULL;
/* le contenu du pointeur pTabInt n'est plus utilisable */
...

7.9.La compilation

La compilation est un terme qui recouvre en fait plusieurs opérations successives qui permettent de
transformer un ensemble de fichiers sources en un programme utilisable.

Des fichiers sources à l'exécutable

65
La figure décrit ces différentes opérations et les fichiers produits. La plupart des compilateurs effectue
l'ensemble de la transformation en un seul passage (tout du moins du point de vue de l'utilisateur). Pour
demander au compilateur de n'effectuer qu'une partie de la transformation, il faut lui passer des options
particulières.
Chacune des phases de la transformation effectue ses propres vérifications et engendre donc ses
propres messages d'erreur.
Nous allons commencer par présenter les différents types de fichiers puis, pour chacune des phases,
nous détaillerons ses objectifs et ses moyens de contrôle.

Les différents fichiers

Fichiers sources (*.c, *.h)

Les fichiers sources contiennent le programme original. Tous les autres fichiers sont calculables à partir
des seuls fichiers sources. L'extension <<.c>> est réservée aux fichiers directement compilables.
L'extension <<.h>> est réservée aux fichiers inclus par le préprocesseur.

Fichiers sources après préprocesseur (*.i)

Après passage dans le préprocesseur, les fichiers en-têtes <<.h>> sont directement intégrés dans le
source <<.c>>. Toutes les macro-commandes sont expansées. Les commentaires sont supprimés. Il ne
reste plus aucune directive propre au préprocesseur.

66
Fichiers assembleurs (*.s)

Le fichier assembleur est le résultat de la compilation d'un fichier source. L'assembleur est un langage
spécifique à la machine choisie. A chaque fichier source <<.c>> correspond un fichier en assembleur. La
plupart des compilateurs ne stockent pas ce fichier intermédiaire et, en appelant seul l'assembleur,
produise directement un fichier objet. L'extension <<.s>> est réservée aux fichiers en assembleur.

Fichiers objets (*.o)

Un fichier objet contient le code nécessaire à la définition des objets (variables ou fonctions) qu'il contient.
Ce code peut faire référence à des objets indéfinis (externes au fichier objet). Un fichier objet contient une
table des objets qu'il définit et des objets externes qu'il utilise. L'extension <<.o>> est réservée aux
fichiers objets.

Fichiers exécutables

Le fichier exécutable constitue le programme lui-même. Il est utilisable en tant que nouvelle commande.

Préprocesseur

Lors de sa compilation, chaque fichier source subit une première phase de transformation par simple
remplacement de texte et inclusion de fichiers. C'est le préprocesseur qui se charge de cette phase. Dans
cette opération, les noms des fichiers inclus sont remplacés par leurs contenus, les macro commandes
sont expansées et les commentaires sont supprimés.

Les commentaires

Les commentaires en C débutent par <</* >> et se terminent par <<*/ >>. Ils peuvent être placés partout
où il est possible de placé un espace. Ils ne peuvent pas être imbriqués les uns dans les autres.

#include

La directive <<#include>> permet d'inclure un autre fichier à l'intérieur d'un fichier source. Ce fichier est
tout d'abord cherché dans le même répertoire que le fichier source (.c) puis dans une liste de répertoires
prédéfinis. Cette liste est spécifique au compilateur utilisé. En général, elle regroupe les chemins d'accès
des répertoires contenant les fichiers d'en-têtes (.h) liés aux fonctions systèmes. Un fichier en-tête peut
lui-même inclure d'autres fichiers en-tête.

Normalement le nom du fichier à inclure est placé entre guillemets ("). S'il est placé entre inférieur et
supérieur (<>), ce fichier n'est cherché que dans la liste des répertoires prédéfinis et non pas dans le
répertoire courant :

/* stdlib.h est un fichier système */


#include <stdlib.h>

/* monfichier.h est un fichier en-tête a moi... */


#include "monfichier.h"

67
#define

La directive <<#define>> permet de définir la suite de caractères qui devra remplacer un symbole donné.
Cela permet de définir une bonne fois pour toutes, un symbole constant. Il devient alors facile de changer
la valeur de ce symbole en changeant sa définition.

Par exemple, on peut définir TVA comme étant 18,6% de la manière suivante :

#define TVA 18.6


...
prixTTC = prixHT * (1 + TVA/100);

À partir de ce moment, à chaque fois que le préprocesseur rencontrera le symbole TVA, il le remplacera
par 18.6.

Ceci facilite la modification du programme. Par exemple si le taux de TVA devient 20,6%, il est plus facile
de modifier la ligne précédente que tous les endroits où le taux de TVA était utilisé :

#define TVA 20.6


...
prixTTC = prixHT * (1 + TVA/100);

La directive #define peut prendre des paramètres pour définir des macrocommandes.

Par exemple, on peut définir la macrocommande MAX de la manière suivante :

#define MAX(a, b) ((a > b) ? a : b)

À chaque fois que le préprocesseur rencontrera le symbole MAX suivi de deux arguments entre
parenthèses, il le remplacera par la définition donnée dans laquelle a et b seront remplacés par les deux
textes fournis. Par exemple la ligne suivante :

a = MAX(3 - b, 18);

sera remplacée par :

a = (( 3 - b > 18 ) ? 3 - b : 18);

Autres directives

Le préprocesseur propose beaucoup d'autres directives telles que #if, #ifdef, #else qui permettent de faire
de la compilation conditionnelle. Nous ne rentrerons pas dans le détail de ces directives.

68
La suite de la compilation

Une fois la phase de « préprocessing » passée, on passe à la phase de compilation proprement dite.
C'est cette phase qui génère la plupart des messages d'erreur.

Les bons compilateurs essaient de produire des messages d'erreur les plus claires possibles. Mais il est
impossible de garantir que ces messages sont bons sinon le compilateur corrigerait lui-même les erreurs
s'il était sûr de son diagnostic.

Le résultat de la compilation est un fichier en code assembleur qui sera passé à l'assembleur. Cette
phase ne devrait généralement pas échouée ou produire de messages (sauf par manque d'espace
disque).

Le fichier produit est alors un fichier objet (en code machine).

Il ne reste plus que la phase d'édition des liens qui va relier tous les fichiers objets, les bibliothèques
utilisateurs et les bibliothèques systèmes pour produire enfin l'exécutable. C'est lors de cette phase que la
machine détecte les objets définis plusieurs fois dans différents fichiers objets ou ceux qui ne sont définis
nulle part.

69
EXERCICES ET TRAVAUX PRATIQUES

Modélisation du Système Informatique d’un Centre Hospitalier de Référence.


Le Centre Hospitalier du Mont-Amba (CHMA) a été créé par la décision rectorale n°124/UNIKIN/R/95 du
19 Septembre 1995, approuvée par l’Arrêté Ministériel numéro MIN.ESU./060.
Il est l’une des unités décentralisées de l’Université de Kinshasa et jouit de l’autonomie administrative et
financière de gestion.
Il est sous la tutelle académique de l’Ecole de Santé Publique par l’entremise de la Faculté de Médecine
de l’Université de Kinshasa.
Il est situé dans la Commune de Lemba en face de l’Institut Technique Médical du Mont-Amba, non loin du
Centre Hospitalier Universitaire (CHU) de l’UNIKIN.
Il est aussi l’hôpital de référence de la zone de santé de Lemba.

Sur le plan médical, le CHMA compte en son sein plusieurs services à savoir :
- la Chirurgie,
- la Gynécologie,
- la Stomatologie,
- la Médecine interne,
- la Pédiatrie,
- l’Ophtalmologie,
- la Cardiologie,
- la Neurologie,
- l’Imagerie médicale.
Il est demandé dans le cadre du cours d’Informatique de Gestion, de procéder à la modélisation par la
méthodologie MERISE, des fonctions du Centre Hospitalier du Mont-Amba (CHMA).

________________________________________________

70

Vous aimerez peut-être aussi