Beruflich Dokumente
Kultur Dokumente
u Historique u HyperDocuments u Site Web u Atelier de dveloppement u Pages statiques : langage HTML u Programmation CGI : langage Perl u Pages dynamiques : Javascript
Historique
Conception d'un site WEB
(Genve), par Tim Berners Lee : pour un rseau mondial d'change d'informations.
u De nombreux lments favorables :
l dveloppement du rseau de transport Internet, l systme distribu pour l'annuaire des machines (DNS), l besoin de la communaut mondiale des physiciens (10 000
chercheurs),
l une ide simple, l comptences de l'initiateur du projet.
HyperDocuments
Conception d'un site WEB
informatique :
l petites pages, l liens de navigation entre pages, l exemples : documents Videotex, aides en ligne...
u Etendue au Multimedia :
l liens vers des "pages sonores" ou des "pages video".
Navigateurs clbres
Conception d'un site WEB
u Un des premiers : Mosaic. u Le plus rpandu : Netscape navigator. u Le dernier en date : Internet Explorer. u Un navigateur joue plusieurs rles :
l prsentation d'un hyperdocument, l accs aux pages distantes en suivant les liens.
u Brisons immdiatement un mythe actuel. u C'est la structure d'un hyperdocument qui est dcrite
Documents interactifs
Conception d'un site WEB
u Quelques constatations :
l un cran est petit (en gnral), l lire un cran est pnible, l changer d'cran est rapide.
10
imprimable essentiellement :
l format postscript, l format acrobat.
11
Ressource Location).
u URL la plus simple :
protocole://serveur/
u URL courante :
protocole://serveur/repert/.../document
u Quelques exemples :
http://www.inria.fr/ http://www.ti.com/ http://www.yahoo.com/ http://verdon.unice.fr/~jdem/
12
/ usr bin racine de l'hte
...
...
espace du serveur
Jean DEMARTINI 14.02.00
13
TCP/IP),
l aux lecteurs accdant depuis une machine particulire.
14
Serveur de pages
Client
Jean DEMARTINI 14.02.00
15
protocole d'change de documents HTML (HyperText Transfert Protocol) protocole d'change de fichiers quelconques (File Transfert Protocol). protocole d'change de courrier lectronique.
Atelier de dveloppement
Conception d'un site WEB
16
Macromedia,
l un outil de dessin pour la construction ou la mise en forme des
Outils HTML
Conception d'un site WEB
17
Outils de dessin
Conception d'un site WEB
18
u Les images utilises sous de type bitmap. u Il existe de nombreux outils de dessin bitmap :
l Paint Shop Pro de JASC, l 3D Studio, l Fireworks de Macromedia, ...
Outils de validation
Conception d'un site WEB
19
navigateur, il est ncessaire de disposer de quelques navigateurs sous diffrentes versions pour tester le look d'une page :
l Nestscape 3.0 et 4.x les versions 4.x est la plus rpandue, l Internet Explorer 4.0 et 5.0 les versions antrieures sont
20
dans l'espace disque du poste de dveloppement. Lorsqu'il est valid, il faut le transfrer dans l'espace disque du serveur.
u WS_Ftp de IPSwitch donne d'excellents rsultats.
21
dveloppements (programmation CGI) ne peuvent se faire et/ou se valider que sur le serveur lui-mme.
u Il est donc indispensable de pouvoir se connecter
distance.
u QVT/Net de QPC Software donne d'excellents
rsultats.
Le langage HTML
Conception d'un site WEB
22
23
En-tte de document
Conception d'un site WEB
24
25
<HTML> <HTML> <HEAD> <HEAD> <TITLE>Ma <TITLE>Ma première première page</TITLE> page</TITLE> </HEAD> </HEAD> <BODY> <BODY> Ma Ma première première page page Web. Web. </BODY> </BODY> </HTML> </HTML>
Et pour la voir ?
Conception d'un site WEB
26
La voici !
Conception d'un site WEB
27
Son titre
Quelques prcisions
Conception d'un site WEB
28
navigateur.
u Un premier pseudo-commentaire est utilis par le
Caractres spciaux
Conception d'un site WEB
29
utilisant des signes diacritiques qui sont indisponibles sur le clavier utilis. Ces caractres ont donc t cods :
u Exemples :
Jean DEMARTINI 14.02.00
Paragraphes...
Conception d'un site WEB
30
navigateur par pure gentillesse car elle contient un paragraphe non signal. Il faudrait la dcrire par :
<!DOCTYPE <!DOCTYPE HTML HTML PUBLIC PUBLIC "-//W3C//DTD "-//W3C//DTD HTML HTML 3.2 3.2 Final//EN"> Final//EN"> <HTML> <HTML> <HEAD> <HEAD> <TITLE>Ma <TITLE>Ma première première page</TITLE> page</TITLE> </HEAD> </HEAD> <BODY> <BODY> <P>Ma <P>Ma première première page page Web.</P> Web.</P> </BODY> </BODY> </HTML> </HTML>
Jean DEMARTINI 14.02.00
...Paragraphes
Conception d'un site WEB
31
document HTML, on prsente, en gnral, les paragraphes sur une seule ligne (pouvant largement dborder de l'cran de saisie).
32
Que voici
Conception d'un site WEB
33
Les paragraphes
Jean DEMARTINI 14.02.00
34
Titres de paragraphes...
Conception d'un site WEB
35
...Titres de paragraphes
Conception d'un site WEB
36
Styles de paragraphes...
Conception d'un site WEB
37
<BODY> <BODY> <P <P ALIGN="LEFT">On ALIGN="LEFT">On the the night night of of 3rd 3rd December December the the <P <P ALIGN="CENTER">On ALIGN="CENTER">On the the night night of of 3rd 3rd December December <P <P ALIGN="RIGHT">On ALIGN="RIGHT">On the the night night of of 3rd 3rd December December th th </BODY> </BODY>
...Styles de paragraphes
Conception d'un site WEB
38
Quelques dcorations
Conception d'un site WEB
39
u On peut introduire des ruptures de lignes par <BR> u On peut galement introduire des traits de sparation
40
Ou bien cela !
Conception d'un site WEB
41
Multicolonnage
Conception d'un site WEB
42
texte.
<BODY> <BODY> <MULTICOL <MULTICOL COLS="2" COLS="2" WIDTH="100%" WIDTH="100%" GUTTER="10"> GUTTER="10"> <P <P ALIGN="JUSTIFY">Sans ALIGN="JUSTIFY">Sans doute doute les les notes notes que que nous nous entendons entendons <P <P ALIGN="RIGHT"><I>Du ALIGN="RIGHT"><I>Du côté côté de de chez chez Swann Swann -M M </MULTICOL> </MULTICOL> </BODY> </BODY>
43
Ou bien cela
Conception d'un site WEB
44
Styles physiques
Conception d'un site WEB
45
Portion Portion de de texte texte <B>en <B>en gras</B>,<BR> gras</B>,<BR> Portion Portion de de texte texte <I>en <I>en italique</I>,<BR> italique</I>,<BR> Portion Portion de de texte texte <U>soulignée</U>,<BR> <U>soulignée</U>,<BR> Portion Portion de de texte texte <SUP>exposant</SUP>,<BR> <SUP>exposant</SUP>,<BR> Portion Portion de de texte texte <SUB>indice</SUB>,<BR> <SUB>indice</SUB>,<BR> Portion Portion de de texte texte <TT>en <TT>en style style télétype</TT>. télétype</TT>.
Jean DEMARTINI 14.02.00
Ce qui donne
Conception d'un site WEB
46
Styles logiques
Conception d'un site WEB
47
pour insister, pour mettre en vidence, une citation, tel quel, une adresse.
<P>Cette <P>Cette portion portion de de texte, texte, <STRONG>j'insiste</STRONG>, <STRONG>j'insiste</STRONG>, ne ne <EM>doit <EM>doit pas pas être être négligée</EM>. négligée</EM>. Sun Sun Tse Tse dit dit :</P> :</P> <P><BLOCKQUOTE>Prenez <P><BLOCKQUOTE>Prenez le le nom nom de de tous tous vos vos officiers, officiers, inscrivezinscrivezles les sur sur un un répertoire répertoire spécial spécial avec avec l'indication l'indication de de leurs leurs capacités capacités et et de de leurs leurs aptitudes, aptitudes, afin afin que que chacun chacun soit soit employé employé suivant suivant ses ses qualités.</BLOCKQUOTE></P> qualités.</BLOCKQUOTE></P>
Jean DEMARTINI 14.02.00
48
Les listes
Conception d'un site WEB
49
l n
Listes puces
Conception d'un site WEB
50
<MULTICOL <MULTICOL COLS="2" COLS="2" WIDTH="100%" WIDTH="100%" GUTTER="10"> GUTTER="10"> <P>Un <P>Un bon bon pot-au-feu pot-au-feu nécessite nécessite :</P> :</P> <UL <UL TYPE="DISC"> TYPE="DISC"> <LI>des <LI>des poireaux, poireaux, <LI>des <LI>des carottes, carottes, <LI>des <LI>des navets. navets. </UL> </UL> <BR> <BR> <P>Un <P>Un bon bon pot-au-feu pot-au-feu nécessite nécessite :</P> :</P> <UL <UL TYPE="SQUARE"> TYPE="SQUARE"> <LI>des <LI>des poireaux, poireaux, <LI>des <LI>des carottes, carottes, <LI>des <LI>des navets. navets. </UL> </UL> </MULTICOL> </MULTICOL>
Prsentes ainsi
Conception d'un site WEB
51
52
<MULTICOL <MULTICOL COLS="2" COLS="2" WIDTH="100%" WIDTH="100%" GUTTER="10"> GUTTER="10"> <P>Un <P>Un bon bon pot-au-feu pot-au-feu nécessite nécessite :</P> :</P> <OL <OL TYPE="1"> TYPE="1"> <LI>des <LI>des poireaux, poireaux, <LI>des <LI>des carottes, carottes, <LI>des <LI>des navets. navets. </OL> </OL> <BR> <BR> <P>Un <P>Un bon bon pot-au-feu pot-au-feu nécessite nécessite :</P> :</P> <OL <OL TYPE="I"> TYPE="I"> <LI>des <LI>des poireaux, poireaux, <LI>des <LI>des carottes, carottes, <LI>des <LI>des navets. navets. </OL> </OL> </MULTICOL> </MULTICOL>
Prsentes ainsi
Conception d'un site WEB
53
54
compacter.
<DL <DL COMPACT> COMPACT> <DT>N<DD>Newton. <DT>N<DD>Newton. <DT>Nm<DD>Newtonmètre. <DT>Nm<DD>Newtonmètre. <DT>Oe<DD>Oersted. <DT>Oe<DD>Oersted. </DL> </DL>
Jean DEMARTINI 14.02.00
Prsentes ainsi
Conception d'un site WEB
55
Ou ainsi
Conception d'un site WEB
56
Listes imbriques
Conception d'un site WEB
57
imbriques
<P>Un <P>Un bon bon pot-au-feu pot-au-feu nécessite nécessite :</P> :</P> <UL <UL TYPE="DISC"> TYPE="DISC"> <LI>des <LI>des poireaux poireaux : : <UL <UL TYPE="SQUARE"> TYPE="SQUARE"> <LI>des <LI>des petits, petits, <LI>des <LI>des moyens, moyens, <LI>des <LI>des gros. gros. </UL> </UL> <LI>des <LI>des carottes, carottes, <LI>des <LI>des navets. navets. </UL> </UL>
Ce qui donne
Conception d'un site WEB
58
Les images
Conception d'un site WEB
59
nombreux paramtres :
l ALIGN= TOP | MIDDLE | BOTTOM | LEFT | RIGHT l HSPACE= marge horizontale (pixels) l VSPACE= marge verticale (pixels) l WIDTH= largeur de l'image (pixels) l HEIGHT= hauteur de l'image (pixels) l BORDER= paisseur de l'encadrement (pixels)
60
<P> <P>
SRC="Image16.gif" SRC="Image16.gif" WIDTH=200 WIDTH=200 HEIGHT=145 HEIGHT=145 BORDER=0 BORDER=0 ALIGN="LEFT" ALIGN="LEFT" HSPACE=20 HSPACE=20 VSPACE=10> VSPACE=10> Sans Sans doute doute les les notes notes que que nous nous entendons entendons alors, alors, tendent tendent déjà, déjà, selon selon leur leur hauteur hauteur et et leur leur quantité, quantité, à à couvrir couvrir devant devant nos nos yeux yeux des des surfaces surfaces de de dimensions dimensions variées, variées, à à tracer tracer des des arabesques, arabesques, à à nous nous donner donner des des sensations sensations de de largeur, largeur, de de ténuité, ténuité, de de stabilité, stabilité, de de caprice.</P> caprice.</P> <P>Mais <P>Mais les les notes notes sont sont évanouies évanouies avant avant que que ces ces sensations sensations soient soient assez assez formées formées en en nous nous pour pour ne ne pas pas être être submergées submergées par par celles celles qu'éveillent qu'éveillent déjà déjà les les notes notes suivantes suivantes ou ou même même simultanées.</P> simultanées.</P>
Jean DEMARTINI 14.02.00
<IMG <IMG
Aspect visuel
Conception d'un site WEB
61
Paramtres d'inclusion
Conception d'un site WEB
62
vspace height
width
Jean DEMARTINI 14.02.00
hspace
Paramtres d'alignement
Conception d'un site WEB
63
<P <P ALIGN="CENTER"> ALIGN="CENTER"> <IMG <IMG SRC="Image17a.gif"></P> SRC="Image17a.gif"></P> <P>Cette <P>Cette image image <IMG <IMG SRC="Image17b.gif" SRC="Image17b.gif" ALIGN="TOP"> ALIGN="TOP"> est est alignée alignée <IMG <IMG SRC="Image17b.gif" SRC="Image17b.gif" ALIGN="MIDDLE"> ALIGN="MIDDLE"> de de différentes différentes <IMG <IMG SRC="Image17b.gif" SRC="Image17b.gif" ALIGN="BOTTOM"> ALIGN="BOTTOM"> façons.</P> façons.</P> <P>On <P>On remarque remarque que que son son fond fond à à été été rendu rendu transparent.</P> transparent.</P>
Effets de prsentation
Conception d'un site WEB
64
Fond d'cran
Conception d'un site WEB
65
<BODY <BODY BACKGROUND="Image18.gif"> BACKGROUND="Image18.gif"> <P <P ALIGN="CENTER"><IMG ALIGN="CENTER"><IMG SRC="Image17a.gif" SRC="Image17a.gif" <P><B>Cette <P><B>Cette image image <IMG <IMG SRC="Image17b.gif" SRC="Image17b.gif" <P><B>On <P><B>On remarque remarque que que son son fond fond à à &eacu &eacu </BODY> </BODY>
66
Les ancres
Conception d'un site WEB
67
d'autres documents.
u Un lien peut pointer vers :
l un autre document : lien externe, l un autre endroit de la page en cours : lien interne.
68
<HTML> <HTML> ... ... <HTML> <HTML> </HTML> </HTML> ... ... <HTML> <HTML> </HTML> </HTML>... ... </HTML> </HTML>
69
<BODY> <BODY> <P>...<A <P>...<A HREF="#p1">Page HREF="#p1">Page 1</A>...</P> 1</A>...</P> ... ... <P>...<A <P>...<A HREF="#p2">Page HREF="#p2">Page 2</A>...</P> 2</A>...</P> ... ... <P>...<A <P>...<A HREF="#p3">Page HREF="#p3">Page 3</A>...</P> 3</A>...</P> ... ... <P><A <P><A NAME="p1"></A>...</P> NAME="p1"></A>...</P> ... ... <P><A <P><A NAME="p2"></A>...</P> NAME="p2"></A>...</P> ... ... <P><A <P><A NAME="p3"></A>...</P> NAME="p3"></A>...</P> ... ... </BODY> </BODY>
Liens doubles
Conception d'un site WEB
70
<BODY> <BODY> <P>...<A <P>...<A HREF="#p1" HREF="#p1" NAME="r1">Page NAME="r1">Page 1</A>...</P> 1</A>...</P> ... ... ... ... <P><A <P><A HREF="#r1" HREF="#r1" NAME="p1">Retour</A>...</P> NAME="p1">Retour</A>...</P> ... ... ... ... </BODY> </BODY>
71
<H2 <H2 ALIGN="CENTER">Tout ALIGN="CENTER">Tout sur sur la la fougasse</H2> fougasse</H2> <P <P ALIGN="CENTER"> ALIGN="CENTER"> <A <A HREF="chap-1.html">Chapitre HREF="chap-1.html">Chapitre 1 1: : La La farine</A><BR> farine</A><BR> <A <A HREF="chap-2.html">Chapitre HREF="chap-2.html">Chapitre 2 2: : Les Les anchois</A></P> anchois</A></P> <HR <HR ALIGN="CENTER"> ALIGN="CENTER"> <P <P ALIGN="CENTER">Aimez-vous ALIGN="CENTER">Aimez-vous la la fougasse fougasse ?</P> ?</P> <P <P ALIGN="CENTER"> ALIGN="CENTER"> <A <A HREF="chap-1.html"><IMG HREF="chap-1.html"><IMG SRC="bout-1.gif"></A> SRC="bout-1.gif"></A> <A <A HREF="chap-2.html"><IMG HREF="chap-2.html"><IMG SRC="bout-2.gif"></A></P> SRC="bout-2.gif"></A></P>
Qui s'affiche
Conception d'un site WEB
72
Les Tableaux
Conception d'un site WEB
73
puissant de HTML.
u C est lui qui permet de disposer dans une page de
associes des cellules de titre (HEADING CELLS) le tout associ une lgende (CAPTION).
u Sa description est assez complexe, nous laborderons
Un tableau lmentaire
Conception d'un site WEB
74
75
conteneur :
<TR paramtres>...</TR>
76
<TABLE <TABLE paramtres paramtres> > <CAPTION <CAPTION paramtres paramtres></CAPTION> ></CAPTION> <TR> <TR> <TD>...</TD><TH>...</TH><TH>...</TH><TH></TH> <TD>...</TD><TH>...</TH><TH>...</TH><TH></TH> </TR> </TR> <TR> <TR> <TH>...</TH><TD>...</TD><TD>...</TD><TD>...</TD> <TH>...</TH><TD>...</TD><TD>...</TD><TD>...</TD> </TR> </TR> <TR> <TR> <TH>...</TH><TD>...</TD><TD>...</TD><TD>...</TD> <TH>...</TH><TD>...</TD><TD>...</TD><TD>...</TD> </TR> </TR> <TR> <TR> <TH>...</TH><TD>...</TD><TD>...</TD><TD></TD> <TH>...</TH><TD>...</TD><TD>...</TD><TD></TD> </TR> </TR> </TABLE> </TABLE>
Principaux paramtres
Conception d'un site WEB
77
78
CELLPADDING
CELLSPACING
BORDER
79
Superposition de cellules
Conception d'un site WEB
80
correspond au paramtre
COLSPAN = nombre de cellules
correspond au paramtre
ROWSPAN = nombre de cellules
Paramtres de superposition
Conception d'un site WEB
81
ROWSPAN=2 COLSPAN=2
ROWSPAN=1 COLSPAN=2
ROWSPAN=3 COLSPAN=1
1 2 lignes 3 4 5 1 2 3 4 colonnes
Jean DEMARTINI 14.02.00
82
83
Images cliquables
Conception d'un site WEB
84
85
SRC="Image16.gif" SRC="Image16.gif" WIDTH="200" WIDTH="200" HEIGHT="145" HEIGHT="145" ISMAP ISMAP USEMAP="#Image16" USEMAP="#Image16" BORDER="0"> BORDER="0"> <MAP <MAP NAME="Image16"> NAME="Image16"> <AREA <AREA SHAPE="CIRCLE" SHAPE="CIRCLE" HREF= HREF= "chap-1.html" "chap-1.html" COORDS="86,64,20"> COORDS="86,64,20"> <AREA <AREA SHAPE="RECT" SHAPE="RECT" HREF="chap-2.html" HREF="chap-2.html" COORDS="61,101,92,138"> COORDS="61,101,92,138"> </MAP> </MAP>
<IMG <IMG
Les formulaires
Conception d'un site WEB
86
Dialogue Client-Serveur
Conception d'un site WEB
87
interprte la page HTML qui comporte des balises pouvant se traduire en requtes.
u Le ct serveur est reprsent par le serveur Web qui
interprte les requtes provenant du navigateur et qui lui transmet des pages HTML.
u Nous avons rencontr deux balises se traduisant en
requte :
l <A ></A> : requte pour une page externe, l <IMG > : requte pour une image externe.
88
89
QUERY_STRING QUERY_STRING = = ... ... http://../xxx.cgi... http://../xxx.cgi... Serveur Web Programme CGI
Navigateur
Formulaire
Conception d'un site WEB
90
Exemple 1
Conception d'un site WEB
91
<FORM <FORM ACTION="query.cgi" ACTION="query.cgi" METHOD= METHOD= "GET" "GET" || "POST"> "POST"> <P><BIG><BIG>P</BIG></BIG>our <P><BIG><BIG>P</BIG></BIG>our faire faire une une bonne bonne mayonnai mayonnai <INPUT <INPUT TYPE="radio" TYPE="radio" NAME="liquide" NAME="liquide" VALUE="eau">eau, VALUE="eau">eau, <INPUT <INPUT TYPE="radio" TYPE="radio" NAME="liquide" NAME="liquide" VALUE="huile">huile, VALUE="huile">huile, <INPUT <INPUT TYPE="radio" TYPE="radio" NAME="liquide" NAME="liquide" VALUE="lait">lait VALUE="lait">lait </FORM> </FORM>
Exemple 2
Conception d'un site WEB
<FORM <FORM ACTION="query.cgi" ACTION="query.cgi" METHOD= METHOD= "GET" "GET" || "POST"> "POST"> ... ... <P><BIG><BIG>I</BIG></BIG>l <P><BIG><BIG>I</BIG></BIG>l faut faut aussi aussi :</P> :</P> <INPUT <INPUT TYPE="checkbox" TYPE="checkbox" NAME="oeufs" NAME="oeufs" VALUE="on">oeufs, VALUE="on">oeufs, <INPUT <INPUT TYPE="checkbox" TYPE="checkbox" NAME="sel" NAME="sel" VALUE="on">sel, VALUE="on">sel, <INPUT <INPUT TYPE="checkbox" TYPE="checkbox" NAME="mouta" NAME="mouta" VALUE="on">moutarde, VALUE="on">moutarde, <INPUT <INPUT TYPE="checkbox" TYPE="checkbox" NAME="confit" NAME="confit" VALUE="on">confiture VALUE="on">confiture </FORM> </FORM>
92
Exemple 3
Conception d'un site WEB
<FORM <FORM ACTION="query.cgi" ACTION="query.cgi" METHOD= METHOD= "GET" "GET" || "POST"> "POST"> ... ... <P><BIG><BIG>O</BIG></BIG>n <P><BIG><BIG>O</BIG></BIG>n utilise utilise : : <SELECT <SELECT NAME="recipient" NAME="recipient" SIZE="3"> SIZE="3"> <OPTION <OPTION SELECTED>assiette SELECTED>assiette <OPTION>bol <OPTION>bol <OPTION>bouteille <OPTION>bouteille <OPTION>casserole <OPTION>casserole <OPTION>marmite</SELECT> <OPTION>marmite</SELECT> </P> </P> </FORM> </FORM>
93
Exemple 4
Conception d'un site WEB
<FORM <FORM ACTION="query.cgi" ACTION="query.cgi" METHOD= METHOD= "GET" "GET" || "POST"> "POST"> ... ... <P><BIG><BIG>D</BIG></BIG>écrivez, <P><BIG><BIG>D</BIG></BIG>écrivez, en en quelques quelques lignes lignes les les principales principales qualités qualités diététiques diététiques de de la la mayonnaise mayonnaise :<BR> :<BR> <TEXTAREA <TEXTAREA NAME="dissertation" NAME="dissertation" ROWS="5" ROWS="5" COLS=20> COLS=20> </TEXTAREA> </TEXTAREA> </FORM> </FORM>
94
Exemple 5
Conception d'un site WEB
95
<FORM <FORM ACTION="query.cgi" ACTION="query.cgi" METHOD= METHOD= "GET" "GET" || "POST"> "POST"> ... ... <P> <P> Donnez Donnez votre votre nom nom et et on on vous vous écrira<BR> écrira<BR> <INPUT <INPUT TYPE="text" TYPE="text" NAME="nom"> NAME="nom"> </FORM> </FORM>
Et pour finir
Conception d'un site WEB
96
<FORM <FORM ACTION="query.cgi" ACTION="query.cgi" METHOD= METHOD= "GET" "GET" || "POST"> "POST"> ... ... <P> <P> <INPUT <INPUT TYPE=reset TYPE=reset VALUE="Corriger"> VALUE="Corriger"> <INPUT <INPUT TYPE=submit TYPE=submit VALUE="OK"></P> VALUE="OK"></P> </FORM> </FORM>
Conclusion provisoire
Conception d'un site WEB
97
Programmes CGI
Conception d'un site WEB
98
trous de scurit dans le systme qui l'hberge et pour en savoir plus sur les problmes de scurit dans le Web consulter :
http://www.w3.org/Security/Faq/www-security-faq.html
Programmation CGI
Conception d'un site WEB
99
langage.
u Cependant certains langages sont plus commodes
que d'autres.
u On utilise typiquement :
l des langages interprts tels sh, csh, et surtout Perl, l des langages compils tels C, C++, FORTRAN et maintenant Visual
100
"stdin"
101
<A HREF="foo.cgi"></A>
l invocation par soumission d'un formulaire avec la mthode GET :
Extension de l'URL
Conception d'un site WEB
102
de caractres) peuvent tre obtenus en analysant les variables d'environnement SCRIPT_NAME, PATH_INFO et QUERY_STRING.
Entre standard
Conception d'un site WEB
103
mthode POST, les arguments sont empaquets dans une grande chane de caractres prsente sur l'entre stdin.
u Cette grande chane ne se termine pas par EOF ! u Sa longueur est place dans la variable
d'environnement CONTENT_LENGTH.
104
couple nom=valeur. Une valeur est une chane de caractres, Chaque argument est spar du prcdent et du suivant par le caractre &. Les espaces sont remplacs par le caractre + et les caractres spciaux sont remplacs par leur code ASCII(hex) %xx. Exemple :
liquide=eau&ufs=on&sel=on&recipient=bol& dissertation=Et+bien,la+mayonnaise,+c'est+tr%E8s+bon...&nom=Mick ey+Mouse
En rsum
Conception d'un site WEB
105
commodment.
Le langage Perl
Conception d'un site WEB
106
Language) ne peut pas tre considr comme un langage de programmation orthodoxe. Sa seule ambition est d'tre commode.
u Nous n'en donnerons pas une prsentation
107
Les commentaires
Conception d'un site WEB
108
Localisation de l'interprte
Conception d'un site WEB
109
interprts (au moins pour tous les "shell" que je connais) indiquent, en premire ligne, le chemin d'accs leur interprte.
u Cette indication prend la forme du pseudo
commentaire :
#!/usr/local/bin/perl
u C'est cette indication qui permet de considrer un tel
Les instructions
Conception d'un site WEB
110
u Une instruction se termine toujours par le caractre ; u Ce premier programme ne comporte que l'instruction
l print "";
111
il est commode d'y inclure des variables qui seront values. La portion de texte est alors cite entre quasi-quotes :
"Je voudrais $n pizzas" "Je voudrais une ${c}croute garnie"
Formats MIME
Conception d'un site WEB
112
conformer la norme MIME (Multipurpose Internet Mail Extension) qui prconise d'indiquer en en-tte le type de ce qui suit, ici :
Content-type: text/html
u Cet en-tte doit tre suivi d'une ligne vide ! u D'autres types MIME :
application/pdf application/x-compress audio/basic image/gif ...
Jean DEMARTINI 14.02.00
Variables
Conception d'un site WEB
113
nombre entier,
l tableaux associatifs dont les lments sont indexs par un
symbole.
prfixs :
l par $ pour les scalaires, l par @ pour les tableaux, l par % pour les tableaux associatifs.
Contextes d'interprtation
Conception d'un site WEB
114
simple variable scalaire 29me lment du tableau @jours $nombre_de_jours{'mars'} lment associ au symbole 'mars' du tableau associatif %nombre_de_jours $#jours dernier indice dans le tableau @ jours @ jours tableau dans son ensemble @ jours[3,4,5] tableau constitu des lments numros 3, 4 et 5 du tableau @ jours @ jours[3..5] mme tableau que ci-dessus @ nombre_de_jours{'mars','avril'} tableau constitu des lments associs aux symboles 'mars' et 'avril' du tableau associatif % nombre_de_jours % nombre_de_jours tableau associatif dans son ensemble
Petite gnralisation
Conception d'un site WEB
115
gnralement par :
#!/usr/local/bin/perl #!/usr/local/bin/perl $title $title = = ; ; $body $body = = ; ; print print "Content-type: "Content-type: text/html text/html <HTML> <HTML> <HEAD><TITLE>$title</TITLE></HEAD> <HEAD><TITLE>$title</TITLE></HEAD> <BODY>$body</BODY> <BODY>$body</BODY> </HTML> </HTML> "; ";
Jean DEMARTINI 14.02.00
Les constantes
Conception d'un site WEB
116
u Portions de texte :
'bonjour tout le monde.' "il est $b l'heure."
Affectation
Conception d'un site WEB
117
118
addition soustraction multiplication division puissance (pas forcment entire) reste euclidien pr-incrmentation post-incrmentation concatnation rptition quivalent $a = $a + 3
119
@fruits = ('pomme', 'poire'); push(@fruits, 'banane', 'abricot') ; modifie @fruits qui vaut alors ('pomme', 'poire', 'banane', 'abricot'). pop(@fruits); modifie @fruits qui vaut alors ('pomme', 'poire', 'banane') et rend 'abricot'.
Fonctions
Conception d'un site WEB
120
Comme dans tous les langages de programmation, la fonction est un outil de structuration puissant. Dclaration (sub) et appel (&) d'une fonction (Perl ne connat pas le l ) : Les arguments sont passs dans le tableau implicite @_. La valeur rendue est celle de la dernire expression value.
sub sub moyenne moyenne { { (@_[0] (@_[0] + + @_[1]) @_[1]) // 2; 2; } } print print &moyenne(1,2); &moyenne(1,2);
u u
121
Variables d'environnement
Conception d'un site WEB
122
123
...
if if ($ENV{'REQUEST_METHOD'} ($ENV{'REQUEST_METHOD'} eq eq "POST") "POST") { { read(STDIN, read(STDIN, $buffer, $buffer, $ENV{'CONTENT_LENGTH')); $ENV{'CONTENT_LENGTH')); } } else else { { $buffer $buffer = = $ENV{'QUERY_STRING'}; $ENV{'QUERY_STRING'}; } } ... ...
u On note 3 nouveauts :
l la structure de contrle :
if <prdicat> {<consquence>} else {<alternative>} l l'oprateur de comparaison : eq l la fonction de lecture d'un bloc de caractres dans un fichier : read().
Jean DEMARTINI 14.02.00
124
problmes :
l comment tre sr que la chane "POST" est bien en majuscules ?
utilise (comme beaucoup d'outils Unix tel regexp) des motifs (patterns) dcrits l'aide d'expressions rgulires.
Expressions rgulires
Conception d'un site WEB
125
t introduites pour dcrire les langages rguliers (T1) et leurs analyseurs qui sont des machines tats finis.
Classes de caractres
Conception d'un site WEB
126
Caractres spciaux
Conception d'un site WEB
127
: n'importe quel caractre = [^\n] : un caractre alpha-numrique = [a-zA-Z0-9] : sauf un caractre alpha-numrique = [^a-zA-Z0-9] : un chiffre = [0-9] : sauf un chiffre = [^0-9] : un espacement = [ \t\n] : sauf un espacement = [^ \t\n]
128
la simple juxtaposition.
/[A-Z][0-9]/ dnote des motifs de la forme B3, Z8,
Parenthsage et chappement
129
Appariement
Conception d'un site WEB
130
trouver ce motif.
u La relation d'appariement est note =~ u Exemples :
'le petit chat' =~ /le/ 'le petit chat' =~ /Le/ 'un bon saucisson' =~ /s+/ vaut "vrai" vaut "faux" vaut "vrai"
Contexte de l'appariement
Conception d'un site WEB
131
u Exemples :
/^(bon)(.*)s$/ s'apparie avec tous les textes qui commencent par "bon" et qui se terminent par la lettre "s".
Substitution
Conception d'un site WEB
132
dans un texte, un motif par un autre, elle vaut le nombre des substitutions effectues.
u Une expression de substitution est de la forme :
s/<reg-exp>/<expression>/<paramtres>
u Exemples :
s/saucisse/banane/ remplace la premire occurrence du mot "saucisse" par le mot "banane". s/saucisse/saucisson/g remplace toutes les occurrences du mot "saucisse" par le mot "banane".
133
134
135
prdfinie* $_.
u Modification d'une portion de texte :
$_ = " une bonne saucisse sche est une saucisse qui a bien sch."; $ns = s/saucisse/banane/g;
Traduction
Conception d'un site WEB
136
dans un texte, des caractres par d'autres caractres ; elle vaut le nombre des traductions effectues.
u Une expression de traduction est de la forme :
tr/<classe de caractres>/<classe de caractres>/<paramtres>
u Exemples :
tr/a-z/A-Z/ remplace toutes les lettres minuscules par les majuscules correspondantes. Toutes ? tr/a-z/b-za/ utilise le code de Csar pour crypter un message.
137
138
prdfinie $_.
u Modification d'une portion de texte :
$_ = " une bonne saucisse sche est une saucisse qui a bien sch."; $ntr = tr/a/a/;
139
portion de texte, ce qui s'est appari chacun des sous-motifs est conserv dans des variables nommes \1, \2, dans la dfinition de la substitution et $1, $2, dans le reste du programme.
140
141
$buffer.
Jean DEMARTINI 14.02.00
142
Un trononnage utile
Conception d'un site WEB
143
$buffer $buffer = =" " liquide=eau&ufs=on&...&nom=Mickey+Mouse" liquide=eau&ufs=on&...&nom=Mickey+Mouse" @paires @paires = = split(/&/,$buffer); split(/&/,$buffer); ... ...
forme :
$paires[0] = "liquide=eau" $paires[1] = "uf=on" $paires[..] = "nom=Mickey+Mouse"
144
foreach foreach $paire $paire (@paires) (@paires) { { ($nom, $valeur) ($nom, $valeur) = = split(/=/, split(/=/, $paire); $paire); $valeur $valeur =~ =~ tr/+/ tr/+/ /; /; $valeur $valeur =~ =~ s/%(..)/pack("C", s/%(..)/pack("C", hex($1))/eg; hex($1))/eg; ... ... } }
u Quatre nouveauts :
l la structure d'itration
145
suivantes :
== != eq ne =~ !~ galit numrique diffrence numrique galit lexicographique diffrence lexicographique appariement dsappariement
Expressions logiques
Conception d'un site WEB
146
147
u Fonction hex :
hex ($texte) hex rend la valeur entire correspondant la chane $texte suppose reprsenter un nombre exprim en notation hexadcimale. comme ci-dessus sur la variable $_.
u Fonction pack :
pack("C",<expression valeur entire>) rend la chane contenant le caractres dont le code ASCII est la valeur de l'expression.
options toutes plus obscures les unes que les autres ; donc consultez la documentation.
148
s/%(..)/pack("C", hex($1))/eg
Expression dont l'valuation produit le motif de substitution
149
Quelques considrations
Conception d'un site WEB
150
151
= 'GET'; = $message;
152
$message = 'liquide=lait&recipient=bol&...'; $longueur = length($message); $ENV{'REQUEST_METHOD'} $ENV{'CONTENT_LENGTH'} open(CGI,'|perl script.pl'); print CGI $message; close CGI;
On utilise l'ouverture d'un pipe qui permet au script test d'hriter la fois des variables d'environnements et de recevoir le message via STDIN.
Jean DEMARTINI 14.02.00
= 'POST'; = $longueur;
Script tester
153
Sub Sub read_input read_input { { } } %formulaire %formulaire = = &read_input(); &read_input(); print print " " liquide liquide recipient recipient nom nom "; ";
154
construction du "panier", laboration de la facture, dclenchement du paiement, l Dispositifs varis : compteurs d'accs, livre d'or (guestbook), l Scripts d'analyse du traffic : pays, domaines, machines d'origine, navigateur utilis,
Jean DEMARTINI 14.02.00
155
cookies".
est une technique introduite par Netscape ( partir de la version 3.0 de son navigateur) pour pallier au comportement purement combinatoire du protocole HTTP.
156
157
auront t introduits.
u Ce fichier s'appellera BASE. u Cette structure peut suffire pour de petites bases de
Un enregistrement
Conception d'un site WEB
158
champs-information spars par le signe "|" ; ils sont spars entre eux par le signe ":".
u Champs cl (dans cet ordre) :
l ville, l spcialit : locales, asiatiques, viandes, poissons, l catgorie de prix : 50-100, 100-200, 200-300, >300.
Pages associes
Conception d'un site WEB
159
convient,
l formulaire de rfrencement pour permettre un restaurateur de
Formulaire d'interrogation
Conception d'un site WEB
160
Formulaire de rfrencement
Conception d'un site WEB
161
162
proprement parler, il sert simplement de modle la page que le script d'interrogation doit produire.
Modle de prsentation
Conception d'un site WEB
163
Format de l'enregistrement
Conception d'un site WEB
164
Le champ photo correspond au nom du fichier JPEG, la photo sera parvenue par un autre canal que celui du formulaire (La poste par exemple).
165
correspondent aux entits de formulaire ayant les noms suivants (sauf photo) :
l ville l specialite l categorie l nom l soustitre l adresse l prix1 l menu1 l prix2 l menu2
: ville : spcialit : catgorie : nom du restaurant : complment de nom : adresse : prix du menu n1 : menu n1 : prix du menu n2 : menu n2
166
: $ville : $specialite : $categorie : $photo : $nom : $soustitre : $adresse : $prix1 : @menu1 : $prix2 : @menu2
167
168
Fonction d'interrogation
Conception d'un site WEB
169
sub interrogation { local ($cle1, $cle2, $cle3) = @_; open(BASE,"<base.rst") || die 'fichier inconnu'; foreach $enregistrement (<BASE>) { ($cles, $info) = split(/\|/,$enregistrement); ($lc1, $lc2, $lc3) = split(/:/,$cles); if (($cle1 eq $lc1)&& ($cle2 eq $lc2)&&($cle3 eq $lc3)) { push(@RESULTATS,$info); } } close BASE; @RESULTATS; }
Jean DEMARTINI 14.02.00
Composition de la page
Conception d'un site WEB
170
$prix1
$prix2
$menu1
$menu2
@resultats.
Jean DEMARTINI 14.02.00
171
172
173
sub sub compose_menu compose_menu { { print print "<TABLE>"; "<TABLE>"; foreach foreach $item $item (@_) (@_) { { print print " " <TR> <TR> <TD <TD VALIGN=\"TOP\"> VALIGN=\"TOP\"> <IMG <IMG SRC=\"blueball.gif\"></TD> SRC=\"blueball.gif\"></TD> <TD <TD VALIGN=\"TOP\">$item</TD> VALIGN=\"TOP\">$item</TD> </TR> </TR> "; "; } } print print "</TABLE>"; "</TABLE>";
174
complter :
l On pourrait, par exemple, renvoyer une page analogue la page de
prsentation,
l ...
Fonction de rfrencement
Conception d'un site WEB
175
sub referencement { local ($ville, $specialite, $categorie, ...) = (@_[0]){'ville'}, @_[0]){'specialite'}, ); open(BASE,">>base.rst") || die 'fichier inconnu'; print BASE "$ville:$specialite: |$photo: \n"; close BASE; }
Le "panier de la mnagre"
Conception d'un site WEB
176
formulaires diverses reprises, le serveur ne peut pas conserver chez lui la trace de ce qui a t saisi ; il n'a aucun moyen d'identifier qui l'appelle car les adresses IP sont presque toujours flottantes.
u Pour ce faire, le serveur peut :
l Provoquer l'criture d'une information de son choix dans un fichier
de la machine client.
l Relire l'information qu'il a fait crire.
cookies".
Maintenir un "tat"
Conception d'un site WEB
177
possible.
u On peut, galement, utiliser les champs "cachs" des
formulaires :
<INPUT TYPE="HIDDEN" NAME="" VALUE="">
serveur d'inclure dans un formulaire une information qui lui sera retransmise.
u On peut ainsi crer des formulaires " tiroirs".
178
179
u <Nom>=<Valeur>
obligatoire chanes de caractres (sans point-virgule, virgule ou espace qui peuvent tre URL-encods : %..) dfinissant le nom et la valeur du cookie. compte=1
u expires=<Date>
facultatif indique la date partir de laquelle le cookie doit tre dtruit. Si ce paramtre n'est pas fourni, le cookie est dtruit au moment o on quitte le navigateur. expires=Tuesday,19-May-1998 18:35:40 GMT
180
u domain=<Domaine>
facultatif nom du domaine de la machine vers lequel le cookie peut tre renvoy. Ce nom doit comporter au moins 2 points ".", La comparaison est effectue par la fin. domain=.unice.fr Ce nom de domaine correspond aux machines verdon.unice;fr, hermes.unice.fr, i3S.unice.fr Si ce paramtre n'est pas fourni, le cookie ne peut tre renvoy qu' la machine qui l'a mis en place.
181
u path=<Chemin>
facultatif tte du chemin qui doit tre indiqu dans l'URL requise pour dclencher l'envoi du cookie. path=/~jdem Cette tte de chemin correspond au rpertoire ~jdem ainsi qu' tous ses sous-rpertoires. Si ce paramtre n'est pas fourni, le cookie ne peut tre renvoy qu'en suivant exactement le mme chemin que celui de la requte l'origine de l'installation du cookie.
u secure
facultatif le cookie ne peut tre transmis qu' un serveur scuris.
182
De plus ...
Conception d'un site WEB
183
u u u
tte. Un client peut toujours supprimer un cookie avant que le navigateur ne le dtruise en ditant le fichier cookies.txt. Pour supprimer un cookie, il suffit de renvoyer un cookie de mme dfinition qui expire dans le pass. Les cookies traversent les proxy-serveurs. Limitations :
l pas plus de 300 cookies, l pas plus de 4Ko par cookie, l pas plus de 20 cookies par serveur ou domaine.
Exemple de transaction
Conception d'un site WEB
184
Client Client Client Client Client Client Serveur Serveur Serveur Serveur Serveur Serveur
Cookie: client=Donald
Quelques rfrences
Conception d'un site WEB
185
A prsent, changeons de ct
Conception d'un site WEB
186
u Faisons le point :
Ct serveur
Langage LangageHTML HTML Scripts Scripts Javascript* Javascript* Scripts ScriptsCGI CGI Perl Perl
* et Applets Java (ou Active-X). Nous ne prsenterons que le langage Javascript beaucoup plus utilis (et admis pour cet usage) que le langage Java.
Jean DEMARTINI 14.02.00
Javascript
Conception d'un site WEB
187
d'inclure, dans une page HTML, des fragments de programmes interprts par le navigateur. u Javascript n'est pas du Java simplifi. C'est un langage de programmation part entire, possdant des possibilits trs modernes, normalis sous la rfrence ECMA-262. u Quelques rfrences :
http://www.ecma.ch/ http://www.dpunkt.de/javascript/ http://developer.netscape.com/ http://www.imaginet.fr/ime/javascri.htm
188
<HTML> <HTML> <HEAD><TITLE>JavaScript <HEAD><TITLE>JavaScript - leçon leçon 1</TITLE></HEAD> 1</TITLE></HEAD> <BODY <BODY BGCOLOR="White"> BGCOLOR="White"> <P>Texte <P>Texte HTML HTML normal.<BR> normal.<BR> <SCRIPT <SCRIPT LANGUAGE="JavaScript"> LANGUAGE="JavaScript"> document.write("Ceci document.write("Ceci provient provient d'un d'un script script JavaScript.") JavaScript.") </SCRIPT><BR> </SCRIPT><BR> Et Et voici, voici, à à nouveau, nouveau, du du texte texte HTML.</P> HTML.</P> </BODY></HTML> </BODY></HTML>
189
<SCRIPT <SCRIPT LANGUAGE="JavaScript"> LANGUAGE="JavaScript"> <!-<!-- cach cach aux aux vieux vieux navigateurs. navigateurs. document.write("Ceci document.write("Ceci provient provient d'un d'un script script JavaScript.") JavaScript.") //--> //--> </SCRIPT> </SCRIPT> ... ...
Explorer 3.0 ne reconnaissent pas Javascript. Il est donc prudent d'en cacher les instructions en simulant des commentaires.
Les vnements
Conception d'un site WEB
190
mamelles de la programmation Javascript. u La programmation Javascript est donc essentiellement ractive. u Un vnement est une situation fugitive qui est apparat dans certaines conditions :
onLoad onClick onMouseOver onMouseOut ... on vient de charger une nouvelle page, on vient de cliquer sur un bouton, la souris vient d'entrer dans la zone d'un lien, la souris vient de sortir d'une zone de lien,
191
Une expression Javascript. Remarquer " et '
TYPE="Button" TYPE="Button" VALUE="Chiche VALUE="Chiche !" !" onClick="alert('Boum onClick="alert('Boum !')"> !')">
<HTML> <HTML> ... ... <BODY> <BODY> <FORM> <FORM> <INPUT <INPUT
"Objets" Javascript
Conception d'un site WEB
192
modle-objet simple.
u Toutes les entits que permettent de manipuler les
instructions de ce langage sont des atomes ou des objets caractriss par des attributs :
l certains dfinissent ses proprits qui sont d'autres objets ou
atomes,
l d'autres dfinissent ce que l'on peut lui faire : ce sont ses
mthodes.
Entits prdfinies
Conception d'un site WEB
193
"coucou" ou 'coucou'
la structure de dictionnaire symbolique (tableau associatif) dont la seule constante est this. Ce dictionnaire symbolique est instanciable et les objets Javascript seront tous des instances de this.
194
Math.sin
u Exemple :
l Math.sin(1.5)
195
construite par le navigateur, une hirarchie d'objets Javascript est construite paralllement.
u Les scripts Javascript pourront accder et manipuler
les lments de cette fentre (donc de la page HTML) travers cette hirarchie.
u Seront manipulables (entre autres) :
l les ancres ou liens, l les images, l les formulaires.
196
mimeTypes[..] Plugins[..]
197
document.images[0] document.images[1] l Les liens seront reprs par : document.links[0] document.links[1] l etc...
Jean DEMARTINI 14.02.00
198
<IMG SRC="../Image1.gif" NAME="Chiche" ...> sera repre par : document.Chiche l Le lien dfini par : <A HREF="lesson_1.html" NAME="lesson_1"> sera repr par : document.lesson_1 l etc...
199
<FORM <FORM NAME="somme"> NAME="somme"> <INPUT <INPUT TYPE="Text" TYPE="Text" NAME="x" NAME="x" VALUE="0"><BR> VALUE="0"><BR> + + <INPUT <INPUT TYPE="Text" TYPE="Text" NAME="y" NAME="y" VALUE="0"><BR> VALUE="0"><BR> <INPUT <INPUT TYPE="Button" TYPE="Button" VALUE=" VALUE=" = =" " onClick= onClick= "document.somme.z.value "document.somme.z.value = = String(parseInt(document.somme.x.value) String(parseInt(document.somme.x.value) + + parseInt(document.somme.y.value))"> parseInt(document.somme.y.value))"> <INPUT <INPUT TYPE="Text" TYPE="Text" NAME="z" NAME="z" VALUE="0"> VALUE="0"> </FORM> </FORM>
200
et des oprateurs. u Une variable est, a priori, un nom utilis pour dsigner la valeur d'un atome ou d'un objet. u Les atomes, les objets, les variables, les oprateurs et les expressions peuvent tre regroups pour former des expressions. u Un programme est une expression.
Et c'est tout !
u Nous avons dj vus certains atomes et certains
Nom de variable
Conception d'un site WEB
201
conu pour ne pas tre confondu avec autre chose (un nombre par exemple).
u En Javascript, un nom de variable est form de lettres
Oprateurs
Conception d'un site WEB
202
mathmatique.
+ * / var .. = .. function .. (..) .. write
addition diffrence produit division dfinition d'une variable dfinition d'une fermeture criture cf. document.write(...)
l'valuation de l'expression qui le contient. u Une fermeture est un oprateur dfini par le programmeur.
Jean DEMARTINI 14.02.00
Expressions : smantique
Conception d'un site WEB
203
fait rgulire (comme dans certains langages comme Scheme), elle dpend de l'oprateur et du contexte.
u Smantiquement, une expression est toujours
associe un arbre d'valuation dont les feuilles sont des atomes ou des objets et dont les nuds sont des oprateurs.
u Un mcanisme d'valuation associe une valeur
toute expression.
Evaluation
Conception d'un site WEB
204
fonction, l'valuation de l'expression qui le contient revient remplacer, dans sa formule de dfinition, ses paramtres par ses arguments.
alors
205
f(g(5)) = 1 + g(5).(2 + 3.g(5)) = 1 + 5.5.(2 + 3.5.5) = 1926 Evaluation en ordre normal les arguments sont passs non valus
f(g(5)) = f(5.5) = f(25) = 1 + 25.(2 + 3.25) = 1926 Evaluation en ordre applicatif les arguments sont passs valus
Laquelle choisir ?
Conception d'un site WEB
206
formes standards,
l on value en ordre normal les expressions* que ne peuvent pas
Expressions vs Instructions
Conception d'un site WEB
207
que lorsqu'il s'agit de dcrire un comportement d'interface. Il peut, cependant, tre commode d'en utiliser dans d'autres contextes.
Jean DEMARTINI 14.02.00
Squences
Conception d'un site WEB
208
Oprateurs standards
Conception d'un site WEB
209
peuvent tre valus dans n'importe quel ordre sans que son comportement en soit affect.
Oprateurs "bit bit" & "et" bit bit | "ou" bit bit ^ "ou-exclusif" bit bit << dcalage gauche >> dcalage droite >>> dcalage droite Oprateurs arithmtiques + * / % Addition (concatnation) soustraction multiplication division reste
Oprateurs de relation == < <= gaux infrieur infrieur ou gal != > >= diffrents suprieur suprieur ou gal
Expressions standards
Conception d'un site WEB
210
211
u Oprateurs d'itration :
while (<prdicat>) {...} do {} while (<prdicat>) {} for (<expr-i>; <expr-f>; <expression>) {}
212
u Dfinir une variable, c'est lier un nom une valeur. u Dfinition d'une variable :
<nom> = <expression>
dans une expression, on dit que c'est une variable libre. Sinon, la variable est dite lie.
u Une expression contenant des variables libres n'a pas
Lieurs de variables
Conception d'un site WEB
213
librement (presque).
u La dfinition d'une fonction est une autre manire de
Oprateurs "paresseux"
Conception d'un site WEB
214
considrs comme standards. u Pourtant, il est commode (plus efficace) de les considrer comme spciaux car tous leurs arguments ne sont pas ncessaires leur valuation. u On peut procder ainsi pour toutes les fonctions incompltes.
Oprateurs boolens && conjonction || disjonction !
Jean DEMARTINI 14.02.00
complmentation
215
variable dfinie statiquement lien nom-valeur ternel comme nous venons de le voir n'est pas trs commode.
u On acceptera (avec rticence) de perdre les
* souvenez-vous de proverbe "Shaddock" : il n'est pas ncessaire de regarder o on va, il sera bien temps de voir quand on y sera !
Jean DEMARTINI 14.02.00
ou objets vivants ?
Conception d'un site WEB
216
complmentaires suivantes :
attacher un nom une valeur : dfinir une variable, attacher une valeur un nom : affecter une variable.
Oprateurs d'affectation
Conception d'un site WEB
217
218
implicite :
++ -incrmentation dcrmentation
219
constructeur qui configure l'objet universel this en lui dfinissant des attributs et des mthodes.
u Exemple un nombre rationnel possde 2 attributs,
220
standard new.
u Instancier un objet, c'est en fabriquer un nouvel
221
222
proprits de l'objet.
function Rationnel(n,d) { this.somme = rat_somme; this.numerateur = n; this.denominateur = d; }
223
224
acquisition Chiffre / oprande_courant Chiffre / oprande_initial Opration / calcul_initial Clear / raz calcul Opration / calcul_courant
L'automate
Conception d'un site WEB
225
comporte :
l 3 tats : l 3 vnements : l 5 actions :
"init", "acquisition" et "calcul" "Clear", "Chiffre" et "Opration" "raz", "oprande_initial", "oprande_courant", "calcul_initial", "calcul_courant"
Le formulaire "calculette"
Conception d'un site WEB
226
<FORM <FORM NAME="calculette"> NAME="calculette"> <TABLE <TABLE BORDER="5"> BORDER="5"> <TR> <TD <TR> <TD COLSPAN="4" COLSPAN="4" ROWSPAN="1"> ROWSPAN="1"> <INPUT <INPUT TYPE="Text" TYPE="Text" NAME="n" NAME="n" VALUE="0"></TD></TR> VALUE="0"></TD></TR> <TR> <TD><INPUT <TR> <TD><INPUT TYPE="Button" TYPE="Button" onClick="transition('chiffre','1')"></TD> onClick="transition('chiffre','1')"></TD> <TD><INPUT <TD><INPUT TYPE="Button" TYPE="Button" onClick="transition('chiffre','2')"></TD> onClick="transition('chiffre','2')"></TD> <TD><INPUT <TD><INPUT TYPE="Button" TYPE="Button" onClick="transition('chiffre','3')"></TD> onClick="transition('chiffre','3')"></TD> <TD><INPUT TYPE="Button" <TD><INPUT TYPE="Button" onClick="transition('operation','add')"></TD> onClick="transition('operation','add')"></TD> </TR> </TR> <TR>...</TR> <TR>...</TR> <TR>...</TR> <TR>...</TR> <TR> <TD><INPUT <TR> <TD><INPUT TYPE="Button" TYPE="Button" onClick="raz()"></TD> onClick="raz()"></TD> <TD><INPUT <TD><INPUT TYPE="Button" TYPE="Button" onClick="transition('chiffre','0')"></TD> onClick="transition('chiffre','0')"></TD> <TD><INPUT <TD><INPUT TYPE="Button" TYPE="Button" onClick="transition('operation','neg')"></TD> onClick="transition('operation','neg')"></TD> <TD><INPUT <TD><INPUT TYPE="Button" TYPE="Button" onClick="transition('operation','div')"></TD> onClick="transition('operation','div')"></TD> </TR> </TR> </TABLE></FORM> </TABLE></FORM>
L'tat de la calculette
Conception d'un site WEB
227
variables :
etat operande valant "init", "acquisition" ou "calcul", valant la valeur numrique de l'oprande en cours d'utilisation, resultat valant le rsultat de l'accumulation de tous les calculs effectus depuis le dernier "Clear". document.calculette.n.value - chane des chiffres de l'oprande en mode "acquisition", - chane des chiffres du rsultat en mode "calcul".
La fonction de transition
Conception d'un site WEB
228
function function transition transition (e,v) (e,v) { { if if (etat (etat == == "init") "init") { { if if (e (e == == "chiffre") "chiffre") {operande_initial(v);etat {operande_initial(v);etat = = "acquisition"} "acquisition"} return; return; } } if if (etat (etat == == "acquisition") "acquisition") { { if if (e (e == == "chiffre") "chiffre") {operande_courant(v)} {operande_courant(v)} if if (e (e == == "operation") "operation") { { operande operande = = parseInt(document.calculette.n.value); parseInt(document.calculette.n.value); calcul_initial(v); calcul_initial(v); etat etat = = "calcul";} "calcul";} return; return; } } if if (etat (etat == == "calcul") "calcul") { { if if (e (e == == "chiffre") "chiffre") {operande_initial(v);etat {operande_initial(v);etat = = "acquisition"} "acquisition"} if if (e (e == == "operation "operation") {calcul_courant(v)} return; return; } } } }
L'action "raz"
Conception d'un site WEB
229
function function raz raz () () { { resultat = resultat = 0; 0; operande = operande = 0; 0; etat = etat = "init"; "init"; document.calculette.n.value document.calculette.n.value = = "0"; "0"; } }
230
function function operande_initial operande_initial (v) (v) { { document.calculette.n.value document.calculette.n.value = = v; v; } } function function operande_courant operande_courant (v) (v) { { if if (document.calculette.n.value (document.calculette.n.value == == "0") "0") { { document.calculette.n.value document.calculette.n.value = = v; v; } } else else { { document.calculette.n.value document.calculette.n.value += += v; v; } } } }
231
function function calcul calcul (v) (v) { { if {resultat if (v (v == == "add") "add") {resultat += += operande;} operande;} if {resultat if (v (v == == "sub") "sub") {resultat -= -= operande;} operande;} if {resultat if (v (v == == "mul") "mul") {resultat *= *= operande;} operande;} if {resultat if (v (v == == "div") "div") {resultat /= /= operande;} operande;} document.calculette.n.value document.calculette.n.value = = resultat; resultat; } } function function calcul_initial calcul_initial (v) (v) { { if {resultat if (v (v == == "neg") "neg") {resultat = = -operande;} -operande;} calcul(v); calcul(v); } } function function calcul_courant calcul_courant (v) (v) { { if {resultat if (v (v == == "neg") "neg") {resultat = = -resultat;} -resultat;} calcul(v); calcul(v); } }
232
En guise de conclusion
Conception d'un site WEB
233
u Ce cours est donc largement incomplet. u Vous avez cependant constat qu'il tait dj possible