diff options
Diffstat (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100042.html')
| -rw-r--r-- | Master/Reference Architectures and Patterns/hjp5/html/k100042.html | 468 |
1 files changed, 468 insertions, 0 deletions
diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100042.html b/Master/Reference Architectures and Patterns/hjp5/html/k100042.html new file mode 100644 index 0000000..d9bb4a4 --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100042.html @@ -0,0 +1,468 @@ +<html>
+<head>
+<title>
+Handbuch der Java-Programmierung, 5. Auflage
+</title>
+</head>
+<body>
+<a name="startofbody"></a>
+<script language="JavaScript" src="hjp4lib.js">
+</script>
+<script language="JavaScript">
+installKbdHandler("97,#startofbody;101,#endofbody;116,cover.html;122,k100003.html;115,search.html;105,index.html;100,JDKDOCS;112,APIDOCS;104,k100040.html;106,k100041.html;107,k100043.html;108,k100046.html");
+</script>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100040.html"> << </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100041.html"> < </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100043.html"> > </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100046.html"> >> </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
+<td align="right">Kapitel 6 - Anweisungen
+</table>
+<hr>
+
+
+<!-- Section -->
+<a name="sectlevel2id006002"></a>
+<h2>6.2 <a name="ixa100389">Verzweigungen</a></h2>
+<hr>
+<ul>
+<li><a href="k100042.html#sectlevel2id006002">6.2 Verzweigungen</a>
+<ul>
+<li><a href="k100042.html#dieifanweisung">6.2.1 Die if-Anweisung</a>
+<ul>
+<li><a href="k100042.html#sectlevel4id006002001001">Syntax</a>
+<li><a href="k100042.html#sectlevel4id006002001002">Bedeutung</a>
+<li><a href="k100042.html#sectlevel4id006002001003">Dangling else</a>
+<li><a href="k100042.html#sectlevel4id006002001004">Bedingtes Kompilieren</a>
+</ul>
+<li><a href="k100042.html#sectlevel3id006002002">6.2.2 Die switch-Anweisung</a>
+<ul>
+<li><a href="k100042.html#sectlevel4id006002002001">Syntax</a>
+<li><a href="k100042.html#sectlevel4id006002002002">Bedeutung</a>
+</ul>
+</ul>
+</ul>
+<hr>
+
+<p>
+Verzweigungen in Java dienen wie in allen Programmiersprachen dazu,
+bestimmte Programmteile nur beim Eintreten vorgegebener Bedingungen,
+die erst zur Laufzeit bekannt werden, auszuführen. An Verzweigungen
+bietet Java die <a name="ixa100390"><a href="index_i.html#ixb100075"><font color=#000080><tt>if</tt></font></a></a>-
+und <a name="ixa100391"><a href="index_i.html#ixb100342"><font color=#000080><tt>if-else</tt></font></a></a>-Anweisung
+sowie die <a name="ixa100392"><a href="index_s.html#ixb100079"><font color=#000080><tt>switch</tt></font></a></a>-Anweisung.
+
+
+<!-- Section -->
+<a name="dieifanweisung"></a>
+<h3>6.2.1 Die <a name="ixa100393">if-Anweisung</a> </h3>
+
+
+<!-- Section -->
+<a name="sectlevel4id006002001001"></a>
+<h4>Syntax </h4>
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
+<tr>
+<td valign=top width=100%>
+<font color="#660066">
+<pre>
+if (ausdruck)
+ anweisung;
+</pre>
+</font>
+</td>
+</tr>
+</table>
+
+<p>
+oder
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
+<tr>
+<td valign=top width=100%>
+<font color="#660066">
+<pre>
+if (ausdruck)
+ anweisung1;
+else
+ anweisung2;
+</pre>
+</font>
+</td>
+</tr>
+</table>
+
+
+<!-- Section -->
+<a name="sectlevel4id006002001002"></a>
+<h4>Bedeutung </h4>
+
+<p>
+Die <a name="ixa100394"><a href="index_i.html#ixb100075"><font color=#000080><tt>if</tt></font></a></a>-Anweisung
+wertet zunächst den Ausdruck <font color="#000077"><tt>ausdruck</tt></font>
+aus. Danach führt sie die Anweisung <font color="#000077"><tt>anweisung</tt></font>
+genau dann aus, wenn das Ergebnis des Ausdrucks <a href="index_t.html#ixb100233"><font color=#000080><tt>true</tt></font></a>
+ist. Ist <font color="#000077"><tt>ausdruck</tt></font> hingegen <a href="index_f.html#ixb100234"><font color=#000080><tt>false</tt></font></a>,
+so wird die Anweisung nicht ausgeführt, sondern mit der ersten
+Anweisung nach der <a href="index_i.html#ixb100075"><font color=#000080><tt>if</tt></font></a>-Anweisung
+fortgefahren.
+
+<p>
+Mit der <a href="index_i.html#ixb100342"><font color=#000080><tt>if-else</tt></font></a>-Anweisung
+gibt es eine weitere Verzweigung in Java. Falls <font color="#000077"><tt>ausdruck</tt></font>
+wahr ist, wird <font color="#000077"><tt>anweisung1</tt></font> ausgeführt,
+andernfalls <font color="#000077"><tt>anweisung2</tt></font>. Eine
+der beiden Anweisungen wird also in jedem Fall ausgeführt.
+
+<p>
+Anstelle einer einzelnen Anweisung kann jeweils auch eine Folge von
+Anweisungen angegeben werden, wenn sie innerhalb eines Blocks steht.
+Dieser wird als Einheit betrachtet und komplett ausgeführt, wenn
+die entsprechende Bedingung zutrifft.
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Zu beachten ist, dass der Testausdruck in der Schleife vom Typ <a name="ixa100395"><a href="index_b.html#ixb100072"><font color=#000080><tt>boolean</tt></font></a></a>
+sein muss. Anders als in C ist es in Java nicht erlaubt, einen <i>numerischen</i>
+Ausdruck an seiner Stelle zu verwenden.</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
+<tr>
+<td><font color="#FFFFFF"> Hinweis </font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+
+
+<!-- Section -->
+<a name="sectlevel4id006002001003"></a>
+<h4><a name="ixa100396">Dangling else</a></h4>
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=1></td>
+<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Eine der Mehrdeutigkeiten, die in fast allen blockstrukturierten Programmiersprachen
+auftauchen können, wurde auch von den Java-Entwicklern nicht
+beseitigt. Als Beispiel wollen wir uns das folgende Codefragment ansehen,
+das leider nicht so ausgeführt wird, wie es die Einrückung
+erwarten läßt:</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#CC0000">
+<tr>
+<td><font color="#FFFFFF"> Warnung </font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+<a name="listingid006002"></a>
+
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#DDDDDD">
+<tr>
+<td valign=top>
+<font color="#000055">
+<pre>
+<font color="#555555">001 </font><font color="#0000AA">if</font> (a)
+<font color="#555555">002 </font> <font color="#0000AA">if</font> (b)
+<font color="#555555">003 </font> s1;
+<font color="#555555">004 </font><font color="#0000AA">else</font>
+<font color="#555555">005 </font> s2;</pre>
+</font>
+</td>
+</tr>
+</table>
+<i>
+Listing 6.2: Dangling else</i></p>
+
+<p>
+Der <a href="index_e.html#ixb100172"><font color=#000080><tt>else</tt></font></a>-Zweig
+gehört zu der <i>innersten</i> Verzweigung <font color="#000077"><tt>if
+(b)...</tt></font>, und die korrekte Einrückung würde lauten:
+<a name="listingid006003"></a>
+
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#DDDDDD">
+<tr>
+<td valign=top>
+<font color="#000055">
+<pre>
+<font color="#555555">001 </font><font color="#0000AA">if</font> (a)
+<font color="#555555">002 </font> <font color="#0000AA">if</font> (b)
+<font color="#555555">003 </font> s1;
+<font color="#555555">004 </font> <font color="#0000AA">else</font>
+<font color="#555555">005 </font> s2;</pre>
+</font>
+</td>
+</tr>
+</table>
+<i>
+Listing 6.3: Dangling else, ausgeschaltet</i></p>
+
+<p>
+Dieses Problem ist in der Literatur unter dem Namen <i>dangling else</i>
+bekannt und kann nur auftauchen, wenn eine <a href="index_i.html#ixb100075"><font color=#000080><tt>if</tt></font></a>-
+und eine <a href="index_i.html#ixb100342"><font color=#000080><tt>if-else</tt></font></a>-Verzweigung
+ineinander geschachtelt werden und beide Anweisungen nicht durch Blockklammern
+begrenzt wurden. Um die Mehrdeutigkeit zu beseitigen, wird in Java
+wie auch in C oder C++ ein »freies« <a name="ixa100397"><a href="index_e.html#ixb100172"><font color=#000080><tt>else</tt></font></a></a>
+immer an das am weitesten innen liegende <a href="index_i.html#ixb100075"><font color=#000080><tt>if</tt></font></a>
+angehängt.
+
+<!-- Section -->
+
+<a name="sectlevel4id006002001004"></a>
+<h4><a name="ixa100398">Bedingtes Kompilieren</a></h4>
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#0099CC"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=1></td>
+<td width=1 align=left valign=top bgcolor="#0099CC"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Eine weitere Besonderheit der Verzweigungen in Java rührt daher,
+dass die Sprache keinen Präprozessor besitzt und deshalb kein
+<font color="#000077"><tt>#ifdef</tt></font> kennt. Um eine eingeschränkte
+Form der bedingten Kompilierung zu verwirklichen, wird in Java das
+folgende Programmfragment in der Weise kompiliert, dass die Anweisung
+<font color="#000077"><tt>anweisung</tt></font> nicht mitübersetzt
+wird, da der Testausdruck konstant <a href="index_f.html#ixb100234"><font color=#000080><tt>false</tt></font></a>
+ist:
+<a name="listingid006004"></a>
+
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#DDDDDD">
+<tr>
+<td valign=top>
+<font color="#000055">
+<pre>
+<font color="#555555">001 </font><font color="#0000AA">if</font> (<font color="#006699">false</font>)
+<font color="#555555">002 </font> anweisung;</pre>
+</font>
+</td>
+</tr>
+</table>
+<i>
+Listing 6.4: Bedingtes Kompilieren</i></p>
+</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#0099CC">
+<tr>
+<td><font color="#FFFFFF"> Tipp </font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#0099CC"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+
+<p>
+Allerdings sollte man hinzufügen, dass ein solches Verhalten
+in der Sprachspezifikation zwar dringend empfohlen wird, für
+die Compiler-Bauer aber nicht zwangsläufig verpflichtend ist.
+
+<p>
+Das hier beschriebene Verhalten eines Java-Compilers steht im Widerspruch
+zu einer anderen Forderung, nämlich der, nur <a name="ixa100399"><i>erreichbare Anweisungen</i></a>
+zu akzeptieren. Gemäß Sprachspezifikation soll der Compiler
+alle Anweisungen, die <i>nicht erreichbar</i> sind, ablehnen, also
+einen Fehler melden.
+
+<p>
+Nicht erreichbar im technischen Sinne sind dabei Anweisungen in Schleifen,
+deren Testausdruck zur Compile-Zeit <a href="index_f.html#ixb100234"><font color=#000080><tt>false</tt></font></a>
+ist, und Anweisungen, die hinter einer <a href="index_b.html#ixb100080"><font color=#000080><tt>break</tt></font></a>-,
+<a href="index_c.html#ixb100081"><font color=#000080><tt>continue</tt></font></a>-,
+<a href="index_t.html#ixb100347"><font color=#000080><tt>throw</tt></font></a>-
+oder <a href="index_r.html#ixb100333"><font color=#000080><tt>return</tt></font></a>-Anweisung
+liegen, die <i>unbedingt</i> angesprungen wird. Die einzige Ausnahme
+von dieser Regel ist die im vorigen Absatz erwähnte Variante
+der konstant unwahren Verzweigung, die zur bedingten Kompilierung
+verwendet werden kann.
+
+<!-- Section -->
+
+<a name="sectlevel3id006002002"></a>
+<h3>6.2.2 Die switch-Anweisung </h3>
+
+
+<!-- Section -->
+<a name="sectlevel4id006002002001"></a>
+<h4>Syntax </h4>
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
+<tr>
+<td valign=top width=100%>
+<font color="#660066">
+<pre>
+switch (ausdruck)
+{
+ case constant:
+ anweisung;
+ ...
+ default:
+}
+</pre>
+</font>
+</td>
+</tr>
+</table>
+
+
+<!-- Section -->
+<a name="sectlevel4id006002002002"></a>
+<h4>Bedeutung </h4>
+
+<p>
+Die <a name="ixa100400"><a href="index_s.html#ixb100079"><font color=#000080><tt>switch</tt></font></a></a>-Anweisung
+ist eine <a name="ixa100401">Mehrfachverzweigung</a>. Zunächst
+wird der Ausdruck <font color="#000077"><tt>ausdruck</tt></font>,
+der vom Typ <a href="index_b.html#ixb100242"><font color=#000080><tt>byte</tt></font></a>,
+<a href="index_s.html#ixb100243"><font color=#000080><tt>short</tt></font></a>,
+<a href="index_c.html#ixb100215"><font color=#000080><tt>char</tt></font></a>
+oder <a href="index_i.html#ixb100244"><font color=#000080><tt>int</tt></font></a>
+sein muss, ausgewertet. In Abhängigkeit vom Ergebnis wird dann
+die Sprungmarke angesprungen, deren Konstante mit dem Ergebnis des
+Ausdrucks übereinstimmt. Die Konstante und der Ausdruck müssen
+dabei zuweisungskompatibel sein.
+
+<p>
+Das optionale <a name="ixa100402"><a href="index_d.html#ixb100349"><font color=#000080><tt>default</tt></font></a></a>-Label
+wird dann angesprungen, wenn keine passende Sprungmarke gefunden wird.
+Ist kein <a href="index_d.html#ixb100349"><font color=#000080><tt>default</tt></font></a>-Label
+vorhanden und wird auch keine passende Sprungmarke gefunden, so wird
+keine der Anweisungen innerhalb der <a href="index_s.html#ixb100079"><font color=#000080><tt>switch</tt></font></a>-Anweisung
+ausgeführt. Jede Konstante eines <a name="ixa100403"><a href="index_c.html#ixb100350"><font color=#000080><tt>case</tt></font></a></a>-Labels
+darf nur einmal auftauchen. Das <a href="index_d.html#ixb100349"><font color=#000080><tt>default</tt></font></a>-Label
+darf maximal einmal verwendet werden.
+
+<p>
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=1></td>
+<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Nachdem ein <a href="index_c.html#ixb100350"><font color=#000080><tt>case</tt></font></a>-
+oder <a href="index_d.html#ixb100349"><font color=#000080><tt>default</tt></font></a>-Label
+angesprungen wurde, werden alle dahinterstehenden Anweisungen ausgeführt.
+Im Gegensatz zu Sprachen wie PASCAL erfolgt auch dann keine Unterbrechung,
+wenn das nächste Label erreicht wird. Wenn dies erwünscht
+ist, muss der Kontrollfluss wie in C und C++ mit Hilfe einer <a name="ixa100404"><a href="index_b.html#ixb100080"><font color=#000080><tt>break</tt></font></a></a>-Anweisung
+unterbrochen werden. Jedes <a href="index_b.html#ixb100080"><font color=#000080><tt>break</tt></font></a>
+innerhalb einer <a href="index_s.html#ixb100079"><font color=#000080><tt>switch</tt></font></a>-Anweisung
+führt dazu, dass zum Ende der <a href="index_s.html#ixb100079"><font color=#000080><tt>switch</tt></font></a>-Anweisung
+verzweigt wird.</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#CC0000">
+<tr>
+<td><font color="#FFFFFF"> Warnung </font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+
+<p>
+Wie aus den bisherigen Ausführungen deutlich wurde, ist die Semantik
+der <a href="index_s.html#ixb100079"><font color=#000080><tt>switch</tt></font></a>-Anweisung
+in Java der in C und C++ sehr ähnlich. Ein wichtiger Unterschied
+besteht darin, dass in Java alle Anweisungen, die unmittelbar innerhalb
+des <a href="index_s.html#ixb100079"><font color=#000080><tt>switch</tt></font></a>
+liegen, <a href="index_c.html#ixb100350"><font color=#000080><tt>case</tt></font></a>-
+oder <a href="index_d.html#ixb100349"><font color=#000080><tt>default</tt></font></a>-Labels
+sein müssen. Der Trick, in <a href="index_s.html#ixb100079"><font color=#000080><tt>switch</tt></font></a>-Anweisungen
+Schleifen zu packen, die sich über mehrere Labels erstrecken,
+funktioniert in Java nicht. Die Sprachspezifikation erläutert
+dies am Beispiel von <a name="ixa100405"><i>Duff's Device</i></a>,
+das so in Java nicht kompilierbar ist:
+<a name="listingid006005"></a>
+
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#DDDDDD">
+<tr>
+<td valign=top>
+<font color="#000055">
+<pre>
+<font color="#555555">001 </font><font color="#006699">int</font> q = (n+7)/8;
+<font color="#555555">002 </font><font color="#0000AA">switch</font> (n%8) {
+<font color="#555555">003 </font><font color="#0000AA">case</font> 0: <font color="#0000AA">do</font> { foo();
+<font color="#555555">004 </font><font color="#0000AA">case</font> 1: foo();
+<font color="#555555">005 </font><font color="#0000AA">case</font> 2: foo();
+<font color="#555555">006 </font><font color="#0000AA">case</font> 3: foo();
+<font color="#555555">007 </font><font color="#0000AA">case</font> 4: foo();
+<font color="#555555">008 </font><font color="#0000AA">case</font> 5: foo();
+<font color="#555555">009 </font><font color="#0000AA">case</font> 6: foo();
+<font color="#555555">010 </font><font color="#0000AA">case</font> 7: foo();
+<font color="#555555">011 </font> } <font color="#0000AA">while</font> (--q >= 0);
+<font color="#555555">012 </font>}</pre>
+</font>
+</td>
+</tr>
+</table>
+<i>
+Listing 6.5: Duff's Device</i></p>
+
+<p>
+Glücklicherweise ist derartiger Code mehr zur Verwirrung ahnungsloser
+Programmierer gedacht als zur ernsthaften Anwendung und kommt in der
+Praxis normalerweise kaum vor.
+<hr>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage, Addison
+Wesley, Version 5.0.1
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100040.html"> << </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100041.html"> < </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100043.html"> > </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100046.html"> >> </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
+<td align="right">© 1998, 2007 Guido Krüger & Thomas
+Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
+</table>
+<a name="endofbody"></a>
+</body>
+</html>
|
