svn: /phpdoc/ca/trunk/language/control-structures/ for.xml
[email protected] (Oriol de la Torre) Thu, 15 Sep 2011 18:36:51 +0000
| Newsgroups | php.doc.ca |
|---|---|
| Message-ID | <[email protected]> |
--7e52aec059124f7ba14ef23f48baa7c93d582685
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
uri Thu, 15 Sep 2011 18:36:51 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=316826
Log:
Adding another translated file
Changed paths:
A phpdoc/ca/trunk/language/control-structures/for.xml
Added: phpdoc/ca/trunk/language/control-structures/for.xml
===================================================================
--- phpdoc/ca/trunk/language/control-structures/for.xml (rev 0)
+++ phpdoc/ca/trunk/language/control-structures/for.xml 2011-09-15 18:36:51 UTC (rev 316826)
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+
+<sect1 xml:id="control-structures.for" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title><literal>for</literal></title>
+ <?phpdoc print-version-for="for"?>
+ <para>
+ Els cicles <literal>for</literal> són els cicles més complexos de PHP.
+ I presenten una forma anàloga al funcionament en llenguatge C.
+ La sintaxi de tals cicles <literal>for</literal> és la següent:
+ <informalexample>
+ <programlisting>
+<![CDATA[
+for (expressio1; expressio2; expressio3)
+ sentència/es
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+ <simpara>
+ La primera expressió (<varname>expressio1</varname>) es avaluada (executada)
+ almenys un cop i de forma incondicionada al inici del loop.
+ </simpara>
+ <simpara>
+ La segona de les expressions, l'<varname>expressio2</varname>, serà avaluada al inici de cada iteració.
+ Si tal avaluació retorna veritat (&true;), el cicle continua i totes les sentencies
+ en aquest contingudes seran executades. En cas contrari, si l'avaluació retorna falsedat
+ (&false;), finalitzarà l'execució.
+ </simpara>
+ <simpara>
+ Finalment, a la fi de cada iteració, l'<varname>expressio3</varname> serà també avaluada (executada).
+ </simpara>
+ <simpara>
+ Cadascuna de les expressions mencionades, poden aparèixer buides o contenir
+ múltiples expressions separades per comes (,). Dins l'<varname>expressio2
+ </varname> totes les sub-expressions separades per comes de la mateixa
+ seran avaluades, però el resultat final sols s'agafarà de la darrera part
+ (és a dir, prenent el resultat de la sub-expressió situada més a la dreta).
+ Alhora, que no existeixi cap definició de l'<varname>expressio2</varname>,
+ significarà que el cicle o loop, s'executarà indefinidament (aquí, de forma
+ anàloga al que ocórrer en el llenguatge C, l'interpret PHP considerarà de forma
+ implícita que dita expressió retorna veritat, &true;) Cosa que pot resultar
+ més útil del que en principi es podria pensar, ja que molts cops es pretén
+ finalitzar el bucle fent ús del <link linkend="control-structures.break">
+ <literal>break</literal></link> dins un condicional, enlloc de fer servir
+ l'expressió vertadera del <literal>for</literal>.
+ </simpara>
+ <para>
+ Considera els següents exemples. On cadascun d'ells mostra en
+ pantalla els números del 1 al 10:
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+<?php
+/* exemple 1 */
+
+for ($i = 1; $i <= 10; $i++) {
+ echo $i;
+}
+
+/* exemple 2 */
+
+for ($i = 1; ; $i++) {
+ if ($i > 10) {
+ break;
+ }
+ echo $i;
+}
+
+/* exemple 3 */
+
+$i = 1;
+for (; ; ) {
+ if ($i > 10) {
+ break;
+ }
+ echo $i;
+ $i++;
+}
+
+/* exemple 4 */
+
+for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
+?>
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+ <simpara>
+ Aquí, d'acord amb la tasca que realitzen, probablement el millor dels
+ exemples sigui el primer (o potser el quart), però cal atendre a la possibilitat
+ de que la utilització d'expressions buides dins el bucle <literal>for</literal>,
+ pugui ser d'utilitat en moltes altres ocasions.
+ </simpara>
+ <para>
+ PHP també suporta una <link linkend="control-structures.alternative-syntax">
+ sintaxi alternativa</link> (anomenada en anglès "colon syntax")
+ pel que fa al <literal>for</literal>. Podent ser reescrita també així:
+ <informalexample>
+ <programlisting>
+<![CDATA[
+for (expressio1; expressio2; expressio3):
+ sentència/es
+ ...
+endfor;
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+ <simpara>
+ Resulta un recurs força comú entre molts programadors el iterar per mitjà
+ d'arrays (matrius) tal i com il·lustra el següent exemple:
+ </simpara>
+ <para>
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+<?php
+/*
+* Aquesta és una matriu (array) en la que alguns dels seus valors
+* són modificats durant l'execució del loop.
+*/
+$persones = Array(
+ Array('nom' => 'Meritxell', 'ordre' => 215863),
+ Array('nom' => 'Oriol', 'ordre' => 856412)
+ );
+
+for($i = 0; $i < sizeof($persones); ++$i)
+{
+ $persones[$i]['ordre'] = rand(000000, 999999);
+}
+?>
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+ <simpara>
+ En l'exemple precedent, el problema radica en la segona expressió del <literal>for</literal>.
+ Atès que al obligar-lo a calcular la mida de la matriu en cada iteració, alenteix
+ l'execució del codi. Ara bé, donat que la mida d'aquell no canvia, podem
+ optimitzar-lo fàcilment utilitzant una variable interna que sigui l'encarregada
+ de emmagatzemar dit valor. E utilitzar-la a seguit en la segona expressió
+ del bucle, salvant així el reiterar-la un i altre cop com a sentència.
+ Tal cosa és la que s'ha corregit en el següent exemple:
+ </simpara>
+ <para>
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+<?php
+$persones = Array(
+ Array('nom' => 'Meritxell', 'ordre' => 215863),
+ Array('nom' => 'Oriol', 'ordre' => 856412)
+ );
+
+for($i = 0, $tamany = sizeof($persones); $i < $tamany; ++$i)
+{
+ $persones[$i]['ordre'] = rand(000000, 999999);
+}
+?>
+]]>
+ </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
+-->
Property changes on: phpdoc/ca/trunk/language/control-structures/for.xml
___________________________________________________________________
Added: svn:keywords
+ Id Rev Revision Date LastChangedDate LastChangedRevision Author LastChangedBy HeadURL URL
Added: svn:eol-style
+ native
--7e52aec059124f7ba14ef23f48baa7c93d582685--