UNIDAD 7 Funciones

29
Programación II Unidad 7 Funciones - Página Nº: 165 Escuela Superior de Comercio Nº 49 – “Cap. Gral. Justo José de Urquiza” Carrera Analista de Sistemas de Computación – Nivel Superior Funciones. Una función es un bloque de código autónomo e independiente que realiza una tarea determinada. Generalmente, esta tarea puede que se repita en varias ocasiones. Las principales ventajas de usar funciones en los programas PHP son: La simplificación del código. La reusabilidad del código. Modularidad del código. Las características principales de las funciones en PHP son: No necesitamos definir una función antes de referenciarla. Si hemos declarado una función, no podemos redefinirla o eliminar su definición. No permite funciones con un número variable de parámetros. Sí soporta parámetros por defecto. Declaración de una función. El formato es el siguiente: function nombre_funcion ($parametro1, $parametro2, [...], $parametron) { //codigo } Funciones sin parámetros. El siguiente es un ejemplo de función que no tiene parámetros definidos: Ej. 7.1 <?php function no_arg() //Declarando una función llamada no_arg { echo "¡Hola Mundo! Esta es la salida de la función.","\n"; //Código de la función } echo "No se ha llamado a la función todavía.","\n"; no_arg(); //Llamando a la función desde el script principal echo "¡La función ha sido llamada!","\n"; ?>

description

funciones

Transcript of UNIDAD 7 Funciones

  • Programacin II Unidad 7 Funciones - Pgina N: 165

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Funciones.

    Una funcin es un bloque de cdigo autnomo e independiente que realiza una tarea determinada. Generalmente, esta tarea puede que se repita en varias ocasiones. Las principales ventajas de usar funciones en los programas PHP son: La simplificacin del cdigo. La reusabilidad del cdigo. Modularidad del cdigo.

    Las caractersticas principales de las funciones en PHP son: No necesitamos definir una funcin antes de referenciarla. Si hemos declarado una funcin, no podemos redefinirla o eliminar su definicin. No permite funciones con un nmero variable de parmetros. S soporta parmetros por defecto.

    Declaracin de una funcin.

    El formato es el siguiente:

    function nombre_funcion ($parametro1, $parametro2, [...], $parametron) { //codigo }

    Funciones sin parmetros.

    El siguiente es un ejemplo de funcin que no tiene parmetros definidos:

    Ej. 7.1

  • Programacin II Unidad 7 Funciones - Pgina N: 166

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Paso de parmetros a funciones.

    Se pueden enviar parmetros a una funcin de estas tres maneras: Pasando parmetros con valores por defecto. Pasando parmetros por valor. Pasando parmetros por referencia.

    Pasando parmetros por defecto.

    Con esta tcnica la funcin puede recibir argumentos cuando sea llamada. Sin embargo, si al llamarla no le pasamos ningn valor se le asigna al parmetro un valor por defecto.

    Ej. 7.2

    Pasando parmetros por valor.

    Es la manera por defecto para pasar valores a funciones PHP, en la cual un valor (o parmetro) debe enviarse a la funcin cuando sea llamada desde el programa principal.

    Ej. 7.3

  • Programacin II Unidad 7 Funciones - Pgina N: 167

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    echo $number,"\n"; } } echo "No se ha llamado a la funcin todava.","\n"; counter(3); //Se llama a la funcin y se le pasa a su parmetro el valor "3" echo "La funcin ha sido llamada!","\n"; ?>

    Pasando valores por referencia.

    Al pasar parmetros por valor a una funcin slo se reciben las copias de estos. Como consecuencia, todas las modificaciones realizadas a estos valores dentro de la funcin no afectarn al valor original antes de la llamada.

    Ej. 7.4

    El valor de la variable $num se manda a la funcin called_function() y se almacena en la variable local $number. El valor original pasado a la funcin se incrementa en 1 y se imprime. Cuando el control retorna a quien la llam, se muestra el valor original de $num. Esto demuestra que aunque $num se envi a otra funcin, su valor se conservaba en el programa principal. La salida de este ejemplo es:

    11 10

    Ej. 7.5

  • Programacin II Unidad 7 Funciones - Pgina N: 168

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    function called_function($number) //Se declara una funcin que requiere un valor en su parmetro "number"

    { $number = $number + 1; echo $number,"\n"; } called_function(&$num); //Se llama a la funcin y se le pasa "$num" echo $num,"\n"; ?>

    Ahora el parmetro $num se pasa por referencia, luego no se enva una copia de s mismo, sino una referencia de la localizacin de memoria donde se encuentra. Para ello utilizaremos el carcter & antes del argumento de llamada. La salida del cdigo es:

    11 11

    Retorno de valores desde las funciones.

    Las funciones son tambin capaces de retornar un valor a la misma que la llam o al script principal. En PHP la sentencia return se utiliza para este retorno de valores.

    Ej. 7.6

    La salida del cdigo ser la siguiente:

    252

    Comprensin del alcance de una variable dentro de una funcin.

    El trmino alcance tiene que ver con la accesibilidad de una variable dentro de una funcin. En otras palabras, las partes de cdigo del script PHP que estn fuera de una funcin no pueden utilizar una variable declarada dentro de sta.

  • Programacin II Unidad 7 Funciones - Pgina N: 169

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Ej. 7.7

    En este ejemplo, la salida est en blanco. Es decir que slo se puede usar la variable $result dentro de la funcin y para el resto del script ser inaccesible. Cuando la variable $result se utiliza fuera de la funcin, se considera como una nueva variable cuyo valor no se ha especificado todava.

    La sentencia global.

    Esta palabra nos permite acceder a una variable definida dentro de una funcin en cualquier parte del script.

    Ej. 7.8

    En este ejemplo no aparecer en blanco la salida; los resultados de las instrucciones echo muestran 0 y 0 porque ahora la variable $result es una variable global y es accesible desde cualquier parte an si se ha inicializado fuera de la funcin.

    La sentencia static.

    El alcance de una variable declarada dentro de una funcin tiene una vida muy breve. Esto significa que dentro de una funcin de PHP, se inicializa una variable cuando aquella es llamada y se

  • Programacin II Unidad 7 Funciones - Pgina N: 170

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    destruye cuando retorna al script principal o al programa que la utiliz. Por este motivo el uso de la palabra static aumentar la duracin de vida de una variable dentro de una funcin.

    Ej. 7.9

    El script principal llama dos veces a la funcin suma. El resultado ser el siguiente:

    1 1

    Ya que cada vez que llamamos a la funcin la variable $result se inicializa de nuevo y se pierde el resultado del incremento. En cambio veamos lo que sucede en el siguiente ejemplo:

    Ej. 7.10

    Cuando ejecutemos este cdigo se imprimir 1 seguido de 2 en la lnea siguiente. Todo es debido a que hicimos a $result una variable esttica y le obligamos a recordar su valor incrementado an despus del fin de la ejecucin de la funcin.

    Ej. 7.11

  • Programacin II Unidad 7 Funciones - Pgina N: 171

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Una Funcion Simple

    Verde

    Fig. 7.1

  • Programacin II Unidad 7 Funciones - Pgina N: 172

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Ej. 7.12 HTML

    Pasando Argumentos

    Violeta claro

    Realiza el volumen de una sala rectangular con los lados por por

  • Programacin II Unidad 7 Funciones - Pgina N: 173

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Ej. 7.13 PHP

    Pasando Argumentos

    Amarillo claro

    Fig. 7.2

  • Programacin II Unidad 7 Funciones - Pgina N: 174

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Fig. 7.3

  • Programacin II Unidad 7 Funciones - Pgina N: 175

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Ej. 7.14

    Pasando Argumentos

  • Programacin II Unidad 7 Funciones - Pgina N: 176

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    ?>

    Fig. 7.4

    Fig. 7.5

  • Programacin II Unidad 7 Funciones - Pgina N: 177

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Ej. 7.15

    Argumentos por Defecto

  • Programacin II Unidad 7 Funciones - Pgina N: 178

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Date Event Time Location June 8 Graduation 8:00 PM Gymnasium June 21 Piano Recital 8:00 PM Theatre July 4 Fireworks 9:00 PM Football Field TABLE_BLOCK; } print_table("1"); // 1 argumento pasado; por default: color usado

    La funcin print_table() se llama con un solo argumento: la anchura del borde de la tabla. Como falta el argumento que especifica el color, la funcin utiliza el parmetro predeterminado. El valor del parmetro por defecto tiene que ser una constante.

    print_table("10", "gray"); /* 2 arguments pasados; el segundo argumento se sobreescribe al default */

    Esta vez se llama a la funcin print_table() con dos argumentos: la anchura del borde (10) y el color (gray). Estos dos valores se asignan a las variables $border y $color, y el valor por defecto se ignora.

    ?>

    Fig. 7.6

  • Programacin II Unidad 7 Funciones - Pgina N: 179

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Ej. 7.16

    Pasando por Referencia

  • Programacin II Unidad 7 Funciones - Pgina N: 180

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Como el argumento $list se pasa por referencia, ste se modifica dentro de la funcin. En este ejemplo, se aaden las etiquetas HTML para que la salida aparezca en lneas separadas.

    $string = "Hola, Mundo!"; html_tags($string, "p");

    Se asigna una cadena a la variable $string, que se pasa como argumento a la funcin html_tags(). Tambin se pasa a la funcin el argumento p, que hace que la cadena se imprime dos veces para mostrar que se ha aadido la etiqueta del prrafo.

    echo "$string"; echo "$string"; function html_tags(&$text, $tags="pre") {

    Se define la funcin html_tags(), que tiene dos parmetros: una referencia al texto que se pasa, y un parmetro que hace que la etiqueta por defecto sea la etiqueta , siempre que el usuario no proporcione un segundo argumento en el momento de llamar a la funcin. Como el primer parmetro es una referencia, PHP no hace una copia del valor, sino que crea una referencia para que el valor original se pueda modificar dentro de la funcin. Ahora no se necesita una sentencia return, ya que la funcin tiene acceso a la variable original.

    switch($tags) {

    La sentencia switch evala la variable $tags y hace las comprobaciones que aparecen a continuacin. Las etiquetas que se especifican en el segundo parmetro se ponen alrededor del texto original del primer parmetro.

    case 'br': $text = "$text"; break; case 'p': $text = "$text"; break; default: $text = "$text"; break;

    El objetivo es proporcionar al texto que se pasa a la funcin una etiqueta de apertura y otra de cierre. Cuando la funcin termina, el texto original cambia, ya que incluye las etiquetas seleccionadas.

    } }

    ?>

    Fig. 7.7

  • Programacin II Unidad 7 Funciones - Pgina N: 181

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Ej. 7.17

  • Programacin II Unidad 7 Funciones - Pgina N: 182

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    La funcin average() se define con un parmetro, que es una copia de la matriz que se pasa cuando se llama.

    $sum = 0; $size = count($scores); // Busca el tamao del array

    La funcin predefinida count() determina el nmero de elementos de la matriz que se pasa a la funcin.

    if ( $size == 0 ){ echo "Parmetro vaco"; exit(); } // Sale del script

    La funcin para aqu si no recibe ningn parmetro, y el script termina. Esta sentencia previene la ejecucin de otras sentencias de la funcin. PHP lanzara un error, causado por una divisin por cero, si el programa continuara en este punto.

    for($i = 0; $i < $size; $i++) {

    El bucle for se utiliza para iterar sobre la matriz de resultados, y acumular la suma. El tamao de la matriz determina cundo termina el bucle.

    $sum += $scores[$i]; } return $sum/$size; // Devuelve el promedio

    Se evala la expresin $sum/$size y el resultado se devuelve en el lugar donde se llama a la funcin, y ese valor se asigna a $result.

    } ?>

    Fig. 7.8

  • Programacin II Unidad 7 Funciones - Pgina N: 183

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Ej. 7.18 HTML

    Qu hora es? Ingrese el nmero de horas pasada la medianoche

    Ej. 7.19 PHP

    Devolucin Condicional

  • Programacin II Unidad 7 Funciones - Pgina N: 184

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

  • Programacin II Unidad 7 Funciones - Pgina N: 185

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Fig. 7.9

    Fig. 7.10

  • Programacin II Unidad 7 Funciones - Pgina N: 186

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Ej. 7.20

  • Programacin II Unidad 7 Funciones - Pgina N: 187

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    for($i=0; $i

    Fig. 7.11

    Ej. 7.21

  • Programacin II Unidad 7 Funciones - Pgina N: 188

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Fig. 7.12

  • Programacin II Unidad 7 Funciones - Pgina N: 189

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Ej. 7.22

    Global en la Funcion

  • Programacin II Unidad 7 Funciones - Pgina N: 190

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    La variable $salary se define fuera de la funcin y no est disponible para ella, a no ser que pase por referencia, o se haga global dentro de la funcin.

    raise_sal();

    Se llama a la funcin raise_sal().

    ?> Felicitaciones! Su nuevo salario es $

    La salida HTML muestra que el sueldo se ha cambiado en la funcin.

    Fig. 7.13

    Ej. 7.23

  • Programacin II Unidad 7 Funciones - Pgina N: 191

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Funciones Felicitaciones! Su nuevo salario es $

    La salida HTML muestra que el sueldo se ha cambiado en la funcin.

    Fig. 7.14

  • Programacin II Unidad 7 Funciones - Pgina N: 192

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    Ej. 7.24

  • Programacin II Unidad 7 Funciones - Pgina N: 193

    Escuela Superior de Comercio N 49 Cap. Gral. Justo Jos de Urquiza Carrera Analista de Sistemas de Computacin Nivel Superior

    La funcin trackme() se llama tres veces. Cada vez que se llama, el valor del contador se incrementa y se muestra por pantalla.

    ?>

    Ej. 7.25