Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 98 additions & 0 deletions language/control-structures/do-while.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 53fb200fed6d316b0616a915eb87a40de1d80f51 Maintainer: lacatoire Status: ready -->

<sect1 xml:id="control-structures.do.while" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>do-while</title>
<?phpdoc print-version-for="dowhile"?>
<simpara>
I cicli <literal>do-while</literal> sono molto simili ai
cicli <literal>while</literal>, con la differenza che l'espressione di verità viene
controllata alla fine di ogni iterazione invece che all'inizio.
La differenza principale rispetto ai cicli <literal>while</literal> regolari è
che la prima iterazione di un ciclo <literal>do-while</literal> è
garantita (l'espressione di verità viene controllata solo alla fine
dell'iterazione), mentre potrebbe non essere necessariamente eseguita con un
ciclo <literal>while</literal> regolare (l'espressione di verità viene
controllata all'inizio di ogni iterazione, se viene valutata come
&false; fin dall'inizio, l'esecuzione del ciclo
terminerebbe immediatamente).
</simpara>
<para>
Esiste una sola sintassi per i cicli <literal>do-while</literal>:

<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$i = 0;
do {
echo $i;
} while ($i > 0);
?>
]]>
</programlisting>
</informalexample>
</para>
<simpara>
Il ciclo precedente verrebbe eseguito esattamente una volta, poiché dopo la prima
iterazione, quando l'espressione di verità viene controllata, viene valutata come
&false; (<varname>$i</varname> non è maggiore di 0) e l'esecuzione
del ciclo termina.
</simpara>
<para>
Gli utenti avanzati del C potrebbero conoscere un utilizzo diverso del
ciclo <literal>do-while</literal>, che permette di interrompere l'esecuzione nel
mezzo di blocchi di codice, incapsulandoli con
<literal>do-while</literal> (0), e utilizzando l'istruzione <link
linkend="control-structures.break"><literal>break</literal></link>.
Il seguente frammento di codice illustra questo:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
do {
if ($i < 5) {
echo "i is not big enough";
break;
}
$i *= $factor;
if ($i < $minimum_limit) {
break;
}
echo "i is ok";

/* process i */

} while (0);
?>
]]>
</programlisting>
</informalexample>
</para>
<simpara>
È possibile utilizzare l'operatore
<link linkend="control-structures.goto"><literal>goto</literal></link>
al posto di questo trucco.
</simpara>
</sect1>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
120 changes: 120 additions & 0 deletions language/control-structures/elseif.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 22583751fbfdaa3eaa41aeb6470d1343f5cb2c78 Maintainer: lacatoire Status: ready -->

<sect1 xml:id="control-structures.elseif" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>elseif/else if</title>
<?phpdoc print-version-for="elseif"?>
<para>
<literal>elseif</literal>, come suggerisce il nome, è una combinazione
di <literal>if</literal> e <literal>else</literal>. Come
<literal>else</literal>, estende un'istruzione <literal>if</literal>
per eseguire un'istruzione diversa nel caso in cui l'espressione
<literal>if</literal> originale venga valutata come
&false;. Tuttavia, a differenza di
<literal>else</literal>, eseguirà quell'espressione alternativa
solo se l'espressione condizionale <literal>elseif</literal>
viene valutata come &true;. Ad esempio, il seguente
codice visualizzerebbe <computeroutput>a is bigger than
b</computeroutput>, <computeroutput>a equal to b</computeroutput>
o <computeroutput>a is smaller than b</computeroutput>:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
if ($a > $b) {
echo "a is bigger than b";
} elseif ($a == $b) {
echo "a is equal to b";
} else {
echo "a is smaller than b";
}
?>
]]>
</programlisting>
</informalexample>
</para>
<simpara>
Possono esserci diversi <literal>elseif</literal> all'interno della stessa
istruzione <literal>if</literal>. La prima espressione
<literal>elseif</literal> (se presente) che viene valutata come
&true; verrebbe eseguita. In PHP, è possibile scrivere
<literal>else if</literal> (in due parole) e il comportamento sarebbe identico
a quello di <literal>elseif</literal> (in una sola parola). Il significato sintattico
è leggermente diverso (lo stesso comportamento del C) ma in sostanza
entrambi produrrebbero esattamente lo stesso comportamento.
</simpara>
<simpara>
L'istruzione <literal>elseif</literal> viene eseguita solo se l'espressione
<literal>if</literal> precedente e tutte le espressioni
<literal>elseif</literal> precedenti sono state valutate come
&false;, e l'espressione
<literal>elseif</literal> corrente viene valutata come
&true;.
</simpara>
<note>
<simpara>
Si noti che <literal>elseif</literal> e <literal>else if</literal>
saranno considerati esattamente equivalenti solo quando si utilizzano le parentesi graffe
come nell'esempio precedente. Quando si utilizzano i due punti per definire
le condizioni <literal>if</literal>/<literal>elseif</literal>, l'uso
di <literal>elseif</literal> in una sola parola diventa necessario. PHP
restituirà un errore di parsing se <literal>else if</literal>
è separato in due parole.
</simpara>
</note>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php

/* Incorrect Method: */
if ($a > $b):
echo $a." is greater than ".$b;
else if ($a == $b): // Will not compile.
echo "The above line causes a parse error.";
endif;
]]>
</programlisting>
</informalexample>

<informalexample>
<programlisting role="php">
<![CDATA[
<?php
/* Correct Method: */
if ($a > $b):
echo $a." is greater than ".$b;
elseif ($a == $b): // Note the combination of the words.
echo $a." equals ".$b;
else:
echo $a." is neither greater than or equal to ".$b;
endif;

?>
]]>
</programlisting>
</informalexample>
</para>
</sect1>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
Loading