Page : appli00a2.htm |
Projet SIG_2004
|
Les données globales supplémentaires sont :
donnee
NbDepts est un entier constant qui vaut 100
type
T_Tab_Dept est un tableau [1 à NbDepts] de chaines de caractères
donnee
Tbl_Dept est un T_Tab_Dept
NomFichierMID,
NomFichierMIF sont des chaines de caractères
Programme Appli00
début
Initialiser
ChoisirDepartement (DeptChoisi)
NumRegionEtudiee <-- ChercherDepartement (DeptChoisi)
si (NumRegionEtudiee <> -1) alors
DessinerDepartement
fin si
Terminer
fin
procedure Initialiser
début
NomFichierMID <-- "dep_france_dom.mid"
NomFichierMIF <-- "dep_france_dom.mif"
ChargerDepartements (NomFichierMID)
Initialiser FichierDept avec NomFichierMIF
ouvrir FichierDept en lecture
InversionAbscisse <-- FAUX
InversionOrdonnee <-- VRAI
OrigineAbscisse <-- 5
OrigineOrdonnee <-- 5
LargeurImg <-- Largeur de la zone image - 10
HauteurImg <-- Hauteur de la zone image - 10
fin
procedure Terminer
début
Fermer FichierDept
fin
procedure ChargerDepartements (E : NomFichier est
une chaine de caractères)
donnee
FichierNomDept est un fichier texte
Ligne est une chaine de caractères
NomDept,
CodeDept sont des chaines de caractères
IndexDept est un entier
début
Initialiser FichierNomDept avec NomFichier
ouvrir FichierNomDept en lecture
pour IndexDept <-- 1 à NbDepts faire
Lire depuis FichierNomDept dans Ligne
NomDept <-- ExtraireChamp
(Ligne, 8)
CodeDept <-- ExtraireChamp
(Ligne, 11)
si ((CodeDept = "2A") OU (CodeDept = "2B"))
alors
CodeDept <-- "20"+CodeDept[2]
sinon
si (longueur (CodeDept) = 2) alors
CodeDept <-- CodeDept + "
"
fin si
fin si
Tbl_Dept [IndexDept]
<-- CodeDept + " - " + NomDept
fin pour
fermer FichierNomDept
fin
fonction ExtraireChamp (E : Ligne est une chaine de
caractères
NumChamp
est un entier) retourne une chaine de caractères
donnée
IndexChamp,
IndexDebut,
IndexFin,
IndexCar sont entiers
Champ est une chaine de caractères
début
IndexDebut <-- 0
pour IndexChamp <-- 1 à NumChamp-1 faire
repeter
IndexDebut <-- IndexDebut + 1
jusqu'à (Ligne [IndexDebut] = ',')
fin pour
IndexFin <-- IndexDebut
tant que ((IndexFin < longueur (Ligne)) ET (Ligne[IndexFin+1]
<> ",")) faire
IndexFin <-- IndexFin + 1
fin tant que
Champ <-- ""
pour IndexCar <-- IndexDebut+1 jusqu'à IndexFin faire
Champ <-- Champ + Ligne [IndexCar]
fin pour
retourner Champ
fin
fonction ChercherDepartement (E : CodeDept est une
chaine de caractère) retourne un entier
donnee
IndexDept est un entier
début
IndexDept <-- 0
repeter
IndexDept <-- IndexDept + 1
jusqu'à ((IndexDept = NbDepts) OU (Tbl_Dept [IndexDept] commence
par CodeDept))
si (Tbl_Dept [IndexDept] commence
par CodeDept) alors
retourner IndexDept
sinon
retourner -1
fin si
fin
procedure DessinerDepartement
donnee
NbMorceaux,
NbSegments sont entiers
IndexMorceau,
IndexSegment sont entiers
Ligne est une chaine de caractères
ValeurX, ValeurY sont réels
abscisse, ordonnee sont entiers
début
Effacer le tracé précédent éventuel
TrouverCoordonneesExtreme (XminDep,
XmaxDep, YminDep, YmaxDep)
Echelle <-- CalculerEchelle (XminDep, XmaxDep, YminDep, YmaxDep,
LargeurImg, HauteurImg)
TrouverDepartement (NumRegionEtudiee,
NbMorceaux)
pour IndexMorceau <-- 1 à NbMorceaux faire
lire depuis FichierDept dans NbSegments
pour indexSegment <--
1 à NbSegments faire
lire depuis FichierDept dans Ligne
extraireCoordonnees (Ligne, ValeurX, ValeurY)
CalculerPosition
(ValeurX, ValeurY, abscisse, ordonnee)
si (indexSegment
= 1) alors
placerPoint (abscisse, ordonnee)
sinon
tracerTrait (abscisse, ordonnee)
fin si
fin pour
fin pour
fin