Desenvolupament web dinàmic backend amb PHP
Conceptes¶
Sessió 2: Estructures de control¶
Objectiu Sessió 2
En aquesta sessió l'objectiu és introduir les estructures de control del llenguatge per a controlar la lògica del backend. Tant blocs alternatius de lògica, com repetitius.
Alternatives¶
Formen part de la lògica d'execució d'un codi desenvolupat i anirà associat a una expressió que farà que s'executi un codi o no.
Normalment caldrà definir la condició, que serà una expressió lògica i les accions que executarà en cas d'avaluar-se a cert i les altres en cas de fals.
Seria un psedocodi similar a:
Obtenir Temperatura
SI (Temperatura < 0) LLAVORS
escriure "Està glaçant!"
SINO
escriure "S'hi està bé."
FSI
Tenim:
- if
- if else
- elseif / else if
- switch
Exemple alternativa
Podem observar com diguem una frase o una altra depenent de l'hora del dia que s'executi el codi.
Això ho aconseguim obtenint la hora del servidor amb
llavors comparem el valor guardat a la variable $hora amb 8h i retornem el text "Bona matinada"
En cas contrari, mirem si és abans de les 20h i retornem el text: "Bon dia"
altrament, retornem "Bona nit"
La sintaxi bàsica és:
<?php
if (condició)
{
// accions de condició certa
}
else
{
// accions de condició falsa
}
?>
<?php
if (condició1)
{
// accions de condició 1 certa
}
elseif (condició2)
{
// accions de condició 2 certa
}
else
{
// accions de condició falsa
}
?>
<?php
switch (expressió)
case label1:
//code block
break;
case label2:
//code block;
break;
case label3:
//code block
break;
default:
//code block
?>
Bucles¶
Formen part de la lògica d'execució d'un codi desenvolupat i ens ajuda a repetir unes instruccions un número definit o indefinit (condició) de vegades.
Normalment seguiran la lògica de:
- Esquema de recorregut: Executar unes instruccions per tots els elements a tractar. Exemple: Comptar persones.
- Esquema de recerca: Executar unes instruccions cercant algun element a dins dels candicats. Caldrà definir una condició de trobat i de final. Per exemple: cercar a una persona.
Obtenir 1r element
Mentre (No final)
Processar
Obtenir següent element
FMentre
Obtenir 1r element
Mentre (No trobat) I (No final)
Processar
Obtenir següent element
FMentre
Si Trobat Llavors
accions trobat
Sino
accions No trobat
FSi
NOTA
Cal definir bé les condicions de final per no generar un bucle infinit. Cal definir com obtenir següent element.
De la nostra manera de pensar, podriem tenir un destí a arribar
Posició actual
Mentre (No hem arribat al destí)
Fem una passa
FMentre
//Quan sortim del bucle, significa que hem arribat al final.
Podem tenir condicions més complexes a avaluar. O fins i tot més d'una acció a realitzar.
Posició actual
Mentre (No hem arribat al destí O estem cansats)
Fem una passa
SI (el destí és cap a la dreta)
Girem a la dreta
SINO SI(el destí és cap a l'esquerra)
Girem a l'esquerra
FSI
FMentre
//Quan sortim del bucle, significa que hem arribat al final o bé estem cansats.
Tenim 4 tipus de bucles:
while
: Repeteix instruccions mentre la condició sigui certa.
Exemple while
Usarem el bucle while per a generar una seqüència de números del 0 fins a arribar a un menor de 10.
Element inicial: 0
condició de final: quan ($i < 10) s'avalui a fals, mentre sigui cert, anirà fent bucles.
do while
: Repeteix instruccions fins que una condició deixa de ser certa
Exemple do while
Usarem el bucle do while per a generar una seqüència de números del 0 fins a arribar a un menor de 10.
Element inicial: 0
condició de final: quan ($i < 10) s'avalui a fals, mentre sigui cert, anirà fent bucles.
Ull, ara si que farà la última volta amb el valor de 10. Però tot dependrà de quan processem o incrementem el valor.
Sempre s'executarà el bucle una vegada com a mínim.
for
: Repeteix instruccions un número específic de vegades
Exemple for
Usarem el bucle for per a generar una seqüència de números del 0 al 9
Element inicial: 1
Condició de final: quan ($i < 10) s'avalui a fals, mentre sigui cert, anirà fent bucles.
Increment: d'un a un amb $i++
foreach
: repeteix instruccions per cada un dels elements d'un array.
Exemple foreach
Usarem el bucle for each per a generar una llista de fruites
La gràcia del bucle foreach, és que és dinàmic segons els elements que conté l'array