Vous êtes sur la page 1sur 6

T.P.

Reformatage d'Hangul html.

19 o tobre 2009

• Date de remise : 16 novembre avant 23:59

• Peut être fait seul(e) ou en équipe de deux (2).

1 Introdu tion
Pour le deuxième tp vous devez onstruire un logi iel qui va lire une forme
romanisée des Hanguls et ensuite traduire ette forme en un  hier html. Les
Hanguls sont des syllabes oréennes. Lorsque nous é rivons à l'aide de lettre
romane (ou latine, omme elles de e texte) un mot d'une langue utilisans
un autre alphabet nous disons que nous utilisons une forme romanisée (ou
latinisée) du mot.

2 Des ription
Votre tp va premièrement lire un texte déjà romanisé. Ensuite votre logi iel
va traduire haque Hangul en une valeur numérique le représentant dans le
système Uni ode. Enn votre programme va a her à l'é ran le résultat selon
les spé i ations données par l'utilisateur.

2.1 Arguments

En argument (sur la ligne de ommande) votre programme va re evoir des in-


di ations de formatage :

'horizontal' ou 'h' : les ara tères en sorties seront é rit ligne par ligne.

'verti al' ou 'v' : les ara tères en sorties seront é rit en olonne (valeur
par défaut).

'gau he' ou 'g' : les ara tères en sorties seront é rit de gau he à droite sur
une ligne, ou, si nous avons un texte en olonne, les olonnes seront é rites
de gau he à droite.

1
2.2 Fon tionnement T.P. 2

'droite' ou 'd' : les ara tères en sorties seront é rit de droite à gau he sur
une ligne. (ou les olonnes seront é rites de droite à gau he.)

Il ne peut y avoir au maximum que deux (2) indi ateurs de formatage. Il


est illégal d'utiliser l'identi ateur 'h' ave l'identi ateur 'v'. Il est aussi illégal
d'utiliser l'identi ateur 'd' ave l'identi ateur 'g'. Dans tout es as, votre
programme doit a her un message d'erreur signi atif et votre appli ation
doit se terminer.

2.2 Fon tionnement

2.2.1 Format d'entrée


Le texte à formater est entrée au lavier. Chaque Hangul à l'entrée sera séparé
par un ou des espa es. Bien qu'en général e soit des romanisations de M Cune-
Reis hauer ou de Yale qui soit utilisé pour le oréen, nous allons utiliser une
romanisation plus simple pour notre tp. Un Hangul est omposé de deux(2) ou
trois(3) jamos (lettre). Le premier jamos sera référé omme étant la onsonne
initiale. Le deuxième jamos est une voyelle. Le dernier jamos (si présent) est la
onsonne nale. Les possibilités pour les diérents jamos sont dans la gure 1.
Dans ette table vous trouverez une orre pondan e numérique pour haque
jamos.

Par exemple, les jamos 'B' (8), 'YEO' (7) et 'L' (8) peuvent être ombiné
pour former le hangul 'BYEOL'. Il est aussi possible de onstruire des hanguls
ave seulement 2 jamos : une onsonne initiale et une voyelle. En utilisant
seulement 'B' (8) et 'YEO' (7) nous obtenons 'BYEO'. Il y a un as spe-
iem
ial, omme onsonne initiale il est possible de hoisir la 12 onsonne qui
représente l'absen e de onsonne (bien qu'elle ait un symbole la représentant).
Dans e as nous pouvons onstruire le hangul 'YEO' ave les jamos  (12) et
'YEO' (7).
Après avoir lu un hangul romanisé il faut ensuite trouver sont ode UNI-
CODE qui le représente. Pour ela nous utilisons la formule suivante :

UNICODE = 44032 + ( onsonne initiale − 1) ∗ 588 + (voyelle − 1) ∗ 28 + onsonne nale

S'il n'y a pas de onsonne nale alors la valeur zéro (0) sera utilisé dans
la formule. Par exemple pour le hangul 'REUN' nous obtenons 6 ('N') omme
onsonne initiale, 19 ('EU') omme voyelle et 4 ('N') omme onsonne nale.

UNICODE = 44032 + (6 − 1) ∗ 588 + (19 − 1) ∗ 28 + 4


= 44032 + 5 ∗ 588 + 18 ∗ 28 + 4
= 44032 + 2940 + 504 + 4
= 47480
Par ontre si nous voulons former 'REU' alors la valeur 0 sera utilisée omme
onsonne nale, e qui nous donnera 47476.

2
2.2 Fon tionnement T.P. 2

Consonne initiale Voyelle Consonne nale


(rien) 0
G 1
GG 2
GS 3
A 1
N 4
G 1 AE 2
NJ 5
GG 2 YA 3
NH 6
N 3 YAE 4
D 7
D 4 EO 5
L 8
DD 5 E 6
LG 9
R 6 YEO 7
LM 10
M 7 YE 8
LB 11
B 8 O 9
LS 12
BB 9 WA 10
LT 13
S 10 WAE 11
LP 14
SS 11 OE 12
LH 15
(rien) 12 YO 13
M 16
J 13 U 14
B 17
JJ 14 WEO 15
BS 18
C 15 WE 16
S 19
K 16 WI 17
SS 20
T 17 YU 18
NG 21
P 18 EU 19
J 22
H 19 YI 20
C 23
I 21
K 24
T 25
P 26
H 27

Figure 1: Les diérents jamos.

3
2.2 Fon tionnement T.P. 2

2.2.2 Format de sortie


Votre programme doit a her le résultat sous forme d'une table html. Il doit
ommen er par a her les lignes suivantes à l'é ran :

<HTML>
<BODY>
<HR>
<TABLE border=0>

Ensuite, il doit a her haque ligne de hangul. Une ligne de hangul est une
suite de hangul séparé par un espa e. Elle débute par les ara tères '<TR>' et
se termine par les ara tères '</TR>'. Un hangul est é rit de la façon suivante :

<TD> &#numéro; </TD>

ou numéro est l'UNICODE représentant l'hangul. Si une olonne n'a pas


de hangul (par equ'elle provient d'une ligne vide) alors le premier ara tère de
ette olonne est a hé omme suit :

<TD WIDTH=15>

Si une ase ne ontient pas de ara tère alors nous a hons simplement :

<TD> </TD>

nalement le programme a he les lignes suivantes :

</TABLE>
<HR>
</BODY>
</HTML>

Les lignes d'hangul doivent être pla és orre tement selon les arguments
de formatage. Par exemple, si nous avons les arguments 'h' et 'd' alors la
première ligne d'hangul lu en entrée deviendra la première ligne en sortie mais
é rite à l'envers (de droite à gau he). Par ontre si l'utilisateur demande un
formatage 'v' et 'g' alors seulement les premiers ara tères de haque ligne en
entrée formerons la première ligne en sorties. Ce i an de repla er le texte en
olonnes plutt qu'en lignes.

2.2.3 Exemple omplet


Un utilisateur démarre le programme ave la ommande suivante :

tp2 verti al droite

Ensuite il entre les lignes suivantes au lavier :

4
T.P. 2

in do yu reob eo jog
o seu teu ro ne si a eo jog
u ral ka peu ka seu eo jog

Il termine ses entrées à l'aide du ara tère < trl-d> (qui indique une n de
 hier au lavier). Le logi iel envoie en sortie les lignes suivantes :

<HTML>
<BODY>
<HR>
<TABLE border=0>
<TR> <TD> &#50864; </TD> <TD> &#50724; </TD> <TD> &#51064; </TD> </TR>
<TR> <TD> &#46980; </TD> <TD> &#49828; </TD> <TD> &#46020; </TD> </TR>
<TR> <TD> &#52852; </TD> <TD> &#53944; </TD> <TD> &#50976; </TD> </TR>
<TR> <TD> &#54532; </TD> <TD> &#47196; </TD> <TD> &#47101; </TD> </TR>
<TR> <TD> &#52852; </TD> <TD> &#45348; </TD> <TD> &#50612; </TD> </TR>
<TR> <TD> &#49828; </TD> <TD> &#49884; </TD> <TD> &#51313; </TD> </TR>
<TR> <TD> &#50612; </TD> <TD> &#50500; </TD> <TD> </TD> </TR>
<TR> <TD> &#51313; </TD> <TD> &#50612; </TD> <TD> </TD> </TR>
<TR> <TD> </TD> <TD> &#51313; </TD> <TD> </TD> </TR>
</TABLE>
<HR>
</BODY>
</HTML>

3 Programme
Votre logi iel peut être divisé en plusieurs modules ( omposantes). Dans e as
haque module devra avoir un  hier de ode '. pp' et un  hier d'entête '.hpp'.
Identier haque  hier ave les noms des auteurs (en ommentaire).
Aussi, si vous avez plusieurs  hiers, vous devez fournir un  hier 'makele' ave
votre projet. Votre tp doit utiliser des éléments de la stl.

4 Pondération
Le tp sera noté sur 15 points : 8 points pour la fon tionnalité, 4 pour les stru -
tures de données et de ontrles (bonne utilisation des stl, lasses et algorithme)
et 3 points pour la lisibilité.

5
T.P. 2

5 Lisibilité
Voi i les éléments de lisibilité et de stru ture qui seront notés :

• Bonne division en lasse.

• Pas d'utilisation de goto et de variables globales.


• Bonne indentation du ode.

• Identi ateurs signi atifs (en français).

• Bon espa ement du ode : laissez des lignes vides et des espa es pour aérer
votre ode.

• Plusieurs pro édures, pas trop de ode dans le main.

6 Remise
Votre t.p. doit être remis avant le 16 novembre 23:59. S.v.p. : é rivez vos
noms au début de votre programme. Si votre tp ontient plusieurs  hiers
alors vous devez ar hivez votre tp à l'aide de la ommande suivante :

tar vf tp2.tar *

(Cette ommande doit être lan é dans votre répertoire de travail.) Ensuite
Vous devez ompresser votre tp ave la ommande suivante :

gzip tp2.tar

Pour rendre le t.p. vous allez utiliser la ommande rendre_tp :

rendre_tp ~malenfant_b/tp2.3105.aut2009/ nom_tp2