dw03 ctes web - 02 - operadores estructuras y funciones

20
CLIENTES WEB Operadores, Estructuras y Funciones Prof. Germán RODRIGUEZ – [email protected] 1 OPERADORES Cuando manejamos la información dentro de nuestros desarrollos, lo que estamos haciendo es operando nuestras variables, por ende, para manipular nuestra información nos vamos a valer de operadores, que los hay de distintos tipos, acorde a lo que deseemos ejecutar. Asignación: Sirve para indicarle a una variable el valor que va a guardar, se usa el símbolo igual. La asignación se hace de derecha a izquierda, porque no es una igualdad. Se le está indicando al programa que el dato o valor que figura a la derecha del igual se va a guardar (asignar!) a la variable del lado de la izquierda del igual. Concatenación: Sirve para unir textos con valores de variables o para mostrar seguido el valor de dos variables. Se utiliza el símbolo . (punto) y las uniones que devuelven no tienen espacios entre sí. En el ejemplo anterior, $nombreCompleto tiene como valor "GermanRodriguez", dado que el operador de concatenación no genera espacios intermedios, para ello tendría que poner entre las dos variables una cadena de texto con tantos espacios como deseo: Ahora sí, como juntamos una variable con un espacio y otra variable, el resultado es el deseado y $nombreCompleto tiene como valor "German Rodriguez". Aritméticos: Sirven para realizar operaciones matemáticas y devuelven siempre un valor numérico (positivo o negativo, entero o decimal). <?php $a = 10; ?> <?php $nombre = "German"; $apellido = "Rodriguez"; $nombreCompleto = $nombre.$apellido; ?> <?php $nombre = "German"; $apellido = "Rodriguez"; $nombreCompleto = $nombre." ".$apellido; ?>

Upload: carlos-loardo-condori

Post on 16-Sep-2015

12 views

Category:

Documents


1 download

DESCRIPTION

sdf sdf sdf

TRANSCRIPT

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 1

    OPERADORES

    Cuando manejamos la informacin dentro de nuestros desarrollos, lo que estamos haciendo es

    operando nuestras variables, por ende, para manipular nuestra informacin nos vamos a valer de operadores, que los hay de distintos tipos, acorde a lo que deseemos ejecutar.

    Asignacin:

    Sirve para indicarle a una variable el valor que va a guardar, se usa el smbolo igual.

    La asignacin se hace de derecha a izquierda, porque no es una igualdad. Se le est indicando

    al programa que el dato o valor que figura a la derecha del igual se va a guardar (asignar!) a la variable del lado de la izquierda del igual.

    Concatenacin:

    Sirve para unir textos con valores de variables o para mostrar seguido el valor de dos variables. Se utiliza el smbolo . (punto) y las uniones que devuelven no tienen espacios entre s.

    En el ejemplo anterior, $nombreCompleto tiene como valor "GermanRodriguez", dado que el

    operador de concatenacin no genera espacios intermedios, para ello tendra que poner entre

    las dos variables una cadena de texto con tantos espacios como deseo:

    Ahora s, como juntamos una variable con un espacio y otra variable, el resultado es el deseado

    y $nombreCompleto tiene como valor "German Rodriguez".

    Aritmticos:

    Sirven para realizar operaciones matemticas y devuelven siempre un valor numrico (positivo

    o negativo, entero o decimal).

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 2

    OPERADOR Suma Resta Multiplicacin Divisin Mdulo

    SIMBOLO + - * / %

    De comparacin: Sirven para evaluar condiciones de igualdad o comparacin, y devuelven un valor booleano, es

    decir un verdadero o falso.

    OPERADOR Igualdad Mayor Menor Mayor o igual Menor o igual Distinto

    SIMBOLO == > < >=

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 3

    $variable = ( $a > $b ) ? 'es verdadero' : 'es falso' ;

    Por lo cual $variable tendr el string 'Es verdadero' cuando la variable $a sea mayor que $b, y

    tendr 'Es falso' cuando $b sea mayor o igual que $a.

    COMILLAS DOBLES Y HEREDOC Una de las grandes ventajas de PHP a la hora de mostrar mensajes (con echo o print) es que

    si el mensaje a mostrar est formado por texto y variables, no es necesario cortar las cadenas

    de texto, concatenar con las variables y volver a mostrar el texto restante.

    Existen dos maneras de usar las variables dentro de un string sin tener que cortar la cadena de

    texto y mostrar con otro echo la variable.

    Si se usa un comando de muestra con comillas dobles, adentro de las mismas se pueden usar variables que se van a procesar sus contenidos.

    Por ejemplo, si tenemos el nombre de una persona en una variable y queremos darle la

    bienvenida a nuestro sitio web tenemos dos caminos:

    1. Mostrar dato por dato:

    Lo cual mostrara en el documento:

    Hola, Germn BIENVENIDO A MI WEB

    2. Usar comillas dobles para generar el mensaje:

    Lo cual generara en pantalla el mismo mensaje en tanto la variable $nombre se

    encuentre en un echo o print generado por comillas dobles!!

    Hola, Germn BIENVENIDO A MI WEB Si por error se usaran comillas simples se vera en pantalla el siguiente mensaje:

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 4

    Hola, $nombre BIENVENIDO A MI WEB

    3. Usar la sintaxis HEREDOC:

    Este es un mtodo interesante de creacin de strings donde se genera una cadena de texto en base a delimitadores definidos por el mismo programador.

    Debe respetar solo dos condiciones para generar una cadena de texto:

    Siempre empieza con tres signos menor (

    Estos mtodos son una ventaja muy grande a la hora de mostrar mensajes que requieran

    demasiado cambio entre texto y variables evitando el problema que tienen otros lenguajes de programacin que s o s exigen la concatenacin de valores (mostrar string, concatenar la

    variable, concatenar otro string, concatenar otra variable, etc).

    CONDICIONALES Los condicionales son estructuras que nos van a permitir evaluar una condicin (generalmente

    una comparacin), y en base a su respuesta (verdadera o falsa) ejecutar diversas acciones.

    La estructura bsica es la siguiente. El programa ejecuta de arriba hacia abajo y de izquierda a derecha las instrucciones, cuando se encuentra con un condicional, evala la condicin, si

    devuelve verdadero ejecuta ciertas acciones, si devuelve falso PUEDE ejecutar otras acciones

    distintas, y luego contina con el resto del programa.

    Si ejecuta el lado verdadero, no ejecuta las acciones del lado falso y viceversa. El lado falso puede no ser declarado (llegado el caso que no haya acciones para realizar).

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 5

    [INSTRUCCIONES INICIALES]

    Condicional(comparacin){ Acciones lado verdadero;

    }SINO{

    Acciones del lado falso; }

    [RESTO DEL PROGRAMA]

    El condicional se declara con la palabra reservada if (si, en ingls), luego entre parntesis la comparacin a evaluar, y a continuacin entre llaves todo lo que se va a ejecutar si la condicin

    devuelve verdadero.

    En este primer ejemplo, el programa evala si la variable $numero tiene un valor mayor a 5. Si

    esto se cumple muestra un mensaje que dice que el nmero es mayor a 5, y luego POR FUERA

    del condicional muestra un mensaje que indica que el programa ha terminado. Este ejemplo, no posee un lado falso (es decir, acciones a seguir si la condicin no se cumple).

    Por lo cual, si cambiamos el valor de $numero a 4, el programa evala si 4 es mayor que 5;

    como no se cumple, no se ejecuta ninguna accin y directamente salta al resto del desarrollo.

    Es decir que ejecuta todas las acciones que siguen despus del condicional, por lo cual solo se

    muestra el mensaje "El programa ha finalizado".

    Si se desean ejecutar acciones si la condicin no se cumple, hay que crear un bloque de

    acciones else, que tambin se declaran entre llaves {}.

    De esta manera si queremos anexarle un lado falso a nuestra condicin inicial, debemos

    agregar el siguiente cdigo:

    Como podemos ver, se cambi el valor de $numero a 4, ahora, como 4 es menor que 5 y la evaluacin no se cumple, se ejecutan todas las acciones agrupadas entre las llaves que

    continan a la palabra reservada else.

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 6

    Desde este momento el programa mostrar el mensaje de mayor a 5 o menor que 5 acorde al

    valor que reciba la variable $numero, pero NUNCA ejecutar ambos lados del condicional.

    Un error comn es preguntar dentro de un condicional una igualdad basada en un solo igual.

    Si bien esa evaluacin nunca devolver error, siempre nos dar como resultado verdadero, ya

    que, como un solo igual asigna valores, lo que le estamos preguntando al programa es si en la

    variable $numero, podemos guardar el valor siguiente, como esto siempre se puede hacer, devuelve verdadero:

    Este ejemplo siempre devuelve verdadero aunque $numero no sea igual a 6, ya que lo que

    estamos preguntando es si a numero le PODEMOS GUARDAR el valor 6. PHP guarda en

    $numero el valor 6, nos devuelve verdadero y adems, nos cambi el valor de $numero.

    Es probable que en algunos casos con tener slo dos salidas posibles (una verdadera o una

    falsa) no nos alcance para tomar decisiones, por ejemplo, si queremos verificar si un nmero es

    mayor o menor a 10, podremos partir (por ejemplo) de la evaluacin si el nmero es mayor a

    10, por lo cual tendremos una respuesta verdadera para valores por encima del 11 (inclusive) y

    una respuesta falsa para valores por debajo de 10 (inclusive). No obstante, para el objetivo de nuestro programa, 10, no es menor que 10, sino que es igual pero como nosotros slo podemos preguntar una vez, es decir, realizar una sola evaluacin, solo tenemos como

    posibilidad que sea mayor o no.

    Para poder llegar a la conclusin de si es mayor, menor o igual a 10, necesitamos una

    extensin de la estructura del condicional, que se conoce con el nombre de excepcin y consta

    de, llegado el caso que la evaluacin inicial nos devuelva falso, volvamos a preguntar si esa

    misma variable es igual a 10.

    Esto se realiza mediante la palabra reservada else if (conjuncin del else y apertura de nuevo

    condicional if SEPARADOS por un espacio) y nos exige volver a preguntar una nueva condicin.

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 7

    Se puede tener tantas excepciones como sean necesarias, en tanto siempre preguntemos una

    nueva evaluacin. No hace falta un else a todas las evaluaciones, de existir, se ejecuta llegado el caso que NINGUNA de las condiciones previas devuelva verdadero (es un false en comn).

    La excepcin trabaja por decantacin, en el primer verdadero que devuelva alguna de las

    condiciones frenara la ejecucin de las dems condiciones y solo se ejecutar el bloque de

    acciones correspondientes a dicha devolucin. Por ese motivo hay que tener muy presente la forma en que preguntamos, porque si ejecutamos el siguiente programa:

    En este ejemplo si bien 11 es mayor que 10 NUNCA veremos el mensaje que as lo indique,

    porque antes que mayor que 10, el nmero es mayor que 5, y como esa es la primer condicin que se cumple, siempre se ver en mensaje El numero es mayor que 5 as se ingrese 6, 11 o 2000.

    El orden de las excepciones determina el resultado recibido.

    SELECTOR Es la estructura switch es un selector de los casos posibles que puede adoptar una variable. A diferencia

    del IF no nos permite evaluar una condicin sino que evala directamente el VALOR de la variable,

    mediante el operador de doble igual (==).

    Al switch hay que definirle los casos posibles para el valor de esa variable. Cada caso, debe terminar con la palabra break, sino se empiezan a anidar las acciones a realizar.

    La sintaxis del switch es la siguiente.

    switch(variable){

    case "algo": acciones; break;

    case 1: acciones; break;

    default: acciones si no se cumple ninguno de los cases break; }

    Lo que hace el switch es lo siguiente: busca la el contenido de variable, y en cada case lo compara.

    variable == "algo" si devuelve true hace todo lo de acciones hasta el break y sale del switch. Si no:

    variable == 1 si devuelve true hace todo lo de acciones hasta el break y sale del switch. Si no:

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 8

    variable por descarte no es ninguna de las anteriores, se usa un caso genrico (identificado con la

    palabra default) hasta el final del switch.

    Al igual que el ELSE de la estructura IF, el DEFAULT no es obligatorio. De existir no debe estar vaco (no

    genera error de estar y no tener nada, pero no es recomendado) y si existe, se ejecuta solo si ninguno de los casos anteriores no se cumplen.

    Cuando encuentra coincidencia con un case, ejecuta sus acciones y termina el switch, al igual que el ELSE

    IF, trabaja por decantacin, con la primer coincidencia.

    Ejemplo:

    COSAS QUE NO SE PUEDEN HACER CON EL SWITCH:

    Usar el igual despus del case (DA ERROR): case = 1. Est mal.

    Directamente se escribe case 1:

    Evaluar ms de una posibilidad por case

    No se puede preguntar case 1 || case 2, ni case "a" && case "b".

    Cada opcin es un case distinto, se pueden poner a continuacin o uno abajo del otro, pero son distintos:

    case 1:

    case1: case "a":

    case "b":

    ACCIONES PARA LOS 4 VALORES break;

    Evaluar comparaciones No puedo preguntar case a < b, ni case a != b, ni case a === c

    Solo evala valores (por igualdad).

    Esta estructura nos sirve exclusivamente cuando tenemos bien definido que valores puede adoptar una

    variable y de ah en adelante tomar las decisiones.

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 9

    Un error comn es el de olvidarse la palabra break, esto para PHP no es sinnimo de error, porque yo

    puedo querer que ante determinado valor de la variable se ejecuten todas las lneas de cdigo acorde a ese caso (valor), ms las que correspondan al caso siguiente.

    Entonces la falta de break no genera error, simplemente empieza a anidar acciones con respecto al caso siguiente.

    ESTRUCTURAS ITERATIVAS Un ciclo de repeticin es una estructura que nos permite repetir una porcin de cdigo acorde a una serie

    de parmetros que puede recibir el mismo. En tanto las condiciones dadas se cumplan (es decir, devuelva

    una respuesta de valor true) el ciclo se seguir ejecutando. Desde el momento que la condicin devuelva una respuesta false, el ciclo terminar y el programa

    ejecutar el resto del cdigo que se encuentre luego del ciclo.

    Existen dos tipos de estructuras de repeticin:

    - Finitas: Son estructuras que tienen un principio y un final explcito a la hora de desarrollar el

    programa. Son las que se utilizan cuando ya se tiene por sabida la cantidad de veces que se

    pretende repetir el cdigo. - Abiertas: Son las que se ejecutan en tanto y en cuanto un booleano les indique que deben repetir.

    No se tiene un conocimiento previo si es ciclo se repetir una o mil veces.

    CICLO FOR

    Los ciclos de repeticin FOR, son bucles numricos. Es decir, se van a realizar repeticiones del cdigo en el

    intervalo definido entre un valor numrico y otro valor numrico.

    Este tipo de ciclos requieren un valor inicial (dnde comienza el ciclo), la condicin que debe cumplirse

    para que el ciclo se repita (hasta dnde va el valor pasado inicialmente) y un incremento (de cunto en

    cunto aumenta el valor de la variable).

    La sintaxis sera la siguiente:

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 10

    for( inicio; condicin; incremento ){ acciones

    }

    Donde:

    - Inicio: es la declaracin de una variable en un valor numrico. Ejemplo: $i = 0;

    - Condicin: es una comparacin sobre esa variable, que deber dar verdadero para entrar en el

    ciclo de repeticin. Ejemplo, que $i est por debajo de 10: $i < 10. - Incremento: Es cualquier operacin matemtica, ascendente o descendente, que modifique la

    variable, hasta que ya no nos d ms verdadera la comparacin anterior. Ejemplo, que vaya de un

    nmero en un nmero hacia arriba: $i++.

    Por lo cual si queremos mostrar los nmeros del 10 al 50 deberamos escribir.

    A tener presente: dentro del ciclo de repeticin la variable que igualamos como valor inicial se puede

    utilizar (y de hecho se utiliza) como puntero para saber en qu lugar de todo el ciclo estamos parados. Esta estructura de repeticin es la nica estructura que separa los parmetros que se encuentran dentro

    del parntesis por punto y coma (en todas las dems estructuras, como if o switch, esto devuelve error

    porque corta la sentencia). Separar los parmetros del for por coma, devuelve error.

    El modo de razonamiento del ciclo for es bastante simple:

    1. Le asigna a la variable del inicio un valor mediante una igualdad (SIEMPRE con una igualdad) se pregunta, la condicin del segundo parmetro, se cumple? Si la respuesta es verdadera

    (booleano), ejecuta todo el cdigo que se encuentra entre las llaves.

    2. Al terminar de ejecutar todo el cdigo, recin toma el ltimo parmetro de los parntesis y verifica cunto debe sumarle a la variable inicializada (puede ser uno, dos o mil ms).

    3. Vuelve al principio, pero ya no vuelve a setear la variable con el valor inicial, eso se realiza una

    sola vez de ac en adelante, simplemente verifica si la condicin (el segundo parmetro) se cumple de volver a recibir una respuesta true, ejecuta de nuevo todo el cdigo y al final vuelve a incrementar la variable numrica, para una vez ms evaluar la condicin y as sucesivamente.

    Estos ciclos de repeticin son tiles cuando sabemos desde donde hasta donde queremos ejecutar nuestro cdigo. Por ejemplo si deseamos realizar de manera rpida un combo select con las dcadas de 1900 al

    2010, de mayor a menor, solo deberamos escribir:

    Nota: La expresin variable += valor est basada en un operador matemtico ( += ) que indica que la variable que se encuentra a la izquierda, va a aumentar a s mismo el valor que se le indica a la derecha es el equivalente a decir variable = variable + valor. Este formato de operacin se puede utilizar con cualquier operador matemtico ( += ; -= ; *= ; /= ; %= ) siempre se ejecuta de la misma manera, el valor de la variable, operada matemticamente segn el valor de la

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 11

    derecha, guardado en la misma variable. El smbolo de la operacin matemtica (+ - * /) va SIEMPRE por delante del

    igual.

    Este cdigo nos mostrara en pantalla un combo con las opciones aumentando de 10 en 10:

    BREAK Y CONTINUE

    El bucle for tiene dos instrucciones que se pueden utilizar dentro del mismo para cortar la ejecucin de cdigo, son las palabras reservadas break y continue.

    Si bien las dos realizan la misma accin, al aparecer cortan la ejecucin del ciclo de repeticin, la instruccin continue, le indica al ciclo que no ejecute las acciones que queden pendientes en la vuelta en

    que se encuentre, pero que (llegado el caso que la evaluacin del segundo parmetro devuelva true)

    ejecute la siguiente vuelta del ciclo. Por el contrario la palabra break, directamente indica que de ah en adelante corte por completo todo el

    bucle y contine con el resto del programa sin importar cuntas vueltas falten para completar la condicin

    del segundo parmetro.

    Por lo general ambas instrucciones se utilizan dentro de un condicional y se ejecutan ante la presencia de

    alguna situacin puntual.

    Por ejemplo, siguiendo el ciclo anterior del combo de las dcadas, podramos decirle que si la dcada se encuentra entre 1950 y 1990 inclusive no se incluyan dentro del combo.

    Esto se realizara agregando el condicional necesario que, de ser verdadero, llame a la instruccin

    continue, que le dir al ciclo, no hagas lo que est a continuacin, pero segu con las dems vueltas.

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 12

    Ntese que el condicional se encuentra por dentro del for, y que solo si se cumple que la variable $i (que en cada repeticin del ciclo aumenta en 10 su valor) est dentro del rango de 1950 y 1990 inclusive, se

    llama a la instruccin continue, que va a mandar al bucle de vuelta al principio.

    El resultado de este cdigo es el siguiente:

    Si en vez de continue hubisemos escrito break, sencillamente el bucle habra finalizado sin volver a dar

    las vueltas restantes:

    Resumen: El bucle for es un ciclo de repeticin numrico, que se maneja en base a un nmero que aumenta o reduce su valor en cada vuelta. Su sintaxis OBLIGATORIAMENTE nos pide un valor numrico

    inicial asignado a una variable, una condicin que debe cumplir esa variable para ejecutar las vueltas y un

    incremento o decremento de esa variable al final de cada repeticin. No puede faltar ninguno de los tres valores y es LA UNICA ESTRUCTURA en la cual los valores dentro del parntesis se deben separar por

    punto y coma.

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 13

    DO / WHILE Otros ciclos de repeticin son el do y el while. Ambos trabajan en base a una condicin que debe

    cumplirse para ejecutarse el cdigo dentro de la repeticin.

    Si bien la estructura de ambos es casi idntica, tienen una sutil diferencia entre s.

    La sintaxis de ambos es muy simple:

    do{ while(condicin){

    Cdigo a ejecutar; Cdigo a ejecutar;

    }while(condicin); }

    En primera instancia y a tener presente, el do SIEMPRE debe cerrarse con una instruccin while, entre

    parntesis lo que debe cumplirse para ejecutar el cdigo y al final un punto y coma. El bucle while recibe la condicin y entre llaves el cdigo a ejecutar, no se cierra con punto y coma.

    En ambos casos se va a realizar el cdigo tantas veces como la condicin devuelva verdadero, pero el ciclo

    DO, al menos realiza las acciones del ciclo una vez, ya que la evaluacin de la condicin se realiza al final, por ende, se puede arrancar con una condicin falsa y recin despus evaluar si se debe realizar una

    nueva repeticin del bucle.

    Por su parte while, evala desde la primer vuelta el ciclo y si no se cumple la condicin no realiza ninguna accin.

    Para graficar esta diferencia, vamos a realizar un programa simple que arranque con una variable cualquiera cuyo valor sea false, y otra variable numrica que comience con valor 0.

    En ambos bucles solo vamos a decirle que esa variable numrica va a incrementar su valor en 1, mientras

    que la otra variable sea verdadera. Al final mostramos el valor de la variable numrica, que nos va a decir cuntas veces se ejecut el cdigo.

    Lo mismo, pero versin while:

    Como se puede ver, while no ejecut el cdigo de sus llaves, porque antes de entrar en el ciclo evalu el

    estado de la variable $repetir. Como esa variable no es true, no realiz la suma del valor de $num.

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 14

    Do, por otro lado, evalu el estado de de la variable $repetir, pero lo hizo al final del primer ciclo de repeticin, por ende, al menos una vez, se hizo el incremento de la variable $num.

    Los ciclos de repeticin do/while van a ser utilizados principalmente cuando nos adentremos en fuentes abiertas de datos (como las bases de datos) donde no tenemos un conocimiento previo de la cantidad de

    registros a mostrar en nuestro documento.

    QU SON LAS FUNCIONES?

    Una funcin es, al igual que una variable, un espacio reservado en nuestro programa que encierra una serie de instrucciones destinadas a cumplir una determinada accin.

    Poseen un nombre que las identifican y nos permitir ejecutarlas al hacer referencia al mismo.

    Desde los conceptos bsicos de la programacin, una funcin es un recurso pensado para resolver un problema puntual que se almacena bajo un nombre propio.

    Si tuvisemos que hacer los mismos pasos en dos partes distintas de un mismo documento (o

    en documentos distintos tambin), podramos aprovechar este recurso para ponerle un nombre

    a esos pasos y cuando necesitamos ejecutarlos le decimos al programa hac sto.

    Desde la programacin propiamente dicha, una funcin tiene dos partes bien definidas:

    Un bloque de cdigo que encierra todas las acciones a realizar y la llamada a ejecucin de la

    misma.

    Desde nuestra experiencia, algunas funciones que hemos usado son echo, print e isset().

    SINTAXIS

    Al igual que todas las estructuras de PHP, para crear nuestra primera funcin tenemos que

    respetar una sintaxis, para que el programa agregue la misma a su librera de cdigo disponible.

    Un funcin se declara con la palabra reservada function, seguida por el nombre que tendr la

    misma, un juego de parntesis (ms adelante en este mismo documento veremos la utilidad de los mismos) y entre apertura y cierre de llaves todo el cdigo que se ejecutar cada vez que se

    invoque a la funcin.

    Por ejemplo, si queremos hacer una funcin que muestre el mensaje hola a todos podramos ponerle el nombre saludar y crearla de la siguiente manera:

    Es bueno tener presente que esto es solo la declaracin de la funcin. Si ejecutamos en este

    momento el cdigo que hemos escrito, no tendremos ninguna salida impresa en el HTML, dado

    que nos falta ejecutar (o invocar) al cdigo escrito, esto se hace simplemente con el nombre de

    la funcin seguido por los parntesis:

    function saludar() {

    echo 'Hola a todos';

    }

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 15

    Los nombres de la funciones respetan las mismas restricciones que los nombre de variables

    (son case sensitive, no pueden empezar con un nmero, no pueden tener espacios, etc).

    El cdigo encerrado dentro de las llaves de una funcin, no es otra cosa que PHP comn y corriente, tal como venimos escribindolo desde el inicio de la materia. Por lo cual una funcin

    puede tener adentro peticiones y muestras de datos ($_GET, echo, print), operacin de

    variables (comparaciones, concatenaciones, sumas, restas, etc), estructuras de toma de

    decisiones (if, switch), estructuras iterativas (for, foreach, do, while) e incluso declaraciones o llamadas a otras funciones pre-existentes.

    VARIABLES EN LAS FUNCIONES

    De ms est decir (pero hacemos la salvedad), que siguiendo el ejemplo anterior de mostrar un saludo- no nos sirve de nada una funcin que siempre diga Hola a todos, dado que si se desea saludar al usuario Germn, deberamos crear OTRA funcin que haga el echo respectivo.

    Por este motivo, las funciones permiten trabajar con variables, pero debemos saber cmo

    trabaja PHP con las variables dentro de las funciones para poder llegar al resultado esperado.

    Todas las variables en PHP tienen un mbito de vida (llamado SCOPE) que corresponde al nivel

    donde fueron creadas. Por ende, toda variable creada por fuera de una funcin NO EXISTE por

    dentro y las variables creadas por dentro de una funcin NO EXISTEN por fuera de la misma:

    Para poder lograr que se encuentren las variables por fuera de una funcin se debe indicar DESDE ADENTRO de la funcin que se necesita un dato externo, a tal efecto se deber declarar

    en la funcin la lista de variables GLOBALES (que vienen de afuera) que se heredarn dentro de

    la funcin.

    Eso se hace con la instruccin global seguido por los nombres de variables externas:

    saludar(); //esto mostrar en pantalla Hola a todos

    $nombre = 'Germn';

    function saludar(){

    echo 'Hola ' . $nombre; //no encuentra la variable nombre por fuera de la funcion.

    Muestra un undefined variable $nombre

    }

    saludar(); //se ejecuta la funcin

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 16

    Este concepto de la programacin, donde las variables creadas por fuera de una funcin existen adentro de las mismas, se llama variable global.

    Si bien es un recurso del cual disponemos, no es una de las soluciones ms seguras, ya que si

    cometemos un error en nuestro cdigo PHP y modificamos dentro de la funcin la variable

    nombre, tambin estaremos modificndola por fuera, dado que ese estado global es tanto para la lectura como para la escritura.

    Dado que las funciones se ejecutan en un mbito propio, ajeno al desarrollo del programa

    principal, si no se hace referencia a las variables globales, los datos nunca se tocan.

    Por lo cual, un comportamiento interesante, radica en las variables declaradas dentro de una funcin privadas- que tambin existen por fuera de la misma. En estos casos, dado que la variable de una funcin es privada de la misma, la variable que

    est por fuera y la variable que est por dentro de la funcin son dos datos distintos que nunca

    se tocan (en tanto y en cuanto no se declare como global).

    $nombre = 'Germn';

    function saludar(){

    global $nombre; //encuentra la variable nombre por fuera de la funcion.

    echo 'Hola ' . $nombre; //Muestra Hola Germn.

    }

    saludar(); //se ejecuta la funcin

    $nombre = 'Germn';

    function saludar(){

    global $nombre; // se trae la variable externa

    $nombre = 'PEPE'; //aca se pisa la variable externa

    echo 'Hola ' . $nombre; //encuentra la variable nombre por fuera de la funcion.

    }

    saludar(); //se ejecuta la funcin

    echo $nombre ; //ya no muestra Germn sino PEPE

    $nombre = 'Germn';

    function saludar(){

    $nombre = 'PEPE'; // no pisa el valor Germn, crea una variable NUEVA privada de

    la funcin.

    echo 'Usted es ' . $nombre; //concatena con el dato generado.

    }

    saludar();// muestra Usted es PEPE

    echo $nombre ; // sigue mostrando Germn

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 17

    USO DE ARGUMENTOS

    Una de las finalidades de las funciones radica en la posibilidad de poder afectar el resultado de

    su ejecucin mediante el uso de argumentos. Los argumentos son una lista de valores que se le indica a la funcin que van a existir dentro

    de la funcin, desligando a la funcin de: buscar variables globales, generar los datos adentro

    de la funcin y reservar o correr el riesgo de pisar espacios en memoria.

    De esa manera, la funcin se encarga nicamente de trabajar con los datos recibidos sin

    importar si los mismos son definidos por el programador, vienen de un GET, de un formulario o una fuente ms dinmica (como una base de datos).

    Es en este punto donde entran en juego los parntesis, tanto para la creacin como para la

    ejecucin de las funciones.

    Empezando por el final de este punto, cuando nosotros ejecutamos una funcin de verificacin

    de datos (como puede ser isset()), le pasamos entre parntesis la variable que estamos

    buscando, y segn vaya cambiando el dato pasado entre parntesis, cambiar la variable a buscar:

    En el ejemplo anterior, la funcin recibe entre parntesis un valor que modifica el resultado de

    la funcin, pero no altera lo que la funcin en s hace. Ese valor recibido es un argumento.

    Para poder hacer uso de los mismos, simplemente necesitamos tanto en la creacin como en la

    ejecucin de la funcin indicar el paso de los argumentos, los cuales sern independientes entre

    s:

    Dicho de otra manera: un argumento es un alias a un dato recibido externamente.

    No hay que confundirse y pensar que desde el momento que se le indica a una funcin que va a

    recibir un argumento se est definiendo esa variable en algn lugar de la memoria del

    programa, sino todo lo contrario, esa variable no existe. Solo se genera una referencia del

    VALOR recibido, se opera (como cualquier otro dato) y al terminar la ejecucin de la funcin se destruye esa referencia, por lo cual no existe ni antes, ni despus de la funcin sino durante. (si no se ejecuta la funcin esta referencia nunca se genera, y cuando termine la ejecucin la

    referencia desaparece). Quizs el siguiente ejemplo grafica este proceso.

    $dato = 'una variable cualquiera';

    echo isset( $dato ) ; //mostrar un booleano acorde a si existe o no $dato

    function saludar( $aQuienSaludo ){ // le indico que la funcin tendr entre llaves una

    variable llamada aQuienSaludo.

    echo 'Hola ' . $aQuienSaludo . ', cmo estas?'; //muestro esa variable.

    }

    saludar( 'german' ) ; // le paso entre parntesis un valor, que se guardar en la

    variable $aQuienSaludo, por lo cual mostrar en el HTML Hola german, cmo estas?

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 18

    Este proceso se conoce como paso por valor de una variable, es decir, la variable nunca es enviada, sino el contenido de la misma, y se maneja una copia de la misma.

    Se pueden enviar tantos argumentos como sea necesario utilizar en una funcin, simplemente

    se los separa (tanto en la creacin de la funcin como en su ejecucin) por comas, y en el orden en que son creados debern ser enviados:

    Para corroborar que PHP har referencia a los datos enviados en el mismo orden en el cual los

    espera recibir, simplemente tenemos que invertir los datos pasados como argumento para ver que la respuesta recibida ser inversa:

    PHP no tiene forma de saber qu quisimos hacer con los datos, por lo cual, simplemente

    respetar los nombres referenciales en el mismo orden en que fueron pasados.

    Si se envan menos argumentos de los que la funcin est esperando, en su lugar se recibir un

    dato vaco, es decir una referencia de tipo undefined variable o un mensaje de advertencia de

    tipo wrong arguments count (conteo de argumentos errneo).

    function mostrarMensaje( $queMensaje , $aQuePersona ){

    echo $queMensaje . ' ' . $aQuePersona ;

    }

    mostrarMensaje('Hola','Pepe') ; //el primer argumento llegar como $queMensaje y el

    segundo como $aQuePersona

    //Muestra Hola Pepe;

    function mostrarMensaje( $queMensaje , $aQuePersona ){

    echo $queMensaje . ' ' . $aQuePersona ;

    }

    mostrarMensaje('Pepe','Hola') ; //el primer argumento llegar como $queMensaje y el

    segundo como $aQuePersona

    //Muestra Pepe Hola;

    function mostrarMensaje( $queMensaje , $aQuePersona ){

    echo $queMensaje . ' ' . $aQuePersona ;

    }

    mostrarMensaje('Hola') ; //el primer argumento llegar como $queMensaje y el segundo

    -$aQuePersona- no es pasado, as que ser de tipo undefined

    //Muestra Hola undefined;

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 19

    VALORES DE RETORNO

    En la programacin existen dos tipos de funciones, aquellas que no devuelven ningn resultado tras su ejecucin, llamadas funciones VOID o nulas, y la que s devuelven una respuesta o

    resultado tras su ejecucin llamadas funciones DE RETORNO.

    Dos funciones de retorno son, por ejemplo, isset() que devolver una respuesta de tipo true o

    false acorde si la variable pasada como argumento existe o no, o la funcin explode() que devolver un array tras la separacin de un string.

    Una funcin que no devuelve ningn valor (de tipo VOID) es print_r(), que solo muestra el

    array pasado como argumento, pero no devuelve ninguna respuesta al ejecutarla.

    Las funciones que devuelven una respuesta, deben guardar su ejecucin en una variable (tal

    como sucede con los explode(), implode(), isset(), etc.) a fin de poder manipular esa

    respuesta luego de la llamada a ejecucin.

    As como al querer pasar argumentos en una funcin debemos indicarle a la misma que

    manipular datos, para devolver una respuesta desde una funcin, tambin debemos

    indicrselo.

    Esto se hace mediante el uso de la palabra reservada return, que se encargar de decirle a nuestra funcin que deber devolver un valor.

    Este valor, se indicar a continuacin de la palabra return.

    Es importante tener presente que cuando se realiza un retorno, lo que se est haciendo (al igual que con los argumentos) es devolver UN VALOR, JAMAS la variable indicada despus de

    un return se entrega por fuera de la funcin (las variables nacen y mueren dentro de la

    funcin).

    Por lo cual el siguiente cdigo generar error:

    function sumar( $numero1 , $numero2 ){

    $resultado = $numero1 + $numero2;

    return $resultado; // devuelve el valor generado.

    }

    $suma = sumar( 2 , 5 ); //suma tendr adentro el valor 7.

    function sumar( $numero1 , $numero2 ){

    $resultado = $numero1 + $numero2;

    return $resultado; // devuelve el valor generado.

    }

    sumar( 2 , 5 ); //se ejecuta la funcin pero no se guarda en ninguna variable.

    echo $resultado ; // se quiere mostrar la variable generada adentro de la funcin pero

    no es encontrada y devuelve un mensaje de nulidad.

  • CLIENTES WEB Operadores, Estructuras y Funciones

    Prof. Germn RODRIGUEZ [email protected] 20

    Dicho de otra manera ms clara, cuando hacemos un return, no devolvemos la variable (el

    contenedor), sino que devolvemos el VALOR (el contenido). Motivo por el cual debemos

    guardar esa respuesta en OTRO contenedor para no perder ese dato.

    COMBINACIN DE FUNCIONES

    Aprovechando las ventajas de la parametrizacin de las funciones y la devolucin de los valores

    de retorno, es posible combinar funciones, en tanto y en cuanto, la funcin que vamos a

    ejecutar (dentro de otra funcin) exista en el mismo nivel de la funcin que la llame.

    Esta tcnica respeta la idea de que cada funcin debera realizar una nica accin y devolver su

    propia respuesta, la cual puede ser aprovechada por otra funcin para lograr sus propios

    objetivos.

    Una funcin debe (principalmente) poder ser reciclable mediante el uso de los

    argumentos.

    function sumar($num1, $num2){

    $suma = $num1 + $num2 ;

    return $suma ;

    }

    function dividir($numero, $cantidad){

    $division = $numero / $cantidad ;

    return $division ;

    }

    function promediar($A, $B){

    $suma = sumar( $A , $B ) ; // se pasan los datos recibidos a la function sumar, cuya

    respuesta se guarda en la variable $suma.

    $promedio = dividir( $suma , 2 ) ; // manda la respuesta de la funcin sumar a la

    funcin promediar y la cantidad de 2 numeros

    return $promedio ; // devuelve el promedio.

    }

    $resultado = promediar( 4 , 6 ) ; // devolvera 5 ejecutando las tres funciones

    encadenadas.