Vous êtes sur la page 1sur 247

Cours

Cours dInformatique
dInformatique
Initiation
Initiation linformatique,
linformatique,
lalgorithmique
lalgorithmique
et
et la
la programmation
programmation
11re
re anne DEUG MIAS-MASS
anne DEUG MIAS-MASS

2001/2002 DEUG MIAS-MASS 1re ann 1


Emploi
Emploi du
du temps
temps
Affich au tableau
Chaque lve aura une sance TD/TP tous les 15 jours. (2
heures/2 heures)
MIAS: lundi AM ou PM
MASS: Mercredi 9h-13h
Ex Lundi prochain: MIAS groupes 1 et 3 (A-CO et J-
PA)
Mercredi prochain: MASS groupe A (A-K)
24 heures de cours
12 heures de TD
12 heures de TP

2001/2002 DEUG MIAS-MASS 1re ann 2


Objectif
Objectif
Familiariser les tudiants avec les techniques et
outils permettant
de concevoir et de comprendre,
de raliser puis traduire
dimplmenter et enfin dobtenir un programme
produisant par son excution sur un ordinateur, le
rsultat attendu.
rigueur de la dmarche scientifique
24 heures de cours
12 heures de TD
12 heures de TP
2001/2002 DEUG MIAS-MASS 1re ann 3
Chapitre
Chapitre 11 ::
Introduction
Introduction linformatique
linformatique

Chapitre suivant algorithmique

2001/2002 DEUG MIAS-MASS 1re ann 4


1.1 :: Linformatique
1.1 Linformatique ??

Computer Science
INFORMATIQUE ? en anglais

INFORMATION AUTOMATIQUE
Art dentraner automatiquement des actions
Science de linformation

Traitement automatique de linformation


ORDINATEUR
Machine automatique

2001/2002 DEUG MIAS-MASS 1re ann 5


Lordinateur
Lordinateur
Machine qui permet de traiter de linformation :
dacqurir et de conserver de linformation (acquisition,
stockage)
deffectuer des traitements (calcul),
de restituer les informations stockes (restitution)
Permet de lier information donnes (0 ou 1)
Diffrents types dinformations : valeurs numriques,
textes, images, sons, : tout cela avec des 0 ou 1

2001/2002 DEUG MIAS-MASS 1re ann 6


Traitement
Traitement de
de linformation
linformation
Schma de principe du traitement de linformation

Donnes ltat brut

ENTREE
Donnes corriges
TRAITEMENT Rsultats
Par ordinateur

SORTIE

2001/2002 DEUG MIAS-MASS 1re ann 7


Lordinateur
Lordinateur // lhomme
lhomme
Raison du remplacement :
Vitesse (pour des oprations bas niveau )
Fiabilit (rptitivit)
Mmoire
Cot
2 types d informaticiens
les utilisateurs des outils informatiques
les concepteurs de ces outils : votre but

2001/2002 DEUG MIAS-MASS 1re ann 8


Domaines
Domaines de
de linformatique
linformatique
Domaine du matriel (hardware)
partie physique de lordinateur
composants constituant un ordinateur (microprocesseur )
support du traitement de linformation (disque dur )
Domaine du logiciel (software)
instructions expliquant lordinateur comment traiter un
problme
Cela ncessite de dcrire des : algorithmes et
reprsentations informatiques de ces instructions
Pour aboutir un programme

2001/2002 DEUG MIAS-MASS 1re ann 9


1.2 :: Matriel
1.2 Matriel
121
121Aperu
Aperuhistorique
historique

Principe de base : John Von Newmann 1946 =vritable


naissance de linformatique
Sinon les anctres et tapes importantes:
Boulier chinois
Numration binaire par Francis BACON en 1600
Machine calculer de Pascal, 1642 : dpasse par lapparition de
llectronique et des semi-conducteurs
Machine de Falcon, 1728. Premire utiliser un programme sur
plaquette de bois perfore
Mmoire mcanique de Babbage, 1833. Conoit une mmoire spare des
organes dentre et de sortie
Algbre de Boole 1850 (bases de lautomatisme)
Machine de Hollerith, 1890. Il utilisa le premier la carte perfore, comme
support universel d information , mis en oeuvre dans les premires
gnrations d ordinateurs.

2001/2002 DEUG MIAS-MASS 1re ann 10


Les
Lesanctres
anctresdes
desordinateurs
ordinateurs

Machine de Pascal (1645)

Machine de Babbage (1833)

2001/2002 DEUG MIAS-MASS 1re ann 11


1.2.2
1.2.2 -- Gnrations
Gnrationsdordinateurs
dordinateurs
Gnration 1 (~1945 - 1960)
machines lectroniques composes de circuits lampes
vide (et non transistors semi-conducteurs)
place importante (quivalent dune salle)
performances de lordre de 1000 oprations/s
programmation en langage binaire
faible portabilit des programmes
programme et donnes fournis sous forme de cartes
perfores, rsultats sur une imprimante (pas de
stockage)

2001/2002 DEUG MIAS-MASS 1re ann 12


1.2.2
1.2.2 -- Gnrations
Gnrations dordinateurs
dordinateurs
Gnration 2 (1960 - 1965)
dcouverte des transistors qui remplaceront les
circuits lampes vide
Apparition des 1re mmoires ( tores)
vite l'chauffement, gain de place, fiabilit
performances denviron 100 000 oprations/s
programmation en langage binaire mais aussi
laide des premiers langages volus (Fortran,
Cobol, ...)
2001/2002 DEUG MIAS-MASS 1re ann 13
1.2.2
1.2.2 -- Gnrations
Gnrations dordinateurs
dordinateurs
Gnration 3 (1965 - 1975)
invention du circuit intgr permettant de placer des
dizaines de transistors sur une puce de silicium
performances 109 1012 oprations/s
gnralisation de la programmation en langage volu
Les Systmes d'Exploitation (OS) Permettent de grer
plusieurs programmes diffrents sous le contrle d'un
programme central

2001/2002 DEUG MIAS-MASS 1re ann 14


1.2.2
1.2.2 -- Gnrations
Gnrations dordinateurs
dordinateurs
Gnration 4 (1975 - ?)
exploitation du circuit intgr grande chelle:
plusieurs dizaines de milliers (millions) de circuits
peuvent tre intgrs sur une mme puce
reproduction sur une seule puce dune vritable micro
machine : le micro processeur. (En 1971 l'Intel 4004 fut
le premier microprocesseur)
diminution de la place occup par un ordinateur
dveloppement de lordinateur personnel.
La programmation s'oriente vers la programmation
OBJETS (orients autour des donnes et non plus des
actions)

2001/2002 DEUG MIAS-MASS 1re ann 15


1.33 -- Structure
1. Structure de
de lordinateur
lordinateur
Carte vido

Disque
Ecran Mmoire
Dur
Centrale
Clavier
Unit de Disquette
Souris traitement

Haut- CDROM
parleurs Unit Centrale
Carte son
Priphriques de communication Units dchange
Priphriques de mmorisation Bus
Support de transfert

2001/2002 DEUG MIAS-MASS 1re ann 16


d'information entre les diffrents
ensembles d'un ordinateur) .
1.3.1
1. 3.1 -- Priphriques
Priphriques
2 types de priphriques
Une pice de matriel qui peut effectuer une fonction particulire

priphriques de communication,
priphriques de mmorisation.
Priphriques de communication
Priphriques dentres
clavier
souris
Priphriques de sorties
cran
imprimantes
2001/2002 DEUG MIAS-MASS 1re ann 17
Les priphriques
ENTREES
Clavier
Souris
MEMOIRES (entres/sorties)
Disque dur
Disquette
Disque optique (CD)
SORTIES
Ecran
Imprimante

2001/2002 DEUG MIAS-MASS 1re ann 18


Priphriques de communication
le modem
Permet : interconnexion des ordinateurs pour
communiquer, changer des informations, partager des
applications
rseau dordinateur
utilisation du rseau tlphonique pour communiquer
utilisation dun MODEM

MODEM MODEM
2001/2002 DEUG MIAS-MASS 1re ann 19
Convertisseurs A/N ou N/A
Signal numrique : 0 et 1
Signal analogique: t et A continu => codage
par modulation
MODEM = modulation+dmodulation

2001/2002 DEUG MIAS-MASS 1re ann 20


Priphriques de mmorisation
permettent de sauvegarder et de restituer des
informations
quantit dinformations pouvant tre mmorise
se mesure en Octet (8 lments binaires)
priphriques usuels de mmorisation:
disque dur
Disquette
CDROM, DVD

2001/2002 DEUG MIAS-MASS 1re ann 21


Schma
Schmadune
duneconfiguration
configurationinformatique
informatique
Unit Centrale (cerveau)

Unit de Traitement
Unit de Commande
et de Contrle

Unit Arithmtique
et Logique

Mmoire
Priphriques Centrale Priphriques
dEntres de Sorties

Priphriques dEntres/Sorties
Informations Mmoires Auxiliaires
Commandes

2001/2002 DEUG MIAS-MASS 1re ann 22


1.3.2
1.3.2 -- La
La mmoire
mmoire centrale
centrale
Permet de stocker et de restituer des informations
Correspond un ensemble fini de cellules
Une case mmoire (cellule) contient une donne
ou une instruction
Chaque cellule est numrote : adresse
a1 a2 a3 a4 a5

2001/2002 DEUG MIAS-MASS 1re ann 23


1.3.2
1.3.2 -- La
La mmoire
mmoire centrale
centrale
Contient le programme en cours dexcution, ainsi que ses donnes.
Par exemple, lors de la cration dun programme en langage C:

Edition Compilation Excution

Zone de Editeur Compilateur Code


programme de texte excutable

Texte du
Variables
Zone de programme Code du
en C excutable
donnes programme

2001/2002 DEUG MIAS-MASS 1re ann 24


La
Lammoire
mmoireauxiliaire
auxiliaire
La mmoire centrale a une capacit limite et est volatile
Ncessit denregistrer les informations sur des supports
de mmoire non volatile (en sortie) pour pouvoir les
rutiliser par la suite (en entre).

FICHIER : lment de mmoire de stockage (mmoire de


masse) contenant de linformation et reprable.

Le codage de linformation dfinit le TYPE du fichier et


dtermine son utilisation comme donne pour un
programme ou comme programme excutable.

2001/2002 DEUG MIAS-MASS 1re ann 25


La
Lammoire
mmoireauxiliaire
auxiliaire

Les supports magntiques ACCES ALEATOIRE (on


choisit la position que lon veut) permettent une
hirarchisation des fichiers :
REPERTOIRE : fichier contenant le nom, ladresse, de
plusieurs autres fichiers

RACINE : fichier rpertoire cre automatiquement sur le


support au moment du formatage (disque ou disquette) et
portant le nom du volume (label)

CHEMIN DACCES : liste des rpertoires permettant


d atteindre un fichier partir de la racine

2001/2002 DEUG MIAS-MASS 1re ann 26


La disquette

2001/2002 DEUG MIAS-MASS 1re ann 27


Les faces
Comme tout disque, une disquette comporte deux faces utilisables pour y enregistrer
l'information.
Les pistes (tracks)
Les disquettes sont donc structures en pistes concentriques sur lesquelles l'information sera
crite et lue. Les pistes qui se font face sur les deux cts de la disquette et qui portent donc le
mme nom constituent un cylindre. Ceux-ci sont numrots de la mme faon que les pistes.
Chaque piste est divise en plusieurs morceaux: les secteurs.
Les secteurs (sectors)
De la mme faon qu'ne tarte est gnralement dcoupe en morceaux de tailles gales, une
disquette subit une dcoupe logique. Ainsi chaque piste est dcoupe en morceaux de tailles
identiques appels secteurs dont le nombre dpend du type de la disquette.

Capacit = nombre de faces *


nombre de pistes * nombre de secteurs * taille d'un secteur

2001/2002 DEUG MIAS-MASS 1re ann 28


1.3.3
1.3.3 -- Lunit
Lunit de
de traitement
traitement
Unit Centrale (cerveau)
Unit de commandes
Unit de Traitement
unit de contrle
Unit de Commande
chef dorchestre et de Contrle

conduit le calcul
Unit Arithmtique
(ordre des instructions) et Logique

voulu par le programmeur


Mmoire
Unit Arithmtique et logique Centrale

unit de calcul
excute les oprations arithmtiques et logiques (+-*/ et ou
) dun programme sous le contrle de lunit de commande

2001/2002 DEUG MIAS-MASS 1re ann 29


Lunit
Lunitcentrale
centrale
CI
CIsur
surlequel
lequelon
ontrouve
trouve
Supports de barrettes
Connecteurs de souris et clavier de mmoires

Connecteurs de contrleur
de disquettes et disque dur

Emplacements de
cartes d extensions

Batterie

Puce du BIOS CPU

2001/2002 DEUG MIAS-MASS 1re ann 30


Le
Leprocesseur
processeur(CPU)
(CPU)
Squenceur d instructions
Interface du bus d instructions

Dcodeur d instructions

Unit de traitement
Unit arithmtique et logique

Registres:
Mmorise diffrents
tats binaires (environ 10)
rsultant des oprations lmentaire
Unit de contrle Unit de dtection derreurs Overflow
Retenue
Parit
2001/2002 DEUG MIAS-MASS 1re ann 31
1.3.4
1.3.4 -- Les
Les bus
bus
Disque
Ecran Mmoire
Dur
Centrale
Clavier
Unit de Disquette
Souris traitement
CDROM
Permettent
Haut- de faire
Unit
le lien entre les
Centrale
parleurs
diffrentes units dun ordinateur
reprsente le chemin utilis par les
informations pour aller dune unit lautre
2001/2002 DEUG MIAS-MASS 1re ann 32
1.4
1.4 :: Logiciel
Logiciel
Domaine du logiciel (software)
instructions expliquant l ordinateur comment
traiter un problme
algorithmes et reprsentation informatiques de
ces instructions
programme

2001/2002 DEUG MIAS-MASS 1re ann 33


1.4.1
1.4.1 -- Algorithmes
Algorithmes et
et programmes
programmes
Algorithme :
suite des actions effectuer pour
raliser un traitement donn
rsoudre un problme donn

Exemples dalgorithme dans la vie courante


pour tricoter un pull : (maille lendroit, )
pour faire la cuisine : recette
pour jouer une sonate : partition
2001/2002 DEUG MIAS-MASS 1re ann 34
1.4.1
1.4.1 -- Algorithmes
Algorithmes et
et programmes
programmes
Informations
en entre

Algorithme informatique
=
procdure de calcul

Rigueur scientifique
IMPORTANT ! Informations
en sortie
Sinon, information de sortie
errone
2001/2002 DEUG MIAS-MASS 1re ann 35
1.4.1
1.4.1 -- Algorithmes
Algorithmes et
et programmes
programmes
Programme :
codage dun algorithme afin que lordinateur
puisse excuter les actions dcrites
doit tre crit dans un langage comprhensible
par lordinateur
langage de programmation (Assembleur
(micropro), Basic, C, Fortran, Pascal, Cobol )
Un programme est donc une suite ordonne
dinstructions lmentaires codifies dans
un langage de programmation
2001/2002 DEUG MIAS-MASS 1re ann 36
1.4.2
1.4.2 -- Langages
Langages de
de programmation
programmation
Lordinateur
construit autour dun ensemble de circuits lectroniques (le
courant passe, le courant ne passe pas)
traite donc que des signaux assimilables 0 ou 1
une opration lmentaire suite de 0 et de 1 = suite de bits
(BInary digiT) ! Un champ de 8 bits constituant ce qu'on
appelle 1 byte ou 1 octet. Importance des units en
science. Rappel: k(2^10) M et G .
Pour que les programmes et les donnes soient
comprhensibles par lordinateur il faut effectuer un
codage binaire

2001/2002 DEUG MIAS-MASS 1re ann 37


1.4.2
1.4.2 -- Langages
Langages de
de programmation
programmation
Langage machine
langage binaire
ses oprations sont directement comprhensibles par
lordinateur
propre chaque famille dordinateur
Pour pouvoir manipuler du langage machine, on est
oblig de passer par de l'Assembleur.

Ecriture des premiers programme en langage


machine

2001/2002 DEUG MIAS-MASS 1re ann 38


Les langages
Rdiger un programme consiste prparer le travail FAIRE FAIRE la
machine, sous forme dune liste dinstructions.
Les instructions que peut excuter lunit de traitement sont codes en langage
binaire spcifique chaque machine (langage machine).
Langage du programmeur langage machine (code binaire excutable). La
traduction est effectue par un compilateur (qui est lui aussi un programme
).
TYPES DE LANGAGES STYLE DE PROGRAMMATION
langages impratifs (Fortran, Pascal, C ) : Il s'agit de faire excuter une
suite d'ordres par une machine bte mais discipline.
langages Dclaratifs: l'activit de programmation consiste essentiellement
dcrire le rapport qui existe entre les donnes et les rsultats que l'on veut
obtenir, plutt que la squence de traitements qui mne des unes aux autres
fonctionnels (Lisp, Scheme )
logiques (Prolog )
langages objets (C++, VisualBasic, Delphi, Java )

2001/2002 DEUG MIAS-MASS 1re ann 39


Habituellement, un programme c'est une suite d'instructions.
L'ordinateur est trs bte et il faut tout lui dtailler:
Mettre la main sur la poigne de la porte
Tourner la poigne
Pousser la porte
Mettre le doigt sur l'interrupteur
Appuyer sur l'interrupteur pour allumer l'ampouleLe programme
principal
Tout se passe trs bien. Mais qu'est-ce qui se passe par
exemple si on met une porte automatique ? Le programme sera
incapable de trouver la poigne et d'ouvrir la porte !
En programmation objet, on associe aux objets des actions
(aussi appelles mthodes). Par exemple, l'objet porte on
peut associer la mthode ouvrir. De mme pour l'ampoule on
pourrait associer une mthode allumer, teindre, etc.
Le programme devient plus simple:
porte.ouvrir
ampoule.allumer
Le nouveau programme principal
On a plus besoin de savoir comment la porte s'ouvre. On se contente de
l'ouvrir.
Pour indiquer qu'on applique la mthode (ouvrir) sur l'objet (porte), on
note souvent objet.mthode (ici : porte.ouvrir).

2001/2002 DEUG MIAS-MASS 1re ann 40


Bien sr il faut dtailler ce que fait la mthode ouvrir de porte et la mthode
allumer de lumire. On ne va pas dtailler dans le programme ce que fait la
mthode ouvrir, mais on va le dtailler dans l'objet lui-mme.
C'est normal, puisque la mthode ouvrir ne s'applique qu' la porte, pas la lumire:
porte.ouvrir:
Mettre la main sur la poigne
Tourner la poigne
Pousser la porte
L'objet porte et sa mthode
On peut changer la porte en mettant une porte automatique. On peut aussi l'ouvrir
(mme si la porte elle-mme ne s'ouvre pas de la mme faon):
porte.ouvrir: Se placer devant la porte
Attendre que la porte soit compltement ouverte
L'objet porte automatique et sa mthode
Mais votre programme pourra l'ouvrir sans rien changer:
porte.ouvrir
ampoule.allumer
Le programme principal : il est inchang malgr le changement de
porte

2001/2002 DEUG MIAS-MASS 1re ann 41


1.5
1.5 :: Systme
Systme dexploitation
dexploitation
Tout premier logiciel indispensable au bon
fonctionnement de lordinateur
Charg de la gestion globale de lordinateur
notamment :
utilisation de la mmoire vive
utilisation de la mmoire auxiliaire
dialogue avec lutilisateur (i.e. les entre/sorties)

2001/2002 DEUG MIAS-MASS 1re ann 42


Systme
Systme dexploitation
dexploitation
Gestion de la mmoire vive
aller chercher sur la mmoire auxiliaire le code
(excutable) et les donnes ncessaires
lexcution dun programme demand par
l utilisateur
Gestion des entres/sorties
interprtation des frappes de touches au clavier
et des mouvements ou cliques de la souris
visualisation dinformations lcran

2001/2002 DEUG MIAS-MASS 1re ann 43


Systme
Systme dexploitation
dexploitation
utilisateur

Application 1 Application 2

Systme dexploitation

Matriel
RAM, disque dur, disquette, CD-ROM,
clavier, souris, cran, imprimante

2001/2002 DEUG MIAS-MASS 1re ann 44


Systme
Systme dexploitation
dexploitation
Les plus courants :
3 types dordinateurs:
systme mono utilisateur
- PC=perso (plusieurs
MS-DOS pour PC marques compatibles)
Windows 95-98 pour PC - Mac=perso
MAC-OS pour Macintosh
- Stations de
systme multi utilisateurs travail=professionnel
OS/2 pour PC (IBM)
! compatibilit
Windows NT pour PC
UNIX
Linux sur PC (gratuit) ; Solaris sur SUN ; AIX sur IBM

2001/2002 DEUG MIAS-MASS 1re ann 45


Systme
Systme dexploitation
dexploitation
Permet aussi dorganiser (grer) les informations
sur la mmoire auxiliaire
FICHIER (file): ensemble dinformation manipulables
par lordinateur ; nom unique dans un rpertoire ;
taille en octets
REPERTOIRE : dossier ou directory ; regroupement
de fichiers ; nom unique
RACINE (root): dossier situ au plus haut niveau
CHEMIN DACCES (path): liste des rpertoires
permettant datteindre un fichier partir de la racine

2001/2002 DEUG MIAS-MASS 1re ann 46


Systme
Systme dexploitation
dexploitation
Disque dur

Users
Appli Donnes divers
personelles

mias101 mias120 images info

Exercices windows

2001/2002 DEUG MIAS-MASS 1re ann 47


1.6
1.6 :: Les
Les applications
applications
Une application est un logiciel fournissant
l utilisateur un environnement
(fonctionnalits) lui permettant de crer,
modifier et/ou consulter des documents
contenant des informations.

2001/2002 DEUG MIAS-MASS 1re ann 48


Applications
Applications et
et documents
documents
Interface (menus, barres doutils, )
Fonctions de gestion des documents (ouvrir,
enregistrer, )
Fonctions ddition (couper, copier, coller, )
Fonctions de recherche et remplacement
Insertions dimages, objets (incorporations)
Outils de mise en forme (polices de caractres,
styles )
.

2001/2002 DEUG MIAS-MASS 1re ann 49


Editeur
Editeur de
de texte
texte
Logiciel permettant de crer des documents
contenant du texte au codage ASCII
(C'est une norme de codage de 128 caractres alphanumriques sur
7 bits. Les versions tendues sur 8 bits, 256 caractres sont
adaptes suivant les pays.)
.
Outil du systme dexploitation (fichiers de
configuration, notices, )
Bloc-Notes

2001/2002 DEUG MIAS-MASS 1re ann 50


Traitement
Traitement de
de texte
texte
Logiciel permettant de crer des documents
contenant du texte mis en forme : police et
styles de caractres, style et alignement des
paragraphes, organisation du texte (sections,
hirarchisation, en-tte et pied de page, table
des matires ) etc...

WordPad Word

2001/2002 DEUG MIAS-MASS 1re ann 51


Traitement
Traitement dimage
dimage
Logiciel permettant de crer des images
dfinies sous forme de matrice de points
de couleurs (Pixels).
Inconvnient: ligne=escalier

Paint

2001/2002 DEUG MIAS-MASS 1re ann 52


Dessin
Dessin vectoriel
vectoriel
A la diffrence dune image dfinie point par
point, un lment de dessin vectoriel se dfinit
par sa forme, sa position et sa taille.
Un dessin se compose de plusieurs formes
(rectangles, cercles, traits, ) et chaque forme
est modifiable.
Pas linconvnient du transparent prcedent
Dessin

2001/2002 DEUG MIAS-MASS 1re ann 53


Tableur
Tableur
Logiciel permettant de crer des documents
contenant des feuilles de calcul constitues de
cellules, organises en ligne x colonne, pouvant
contenir des informations sous diffrents
formats (texte, nombres, dates ) ou des
formules de calcul.
Contient des outils danalyse de ces informations
permettant une visualisation sous forme de
courbes ou diagrammes divers.
Excel
2001/2002 DEUG MIAS-MASS 1re ann 54
Systme
Systmede
deGestion
Gestionde
deBases
Basesde
deDonnes
Donnes

Logiciel permettant de crer des


documents contenant des tables darticles
hirarchises ou lies par des champs
communs (relations).
Ex: Gnalogie. Listes dtudiants, avec adresse, tlphone, niveau,

Contient des outils danalyse des tables


permettant den extraire des
informations laide de requtes.
Ex: Combien dtudiants de la fac habitent Sainte Rose et sont en Deug Mass
Access
2001/2002 DEUG MIAS-MASS 1re ann 55
Applications
Applications multimdia
multimdia
Logiciels permettant de reproduire ou de
crer des sons, des animations, des
vido,

2001/2002 DEUG MIAS-MASS 1re ann 56


Navigateur
Navigateur
Logciel permettant de visualiser des pages crites
en langage HTML et disponibles sur le rseau
Internet.

Netscape

2001/2002 DEUG MIAS-MASS 1re ann 57


Prsentations
Prsentations
Il existe aussi des logiciels de prsentation
permettant dafficher une suite de pages
lcran sous forme de diaporama.

PowerPoint

2001/2002 DEUG MIAS-MASS 1re ann 58


Chapitre
Chapitre 22 ::Algorithmique
Algorithmique

2001/2002 DEUG MIAS-MASS 1re ann 59


2.1
2.1 -- Introduction
Introduction
Matriel / Logiciel
Domaine du logiciel (software)
instructions expliquant lordinateur comment
traiter un problme
algorithmes et reprsentation informatiques de
ces instructions
programme

2001/2002 DEUG MIAS-MASS 1re ann 60


2.1
2.1 -- Introduction
Introduction
Les programmeurs sont amens concevoir
des logiciels de plus en plus complexes
pour rpondre aux besoins des utilisateurs
(applications en rseau, base de donnes
rparties, )
matriser le dveloppement des logiciels
est trs important

2001/2002 DEUG MIAS-MASS 1re ann 61


2.2
2.2 -- Algorithmes
Algorithmes et
et programmes
programmes
Notion prcise dalgorithme a t
dcouverte en 825 par le mathmaticien
arabe Muhammmad ibn Musa al-Kharezmi
Moyen dautomatisation et dconomie de la
pense
Petit Larousse : suite doprations
lmentaires constituant un schma de
calcul ou de rsolution de problme.

2001/2002 DEUG MIAS-MASS 1re ann 62


2.2
2.2 -- Algorithmes
Algorithmes et
et programmes
programmes
Pour nous :
Un algorithme est une squence prcise et non
ambigu dune suite dtapes pouvant tre
excutes de faon automatique par un
ordinateur pour rsoudre un problme

Spcification du schma de calcul sous forme


dune suite finie doprations lmentaires
obissant un enchanement dtermin.

2001/2002 DEUG MIAS-MASS 1re ann 63


2.2
2.2 -- Algorithmes
Algorithmes et
et programmes
programmes
Informations
en entre

Algorithme informatique
=
schma de calcul

Un algorithme est une suite finie de rgles


appliquer dans un ordre dtermin un nombre fini
de donnes, pour arriver en un nombre fini dtapes, Informations
un certain rsultat, et cela indpendamment des en sortie
donnes.

2001/2002 DEUG MIAS-MASS 1re ann 64


2.2
2.2 -- Algorithmes
Algorithmes et
et programmes
programmes
Programme :
codage dun algorithme afin que lordinateur
puisse excuter les actions dcrites
doit tre crit dans un langage comprhensible
par lordinateur
langage de programmation
Un programme est donc une suite ordonne
dinstructions lmentaires codifies dans
un langage de programmation

2001/2002 DEUG MIAS-MASS 1re ann 65


2.3
2.3 -- Langages
Langages de
de programmation
programmation
RAPPEL: Langage machine
langage binaire
ses oprations sont directement comprhensibles
par lordinateur
propre chaque famille dordinateur

Ecriture des premiers programme en langage


machine

2001/2002 DEUG MIAS-MASS 1re ann 66


2.4
2.4 -- Importance
Importance des
des algorithmes
algorithmes
Pour mener bien un traitement sur un
ordinateur il faut :
1. Concevoir un algorithme qui dcrit comment
le traitement doit tre fait
2. Exprimer lalgorithme sous la forme dun
programme dans un langage de
programmation adquat
3. Faire en sorte que lordinateur excute le
programme : compilation

2001/2002 DEUG MIAS-MASS 1re ann 67


Algorithme

programmation

Programme en langage volu

traduction

Programme en langage machine

Interprtation par lUnit Centrale de traitement

le traitement souhait est ralis

2001/2002 DEUG MIAS-MASS 1re ann 68


2.4
2.4 -- Importance
Importance des
des algorithmes
algorithmes
Quels sont les aspects et proprits des
algorithmes quil est ncessaire dtudier ?
1. La calculabilit des algorithmes (convergence
de lalgorithme et existence de lalgo) la mthode existe t
elle ? (contre exemple: Dieu existe t il ?)
2. La complexit des algorithmes (nombre
doprations ncessaires)
3. Lefficacit des algorithmes (vitesse des algo:
raisonnable) TEMPSD'EXCUTIONMMOIRE
OCCUPE
2001/2002 DEUG MIAS-MASS 1re ann 69
Exemple
Exemple de
de complexit
complexit
Complexit en n n

i
i 1

Complexit en 2n n n

(i j )
i 1 j 1

Ordre de grandeur pour n grand


N=> si n*10, temps *10
N=> si n*10, temps *100

2001/2002 DEUG MIAS-MASS 1re ann 70


Efficacit
Efficacit
Simuler une partie dchec:
Trop dtats mettre en mmoire
On choisit des choses non-optimales mais efficaces
Voyageur de commerce
Comment minimiser le trajet du voyageur de
commerce allant de villes en villes
Enonc simple, mais solution trs difficile si
nombre de villes est grand (n! possibilits)
N=5 =>120, n=15 => 1300 G

2001/2002 DEUG MIAS-MASS 1re ann 71


2.5
2.5 Affinement
Affinement des
des algorithmes
algorithmes
Un algorithme doit dcrire prcisment le
traitement quil doit excuter et sassurer que tous
les cas de figures possible ont bien t prvus.
Exemple : algorithme permettant de calculer la
dure dun voyage partir du tableau daffichage
des aroports
1. Consulter lheure de dpart
2. Consulter lheure darriv
3. Soustraire lheure de dpart de celle darrive
2001/2002 DEUG MIAS-MASS 1re ann 72
2.5
2.5 Affinement
Affinement des
des algorithmes
algorithmes
Problmes :
fuseaux horaires diffrents
Si un point applique lheure dt et pas lautre
Pour viter de telles erreurs le concepteur
doit suivre une dmarche rigoureuse et
mthodique :
Affinement progressive de lalgorithme
Dmarche descendant, top down
Technique du diviser pour mieux rgner

2001/2002 DEUG MIAS-MASS 1re ann 73


Examen: le Mardi 16/4/2002
Tout rviser le cours + 2 TD/TP
La moiti des points : QCM (notation prcise sur le sujet)
: analyse et modifier un programme
: Crer un programme

Documents autoriss

Bibliographie:
Cours dinformatique: langages et programmation.
MASSON. Scholl-Fauvet-Lagnier-Maraninchi
Initiation linformatique et aux structures de donnes
Volume 1. DUNOD Courtin-Kowarski

2001/2002 DEUG MIAS-MASS 1re ann 74


2.5
2.5 Affinement
Affinement des
des algorithmes
algorithmes
Exemple : robot domestique avec un
algorithme de prparation dune tasse de
caf soluble

1. Faire bouillir leau


2. Mettre le caf
3. Ajouter leau dans les tasses

2001/2002 DEUG MIAS-MASS 1re ann 75


2.5
2.5 Affinement
Affinement des
des algorithmes
algorithmes
1. faire bouillir l'eau
peut tre affine en

1.1. remplir la bouilloire d'eau


1.2. brancher la bouilloire sur le secteur
1.3. attendre l'bullition
1.4. dbrancher la bouilloire

2001/2002 DEUG MIAS-MASS 1re ann 76


2.5
2.5 Affinement
Affinement des
des algorithmes
algorithmes
2. mettre le caf dans la tasse
pourrait tre affin en

2.1. ouvrir le pot caf


2.2. prendre une cuiller caf
2.3. plonger la cuiller dans le pot
2.4. verser le contenu de la cuiller dans la tasse
2.5. fermer le pot caf
2001/2002 DEUG MIAS-MASS 1re ann 77
2.5
2.5 Affinement
Affinement des
des algorithmes
algorithmes
3. ajouter de l'eau dans la tasse
pourrait tre affine en

3.1. verser de l'eau dans la tasse jusqu' ce que


celle-ci soit pleine

2001/2002 DEUG MIAS-MASS 1re ann 78


2.5
2.5 Affinement
Affinement des
des algorithmes
algorithmes
1.1. remplir la bouilloire d'eau

peut ncessiter les affinements suivants:

1.1.1. mettre la bouilloire sous le robinet


1.1.2. ouvrir le robinet
1.1.3. attendre que la bouilloire soit pleine
1.1.4. fermer le robinet
2001/2002 DEUG MIAS-MASS 1re ann 79
2.5
2.5 Affinement
Affinement des
des algorithmes
algorithmes
Affinement ne se fait pas dans le vide
Savoir o sarrter
Connatre les capacits du processeur
Exemple :
Brancher la bouilloire, activit interprtable
Remplir la bouilloire, activit non interprtable
affinement

2001/2002 DEUG MIAS-MASS 1re ann 80


2.5
2.5 Affinement
Affinement des
des algorithmes
algorithmes
Processeur informatique : ordinateur,
capacits dinterprtation connues
Le concepteur dun algorithme doit donc
affiner ce dernier jusqu ce que les tapes
puissent tre crites laide dun langage
de programmation

2001/2002 DEUG MIAS-MASS 1re ann 81


2.1
2.1 Ecrire
Ecrire un
un algorithme
algorithme
Calcul de l'intrt et de la valeur acquise par
une somme place pendant un an
L'nonc du problme indique
Les donnes fournies: deux nombres
reprsentant les valeurs de la somme place et
du taux d'intrt
les rsultats dsirs: deux nombres reprsentant
l'intrt fourni par la somme place ainsi que la
valeur obtenue aprs placement d'un an.
2001/2002 DEUG MIAS-MASS 1re ann 82
2.1
2.1 -- Exemple
Exemple
Formalisation de lalgorithme:En franais
1. prendre connaissance de la somme initiale et du taux d'intrt
2. multiplier la somme par le taux; diviser ce produit par 100; le
quotient obtenu est l'intrt de la somme
3. additionner ce montant et la somme initiale; cette somme est
la valeur acquise
4. afficher les valeurs de l'intrt et de la valeur acquise.

SI=somme initiale
T=taux dintrt (ex: 3 pour 3%)
I=intrets=S*T/100
SF=somme finale=S+I
2001/2002 DEUG MIAS-MASS 1re ann 83
2.1
2.1 -- Exemple
Exemple
Formalisation de lalgorithme
En langage de description : pseudo code, LDA
(Langage de Description Algorithmique)
crire " Introduisez la somme initiale (en francs): "
Lire SI
crire " Introduisez le taux d'intrt (ex: 3 pour 3%): "
lire T
T SI* T / 100
SF SI + I
crire " L'intrt fourni est de " , I , "francs "
crire " La somme aprs un an sera de " , SF , "francs "

2001/2002 DEUG MIAS-MASS 1re ann 84


Instructions
Instructions
les instructions de lecture
lire variable
les instructions d'criture
ecrire expression
les instructions d'assignation
variable expression

2001/2002 DEUG MIAS-MASS 1re ann 85


2.2
2.2 -- Instructions
Instructions
Exemple (TP 1)
Exprimer un nombre de secondes sous
forme d'heures, minutes, secondes.
La seule donne est le nombre total de
secondes que nous appellerons nsec ;
les rsultats consistent en 3 nombres :
h, m, s

2001/2002 DEUG MIAS-MASS 1re ann 86


2.2
2.2 -- Instructions
Instructions
crire " Introduisez le nombre de secondes"
lire nsec
s nsec mod 60
m (nsec \ 60) mod 60
h nsec \ 3600
crire nsec, "valent: ", h, "heure(s) ", m, "minute(s) et", s,
"seconde(s)"

2001/2002 DEUG MIAS-MASS 1re ann 87


2.3
2.3 -- Dclaratives
Dclaratives
Il est aussi ncessaire de prciser ce que les
variables utilises contiendront comme type de
donnes.
Il peut s'agir de nombres entiers, de nombres rels,
de chanes de caractres, ...
Il faut faire prcder la description de l'algorithme
par une partie dite dclarative o l'on regroupe les
caractristiques des variables manipules.

2001/2002 DEUG MIAS-MASS 1re ann 88


3.3
3.3 -- Dclaratives
Dclaratives
La partie dclarative est place
(gnralement) en tte de l'algorithme et
regroupe une ou plusieurs indications de la
forme:
entier variables
ou
dcimaux (rel) variables

2001/2002 DEUG MIAS-MASS 1re ann 89


3.3
3.3 -- Dclaratives
Dclaratives
entier nsec, h, m, s
crire " Introduisez le nombre de secondes"
lire nsec
s nsec mod 60
m (nsec \ 60) mod 60
h nsec \ 3600
crire nsec, "valent: ", h, "heure(s) ", m, "minute(s) et", s,
"seconde(s)"

2001/2002 DEUG MIAS-MASS 1re ann 90


3.4
3.4 Traduction
Traduction en
en CC
#include <stdio.h> dcrit les fonctions de lecture et affichage sur lecran
int nsec, h, m, s; dclarations
main(){ marque le dbut du programme principal

printf("Introduisez le nombre en secondes : ");


scanf("%d", &nsec);
s=nsec % 60;
m=nsec / 60 % 60;
h=nsec / 3600;
printf("%d secondes valent %d heures %d minutes et %d
secondes\n",nsec,h,m,s);
} marque la fin du programme principal

2001/2002 DEUG MIAS-MASS 1re ann 91


3.4
3.4 Traduction
Traduction en
en CC
Un identificateur (nom de variable, fonction, )
en C doit dbuter par une lettre suivie par un
nombre quelconque de lettres, chiffres ou de "_"
(caractre soulign).
Les identificateurs ne peuvent contenir
d'espacement (caractre "blanc") ou de caractres
tels que %, ?, *, ., - ,... mais peuvent tre aussi
longs que l'on veut.

2001/2002 DEUG MIAS-MASS 1re ann 92


3.4
3.4 Traduction
Traduction en
en CC
Les variables doivent faire l'objet d'une dclaration
de type de la forme:
type liste_des_variables ;
Des points-virgules sont obligatoires pour sparer
les instructions
Les instructions de lecture et d'criture se traduisent
respectivement par SCANF et PRINTF suivis d'une
liste de variables ou d'expressions places entre
parenthses et spares par des virgules.

2001/2002 DEUG MIAS-MASS 1re ann 93


4.1
4.1 -- Structures
Structures
Il a t dmontr que pour reprsenter n'importe
quel algorithme, il faut disposer des trois
possibilits suivantes:
La structure de squence qui indique que les oprations
doivent tre excutes les unes aprs les autres
la structure de rptition qui indique qu'un ensemble
d'instructions doit tre excut plusieurs fois.
la structure de choix qui indique quel ensemble
d'instructions doit tre excut suivant les circonstances

2001/2002 DEUG MIAS-MASS 1re ann 94


4.2.
4.2. La
La structure
structure alternative
alternative
Exemple :
2 joueurs A et B
Chacun montre un certain nombre de doigts (de
0 5)
Si la somme des nombres de doigts montrs est
paire, le premier joueur a gagn
Sinon c'est le second.
Le problme est de faire prendre la dcision par
l'ordinateur.
2001/2002 DEUG MIAS-MASS 1re ann 95
4.2.
4.2. La
La structure
structure alternative
alternative
En Franais :
prendre connaissance du nombre de doigts de A
prendre connaissance du nombre de doigts de B
calculer la somme de ces deux nombres
si la somme est paire, A est le gagnant
si la somme est impaire, B est le gagnant.

Remarque: Pour dterminer si un nombre est pair ou impair,


il suffit de calculer le reste de la division par 2 (.. modulo
2): il vaut 0 dans le premier cas et 1 dans le second.

2001/2002 DEUG MIAS-MASS 1re ann 96


4.2.
4.2. La
La structure
structure alternative
alternative
En LDA :
entier na,nb,reste
lire na,nb
reste (na + nb) mod 2
si reste = 0 alors crire "Le joueur A a gagn."
sinon crire "Le joueur B a gagn."
fsi
crire Fin du jeu

2001/2002 DEUG MIAS-MASS 1re ann 97


4.2.
4.2. La
La structure
structure alternative
alternative
La structure alternative se prsente en
gnral sous la forme :
si expression alors
premire squence d'instructions
sinon
deuxime squence d'instructions
fsi
2001/2002 DEUG MIAS-MASS 1re ann 98
4.2.
4.2. La
La structure
structure alternative
alternative
o expression conditionne le choix d'un des
deux ensembles d'instructions. Cette
expression peut tre soit vraie soit fausse
Si l'expression est vraie, la premire
squence d'instruction sera excute et la
seconde sera ignore;
Si l'expression est fausse, seule la seconde
squence d'instructions sera effectue.

2001/2002 DEUG MIAS-MASS 1re ann 99


4.2.
4.2. La
La structure
structure alternative
alternative
Le mot sinon indique o se termine la
premire squence d'instructions et o
commence la seconde.
Le mot fsi (abrg de "fin de si") indique o
se termine la seconde squence
d'instructions.

2001/2002 DEUG MIAS-MASS 1re ann 100


4.2.
4.2. La
La structure
structure alternative
alternative
Dans certains cas, lorsque l'expression est fausse, aucune
instruction ne doit tre excute. La condition s'exprime
alors plus simplement sous la forme:
si expression alors
squence d'instructions
fsi
Quoi quil arrive, les instructions qui suivent fsi seront
excutes.
Chacune des squences d'instructions d'un si ... fsi peut
contenir des si...fsi. On dit alors que les structures sont
imbriques.
2001/2002 DEUG MIAS-MASS 1re ann 101
4.2.
4.2. La
La structure
structure alternative
alternative
Prendre lhabitude de dcaler et
dutiliser les fsi
si expression1 alors
si expression2 alors
instruction1
sinon
instruction2
Diffrent de

2001/2002 DEUG MIAS-MASS 1re ann 102


Remarque
Remarque
En C, lexpression est un nombre 0 ou 1
Donc

2001/2002 DEUG MIAS-MASS 1re ann 103


Expressions
Expressionslogiques
logiques
p q p et q p ou q
VRAI VRAI VRAI VRAI
VRAI FAUX FAUX VRAI
FAUX VRAI FAUX VRAI
FAUX FAUX FAUX FAUX

Pour avoir vrai:


OU= lun ou lautre doit tre vrai
ET= lun et lautre doivent tre vrai
2001/2002 DEUG MIAS-MASS 1re ann 104
Expressions
Expressionslogiques
logiques

p non p

VRAI FAUX

FAUX VRAI

Il existe des thormes :


non (p et q) est quivalent (non p) ou (non q)
non (p ou q) est quivalent (non p) et (non q)

2001/2002 DEUG MIAS-MASS 1re ann 105


4.3
4.3--Expressions
Expressionslogiques
logiquesetetvariables
variables
boolennes
boolennes
a 1; b 2; c 3

(b > 8) ou (c < 1) ? F ou F = F
(b > 0) ou (c > 1) ? V ou V= V
(b > 9) ou (c > 1) ? F ou V = V
(b > a) et (c > b) ? V et V =V
(b > a) et (c < 0) ? V et F = F
non (c < a) ? Non(F)=V
non ((b > a) et (c > b)) ? Non(V et V)=non(V)=F
((b > a) et (c > b)) ou (a < 0) ? (V et V)ou(F)=V ou F=V

2001/2002 DEUG MIAS-MASS 1re ann 106


Variables
Variablesboolennes
boolennes
Variable ne pouvant contenir que deux types de
valeur : VRAI ou FAUX
Peuvent donc stocker le rsultat de lvaluation
dune expression logique
Dfinition algorithmique :
Boolen variable
Dfinition C : il nexiste pas de type boolen
Utilisation du type entier
Int OK, pair ;
gal 0 FAUX ; diffrent de 0 (ou 1) VRAI
LDA : Assignation : OK VRAI
2001/2002 DEUG MIAS-MASS 1re ann 107
4.4.
4.4. L'alternative
L'alternative en
en CC
si expression alors if (expression) {
squence d'instructions squence_d_instructions;
fsi }
si expression alors if (expression)
une instruction une_instruction;
sinon else {
squence d'instructions squence_d_instructions;
fsi }

2001/2002 DEUG MIAS-MASS 1re ann 108


4.4.
4.4. L'alternative
L'alternative en
en CC (optionel)
(optionel)
#include <stdio.h>

int NA, NB, reste;


main () {
printf("Introduisez le nombre de doigts montrs par le joueur A : ");
scanf("%d",&NA);
printf("Introduisez le nombre de doigts montrs par le joueur B : ");
scanf("%d",&NB);
reste = (NA+NB) % 2;
if (reste==0)
printf("Le joueur A a gagn\n");
else
printf("Le joueur B a gagn\n");
printf("Bravo pour le gangnant\n");
}

2001/2002 DEUG MIAS-MASS 1re ann 109


Expression
Expression logique
logique en
en CC
< >
==
!=
>= <=
&&
||

2001/2002 DEUG MIAS-MASS 1re ann 110


Chapitre
Chapitre 55 :: La
La structure
structure rptitive
rptitive

2001/2002 DEUG MIAS-MASS 1re ann 111


5.1
5.1 -- Introduction
Introduction
Lutilisation dun ordinateur simpose lorsque des
volumes importants de donnes sont manipules
Exemple 1: Chercher dans une liste de noms et d'adresses,
l'adresse d'une personne partir de son nom. Le nombre de
fois qu'il faudra comparer le nom donn aux noms de la
liste est dans ce cas inconnu
Exemple 2 : Calculer la Nme puissance entire d'un
nombre x par multiplications successives du nombre par
lui-mme. Ici, le nombre de rptition (N) de l'instruction
de multiplication est connu.

2001/2002 DEUG MIAS-MASS 1re ann 112


5.3
5.3 -- La
La boucle
boucle "" pour
pour faire"
faire"
Lorsque le nombre ditration est connu
Exemple de la table de multiplication
En LDA :
pour var_de_crt prem_val dern_val faire
squence d'instructions
fpour

2001/2002 DEUG MIAS-MASS 1re ann 113


5.3
5.3 -- La
La boucle
boucle "" pour
pour faire"
faire"
var_de_crt : est la variable de contrle, qui est initialise
prem_val
La variable de contrle est incrment
automatiquement chaque itration
Litration sarrte lorsque :
var_de_crt > dern_val
Si prem_val > dern_val la squence dinstructions nest
jamais excute
La variable de contrle doit tre de type numr
La valeur de la variable de contrle ne doit pas tre
directement modifie dans la squence dinstructions
2001/2002 DEUG MIAS-MASS 1re ann 114
5.3
5.3 -- La
La boucle
boucle "" pour
pour faire"
faire"
crire lalgorithme qui affiche la table de
multiplication de 6.
entier n
lire n
Pour i 1 10 faire
crire n, fois , i, font , n*i
fpour

2001/2002 DEUG MIAS-MASS 1re ann 115


5.1
5.1 -- Introduction
Introduction
Exemple 3: afficher la table de multiplication lancienne :
6 fois 1 font 6
6 fois 2 font 12

6 fois 10 font 60
Il serait plus judicieux de faire rpter la ligne
daffichage en faisant varier le multiplicande
Pour chaque valeur de n variant de 1 10 excuter :
Ecrire 6 fois , n, font , 6*n

2001/2002 DEUG MIAS-MASS 1re ann 116


5.2
5.2 -- La
La boucle
boucle "" tant
tant que
que ""
lire nom_donn
lire nom1
si nom1 = nom_donn alors
crire adresse1
sinon
lire nom2
si nom2 = nom_donn alors
crire adresse2
sinon
lire nom3
si nom3 = nom_donn alors ...

2001/2002 DEUG MIAS-MASS 1re ann 117


5.2
5.2 -- La
La boucle
boucle "" tant
tant que
que ""
Fait rpter une squence dinstructions
aussi longtemps quune condition est VRAI
En LDA :
Tant que condition faire
squence dinstructions
Ftq

2001/2002 DEUG MIAS-MASS 1re ann 118


5.2
5.2 -- La
La boucle
boucle "" tant
tant que
que ""
Au moment du premier passage dans la boucle la
condition est value; si elle est vrifie, la
squence dinstructions est excute
A la fin de lexcution de cette squence
dinstructions, la condition est de nouveau value
et on rpte lexcution de la squence
dinstructions tant que la condition est vrifie.
Ds que la condition devient fausse, lexcution
du programme se poursuit partir de la 1re
instruction qui suit immdiatement le mot-cl ftq.
2001/2002 DEUG MIAS-MASS 1re ann 119
5.2
5.2 -- La
La boucle
boucle "" tant
tant que
que ""
Remarques :
Si au premier passage la condition est value
FAUX, le corps de la boucle (la squence
dinstructions) nest jamais excut
Si la squence dinstructions ne change pas la
valeur de la condition, la squence dinstructions
sera excute sans que lon passe jamais la suite : on
excute une boucle infinie
Les variables qui interviennent dans la condition
doivent tre initialiser avant daborder la boucle

2001/2002 DEUG MIAS-MASS 1re ann 120


5.2
5.2 -- La
La boucle
boucle "" tant
tant que
que ""
Remarques :
Il est prfrable d'exprimer l'expression logique sous la
forme NON(condition(s) d'arrt).
Il est en effet plus simple de dterminer les raisons
d'arrter le processus rptitif que celles de continuer.
La forme de ce type de boucle devient donc :

tant que NON condition(s) d'arrt faire


squence d'instructions
ftq

2001/2002 DEUG MIAS-MASS 1re ann 121


5.2
5.2 -- La
La boucle
boucle "" tant
tant que
que ""
lire nom_donn
i1
lire nomi
tant que NON ((nomi = nom_donn) ou (fin de liste)) faire
i i+1
lire nomi
ftq
si nomi = nom_donn alors
crire adressei
sinon
crire "Le nom demand ne se trouve pas dans la liste."
fsi

2001/2002 DEUG MIAS-MASS 1re ann 122


5.2
5.2 -- La
La boucle
boucle "" tant
tant que
que ""
crire lalgorithme qui affiche la table de
multiplication de 6.
entier n
lire n
i1
tantque
tant i 10
queNON faire
(i > 10) faire
crire n, fois , i, font , n*i
i i+1
ftq

2001/2002 DEUG MIAS-MASS 1re ann 123


5.2
5.2 -- La
La boucle
boucle "" tant
tant que
que ""
Considrons aussi l'exemple suivant :
tant donns deux nombres entiers m et n positifs ou
nuls, calculer le PGCD.
L'algorithme d'Euclide permet de rsoudre ce
problme :
en prenant d'abord le reste de la division de m par n,
puis le reste de la division de n par ce premier reste,
etc.
jusqu' ce qu'on trouve un reste nul.
Le dernier diviseur utilis est le PGCD de m et n.

2001/2002 DEUG MIAS-MASS 1re ann 124


5.2
5.2 -- La
La boucle
boucle "" tant
tant que
que ""
Pour m=1386 et n=140, on a successivement :
1386 = 140 * 9 + 126
140 = 126 * 1 + 14
126 = 14 * 9 + 0
et le PGCD de 1386 et 140 est bien 14.
Dans cet exemple, il faut rpter le calcul du reste de
la division d'un nombre par un autre.
Appelons a le dividende, b le diviseur et r le reste

2001/2002 DEUG MIAS-MASS 1re ann 125


5.2
5.2 -- La
La boucle
boucle "" tant
tant que
que ""
entier m,n,a,b,r,PGCD
Dbut
lire m, n
am
bn
tant que NON(b = 0) faire
r a mod b
ab
br
ftq
PGCD a
crire "Le PGCD de",m,"et",n,"est",PGCD
Fin
2001/2002 DEUG MIAS-MASS 1re ann 126
5.4
5.4 Les
Les boucles
boucles en
en CC
En C, la boucle tant que se traduit par
WHILE ( <expression logique>)
instruction;
ou
WHILE ( <expression logique>) {
squence dinstructions;
}
2001/2002 DEUG MIAS-MASS 1re ann 127
Algorithme
Algorithme Euclide
Euclide (PGCD)
(PGCD)
Soit r le reste de la division euclidienne de a par b :
a = bq + r , r < b.
Tout diviseur commun de a et b divise aussi
r = a - bq, et rciproquement tout diviseur commun
de b et r divise aussi a = bq + r. Donc le calcul du
PGCD de a et b se ramne celui du PGCD de b et
r ; et on peut recommencer sans craindre une
boucle sans fin, car les restes successifs sont
strictement dcroissants. Le dernier reste non nul
obtenu est le PGCD cherch.

2001/2002 DEUG MIAS-MASS 1re ann 128


5.4
5.4 Les
Les boucles
boucles en
en CC
#include <stdio.h>
int m,n,a,b,r,PGCD;
main(){
printf("Nous allons calculer le PGCD de 2 nombres\n");
printf("Introduisez le premier nombre : "); a=60 b=42
scanf("%d",&m);
r=18
printf("Introduisez le second nombre : ");
scanf("%d",&n); 42+18 18 a=42 b=18
a=m; b=n;
42 18 r=6
while (b!=0) {
r=a % b; 2x18+6 18 a=18 b=6
a=b; b=r; 6 18
} r=0
PGCD=a; 6 6x3
a=6 b=0
printf("Le PGCD de %d et %d est %d\n",m,n,PGCD);
}
2001/2002 DEUG MIAS-MASS 1re ann 129
5.4
5.4 Les
Les boucles
boucles en
en CC
En C, la boucle pour se traduit par
for (exp_init ; exp_cond ; exp_evol)
<instruction;>
Ou
for (exp_init ; exp_cond ; exp_evol) {
<squence dinstructions;>
}

2001/2002 DEUG MIAS-MASS 1re ann 130


5.4
5.4 Les
Les boucles
boucles en
en CC
exp_init :
est une instruction d'initialisation ; elle est excute avant lentre
dans la boucle
exp_cond :
est la condition de continuation ; elle est teste chaque passage, y
compris lors du premier ; linstruction ou les instructions composant
le corps du for sont rptes tant que le rsultat de lexpression
exp_cond est VRAI
exp_evol :
Est une instruction de rebouclage ; elle fait avancer la boucle ;
elle est excute en fin de boucle avant le nouveau test de
passage.

2001/2002 DEUG MIAS-MASS 1re ann 131


5.4
5.4 Les
Les boucles
boucles en
en CC
#include <stdio.h>
main(){
int i,n;
printf("Quelle table souhaitez-vous afficher ? : ");
scanf("%d",&n);
for (i=1;i<=10;i++)
printf("%d fois %d font %d\n",n,i,n*i);
} ++ : oprateur dincrmentation
i++ i=i+1
-- : oprateur de dcrmentation
i-- i=i-1
2001/2002 DEUG MIAS-MASS 1re ann 132
5.4
5.4 Les
Les boucles
boucles en
en CC
#include <stdio.h>

main() {
int i;
for (i=1;i<=5;i++)
printf("%d : Ca monte\n",i);
printf("--------------------------\n");
for (i=5;i>=1;i--)
printf("%d : Ca descend\n",i);
}

2001/2002 DEUG MIAS-MASS 1re ann 133


1 : ca monte
2 : ca monte
3 : ca monte
4 : ca monte
5 : ca monte

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

5 : ca descend
4 : ca descend
3 : ca descend
2 : ca descend
1 : ca descend

2001/2002 DEUG MIAS-MASS 1re ann 134


5.4
5.4 Les
Les boucles
boucles en
en CC
Somme des 10 premiers entiers :
comparaison entre lutilisation et de la
boucle tant que de la boucle pour
somme = 0; somme = 0;
i=0; for (i=0;i<10;i++)
while (i<10) { somme = somme + i;
somme = somme + i;
i = i + 1;
}

2001/2002 DEUG MIAS-MASS 1re ann 135


5.4
5.4 Les
Les boucles
boucles en
en CC
Le langage C propose galement une autre forme
de la boucle tant que qui permet dexcuter au
moins une fois le corps de la boucle :
DO
<instruction;>
WHILE ( <expression logique>);
ou
DO {
<squence dinstructions;>
} WHILE ( <expression logique>);
2001/2002 DEUG MIAS-MASS 1re ann 136
5.4
5.4 Les
Les boucles
boucles en
en CC
#include <stdio.h>

main() {
int i, somme, N;
somme=0;
printf("Entrez le nombre d'lment que vous voulez sommer : ");
scanf("%d",&N);
i=1;
while (i<N) {
somme = somme +i;
i=i+1;
}
printf("Somme des %d premiers entiers est :
%d\n",N,somme);
}
2001/2002 DEUG MIAS-MASS 1re ann 137
5.4
5.4 Les
Les boucles
boucles en
en CC
#include <stdio.h>

main() {
int i, somme, N;
somme=0;
printf("Entrez le nombre d'lment que vous voulez sommer : ");
scanf("%d",&N);
i=1;
do {
somme = somme +i;
i=i+1;
} while (i<N);
printf("Somme des %d premiers entiers est : %d\n",N,somme);
}

2001/2002 DEUG MIAS-MASS 1re ann 138


4.5
4.5 -- Le
Le choix
choix multiple
multiple
Supposons que l'on veuille demander
l'utilisateur de choisir dans un menu une des
3 possibilits offertes.
Le choix prsent ne se limite pas une
alternative (soit - soit).
Mais plutt une expression du type
selon que

2001/2002 DEUG MIAS-MASS 1re ann 139


4.5
4.5 -- Le
Le choix
choix multiple
multiple
En LDA :
entier i
lire i
selon que
i=1 faire bloc1
ou que i=2 faire bloc2
ou que i=3 faire bloc3
autrement crire "Mauvais choix"
Fselon
autrement est comme dans lalternative facultative

2001/2002 DEUG MIAS-MASS 1re ann 140


4.5
4.5 -- Le
Le choix
choix multiple
multiple
Peut toujours scrire avec des alternatives :
entier i
lire i
Si i=1 alors
bloc1
sinon
si i=2 alors
bloc2
sinon
si i=3 alors
bloc3
sinon
crire "Mauvais choix"
Fsi
Fsi
Fsi

2001/2002 DEUG MIAS-MASS 1re ann 141


4.6
4.6 -- Le
Le choix
choix multiple
multiple en
en CC
La traduction du choix multiple en C est assez
restrictive, puisque la valeur de lexpression
conditionnant le choix doit tre entire (char,
short, int).
Linstruction switch permet de mettre en place
une structure dexcution qui permet des choix
multiples parmi des cas de mme type et faisant
intervenir uniquement des valeurs constantes
entires.
2001/2002 DEUG MIAS-MASS 1re ann 142
4.6
4.6 -- Le
Le choix
choix multiple
multiple en
en CC
Switch ( <expression entire> ) {
case <constante entire>:ATTENTION : si la dernire
<instruction 1> instruction nest pas linstruction
break les autres case ainsi

que le default seront excuts
<instruction N>

default :
<instruction 1>

<instruction N>
}

2001/2002 DEUG MIAS-MASS 1re ann 143


4.6
4.6 -- Le
Le choix
choix multiple
multiple en
en CC
#include <stdio.h>
int i; Entrez votre choix : 1
main() { premier choix
printf("Entrez votre choix : ");
scanf("%d",&i);
switch(i) { Entrez votre choix : 2
case 1:printf("premier choix\n"); deuxime choix
break; troisime choix
Autre choix que choix 1, 2 ou 3
case 2:printf("deuxime choix\n");
case 3:printf("troisime choix\n");
default:printf("Autre choix que choix 1, 2 ou 3\n");
}
}

2001/2002 DEUG MIAS-MASS 1re ann 144


4.6
4.6 -- Le
Le choix
choix multiple
multiple en
en CC
#include <stdio.h>
int i;
main() {
printf("Entrez votre choix : ");
scanf("%d",&i);
switch(i) {
case 1:printf("premier choix\n");
break;
case 2:printf("deuxime choix\n");
break;
case 3:printf("troisime choix\n");
break;
default:printf("Autre choix que choix 1, 2 ou 3\n");
}
}

2001/2002 DEUG MIAS-MASS 1re ann 145


Transition
Transition
Les variables utilises jusqu prsent sont
parfois inadaptes au traitement raliser
Difficult den utiliser un nombre important
Particulirement lorsquil sagit de valeurs de
mme type
Exemples : relevs mensuels, statistiques
journalires

2001/2002 DEUG MIAS-MASS 1re ann 146


Chapitre
Chapitre 66 :: Les
Les tableaux
tableaux

2001/2002 DEUG MIAS-MASS 1re ann 147


6.1
6.1 -- Introduction
Introduction
Imaginons que nous ayons plusieurs traitements
effectuer sur des consommations mensuelles daccs
Internet (en nombre de minutes)
Pour conserver les valeurs en mmoire, il est possible de
prendre 12 variables numriques, cons_Internet1,
cons_Internet2, , cons_Internet12.
Pour calculer la consommation mensuelle moyenne sur
lanne, la formule suivante peut tre crite :
Moyenne (cons_Internet1 + cons_Internet2 + cons_Internet3 +
cons_Internet4 + cons_Internet5 + cons_Internet6 + cons_Internet7 +
cons_Internet8 + cons_Internet9 + cons_Internet10 + cons_Internet11
+ cons_Internet12) / 12
Difficile faire avec 365 consommations journalires

2001/2002 DEUG MIAS-MASS 1re ann 148


6.1
6.1 -- Introduction
Introduction
Imaginons que nous ayons compter le nombre de fois,
chacune des notes, de 0 20, a t attribue une
population dun grand nombre dtudiants.
Lalgorithme pourrait tre le suivant :
Initialiser les 21 variables 0
Lire n
Tant que n 99 faire
si n=0 alors note0 note0 + 1
si n=1 alors note1 note1 + 1

si n=20 alors note20 note20 + 1
Ecrire donnez la note suivante ou 99 pour terminer
lire n
Ftq

2001/2002 DEUG MIAS-MASS 1re ann 149


6.1
6.1 -- Introduction
Introduction
Pour simplifier cet algorithme, il suffirait de
pouvoir dsigner directement la note qui
correspond la valeur de la variable n
La structure de donnes tableau regroupe une
famille de variables et permet de rsoudre ce
genre de problme

2001/2002 DEUG MIAS-MASS 1re ann 150


6.2
6.2 Tableaux
Tableaux un
un indice
indice
Un tableau (encore appel table ou variable indice) est
un ensemble de donnes, qui sont toutes de mme type,
dsign par un identificateur unique (le nom du
tableau), et qui se distinguent les une des autres par
leur numro dindice
Exemple : les tempratures sous abri 15h00 des jours
dune semaine seront les 7 valeurs de la variable
temprature, qui est un tableau de 7 lments
(variables) de type rel dsign par :
Temprature[1], Temprature[2], , Temprature[7],

2001/2002 DEUG MIAS-MASS 1re ann 151


6.2
6.2 Tableaux
Tableaux un
un indice
indice
Reprsentation graphique :
temprature Nom du tableau

1 25
2 30 Cette case du tableau
3 23 reprsente la variable
Temprature[3] dont la valeur est 23
4 36
5 33
6 22
7 27

2001/2002 DEUG MIAS-MASS 1re ann 152


6.2
6.2 Tableaux
Tableaux un
un indice
indice
Lutilisation dun indice variable prsente le principal
intrt des tableaux
Si la variable k entire a pour valeur 3, alors
Temprature[k] = 23
Temprature[k+1] = 36
Temprature[k-1] = 30
Mais attention lcriture de Temprature[-2] ou
Temprature[12] nont pas de sens car elles font
rfrence des lments inexistants

2001/2002 DEUG MIAS-MASS 1re ann 153


6.2
6.2 Tableaux
Tableaux un
un indice
indice
De mme le calcul de la temprature moyenne de la
semaine se fera de faon trs simple :
Entiers somme, k
Rel moyenne
somme 0
Pour k 1 7 faire
somme somme + Temprature[k]
fpour
moyenne somme / 7
2001/2002 DEUG MIAS-MASS 1re ann 154
6.3
6.3 Dclaration
Dclaration des
des tableaux
tableaux
Comme tout objet un tableau doit tre dclar
avant tout utilisation
3 lments fondamentaux dfinissent un tableau
un indice :
Son nom : identificateur respectant les rgles
classiques des identificateurs dun programme
Le nombre de ses lments
Le type de donnes quil contient
Tableau de 7 entiers Temprature
Tableau de [1..7] dentiers Temprature
2001/2002 DEUG MIAS-MASS 1re ann 155
6.4
6.4 Tableaux
Tableaux plusieurs
plusieurs indices
indices
1 2 j n

2
3

2001/2002 DEUG MIAS-MASS 1re ann 156


6.5
6.5 -- Les
Les tableaux
tableaux en
en CC
Exemple :
int a[13];
char b[8][5][10];
float d [6][15][9];
Principe :
<type><identificateur>[taille1][taille2][taillek];
Nimporte quelle rfrence une case peut tre utilis
comme une simple variable :
int i,j,k;
a[i]
b[i][j][k]
2001/2002 DEUG MIAS-MASS 1re ann 157
6.5
6.5 -- Les
Les tableaux
tableaux en
en CC
La taille correspond au nombre de cases du
tableau
Attention : les indices, permettant de localiser le
contenu dune case dun tableau, varient entre
0 et taille-1
Il est possible daffecter un tableau un
ensemble de valeurs ds sa dclaration par :
<type><identificateur>[taille1][taille2]={val1, val2, };
Exemple : 1 2 3
Int matrice[2][3]={1,2,3,4,5,6} 4 5 6

2001/2002 DEUG MIAS-MASS 1re ann 158


Exemple
Exemple de
de programme
programme CC
#include <stdio.h>

main(){
int i, somme, temperature[7];
float moyenne;
for (i=0;i<7;i++){
printf("Temperature[%d]=",i);
scanf("%d",&temperature[i]);
}
somme=0;
for (i=0;i<7;i++)
somme=somme+temperature[i];
moyenne=somme/7;
printf("la temprature moyenne de la semaine est %f\n",moyenne);
}

2001/2002 DEUG MIAS-MASS 1re ann 159


Chapitre
Chapitre 77 :: Les
Les sous-programmes
sous-programmes

2001/2002 DEUG MIAS-MASS 1re ann 160


7.1
7.1 -- Introduction
Introduction
Jusquici nous avons tudi les algorithmes selon une
approche simple :
Un seul algorithme exprime une fonction
qui partir de donnes initiales produit un rsultat
Cas plus gnral :
Le calcul dune fonction est le rsultat de plusieurs
algorithmes disjoints
chaque algorithme va donc correspondre un programme
Lexcution restera quand mme squentiel un seul
programme sexcute et excute lune de ses instructions

2001/2002 DEUG MIAS-MASS 1re ann 161


Exemple
Exemplesimple
simpledappels
dappelsde
desous-programmes
sous-programmes

#include <stdio.h>

main(){
float X, Y;
printf("Entrez la valeur : "); appel du sous-programme daffichage
scanf(%f,&X); appel du sous-programme de lecture
Y = cos(X); appel du sous-programme cos
printf(" %f ,Y); appel du sous-programme daffichage
}

2001/2002 DEUG MIAS-MASS 1re ann 162


Fonctionnement
Fonctionnement
Un programme particulier (cosinus), le
programme principal, lance successivement un
ensemble de sous-programmes, chacun deux
pouvant dailleurs lancer ses propres sous-
programmes.
Cela revient suspendre lexcution du
programme en cours, autrement dit le processus du
programme principal et lancer le processus
associ au sous-programme.
2001/2002 DEUG MIAS-MASS 1re ann 163
Fonctionnement
Fonctionnement

Processus
courant

Suspension du
processus appelant Sous-programme appel
Nouveau processus courant
Reprise du
processus appelant
Retour vers
lappelant
2001/2002 DEUG MIAS-MASS 1re ann 164
Intrts
Intrts
Diviser pour mieux rgner
Mthode modulaire de conception utilisant
le dcoupage dun problme en sous-
problmes distincts
Permet de rutiliser des programmes (sous-
programmes) dj dvelopps et surtout
valids

2001/2002 DEUG MIAS-MASS 1re ann 165


Problmatique
Problmatiquede
delusage
lusagedes
dessous-programmes
sous-programmes

Quel est le rle du sous-programme qui est excut


le premier ?
Peut-on dfinir des variables communes plusieurs
sous-programmes et comment sont-elles dfinies
et/ou modifies ?
Comment peut-on transmettre des informations
spcifiques un sous-programme lors de son
lancement ?
Comment un sous-programme peut renvoyer des
informations au programme appelant ?
2001/2002 DEUG MIAS-MASS 1re ann 166
7.2
7.2Environnement
Environnementdun
dunsous-programme
sous-programme

Lenvironnement dun sous-programme est


lensemble des variables accessibles et des valeurs
disponibles dans ce sous-programme, en
particulier celles issues du programme appelant.
Trois sortes de variables sont accessibles dans le
sous-programme :
Les variables dites globales
Les variables dites locales
Les paramtres formels

2001/2002 DEUG MIAS-MASS 1re ann 167


7.2
7.2Environnement
Environnementdun
dunsous-programme
sous-programme

Les variables dites globales :


Celles dfinies dans le programme appelant et
considres comme disponibles dans le sous-
programme
Elles peuvent donc tre rfrences partout
dans le programme appelant et dans le sous-
programme appel
Leur porte est globale

2001/2002 DEUG MIAS-MASS 1re ann 168


7.2
7.2Environnement
Environnementdun
dunsous-programme
sous-programme

Les variables dites locales


Celles dfinie dans le corps du sous-programme,
utiles pour son excution propre et accessibles
seulement dans ce sous-programme
Elles sont donc invisibles pour le programme
appelant
Leur porte est locale

2001/2002 DEUG MIAS-MASS 1re ann 169


7.2
7.2Environnement
Environnementdun
dunsous-programme
sous-programme

Les paramtres formels


Les variables identifies dans le sous-
programme qui servent lchange
dinformation entre les programmes appelant et
appel
Leur porte est galement locale.

2001/2002 DEUG MIAS-MASS 1re ann 170


7.3
7.3 Les
Les procdures
procdures
Il sagit de sous-programmes nomms
qui reprsentent une ou plusieurs
actions, et qui peuvent calculer et
retourner une ou plusieurs valeurs.
Une procdure P doit tre dfinie
une seule fois dans un algorithme A
et peut tre appele plusieurs fois par
A ou par une autre procdure de
A .
2001/2002 DEUG MIAS-MASS 1re ann 171
7.3
7.3 Les
Les procdures
procdures

Entres Procdure Sorties

2001/2002 DEUG MIAS-MASS 1re ann 172


7.3
7.3 Les
Les procdures
procdures
La dfinition dune procdure comprend trois
parties:
Partie 1 : Lentte
Procdure Nom_procdure (Liste de paramtres formels);
Partie 2 : Dclaration des variables locales
type_variable_i Nom_variable_i
Partie 3 : Corps de la procdure
Dbut
Instructions
Fin

2001/2002 DEUG MIAS-MASS 1re ann 173


7.3
7.3 Les
Les procdures
procdures
Exemple :
Calcul de la somme de deux matrices carres A
et B.
Pour calculer la somme de deux matrices il faut
lire dabord ces deux matrices.
Ainsi, au lieu dcrire deux fois le sous-
programme de lecture dune matrice, il est
possible dcrire plutt une procdure et de
lutiliser pour saisir A et B.

2001/2002 DEUG MIAS-MASS 1re ann 174


7.3.1
7.3.1--Paramtres
Paramtresformels
formels&
&
paramtres
paramtreseffectifs
effectifs
Dans la dclaration de la procdure Saisir , Les
paramtres X et dim sont appels paramtres
formels dans la mesure o ils ne possdent pas encore de
valeurs.
Lors de lutilisation de la procdure dans lalgorithme
principal, A , B et n sont des paramtres
effectifs (ou rels).
Remarque importante: Dans une procdure, le nombre
de paramtres formels est exactement gal au nombre
paramtres effectifs.
De mme chaque paramtre formel doit correspondre
un paramtre effectif de mme type.
2001/2002 DEUG MIAS-MASS 1re ann 175
7.3.2
7.3.2 -- Passage
Passage des
des paramtres
paramtres
Lors de la dfinition dune procdure il est
possible de choisir entre trois modes de
transmission de paramtres:
Mode donne (En C on parle de Passage par
valeur)
Mode Rsultat (En C on parle de Passage par
adresse).
Mode Donne/Rsultat (En C on parle de
Passage par adresse):
2001/2002 DEUG MIAS-MASS 1re ann 176
7.3.2.1
7.3.2.1 Mode
Mode donnes
donnes
Rappel
Dclarer une variable de nom X Rserver un
emplacement mmoire pour X
Lors de lappel dune procdure un emplacement
mmoire est rserv pour chaque paramtre formel.
De mme, un emplacement mmoire est aussi
rserv pour chaque paramtre effectif lors de sa
dclaration.
Cependant, lors de lappel de la procdure, les
valeurs des paramtres effectifs sont copies dans
les paramtres formels.

2001/2002 DEUG MIAS-MASS 1re ann 177


7.3.2.1
7.3.2.1 Mode
Mode donnes
donnes
Lexcution des instructions de la procdure se fait avec
les valeurs des paramtres formels et toute modification
de ces derniers ne peut affecter en aucun cas celles des
paramtres effectifs.
Cest le cas :
dans la procdure Saisir du paramtre dim
dans la procdure Afficher des paramtres Y et dim
Dans ce type de passage de paramtres, les valeurs des
paramtres effectifs sont connues avant le dbut de
lexcution de la procdure et jouent le rle uniquement
dentres de la procdure.

2001/2002 DEUG MIAS-MASS 1re ann 178


7.3.2.1
7.3.2.1 Mode
Mode donnes
donnes
En C, en principe il nexiste que des fonctions.
Une fonction qui ne retourne aucun rsultat
(type void) peut traduire la notion de procdure.
Procdure Afficher(Donnes Y:Matrice, Donnes n:entier)
Se traduit en C par :
void Afficher(Matrice Y, int n);
Il y a eu initialisation des paramtres formels par
des valeurs lors de lappel de la procdure
2001/2002 DEUG MIAS-MASS 1re ann 179
7.3.2.1
7.3.2.1 Mode
Mode donnes
donnes
Procdure carrs(Donnes X,Y :entiers)
Entiers A,B
Entiers M1,M2
Dbut
AX Dbut
B Y Lire M1, M2
A AA carrs(M1,M2)
B BB
crire M1= ,M1, M2= ,M2
Fin
Fin

2001/2002 DEUG MIAS-MASS 1re ann 180


7.3.2.1
7.3.2.1 Mode
Mode donnes
donnes
Procdure carrs_bis(Donnes X,Y :entiers)
Dbut
X XX Entiers M1,M2
Y YY Dbut
crire X= ,X, Y= ,Y
Lire M1, M2
Fin
carrs_bis(M1,M2)
crire M1= ,M1, M2= ,M2
Fin

2001/2002 DEUG MIAS-MASS 1re ann 181


7.3.2.2
7.3.2.2 Mode
Mode rsultats
rsultats
Passage par adresse, par variable
La diffrence principale entre le passage par valeur et le
passage par adresse cest que dans ce dernier un seul
emplacement mmoire est rserv pour le paramtre
formel et le paramtre effectif correspondant.
Dans ce cas chaque paramtre formel de la procdure
utilise directement lemplacement mmoire du paramtre
effectif correspondant.
Toute modification du paramtre formel entrane la mme
modification du paramtre effectif correspondant.
2001/2002 DEUG MIAS-MASS 1re ann 182
7.3.2.2
7.3.2.2 Mode
Mode rsultats
rsultats
Dans ce mode de passage de paramtres, les
valeurs des paramtres effectifs sont inconnues
au dbut de lexcution de la procdure.
Un paramtre formel utilisant ce type de
passage ne peut tre que le rsultat de la
procdure. Do le nom du mode Rsultat .
Pour spcifier dans une procdure quil sagit du
mode Rsultat , il suffit dajouter dans
lalgorithme la mention Rsultat avant le
paramtre formel
Dans le programme Pascal il faut faire prcder
le paramtre du mot cl Var

2001/2002 DEUG MIAS-MASS 1re ann 183


7.3.2.2
7.3.2.2 Mode
Mode rsultats
rsultats
Procdure Somme(Donnes D,F:entier, Rsultat R:entier)
Se traduit en C par :
void Somme(int D, int F, int *R);
Contrairement au passage par valeur,
dans ce cas lappel de la procdure les
valeurs des paramtres effectifs ne sont
pas copies dans les paramtres formels.
Ces derniers utilisent directement
lemplacement mmoire (ou ladresse)
des paramtres effectifs.

2001/2002 DEUG MIAS-MASS 1re ann 184


Reprsentation
Reprsentation mmoire
mmoire
Sens de transmission des donnes

A[1] A[2] A[3] X[1] X[2] X[3]


15 8 2 15 8 2
Passage par valeur

X[1] A[1] X[2] A[2] X[3] A[3]


15 8 2
Passage par adresse

2001/2002 DEUG MIAS-MASS 1re ann 185


7.3.2.3
7.3.2.3 Mode
Mode Donnes/Rsultats
Donnes/Rsultats
Passage par adresse, par rfrence
Les paramtres formels jouent simultanment
le rle de donne (i.e. dentre) et de rsultat
(sortie) de la procdure: do lappellation
Donne/Rsultat .
A lappel de la procdure, les valeurs des
paramtres effectifs sont connues au dbut de
lexcution de la procdure mais elles seront
modifies la fin de cette excution: dou la
seconde appellation Donne Modifie .

2001/2002 DEUG MIAS-MASS 1re ann 186


7.3.2.3
7.3.2.3 Mode
Mode Donnes/Rsultats
Donnes/Rsultats
Ces deux derniers modes (i.e.
Rsultat et Donne Modifie) se
distinguent uniquement au niveau
de lalgorithme.
En C ces deux derniers modes sont
exactement identiques : il sagit
dans les deux cas de passage par
adresse.
2001/2002 DEUG MIAS-MASS 1re ann 187
7.3.2.3
7.3.2.3 Mode
Mode Donnes/Rsultats
Donnes/Rsultats
On obtient donc la mme reprsentation
mmoire que pour le mode Rsultat :

X[1] A[1] X[2] A[2] X[3] A[3]


15 8 2
Passage par adresse

2001/2002 DEUG MIAS-MASS 1re ann 188


7.3.2.3
7.3.2.3 Mode
Mode Donnes/Rsultats
Donnes/Rsultats
Pour spcifier dans une procdure quil
sagit du mode Donne/Rsultat (ou
donne modifie), il suffit dajouter dans
lalgorithme la mention
Donne/Rsultat
ou Donne Modifie
devant le paramtre formel
Dans le programme C le paramtre
formel doit tre un pointeur
2001/2002 DEUG MIAS-MASS 1re ann 189
7.3.2.3
7.3.2.3 Mode
Mode Donnes/Rsultats
Donnes/Rsultats
Exemple :
Algorithme dune procdure permettant de
remplacer par 0 toutes les valeurs infrieures 10
des matrices.
La matrice quil faut fournir cette procdure doit
tre une donne ( i.e. qui contient dj des
valeurs).
Le rsultat de cette procdure cest cette mme
matrice modifie.
Ainsi, dans ce cas le mode que lon doit utiliser est
Donne/Rsultat (ou Donne modifie).

2001/2002 DEUG MIAS-MASS 1re ann 190


Procdure Remplacer (Donne Modifie
M:Matrices;Donne dim: entier);
entiers i, j
Dbut
Pour i1 dim faire
Pour j 1 dim faire
Si M[i, j]<10 alors
M[i, j] 0
Fsi
Fpour
Fpour
Fin;

2001/2002 DEUG MIAS-MASS 1re ann 191


7.4
7.4 Les
Les fonctions
fonctions
Une fonction est un sous-programme qui
calcule, partir de paramtres ventuels,
une valeur dun certain type utilisable dans
une expression du programme appelant.
Les langages de programmation proposent
de nombreuses fonctions prdfinies : partie
entire dun nombre, racine carre,
fonctions trigonomtriques, etc.
2001/2002 DEUG MIAS-MASS 1re ann 192
7.4
7.4 Les
Les fonctions
fonctions
Les fonctions sont comparables aux
procdures deux exceptions prs :
Leur appel ne constitue pas lui seul une
instruction, mais figure dans une expression ;
Leur excution produit un rsultat qui prend la
place de la fonction lors de lvaluation de
lexpression.

2001/2002 DEUG MIAS-MASS 1re ann 193


7.4
7.4 Les
Les fonctions
fonctions
La dfinition dune fonction comprend aussi trois parties:
Partie 1 : Lentte
Fonction Nom_fonction(Liste de paramtres formels): Type_fonction
Partie 2 : Dclaration des variables locales
type_variable_i Nom_variable_i
Partie 3 : Corps de la fonction
Dbut
Instructions
Retour valeur retourne
Fin

2001/2002 DEUG MIAS-MASS 1re ann 194


7.4
7.4 Les
Les fonctions
fonctions
Il sagit donc de sous-programmes nomms et
typs qui calculent et retournent une et une
seule valeur.
Le type de cette valeur est celui de la fonction.

Entres Fonction Sortie

2001/2002 DEUG MIAS-MASS 1re ann 195


7.4.1
7.4.1 -- Passage
Passage des
des paramtres
paramtres
Lors de la dfinition dune fonction il ne doit,
normalement, tre utilis quun seul mode de
transmission de paramtres :
Mode donne (En C on parle de Passage par
valeur)
Cependant les langages de programmation
permettent dutiliser les autres modes.

2001/2002 DEUG MIAS-MASS 1re ann 196


7.4.2
7.4.2 Fonction
Fonction :: exemple
exemple
Fonction permettant de calculer e x pour x
donne avec une prcision 10-3 et sachant
que :
2 n
x x x ... x
e 1! 2! n!
1

2001/2002 DEUG MIAS-MASS 1re ann 197


Constante utilise
E=0.001
Variables
Rel x
fonction expo(Donne x: rel): rel
Entier i
rel f, ex
Dbut
f 1 ex 1 i 1
Tant que f E faire
ff(x/i)
ex ex + f
ii+1
ftq
Retour ex;
Fin

2001/2002 DEUG MIAS-MASS 1re ann 198


Algorithme
Algorithme principal
principal

Dbut
crire Donner la valeur de x:
Lire x
crire Lexponentielle de x= , x, est : , expo(x)
Fin

2001/2002 DEUG MIAS-MASS 1re ann 199


7.4.3
7.4.3 Traduction
Traduction en
en CC
#include <stdio.h>

#define E 0.001
#define E 0.001

float expo(float x) {
int i; float f,ex;
f=1; ex=1; i=1;
while (f>=E) {
f=f*(x/i);
ex=ex+f;
i++;
}
return ex;
}
2001/2002 DEUG MIAS-MASS 1re ann 200
7.4.3
7.4.3 Traduction
Traduction en
en CC
/*Programme principal */
main() {
float x;
printf("Donner la valeur de x : ");
scanf("%f",&x);
printf("L'exponentiel de x=%f est %f\n",x,expo(x));
}

2001/2002 DEUG MIAS-MASS 1re ann 201


7.5
7.5 Fonctions
Fonctions rcursives
rcursives
Expression dalgorithme sous forme rcursive :
dfinition plus concise
Dmonstration par rcurrence
Principe :
Utiliser pour dcrire lalgorithme sur une donne d,
lalgorithme lui mme appliqu un sous-ensemble de
d ou une donne d plus petite
Une fonction rcursive possde donc la proprit
de sappeler elle-mme dans sa dfinition
Permet de coder des fonctions dfinies partir de
relations de rcurrence
2001/2002 DEUG MIAS-MASS 1re ann 202
7.5
7.5 Fonctions
Fonctions rcursives
rcursives
Exemple calcul du factoriel dun nombre
entier :
1re dfinition :
n! = 1 * 2 * 3 * 4 * * n
Traduction par une boucle :
Je vous coute
2me dfinition :
n! 1 si n=0
n * (n-1)!

2001/2002 DEUG MIAS-MASS 1re ann 203


7.5
7.5 Fonctions
Fonctions rcursives
rcursives
fonction factoriel(Donne n: entier): entier
Entier fac
Dbut
si n = 0 alors
fac 1
sinon
fac n * factoriel(n-1)
fsi
Retour fac;
Fin

2001/2002 DEUG MIAS-MASS 1re ann 204


7.5
7.5 Fonctions
Fonctions rcursives
rcursives
Drouler cet algorithme pour :
factoriel(5)
Factoriel(5) 5 * 24 =

Factoriel(4) 4 * 6 = 24

Factoriel(3) 3*2=6
Factoriel(2) 2*1=2
1*1=1
. Factoriel(1)
- Factoriel(0) 1

2001/2002 DEUG MIAS-MASS 1re ann 205


Chapitre
Chapitre 88 :: Les
Les algorithmes
algorithmes de
de tri
tri

2001/2002 DEUG MIAS-MASS 1re ann 206


8.1
8.1 -- Introduction
Introduction
Un tableau T est dit tri en ordre croissant
si tous les lments conscutifs du tableau
vrifient :
T[i-1] T[i]
Il est admis quun
tableau vide est tri
tableau ne contenant quun seul lment est tri

2001/2002 DEUG MIAS-MASS 1re ann 207


8.1
8.1 -- Introduction
Introduction
Do la dfinition :
Un tableau vide (n=0) est ordonn (tri),
Un tableau contenant un seul lment (n=1) est
ordonn,
Un tableau T[1..n], n>1, est ordonn si
i [2..n], T[i-1] T[i]

2001/2002 DEUG MIAS-MASS 1re ann 208


8.1
8.1 -- Introduction
Introduction
Tri dun tableau
Soit un vecteur (tableau une dimension) T[1..n]
valeurs dans un ensemble E de valeurs muni dune
relation dordre note <
Trier le vecteur T consiste construire un vecteur
T[1..n] tel que :
T soit tri,
T et T contiennent les mmes lments.
Le plus souvent T et T sont le mme vecteur ; T
est construit en permutant entre eux les lments
de T .
2001/2002 DEUG MIAS-MASS 1re ann 209
8.2
8.2 Tri
Tri par
par remplacement
remplacement
Cette mthode simple et intuitive est
malheureusement trs peu performante.
Elle consiste construire un tableau Ttri[1..n]
partir de T[1..n] tel que :
Ttri[i-1] Ttri[i] , i [2..n]
Principe :
Identifier le maximum du tableau
Rechercher le minimum du tableau T
Recopier ce minimum dans Ttri la position i
Remplacer le minimum du tableau T par le maximum
Recommencer pour i+1

2001/2002 DEUG MIAS-MASS 1re ann 210


8.2
8.2 Tri
Tri par
par remplacement
remplacement
Procdure tri_remplacement (D/R T[1..n], R Ttri[1..n] : tableau de )
Entier i,j
E max
Dbut Fonction maximum( D T[1..n] : tableau de ):E
max maximum(T[1..n])Entier i
i1 E max
tant que i<n faire Dbut
j indice_min(T[1.n]) max T[1]
Ttri[i] T[j] Pour i 2 n faire
T[j] max si T[i]>max alors
i i+1
max T[i]
fsi
ftq
fpour
Ttri[n] max
Retour max
Fin
Fin
2001/2002 DEUG MIAS-MASS 1re ann 211
8.2
8.2 Tri
Tri par
par remplacement
remplacement
Pour chaque lment rang dans le tableau
Ttri, il faut parcourir tout le tableau T et
non une partie du tableau T
Ncessite un 2me tableau, or si le nombre
dlments trier est important, cet
algorithme requiert donc un espace
mmoire double.

2001/2002 DEUG MIAS-MASS 1re ann 212


8.3
8.3 -- Tri
Tri par
par insertion
insertion
Cette mthode de tri insre (au ime
passage) le ime lment T[i] la bonne
place parmi T[1],T[2]...T[i-1].
Aprs l'tape i, tous les lments entre la
premire et la ime position sont tris.
Il existe plusieurs mthode de tri par
insertion selon le principe qui est utilis
pour rechercher le rang de llment
insrer parmi les lments du dbut de la
liste dj tris
2001/2002 DEUG MIAS-MASS 1re ann 213
8.3
8.3 -- Tri
Tri par
par insertion
insertion
Rang de T[i]

0 1 k i temp

Principe de lalgorithme :
pour i 2 n faire
dplacer T[i] vers le dbut du tableau jusqu'
la position j<=i telle que
T[j] < T[k] pour j<=k<i et (ou bien T[j]>=T[j-1] ou bien
j=1).

2001/2002 DEUG MIAS-MASS 1re ann 214


8.3
8.3 -- Tri
Tri par
par insertion
insertion
4 2 0 5 3 Vecteur de dpart

2 4 0 5 3 Les cellules 1 2 sont tries

0 2 4 5 3 Les cellules 1 3 sont tries

0 2 4 5 3 Les cellules 1 4 sont tries

0 2 3 4 5 Les cellules 1 5 sont tries

2001/2002 DEUG MIAS-MASS 1re ann 215


8.3
8.3 -- Tri
Tri par
par insertion
insertion
Procdure tri_insertion (D/R T[1..n], : tableau de )
Entier i,j
Dbut
pour i 2 n faire
j i-1
tant que j 1 et T[j] > T[j+1] faire
change(T,,j+1,,j) Exemple visuel
j j-1
ftq
fpour
Fin

2001/2002 DEUG MIAS-MASS 1re ann 216


8.4
8.4 Tri
Tri par
par slection
slection
Le principe du tri par slection d'un
vecteur est d'aller chercher le plus petit
lment du vecteur pour le mettre en
premier, puis de repartir du second,
d'aller chercher le plus petit lment
pour le mettre en second etc.
Au ime passage, on slectionne llment
ayant la plus petite valeur parmi les
positions i..n et on l'change avec T[i].

2001/2002 DEUG MIAS-MASS 1re ann 217


8.4
8.4 Tri
Tri par
par slection
slection
4 2 0 5 3 Vecteur de dpart

0 2 4 5 3 Le plus petit lment est sa place

0 2 4 5 3 Les 2 plus petits lments sont leur place

0 2 3 5 4 Les 3 plus petits lments sont leur place

0 2 3 4 5 Les 4 plus petits lments sont leur place

2001/2002 DEUG MIAS-MASS 1re ann 218


8.4
8.4 Tri
Tri par
par slection
slection
Procdure tri_slection (D/R T[1..n], : tableau de )
Entier i,j
Dbut
pour i 1 n faire
pour j i+1 n faire
si T[i] > T[j] alors
change(T,i,j) Exemple visuel
fsi
fpour
fpour
Fin

2001/2002 DEUG MIAS-MASS 1re ann 219


8.5
8.5 Tri
Tri bulles
bulles
Le principe du tri bulles (bubble
sort) est de comparer deux deux
les lments e1 et e2 conscutifs
d'un tableau et d'effecteur une
permutation si e1 > e2 .
On continue de trier jusqu' ce
qu'il n'y ait plus de permutation.

2001/2002 DEUG MIAS-MASS 1re ann 220


8.5
8.5 Tri
Tri bulles
bulles
4 2 0 5 3 Vecteur de dpart

4 0 2 3 5 Fin du premier passage

0 2 3 4 5 Fin du deuxime et dernier passage

2001/2002 DEUG MIAS-MASS 1re ann 221


8.5
8.5 Tri
Tri bulles
bulles
Procdure tri_bulles (D/R T[1..n], : tableau de )
Entier i,j
Dbut
pour i 1 n-1 faire
pour j n i+1 faire {dcroissant}

si T[j-1] > T[j] alors


change(T,j-1,j)
fsi
fpour
fpour
Fin

2001/2002 DEUG MIAS-MASS 1re ann 222


8.5
8.5 Tri
Tri bulles
bulles
valuation du cot de lalgorithme
Les comparaisons sont effectues lintrieur de la
boucle la plus interne
Pour i=1, n-1 comparaisons sont effectues
Pour i=2, n-2 comparaisons sont effectues

Pour i=n-1, 1 comparaison est effectue
Le nombre total de comparaisons effectues est donc :
n1
n(n1)

k 1
k
2
2001/2002 DEUG MIAS-MASS 1re ann 223
8.5
8.5 Tri
Tri bulles
bulles
Optimisation de lalgorithme
Aprs avoir trait i-1 lments (1 i n)
Les lments de 1..i-1 sont tris
Tous les lments compris entre 1..i-1 sont infrieurs aux
lments compris entre i..n
T[1..i-1] T[i..n]
Les lments compris entre i..n ne sont pas traits
Si les lments compris entre i..n sont tris la suite des
permutations effectues, il est inutile de poursuivre car :
T[1..i-1] tri ; T[1..i-1] T[i..n] ; T[i..n] tri T[1..n] tri
Exemple de BATEAUX

2001/2002 DEUG MIAS-MASS 1re ann 224


Procdure tri_bulles2 (D/R T[1..n], : tableau de )
Entier i,j
Boolen onapermut
Dbut
i 1
onapermut VRAI
Tant que onapermut faire
onapermut FAUX
pour j n i+1 faire {dcroissant}
si T[j-1] > T[j] alors
change(T,j-1,j)
onapermut VRAI
fsi
fpour
i i+1
ftq
Fin

2001/2002 DEUG MIAS-MASS 1re ann 225


PRODECURE Tri_bulle (D/R T[1..n], : tableau de )
Booleen permut
Dbut
REPETER
permut FAUX
POUR i 1 N-1 FAIRE
SI T[i] > T[i+1] ALORS
change(T,i,i+1)
permut VRAI
FSi Exemple visuel
Fpour
Jusqu permut = FAUX
FIN

2001/2002 DEUG MIAS-MASS 1re ann 226


8.6
8.6 Tri
Tri indirect
indirect
Ce tri utilise un tableau auxiliaire qui indique, pour
chaque lment du tableau trier, le rang que celui-
ci devrait occuper dans le tableau tri.
Le principe consiste compter, pour chaque
lment du tableau trier, le nombre dlments
qui lui sont infrieurs ou gaux. Le nombre trouv
donnera la place (lindice) de cet lment dans le
tableau tri
Le tri se fait donc ensuite par l'intermdiaire de
cet index
2001/2002 DEUG MIAS-MASS 1re ann 227
8.6
8.6 Tri
Tri indirect
indirect
Procdure tri_indirect (D/R T[1..n], : tableau de )
Entier i
Tableau dentier ind
Dbut
pour i 1 n faire
ind[i] 1
fpour
COMPTAGE DES ELEMENTS
pour i 1 n faire
Ttri[ind[i]] T[i]
fpour
Fin

2001/2002 DEUG MIAS-MASS 1re ann 228


8.6
8.6 Tri
Tri indirect
indirect
COMPTAGE DES ELEMENTS
pour i 1 n-1 faire
pour k 1 n faire
si T[k] < T[i] alors
ind[i] ind[i] + 1
fsi
fpour Exemple visuel
fpour

2001/2002 DEUG MIAS-MASS 1re ann 229


8.6
8.6 Tri
Tri indirect
indirect
AMELIORATION DU COMPTAGE DES ELEMENTS
pour i 1 n-1 faire
pour k i+1 n faire
si T[i] < T[k] alors
ind[i] ind[i] + 1
sinon
ind[k] ind[k] + 1
fsi
fpour
fpour

2001/2002 DEUG MIAS-MASS 1re ann 230


Chapitre
Chapitre 99 ::
Les
Les algorithmes
algorithmes de
de recherche
recherche

2001/2002 DEUG MIAS-MASS 1re ann 231


9.1
9.1 -- Introduction
Introduction
Le but de des algorithmes de recherche est de trouver
un lment donn parmi une liste dlments fourni
par un vecteur.
9.2 Recherche squentielle dans un tableau non tri
On sait faire
Parcourir le tableau jusqu ce quon trouve llment
recherch ou quon ait atteint la fin du tableau
Dans le pire des cas ncessitera n comparaisons (n tant le
nombre dlments du tableau)
Cas o llment recherch nappartient pas au tableau

2001/2002 DEUG MIAS-MASS 1re ann 232


9.3
9.3 Recherche
Recherche squentielle
squentielle dans
dans
un
un tableau
tableau tri
tri
On sait faire
Parcourir le tableau jusqu ce quon trouve llment
recherch ou un lment suprieur llment
recherch ou encore quon ait atteint la fin du tableau
Dans le pire des cas ncessitera n comparaisons (n tant le
nombre dlments du tableau)
Cas o llment recherch est plus grand que le dernier lment
du tableau (i.e lment dindice n)
Amlioration possible :
Regarder si llment recherch nest pas plus grand que le
dernier lment du tableau
Mais le problme demeure si llment recherch est le dernier
lment du tableau

2001/2002 DEUG MIAS-MASS 1re ann 233


9.4
9.4 Recherche
Recherche dichotomique
dichotomique
dans
dans un
un tableau
tableau tri
tri
Existe-t-il un algorithme plus efficace (en
nombre de comparaisons) qui permettrait de
rechercher lexistence dun lment donn
dans un tableau tri?

2001/2002 DEUG MIAS-MASS 1re ann 234


9.4
9.4 Recherche
Recherche dichotomique
dichotomique
dans
dans un
un tableau
tableau tri
tri
Supposons un tableau T[1..n] tri
i [2..n], T[i-1] T[i]
Partitionnons le tableau T en 3 sous-tableaux T[1..m-1],
T[m], T[m+1..n]
En comparant llment recherch T[m], sil ny a pas
galit, il est possible de dire quel sous-tableau
appartient llment recherch :
T[1..m-1] si llment recherch < T[m],
T[m+1..n] si llment recherch > T[m],
On se retrouve alors dans le cas prcdent mais avec les
sous-tableaux T[1..m-1] ou T[m+1..n]
2001/2002 DEUG MIAS-MASS 1re ann 235
9.4
9.4 Recherche
Recherche dichotomique
dichotomique
dans
dans un
un tableau
tableau tri
tri
Donc :
Soit il a t trouv un indice m tel que
lment recherch = T[m]
et lalgorithme est termin
Soit il a t trouv en un nombre fini ditration
un sous-tableau vide et dans ce cas
lment recherch T[1..n]
et lalgorithme est termin

2001/2002 DEUG MIAS-MASS 1re ann 236


9.4
9.4 Recherche
Recherche dichotomique
dichotomique
dans
dans un
un tableau
tableau tri
tri
Il faut maintenant dterminer les sous-tableaux T1, T2, T3,
,Tk tel que chaque sous-tableau Ti soit de taille (nombre
dlments) strictement infrieure la taille du sous-
tableau prcdent Ti-1.
Remarque :
Si pour T1, T2, T3, ,Tk , on choisit T[1..n], T[2..n], T[3..n], ,
T[k..n], on se ramne la recherche squentiel prcdente.
Gnralement lindice m est choisit de telle sorte que la
taille de T[1..m-1] et T[m+1..n] soit la mme un lment
prs.
2001/2002 DEUG MIAS-MASS 1re ann 237
fonction dichoto (D T[1..n], : tableau de ; D elem_rech: ): boolen
Entier inf, sup, m
Boolen trouv
Dbut
inf 1 sup n
trouv FAUX
Tant que inf sup et non trouv faire
m (inf + sup) div 2
si T[m] = elem_rech alors
trouv VRAI
sinon si T[m] < elem_rech alors
inf m+1
sinon
sup m-1
fsi fsi
ftq
retour(trouv)
Fin

2001/2002 DEUG MIAS-MASS 1re ann 238


9.4
9.4 Recherche
Recherche dichotomique
dichotomique
dans
dans un
un tableau
tableau tri
tri
Cot de lalgorithme :
La taille des tableaux de la suite T1, T2, T3, ,Tk
est divis par 2 chaque itration :
n, n/2, , n/2k-1
On aura donc la partie entire de log2(n) sous-
tableaux non vides

2001/2002 DEUG MIAS-MASS 1re ann 239


Chapitre
Chapitre 10
10 :: Types
Types volus
volus

2001/2002 DEUG MIAS-MASS 1re ann 240


10.1
10.1 Les
Les structures
structures
Les tableaux sont des paquets de donnes
de mme type.
Les structures sont des ensembles de
donnes non homognes.
Les donnes peuvent avoir des types
diffrents.
Les structures sont dclares ou dfinies
selon le modle :
2001/2002 DEUG MIAS-MASS 1re ann 241
10.1
10.1 Les
Les structures
structures
Les structures sont dclares ou dfinies
selon le modle :
struct nom_de_structure_facultatif {
la liste des donnes contenues dans la
structure
} la liste des variables construites selon
ce modle.

2001/2002 DEUG MIAS-MASS 1re ann 242


10.1
10.1 Les
Les structures
structures
Exemple :
Struct etd {
char nom[20];
char prenom[20];
float note_info;
float note_phi;
float moyenne;
} anriolle;

2001/2002 DEUG MIAS-MASS 1re ann 243


10.1
10.1 Les
Les structures
structures
etd est un nom de modle de structure
anriolle est un objet de type struct etd.
Les diffrentes parties de la structure anriolle
sont accessibles par :
anriolle.nom
anriolle.prenom
anriolle.note_info
anriolle.note_phi
anriolle.moyenne

2001/2002 DEUG MIAS-MASS 1re ann 244


10.2
10.2 Les
Les unions
unions
Les unions permettent l'utilisation d'un mme
espace mmoire par des donnes de types
diffrents des moments diffrents.
Syntaxe de la dfinition d'une union
Union nom_union {
type1 nom_champ1;
type2 nom_champ2;

typeN nom_champN;
} variables;

2001/2002 DEUG MIAS-MASS 1re ann 245


10.2
10.2 Les
Les unions
unions
Exemple :
union zone {
int entier;
float flottant;
} z1;
Utilisation
z1.entier = 1;
z1.flottant = 2.5;

2001/2002 DEUG MIAS-MASS 1re ann 246


Fin

2001/2002 DEUG MIAS-MASS 1re ann 247