Вы находитесь на странице: 1из 22

Curso de PHP/MySQL/Java Instituto IDAT 2006

Sesin 02: Estructuras de Control y Funciones en PHP

Estructuras de Control y
Funciones en PHP
Profesor: Antonio Ognio
aognio@gmail.com
SIDET - PROGRAMA DE COMPUTACIN E INFORMTICA
Coordinador: Ing. Benigno Garca
Profesor: Antonio Ognio
E-mail: aognio@gmail.com

Fecha:

19/08/2006

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

Pgina

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

Contenidos:

Estructuras de control condicional


Estructuras de control de bucles
break y continue
Referencias
Variables definidas por el usuario
Variables con parmetros opcionales
mbito de variables dentro de las funciones
Variables con parmetros por referencia
Variables con parmetros variables
Variables variables
Funciones variables

Profesor: Antonio Ognio


E-mail: aognio@gmail.com

Fecha:

19/08/2006

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

Pgina

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

Bloque de instrucciones

Se inicia con el carcter { (abrir llaves)


Se termina con el carcter } (cerrar llaves)
Puede contener cualquier nmero de instrucciones
Puede aparecer en cualquier sitio donde aparecera una sola instruccin

<?php
if ($edad>18) {
echo DNI: $dni<br>\n;
echo Estado Civil: $estado_civil<br>\n;
echo Direccin: $direccion<br>\n;
}
?>

Profesor: Antonio Ognio

?>

E-mail: aognio@gmail.com

Fecha:

19/08/2006

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

Pgina

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

if-elseif-else (Control condicional)

Expresin va entre parentesis


Ya no necesita THEN porque se sabe que la instruccin sigue al parntesis
Solo la clusula if es obligatoria y le pueden seguir N elseif con sus propias condiciones
Al final puede no puede ir una clusula else
Siempre se recomienda usar BLOQUES asi solo vaya una sola instruccin

<?php
if ($edad>=18) {
echo Apta para solo para adltos;
} elseif ($edad>=14) {
echo Apta para mayores de 14;
} else {
echo Apta para todos;
}
?>
Profesor: Antonio Ognio
E-mail: aognio@gmail.com

Fecha:

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

?>

19/08/2006

Pgina

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

switch-case

Similar a una serie de if-elseif-else


La ventaja es que la expresin solo se evalua una vez y se puede entrar a bloques en cascada

<?php
if ($i == 0)
print "i
} elseif ($i
print "i
} elseif ($i
print "i
}

{
igual
== 1)
igual
== 2)
igual

a 0";
{
a 1";
{
2";

?>

Profesor: Antonio Ognio


E-mail: aognio@gmail.com

<?php
switch ($i) {
case 0:
print "i equal a 0";
break;
case 1:
print "i equal a 1";
break;
case 2:
print "i equal a 2";
break;
} ?>
Fecha:

19/08/2006

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

Pgina

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

while

Expresin va entre parntesis


Ejecuta una instruccin un bloque
Podra no ejecutarse nunca si la primera vez la condicin se evala a FALSE
La inicializacin de las variables de control debe ocurrir antes generalmente del bucle

Sintaxis estndar:
<?php
$i = 1;
while($i<=100) {
echo $i;
$i=$i+1;
}
?>

Profesor: Antonio Ognio


E-mail: aognio@gmail.com

Sintaxis alternativa:
<?php
$i = 1;
while($i<=100):
echo $i;
$i=$i+1;
endwhile;
?>

Fecha:

19/08/2006

Duracin: 3 horas

?>
?>
Documentacin
de PHP en espaol: http://www.php.net/manual/es/

Pgina

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

do-while

Expresin va entre parntesis pero al final


Ejecuta una instruccin un bloque primero y despes se evala la condicin
Est garantizado que al menos se ejecutar una vez, si contina depende de la condicin
La inicializacin de las variables de control debe ocurrir generalmente antes del bucle

Sintaxis estndar:
<?php
$i = 1;
do {
echo $i;
$i=$i+1;
} while($i<=100);
?>

Profesor: Antonio Ognio


E-mail: aognio@gmail.com

Sintaxis alternativa:
<?php
NO EXISTE
$i = 1;
do :
echo $i;
$i=$i+1;
while($i<=100);
?>

Fecha:

19/08/2006

Duracin: 3 horas

?>
?>
Documentacin
de PHP en espaol: http://www.php.net/manual/es/

Pgina

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

for
Se construye sobre la base del concepto de que todo for se puede implementar con un while

Est separado en cuatro partes: inicializacin, condicin de control, cuerpo e incremento

Es muy flexible y permite hacer incrementos, decrementos y cambios que no son posibles con
otros lenguajes de programacin.

Implementado con while


<?php
$i = 1;
while($i<=100) {
echo $i;
$i=$i+1;
}
?>

Implementado con for


<?php
for($i=1;$i<=100;$i++) {
echo $i;
}
?>

Profesor: Antonio Ognio


E-mail: aognio@gmail.com

Fecha:

?>

19/08/2006

Duracin: 3 horas

?>
Documentacin
de PHP en espaol: http://www.php.net/manual/es/

Pgina

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

Partes de un ciclo for


Inicializacin

Cuerpo
Condicin de control

Implementado con while


<?php
$i = 1;
while($i<=100) {
echo $i;
$i=$i+1;
}
?>

Implementado con for


<?php
for($i=1;$i<=100;$i++) {
echo $i;
}
?>

Profesor: Antonio Ognio


E-mail: aognio@gmail.com

Incremento

Fecha:

?>

19/08/2006

Duracin: 3 horas

?>
Documentacin
de PHP en espaol: http://www.php.net/manual/es/

Pgina

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

for
Se construye sobre la base del concepto de que todo for se puede implementar con un while
Est separado en cuatro partes: inicializacin, condicin de control, cuerpo e incremento

Es muy flexible y permite hacer incrementos, decrementos y cambios que no son posibles con
otros lenguajes de programacin.

Sintaxis estndar

Sintaxis alternativa

<?php

<?php

for($i=1;$i<=100;$i++) {
echo $i;
}
?>

for($i=1;$i<=100;$i++):
echo $i;
endfor;
?>

Profesor: Antonio Ognio

?>

E-mail: aognio@gmail.com

Fecha:

?>

19/08/2006

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

Pgina

10

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

break
Termina la ejecucin de una
estructura de control

Solo funciona dentro de while, for


y switch

continue
Interrumpe la ejecucin del
cuerpo de bucle y salta a la
condicin

Funciona con while, for y switch

Saliendo de un bucle infinito:

Salteando un valor:

<?php
$i = 1;
while(true) {
echo $i;
$i=$i+1;
if ($i==100) {
break;
}
} ?>
Profesor: Antonio Ognio
E-mail: aognio@gmail.com

<?php
$i = 0;
while($i<=100) {
$i=$i+1;
if ($i==50) {
continue;
}
echo $i;
}?>
Fecha:

19/08/2006

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

Pgina

11

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

Saltando varios niveles de bucles

break puede recibir un parametro adicional que indica cuantos niveles de bucle deben saltar
El valor es un valor entero

<?
$i = 0;
while (++$i) {
switch ($i) {
case 5:
echo "Entramos a 5<br>\n";
break 1; /* Salimos solo del switch. */
case 10:
echo "Entramos al 10; saliendo<br>\n";
break 2; /* Salimos del switch y del while */
default:
break;
}
}
?>
Profesor: Antonio Ognio
E-mail: aognio@gmail.com

Fecha:

19/08/2006

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

Pgina

12

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

Saltando varios niveles de bucles


continue tambin puede recibir un parametro adicional que indica cuantos niveles de bucle
deben saltar

El valor es un valor entero

<?php
$i = 0;
while ($i++ < 5) {
echo "While Externo<br>\n";
while (1) {
echo "While del centro<br>\n";
while (1) {
echo "While interno<br>\n";
continue 3;
}
echo "Esto nunca se imprime.<br>\n";
}
echo "Y esto tampoco.<br>\n";
}
?>
Profesor: Antonio Ognio
E-mail: aognio@gmail.com

Fecha:

19/08/2006

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

Pgina

13

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

Referencias
En PHP4 cualquier asignacin es una copia por valor sin importa el tipo de datos
Los objetos en PHP4 tambin se asignan por valor lo que tambin se llama una clonacin

PHP4 permite que cualquier asignacin sea por referencia es decir no duplicar el valor crear
una copia sino apuntar al mismo valor en memoria a travs de otro identificador de variable

La sintaxis para las asignaciones por referencia consiste en anteponer el caracter & (ampersand)
antes del valor de la variable.

<?php

<?php

$a = 10;
$b = $a;
$c = &$a;

$c++;

$a++;

echo $a; // 12
echo $b; // 10
echo $c; // 12

echo $a; // 11
echo $b; // 10
echo $c; // 11

/* $a y $c estan unidas y
$b es independiente*/
?>

?>
Profesor: Antonio Ognio
E-mail: aognio@gmail.com

Fecha:

19/08/2006

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

Pgina

14

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

Funciones en PHP
Su nombre debe ser un identificador vlido y no debe estar siendo usado por una funcin ya
definida (por ejemplo, en los mdulos de PHP)

Puede tomar N parmetros, tener parmetros opciones ningn parmetro

Su cdigo no se ejecuta en forma lineal de arriba a abajo (top-down) sino que es ejecutado
cuando se invoca explicitamente la funcin en otra parte del cdigo

Las funciones devuelven valores mediante el comando return

La manera de implementar un procedimiento es NO utilizar el comando return para devolver un


valor

<?php
function calcular_segundos($horas) {
return $horas*60*60;
}
echo calcular_segundos(3); // 10800 segundos
?>

Profesor: Antonio Ognio


E-mail: aognio@gmail.com

Fecha:

19/08/2006

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

Pgina

15

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

Parmetros opcionales
Es posible definir parmetros opcionales asignado valores por defecto en la propia lista de
parmetros de la funcin

Cuando existen ms de un parmetro opcional y queremos darle un valor explcito a uno que
est ms hacia la derecha que otro es necesario definir tambin valores explcitos para los
parmetros que se encuentran antes de izquierda a derecha

<?php
function html_textbox($nombre, $ancho = 16, $longitud_maxima = 32) {
echo <input type=\text\ name=\$nombre\ width=\$ancho\ ;
echo maxlength=\$longitud_maxima\ />;
}
html_textbox(apellidos); // asume ancho = 16 y longitud_maxima = 32
html_textbox(email, 20, 64); // los valores por defecto son reemplazados
?>

Profesor: Antonio Ognio


E-mail: aognio@gmail.com

Fecha:

19/08/2006

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

Pgina

16

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

Paso de parmetros por referencia


Es posible indicar que los valores de un determinado parmetro pasan a la variable por
referencia colocando un ampersand (&) antes del nombre del parmetro en la declaracin de la
funcin

En ese caso los cambios que se produzcan en la variable dentro de la funcin afectan tambin a
la variable a la que se hace referencia fuera de la funcin

Los parmetros por referencia no pueden llevar valores por defecto

<?php
function incrementar(&$variable) {
$variable++;
}
$a = 10;
incrementar($a);
echo $a; // 11
?>

Profesor: Antonio Ognio


E-mail: aognio@gmail.com

Fecha:

19/08/2006

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

Pgina

17

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

mbito de las variables en PHP


A diferencia de otros lenguajes, las variables dentro de las funciones estan completamente
separadas de las variables globales as coincidan en el nombre

La comando global permite indicar que una variable dentro de una funcin es una variable
global

<?php
$a = 10;
$b = 20;
function prueba_ambito() { // Procedimiento
global $a;
echo \$a: $a\n;
echo \$b: $b\n;
}
prueba_ambito() // Imprime $a: 10 y $b: (en blanco)
?>
Profesor: Antonio Ognio
E-mail: aognio@gmail.com

Fecha:

19/08/2006

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

Pgina

18

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

Funciones con argumentos variables


En PHP tambin es posible implementar con facilidad variables que reciben un nmero variable
de parmetros no conocido previamente

Hay tres funciones que permiten realizar este tipo de implementaciones: func_nun_args(),
func_get_arg($arg_num) y func_get_args(). Solo tienen sentido llamndolas dentro de una
funcin.

<?php
function calcular_promedio() {
$num_args = func_num_args();
if ($num_args==0) return 0;
$acum = 0;
for($i = 0; $i < $num_args; $i++) {
$acum += func_get_arg($i);
}
return $acum / $num_args;
}
echo calcular_promedio(12, 20, 18, 17, 14, 15); // Imprime 16

Profesor: Antonio Ognio


E-mail: aognio@gmail.com

Fecha:

19/08/2006

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

Pgina

19

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

Variables variables
PHP permite hacer un tipo de operacin muy particular para implementar las llamadas variables
variables

Es posible referirse a una variable obteniendo su nombre del valor de otra variable

<?php
$a = 10;
$b = a;
echo $$b; // Imprime 10
for($i=1; $i<=10; $i++) {
$nombre_variable = variable_$i;
$$nombre_variable = 0;
}
// Se inicializaron con cero las variables $variable_1 a $variable_10
?>
Profesor: Antonio Ognio
E-mail: aognio@gmail.com

Fecha:

19/08/2006

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

Pgina

20

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

Funciones variables
PHP no tiene apuntadores a funciones como C ni tampoco delegados como C#
Lo que tiene PHP es un mecanismo bastante simple pero eficiente llamado funciones variables
mediante el cul es posible hacer una llamada a una funcin usando el valor de una variable
como el identificador de la funcin

<?php
$procedencia = USA;
if ($procedencia == Peru) {
$funcion = calcular_impuesto_peru;
} else {
$funcion = calcular_impuesto_importacion;
}
$impuesto = $funcion($precio);
/* Se habr llamado a la funcin calcular_impuesto_importacion() */

Profesor: Antonio Ognio


E-mail: aognio@gmail.com

Fecha:

19/08/2006

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

Pgina

21

Curso de PHP/MySQL/Java Instituto IDAT 2006


Sesin 02: Estructuras de Control y Funciones en PHP

Ejercicio 01:
Cree un script PHP que imprima los valores de varias tablas de
multiplicar teniendo en cuenta las siguientes consideraciones:
El valor inicial y final de las tablas que se sean imprimir estar
indicado en las variables globales $tabla_inicio y $tabla_fin

El valor inicial y final de los valores de cada tabla estar indicado


en las variabels globales $valor_inicial y $valor_final

Cada tabla deber tener un listado aparte separado de las otras,


idealmente como una tabla HTML y a colores.

Asi por ejemplo si se quiere imprimir las tables del 13 al 20 desde


uno al 25 en cada una los valores de las variables seria:
$tabla_inicio = 13; $tabla_fin = 20;
$valor_inicial = 1; $valor_final = 25;
Profesor: Antonio Ognio
E-mail: aognio@gmail.com

Fecha:

19/08/2006

Duracin: 3 horas

Documentacin de PHP en espaol: http://www.php.net/manual/es/

Pgina

22

Вам также может понравиться