Sei sulla pagina 1di 10

2.

- Estructuras de control: IF, FOR, FOR


EACH, WHILE
Las estructuras de control nos permiten controlar el flujo del programa: tomar decisiones,
realizar acciones repetitivas etc., dependiendo de unas condiciones que nosotros mismos
establezcamos. As podemos hacer un script que nos salude cada da de la semana de una
manera diferente. O por ejemplo hacer un script que nos pida la contrasea una otra vez
hasta que suministremos la opci!n correcta.
1.- La toma de decisiones if-else:
"uiz# la estructura de control m#s b#sica la m#s utilizada sea if$else:
if (condicion) {
// instrucciones que hay que ejecutar si la condicin es verdadera
} else {
// Instrucciones que hay que ejecutar si la condicin es falsa
}
%n castellano sera algo as:
Si (Tal cosa es cierta) {
// Haz esto
} En caso contrario {
// Haz esto otro
}
&eamos un ejemplo real: %n un formulario preguntaremos al usuario como se llama,
pasaremos las variables a la p#gina 'saludos.php( . %n saludos.php mostraremos un saludo
diferente en funci!n de si el usuario so o o es cualquier otro
)ormulario
ht!l"
head"
title" Eje!#lo $%sico de If /title"
/head"
$ody"
for! action&'saludos(#h#' !ethod&')et'"
Quin eres?$r /"
in#ut ty#e&'te*t' na!e&'no!$re' /"
in#ut ty#e&'su$!it' na!e&'reset' value&' Enviar ' /"
/for!"
/$ody"
/ht!l"
saludos.!
ht!l"
head"
title" Eje!#lo $%sico de If /title"
/head"
$ody"
h+" ,%)ina de $ienvenida/h+"
-#h# // E!#ieza el cdi)o #h#
if (.no!$re&&'/oder') { // Si el no!$re es /oder
echo(' Ho!$re .no!$re0 1a est%s cotilleando #or aqu2 otra vez0')3 //
saludo es#ecial
}else {
echo('Hola4 .no!$re4 )racias #or visitarnos')3 // saludo #ara los de!%s
}
-"
/$ody"
/ht!l"
La cl#usula else *la parte del if$else que indica lo que ha que hacer si la condici!n es falsa+
es opcional. ,o es necesario ponerla. -or ejemplo puedo querer un script que s!lo me
salude a mi. %n este caso, cambiara saludos.php de la siguiente manera:
ht!l"
head"
title" Eje!#lo $%sico de If /title"
/head"
$ody"
h+" ,%)ina de $ienvenida/h+"
-#h# // e!#ieza el cdi)o #h#
if (.no!$re&&'/oder') { // Si el no!$re es /oder
echo(' Ho!$re .no!$re0 1a est%s cotilleando #or aqu2 otra vez0')3 //
Saludo #ara /oder
}
-"
/$ody"
/ht!l"
"O#A: .uidado con el operador //, es importante recordar que ha que utilizar un doble
signo igual. 0i utilizas s!lo '/(, estar#s utilizando el operador de asignaci!n, es decir
estableciendo que 1nombre es igual a .oder con lo que la condici!n siempre sera cierta
Las condiciones pueden complicarse mucho m#s, supongamos que queremos dejarte pasar
s!lo s adem#s de llamarte .oder, te sabes la contrasea, que en nuestro caso es 'foros(:
Formulario:
ht!l"
head"
title" Eje!#lo $%sico de If /title"
/head"
$ody"
for! action&'saludos(#h#' !ethod&')et'"
Quin eres?$r /"
in#ut ty#e&'te*t' na!e&'no!$re' /"$r /"
Y tu Contrasea?$r /"
in#ut ty#e&'te*t' na!e&'#ass' /"
in#ut ty#e&'su$!it' na!e&'reset' value&' Enviar ' /"
/for!"
/$ody"
/ht!l"
saludos.!
ht!l"
head"
title" Eje!#lo $%sico de If /title"
/head"
$ody"
h+" ,%)ina de $ienvenida/h+"
-#h# // E!#ieza el cdi)o #h#
if (.no!$re&&'/oder' and .#ass &&'foros') {
// Si el no!$re es /oder y la contrase5a foros
echo(' Ho!$re .no!$re0 1a est%s cotilleando #or aqu2 otra vez0')3 //
saludo es#ecial
}else {
echo('ahhhhhhhhhhh co!o no te sa$es el no!$re y la contrase5a4 no #uedes
#asar')3 // saludo #ara los de!%s
}
-"
/$ody"
/ht!l"
Adem#s tenemos la instrucci!n elseif, que como su nombre indica, es una combinaci!n de
if else. Aade una nueva condici!n en el caso de que la primera fuera falsa s!lo ejecuta
las instrucciones si esta nueva condici!n es verdadera. %s decir,
&eamos un ejemplo:
if (.a " .$) {
// Ejecuta esto si a es 6ayor que $
echo('a es !ayor que $')3
} elseif (.a && .$) {
// si a no es !ayor que $e4 co!#rue$a si a es i)ual a $
echo('a es i)ual que $')3
} else {
// si no se cu!#len las anteriores condiciones ejecuta 7sta
echo ('a es !enor que $')3
}
2- $ucles: W!ile
2f else nos permita decidir si queramos ejecutar o no una instrucci!n en funci!n de una
condici!n, los bucles nos permiten utilizar una condici!n para determinar cuantas veces
queremos ejecutar una instrucci!n.:
8hile (condicion) {
// Instrucciones a ejecutar una y otra
//vez !ientras la condicin sea cierta
}
%l funcionamiento es mu parecido al del if$else, la diferencia estriba en que si la condici!n
es cierta se ejecuta la orden, la condici!n vuelve a comprobarse una otra vez mientras
siga siendo cierta. %n cambio en el cambio del if$else s!lo se comprueba la condici!n una
vez, si es cierta se ejecuta la instrucci!n se sigue con el programa.
%eamos un e&emlo:
.cantidad & +3
9hile (.cantidad +:) {
echo ('.cantidad ')3
.cantidad;;3
}
%sto traducido a castellano sera:
1cantidad / 34 1cantidad es igual a uno
5hile *1cantidad 6 37+ 8ientras el valor de la variable 1cantidad sea menor que 37
echo *'1cantidad '+4 %scribe el valor de cantidad
1cantidad99 *suma 3 al valor que tenga 1cantidad, tambi:n podramos haber escrito
1cantidad / 1cantidad 93+
&eamos como funciona el script paso a paso,
1.antidad es igual a 3
3 es menor que 37
%scribo 3 en pantalla
1cantidad / ; *393+
; es menor que 37
%scribo ; en pantalla
1cantidad / < *;93+=
0i ejecutamos este script, en pantalla veramos 3 ; < > ? @ A B C
'- $ucles: do W!ile
Los bucles do 5hile, son mu parecidos a los bucles 5hile, s!lo que comprobamos si la
condici!n es cierta al final del bucle en lugar de al principio. As nuestras instrucciones se
ejecutan siempre al menos una vez, lo que no ocurre en las condiciones 5hile si la
condici!n es falsa.
.cantidad & +3
do {
echo (.cantidad)3
} 9hile (.cantidad+)3
Draducido sera
1cantidad / 3
do * EE ejecuta
echo *1cantidad+4 escribe el valor de cantidad
5hile *1cantidad63+4 mientras cantidad sea maor que 3 $F la condici!n es falsa luego el
programa sale del bucle, pero ha escrito una vez el valor de 1cantidad. %l resultado en
pantalla sera 3
(- $ucles: for
Los bucles for funcionan eGactamente igual que en . . .on una sola instrucci!n
controlamos todo el bucle, as que para los vaguetes est# mu bien.
for (valor inicial3 condicion3 ejecutar en cada $lucle) {
// Instrucciones a ejecutar !ientras la condicin sea cierta
}
E&emlo
for (.cantidad & +3 .cantidad +:3 .i;;) {
echo('.cantidad')3
}
Draducido es igual a:
.antidad es igual a 3, mientras cantidad sea menor que 37 escribe cantidad en pantalla
despu:s sHmale 3 al valor de cantidad. %s decir, es eGactamente el mismo ejemplo que
vimos en el bucle 5hile pero de otra manera.
(- )*ic!+case
,os permite ejecutar un bloque de c!digo u otro dependiendo del valor de una variable.
&eamos un ejemplo.
-rimero para asignar un valor a la variable, vamos a hacernos un formulario:
ht!l"
head"
title" Eje!#lo de s9itch /title"
/head"
$ody"
for! action&'s9itch(#h#' !ethod&')et'"
Quin eres?$r /"
in#ut ty#e&'radio' na!e&'quien' value&'c)us' /" c)us$r /"
in#ut ty#e&'radio' na!e&'quien' value&'*ela' /" *ela$r /"
in#ut ty#e&'radio' na!e&'quien' value&'adanedhel' /" adanedhel$r /"
in#ut ty#e&'radio' na!e&'quien' value&'jor)ito' /" jor)ito$r /"
in#ut ty#e&'su$!it' na!e&'reset' value&' Enviar ' /"
/for!"
/$ody"
/ht!l"
)*itc!.!
ht!l"
head"
title"Eje!#lo de S9ich/title"
/head"
-#h#
s9itch(.quien) {
case 'c)us'< // ,ri!era #osi$ilidad
echo (' .quien es todo un leader ')3
$rea=3
case 'adanedhel'< // se)unda #osi$ilidad
echo ('.quien es un elfo')3
$rea=3
case '*ela'< // tercera #osi$ilidad
echo ('.quien es nor!al')3
$rea=3
default< // ,osi$lidad si no es nin)una de las anteriores
echo ('.quien es un desconocido')3
}
-"
/$ody"
/ht!l"
Den:is m#s informaci!n sobre las estructuras de control en el manual de php
http:EE555.php.netEmanualEesEcontrol$structures.php
)inta,is alternati-a
-I- ofrece una sintaGis alternativa para alguna de sus estructuras de control4 a saber, if,
5hile, for, s5itch. -uede hace el c!digo m#s legible en algunos casos, especialmente en
las p#ginas multiuso que vamos a ver a continuaci!n:
2f con construcci!n alternativa
-#h# if (.a&&>)< -"
? es i)ual a >
-#h# endif3 -"
if con elseif else en el formato alternativo:
if (.a && >)<
#rint 'a es i)ual a >'3
#rint '((('3
elseif (.a && @)<
#rint 'a es i)ual a @'3
#rint '000'3
else<
#rint 'a no es ni ? ni @J4
endif4
Khile utilizando la construcci!n alternativa
.i & +3
9hile (.i & +:)<
#rint .i3
.i;;3
end9hile3
)or con la construcci!n alternativa
for (e*#r+3 e*#rA3 e*#rB)< sentencia3 (((3 endfor3
./0inas 1ultiuso
-#ginas multiuso son aquellas que pueden mostrar un contenido completamente diferente
dependiendo de alguna condici!n. Le esta forma, podemos hacer varias cosas en un solo
documento.
La estructura habitual de una p#gina multiuso es:
ht!l"
head"
title" ,%)ina 6ultiusos /title"
/head"
$ody"
#h#-
If (condicin) { -"
0CC HT6D que se !ostar% si la condicin es cierta CC"
-#h# }else{ -"
0CC ht!l que se !ostratar% si la condicin es falsa CC"
-#h# } -"
/$ody"
/ht!l"
E utilizando la sinta*is alternativa que aca$a!os de ver<
ht!l"
head"
title" ,%)ina 6ultiusos /title"
/head"
$ody"
#h#-
if (condicin)< -"
0CC HT6D que se !ostar% si la condicin es cierta CC"
-#h# else< -"
0CC ht!l que se !ostratar% si la condicin es falsa CC"
-#h# endif3 -"
/$ody"
/ht!l"
%sto puede parecer un poco confuso. -ero es precisamente una de las caractersticas que
est#n haciendo mu popular al -I-: su capacidad de pasar de php a html en cualquier
momento todas las veces que sea necesario.
E&emlo
-ara nuestro ejemplo vamos a utilizar el ejemplo que vimos para s5itch utilizar una sola
p#gina *multiuso.php+ para el formulario las respuestas en lugar de las dos que tenamos
antes
ht!l"
head"
title" ,%)ina 6ultiusos /title"
/head"
$ody"
-#h#
if (0isset(.quien))< -"
ht!l"
head"
title" Eje!#lo de s9itch /title"
/head"
$ody"
for! action&'!ultiuso+(#h#' !ethod&')et'"
Quin eres?$r /"
in#ut ty#e&'radio' na!e&'quien' value&'c)us' /" c)us$r /"
in#ut ty#e&'radio' na!e&'quien' value&'*ela' /" *ela$r /"
in#ut ty#e&'radio' na!e&'quien' value&'adanedhel' /" adanedhel$r /"
in#ut ty#e&'radio' na!e&'quien' value&'jor)ito' /" jor)ito$r /"
in#ut ty#e&'su$!it' na!e&'reset' value&' Enviar ' /"
/for!"
/$ody"
/ht!l"
-#h# else<
s9itch(.quien) {
case 'c)us'< // ,ri!era #osi$ilidad
echo (' .quien es todo un leader ')3
$rea=3
case 'adanedhel'< // se)unda #osi$ilidad
echo ('.quien es un elfo')3
$rea=3
case '*ela'< // tercera #osi$ilidad
echo ('.quien es un nor!al')3
$rea=3
default< // ,osi$lidad si no es nin)una de las anteriores
echo ('.quien es un desconocido')3
}
endif3
-"
/$ody"
/ht!l"
for eac!
%s un tipo de bucle especial para matrices. .!mo no hemos visto el tema de las matrices
todava, de momento no lo vamos a eGplicar. Docaremos este tema al hablar de las matrices.
E2ERCICIO .R3C#ICO
3.$ Iaz un script que escriba todos los nHmeros pares del 3 al 377
utilizando el bucle 5hile
;.$ %scribe un script utilizando un bucle que se ejecute una vez en el cual la condici!n sea
imposible.
<.$ Iaz un script que escriba todos los nHmeros impares del 3 al 377
utilizando el bucle for
>.$ Meescribe el ejercicio del tema ;, de forma que utilicemos ; documentos en lugar de <.
$ %n el primer documento utilizar#s una p#gina multiuso. 0i el usuario no ha enviado datos,
le presentas el formulario. 0i el usuario a ha rellenado los datos ver# la p#gina con los
enlaces.
$ %n el segundo documento, utilizaremos las estructuras de control que hemos visto para
que el usuario vea unos datos u otros en funci!n del enlace que utilice.
$ Latos de contacto: &er# una tabla con s!lo los datos de contacto.
$ Latos de empresa: &er# una tabla con s!lo los datos de la empresa.
$ Latos de viaje: &er# una tabla con s!lo los datos del viaje.
$ Dodo: ver# las tres tablas.

Potrebbero piacerti anche