Vous êtes sur la page 1sur 129

I

REPUBLIQUE DEMOCRATIQUE DU CONGO


ENSEIGNEMENT SUPERIEUR ET UNIVERSITAIRE

INSTITUT SUPERIEUR D’INFORMATIQUE ET DE GESTION


ISIG
DEVELOPPEMENT
ISIG

PROFES
MATION

B.P. 841 GOMA

Cours d’algorithme et Méthodes de


Programmation

Par Ir Irenge Balolage Jean de Dieu

Année Académique 2016 – 2017

Par Ir Irenge Balolage Jean de Dieu


II

Les Objectifs
1. Global
Etre en mesure de Modéliser différents problèmes de la vie courante et y apporter les
solutions informatiques.

2. Spécifique
- Être capable de concevoir des algorithmes selon problème à résoudre.

- Être capable d’implémenter des algorithmes de différentes sources dans n’importe quel
langage de programmation de son choix selon le besoin exprimé.

- Comprendre les notions de base en Algorithmique.

- Comprendre les notions de base en programmation en se basant sur l'algorithmique.

-Différencier et comprendre les concepts de base de la programmation Orientée Objet.

- Appréhender les Notions de Base de la modélisation et de la conception des bases des


données.

Par Ir Irenge Balolage Jean de Dieu


III

Les langages de programmation et moteur de Base des données que nous allons utiliser
en pratique pour une meilleure compréhension de ce cours sont:

• Le VB.NET ;

• le Langage C

• Le Microsoft Office Access ;

Par Ir Irenge Balolage Jean de Dieu


IV

BIBLIOGRAPHIE :
Livres :

1. R.C BACKHOUSE, Construction et vérification de Programmes, Masson, 1986

2. G.CLAVEL, Introduction à la programmation, MASSON, paris, 1993

3. Barbara Doyle, Visual C#.net programming: from problem Analysis to Program Design,
THOMSON, Boston, 2004.

4. Claude Delannoy, Initiation à la programmation:Avec des exemples en


C, C++, C#, Java et PHP, Edition Eyrolles, paris, 2008

5.Christophe Dabancourt, Apprendre à Programmer, Editions Eyrolles, Paris,2008

Cours :

6. Serge Tahé, APPRENTISSAGE DU LANGAGE C# 2008 et du Framework .NET 3.5 ,


ISTIA - Université d'Angers,2008,inédit

7. Alexandre Meslé, Algorithmique pour le BTS, 12 mai 2009

Par Ir Irenge Balolage Jean de Dieu


-1-

CHAP. I. INTRODUCTION GENERALE

1.0 NOTION

La matière « Algorithmique et programmation » repose essentiellement sur


l'algorithmique et la résolution de problèmes. La maîtrise de l'algorithmique
requiert deux qualités :
- Avoir une certaine intuition, car il est impossible de savoir a priori quelles
instructions permettront d'obtenir le résultat voulu. C'est là, si l'on y tient,
qu'intervient la forme « d'intelligence » requise pour l'algorithmique. Cette
qualité se développe avec l'expérience et la multiplication des problèmes à
résoudre. Le raisonnement, au départ laborieux, finira par devenir « spontané ».
- Etre méthodique(qui procède avec logique et organisation) et rigoureux.
En effet, chaque fois qu'on résout un problème, il faut systématiquement se mettre
mentalement à la place de la machine qui va exécuter le programme de la solution.

QUELQUES APPROCHES

1.1 Le Rôle de l'Ordinateur

Les applications de l’ordinateur sont très nombreuses. En voici quelques exemples :


• accès à Internet ;
• envoi de courrier électronique ;
• création de sites Web ;
• lecture de CD-Rom ou de DVD ;
• archivage et retouche de photos ;
• jeux vidéo ;
• bureautique : traitement de texte, tableur, gestion de bases de données... ;
• gestion et comptabilité : facturation, paye, stocks... ;
• analyse numérique ;
• prévisions météorologiques ;
• aide à la conception électronique ou graphique ;
• pilotage de satellites, d’expériences...

1.2 La programmation

L’activité de programmation consiste, au bout du compte, à réaliser un programme (ou une


partie de programme, par exemple une fonction) résolvant un problème donné ou satisfaisant3
à un besoin donné. Compte tenu de la multiplicité des langages existants, il existe différentes
Par Ir Irenge Balolage Jean de Dieu
-2-

façons d’aborder cette activité.

Un Programme alors c'est une suite des instructions enregistrées dans la mémoire d'un
ordinateur lui permettant d'exécuter des tâches données

Une première démarche consiste à étudier la syntaxe précise d’un langage donné puis à utiliser
ce langage pour écrire le programme voulu. Cela laisse supposer alors qu’il existe autant de
façon de résoudre le problème qu’il existe de langages différents. Une autre démarche consiste
à exploiter le fait que la plupart des langages se fondent sur des principes communs tels que
ceux que nous venons d’évoquer et que l’on peut alors utiliser pour résoudre le problème
donné. Encore faut-il disposer d’un moyen d’exprimer ces concepts.
un pseudo-langage (certains parlent de langage algorithmique), lequel nous permettra
d’utiliser les concepts fondamentaux pour rédiger (sur papier) de véritables programmes qu’il
vous sera ensuite facile de transposer dans la plupart des langages actuels.

Remarque

Lorsqu’il s’agit de développer de gros programmes, il peut s’avérer nécessaire de recourir à


des méthodes d’analyse plus abstraites, en s’éloignant des concepts fondamentaux des
langages. Il n’en reste pas moins que l’emploi de telles méthodes sera plus efficace si l’on
maîtrise les concepts de base de programmation.

NB : un « bon programme » doit être :

● Bien spécifié,

● Clair, donc bien structuré,

● Facile à tester

● Aisément modifiable (Facile à la maintenance)

● Robuste (Résistant aux erreurs de l’utilisateur)

● Correct

● Efficace

1.2.1 Les étapes d’élaboration d’un programme


Pour élaborer un programme informatique, suivez ces étapes suivantes:

1ière Etape: Délimitation du problème à résoudre

Par Ir Irenge Balolage Jean de Dieu


-3-

2ième étape : la rédaction de l’algorithme

Problème Algorithme

(Pseudo-code)

3 ième étapes: La traduction de l’algorithme dans un langage de programmation

Si l’algorithme est bien écrit sans faute logique, l’étape suivante ne doit poser aucun problème
conceptuel. Il n’y a qu’à effectuer une simple traduction dans un langage de
programmation donné.

Cette phase correspond à la transformation de votre analyse vers un langage de


programmation spécifique. C’est phase de programmation

Problème Algorithme Programme

(Pseudo-code) (Langage)

4ième étape : Test du programme

Cette phase est La compilation qui va transformer le programme lisible par un humain vers un
langage compréhensible par une machine.

Problème Algorithme Programme Exécutable


(langage
(Pseudo-code) (Langage)
machine)

5ième étape : Maintenance du programme

Désigne les modifications apportées au programme, après sa mise en œuvre, pour en corriger
les fautes, en améliorer son efficacité ou d’autres caractéristiques.

1.2.2 Le programme : source de diversité

Si un ordinateur peut effectuer des tâches aussi variées, c’est essentiellement parce qu’il est
possible de le programmer. Effectivement, l’ordinateur est capable de mettre en mémoire un
programme qu’on lui fournit ou, plus souvent qu’on lui désigne (en général, on fournira le
moyen de trouver le programme, plutôt que le programme lui-même) puis de l’exécuter.
Plus précisément, un ordinateur possède un répertoire limité d’opérations élémentaires qu’il
sait exécuter très rapidement. Un programme est alors constitué d’un ensemble de directives,

Par Ir Irenge Balolage Jean de Dieu


-4-

nommées instructions, qui spécifient :


• les opérations élémentaires à exécuter,
• la manière dont elles s’enchaînent.
En définitive, la vitesse d’exécution de l’ordinateur fait sa puissance ; le programme lui
donne sa souplesse. En particulier, nous verrons que certaines des instructions permettent soit
de répéter plusieurs fois un ensemble donné d’instructions, soit de choisir entre plusieurs
ensembles d’instructions.

1.2.3 Les données du programme, les résultats

Supposez qu’un enseignant dispose d’un ordinateur et d’un programme de calcul de moyennes
de notes. Pour fonctionner, un tel programme nécessite qu’on lui fournisse les notes dont on
cherche la moyenne. Nous les appellerons informations données ou plus simplement
données. En retour, le programme va fournir la moyenne cherchée. Nous l’appellerons
information résultat ou plus simplement résultat. Si le programme a été prévu pour cela, il
peut fournir d’autres résultats tels que le nombre de notes supérieures à 10.

1.3 Communication ou archivage

D’où proviennent les données ? Que deviennent les résultats ? Les réponses les plus naturelles
sont : les données sont communiquées au programme par l’utilisateur ; les résultats sont
communiqués à l’utilisateur par le programme.
Cela correspond effectivement à une situation fort classique dans laquelle l’ordinateur doit
être en mesure de communiquer avec l’homme. Cependant, les données ne sont pas toujours
fournies manuellement. Par exemple, dans le cas d’un programme de paye, il est probable
que certaines informations relativement permanentes (noms, numéros de sécurité sociale...)
auront été préalablement archivées dans un fichier ou dans une base de données. Le
programme y accédera alors directement.
Dans le cas de la réservation d’un billet d’avion, vous n’aurez pas à fournir explicitement les
caractéristiques du vol souhaité (aéroport de départ, aéroport d’arrivée, heure de départ,
numéro de vol...). Vous effectuerez un choix parmi une liste de possibilités que le programme
aura trouvées, là encore, dans une base de données, en fonction de certains critères que vous
aurez exprimés.
On notera, à propos des bases de données, que les informations qu’elles renferment auront dû
être préalablement archivées par d’autres programmes dont elles constituaient alors les
résultats. Ceci montre la relativité de la notion de donnée ou de résultat. Une même
information
peut être tantôt donnée, tantôt résultat, suivant l’usage que l’on en fait.
En général, cet échange d’informations entre programme et milieu extérieur paraît assez

Par Ir Irenge Balolage Jean de Dieu


-5-

naturel. En revanche, on voit que le programme représente lui-même une information


particulière. Comme les données, il sera, soit prélevé automatiquement dans des archives (de
programmes, cette fois), soit (plus rarement) communiqué à l’ordinateur par l’homme.
Qui plus est, nous verrons, dès que nous parlerons de langage et de traducteur, que
l’information programme pourra, elle aussi, apparaître tantôt comme donnée, tantôt comme
résultat d’un autre programme.

1.4 L’ordinateur code l’information

Lorsque nous échangeons de l’information avec d’autres personnes, nous utilisons des
chiffres, des lettres, des graphiques, des paroles, etc.
Or, pour des raisons purement technologiques, l’ordinateur ne peut traiter ou manipuler
qu’une information exprimée sous forme binaire. On imagine souvent une telle information
comme une suite de 0 et de 1, mais on pourrait en fait utiliser n’importe quel couple de
symboles (comme rond blanc et rond noir, ampoule allumée et ampoule éteinte).
Quand vous transmettez une information à l’ordinateur, par exemple en tapant sur les touches
d’un clavier, il est nécessaire qu’il la transforme en binaire. Nous dirons qu’il réalise un
codage en binaire de cette information. De la même manière, avant de vous fournir un
résultat, il devra opérer une transformation symétrique.

1.5. Ce qui différencie l’homme de l’ordinateur

En définitive, on peut se dire que l’ordinateur et l’homme diffèrent dans leur façon de
représenter l’information puisque l’ordinateur ne connaît que le binaire tandis que l’homme est
capable d’utiliser une très grande variété de codes. Mais est-ce bien la seule différence ?
En fait, lorsque, dans un texte, vous rencontrez « 13 » ou « bonjour », il n’est pas besoin
qu’on vous précise quel code a été effectivement employé. Au vu des symboles utilisés, vous
arrivez à leur attribuer une signification. Qui plus est, lorsque vous rencontrez « XIII», vous
reconnaissez immédiatement le code « chiffres romains » et non plus le code « lettres de
l’alphabet ». Dans ce cas, vous avez utilisé votre expérience, votre intelligence et le contexte
de la phrase pour attribuer une signification à « XIII ».
Le binaire, en revanche, est beaucoup moins naturel, non seulement pour l’homme mais
également pour l’ordinateur. Pour vous en convaincre, imaginez que vous ayez besoin de
savoir ce que représentent les huit bits 00101001. Certes, vous pouvez toujours dire que cela
peut représenter l’écriture en binaire du nombre entier 41. Mais pourquoi cela représenterait-il
un nombre ? En effet, toutes les informations (nombres, textes, instructions de programme,
dessins, photos, vidéos,...) devront, au bout du compte, être codées en binaire. Dans ces
conditions, les huit bits ci-dessus peuvent très bien représenter une lettre, un nombre, une
instruction de programme ou tout autre chose. En définitive, nous voyons que l’ordinateur
code l’information ; l’homme agit de même. Cependant, on pourrait dire que l’ordinateur «
code plus » que l’homme ; en effet, il n’est pas possible d’attribuer un sens à la seule vue

Par Ir Irenge Balolage Jean de Dieu


-6-

d’une information binaire. Il est, en outre, nécessaire de savoir comment elle a été codée. Nous
verrons qu’une conséquence immédiate de ce phénomène réside dans l’importante notion de
type, lequel indique précisément le codage utilisé pour représenter une information.

1.6 Langages de programmation

On appellera langage de programmation un ensemble de mots-clés (choisis par convention)


associé à un ensemble de règles très précises indiquant comment on peut assembler ces mots
pour former des « phrases » que l’interpréteur ou le compilateur puisse traduire en langage
machine (binaire). Un langage de programmation se distingue du langage mathématique par
sa visée opérationnelle (ie. il doit être exécutable par une machine), de sorte qu’un langage
de programmation est toujours un compromis entre sa puissance d’expression et sa possibilité
d’exécution.
Un langage de programmation est un langage informatique, permettant à un humain d’écrire
un code source qui sera analysé par un ordinateur.

On appelle « langage informatique » un langage destiné à décrire l'ensemble d’actions


consécutives qu'un ordinateur doit exécuter. Un langage informatique est ainsi une façon
pratique pour nous (humains) de donner des instructions à un ordinateur. Par contre, le terme «
langage naturel » représente les possibilités d'expression partagé par un groupe d'individus
(par exemple l'anglais ou le français).

Le langage de programmation est l'intermédiaire entre l'humain et la machine, il permet


d'écrire un programme dans un langage proche de la machine mais intelligible par l'humain les
opérations que l'ordinateur doit effectuer.

NB:

Il existe un nombre important des langages de programmation, la plupart d'entre eux étant
réservés à des domaines spécialisés dont

Langage impératif(Assembleur), Langage fonctionnel(scheme et caml), Langage


modulaire(C), Langage interprété(PHP), Langage compilé (C++, C#,Java,etc) ,etc.

1.6.1 Le langage de l’ordinateur

a) Langage machine

Comme nous l’avons vu, l’ordinateur ne sait exécuter qu’un nombre limité d’opérations
élémentaires, dictées par des instructions de programme et codées en binaire. On traduit cela
en disant que l’ordinateur ne « comprend » que le langage machine.
Mais, fort heureusement, cela ne signifie nullement que tout programme doive être réalisé
dans ce langage machine. En effet, et c’est là qu’intervient la seconde idée fondamentale de
Par Ir Irenge Balolage Jean de Dieu
-7-

l’informatique (après celle de programme enregistré), à savoir : employer l’ordinateur lui-


même (ou, plus précisément, un programme) pour effectuer la traduction du langage utilisé
dans celui de l’ordinateur. Nous ne pouvons pas pour autant utiliser n’importe quel langage de
notre choix. En effet, il ne suffit pas de définir un langage, il faut qu’il puisse être traduit en
langage machine, ce qui lui impose nécessairement d’importantes contraintes : un langage
naturel comme le français ne pourrait pas convenir . En outre, il faut que le programme de
traduction existe réellement. Tout ceci explique qu’à l’heure actuelle on doive se restreindre à
des langages ayant un nombre très limité de mots, avec des règles de syntaxe assez
rigoureuses.

b) En langage assembleur

Supposons, de façon un peu simplifiée, que l’on soit en présence d’un ordinateur pour lequel
l’instruction machine : 0101010011011010 signifie : additionner (code opération 0101) les
valeurs situées aux adresses 010011 et 011010. Nous pouvons choisir d’exprimer cela sous
une forme un peu plus parlante, par exemple :
ADD A, B Pour que la chose soit réalisable, il suffit de disposer d’un programme capable de
convertir le symbole ADD en 0101 et de remplacer les symboles A et B par des adresses
binaires (ici 010011 et 011010).
Sans entrer dans le détail des tâches précises que doit réaliser un tel programme, on voit
bien :
• qu’il doit faire correspondre un code opération à un symbole mnémonique ;
• qu’il doit être capable de décider des adresses à attribuer à chacun des symboles tels que A
et B ; notamment, à la première rencontre d’un nouveau symbole, il doit lui attribuer une
adresse parmi les emplacements disponibles (qu’il lui faut gérer) ; à une rencontre ultérieure
de ce même symbole, il doit retrouver l’adresse qu’il lui a attribuée.
Tous les constructeurs sont en mesure de fournir avec leur ordinateur un programme capable
de traduire un langage du type de celui que nous venons d’évoquer. Un tel langage se nomme
langage d’assemblage ou encore assembleur. Le programme de traduction correspondant se
nomme, lui aussi, assembleur.
Bien qu’ils se ressemblent, tous les ordinateurs n’ont pas exactement le même répertoire
d’instructions machine. Dans ces conditions, chaque modèle d’ordinateur possède son propre
assembleur. D’autre part, même si un tel langage est plus facile à manipuler que le langage
machine, il ne s’en distingue que par son caractère symbolique, pour ne pas dire
mnémonique. Les deux langages (assembleur et langage machine) possèdent pratiquement
les mêmes instructions ; seule diffère la façon de les exprimer. Dans tous les cas, l’emploi de
l’assembleur nécessite une bonne connaissance du fonctionnement de l’ordinateur utilisé. On
exprime souvent cela en disant que ce langage est orienté machine. Réaliser un programme
dans ce langage nécessite de penser davantage à la machine qu’au problème à résoudre.

1.6.2 En langage évolué

Par Ir Irenge Balolage Jean de Dieu


-8-

Très vite est apparu l’intérêt de définir des langages généraux utilisables sur n’importe quel
ordinateur et orientés problème, autrement dit permettant aux utilisateurs de penser davantage
à leur problème qu’à la machine. C’est ainsi que sont apparus de très nombreux langages que
l’on a qualifiés d’évolués.
La plupart sont tombés dans l’oubli mais quelques-uns sont passés à la postérité : Fortran,
Basic,Cobol, Pascal, ADA, C, Visual Basic, Delphi, C++, Java, C#, PHP...

Dès maintenant, vous pouvez percevoir l’intérêt d’un langage évolué en examinant
l’instruction suivante (elle se présentera textuellement sous cette forme dans la plupart des
langages) :
Y=A*X+2*B+C
Sa signification est quasi évidente : à partir des valeurs contenues dans les emplacements
nommés A, X, B et C, calculer la valeur de l’expression arithmétique A*X + 2*B + C (le
symbole * représente une multiplication), puis ranger le résultat dans l’emplacement
nommé Y.
Comme vous pouvez vous en douter, le même travail demanderait bon nombre d’opérations
en langage machine (ou en assembleur), par exemple : prélever la valeur de A, la multiplier
par celle de X, ranger le résultat dans un emplacement provisoire, prélever la valeur de B, la
multiplier par 2, ajouter la valeur provisoire précédente, ajouter la valeur de C et, enfin, ranger
le résultat final en Y.
Bien entendu, quel que soit le langage évolué utilisé, il est nécessaire, là encore, d’en réaliser,
par programme, la traduction en langage machine. Pour cela, il existe deux techniques
principales : la compilation et l’interprétation.
La compilation consiste à traduire globalement l’ensemble du programme en langage évolué
(qu’on nomme souvent programme source) en un programme en langage machine (qu’on
nomme souvent programme objet), en utilisant un programme nommé compilateur. Si cette
traduction s’est déroulée sans erreur, le programme objet peut être exécuté, en le plaçant en
mémoire, autant de fois qu’on le désire, sans avoir besoin de recourir à nouveau au
compilateur.
De nombreux programmes sont fournis sous cette forme objet (dite aussi compilée) avec
la plupart des micro-ordinateurs du commerce.
L’interprétation consiste à traduire chaque instruction du programme source, avant de
l’exécuter, à l’aide d’un programme nommé interpréteur. Dans ce cas, il n’existe plus de
programme objet complet et, à un instant donné, on trouve en mémoire, à la fois le
programme source et le programme interpréteur.
On notera bien que le compilateur, comme l’interpréteur dépendent, non seulement du langage
concerné, mais également du type d’ordinateur pour lequel on effectue la traduction.
Par ailleurs, il existe une technique intermédiaire entre compilation et interprétation qui
consiste à traduire globalement un programme source (compilation) en un langage
intermédiaire défini comme étant commun à un ensemble de machines, et à interpréter le
résultat à l’aide d’un programme approprié. Cette technique avait été employée avec Pascal
et elle l’est actuellement avec Java et C#. En toute rigueur, cette technique est très proche de
la compilation, dans la mesure où tout se passe comme si le langage intermédiaire en

Par Ir Irenge Balolage Jean de Dieu


-9-

question était en fait une sorte de langage machine universel. L’interprétation finale ne sert
qu’à l’adapter à la machine concernée au moment de l’exécution.

1.6.3 Les concepts de base des langages évolués 11

Malgré leur multitude, la plupart des langages de programmation se basent sur un bon nombre
de principes fondamentaux communs. Certains découlent immédiatement de la nature même
de l’ordinateur et de l’existence d’un programme de traduction. C’est, par exemple, le cas de
la notion de variable que nous avons rencontrée sans la nommer : elle consiste à donner un
nom à un emplacement de la mémoire destiné à contenir une information ; elle est donc liée à
la fois à la notion technologique d’adresse et à l’existence d’un compilateur. Nous verrons que
le besoin de traduire un programme en langage évolué nécessitera de définir la notion de type
d’une variable, type qui sert à définir la manière dont doit s’opérer le codage des valeurs
correspondantes. De même, tout langage possède :
• des instructions dites d’affectation, elles permettent de calculer la valeur d’une expression et
de la ranger dans une variable ;
• des instructions permettant d’échanger des informations entre la mémoire et des
périphériques
(qu’ils soient de communication ou d’archivage) ; on parle d’instructions :
– de lecture, lorsque l’échange a lieu du périphérique vers la mémoire,
– d’écriture, lorsque l’échange a lieu de la mémoire vers le périphérique.
D’autres concepts, plus théoriques, ont été inventés par l’homme pour faciliter l’activité de
programmation. C’est notamment le cas de ce que l’on nomme les structures de contrôle, les
structures de données, les fonctions (ou procédures) et, plus récemment, les objets.
Les structures de contrôle servent à préciser comment doivent s’enchaîner les instructions
d’un programme. En particulier, elles permettent d’exprimer les répétitions et les choix que
nous avons déjà mentionnés : on parle alors de structure de choix ou de structure de
répétition. Bien entendu, au bout du compte, après traduction du programme, ces structures
se ramènent à des instructions machine et elles font finalement intervenir des instructions de
branchement. Les structures de données (attention, ici, le mot donnée est employé au sens
général d’information) servent à mieux représenter les informations qui doivent être
manipulées par un programme. C’est le cas de la notion de tableau dans laquelle un seul nom
permet de désigner une liste ordonnée de valeurs, chaque valeur étant repérée par un numéro
nommé indice. Bien entendu, là encore, au bout du compte, à chaque valeur correspondra un
emplacement défini par son adresse.
La fonction (ou procédure) permet de donner un nom à un ensemble d’instructions qu’il
devient possible d’utiliser à volonté, sans avoir à les écrire plusieurs fois. Comme dans le cas
d’une fonction mathématique, ces instructions peuvent être paramétrées, de façon à pouvoir
être utilisées à différentes reprises avec des variables différentes, nommées paramètres. Le
bon usage des fonctions permet de structurer un programme en le décomposant en différentes
unités relativement indépendantes.

Par Ir Irenge Balolage Jean de Dieu


- 10 -

1.7. Un algorithme

Un algorithme exprime la structure logique d’un programme informatique et de ce fait est


indépendant du langage de programmation utilisé. Par contre, la traduction de l’algorithme
dans un langage particulier dépend du langage choisi et sa mise en œuvre dépend également
de la plateforme d’exécution.
Un algorithme est une suite ordonnée d’instructions qui indique la démarche à suivre pour
résoudre une série de problèmes. Ainsi quand on définit un algorithme, celui-ci ne doit
contenir que des instructions compréhensibles par celui qui devra l’exécuter. Dans ce cours,
nous devrons donc apprendre à définir des algorithmes pour qu’ils soient compréhensibles et
donc exécutables par un ordinateur.
Un algorithme exprime la structure logique d’un programme informatique et de ce fait est
indépendant du langage de programmation utilisé. Par contre, la traduction de l’algorithme
dans un langage particulier dépend du langage choisi et sa mise en œuvre dépend également
de la plateforme d’exécution.

Un programme n’est rien d’autre qu’une suite d’instructions, encodées en respectant de


manière très stricte un ensemble de conventions fixées `a l’avance par un langage
informatique . La machine décode alors ces instructions en associant `a chaque « mot » du
langage informatique une action précise.
Le programme que nous écrivons dans le langage informatique à l’aide d’un éditeur (une sorte
de traitement de texte spécialisé) est appelé programme source (ou code source).

Le seul « langage » que l’ordinateur puisse véritablement « comprendre » est donc très
éloigné de ce que nous utilisons nous-mêmes. C’est une longue suite de 0 et de 1 (les « bits»,
binary digit) traités par groupes de 8 (les « octets », byte), 16, 32, ou même 64 .

Par Ir Irenge Balolage Jean de Dieu


- 11 -

• Les qualités d’un bon algorithme.

Un algorithme doit donc être :

Lisible: l'algorithme doit être compréhensible même par un non informaticien

De haut niveau: l'algorithme doit pouvoir être traduit en n'importe quel langage de

Programmation, il ne doit donc pas faire appel à des notions techniques relatives à

Un programme particulier ou bien à un système d'exploitation donné

Précis: chaque élément de l'algorithme ne doit pas porter à confusion, il est donc

Important de lever toute ambiguïté.

Concis (Bref): un algorithme ne doit pas très long. Si c'est le cas, il faut décomposer le
problème en plusieurs sous problèmes.

Structuré: un algorithme doit être composé de différentes parties facilement

Identifiables.

Par Ir Irenge Balolage Jean de Dieu


- 12 -

1.8 La structure d’un Algorithme

Un algorithme est structuré en deux parties

1. Une partie indiquant le nom de l’algorithme

2. Une autre partie située entre les mots clés "Début" et "fin", contenant le bloc d’instructions
(une partie de traitement d’un algorithme constitué d’opérations élémentaires).

Syntaxe de la structure d’un algorithme est la suivante ;

Algorithme Nom_de_l’algorithme

Déclarations des variables

Début

Bloc d’instructions

Fin
1.10 .L'algorithmique

L’algorithmique est la science des algorithmes.


L’algorithmique s’intéresse à l’art de construire des algorithmes ainsi qu’à caractériser leur
validité, leur robustesse, leur réutilisabilité, leur complexité ou leur efficacité.
• validité d’un algorithme La validité d’un algorithme est son aptitude à réaliser
exactement la tâche pour laquelle il a été conçu.

• robustesse d’un algorithme


La robustesse d’un algorithme est son aptitude à se protéger de conditions anormales
d’utilisation.
• réutilisabilité d’un algorithme
La réutilisabilité d’un algorithme est son aptitude à être réutilisé pour résoudre des tâches
équivalentes à celle pour laquelle il a été conçu.

• complexité d’un algorithme


La complexité d’un algorithme est le nombre d’instructions élémentaires à exécuter pour
réaliser la tâche pour laquelle il a été conçu.

• efficacité d’un algorithme

L’efficacité d’un algorithme est son aptitude à utiliser de manière optimale les ressources du
matériel qui l’exécute.

Par Ir Irenge Balolage Jean de Dieu


- 13 -

1.9 Notion sur Le compilateur, l’interpréteur et le code source

Votre ordinateur est une machine bizarre, c’est le moins que l’on puisse dire. On ne peut
s’adresser à lui qu’en lui envoyant des 0 et des 1. Ainsi, si je traduis "Fais le calcul 3 + 5" en

langage informatique, ça pourrait donner quelque chose comme:


0010110110010011010011110.

Programme écrit dans un Programme Programme en binaire compressible


de traduction par l’ordinateur (langage de Bas
langage de haut niveau
en binaire niveau)

Le code source : est tout simplement le code de votre programme écrit dans un langage
évolué.

Le compilateur : est le programme qui se charge de traduire le programme de haut niveau en


langage compréhensible par l’ordinateur. Il existe un compilateur pour chaque langage de haut
niveau. Le compilateur, récupère les instructions écrites en langage de programmation et les
convertit en langage machine.

La Compilation Consiste à Traduire le Programme source (code source) en langage machine.

L’interpréteur : est le programme chargé de traduire les instructions au fur et à mesure


qu’elles se présentent. La façon d'écrire un programme est intimement liée au langage de
programmation. L’interprétation consiste à traduire chaque instruction du programme source,
avant de l’exécuter, à l’aide d’un programme nommé interpréteur.

Que l'on a choisi, car il en existe énormément. De plus, le compilateur devra Correspondre au
langage choisi : à chaque langage de programmation son compilateur.

Le compilateur fait ensuite appel à un éditeur de liens (en anglais linker ou binder)

Par Ir Irenge Balolage Jean de Dieu


- 14 -

Qui permet d'intégrer dans le fichier final tous les éléments annexes (fonctions ou

Librairies) auquel le programme fait référence mais qui ne sont pas stockés dans le

Fichier source.

Puis il crée un fichier exécutable qui contient tout ce dont il a besoin pour fonctionner de
façon autonome, (sous les systèmes d'exploitation Microsoft Windows ou MS-Dos le fichier
ainsi créé possède l'extension .exe)

Fichier Source Fichier Objet Fichier Exécutable

Editeur de Liens
Compilateur

Par Ir Irenge Balolage Jean de Dieu


- 15 -

CHAP II .Notions de Base en Programmation

2.1 La notion de variables, les types de données et l’instruction affectation

2.1.1 Notion sur les variables


a) Approche

Une variable désigne un emplacement mémoire qui permet de stocker une valeur.
la plupart des langages sont basés sur la même technique fondamentale, à savoir la
Manipulation des Valeurs contenues dans les variables.

En programmation, une variable est donc un nom qui sert à repérer un emplacement
donné de la mémoire centrale. Elle vous permet, en effet de manipuler de valeur sans avoir a
vous préoccuper de l’emplacement qu’elles occuperont effectivement en mémoire.

A
01010
Montant
01011

Côté ordinateur Côté Programmeur

Le programmeur ne se contente que des noms A et Montant, il ne se préoccupe pas des


adresses qui leurs seront attribués en mémoire.

La première chose à faire avant de pouvoir utiliser une variable est de créer la boîte et de lui
coller une étiquette .Ceci se fait tout au début de l’algorithme avant même les instructions
proprement dite. C’est ce qu’on appelle la déclaration des variables.

Le nom de variable (étiquette de la boîte) obéit à des impératifs changeant selon les langages.

En pseudo-code, une déclaration de variable aura cette forme :

Variable <Nom_variable> en <Type_de_la_variable>

Ex : Variable g en numérique

Une variable est définie par:

• Un nom unique qui la désigne

• un type de définition unique

• Une valeur attribué et modifié au cours du déroulement de l'algorithme.

Par Ir Irenge Balolage Jean de Dieu


- 16 -

b) Quelques limites dans la déclaration des variables

Une règle absolue est qu’un nom de variable peut comporter des lettres(a,....A, z,...Z) et des
chiffres(0,.....9) mais qu’il exclut la plupart des signes de ponctuation ($, #, @, etc.), en
particulier les espaces.

NB:

• Le nom d’une variable commence aussi impérativement par une lettre.

• Le nombre maximal de signes pour un nom de variable dépend du langage utilisé.

• Dans beaucoup de langage de programmation le caractère “_” est utilisé dans la


déclaration des variables, Même au début.

• La sensibilité à la casse Les langages demandent une syntaxe rigoureuse, on ne peut


donc pas écrire les Choses de la manière dont on le souhaite. Ainsi, certains langages
sont case sensitive (en français "sensibles à la casse"), Cela signifie qu'un nom ne
comportant que des minuscules ne sera pas considéré comme équivalent au même nom
comprenant des majuscules. Ainsi la variable nommée "Toto" sera une variable
différente de la variable "toto".

c) Les variables publiques et privées

Par défaut, une variable est déclarée au sein d’une procédure, d’une fonction, ou d’une classe.

Si elle est créée avec cette procédure ou fonction ou classe et elle disparaît avec elle, elle ne
sera visible que dans la procédure ou fonction ou classe qui l’a fait naître et alors une telle
variable est dite par défaut Privées ou locales.

Mais à côté de cela, il est possible de créer des variables qui certes seront déclarées dans une
procédure ou fonction ou classe mais qui du moment où elles existent, seront communes à
toutes les procédures et fonctions de l’application. Alors de telles variables sont dites
globales ou publiques. Avec des telles variables, le problème de la transmission des valeurs
d’une procédure ou fonction à l’autre ne pose plus problème.

Exemples:

• Déclaration d’une variable privée x numérique

Variable x en numérique

• Déclaration d’une variable publique x numérique

Variable publique x en numérique

d) Les Variables Non définies

Par Ir Irenge Balolage Jean de Dieu


- 17 -

Si une variable n’a pas encore de valeur elle est dite non définie. D’ailleurs au début de
l’exécution d’un programme, toutes les variables sont non definies.

Algorithme VariableNonDefini
Lorsque l’on cherche à exécuter l’instruction Z
Variables X, Y, Z en numériques
 X+Y, la variable Y est encore non définie.
Début Le calcul de Z est donc Impossible.

X  3

Z  X+Y

Y  4

Fin

2.1.2 Notion sur les types des données

Le type de donnée conditionne le nombre d'octets sur lequel la donnée est codée,

C’est-à-dire l'occupation en mémoire de cette donnée ainsi que le format dans

Lequel elle est représentée.

C'est la raison pour laquelle certains langages (C, Java) sont des langages typés,

Cela signifie qu'à une variable est associée non seulement un nom mais aussi un

Type de donnée qu'il faudra préciser lorsque l'on déclarera la variable.

Certains langages acceptent que l'on associe à un nom de variable n'importe quel

Type de donnée (c'est-à-dire aussi bien un nombre entier qu'un caractère). Ces

Langages sont dits peu ou pas typés, on n’a pas besoin de déclarer le type des variables.

La déclaration consiste à réserver un espace mémoire dans une adresse (avec taille variable
selon le type), l'assignation Consiste à mettre des données dans cet espace réservé.

Dans tous les langages, toutes les variables occupent en mémoire un nombre déterminé de bits.

a) Les types numériques classiques (réel et entier)

Par Ir Irenge Balolage Jean de Dieu


- 18 -

Les variables de type numérique utilisées dans l’algorithme ont comme domaines usuels ceux
fournies par les mathématiques (Réel et entier). Celui d’une variable destinée à recevoir des
nombres. Tous les langages, quels qu’ils soient offrent un bouquet de types numériques, dont
le détail est susceptible de varier légèrement d’un langage à l’autre.

Ex : Algorithme Multipli_Type_Reel

Variables nombre1, Nombre2, Résultat en Réel

Début

Nombre1 1.2

Nombre2 10

Resultat Nombre1 * Nombre2

Fin

b) Autres types numériques

Certains langages de Programmation autorisent d’autres types numériques, notamment :

Le type monétaire.

Le type date (jour/mois/année)

c) Type alphanumérique

Dans une variable de ce type, on stocke des caractères ; qu’il s’agisse des lettres, signe de
ponctuation, d’espaces ou même des chiffres. Le nombre maximal des caractères pouvant
être stocké dans une variable du dépend du langage utilisé. Il s’agit du domaine constitué des
caractères alphabétiques, numérique et de ponctuation.

En pseudo code une chaîne de caractère est toujours mise entre guillemets.

Ex Algorithme AfficherJean

Variables R en Caractères

Début

R  "Jean"

Fin

d) Type booléen

Par Ir Irenge Balolage Jean de Dieu


- 19 -

Dans la variable de type booléenne on y stocke uniquement les valeurs logiques VRAI ou
FAUX. On peut représenter ces notions de Vrai ou faux par (True ou False), par (1 ou 0),
etc.

Ex : Algorithme de typeBoolean

Variables Bool1, Bool2, Bool3 en Booléen

Début

Bool1 10 > 9 (* Dans Bool1 on aura True*)

Bool2 NON Bool1 (* Dans Bool2 on aura False*)

Fin

2.1.3 L’instruction d’affectation

L’affectation est le fait d’attribuer à une variable une valeur (L’affectation consiste
simplement à placer une valeur dans une variable). L’instruction d’affectation se note avec
le signe 

Exemple : Y  12

Affecter à A la valeur 5

A  5

NB :

On peut attribuer à une variable la valeur d’une autre variable

Ex: Si x et y sont des variables de type numériques

X  Y : signifie que la valeur se trouvant dans Y est placée maintenant dans X.

Plus généralement, on pourra demander de ranger dans une variable le résultat d’un calcul
(Cela n’à de sens que pour des variables numérique).

Affecter à A la valeur de B+4

A  B+4

Détermine la valeur de B+4 sans modifier celle de B.

Dans cette instruction la valeur de A va changer.

Lorsque l’on détermine la valeur d’une expression, cela ne modifie pas la valeur des variables
qui apparaissent dans cette expression.

Par Ir Irenge Balolage Jean de Dieu


- 20 -

NB:

Une instruction d’affectation ne modifie que ce que est situé à gauche de la flèche.

X  Y+1 : si Y=7 alors la valeur de X est maintenant 8.

La valeur à placer dans une variable pourra également provenir d’une autre

Affecter à A la valeur B.

A  B

2.2 La Syntaxe dans le langage de programmation

La syntaxe définit les règles d’écriture d’un langage de programmation informatique. Pour
spécifier quels sont les programmes syntaxiquement corrects, on utilise des grammaires qui
définissent les règles de formation de programmes. La vérification du fait qu’un programme
est syntaxiquement correct par Rapport à la grammaire partielle donnée plus haut peut être
réalisée par un programme appelé analyseur syntaxique.

2.3 Mots réservés

Dans la plupart des langages, il existe quelques mots que l'on ne peut pas attribuer

Aux noms de variables, aux fonctions, Etc. on les appelle mots réservés.

Exemple en C (int,void,char,….), en C#(string,public,private,…..)

2.4 Les constantes

Les constantes sont des données dont la valeur ne peut être modifiée tout au long du
déroulement du programme. On les définit généralement en début de programme. La valeur
que la constante contient peut

Être de tout type, suivant ce que le langage autorise.

Syntaxe :

Constante Nom _Constante = valeur

Exemples

Par Ir Irenge Balolage Jean de Dieu


- 21 -

Constante Pi =3,14
Constante B = 6
Constante Mois =” Mars”

2.5 Les commentaires

Les commentaires servent à clarifier un programme en donnant des explications. Ils


serviront si jamais une autre personne essaie de comprendre le fonctionnement du programme
en lisant le fichier source, ou bien à la personne qui l'a créé si jamais il relit le fichier source
quelques années après l'avoir écrit , Etc.

Il est généralement bon de pouvoir ajouter dans un programme des lignes de texte

Qui ne seront pas prises en compte par le compilateur ou l'interpréteur. Ces lignes

De textes sont généralement précédées (ou encadrées) par des caractères

Spéciaux selon le langage de programmation.

Dans les algorithmes de ce cours nos commentaires seront encadrés par (* *)

Ex : (* Votre commentaire *)

la programmation

2.6 Les instructions

L'instruction est l'élément clé du programme car c'est elle qui permet de spécifier au

Processeur l'action à effectuer. Une instruction est un ordre qui permet de spécifier à
l'ordinateur l’action à effectuer.

Il existe des instructions Simples et les Instructions Composées

2 .6 1 instructions Simples

sont des instructions d’affectation, de lecture et d’écriture

1
-a) L ’instruction d’affectation : S

-b) L’instruction de lecture : LIRE Q

- c) L’instruction d’écriture : ECRIRE G

Par Ir Irenge Balolage Jean de Dieu


- 22 -

2 .6 2 instructions Composés
Les instructions composées sont la séquence, l'alternative et l'itération.

a)La séquence

Ex : x  a et y  b

xx+y

Bol  a + b et y = b

b) L'alternative

Syntaxe de l'alternative :
Si expression logique alors
instruction1
Sinon
instruction2
Fin si

c) Itération

Syntaxe de l'itération :
Tant que condition faire
instructions
Fin tant que

2.7 Les Opérateurs


L’opérateur est le symbole qui définit le type d'opération à réaliser
L’opérateur est le symbole d’une opération logique ou mathématique. Il existe des
opérateurs :

2.7.1 Opérateur Arithmétique

Signes Signification

+ L’addition

Par Ir Irenge Balolage Jean de Dieu


- 23 -

- La soustraction

* La multiplication

/ La division

^ Puissance

% Modulo

2.7.2 Opérateur de comparaison

Signes Signification

= L’égalité

≠ Différent

< Strictement Inférieur

> Strictement Supérieur

>= Supérieur ou égal

<= Inférieur ou égal

2.7.3 Les opérateurs Logiques

Signes Signification

Et Et logique

Ou Ou logique

NON Inverse une condition

XOR Ou exclusif

Par Ir Irenge Balolage Jean de Dieu


- 24 -

2.7.4 Opérateur alphanumérique &

Cet opérateur permet de concaténer 2 chaînes de caractères.

Ex : Algorithme concaténation

Variables A, B, C, K en caractères

Début

A "Jean"

B "-"

C "Luc"

KA & B & C

Fin

La valeur de K à la fin de l’algorithme sera égale à Jean-Luc

Remarques : Lorsque plusieurs opérateurs apparaissent dans une même expression, il est
nécessaire de savoir dans quel ordre ils sont mis en jeu. Les règles sont naturelles et rejoignent
celles de l’algèbre traditionnelle.

Voici les opérateurs par ordre décroissant de priorité, les opérateurs de même priorité étant
regroupés sur une même ligne :

- Négation algébrique (priorité la plus élevée).


^ Puissance
*, / ,% Multiplication, division et modulo
+ - Addition et soustraction Priorité décroissant des opérateurs
& Concaténation de chaînes
< ,<=, >, >=, =, <> Opérateurs de comparaison
non Négation logique
et Et logique
ou Ou logique (priorité la plus basse)

NB :

• En cas de priorités identiques les calculs s’effectuent de gauche à droite.

• Les parenthèses permettent d’outrepasser ces règles de priorité en forçant le calcul


préalable de l’expression qu’elles contiennent.

EXEMPLES :

Par Ir Irenge Balolage Jean de Dieu


- 25 -

Expression Expression similaire

A+B*C A+ (B*C)

A*B+C %D (A*B)+(C %D)

-A /-B+C ((-A) / (-B))+C

2.8 La lecture et l’écriture (Pour communiquer avec votre programme)

Les instructions permettant au programme de communiquer des valeurs à l’utilisateur en les


affichant à l’écran sont appelées Ecriture. De manière analogue, Les instructions permettant
de fournir des valeurs au programme sont appelées Lecture.

Dès que le programme rencontre une instruction de lecture, l’exécution s’interrompt attendant
la frappe d’une valeur au clavier.

La lecture et l’écriture doivent être comprises du point de vue de la machine qui sera
chargé de les exécuter.

En Pseudo-code:

La lecture est formalisé comme suit:

Exemples :

1. Pour la lecture

Lire A

Signifie Prendre la valeur sur le périphérique et la ranger dans A

Lire x, y

Signifie prendre deux valeurs et les ranger dans x et y. dans cet ordre

2. Pour l’écriture

a) Ecrire A

Signifie Ecrire la valeur de A sur le périphérique

b). Ecrire x, y

Signifie d'afficher les valeurs de x et y dans cet ordre.

c). Ecrire x

NB :

Par Ir Irenge Balolage Jean de Dieu


- 26 -

Les textes qui accompagnent nos résultats s’appellent des Libellés

Exemple :

ECRIRE " Le double de deux est : " , 4

ECRIRE " Deux en chiffre est : ", 2, " et trois en chiffre vaut :" ,3

Entré des données en mode conversationnel

Il est vivement conseillé de faire précéder toute instruction de lecture de l’écriture

D’un libellé précisant à l’utilisateur ce qu’on attend de lui.

Ex : un programme calculant le carré d’un nombre

Variables nombre, Carré en numérique

début

Ecrire "Entrer un nombre"

Lire nombre

Carré  nombre*nombre

ECRIRE " Voici son carré : " , Carré

Fin

Intérêt de l’instruction de lecture

Observer ces deux programmes :

Soit le programme 1

Algorithme le Double

Variables Val, Double en numériques

Début

Val  5

Double  val*2

ECRIRE " le double de : " , Val, " est : " , Double

Fin

Par Ir Irenge Balolage Jean de Dieu


- 27 -

Le Programme 1 fournit le double de 5, si nous souhaitons obtenir le double de 3, il va nous


falloir modifier le programme en remplaçant

L’instruction Val  5 par Val  3

L’instruction de lecture nous permet d’éviter ces modifications et de permettre à


l’utilisateur d’entrer la valeur qu’il veut et le programme calcule directement le double:

Soit le programme 2

Algorithme dudouble

Variables Val, Double en numériques

Début

ECRIRE " Entrer un nombre "

Lire Val

Double  val*2

ECRIRE " le double de : " , Val, " est : " , Double

Fin

Dans le programme 2 on peut avoir chaque fois entre le nombre et obtenir le double sans
modifier le programme. Comme s’était le cas dans le programme 1.

Par Ir Irenge Balolage Jean de Dieu


- 28 -

Exercices d’applications

1. Que va afficher est le résultat de ces Algorithme

a) Algorithme AfficherJeanFabrice

Variables R,X en Caractères

Début

R  "Jean"

X "Fabrice"

Ecrire R

Ecrire X

Fin

b) Algorithme AfficherJean

Variables R,X en Caractères

Début

R  "Jean"

X R

Ecrire R

Ecrire X

Fin

2.Trouver les valeurs Booléennes prises au cours de l’Algorithme Suivant

Algorithme CalculBooleen

Variables a,b en entier

Variables b1,b2, b3,b4 en booléen

Début

a10

B4
Par Ir Irenge Balolage Jean de Dieu
- 29 -

b1 (10>10) ET (5=5)

b2 (a=10) OU (b=5) OU (3=6)

b3 (a>b) ET (5=5) OU (b<a)

b4 (FAUX) ET (VRAI) OU (a>b)

3. Quel est résultat produit par le programme suivant ?

Variables val, double numériques

Début

Val  23

Double  Val * 2

Ecrire val

Ecrire Double

Fin

4. Ecrire un algorithme de la résolution d’une équation du premier

5. Ecrire un algorithme d’un programme qui fait la conversion de dollar en franc et un autre
qui fait la conversion des francs en dollar.

6. Ecrire le pseudo-code d’un programme qui demande un à l’utilisateur un nombre, puis


calcule et affiche-le carrée de ce nombre.

7. Soit l’intégral bornée suivante:

∫ab x dx

Proposer un algorithme pour sa résolution sachant que a>b et que a et b seront introduits par
l’utilisateur.

8. Qu’obtiendra-t-on dans les variables A, B après exécution des instructions suivantes

Variables A, B en Numérique

Début

A  5

B  A+4

A  A+1

B  A- 4

Par Ir Irenge Balolage Jean de Dieu


- 30 -

8. Ecrire l’algorithme d’un programme qui calcule le factoriel d’un nombre quelconque taper
par l’utilisateur.

2.9 Les Structures de contrôle


Elles permettent de gérer le déroulement du code.

L’intérêt et la puissance d’un ordinateur proviennent de deux choses :

La Possibilité d’effectuer des choix dans le traitement réalisé et ;

La possibilité de répéter plusieurs fois les mêmes instructions.

Bien attendu, ces choix et répétitions sont réalisables dans tous les langages de
programmations.

2.9.1 Traitement conditionnels (Les tests)

On appelle traitement conditionnel un Bloc d’instructions dont l’exécution est soumise à la


vérification d’un test. C’est ce qui permet de faire réaliser des choix aux ordinateurs.

a) Si…. Alors

Syntaxe
Si <Condition> alors

<Insrtuctions>

Finsi

Sous cette Forme conditionnelle, les instructions ne sont exécutées que si <Condition> est
Vérifiée.

Algorithme
Exemple ; Affichage nulle

Variable A en entier

Début

Si A=0 alors

Ecrire ”La valeur de la variable A est Nulle ”

Finsi

Fin

Par Ir Irenge Balolage Jean de Dieu


- 31 -

Si au moment du Test à une valeur Nulle, Alors l’instruction Ecrire ”La


valeur de la variable A est Nulle ” est exécuté Sinon elle est ignorée.

b) SI ... ALORS ..Sinon

La syntaxe de ce traitement conditionnel est la suivante :

Si < condition > alors

<Instructions>

Sinon

<Autres instructions>

Finsi

Si<Condition > est vérifié, les instructions sont exécutées. Dans le cas contraire, donc si
<condition> n’est pas vérifiée, alors ce sont les <autresinstructions> qui sont exécutées. Par
exemple,

Algorithme : Valeurs DistinctesetEgales

Variables a, b en numériques

DEBUT

ECRIRE ”Saisissez deux valeurs numériques.»

LIRE a, b

Si a = b alors

ECRIRE ”Vous avez saisi deux fois la même valeur, à savoir ”, a, ” et ”, b, ”.”

Sinon

ECRIRE ”Vous avez saisi deux valeurs différentes, ”, a, ” et ”, b, ”.”

FinSI

Par Ir Irenge Balolage Jean de Dieu


- 32 -

Dans l’exemple ci-dessus, la condition a = b est évaluée. Si à ce moment-làles variables a et


b contiennent la même valeur, alors la condition a = b sera vérifié Dans ce cas,
l’instruction

ECRIRE "Vous avez saisi deux fois la même valeur, àsavoir ", a, "." sera
exécuté.

Si la condition a = b n’est pas vérifiée, donc si les variables a et b ne contiennent pas la


même valeur au moment de l’évaluation de la condition, c’est alors l’instruction ECRIRE
"Vous avez saisi deux valeurs différentes, ", a, " et ", b, "." qui sera exécuté.

C) les Si imbriqués

syntaxe:

Graphiquement, on peut très facilement représenter un SI comme un aiguillage de Chemin de


fer. Un SI ouvre donc deux voies, correspondant à deux traitements différents. Mais il y a des
tas de situations où deux voies ne suffisent pas. Par exemple, un programme devant donner
l’état de l’eau selon sa température doit pouvoir choisir entre trois réponses possibles (solide,
liquide ou gazeuse).

Exemple : Algorithme temperatureEau

Variable Temp en Entier


Début
Ecrire "Entrez la température de l’eau :"
Lire Temp
Si Temp =< 0 Alors
Ecrire "C’est de la glace"
Finsi
Si Temp > 0 Et Temp < =100 Alors
Ecrire "C’est du liquide"
Finsi
Si Temp > 100 Alors
Ecrire "C’est de la vapeur"
Finsi
Fin

Par Ir Irenge Balolage Jean de Dieu


- 33 -

Vous constaterez que c’est un peu laborieux. Les conditions se ressemblent plus ou moins, et
surtout on oblige la machine à examiner trois tests successifs alors que tous portent sur une
même chose, la température (la valeur de la variable Temp). Il serait ainsi bien plus rationnel
d’imbriquer les tests de cette manière :

Exemple Algorithme temperatureEau

Variable Temp en Entier


Début
Ecrire "Entrez la température de l’eau :"
Lire Temp
Si Temp <= 0 Alors
Ecrire "C’est de la glace"
Sinon Si Temp < 100 Alors
Ecrire "C’est du liquide"
Sinon
Ecrire "C’est de la vapeur"
Finsi
Fin

Nous avons fait des économies au niveau de la frappe du programme : au lieu de devoir taper
trois conditions, dont une composée, nous n’avons plus que deux conditions simples. Mais
aussi, et surtout, nous avons fait des économies sur le temps d’exécution de l’ordinateur. Si la
température est inférieure à zéro, celui-ci écrit dorénavant " C’est de la glace " et passe
directement à la fin, sans être ralenti par l’examen d’autres possibilités (qui sont forcément
fausses).

Cette deuxième version n’est donc pas seulement plus simple à écrire et plus lisible, elle est
également plus performante à l’exécution.

Les structures de tests imbriqués sont donc un outil indispensable à la simplification et à


l’optimisation des algorithmes.

Par Ir Irenge Balolage Jean de Dieu


- 34 -

Ex: Algorithme TestNombreSuperieurInferieur


Variable nombre en numérique
Début
ECRIRE “Entrer le nombre”
Lire nombre
Si nombre >0 alors
Ecrire" le nombre est strictement Supérieur à 0 "
Sinon Si nombre <0 alors
Ecrire" le nombre est strictement inférieur à 0 "
Sinon
Ecrire" le nombre est égal à 0
Finsi
Fin

Par Ir Irenge Balolage Jean de Dieu


35

d) Suivant cas

Lorsque que l’on souhaite conditionner l’exécution de plusieurs ensembles d’instructions


par la valeur que prend une variable, plutôt que de faire des imbrications de si à,
outrance, on préféra la forme suivante :

suivant < variable > faire

cas < valeur1 > < instructions1 >

cas < valeur2 > < instructions2 >

...

cas < valeurn >

Autres cas < instructions >

finSelon

Selon la valeur que prend la variable <variable>, le bloc d’instructions à exécuter est
sélectionné Par exemple, si la valeur de <variable> est <valeur 1>, alors le bloc
<instructions 1> est exécuté. Le bloc <autres cas> est exécutési la valeur de <variable>
ne correspond à aucune des valeurs énumérées.

Exemple

É crivons un algorithme demandant à l' utilisateur le jour de la semaine. Affichons


ensuite le jour correspondant au lendemain.

Par Ir Irenge Balolage Jean de Dieu


36

Algorithme Lendemain

Variable erreur en numérique

Variables jour, lendemain en caractères

DEBUT

ECRIRE ”Saisissez un jour de la semaine”

LIRE jour

erreur ← 0

suivant jour faire

cas ”lundi” : lendemain ← ”mardi”

cas ”mardi” : lendemain ← ”mercredi”

cas ”mercredi” : lendemain ← ”jeudi”

cas ”jeudi” : lendemain ← ”vendredi”

cas ”vendredi” : lendemain ←”samedi”

cas ”samedi” : lendemain ← ”dimanche”

cas ”dimanche” : lendemain ← ”lundi”

autres cas

erreur ← 1

finSelon

Si erreur = 1 alors

ECRIRE ”Erreur de saisie”

Sinon

ECRIRE ”Le lendemain du ”, jour, ” est ”, lendemain, ”.”

FINSI

FIN

Par Ir Irenge Balolage Jean de Dieu


37

2.9.2 Boucles

Une boucle permet d’exécuter plusieurs fois de suite une même séquence d’instructions. Cet
ensemble d’instructions s’appelle le corps de la boucle. Chaque exécution du corps d’une
boucle s’appelle une itération, ou encore un passage dans la boucle.

Il existe trois types de boucle :

– Tant que

– Répéter ........ jusqu’à

– Pour

Chacune de ces boucles a ses avantages et ses inconvénients. Nous les passerons en revue l’une après
l’autre

a) Tant que

La syntaxe d’une boucle « Tant que »est la suivante.

tant que < condition >

< instructions >

Fintantque

La condition est évaluée avant chaque passage dans la boucle, à chaque fois qu’elle est
vérifié, on exécute les instructions de la boucle. Une fois que la condition n’est plus Vérifiée,
l’exécution se poursuit après le ‘fintantque ‘ . Affichons par exemple tous les
nombres de 1 à 5 dans l’ordre croissant,

Algorithme Affichage de Nombre 1 à 5 avec Tant que

Variable i en numérique

DEBUT

i ←1

tant que i ≤ 5

ECRIRE i

i ←i + 1
Par Ir Irenge Balolage Jean de Dieu
38

fintantque

FIN

Cet algorithme initialise i à 1 et tant que la valeur de i n’excède pas 5, le contenu de


cette variable i est affichée. Puis incrémentée. Les instructions se trouvant dans le corps de la
boucle sont donc exécutées 5 fois de suite. La variable i s’appelle un compteur, on gère la
boucle par incrémentations successives de i et on sort de la boucle une fois que i a atteint
une certaine valeur. L’initialisation du compteur est très importante ! Si vous
n’initialisez pas i explicitement, alors cette variable contiendra n’importe quelle valeur et
votre algorithme ne se comportera pas du tout comme prevu.

NB :

Pour la boucle “Tant que”, avant d’entrer dans le corps de la boucle, il faut que la condition soit
vrai. Si dans l’exemple ci-dessus i était initialisé à 6 on n’allait pas entrer dans la boucle.

b) Répéter... jusqu’à

Syntaxe

répéter

< Instructions >

Jusqu’à <condition >

Le fonctionnement est analogue à celui de la boucle « tant que » à quelques


différences près:

– la condition est évalué après chaque passage dans la boucle.

– On exécute le corps de la boucle jusqu’à ce que la condition soit vérifié, donc tant que la
condition est fausse.

Reprenons l’exemple

précédent avec une boucle Répéter ... jusqu’à :

Par Ir Irenge Balolage Jean de Dieu


39

Algorithme : 1 à 5 avec la boucle Répeter . . . jusqu’à

Variables i en numérique DEBUT

i ←1

répéter

ECRIRE i

i ←i + 1

Jusqu’à i> 5

FIN

De la même façon que pour la boucle « Tant que », le compteur est initialisé avant le
premier passage dans la boucle. Par contre, la condition de sortie de la boucle n’est pas la
même, on ne sort de la boucle qu’un fois que la valeur 5 a été affichée Or, i est
incrémenté après l’affichage, par conséquent i aura la valeur 6 à la fin de l’itération
pendant laquelle la valeur 5 aura étéaffichée. C’est pour cela qu’on ne sort de la boucle
qu’une fois que i a dépasséstrictement la valeur 5. Un des usages les plus courant de la
boucle « Repeter ... jusqu’ à» est le contrôle de saisie

Répéter

Ecrire "Saisir un nombre strictement positif"

Lire i

si i<=0 Alors

Ecrire "Saisir un nombre strictement positif "

Fin Si

jusqu’à i > 0

c) Pour

La Syntaxe de la Boucle Pour est la suivante :

Pour < variable > allant de < premierevaleur > à< dernierevaleur > [par pas de

< pas >]

< instructions >

Par Ir Irenge Balolage Jean de Dieu


40

< variable > Suivant

La boucle Pour fait varier la valeur du compteur <variable> entre <première valeur > et
<dernière Valeur>. Le <pas> est optionnel et permet de préciser la variation du
compteur entre chaque itération, le pas par défaut est 1 et correspond donc à une
incrémentation. Toute boucle « pour » peut être réécrite avec une boucle tant que. On
réécrit de la façon suivante :

< Variable > ←< premierevaleur >

Tant que < variable > <> < dernierevaleur > + < pas >

< Instructions >

< Variable > < variable > + < pas >

Fintantque

La boucle pour initialise le compteur <variable> à la <premiere valeur>, et tant que la


dernière valeur n’a pas été atteinte, les <instructions> sont exécutées et le compteur
incrémenté de <pas> si le pas est positif, de -<pas> si le pas est négatif.

Par Ir Irenge Balolage Jean de Dieu


41

Algorithme : 1 à 5 avec pour

variables i en numérique

pour i allant de 1 à 5

ECRIRE i

i Suivant

FIN

Observez les similitudes entre cet algorithme et la version utilisant la boucle tant que. Notez
bien que l’on utilise une boucle pour quand on sait en rentrant dans la boucle combien
d'itérations devront être faites. Par exemple, n’utilisez pas une boucle pour contrôler une
saisie !

Remarques

 Les conditions de choix sont de deux sortes :

- Les conditions simples

Les conditions simples consistent en la comparaison de deux expressions de même type

L’expression est une combinaison des lettres, de chiffres et d’opérateurs

Exemple d’expression

1. A > B

2. Opérateur = "+ "

3. D>0

- Les conditions complexes

Les conditions formées de plusieurs conditions simples reliées entre elles par les opérateurs
logiques. «ET» et/ou « OU »

1. a<0 et b<0

2. a<0 ou b<0

L’usage des parenthèses permet de régler d’éventuels problèmes de priorité

(a<0 et b>1) ou (a>0 et b>3) est vrai si au mois l’une de condition est vrai.

Par Ir Irenge Balolage Jean de Dieu


42

 Les Boucles Imbriqués (Une Boucle contient d’autres boucles)

Il n’y a qu’un bloc d’instructions à répéter lors d’une boucle. Mais le bloc peut être lui-
même composé d’une ou plusieurs boucles. On parle alors des boucles imbriques

Syntaxe pour deux boucles POUR imbriqués

Pour i allant de <val_initiale1> à <Val_final1>

<Instructions1>

Pour j allant de <val_initiale2> à <Val_final2>

<Instructions2>

j suivant

i suivant

Exemples : Algorithme la table de Multiplication de 1 à 3

Variables I, J en entier

Début

Pour I allant de 1 à 3

Pour J allant de 1 à 10

Ecrire I*J

J suivant

I suivant

Fin

NB :

• Pour toute itération de i (variable compteur de la boucle externe) est associé


toutes les itérations de j (variable compteur la boucle interne).

• La boucle «Pour »peut contenir la boucle « tant que » ; La boucle «tant


que »peut contenir la boucle « Pour », La boucle «Répéter»peut contenir la
boucle « tant que » ; Etc. Tout cela dépend du problème à résoudre.

Exemple 1 : On souhaite obtenir les tables de multiplication des nombres de 1 à 9.

Par Ir Irenge Balolage Jean de Dieu


43

Chaque table doit être présentée comme cette table des 5:

1 x 5=5

2 x 5=10

3 x 5=15

…….

10 X 5=50

Résolution

Variables i, j en Entier

Pour i allant de 1 à 9

Pour j allant de 1 à 10

Ecrire i , "X" ,j,"=", i*j

j suivant

i suivant

Fin

NB : C’est le problème posé qui doit guider le programmeur à l’utilisation des boucles
imbriquées.

2.10 Les sous-programmes (Les Fonctions et Procédures)

Les fonctions et procédures permettent de découper un programme complexe en


Une série de sous-programmes plus simples, lesquels peuvent être décomposés en fragments
plus petits ,ainsi de suite.
Il est souvent nécessaire, pour éviter d'écrire plusieurs fois le même code, de préparer des
blocs de code prêts à l'emploi. Pour que les fonctions et procédures soient facilement
réutilisables on utilise des paramètres. Les valeurs de ces paramètres sont spécifiées au
moment de l’appel.

NB :
Pour que le code soit facilement réutilisable, les valeurs qui sont manipulées par les
procédures et fonctions peuvent être passées en paramètres au moment de l’appel de
la procédure ou de la fonction.

Par Ir Irenge Balolage Jean de Dieu


44

Lors de la déclaration de la procédure ou de la fonction, vous devez spécifier la liste


des paramètres qui seront attendues. cette liste est située entre les parenthèses de la
déclaration de la procédure ou de la fonction. Vous devez indiquer pour chaque
paramètre son nom et son Type.
Si plusieurs paramètres sont attendus, il convient de les séparer par des virgules.

2.10.1 Les Procédures

Une procédure est une suite ordonnée d’instructions qui ne retourne pas de valeur (bloc
d’instructions nommé et paramétré).
Une procédure est un bloc d’instructions nommé et paramétré, réalisant une certaine tâche.
Chaque procédure a un nom, On se sert de ce nom pour exécuter les instructions contenues
dans la procédure. Les parenthèses après le nom sont utilisées pour spécifier les
caractéristiques des paramètres qui seront passées lors de l’appel. Les parenthèses sont
obligatoires dans la déclaration de variable même si aucun paramètre n’est requis pour la
procédure.

a) Syntaxe d’une Procédure

Syntaxe1 : Procedure sans parametres

Procédure Nom_procedure()

<Déclarations des variables>

<Corps de la procédure >


Fin procédure

Exemple : Créer l’algorithme d’un programme affichant « Bonjour » en utilisant une


procédure.

Procédure AfficherBonjour ()

Ecrire "Bonjour"

Fin Procédure

Syntaxe2 : Procédure avec paramètres

Par Ir Irenge Balolage Jean de Dieu


45

Procédure Nom_procedure(<Parametres>)

<Déclarations des variables>

<Corps de la procédure >

Fin procédure

Ex1 : Créer l’algorithme d’un programme affichant un message passé en paramètre en


utilisant une procédure.

Procédure AfficherBonjour ( msg en caractère)

Ecrire msg

Fin Procédure

Ex2 : Algorithme d’affichage des valeurs passées en paramètres en utilisant une Procédure

Procédure Afficher_les_valeurs (nbr1 en entier, nbr2 en entier)

Ecrire "Parametre1=", nbr1, "et Parametre2=",nbr2

Fin Procédure

b) L’appel de la procédure

On appelle une procédure que par son nom

Par exemple : l’appel de la procédure de l’exemple1

Début

AfficherBonjour (“Jean”)

Fin

Résultat : Jean

c) Passages de paramètres

Les variables du programme appelant ne sont pas lisibles depuis un sous-programme. Mais si
une procédure, pour s'exécuter, à besoin de la valeur d'une variable définie dans le programme
appelant, on utilise pour la lui communiquer un mécanisme dit "passage de paramètres"

Procédure affiche_Variable(monentier1 en Numerique , monentier1 en numerique)

Ecrire "Les valeurs des entiers passés en paramètre sont :", monEntier1, monEntier2

Fin procédure

Par Ir Irenge Balolage Jean de Dieu


46

Ex : écrire l’algorithme d’une Procédure qui va calculer le produit deux nombres et l’affiché
en messages, lors de son appel. Les deux nombres seront passés en paramètres de la
Procédure.

Procédure AfficherProduit (Nbr1 en numérique, Nbr2 en numérique)

Ecrire "Le Produit est ; " Nbr1*Nbr2

Fin Procédure

A l’appel de la fonction

Début

AfficherProduit (2,3)

Fin

A l’exécution on aura ceci :

Le Produit est ; 6

NB :

• Une Procédure ou une fonction peut Prendre en paramètre un Type donné et retourné
un autre type différent de celui entré en paramètre.

• Il existe des fonctions prédéfinies par langages de programmation qui font des taches
bien spécifiques

2.10.2 Les fonctions

Une fonction est une suite ordonnée d’instructions qui retourne une
valeur (bloc d’instructions nommé et paramétré). Une fonction est un sous-programme
quelque peu particulier, dans le sens mathématique du terme, il sert à calculer une valeur (i e.
image).
Une fonction se déclare suivant le même principe qu’une procédure. Cependant, la fonction
devant renvoyer au code appelant un résultat. Vous devez indiquer le type de retour que doit
renvoyer la fonction.

a)Syntaxe des Fonctions


• Syntaxe1 :Fonction Avec Paramètres

Fonction <Nom_fonction> (<Arguments ou Paramètres>) en <Type de retour>

Par Ir Irenge Balolage Jean de Dieu


47

Renvoyer <Valeur de retour>


Fin fonction
• Syntaxe2 : Fonction sans paramètres

Fonction <Nom_fonction> ( ) en <Type de retour>


Renvoyer <Valeur de retour>
Fin fonction

b) Exemples :

Ex1 : Fonction avec Paramètres

Fonction successeur (Variable x en Numérique) en Numérique


Renvoyer (x + 1)
Fin fonction
Cette fonction "fabrique" le x + 1. On dit que cette fonction renvoie (ou retourne) x + 1.

Une fois la fonction appelée, on remplace successeur(x) par le résultat retourné par la
fonction.

Ex2 : Fonction Sans Paramètres

Fonction Somme () en Numérique


Variables Nbr1, Nbr2 en numérique
Ecrire "Entrer le Premier nombre"
Lire Nbr1
Ecrire "Entrer le second nombre"
Lire Nbr2

Renvoyer (Nbr2 +Nbr1)


Fin fonction

c) Appel de la fonction

Comme Pour la procédure, l’appel de la fonction s’effectue par son nom

Exemple : Appelons La fonction successeur dans la Principal

Variable nombre en numérique

Début

Ecrire ” Entrer le nombre dont vous cherchez le successeur :”

LIRE nombre

Ecrire " Le successeur de :", nombre, " est" , successeur(nombre)

Par Ir Irenge Balolage Jean de Dieu


48

Fin

NB : Certains traitements ne peuvent être effectué par un algorithme, aussi savant soit-il.
D’autres ne peuvent l’être qu’au prix de souffrance. Dans ce cas il faut utiliser les fonctions
prédéfinies Fournies par le langage de programmation.

En C(sin,cos,sqrt,acos,asin,tan,pow,…..) en Vba(len,right,left,mid, mod,etc)

Ex ;

• Sqrt(2) la racine carré de 2 en C sachant que Sqrt se trouve dans math.h

• Mid(chaine ,1,2) : dans la variable chaîne à partir de la 1ierePosition prendre 2


caractères. Mid est une fonction prédéfini dans VBA.

• Etc

Par Ir Irenge Balolage Jean de Dieu


49

2.11 La Structures des données

2.11.1 Les tableaux

Un ensemble des valeurs portant le même nom de variable, ayant le même type et repérer par
un nombre (indice) est appelé Tableau. Un tableau est un ensemble fini d’éléments de même
type, stockés en mémoire à des adresses contiguës.

Attention :

Les Indices des tableaux commencent généralement par 0 et non par 1 dans la plupart
de langage de programmation.

Supposons que nous avons besoin dans un programme pour conserver les notes de 20 élèves ;
Nous pouvions Toujours utiliser une variable qui prend successivement la valeur de notes.

Si donc, Il est nécessaire de disposer simultanément de ces valeurs, nous pouvons toujours
utiliser 20 variables différentes nommées par exemple :

NoteA NoteB NoteC NoteD NoteC Etc.

Cela présente des inconvénients :

 Il faut trouver un nom de variable par note .Passe encore 20 valeurs. mais cela risque
de devenir fastidieux avec 100 ,1000 valeurs ou plus

 Il n’existe aucun lien entre ces différentes valeurs. Or, dans certains cas on est amené à
appliquer un traitement à l’ensemble ou à une partie de ces valeurs. Imaginez
seulement comment calculer la somme de Notes.

Tous les langages présentent en fait une solution à ce problème, elle réside dans la notion
de « Tableau »qui consiste.

2.11.1.1 Les tableaux à une dimension (Les Vecteurs)

le tableau à une dimension (on dit aussi « à un indice »). il s’agit alors d’une liste ordonnée
de valeurs de même type, désignée par un nom unique, chaque valeur de la liste étant
repérée par un numéro d’ordre qu’on nomme indice ; le tableau à une dimension s’apparente,
en fait, à la notion mathématique de vecteur ;
Dans tous les langages, le traducteur (Compilateur ou interpréteur) doit nécessairement
connaître le nombre d’éléments d’un tableau (on dit encore sa taille).Cette information lui
permet de réserver l’espace mémoire correspondant. D’autres part, il faut préciser quel est
le type du tableau, Autrement dit le type de tous ses éléments.

a)la déclaration d’un tableau à une dimension

Syntaxe

Par Ir Irenge Balolage Jean de Dieu


50

Tableau <Nom_tableau> (taille) en <Type_de_valeur_du_vecteur>

Ex1 : tableau note (10) en numérique

Ex2 : tableau res (10), x (20) en numérique

Ex3 : tableau ch(10) en caractère

Note (10) on déclare un vecteur de 10 éléments numérique

Note (1) Note (2) …….. Note (10)

Note (1) Note (2) …….. Note (10) désignent les éléments du tableau s’appellent
souvent des variables indicés.

Note(i*2),Note(i*j) sont aussi des variables indicés.

1, 2,3…,10 se nomment les indices.

b) l’affectation des valeurs dans un tableau

Algorithme Affectation Sans boucle dans un tableau

Tableau Tab (5) en numérique

Début

Tab(1) 1

Tab(2) 2

Tab(3) 3

Tab(4) 4

Tab(5) 5

Fin

Son exécution place les éléments dans les 5 éléments du tableau tab les valeurs

1 2 3 4 5

Cette affectation peut se simplifier en utilisant une boucle ;

Algorithme affectation en utilisant Boucle

Variable compteur en entier

Par Ir Irenge Balolage Jean de Dieu


51

Tableau tab(5) en numérique

Début

Pour i allant de 1 à 5

Tab(i)i

I suivant

fin

c) Lecture des éléments du tableau

Algorithme Lecture des éléments d’un tableau par une boucle

Variable compteur en entier

Tableau tab(5) en numérique

Début

Pour compteur allant de 1 à 5

Lire Tab(compteur)

compteur suivant

Fin

d) Affichages des éléments du tableau

Ex : Affectation des variables dans notre tableau (Vecteur) tab et les affichées

Algorithme d’affichage des éléments d’un tableau

Variable compteur en entier

Tableau tab (5) en numérique

Début

Pour compteur allant de 1 à 5

Lire Tab(compteur)

compteur suivant

Pour compteur allant de 1 à 5

Ecrire Tab(compteur)

Par Ir Irenge Balolage Jean de Dieu


52

compteur suivant

Fin

Exercices

Que Fournira l’exécution de ces deux programmes

1.

Variable i entier

Tableau tab (5) en numérique

Début

Tab(1)1

Tab(2)2

Pour i allant de 3 à 8

Tab(i)  Tab(i-1)+Tab(i-2)

i suivant

Pour i allant de 1 à 8

Ecrire Tab(i)

i suivant

Fin

2.

Variable i entier

Tableau nombre (5) en numérique

Début

Nombre (1)1

Pour i allant de 2 à 6

Nombre (i)  Tab (i-1) +2

i suivant

Pour i allant de 1 à 6

Par Ir Irenge Balolage Jean de Dieu


53

Ecrire Nombre (i)

i suivant

Fin

2.11.1.2. Les tableaux à deux dimensions

le tableau à deux dimensions (à « deux indices ») : il est plus proche que le précédent de
l’idée usuelle que l’on se fait du mot « tableau », à savoir un ensemble de lignes et de
colonnes ; cette fois, chaque valeur du tableau est repérée par deux indices.

Note Math Français Ecm

Etudiant

Jean 12 13 12 Note(0,2)

René 13 23 5

Patient 9 3 12 Note(0,0)

René 13 14 12

Dans la plus part des langages, il est possible de placer ces différentes valeurs dans un
tableau à deux dimensions.

Note(1,1),Note(0,1) sont des variables indicées. Dans certains langages de programmation


les parenthèses sont remplacées par des crochets (Comme le C, C#, etc).

Chaque note est alors repéré par deux indices qui représente sa position.

La 1iere indice sert à repérer la ligne et le second indice repère la colonne.

a) Déclaration d’un tableau à deux dimensions

Un Tableau Doit être déclaré en précisant le nombre et le type de valeurs qu’il contiendra (La
déclaration des tableaux varie d’un langage à un autre).

Syntaxe

Tableau Nom_Tab(indice_ligne,indice_colonne) en Type_Tableau

Ex : Tableau Note (20,10) en numérique

b) Affectation des valeurs dans un tableau

Ex1

Par Ir Irenge Balolage Jean de Dieu


54

Tableau Note (2,2) en numérique

Début

Note(0,0) 1

Note(0,1) 18

Note(0,2) 8

Note(1,0) 19

Note(1,1) 10

Note(1,2) 10

Note(2,0) 19

Note(2,1) 10

Note(2,2) 10

Fin

Ex2 : Affectation avec Boucle

Soit le programme suivant’

Tableau Note(2,3) en numérique

Début

Note(1,1) 10

Note(1,2) 10

Note(1,3) 10

Note(2 ,1) 10

Note(2,2) 10

Note(2,3) 10

Fin

Ce programme peut se transformer de cette façon en utilisant la Boucle "pour"

Tableau Note(2,3) en numérique

Variable i ,j en entier

Par Ir Irenge Balolage Jean de Dieu


55

Début

Pour i allant 1 à 2

Pour j allant 1 à 3

 10
Note(i,j)

j suivant

i suivant

Fin

c) Lecture Avec Tableau

Ex1 Lecture simple

Algorithme

Tableau Note(10,10) en numérique

Début

Lire Note(1,1)

Lire Note(1,2)

Lire Note(1,3)

Lire Note(2 ,1)

Lire Note(2,2)

Lire Note(2,3)

Fin

Ex2 :Lecture avec Boucle

Tableau Note(2,3) en numérique

Variable i ,j en entier

Début

Pour i allant 1 à 2

Pour i allant 1 à 3

lire Note(i,j)

Par Ir Irenge Balolage Jean de Dieu


56

j suivant

i suivant

Fin

d) Affichage avec Boucle

Algorithme Affectation Avec Boucle tableau à Deux dimensions

Tableau Note (2,3) en numérique

Variable i, j en entier

Début

Pour i allant 1 à 2

Pour j allant 1 à 3

Ecrire Note (i, j)

j suivant

i suivant

Fin

NB :

Dans la plus part des langages de programmation l’indice du tableau commence


toujours par la valeur 0 (C, C++, C#, java, etc).

Par Ir Irenge Balolage Jean de Dieu


57

2.11.2 Les Pointeurs


a)Définition

Un pointeur est une variable qui contient l'adresse d'une autre variable.
Jusqu’à présent une variable simple ou indicée était de type entier, réel, Booléen, caractère ou
chaîne de caractères. Il faut maintenant utiliser les variables qui prennent pour valeur des
adresses. On dira qu’il s’agit des variables de type pointeur ou simplement Pointeur.

b) Notion

La mémoire centrale utilisée par les programmes, est découpée en octets. Chacun
de ces octets est identifié par un numéro séquentiel appelé adresse. Par convention,
Une adresse est notée en hexadécimal et précédée par 0x.

0x3fffd10
0x3fffd11
0x3fffd12
0x3fffd13
0x3fffd14
0x3fffd15
0x3fffd16
0x3fffd17

Déclarer une variable, c'est attribuer un nom (l'identificateur) à une zone de la
Mémoire centrale. Cette zone est définie par :
- sa position c'est-à-dire l’adresse de son premier octet
- sa taille c'est-à-dire le nombre d’octets

Int toto=18;

0x3fffd12

0x3fffd13

0x3fffd14 18

&toto vaut 0x3fffd14 (adresse du premier octet de toto)

Pour accéder à la valeur contenue dans une variable, on utilise tout simplement son
Nom. Mais il peut arriver qu'on veuille accéder à l'adresse d'une variable. Dans ce cas, on
Utilise l'opérateur d'adresse & (notation C) suivi du nom de la variable.

L'adresse contenue dans un pointeur est celle d'une variable qu'on appelle variable
pointée. On dit que le pointeur pointe sur la variable dont il contient l'adresse.

Par Ir Irenge Balolage Jean de Dieu


58

Un pointeur est associé à un type de variable sur lequel il peut pointer. Par exemple,
un pointeur sur entier ne peut pointer que sur des variables entières.
NB.:
• Un pointeur est lui-même une variable et à ce titre il possède une adresse.
• Il convient de ne pas confondre l'adresse de la variable pointeur et l'adresse
Contenue dans le pointeur (adresse de la variable pointée).

Toute variable manipulée dans un programme est stockée quelque part en mémoire
Centrale. Cette mémoire est constituée d’octets qui sont identifiés de
Manière univoque par un numéro qu’on appelle adresse.

P
P^
A

P : est une variable de type pointeur qui contient l’adresse de l’information A.

NB : Déréférencer un pointeur consiste à extraire la valeur de la variable sur


laquelle il Pointe.

a) déclaration d’un pointeur

Variable <Nom_pointeur> en pointeur sur <Type_Pointé>

Ex :Variable P en Pointeur Sur Entier

b) Notations

• P^ : désigne l’objet dont l’adresse est rangée dans le Pointeur P.

• P^.info Permet d’accéder à l’information de la variable Pointé.

P^.Suivant
• Permet d’accéder à l’élément suivant dans une Liste.

• Il est souvent nécessaire de distinguer si un pointeur désigne une variable ou n’en


indique aucun. Nous nous conviendrons de particulariser une valeur de type pointeur,
nous appellerons nil (Valeur d’adresse Nil).

• Si P1 et P2 sont des pointeurs

Par Ir Irenge Balolage Jean de Dieu


59

Si P1 pointe sur une Variable v de type T et on veut que p2 pointe sur la même variable v
de type T. on peut utiliser cette Notation.

P2  P1

Si P est un pointeur, et nous écrivons on indique que P ne désigne aucune variable.

Pnil
Si P ne contient pas de valeur nil on écrit

P ≠ nil

• désallouer P : Cette instruction n’efface pas le pointeur mais la variable pointée.

NB :

Si le Pointeur est de type T, il ne pointera que sur les variables de type T.

2.11.3 Les Listes Linéaires chaînés

2.11.3.1) Définition et Notion.

Une liste chaînée est une structure de données dans laquelle les objets sont arrangés
Linéairement, l’ordre linéaire étant déterminé par des pointeurs sur les éléments.

Une liste linéaire serait définie par une suite de cellules.


Une cellule est définie par deux champs : le premier champs indique le contenu de la cellule,
et le deuxième champs est une référence vers une autre cellule. Chaque cellule est associée
à une adresse dans la mémoire.

Contenu de la cellule

Adresse de l’élément Suivant

Chaque élément pointe, à l'aide de l'attribut suivant vers l'élément suivant dans la liste ; le
dernier élément, par définition, n'a pas de suivant, donc son attribut suivant vaut nil. Pour
manipuler une liste chaînée, on manipulera un simple pointeur sur le premier élément; comme
chaque élément « connaît » l'élément suivant, on peut ainsi accéder à tous les éléments de la

Par Ir Irenge Balolage Jean de Dieu


60

liste. Notons enfin que si le pointeur premier vaut nil, on considérera naturellement que la
liste est vide (elle ne contient aucun élément).

Par convention on notera Liste+ la suite des éléments contenus dans la liste dont l’adresse de
la première variable se trouve la variable liste.

Ex : La liste linéaire (a, b, c, d) est représenté par la liste chaînée


Liste

a b c d

2.11.3.2) Quelques notations


• Liste est vide, alors on note Liste=Nil ou Liste+= ( )
• Si liste+= (a, b, c, d,e)

Liste P

a b c d e

Alors , P – liste= (a,b) et P + liste= (c,d,e) , implique Liste+=P-//P+

P+ et P- sont des Sous listes de Liste+

2.11.3.3) Quelques algorithmes sur les listes

Pour pouvoir manipuler la liste nous supposons qu’on dispose des procédures suivantes :
• nouveau (L) crée une cellule et stocke une référence de type Pointeur de T dans L.
Cette cellule va contenir un élément de type T. T correspond au mot clé qui définit le
type. Quand on crée une cellule, les champs suivants est affecté à nil par default.
• laisser (L) détruit une cellule dont la référence est donnée dans L.
Nous remarquons qu’il est suffisant d’avoir la référence de la première cellule de la liste pour
pouvoir manipuler la liste entière et ceci en accédant au champ suivant.

a) Créer Liste

Nous proposons un algorithme qui crée une liste chaînée de longueur donnée à partir des
valeurs lues par l’utilisateur.

Procédure CreerListe (Nbrelement en entier, liste en Pointeur)

Par Ir Irenge Balolage Jean de Dieu


61

Variable P en pointeur sur Entier (*Création d’une variable de type pointeur qui va
nous aider à insérer les éléments dans la liste*)

Variable Elt_inserer en Entier (*Déclaration de la variable à insérer dans la liste*)


Variable compteur en Entier (*Déclaration d’une variable compteur*)
(*Initialisation de la liste à Nil et du compteur*)

Liste Nil
Compteur1

Tant que Compteur < =Nbrelement faire

Nouveau (P) (*Création d’un Nouveau pointeur*)

Ecrire " Entrer L’élément à Insérer dans la liste"


Lire Elt_inserer (*Creation d’un Nouveau pointeur*)

 Elt_inserer (*insertion de l’élément dans P*)


P^.info
 Liste (*Récupération de l’adresse de Liste*)
P^.Suivant

P
Liste
Compteurcompteur+1
Fintantque

Fin procédure

b) parcours de la liste

Nous supposons que nous disposons d’une procédure traiter qui traite une cellule en
connaissant sa référence. Nous présentons deux versions pour le parcours d’une liste de
gauche à droite.

Procédure parcours2 (Liste en Pointeur)


Tant que Liste ≠ nil faire
Traiter (Liste) (* On traite l’élément en cours de la Liste*)
Liste Liste^.suivant (* On Passe à l’élément suivant de la Liste*)

Fintantque

Fin procédure

c) Ecriture(Affichage) des éléments d’une Liste

Procédure EcrireListe(liste en Pointeur)


Tant que liste ≠ nil faire
Ecrire Liste^.info
Liste^.suivant
Fintant que

Par Ir Irenge Balolage Jean de Dieu


62

Finsi
Fin procédure
d) la longueur de la Liste

Fonction Longueur (liste en Pointeur) en entier


Variable compteur en entier
Compteur0
tantque liste ≠ nil faire
compteurcompteur+1
Liste Liste^.suivant
Fintantque
Renvoyer compteur
Fin Fonction

e) le nombre d’occurrence d’un élément dans une liste

Fonction nbcc (liste en Pointeur,Val en entier) en entier


Variable compteur en entier
Compteur0
tantque liste ≠ nil faire
si liste^.info=val alors
compteurcompteur+1
Finsi
Liste Liste^.suivant
Fintantque
Renvoyer compteur
Fin Fonction

f) L’insertion d’un élément dans une liste

• Insertion Entête de la liste


Soit un Elément de type T à inserer dans la Liste.

Procédure InserTete(liste en pointeur,Elément en T)


Variable P en pointeur
Nouveau (P) ;
P^.infoElément
P^.suivant Liste
ListeP
Fin Procédure

• Insertion à la fin de Liste

Procédure Insertfin(Liste en Pointeur ,elem en T)


Variable L,Der en Pointeur
Si liste =nil alors
InserTete (liste,elem)
Sinon
Derdernier (liste)

Par Ir Irenge Balolage Jean de Dieu


63

Nouveau (L)
L^.info elem
L^.suivantnil
Der^.suivantL
LDer
finsi
Fin procédure

g) Suppression

• Suppression au début de la liste


PROCEDURE supptête (liste en pointeur)
Variable L en Pointeur
LListe
Liste L^.suivant (* Le Pointeur Pointe Sur le 2ième élément* )
Laisser (L)
Fin Procédure

• Suppression Par Position

Soit refk est une fonction qui renvoie la référence de la cellule numéro k si elle existe
PROCEDURE suppPosition (liste en Pointeur, Position en ENTIER)

VARIABLES L, preced en Pointeur


SI Position=1 ALORS
supptête(liste)
SINON
preced  refk(liste, Position -1)
SI preced <> nil ALORS
Lpreced^.suivant
FinSi
SI L<>nil ALORS
possible  V RAI

Par Ir Irenge Balolage Jean de Dieu


64

preced ^.suivantL^.suivant
laisser(L)
FIN SI
Fin Procedure

e) Trouver la référence du dernier élément dans une liste

Fonction Dernier (liste en Pointeur) en Pointeur


Variable L en pointeur
Lliste
tantque L^.suivant≠nil faire
LL^.suivant
Fintantque
Renvoyer L
Fin Fonction
N.B

Une Liste chaînée est dit bidirectionnelle s’il est parcouru dans les deux directions du
premier élément au dernier et réciproquement. La chaîne bidirectionnelle est peu utilisé car
elle est coûteuse en temps d’exécution.

2.11.4 Piles
a)Notion

Les Piles ne servent généralement pas à garder de façon plus ou mois définitives les
informations. On s’intéresse plutôt à la suite des états de la pile et on utilise le dernier élément

Par Ir Irenge Balolage Jean de Dieu


65

à ajouter se trouvant au sommet de la pile. Une pile est une structure de données mettant en
oeuvre le principe « dernier entré, premier

sorti» (LIFO : Last-In, First-Out en anglais).

La structure des piles est utilisée pour sauvegarder temporairement les informations.
En respectant leurs ordres d’entrée et la réutilisation en ordre inverse.
Sommet

Base
B
b) Primitive d’accès et Fonctionnement des piles

Le dernier élément de la pile est appelé Base de la Pile et son Premier élément est appelé
sommet de Pile. Dans la pratique la Pile est constitué d’un nombre fini d’éléments qui
correspond à la taille maximale de la Pile.

• On parle du débordement de la pile lorsque sa taille maximale est atteinte. Les


ajouts s’arrêtent.

• Les suppressions s’arrêtent lorsque la Pile devient vide.

• On définit généralement les 2 primitives :

o Empiler (Val) qui ajoute un élément val au sommet de la Pile.

o Dépiler (Val) qui Supprime un élément val au sommet de la Pile.

En général, la variable qui permet l’accès au sommet d’une pile ainsi que la pile elle-même
sont des variables globales.

• On peut définir d’autres primitives qui facilitent l’utilisation d’une Pile elle-même

o Sommet qui le point de remplissage de la Pile.

o MaxPile la taille Maximale de la pile. Cette variable détermine la taille de la


zone mémoire réservé à la Pile.

o 2 prédicats permettant de tester le sur et le sous dépassement de la Pile dont :

 PileVide vrai si la pile est vide

 Pilepleine vrai si la pile est pleine

• Exemples des Procédures Empiler et dépiler

Par Ir Irenge Balolage Jean de Dieu


66

Soit Val de Type quelconque T

Procédure Empiler Procédure Dépiler

Procédure empiler (Val en T) Procédure dépiler ()

Si PilePleine alors Variable Val en T

Ecrire"La pile est vide" Si PileVide alors

sinon Ecrire"La pile est vide"

Sommetsommet+1 Sinon

Pile [sommet]val Val Pile [sommet]

Finsi Sommet sommet-1

Fin procédure Finsi

Fin procédure

Exemple Applicatif ;

Soit la pile suivante

Adr 1 2 3 4 5 6 7 8 9 10

X Z G T A PILE

a)Quelles sont les variables sommet et Maxpile ?

b) Que devient la pile après l’ajout de la lettre B ?

c) Que devient la pile après l’ajout de la lettre S ?

d) Que devient la Pile après la suppression d’un élément ?

Par Ir Irenge Balolage Jean de Dieu


67

a) sommet=5 et Maxpile=10

b) sommet=6 et Maxpile=10

Adr 1 2 3 4 5 6 7 8 9 10

X Z G T A B PILE

c) sommet=7 et Maxpile=10

Adr 1 2 3 4 5 6 7 8 9 10

X Z G T A B S PILE

d) sommet=6 et Maxpile=10

2.11.5 Les Files Simples

Une file est une structure de données mettant en oeuvre le principe « premier entré, premier
sorti» (FIFO : First-In, First-Out en anglais).
Une file d’attente est une liste d’éléments telle que les suppressions ne peuvent être effectué
Qu’à une de ses extrémités appelé TETE, les insertions à l’autre extrémité appelé Queue.
Par exemple, elle modélise la file d’attente des clients devant un guichet, les travaux en
attente d’exécution dans un système de traitement par
lots, ou encore les messages en attente dans un commutateur de réseau téléphonique. On
retrouve également les files d’attente dans les programmes de traitement de transactions telle
que les réservations de sièges d’avion ou de billets de théâtre.

NB:
• Comportement d'une pile: Last In First Out (LIFO)
• Comportement d'une file: First In First Out (FIFO)
• Les opérations primitives sur une file sont DÉFILER pour le retrait d’un élément et
ENFILER pour l’ajout d’un élément.
• L'opération DÉFILER ne peut s’effectuer sur une file vide. Il faudra donc utiliser une
opération FILEVIDE qui permet de tester si une file est vide ou pas.

2.11.6 Les arbres


a) Notion

La structure d'arbre est très utilisée en informatique. Sur le fond on peut considérer un arbre
Comme une généralisation d'une liste car les listes peuvent être représentées par des arbres.
La Complexité des algorithmes d'insertion de suppression ou de recherche est généralement
plus faible que dans le cas des listes (cas particulier des arbres équilibrés).
Lorsqu'un sommet est distingué par rapport aux autres, on le dénomme racine et la même

Par Ir Irenge Balolage Jean de Dieu


68

Structure d'arbre s'appelle une arborescence, par abus de langage nous utiliserons le vocable
arbre pour une arborescence.

b) Vocabulaire employé sur les arbres


Un arbre dont tous les noeuds sont nommés est dit étiqueté. L'étiquette
(ou nom du sommet) représente la "valeur" du noeud ou bien
L’information associée au noeud.
Ci-dessous un arbre étiqueté dans les entiers entre 1 et 10 :

• Racine , noeud, branche , feuille

Quelques Définitions

• Un noeud

Un nœud appelé aussi sommet, contient un élément et indique les nœuds suivants.

• La Racine

Par Ir Irenge Balolage Jean de Dieu


69

La racine d'un arbre est le noeud initial, tous les autres noeuds de l'arbre suivent
directement ou indirectement la racine

• Une feuille

Une feuille est un nœud qui n' a pas de suivant.

• Une Branche

Une Branche est un chemin qui rejoint deux nœuds.

• Hauteur d’un Nœud

Nous conviendrons de définir la hauteur (ou profondeur ) d'un noeud X comme égale au
nombre de noeuds à partir de la racine pour aller jusqu'au noeud X.
En reprenant l'arbre précédant et en notant h la fonction hauteur d'un noeud :

Pour atteindre le noeud étiqueté 9 , il faut parcourir le lien 1--5, puis 5--8, puis enfin 8--9
soient 4 noeuds donc 9 est de profondeur ou de hauteur égale à 4, soit h(9) = 4. Pour atteindre
le noeud étiqueté 7, il faut parcourir le lien 1--4, et enfin 4--7, donc 7 est de profondeur ou de
Hauteur égale à 3, soit h(7) = 3.

Par définition la hauteur de la racine est égale à 1.


h(racine) =1 (pour tout arbre non vide)

• Chemin d'un nœud


On appelle chemin du noeud X la suite des noeuds par lesquels il faut passer pour aller de la
racine vers le noeud X.

Par Ir Irenge Balolage Jean de Dieu


70

Chemin du noeud 10 = (1, 5, 8,10)


Chemin du noeud 9 = (1, 5, 8,9)
.....
Chemin du noeud 7 = (1,4,7)
Chemin du noeud 5 = (1,5)
Chemin du noeud 1 = (1)
Remarquons que la hauteur h d'un noeud X est égale au nombre de noeuds dans le chemin :

• Parents, enfants, Noeuds frères, ancêtres

On parle aussi d'ascendant, de descendant ou de fils pour évoquer des relations entres les
Noeuds d'un même arbre reliés entre eux.

• Hauteur d'un noeud (récursif)


Nous pouvons définir récursivement la hauteur h d'un noeud X à partir de celle de son
parent :
h (racine) = 1;
h ( X ) = 1+ h ( parent ( X ) )

Partant de Notre arbre


h(9) = 1+h(8)= 1+3=4
h(8) = 1+h(5) )= 1+1=3
h(5) = 1+h(1) )= 1+1=2
h(1) = 1
• Degré d'un nœud
Par définition le degré d'un noeud est égal au nombre de ses descendants (enfants).
Soient les deux exemples ci-dessous extraits de l'arbre précédent :

Par Ir Irenge Balolage Jean de Dieu


71

Remarque
lorsqu'un arbre a tous ses noeuds de degré 1, on le nomme arbre dégénéré et que c'est
en fait une liste.
• Hauteur d'un arbre
Par définition c'est le nombre de noeuds du chemin le plus long dans l'arbre. On dit aussi
profondeur de l'arbre.
h (Arbre) = max { h ( X ) / ∀ X, X noeud de Arbre } si Arbre = ∅ alors h( Arbre ) = 0

La hauteur de l'arbre ci-dessous :

• Degré d'un arbre


Le degré d'un arbre est égal au plus grand des degrés
de ses noeuds :
d°(Arbre) = max { d°( X ) / ∀ X, X noeud de Arbre }
Soit à répertorier dans l'arbre ci-dessous le degré de chacun des noeuds :

La valeur maximale est 4 , donc cet arbre est de degré 4.

• Taille d'un arbre

Par Ir Irenge Balolage Jean de Dieu


72

On appelle taille d'un arbre le nombre total de nœuds de cet arbre :

c) Les arbres Binaires

Un arbre binaire est un arbre de degré 2 (dont les noeuds sont de degré 2 au plus).
L'arbre abstrait de l'expression a*b + c-(d+e) est un arbre binaire :

Les descendants (enfants) d'un noeud sont lus de gauche à droite et sont appelés
Respectivement fils gauche (descendant gauche) et fils droit (descendant droit) de ce noeud.

Les arbres binaires sont utilisés dans de très nombreuses activités informatiques.

Par Ir Irenge Balolage Jean de Dieu


73

e) exemple Arbres Binaires

Exemple 1 « 327-8 ».

Exemple 2
Examen de la situation pour le mot 2+5*4 :
• Arbre-5 s’interprète :(2+5)*4

+ 4

2 5

• Arbre-6 s’interprète : 2+ (5*4)


+

2 *

5 2

Les opérateurs + et * n’ont pas la même priorité. Nous obtenons deux expressions différentes
Selon le choix de l’arbre.

d) Parcours d'Arbre
Il existe 4 techniques pour parcourir l'ensemble des valeurs d'un arbre.
Le parcours en Profondeur avec 3 techniques et le parcours en largeur l'autre
technique.
d.1 le parcours en Profondeur
Tous les Noeuds de l'arbre sont atteints branche par branche dans toute leur profondeur. le
trois type de parcours en profondeur sont le parcours préfixé, Infixé et Postfixe.

Par Ir Irenge Balolage Jean de Dieu


74

Dans le 3 méthodes, les branches gauches puis droites sont scannées récursivement. La
Différence apparait au moment de faire le traitement des noeuds visités: le traitement se fait
avant la visite des deux sous-arbres pour le parcours préfixé, après pour le parcours postfixé
et entre les deux pour le parcours infixé.

parcours Ordre de Parcours


Préfixe Racine, Sous-Arbre Gauche,Sous-Arbre
Droit
Infixé Sous-Arbre Gauche, Racine,Sous-Arbre
Droit
Postfixé ou Suffixé Sous-Arbre Gauche,Sous-Arbre Droit,
Racine

d.2.Le parcours en Largeur


Tous les nœuds de l'arbre sont atteints depuis la racine,puis couche par couche de gauche à
droite. Le schéma ci-dessous représente l'ordre de parcours des noeuds de l'arbre.

2.11.7 Les Fichiers


a) définition et Notion

Un fichier est une collection d’information, structurée en unités d’accès appelés Articles (Ou
enregistrements).

Un enregistrement est un type de données défini par l'utilisateur et qui permet de


grouper un nombre fini d'éléments (ou champs) de types éventuellement différents.

Les objets que nous avons déjà décrits jusqu’ici n’ont qu’une durée brève : Leur existence se
limite à la période d’exécution du programme. Pourtant il y a de très nombreuse application
pour lesquelles les informations traitées doivent être conservés bien au delà de la durée
d’exécution du programme de traitement.

La notion de fichier est conçue pour répondre aux impératifs :

• Stockage permanent de l’information ;

• Rassemblement d’un volume d’informations pouvant être fractionnées pour le


traitement.

Par Ir Irenge Balolage Jean de Dieu


75

Un fichier est toujours enregistré sur un support externe à la mémoire centrale et tout
programme de traitement échangera des informations avec le fichier, l’unité d’accès étant
l’article : on lira le fichier article par article. On l’écrira article par article.

NB :

On distingue deux catégories de supports :

• Les supports séquentiels

Sur les quels les informations sont écrites les unes des autres et qui sont tels que l’accès à
une information i nécessite le passage sur toutes les informations qui précèdent i sur le
support.

Exemple : La bande magnetique

• Les supports adressables

Qui sont structurés en surfaces d’enregistrement individuellement adressables : Les


informations qui y sont enregistrées peuvent être retrouvées directement grâce à leur adresse
sans que l’on ait à passer par des enregistrements intermédiaires.

Exemple : Le disque dur

b) Association d’un fichier à un programme

Un fichier F est identifié de manière externe par un nom externe qui lui est attaché .Il peut
exister plusieurs programmes de traitement de F et dans l’environnement de chacun d’eux F
est décrit avec un nom interne qui n’a général aucun rapport avec le nom externe. En effet le
programmeur ne connaît pas le nom externe du fichier qui sera traité.

c) Accès au Fichier

On appelle mode d'accès à un fichier la façon de retrouver une donnée dans ce fichier.
Selon les impératifs du traitement, on utilise deux techniques d’accès aux articles d’un
fichier :

Avec l’accès Séquentiel

On accède au fichier dans l’ordre d’enregistrement des articles. Possible sur tous les
types de support et avec tous les types de fichiers . pour accéder à un article particulier,
on doit avoir parcouru tous les articles précédents sur le support.

Avec l’accès sélective (l'accès direct)

On accède directement aux articles particuliers sans passer par des articles
intermédiaires ; cet accès n’est possible qu’avec des supports adresses.

Un fichier peut être vide : Dans ce cas il se réduit à sa marque de fin de fichier.

Par Ir Irenge Balolage Jean de Dieu


76

d) Organisation des fichiers

L’organisation d’un fichier définit la manière dont les articles sont disposés sur le support.

On distingue trois organisations principales:

• L’organisation séquentielle qui permet un accès séquentiel

• L’organisation directe conçu pour l’accès sélectif

• L’Organisation séquentielle indexé qui permet l’accès séquentiel et l’accès secletif

e) Ouverture et Fermeture du fichier

Si F est le nom interne du fichier, nous noterons Ouvrir (F) la primitive qui permet de débuter
le traitement. Au moment de traitement du fichier, un programme doit s’assurer du control
de ce fichier à l’aide d’une primitive d’ouverture du fichier.

Le rôle de cette correspondance est :

• D’établir la correspondance entre le nom interne et externe

• D’assurer au programme le contrôle du fichier

• D’effectuer le positionnement de lecture /écriture sur le support de fichier.

Enfin de traitement, le programme qu’il n’a plus besoin du fichier F en effectuant la fermeture
de F, au moyen de la primitive Fermer (F).

L’exécution d’une telle primitive :

• Complète le fichier par une marque de fin de fichier dans le cas où le traitement était
une création de fichier

• Abandonne le contrôle du fichier en indiquant au processeur que le programme n’a


plus besoin du fichier et que ce dernier est donc disponible pour être traité par d’autres
programmes.

L’exécution des primitives d’ouverture et de fermeture est généralement accompagnée par


les commandes, extérieurs au programme et particulières au système d’exploitation.

f) Les Fichiers à accès séquentiels

Un fichier séquentiel est un fichier dont les données ne sont accessibles que de manière
consécutive sur le support. Leur accès est donc séquentiel. Contrairement aux éléments d'un
tableau les données d'un fichier séquentiel ne sont pas accessible directement, ni par un

Par Ir Irenge Balolage Jean de Dieu


77

indice, ni par un nom. Pour accéder à un enregistrement particulier, il faut parcourir le fichier
séquentiel depuis le début jusqu'à trouver l'enregistrement recherché.
On peut se représenter un fichier séquentiel comme une bande de papier contenant des articles
cotes à cotes. Cette bande défile sous une tête de lecture qui ne peut lire qu’un seul article à la
fois. Pour accéder à un article, on est obligé de positionner la tête de lecture sur cet article, en
faisant défiler la bande en dessous.

1. Déclaration

Dans un programme, un fichier est désigné par une variable, qu'on déclare dans la section des
variable (C'est une variable particulière qui ne représente pas un espace de la mémoire mais
qui représente un espace dans un périphérique de stockage).
Pour déclarer un fichier séquentiel structuré, il faut indiquer le type des articles (enregistrements)
qui composent ce fichier. Le plus souvent les articles sont de type enregistrement, déclaré au
préalable.

Variable nom_fichier : fichier séquentiel de type_articles

Déclaration d’une structure ENREGISTREMENT

En algorithmique
Type
Nom_type = Enregistrement

champ 1 : Type 1
----
champ n : Type n

Fin Enregistrement

Exemple
Type

temployé = enregistrement
nom en caractère
prénom en caractère
fonction en caractère
salaire en Numérique
finenreg

Variable personnel : fichier séquentiel de temployé

2. Ouverture et Fermeture

Par Ir Irenge Balolage Jean de Dieu


78

Comme un fichier ne se trouve pas en mémoire centrale (mais en périphérique), il n'est pas
accessible directement par le programme (seule la mémoire centrale est accessible directement). Il
est nécessaire de l'ouvrir avant de pouvoir l'utiliser. L'ouverture permet la réservation d'une
mémoire tampon en mémoire centrale pour les échanges entre le disque et la mémoire centrale.
Il existe 3 modes principaux d'ouverture d'un fichier:
- en lecture pour récupérer des données du fichier dans des variables de la mémoire centrale
- en écriture pour créer un fichier dans lequel enregistrer des résultats. Si fichier existe déjà,
son ancien contenu est détruit
- en mode ajout pour pouvoir ajouter des articles à la fin d'un fichier déjà existant (dans un
fichier séquentiel, il est impossible d'ajouter un article ailleurs qu'à la fin)
Ouvrir nom_fichier en mode_ouverture

Ex: Ouvrir personnel en lecture

Après utilisation, un fichier doit être fermé, de façon à libérer la mémoire tampon allouée lors de
L’ouverture et ainsi enregistrer les dernières données du tampon non encore transférées.

Fermer nom_fichier

Remarque : Dans les fichiers à accès direct, il existe un autre mode d’ouverture : le mode mise à
jour. Il Permet de modifier un article existant, ou même d’ajouter un nouvel article au milieu du
fichier. Ces opérations sont impossibles directement avec les fichiers à organisation séquentielle.

Rappelons que L'ouverture permet d'effectuer la liaison entre le fichier logique (la variable du programme) et
le fichier physique manipulé par le système d'exploitation.

3. Lecture et écriture

La communication entre la mémoire centrale et le fichier peut se faire dans les deux sens:
 de la mémoire au fichier : c'est l'écriture
 ou du fichier vers la mémoire : c'est la lecture

a) Lire

L'instruction Lire permet de transférer des articles d'un fichier existant dans une (ou plusieurs)
variable du programme. La variable lue doit obligatoirement être de même structure (c'est-à-
dire du même type) que les articles du fichier. Le fichier lu doit obligatoirement exister.
Si un seul fichier est ouvert, on peut omettre d'indiquer le nom du fichier sur lequel on lit. En
revanche, si plusieurs fichiers sont ouverts simultanément, il faut obligatoirement préciser sur
quel fichier on lit.

Lire (nom_fichier, nom_variable )


Ou
Lire nom_variable s’il n’y a qu’un seul fichier ouvert

*la variable est du même type que les articles

Par Ir Irenge Balolage Jean de Dieu


79

ex:
Recopier dans la variable ouvrier les informations contenues dans l'article suivant
/* ouvrier est un enregistrement de type temployé*/

Lire (Personnel, ouvrier)


Si on essaye de lire après la fin du fichier, il va y avoir une erreur d'exécution. Pour éviter
cela, il existe une fonction booléenne appelée EOF( ) (pour end of file) qui renvoie vrai
lorsque la tête de lecture est en face d' une marque de fin de fichier. Eof ( ) devient Vrai
lorsqu'on lit après le dernier article. Si plusieurs fichiers sont ouverts, on passe en paramètre
le nom du fichier pour lequel on veut tester la fin. Donc avant toute opération de lecture, il
faut s'assurer que la fin du fichier n'est pas atteinte.

ex:
Si non eof( ) Alors
Lire (Personnel, ouvrier)
Sinon
ECRIRE "Fin de fichier atteinte"
FinSi

Tantque non eof()


/*traitement sur l'article*/
Lire …
FinTantque

b) Ecrire

L'instruction Ecrire permet de recopier le contenu d'une variable (contenue en mémoire


centrale) à la fin du fichier (au premier article vide). Ecrire permet donc soit de créer un
nouveau fichier (en mode écriture), soit d'agrandir un fichier en lui ajoutant un article à la fin
(en mode ajout).
L'écriture se fait article par article. Donc la variable écrite dans le fichier doit obligatoirement être
du Type des articles.
Ecrire (nom_fichier, nom_variable ) *la variable est du type des articles
Ou
Ecrire nom_variable s’il n’y a qu’un seul fichier ouvert

Par Ir Irenge Balolage Jean de Dieu


80

ex:
Variable empl en temploye
Début
empl.nom  "Dupont"
empl.prenom  "Jean"
……….
Ecrire (Personnel, empl)

………..

Fin

NB :
Dans un fichier séquentiel, il est impossible de modifier directement un article, encore moins
d’ajouter un nouvel article ailleurs qu’à la fin, et non plus de supprimer physiquement un article.
Ces opérations de mise à jour ne peuvent se faire qu’en réécrivant complètement le fichier. La
mise à jour directe n’est possible qu’avec les fichiers à accès direct.

c) Exemple complet Programme comptes_clients

Type
tcompte = enregistrement
num en entier
état en caractère (*N pour normal, I pour impayé, C pour contentieux*)
Solde en réel
Finenreg

Variable compte en tcompte


Variable cpteclt : fichier séquentiel de tcompte
Variable rep en caractère
Variable n, i en entier

Début
(* création et remplissage du fichier *)
Ouvrir cpteclt en écriture
(*on saisit les informations sur les clients et on les écrit dans le fichier*)
Répéter
(* on saisit les champs de l'enregistrement*)
ECRIRE"Entrer Numéro?"
Saisir compte.num
ECRIRE" Entrer etat?"
LIRE compte.etat
ECRIRE" Entrer solde?"
LIRE compte.solde
ECRIRE"Autre compte? (O/N)"
LIRE rep
(*on recopie l'enregistrement dans le premier article vide du fichier*)
Ecrire (cpteclt, compte)
Jusqu'à rep ≠ "N"
Fermer cpteclt

Par Ir Irenge Balolage Jean de Dieu


81

(* La lecture des articles du fichier *)


Ouvrir cpteclt en lecture
(* On lit les articles et les affiche tant qu'on a pas atteint la fin du fichier*)
Tantque non eof(cpteclt) Faire
(* récupérer l'article courant dans l'enregistrement en mémoire centrale*)
Lire (cpteclt,compte)
(* afficher les champ de l'enregistrement*)
ECRIRE "Numéro: ", compte.num
ECRIRE "Solde: ", compte.solde
ECRIRE "Etat:", compte.etat
FinTantque
Fermer cpteclt

(* ajout d'un compte client à la fin du fichier *)


Ouvrir cpteclt en mode ajout
(* on saisit un enregistrement correspondant à l'article à ajouter*)
ECRIRE "Numéro?"
Lire compte.num
ECRIRE "etat?"
Lire compte.etat
ECRIRE "solde?"
Lire compte.solde
Ecrire (cpteclt, compte)
ECRIRE "Autre compte? (O/N)"
Lire rep
(*on recopie l'enregistrement sur le fichier*)
FIN

Par Ir Irenge Balolage Jean de Dieu


82

CHAP III. INTRODUCTION A LA PROGRAMMATION ORIENTEE


OBJET

Notion
La programmation classique telle que étudiée au travers des langages C, Pascal… définie un
programme Comme étant un ensemble de données sur lesquelles agissent des procédures et
des fonctions. Les données constituent la partie passive du programme. Les procédures et les
fonctions constituent la partie active.
Programmer dans ce cas revenait à :
- définir un certain nombre de variables (structures, tableaux…)
- écrire des procédures pour les manipuler sans associer explicitement les unes aux autres.
Exécuter un programme se réduit alors à appeler ces procédures dans un ordre décrit par le
séquençage des instructions et en leur fournissant les données nécessaires à
l’accomplissement de leurs tâches.

Dans cette approche données et procédures sont traitées indépendamment les unes des autres
sans tenir Compte des relations étroites qui les unissent. Les fonctions, procédures et autres
suites d’instructions accèdent à une zone où sont stockées les données. Il y a donc une
dissociation entre les données et les fonctions se qui pose des difficultés lorsque l’on désire
changer les structures de données. Dans les langages procéduraux, les procédures s’appellent
entre elles et peuvent donc agir sur les mêmes données provoquant ainsi des effets de bord.
De ces problèmes sont issus une autre manière de programmer : la programmation par objet.

En approche objet, l’évolution des besoins aura le plus souvent tendance à se présenter
comme un changement de l’interaction des objets. S’il faut apporter une modification aux
données, seul l’objet Incriminé (encapsulant cette donnée) sera modifié. Toutes les fonctions à
modifier sont bien identifiées : elles se trouvent dans ce même objet : ce sont ses méthodes.
Dans une approche structurée, l’évolution des besoins entraîne souvent une dégénérescence,

Par Ir Irenge Balolage Jean de Dieu


83

ou une profonde remise en question, car la décomposition des unités de traitements (du
programme principal aux sous fonctions) est directement dictée par ces besoins. D’autre part,
une modification des données entraîne généralement une modification d’un nombre important
de fonctions éparpillées et difficiles à identifier dans la hiérarchie de cette décomposition.

3. 1. les Classes
a) Notion
une classe définit la structure des données particulières ainsi que les données permettant de la
manipuler.
Une classe peut être considérée comme un moule à partir duquel on peut créer des objets.
Une classe décrit la structure interne d'un objet : les données qu'il regroupe, les actions qu'il
est capable d'assurer sur ses données. A partir d’une classe, sont Engendrés les objets réels
qui s’appellent des instances de la classe considérée.
Une classe est un ensemble d’objets qui ont en commun :
- les mêmes méthodes
- les mêmes types d’attributs

b) Contenue de la Classe
b.1 Une classe contient :
• Des attributs (ou champs, ou variables d’instances).
L'attribut est definit comme etant la variable interne à la classe.

Par Ir Irenge Balolage Jean de Dieu


84

Les attributs de la classe décrivent la structure de ses instances (les objets).


• Des méthodes (ou opérations de la classe).
Une méthode est définit comme une fonction ou une procédure associée à une
classe.
Les méthodes décrivent les opérations qui sont applicables aux instances de la classe.
Les attributs et les méthodes d'une classe sont des membres de la classe.
NB:
Un attribut ou une méthode sont dits privés si leur utilisation est interdite en dehors de
la classe. Le signe caractérisant le caractère privé d'un attribut est le signe moins"-"
dans le Diagramme de classe.
Un attribut ou une méthode sont dits publics si leur utilisation est autorisé en dehors
de la classe. Le signe caractérisant le caractère privé d'un attribut est le signe plus"+"
dans le Diagramme de classe.

En POO, programmer revient donc à décrire des classes d’objets, à caractériser leur
structure et leur comportement, puis à instancier ces classes pour créer des objets réels. Un
objet réel est matérialisé dans l’ordinateur par une zone de mémoire que les données et son
code occupent.

Par Ir Irenge Balolage Jean de Dieu


85

c) Structure de création d'une classe

NB: Il sera possible d'écrire les instructions à l'extérieur de la déclaration de la classe, en


précisant évidement le nom de la classe.

Par Ir Irenge Balolage Jean de Dieu


86

d) Visibilité de la Classe
• public : la classe pourra être utilisée dans tout votre projet.
• private : La classe ne peut être utilisée que dans le module dans lequel elle est
définie
• protected La classe ne peut être utilisé dans la sous-classe de celle de laquelle elle
est définie.
• Etc
NB : Les termes Classe et Objet sont souvent confondus mais il s’agit, en fait d’éléments
distincts. Une classe représente la structure d’un élément alors que l’objet est un exemplaire
créé sur le modèle de cette structure.

3.2 Les objets

Un objet représente une entité du monde réel, ou de monde virtuel dans le cas d’objets
immatériels, qui se caractérisent par une identité, des états significatifs et par un
comportement.
Un objet est caractérisé par plusieurs notions :

Par Ir Irenge Balolage Jean de Dieu


87

L’identité – L’objet possède une identité, qui permet de le distinguer des autres objets. On
construit généralement cette identité grâce à un identifiant découlant naturellement du
problème (par exemple un produit pourra être repéré par un code, une voiture par un numéro
de série, etc.)
Les attributs – Il s’agit des données caractérisant l’objet. Ce sont des variables stockant
des informations, sur l’état de l’objet. Une propriété est soit un attribut (une donnée
caractérisant l’état de l’objet, entité élémentaire comportementale de l’objet).
Les méthodes – Les méthodes d’un objet caractérisent son comportement, c’est-à-dire
l’ensemble des actions (appelées opérations) que l’objet est à même de réaliser. Ces
opérations permettent de faire réagir l’objet aux sollicitations extérieures (ou d’agir sur les
autres objets). De plus, les opérations sont étroitement liées aux attributs, car leurs actions
peuvent dépendre des valeurs des attributs, ou bien les modifier.

Il est possible que plusieurs variables références une même Instance

Algorithme Deux-Variables-Pour-Une-date
Variables : d1,d2: Date
début
d1 new date(23,4,2003)
d2 d1
Fin

3.3 Les constructeurs

Le constructeur est appelé pour construire une instance de la classe. L'objectif d'un
constructeur est d'initialiser tous les attributs. Une Classe peut posséder plusieurs
constructeurs(Portant le même nom) mais ayant des paramètres différents. Un
constructeur ne retourne jamais de valeur, même Vide.
Les constructeurs sont des méthodes particulières d’une classe par différents aspects. Le
constructeur est une méthode portant toujours le même nom que la classe elle-même.

Par Ir Irenge Balolage Jean de Dieu


88

Il n’est jamais appelé explicitement dans le code mais de manière implicite à la création
de l’instance de la classe.
Le Rôle du constructeur est principalement d’initialiser des champs d’une instance
des classe.
NB :
Comme toute méthode classique, un constructeur peut attendre des paramètres.
Le constructeur qui n’attend pas de paramètre est désigné comme le
constructeur par défaut.

Le Deuxième constructeur Possède 3 entiers en paramètres respectivement le jour, le


mois et l'année

Algorithme d'utilisation d'un constructeur

Par Ir Irenge Balolage Jean de Dieu


89

L'Opérateur New crée un objet

si la classe est déjà créé et l'identificateur de l'instance est connu pour


l'algorithme. Il est alors nécessaire de créer effectivement cet objet, de lui
allouer de la place mémoire.

Variable new nomDelaClasse()

Variable new nomDelaClasse(Paramètres)

3.4 l’héritage

La notion d’héritage est une relation entre différentes classes permettant de définir une
nouvelle classe en se basant sur les classes existantes. On parle d’héritage simple lorsqu’une
classe fille ne possède qu’une classe mère. On parle d’héritage multiple lorsqu’une classe
fille possède plusieurs classes filles.
L’héritage est un mécanisme de transmission des propriétés d’une classe (ses attributs et
méthodes) vers une sous-classe.

Par Ir Irenge Balolage Jean de Dieu


90

NB:
L'Héritage, ou la Notion de Généralisation, précise pour deux classes que l'une est
spécialisé de l'autre: elle possède l'ensemble des attributs et des méthodes de la
première plus les siens propres.
Classe mère ou super Classe ou Classe parent ou classe de Base
Une Classe mère appelé aussi super classe est la classe qui léguera l'ensemble de ses
propretés par héritage
Classe Fille Ou sous classe ou Classe dérivée
Les méthodes et les attributs privés des classes de base sont aussi hérités par les
classes dérivées mais inaccessibles.

Une classe fille appelé aussi sous-classe est une nouvelle classe ayant acquis par
définition de l'héritage tous les attributs et toutes les méthodes de la classe mère. les
classes filles "Spécialisent" la classe mère.

Par Ir Irenge Balolage Jean de Dieu


91

L'Opérateur super
L'operateur super permet d'accéder depuis la classe fille aux attributs et aux
méthodes(non Privés) de la classe mère.

Le Protégé
Une nouvelle visibilité apparait avec l'héritage. L’Attribut et la méthode protégés sont
publics pour les classes filles (qui pourra donc les utiliser directement), et privés pour
les autres classes et algorithmes. Les méthodes et les attributs protégés seront
précédés par le symbole #
Une Classe abstraite
Une classe abstraite ne peut pas être instancié. Elle est conçu dans le but de construire
un ou des héritages.
Structure de Création de la classe Abstraite:

Par Ir Irenge Balolage Jean de Dieu


92

classe abstraite Nom_Classe


Début
..... // attributs et méthodes
Fin

Exemples : Soit la Classe Etudiant ayant comme champ (coteMath) héritant de la


classe personne ayant comme champs(nom,prenom,age)

Classe Personne

Variables: Nom, Prénom : Chaine

Variable : Age : Entier

Début

(*Ecriture des méthodes constructeurs*)

Personne ()

Début

Nom « BAHATI »

Prénom « JEAN »

Age 10

Fin

Personne (nomPers,prenomPers :Chaine,agePers :Entier)

Début

Nom nomPers

Prénom prenomPers

Age agePers

Fin

Personne (Pers :Personne)

Début

Me.Nom Pers.Nom

Me.Prénom Pers.Prenom

Pers.AgeJean de Dieu
Par Ir Irenge Balolage
Me.Age

Fin
93variables privées nom, Age et Prénom des valeurs et
(*Ecriture des méthodes permettant d’attribuer aux
des méthodes permettant de les afficher*)

(*méthodes pour Attribuer l’ Attribut Privée Age une valeur )

setAge (A:Entier)

Début

Si(A>0) alors

Age A

Sinon

Age 0

Fin si

Fin

(*méthodes pour Renvoyer Age)

getAge () : Entier

Début

Renvoyer Age

Fin

(*méthodes pour Attribuer aux attributs Privées nom et prénom des valeurs)

setNomPrenom (nomP,prenomP: Chaine)

Début

Nom nomP

Prénom prenomP

Fin

getNom () : Chaine

Début

Renvoyer Nom

Fin

getPrenom () : Chaine

Début

Renvoyer Prenom

Fin
Par Ir Irenge Balolage Jean de Dieu
94

Fin

Classe Personne Comporte methode AfficherIdentite ()

Début

Ecirire Nom

Ecirire Prénom

Ecirire Age

Fin

(*Ecriture des classes dérivées Salarie et Etudiant *)

Classe Etudiant spécialise Classe Personne

Variable CoteMath : Réel

(*Construteur de la Classe Etudiant*)

Etudiant()

Début

Super()

CoteMath 0

Fin

setCoteMath (CoteM:Reel)

Début

Si(CoteM >=0) alors

CoteMath CoteM

Sinon

CoteMath 0

Fin si

Fin

(*méthodes pour Renvoyer CoteMath )

getCoteMath () : Réel

Début

Renvoyer CoteMath

Fin
Par Ir Irenge Balolage Jean de Dieu
95

Classe Etudiant Comporte methode afficherCote()

Debut

Super.AfficherIdentite()

ECRIRE Me. getCoteMath ()

Fin

Algorithme AppelPersonne

Variables P1, P2 : Personne

Variable E1 :ETudiant

Début

P1 new Personne ()

P1.AfficherIdentite()

(*Comme le nom, le prénom et l’ âge n’ont pas été initialise on appelle implicitement le constructeur
par défaut Personne )

(* Résultat : BAHATI JEAN 10 *)

P2 new Personne ()

(* On Attribue des valeurs aux variables privées et On renvoie leurs valeurs au travers des méthodes
qui sont publiques)

P2.setNom(“IMANI”)

P2.setPrenom(“PRINCE”)

P2.setAge(28)

Ecrire P1.getNom()

Ecrire P1. getPrenom()

Ecrire P1. getAge()

(* Résultat : IMANI PRINCE 28 *)

Par Ir Irenge Balolage Jean de Dieu


96

E1 new Personne()

E1. setCoteMath(10)

E1.setNom(“ZAWADI”)

E1.setPrenom(“GRACE”)

E1.setAge(22)

E1. afficherCote()

(* E1 accède aux Méthodes de la classe de base car ils les héritent *)

(* Résultat : ZAWADI GRACE 22 10 *)

Fin

NB :
• Il est recommandé au programmeur d'une classe de cacher le nom et la nature
des attributs de celle-ci. Néanmoins, il est fréquent de devoir fournir aux
utilisateurs des méthodes simples pour accéder à ces attributs(Enlecture ou
en modification) . Les accesseurs sont les méthodes les plus simples
permettant d'accéder aux attributs de l'extérieur de la classe. Les accesseurs,
S'ils sont disponibles pour une classe constituent un moyen de récupérer la
valeur d'un attribut ou de la changer.
• Un Accesseur En lecture est une méthode permettant de connaitre la valeur
d'un attribut
• Un Accesseur En Ecriture est une méthode permettant de modifier la valeur
d'un attribut en lui passant la nouvelle valeur en paramètre.
En programmation Orientée Objet ,Les méthodes getNom,getPrenom et getAge
sont dites des « Accesseurs en lecture» et les méthodes setNom, setPrenom et
setAge sont dites des « Accesseurs en Ecriture».

Par Ir Irenge Balolage Jean de Dieu


97

3.5 Le Polymorphisme

Le polymorphisme Permet, Grace a l’héritage d’utiliser une instance de classe sous deux
aspects : celui de sa classe associée et celui de sa classe mère.
Exemple :
Un étudiant est une personne, avec des spécificités mais avant tout c’est une personne. Une
instance de la classe Etudiant peut être utilisée comme simple personne(c’est le
polymorphisme).
Algorithme Utilisation_polymorphisme

Variables: P1,P2 : Personne

Variables: E1,E2 : Etudiant

Début

P1 new personne()

E1 new Etudiant ()

P1 E1

Fin

Autres Notion associée au de polymorphisme (Surcharge et redéfinition des méthodes)


• Surcharge des Méthodes
La surcharge est la capacité des objets d’une même hiérarchie de classes à répondre
différemment à une méthode de même nom, mais avec des paramètres différents.
En fonction du type et de nombre de paramètres lors de l’appel, la méthode
correspondante sera choisie.
Le mécanisme de surcharge permet de réutiliser le nom d’une méthode déjà
définie, pour une autre méthode qui en différera par ses paramètres.
La méthode surchargée doit conserver la même “intention sémantique”
La surcharge peut se faire sur une méthode définie localement ou héritée.

Par Ir Irenge Balolage Jean de Dieu


98
Classe Operation

Variables: A ,B : Reel

Debut

setA (v: Réel)

Début

A v

Fin

setB (k: Réel)

Début

A k

Fin

Addition ()

Début

Ecrire A+B

Fin

Addition ( i, j: reel)

Debut

A i

B j

Ecrire A+B+10

Fin

La classe addition est une méthode surchargée, après l’appel de la méthode


Addition, l’exécution se fera selon qu’on lui a assignée ou non des
paramètres.

Par Ir Irenge Balolage Jean de Dieu


99

• La Redéfinition des Méthodes


Le polymorphisme est un mécanisme qui permet à une sous classe de redéfinir une méthode
dont elle a hérité tout en gardant la même signature () de la méthode.
La substitution permet de redéfinir des méthodes ou des propriétés héritées d'une classe de
base. les méthodes substitués peuvent accepter le nombre de paramètre et le type de paramètre
que la méthode ou propriété de la classe.
Exemple

Exemple:

classe Personne comporte Methode Afficher()


Debut
Ecrire Nom
Ecrire Age
Ecrire Prenom
Fin
classe Etudiant Speciale classe Personne comporte Methode Afficher()
Debut
super.Afficher()
Fin
ou alors
classe Etudiant Speciale classe Personne
Debut
Afficher()
Debut
super.Afficher()

Par Ir Irenge Balolage Jean de Dieu


100

Fin
Fin

3.6 L’encapsulation
L'encapsulation est la capacité permettant de créer et de contrôler l'accès à un groupe
d'éléments. Les classes fournissent les moyens les plus fiable d'assurer l'encapsulation.
L'encapsulation permet de regrouper des informations et les codes les manipulant dans une
classe.
L’encapsulation consiste à masquer les détails d’implémentation d’un objet, en définissant
une interface. L’interface est la vue externe d’un objet, elle définit les services accessibles
(offerts) aux utilisateurs de l’objet. L’encapsulation facilite l’évolution d’une application car
elle stabilise l’utilisation des objets : on peut modifier l’implémentation des attributs d’un
objet sans modifier son interface, et donc la façon dont l’objet est utilisé. L’encapsulation
garantit l’intégrité des données, car elle permet d’interdire, ou de restreindre, l’accès direct
aux attributs des objets.
Les avantages de l’encapsulation sont :
- Simplification de l’utilisation des objets,
- Meilleure robustesse du programme,
- Simplification de la maintenance globale de l’application.
NB: Une règle fondamentale de l'encapsulation stipule que les données d'une classe ne
doivent être manipulées que par des méthodes ou les procédures de propriétés. cette technique
est souvent appelée dissimulation des données. Elle assure la sécurité de fonctionnement de
votre code en masquant les détails internes de la classe et évitant ainsi qu'ils ne soient utilisés
de manière inappropriée.

3.7 Autres Concepts en Programmation Orienté objets

• Signature
La signature d’une méthode représente la précision de son nom, du type de ses arguments et
du type de donnée retournée.
• Message

Par Ir Irenge Balolage Jean de Dieu


101

Un message est une demande d’activation d’une méthode envoyé à un objet.


• Méthodes
Une méthode est une fonction ou procédure liée à un objet qui est déclenchée à la réception
d’un message particulier : la méthode déclenchée correspond strictement au message reçu. La
liste des méthodes définies au sein d’un objet constitue l’interface de l’objet pour l’utilisateur
: ce sont les messages que l’objet peut comprendre si on les lui envoie et dont la réception
déclenche les méthodes correspondantes.

• Le destructeur
Les destructeurs sont d’autres méthodes particulières d’une classe. Comme les
constructeurs, ils sont appelés implicitement mais uniquement lors de la destruction d’une
instance de classe. La signature du destructeur est imposée.

Par Ir Irenge Balolage Jean de Dieu


102

CHAP.IV NOTIONS INTRODUCTIVES AUX BASES DES


DONNEES
4.1 NOTION
L'informatique est une science du traitement de l'information, laquelle est représentée par des
données Aussi, très tôt, on s'est intéressé aux manières de pouvoir stocker des
données dans des mémoires auxiliaires autres que la mémoire centrale. Les données sont
stockées dans des périphériques dont les supports physiques ont évolué dans le temps : entre
autres, d'abord des cartes perforées, des bandes magnétiques, des cartes magnétiques, des
mémoires à bulles magnétiques, puis aujourd'hui des disques dures, ou des CD-ROM
ou des DVD.
La notion de fichier est apparue en premier : le fichier regroupe tout d'abord des objets de
Même nature, des enregistrements. Pour rendre facilement exploitable les données d'un
Fichier, on a pensé à différentes méthodes d'accès (accès séquentiel et direct).
Toute application qui gère des systèmes physiques doit disposer de paramètres sémantiques
Décrivant ces systèmes afin de pouvoir en faire des traitements. Dans des systèmes de gestion
de clients les paramètres sont très nombreux (noms, prénoms, adresse, n°Sécu, sport favori,
est satisfait ou pas,..) et divers (alphabétiques, numériques, booléens, ...).
Dès que la quantité de données est très importante, les fichiers montrent leurs limites et il a
Fallu trouver un moyen de stocker ces données et de les organiser d'une manière qui soit
Facilement accessible, il est apparu Les bases des données.
Les Bases des données sont devenues des éléments incontournables de la majorité des
applications. Elles se substituent à l’utilisation de fichiers gérés par le développeur lui-même.
Cet apport permet un gain de productivité important lors du développement et une
amélioration significative des performances des applications. Elles facilitent également le
partage de l’information entre utilisateurs.

4 .1 Notion de modélisation des données

a) Le concept d’entité

Par Ir Irenge Balolage Jean de Dieu


103

Représentation d’un objet matériel ou immatériel. Une entité représente un ensemble


d’éléments homogènes.
Par exemple les articles vendues par une entreprise peuvent être regroupés dans une
même entité articles (A chaque fois les information ne changent pas désignation,
PU,…..).
Par contre les articles et les clients ne peuvent pas être regroupés : leurs informations ne
sont pas homogènes (un client ne possède pas de pu, un article ne possède pas de
sexe,….).

b) Les Attributs
Un attribut est une propriété d’une entité ou d’une association.

Le prénom, adresse client ,nom client sont des attributs de l’entité clients.
Désignation, prix unitaire de vente sont des attributs de l’entité articles.
Quantité commandé , date de commande sont des attributs de l’association
commander .

c) L’identifiant
Propriété ou groupe de propriétés qui sert à identifier une entité.
Chaque individu d’une entité doit être identifié d’une manière unique .

Par Ir Irenge Balolage Jean de Dieu


104

Dans le schéma ci-dessous l’identifiant est celui que l’on souligne.


Numéro client est l’identifiant de l’entité client.
N° founisseur est l’idenfiant de l’entité fournisseur
Numéro article est l’identifiant de l’entité articles.

d) L’association
L’association est une liaison qui a une signification précise entre plusieurs entités.
Par exemple L’association commander est une liaison évidente entre les entités clients et
articles. Tandis que livrer établit un lien entre l’entité fournisseur et article.

d) Les cardinalités

La cardinalité d’un lien d’une entité et une association précise le minimum ou le maximum
de fois qu’un élément d’une entité peut être concerné par l’association.

La Seul difficulté pour établir correctement les cardinalités et de se poser les questions dans
le bon sens. Autour de l’association commander. Par exemple :
Côté clients, La question est “un client peut commander combien d’articles ?”
Et la réponse est entre « 1 et plusieurs ».
Côté Articles, La question est « un article peut être commandé par combien des
clients? » et la réponse est « entre 0 et plusieurs».
Cardinalité minimum : nombre minimum d’occurrences d’une entité X dans l’association
considérée.
Cardinalité maximum : nombre maximum d’occurrences d’une entité X dans l’association
considérée.

Par Ir Irenge Balolage Jean de Dieu


105

e) Les Formes Normales


L’étude des formes normales permet d’éviter certains pièges de conception risquant
d’impacter la future base de données. Il est donc important que durant le processus de
modélisation, un instant soit pris pour vérifier qu’il n’y a pas d’incohérences fonctionnelles.
Pour être parfaites, les relations doivent respecter certaines règles. Cet ensemble de
règles se nomme : les formes normales.
Cette théorie a été élaborée par E.F. Codd en 1970. Son objectif est d’éviter les anomalies
dans les bases de données relationnelles :
• Problèmes de mise à jour.
• Suppression des redondances d’informations.
• Simplification de certaines contraintes d’intégrité.

Pour parfaire une base de données relationnelle, il est nécessaire de connaître les trois
premières formes normales et la forme normale dite BoyceCodd ; les suivantes ne sont que
des extensions peu usitées.

Il existe 3 premières formes normales traditionnellement énoncé pour le schéma


relationnel :
• Première forme normale :
Une relation est en première forme normale si tout attribut est atomique (non
décomposable)
Si une entité prend une liste des valeurs alors ces valeurs doivent faire l’objet d’une
entité supplémentaire en associant à la première.
Ex1 :

Ex2 :
ELEVE (noélv, nom, prenom, liste_notes)
Un attribut ne peut pas être un ensemble de valeurs
Décomposition
ELEVE (noélv, nom, prenom)
NOTE (noélv, no_matiere, note)

Par Ir Irenge Balolage Jean de Dieu


106

• Deuxième forme normale :


Une relation est en deuxième forme normale si et seulement si :
Elle est en première forme normale ;
Tout attribut n'appartenant pas à une clé ne dépend pas que d'une partie de
cette clé.
(L’identifiant peut être composé de plusieurs Attributs mais les autres attributs
doivent dépendre de l’identifiant entier).
Autrement dit, toute propriété de la relation doit dépendre intégralement de
toute la clé.

Par exemple : Commande (Numcli, CodeArticle, Date, Qté commandée,


Désignation)
Cette relation est elle en première forme normale ? Oui.
Es-elle en deuxième forme normale ? Non, car la propriété Désignation ne
dépend pas intégralement de la clé (Numcli, CodeArticle, Date).

Voici comment corriger :

Commandes(Numcli, CodeArticle, date, Qté commandée)


Articles(CodeArticle, Désignation)

Par Ir Irenge Balolage Jean de Dieu


107

• Troisième forme normale :

Une relation est en troisième forme normale si et seulement si :


Elle est en deuxième forme normale ;
Tous les attributs d’une entité doivent dépendre directement de son
identifiant et non d’un autre champ.

Autrement dit, tous les attributs n’appartenant pas à la clé ne dépendent pas d’un attribut
non clé.
Exemple : La relation Commande(NuméroCommande, #CodeClient, Nom client,
#RefArticle) est elle
en troisième forme normale ?
Est-elle
en première forme normale ? Oui
Est-elle
en deuxième forme normale ? Oui
Est-elle
en troisième forme normale ? Non !
En effet Nom client dépend d’une propriété non clé : CodeClient

Par Ir Irenge Balolage Jean de Dieu


108

clients

4.2 Le Système de gestion de la base des données (SGBD)

a) Notion

Un SGBD peut être défini comme un ensemble de logiciels systèmes permettant de stocker et
d’interroger un ensemble des fichiers indépendants. Mais aussi comme un outil permettant de
modéliser et de gérer les données d’une entreprise. Un Système de Gestion de Bases de
Données (SGBD) est un logiciel de haut niveau qui permet de manipuler les informations
stockées dans une base de données.

b) Que doit permettre un SGBD ?

Par Ir Irenge Balolage Jean de Dieu


109

Le SGBD doit nous permettre :

• De Décrire les données (langage de définition des données)


Création, Modification et suppression des tables et de contraintes dans le Base des
données, etc.
• De Manipuler les données (langage de manipulation des données)
Les insertions, les modifications, suppressions et les interrogations des données dans les
bases des données.
• De Contrôler les données
Intégrité (vérification de contraintes d'intégrité) et confidentialité (contrôle des
droits d'accès, autorisation)
• Le Partage
Une BD est partagée entre plusieurs utilisateurs en même temps. Le SGBD doit
Préserver le contrôle des accès concurrents. L'exécution d'une transaction doit préserver la
Cohérence de la BD.
• la sauvegarde et la récupération après pannes
Cette partie comporte des outils permettant de sauvegarder et de restaurer de façon
Explicite une base de données. Elle comporte aussi des mécanismes permettant, tant qu’une
modification n'est pas finie, de pouvoir revenir à l'état de la base avant le début de cette
modification.
• Etc.
e)Exemple de SGBD-R

Access de Microsoft,Oracle,DB2 d'IBM,Interbase de Borland,SQL server de microsoft,


Informix,Sybase, MySQL, PostgreSQL, ….

4.3 Les Bases données


a) Définition
Une base des données est un outil permettant de stocker, gérer et consulter des
informations. Ce terme s’applique également aux données primaires enregistrées dans des
fichiers. Les données présentent dans la base des données peuvent être triées, filtrées,
exploitées et imprimées selon des critères précis.
Une Base de données est un gros ensemble d’informations structurées mémorisées sur un
Support permanent.
b) Terminologie
Dans le contexte des bases des données, les termes suivants sont fréquemment utiliser :
Base des données Relationnelle est un type de base des données qui utilise les tables
pour stocker les informations.

Par Ir Irenge Balolage Jean de Dieu


110

Table est un composant de la base des données qui stocke les informations dans des
enregistrements (Lignes) et des Champs (colonnes).Les informations sont, en général
regroupés par catégorie au niveau d’une table.
Enregistrement
L’enregistrement est l’ensemble des informations relatives à l’élément d’une table.
Les enregistrements sont les équivalents au niveau logique, des lignes d’une table. Par
exemple, nous aurons la table clients contient les caractéristiques d’un client particulier
Champ
Le champs est une zone de l'enregistrement d'un fichier consacré à un type particulier de
données
Un enregistrement est composé de plusieurs champs .Chaque champ d’enregistrement
contient une seul information sur l’enregistrement.
Par exemple, L’enregistrement Client peut contenir des champs comme codeClient, Nom,
Prenom,….
Clé primaire
Une clé primaire est utilisée pour identifier d’une manière unique chaque ligne d’une
table. La clé primaire est un champ ou une combinaison de champs dont la valeur est
unique dans une table. Par exemple, le champ codeclient est la clé primaire de la table
client .Il ne peut y avoir deux clients ayant le même codeclient.
Clé étrangère
Une clé étrangère représente un ou plusieurs champs d’une table, qui font références aux
champs de la clé primaire d’une autre table. Les clés étrangères indiquent la manières dont les
tables sont liées.
Relation
Une relation est une association établie entre les champs communs dans deux tables. Une
relation peut être de 1 à 1, de 1 à plusieurs ou de plusieurs à plusieurs .une relation de 1 à
plusieurs entre la table client et la table commande permet à une requête de renvoyer toutes
les commandes correspondant à un client.

Par Ir Irenge Balolage Jean de Dieu


111

EXERCICES
1. En procédant comme ci-dessus, dites quelles seront les valeurs des variables a,
b et c, après l’exécution de chacune des instructions :
a5
b3
ca+b
a2
c b - a

2. Qu’obtiendra-t-on dans les variables a et b, après exécution des instructions suivantes


(dans cet ordre) ?
a←5
b←a+4
a←a+1
b←a-4

3.
a) Qu’obtiendra-t-on dans les variables n1 et n2 après exécution des instructions ?
n1← 5
n2 ← 7
n1 ← n2
n2 ← n1
b) Même question avec les instructions :
n1 ← 5
n2 ← 7
n2 ← n1
n1 ← n2

4.
Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?
Algorithme Affectation1
Variables A, B en Entier
Début
A ← 1
B ← A + 3
A ← 3
Fin
5.
Quelles seront les valeurs des variables A, B et C après exécution des instructions suivantes ?
Algorithme Affectation1
Variables A, B, C en Entier
Début
A ← 5
B ← 3
C ← A + B
A ← 2
C ← B – A
Fin
6.
Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?
Algorithme Affectation3
Variables A, B en Entier
Début
A ← 5
B ← A + 4
A ← A + 1
B ← A – 4
Fin

Par Ir Irenge Balolage Jean de Dieu


112

7.
Quelles seront les valeurs des variables A, B et C après exécution des instructions suivantes ?
Algorithme Affectation4
Variables A, B, C en Entier
Début
A ← 3
B ← 10
C ← A + B
B ← A + B
A ← C
Fin
8.
Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?
Algorithme Affectation4
Variables A, B en Entier
Début
A ← 5
B ← 2
A ← B
B ← A
Fin

9. écrire un algorithme permettant d’échanger les valeurs de deux variables A et B réels.

10. Une variante du précédent : on dispose de trois variables A, B et C. Ecrivez un algorithme


transférant à B la valeur de A, à C la valeur de B et à A la valeur de C (toujours quels que soient les
contenus préalables de ces variables).

11.Que produit l’algorithme suivant ?


Algorithme Affectation 15
Variables A, B, C en Caractères
Début
A ← "423"
B ← "12"
C ← A & B
Fin

12. Quel résultat produit le programme suivant ?


Algorithme Double
Variables val, double en numériques
Début
Val ← 231
Double ← Val * 2
Ecrire Val
Ecrire Double
Fin
12 .Ecrire un programme qui demande un nombre à l’utilisateur, puis qui calcule et affiche le carré
de ce nombre.

13.Ecrire un programme qui lit le prix HT d’un article, le nombre d’articles et le taux de TVA, et
qui fournit le prix total ,le Tva sera inclus dans le total à payer. Faire en sorte que des libellés
apparaissent clairement.

Par Ir Irenge Balolage Jean de Dieu


113

14.Ecrire un algorithme qui demande un nombre à l’utilisateur, et l’informe ensuite si ce nombre


est positif ou négatif (on laisse de côté le cas où le nombre vaut zéro).

15. Ecrire un algorithme qui demande deux nombres à l’utilisateur et l’informe ensuite si leur
produit est négatif ou positif (on laisse de côté le cas où le produit est nul). Attention toutefois : on
ne doit pas calculer le produit des deux nombres.

16.Ecrire un algorithme qui demande un nombre à l’utilisateur, et l’informe ensuite si ce nombre


est positif ou négatif (on inclut cette fois le traitement du cas où le nombre vaut zéro).

17.Ecrire un algorithme qui demande l’âge d’un enfant à l’utilisateur. Ensuite, il l’informe de sa
catégorie :
• "Poussin" de 6 à 7 ans
• "Pupille" de 8 à 9 ans
• "Minime" de 10 à 11 ans
• "Cadet" supérieur à 12 ans
Peut-on concevoir plusieurs algorithmes équivalents menant à ce résultat ?

18.Ecrire un algorithme qui demande un nombre compris entre 10 et 20, jusqu’à ce que la réponse
convienne. En cas de réponse supérieure à 20, on fera apparaître un message : « Plus petit ! », et
inversement, « Plus grand ! » si le nombre est inférieur à 10.

19.Ecrire un algorithme qui demande un nombre de départ, et qui ensuite écrit la table de
multiplication de ce nombre, présentée comme suit (cas où l'utilisateur entre le nombre 7) :
Table de 7 :
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21

7 x 10 = 70

20.Ecrire un algorithme qui demande un nombre de départ, et qui calcule la somme des entiers
jusqu’à ce nombre. Par exemple, si l’on entre 5, le programme doit calculer :
1 + 2 + 3 + 4 + 5 = 15
NB : on souhaite afficher uniquement le résultat, pas la décomposition du calcul.

21.Ecrire un algorithme qui demande successivement 20 nombres à l’utilisateur, et qui lui dise
ensuite quel était le plus grand parmi ces 20 nombres :
Entrez le nombre numéro 1 : 12
Entrez le nombre numéro 2 : 14
etc.

Entrez le nombre numéro 20 : 6


Le plus grand de ces nombres est : 14

Par Ir Irenge Balolage Jean de Dieu


114

22.Ecrire un algorithme qui déclare et remplisse un tableau de 7 valeurs numériques en les mettant
toutes à zéro.

23.Ecrire un algorithme qui déclare un tableau de 9 notes, dont on fait ensuite saisir les valeurs par
l’utilisateur.

24.Que produit l’algorithme suivant ?


Algorithme Tableau1
Tableau Nb(5) en Entier
Variable i en Entier
Début
Pour i ← 1 à 5
Nb(i) ← i * i
i suivant
Pour i ← 1 à 5
Ecrire Nb(i)
i suivant
Fin

25.Que produit l’algorithme suivant ?


Algorithme Tableau2
Tableau N(6) en Entier
Variables i, k en Entier
Début
N(1) ← 1
Pour k ← 1 à 6
N(k) ← N(k-1) + 2
k Suivant
Pour i ← 1 à 6
Ecrire N(i)
i suivant
Fin
Peut-on simplifier cet algorithme avec le même résultat ?

26.Que produit l’algorithme suivant ?


Algorithme Tableau3
Tableau Suite(7) en Entier
Variable i en Entier
Début
Suite(1) ← 1
Suite(1) ← 1
Pour i ← 2 à 7
Suite(i) ← Suite(i-1) + Suite(i-2)
i suivant
Pour i ←1 à 7
Ecrire Suite(i)
i suivant
Fin

27.Ecrivez un algorithme permettant à l’utilisateur de saisir un nombre quelconque de valeurs, qui


devront être stockées dans un tableau. L’utilisateur doit donc commencer par entrer le nombre de
valeurs qu’il compte saisir. Il effectuera ensuite cette saisie. Enfin, une fois la saisie terminée, le
programme affichera le nombre de valeurs négatives et le nombre de valeurs positives.

Par Ir Irenge Balolage Jean de Dieu


115

28.Ecrivez un algorithme constituant un tableau, à partir de deux tableaux de même longueur


préalablement saisis. Le nouveau tableau sera la somme des éléments des deux tableaux de départ.

29. Toujours à partir de deux tableaux précédemment saisis, écrivez un algorithme qui calcule le
schtroumpf des deux tableaux. Pour calculer le schtroumpf, il faut multiplier chaque élément du
tableau 1 par chaque élément du tableau 2, et additionner le tout. Par exemple si l'on a :

30.Ecrivez un algorithme qui permette la saisie d’un nombre quelconque de valeurs, qui
devront être stockées dans un tableau. L’utilisateur doit donc commencer par entrer le nombre de
valeurs qu’il compte saisir. Toutes les valeurs doivent être ensuite augmentées de 1, et le nouveau
tableau sera affiché à l’écran.

31.Ecrivez un algorithme permettant, toujours sur le même principe, à l’utilisateur de saisir un


nombre
déterminé de valeurs. Le programme, une fois la saisie terminée, renvoie la plus grande valeur en
précisant quelle position elle occupe dans le tableau. On prendra soin d’effectuer la saisie dans un
premier temps, et la recherche de la plus grande valeur du tableau dans un second temps.

32.Quel résultat produira cet algorithme ?


Algorithme Tableau6

Tableau X(2, 3) en Entier


Variables i, j, val en Entier
Début
Val ← 1
Pour i ← 1 à 2
Pour j ← 1 à 3
X(i, j) ← Val
Val ← Val + 1
j Suivant
i Suivant
Pour i ← 1 à 2
Pour j ← 1 à 3
Ecrire X(i, j)

Par Ir Irenge Balolage Jean de Dieu


116

j Suivant
i Suivant
Fin
33.Quel résultat produira cet algorithme ?
Algorithme Tableau7
Tableau X(2, 3) en Entier
Variables i, j, val en Entier
Début
Val ← 1
Pour i ← 1 à 2
Pour j ← 1 à 3
X(i, j) ← Val
Val ← Val + 1
j Suivant
i Suivant
Pour j ← 1 à 3
Pour i ← 1à 2
Ecrire X(i, j)
i Suivant
j Suivant
Fin

34. Quel résultat produira cet algorithme ?


Algorithme Tableau9

Tableau T(4, 2) en Entier


Variables k, m, en Entier
Début
Pour k ← 1 à 4
Pour m ← 1 à 2
T(k, m) ← k + m
m Suivant
k Suivant
Pour k ← 1 à 4

Pour m ← 1 à 2

Ecrire T(k, m)
m Suivant
k Suivant
Fin

35. Quel résultat peut fournir chacun de ces algorithmes?

a) Algorithme pour
Variable X, Y en entiers
Début
Pour X allant de 1 à 3
Pour Y allant de 1 à 3
Ecrire X+1*Y
Y suivant
X suivant
Fin

……………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………

Par Ir Irenge Balolage Jean de Dieu


117

b) Algorithme répéter
Variable X en entier
Début
X90
Répéter
Ecrire X
XX+1
Jusqu’à(X>10)

Fin

………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………
c) Algorithme tant que
Variable X en entier
Début
X2
Tant que (X<=10)
Si (X %2=1) alors
Ecrire X
Fin SI
XX+1
Fin tant que

Fin

……………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………

d) Algorithme multiplication

Variable X, Y en entiers
Début
Pour X allant de 1 à 3
Pour Y allant de 1 à 4
Ecrire X-Y
Y suivant
X suivant
Fin

Par Ir Irenge Balolage Jean de Dieu


118

37.Créer l’algorithme d’un programme Calculant et affichant la somme S, de deux matrices A et B.

Sachant que A et B sont des matrices à 3 Lignes et à 3 colonnes , et les éléments des matrices A et B
sont préalablement saisis par l’utilisateur .

Exemple : A +B =S

NB : l’algorithme ne va qu’afficher

38. Écrire l’algorithme d’une fonction qui calcule et retourne le volume d’une sphère.
Sachant que le rayon R sera entré en paramètre.

Étant donné que le volume d’une sphère est donné par V=4 R3

39. Créer L’algorithme d’un programme affichant la somme de nombres entiers pairs se trouvent dans
l’intervalle

40. Créer L’algorithme d’un programme affichant la somme de nombres entiers impairs se trouvent
dans l’intervalle

41. Pour un Capital C, placé au taux périodique T, Pendant n périodes, l’intérêt I s’écrit :
I= C * T * N
Si la durée N est exprimée en trimestre : T= (taux annuel)/4
Si la durée N est exprimée en mois : T= (taux annuel)/12
Si la durée N est exprimée en jours : T = (taux annuel)/ 360

Créer l’algorithme qui permet de calculer et afficher l’intérêt selon que la durée N est exprimée en
trimestre, en moins ou en jours
Sachant que l’utilisateur va taper au clavier le Capital(C ), le taux d’intérêt(I) et la durée(N)

NB :
 Pour cette question, vous pouvez utiliser les SUIVANT CAS ou les si imbriqués

42. Soit l’expression suivante : (A/D-10)*(K+Z)


a) En respectant L'Ordre des Priorités des Opérateurs, Construire un arbre binaire à partir de
cette expression

Par Ir Irenge Balolage Jean de Dieu


119

b) Quelle est la taille de l’arbre obtenu à la sous question a ? 0,5pts


--------------------------------------------------------------------
c) Quelle est la hauteur de l’arbre obtenu à la sous-question a ? 0,5pts
-------------------------------------------------------------------
d) Quel est le degré du Nœud D ? 0,5pts
-------------------------------------------------------------------
e) Quel est le chemin du Nœud A de l’arbre obtenu à la sous-question a ? 0,5pts
-------------------------------------------------------------------
f) L’arbre obtenu à la sous question a est-il binaire ? justifier votre réponse en deux lignes
maximum. 1Pts
----------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------

43) Quelle différence Pouvez-vous établir entre l’accès séquentiel aux articles d’un fichier de
l’accès sélectif aux articles d’un fichier ? (3pts)
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................

44.Donnez la résolution des expressions ci-dessous :

a) 10*2+12-14%2=
-----------------------
-----------------------
-----------------------

b) 16%2*1+12-25=

-------------------------

----------------------------------

-----------------------------------

45. Soit la Procédure suivante :


Procédure faitCalculs (x en entier, y en entier)
écrire «somme : », x+y

Par Ir Irenge Balolage Jean de Dieu


120

écrire «produit : », x*y


Fin procédure
---------------------------------
Que fourniront ces instructions ?
Algorithme Calcule
variables n,p,q en entier
début
n ← 4,
p← 5
q← 8
faitCalculs (n, p+2)
faitCalculs (2*n, q)

Fin

46. Écrire une fonction nommée estVoyelle examinant si un caractère fourni en


paramètre est une voyelle et fournissant un résultat de type booléen. Écrire un petit programme
l’utilisant.

47.

a. Déclarez une variable enregistrement pour représenter la fiche d'un


étudiant sachant qu'elle contient les informations suivantes : Nom,
Prénom, sexe (F ou G), date de naissance et la moyenne au baccalauréat.
b. Affectez respectivement les valeurs suivantes à cette variable :
"Kéfi", "Nour", "F", "27/11/1983" et 13.25

c. écrivez les instructions permettant de saisir à


partir du clavier les champs de la variable enregistrement Etudiant.

48.

Soit la structure Personne constituée par :


– un nom
– un numéro fiscal (entier)
– un numéro de téléphone ( caractères)
– un numéro de carte bancaire (entier).
Ecrivez les analyses, les algorithmes des différents modules
d'un programme nommé Fiche, qui permet la saisie et l'affichage de l'enregistrement d'une
personne.

49. Un compte en banque concerne une personne spécifiée par son nom, un numéro de
compte (un entier), et un montant (un réel).
Question : Déclarez un enregistrement pour cette structure.

50.Soit la structure Info constituée par le nom, le numéro de téléphone, le numéro de carte
bancaire . Ecrivez un programme qui saisit puis affiche les enregistrements pour 3 personnes.

Par Ir Irenge Balolage Jean de Dieu


121

46. Le chef de département informatique veut automatiser la cotation de 6 cours dans son institution
supérieur, sachant que les points maximum de ces cours sont:

1. l’algorithme /100 pts

2. la programmation orientée objet /120 pts

3. la recherche opérationnelle / 80 pts

4. la pédagogie comparée /80 pts

5. le système d’exploitation /120 pts

6. le langage java /100 pts

Un étudiant qui a au moins 55 % a réussi avec

la Mention:
- "satisfaction" si le pourcentage est >=55 et <69 :
- "Distinction" si le pourcentage est >=70 et <80 :
- "Grande Distinction" si le pourcentage est >=80 et <90 :
- "Très Grande Distinction" si le pourcentage est >=90 et <=100 :
NB: On ne s'intéresse pas au nombre d'échec profond ou léger.

Question

Créer un programme en VB.NET qui permet de résoudre ce problème en utilisant ce Formulaire

Par Ir Irenge Balolage Jean de Dieu


122

Orientations:
1. Chaque cours aura sa variable.
2. la variable qui va contenir la cote d'un cours doit être >=0 et <=20(chaque cours sera coté sur 20).
Exemple:
Pour le cours d'algorithme, sa variable sera nommée Algo et de type "double"
3. Si l'utilisateur clique sur le bouton:
a) calculer Pourcentage

• le programme va afficher le pourcentage de l'étudiant dans le textbox "Votre Pourcentage


est:" en même temps
• le programme va afficher la mention de l'étudiant dans le textbox "Votre mention est:"
b) Initialiser les valeurs qui sont par défaut sur le formulaire s'affichent automatiquement.

c)Fermer

le formulaire est fermé


4. Si une cote manque(le champs est vide) on ne calcul pas le pourcentage de l'étudiant ni sa
mention.

Par Ir Irenge Balolage Jean de Dieu


123

TABLES DES MATIERES

Les Objectifs ............................................................................................................................................ II

1. Global........................................................................................................................................... II

2. Spécifique .................................................................................................................................... II

BIBLIOGRAPHIE : ..................................................................................................................................... IV

CHAP. I. INTRODUCTION GENERALE ................................................................................................... - 1 -

1.0 NOTION.................................................................................................................................. - 1 -

1.1 Le Rôle de l'Ordinateur .......................................................................................................... - 1 -

1.2 La programmation ................................................................................................................ - 1 -

1.2.1 Les étapes d’élaboration d’un programme .................................................................. - 2 -

1.2.2 Le programme : source de diversité .............................................................................. - 3 -

1.2.3 Les données du programme, les résultats ..................................................................... - 4 -

1.3 Communication ou archivage ................................................................................................ - 4 -

1.4 L’ordinateur code l’information ............................................................................................ - 5 -

1.5. Ce qui différencie l’homme de l’ordinateur ........................................................................ - 5 -

1.6 Langages de programmation ................................................................................................. - 6 -

1.6.1 Le langage de l’ordinateur ............................................................................................. - 6 -

1.6.2 En langage évolué............................................................................................................... - 7 -

1.6.3 Les concepts de base des langages évolués 11 ............................................................. - 9 -

1.7. Un algorithme ..................................................................................................................... - 10 -

1.8 La structure d’un Algorithme............................................................................................. - 12 -

1.9 Notion sur Le compilateur, l’interpréteur et le code source.............................................. - 13 -

CHAP II .Notions de Base en Programmation.................................................................................... - 15 -

2.1 La notion de variables, les types de données et l’instruction affectation........................... - 15 -

Par Ir Irenge Balolage Jean de Dieu


124

2.1.1 Notion sur les variables ............................................................................................... - 15 -

2.1.2 Notion sur les types des données .................................................................................... - 17 -

2.2 La Syntaxe dans le langage de programmation................................................................... - 20 -

2.3 Mots réservés ...................................................................................................................... - 20 -

2.4 Les constantes ..................................................................................................................... - 20 -

2.5 Les commentaires................................................................................................................ - 21 -

2.6 Les instructions .................................................................................................................... - 21 -

2 .6 1 instructions Simples ..................................................................................................... - 21 -

2 .6 2 instructions Composés ................................................................................................ - 22 -

2.7 Les Opérateurs .................................................................................................................... - 22 -

2.7.1 Opérateur Arithmétique............................................................................................... - 22 -

2.7.2 Opérateur de comparaison .............................................................................................. - 23 -

2.7.3 Les opérateurs Logiques ................................................................................................... - 23 -

2.7.4 Opérateur alphanumérique & .......................................................................................... - 24 -

2.9 Les Structures de contrôle .................................................................................................. - 30 -

2.9.1 Traitement conditionnels (Les tests) ............................................................................ - 30 -

2.9.2 Boucles ..................................................................................................................... 37

2.10 Les sous-programmes (Les Fonctions et Procédures) ........................................................... 43

2.10.1 Les Procédures ............................................................................................................... 44

2.10.2 Les fonctions ....................................................................................................................... 46

2.11 La Structures des données.................................................................................................... 49

2.11.1 Les tableaux ................................................................................................................... 49

2.11.2 Les Pointeurs .................................................................................................................. 57

2.11.3 Les Listes Linéaires chaînés ............................................................................................ 59

2.11.4 Piles.................................................................................................................................... 64

2.11.5 Les Files Simples ............................................................................................................. 67

2.11.6 Les arbres ....................................................................................................................... 67

Par Ir Irenge Balolage Jean de Dieu


125

2.11.7 Les Fichiers ..................................................................................................................... 74

CHAP III. INTRODUCTION A LA PROGRAMMATION ORIENTEE OBJET .................................................. 82

3. 1. les Classes ............................................................................................................................. 83

3.2 Les objets ................................................................................................................................. 86

3.3 Les constructeurs..................................................................................................................... 87

3.4 l’héritage................................................................................................................................. 89

3.5 Le Polymorphisme ................................................................................................................... 97

3.6 L’encapsulation..................................................................................................................... 100

3.7 Autres Concepts en Programmation Orienté objets ............................................................. 100

CHAP.IV NOTIONS INTRODUCTIVES AUX BASES DES DONNEES....................................................... 102

4.1 NOTION.................................................................................................................................. 102

4 .1 Notion de modélisation des données................................................................................... 102

4.2 Le Système de gestion de la base des données (SGBD) ........................................................ 108

4.3 Les Bases données ................................................................................................................. 109

EXERCICES............................................................................................................................................ 111

TABLES DES MATIERES ........................................................................................................................ 123

Par Ir Irenge Balolage Jean de Dieu

Vous aimerez peut-être aussi