Diferència entre revisions de la pàgina «PHP control de flux»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb «El control de flux és el que identifica un llenguatge de programació. Sense control de flux no hi ha programa (HTML no té control de flux, per això no se'l considera …».)
 
 
(Hi ha 10 revisions intermèdies del mateix usuari que no es mostren)
Línia 18: Línia 18:
  
 
== Bucles FOR ==
 
== Bucles FOR ==
És el cas més típic però tots els altres s'utilitzen molt també. Es tracta de repetir una operació molts cops. Una variable (típicament $i) anirà canviant de valor cada cop que iterem (fem una volta).
+
És el cas més típic però tots els altres s'utilitzen molt també. Es tracta de repetir una operació molts cops. '''Tindrem una variable (típicament $i) que anirà canviant de valor cada cop que iterem (fem una volta)'''.
  
 
Ens caldrà:
 
Ens caldrà:
 
*Número d'inici
 
*Número d'inici
*Condició de final (quan parem el bucle).
+
*Condició de final (quan parem el bucle). En realitat el què posem al bucle FOR és la inversa, una <u>condició de permanència</u> que indica fins quan estarem dins el bucle.
*Increment (es pot saltar d'1 en 1 o de 5 en 5 o el què vulguem)
+
*Increment (es pot saltar d'1 en 1, o de 5 en 5, o el què vulguem)
  
 
<syntaxhighlight lang="php">
 
<syntaxhighlight lang="php">
Línia 34: Línia 34:
 
*Comencem per valor 1 ($i=1)
 
*Comencem per valor 1 ($i=1)
 
*Acabem en el valor 4 ($i<5: el 5 no entra!)
 
*Acabem en el valor 4 ($i<5: el 5 no entra!)
*Incrementem de 1 en 1 la $i: $i++ és el mateix que $i = $i + 1;
+
*Incrementem de 1 en 1 la $i: '''$i++ és el mateix que $i = $i + 1;'''
 +
*:Si volguéssim incrementar de 2 en 2 faríem  $i = $i + 2  o l'equivalent  $i+=2.
  
 
El resultat d'aquest bucle és la mateixa frase que es va repetint però cada cop amb un tipus de ''header'' HTML diferent <nowiki>(<H1>,<H2>, etc.).</nowiki>
 
El resultat d'aquest bucle és la mateixa frase que es va repetint però cada cop amb un tipus de ''header'' HTML diferent <nowiki>(<H1>,<H2>, etc.).</nowiki>
 +
  
  
Línia 57: Línia 59:
 
*Utilitzem '''variables ''booleanes''''', és a dir, que valen "veritat" o "fals" (en anglès "true"/"false").
 
*Utilitzem '''variables ''booleanes''''', és a dir, que valen "veritat" o "fals" (en anglès "true"/"false").
 
*:També es poden fer servir variables numèriques normals. Un 0 és "false" i qualsevol altre número seria "true".
 
*:També es poden fer servir variables numèriques normals. Un 0 és "false" i qualsevol altre número seria "true".
 +
*'''MOLT IMPORTANT:''' S'utilitza l''''operador "=="''' (doble) enlloc del simple "=". '''Si no ho feu bé el programa fallarà.'''
 +
**El simple "=" és per assignar valors a variables. Per exemple: $a = $a + 1;
 +
**El doble "==" és per comparar. Per exemple: if( $a == $b ) ...
 
*Seria el mateix posar '''if( $a )''' a seques.
 
*Seria el mateix posar '''if( $a )''' a seques.
 
*S'executa la primera regió si $a val "true". S'executa la 2a regió si val qualsevol altra cosa.
 
*S'executa la primera regió si $a val "true". S'executa la 2a regió si val qualsevol altra cosa.
Línia 71: Línia 76:
  
  
== Exercicis ==
+
=== Comparacions ===
#Munta l'exemple explicat en aquesta pàgina: un bucle que iteri des de 1 fins un número de cops que li indiquis en un formulari.
+
Per comparar (el què fem dintre del IF i també en la condició de permanència del bucle FOR) utilitzem els següents operadors:
#:Prova fins on arriben els encapçalaments HTML. Quin és el H? màxim?
+
* Igual que: "==" (veure exemple anterior)
#:Posa-hi també un CHECKBOX que executi el bucle només si l'has activat.
+
* Diferent que: "!=". P.ex.:<syntaxhighlight lang="php"> if( $a!=3 ) echo "hola";  // Això imprimiria "hola" només si $a és diferent de 3.</syntaxhighlight>
#:Si t'hi fixes, al posar el número 5 no arriba mai a fer el H5. Com ho pots arreglar sense introduir un número més al formulari?
+
* Major que: ">"
#Fes una taula de multiplicar (de l'1 al 10) amb un form que indiqui el número de la taula.
+
* Major o igual que: ">="
#*Amplia-ho ara amb un altra casella per introduir el número de iteracions que tindrà la taula (per defecte és 10).
+
* Menor que: "<". Per exemple:<syntaxhighlight lang="php"> if($a<3) echo "hola";  // Això imprimiria "hola" només i $a és menor que 3.</syntaxhighlight>
#*Posa un checkbox que si l'actives et posa en negreta el resultat de cada multiplicació.
+
* Menor o igual que "<="
 +
 
 +
Hi ha un casos especials:
 +
* === : operador identitat. Comprova que els valors siguin iguals i que el tipus de dades també ho sigui.
 +
* !== : igual però amb negació.
 +
 
 +
<br>
 +
 
 +
== Per saber més ==
 +
*Bucles (loops):
 +
**Llegeix [http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_PHP/Bucles Bucles a Wikibooks].
 +
**Llegeix [http://www.tuxradar.com/practicalphp/2/6/10 bucles a Hudzilla].
 +
*Condicionals (particularment mira't els SWITCH):
 +
**Llegeix [http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_PHP/Condicionales Condicionals a Wikibooks].
 +
 
 +
 
 +
 
 +
== Exercicis ==
 +
 
 +
#Munta l'exemple explicat en aquesta pàgina: un bucle que iteri des de 1 fins un número de cops que li indiquis en un formulari.  
 +
#:Prova fins on arriben els encapçalaments HTML. Quin és el H? màxim?  
 +
#:Posa-hi també un CHECKBOX que executi el bucle només si l'has activat.  
 +
#:Si t'hi fixes, al posar el número 5 no arriba mai a fer el H5. Com ho pots arreglar sense introduir un número més al formulari?  
 +
#Fes una '''taula de multiplicar''' (de l'1 al 10) amb un form que indiqui el número de la taula.  
 +
#*Amplia-ho ara amb un altra casella per introduir el número de iteracions que tindrà la taula (per defecte és 10).  
 +
#*Posa un checkbox que si l'actives et posa en negreta el resultat de cada multiplicació.  
 +
#Realitza els 2 exercicis anteriors canviant el bucle FOR per un WHILE.
 +
#Fes un pàgina que et faci totes les taules de multiplicar de l'1 al 9.
 +
#:NO es val fer 9 bucles. S'ha de fer amb un bucle dins d'un altre bucle. OJU perquè caldrà que tinguis 2 variables per iterar, que poden ser $i i $j.
 +
#Fes una taula HTML com aquesta utilitzant bucles.
 +
#*Comença per la taula sense colors.
 +
#*Afegeix colors diferents a cada columna utilitzant el condicional SWITCH
 +
<center>
 +
{| cellspacing="1" cellpadding="1" border="1" width="0%"
 +
|-
 +
| style="background-color: yellow;" | fila 1, columna 1<br>
 +
| style="background-color: cyan;" | fila 1, columna 2
 +
| style="background-color: green;" | fila 1, columna 3
 +
| style="background-color: olive;" | fila 1, columna 4
 +
|-
 +
| style="background-color: yellow;" | fila 2, columna 1<br>
 +
| style="background-color: cyan;" | fila 2, columna 2
 +
| style="background-color: green;" | fila 2, columna 3
 +
| style="background-color: olive;" | fila 2, columna 4
 +
|-
 +
| style="background-color: yellow;" | fila 3, columna 1
 +
| style="background-color: cyan;" | fila 3, columna 2
 +
| style="background-color: green;" | fila 3, columna 3
 +
| style="background-color: olive;" | fila 3, columna 4
 +
|}
 +
</center>
 +
<ol start="6">
 +
    <li>...more to come...</li>
 +
</ol>
 +
 
 +
 
 +
<br>

Revisió de 15:41, 20 juny 2011

El control de flux és el que identifica un llenguatge de programació. Sense control de flux no hi ha programa (HTML no té control de flux, per això no se'l considera un llenguatge de programació).

Un programa està format per:

  • Estructura de dades (variables, arrays, matrius, arbres, etc.)
  • Control de flux
  • Algorismes (la recepta de cuina).


Amb el control de flux el què podrem fer serà:

  • Realitzar bucles (operacions repetitives)
  • Realitzar operacions condicionals (triar si les volem fer o no depenent d'alguna variable)


Bucles FOR[modifica]

És el cas més típic però tots els altres s'utilitzen molt també. Es tracta de repetir una operació molts cops. Tindrem una variable (típicament $i) que anirà canviant de valor cada cop que iterem (fem una volta).

Ens caldrà:

  • Número d'inici
  • Condició de final (quan parem el bucle). En realitat el què posem al bucle FOR és la inversa, una condició de permanència que indica fins quan estarem dins el bucle.
  • Increment (es pot saltar d'1 en 1, o de 5 en 5, o el què vulguem)
for( $i=1; $i<5; $i++) {
	echo "<H$i>Iteració $i: títol de categoria $i</H$i>\n";
}

Fixa't en què:

  • Comencem per valor 1 ($i=1)
  • Acabem en el valor 4 ($i<5: el 5 no entra!)
  • Incrementem de 1 en 1 la $i: $i++ és el mateix que $i = $i + 1;
    Si volguéssim incrementar de 2 en 2 faríem $i = $i + 2 o l'equivalent $i+=2.

El resultat d'aquest bucle és la mateixa frase que es va repetint però cada cop amb un tipus de header HTML diferent (<H1>,<H2>, etc.).


Condicionals IF...THEN...ELSE[modifica]

Amb el IF podem triar si realitzem o no una acció. Per exemple:

if( $a==true )
{
	// Excutem això si $a és "true"
	echo "La variable booleana 'a' té el valor 'true'<br />\n";
} else
{
	// Executem això altre si $a NO és "true"
	echo "La variable booleana 'a' té el valor 'false'<br />\n";
}

Fixa't en què:

  • Utilitzem variables booleanes, és a dir, que valen "veritat" o "fals" (en anglès "true"/"false").
    També es poden fer servir variables numèriques normals. Un 0 és "false" i qualsevol altre número seria "true".
  • MOLT IMPORTANT: S'utilitza l'operador "==" (doble) enlloc del simple "=". Si no ho feu bé el programa fallarà.
    • El simple "=" és per assignar valors a variables. Per exemple: $a = $a + 1;
    • El doble "==" és per comparar. Per exemple: if( $a == $b ) ...
  • Seria el mateix posar if( $a ) a seques.
  • S'executa la primera regió si $a val "true". S'executa la 2a regió si val qualsevol altra cosa.

La variable $a podria provenir d'un formulari del tipus CHECKBOX:

<FORM>
	<INPUT type="checkbox" name="a" />
	...
</FORM>

I després la podríem capturar com vam fer en el capítol anterior, a través de la variable superglobal $_GET['a'].


Comparacions[modifica]

Per comparar (el què fem dintre del IF i també en la condició de permanència del bucle FOR) utilitzem els següents operadors:

  • Igual que: "==" (veure exemple anterior)
  • Diferent que: "!=". P.ex.:
     if( $a!=3 ) echo "hola";  // Això imprimiria "hola" només si $a és diferent de 3.
    
  • Major que: ">"
  • Major o igual que: ">="
  • Menor que: "<". Per exemple:
     if($a<3) echo "hola";  // Això imprimiria "hola" només i $a és menor que 3.
    
  • Menor o igual que "<="

Hi ha un casos especials:

  • === : operador identitat. Comprova que els valors siguin iguals i que el tipus de dades també ho sigui.
  •  !== : igual però amb negació.


Per saber més[modifica]


Exercicis[modifica]

  1. Munta l'exemple explicat en aquesta pàgina: un bucle que iteri des de 1 fins un número de cops que li indiquis en un formulari.
    Prova fins on arriben els encapçalaments HTML. Quin és el H? màxim?
    Posa-hi també un CHECKBOX que executi el bucle només si l'has activat.
    Si t'hi fixes, al posar el número 5 no arriba mai a fer el H5. Com ho pots arreglar sense introduir un número més al formulari?
  2. Fes una taula de multiplicar (de l'1 al 10) amb un form que indiqui el número de la taula.
    • Amplia-ho ara amb un altra casella per introduir el número de iteracions que tindrà la taula (per defecte és 10).
    • Posa un checkbox que si l'actives et posa en negreta el resultat de cada multiplicació.
  3. Realitza els 2 exercicis anteriors canviant el bucle FOR per un WHILE.
  4. Fes un pàgina que et faci totes les taules de multiplicar de l'1 al 9.
    NO es val fer 9 bucles. S'ha de fer amb un bucle dins d'un altre bucle. OJU perquè caldrà que tinguis 2 variables per iterar, que poden ser $i i $j.
  5. Fes una taula HTML com aquesta utilitzant bucles.
    • Comença per la taula sense colors.
    • Afegeix colors diferents a cada columna utilitzant el condicional SWITCH
fila 1, columna 1
fila 1, columna 2 fila 1, columna 3 fila 1, columna 4
fila 2, columna 1
fila 2, columna 2 fila 2, columna 3 fila 2, columna 4
fila 3, columna 1 fila 3, columna 2 fila 3, columna 3 fila 3, columna 4
  1. ...more to come...