Herramientas de usuario

Herramientas del sitio


programacionphp2:teorias:teoria2

Teoría 2

Estrategias

Procedimientos

<?php
    function imprimir($msg) {
        print $msg . "\n";
    }
    $texto = "Este es otro texto";
    imprimir("Ejemplo de mensaje de prueba");
    imprimir($texto);
    imprimir("y otro más.");
?>

Conceptos:

  • Módulo.
    • Definición.
    • Concepto de invocación. Invocación múltiple.
  • Parámetro.
  • Es funcion o procedimiento?
  • Una modificación del valor del parámetro se propaga?

Comentarios en módulos

<?php
 
    /*
     * Muestra un mensaje y cambia de línea.
     * @param string $msg  Texto del mensaje a mostrar.
     */
    function imprimir($msg) {
        print $msg . "\n";
    }
    $texto = "Este es otro texto";
    imprimir("Ejemplo de mensaje de prueba");
    imprimir($texto);
    imprimir("y otro más.");
?>

Función

<?php
    /*
     * Retorna el factorial del valor indicado.
     * @param  int $valor  Numero al que se le desea calcular el factorial.
     * @return int         Factorial del número recibido como parámetro.
     */
    function factorial($valor) {
        $fact = 1;
        for ($valor; $valor >= 1; $valor--) {
            $fact *= $valor;
        }
        return $fact;
    }
    $nro = 4;
    print "El factorial de $nro es " . factorial($nro) . " \n";
?>

Comentarios:

  • Es FUNCION porque tiene RETURN.
  • Todo camino posible de ejecución debe tener RETURN.
  • Debiera haber un único RETURN.
  • Todo código posterior a un RETURN no se ejecuta.
  • La invocación cambia porque retorna un valor y debe ser utilizado.
  • Si es función NO debe ejecutar acciones colaterales.

Pasaje de parámetros por referencia

<?php
    /*
     * Le suma siete al valor recibido como parámetro
     * @param  int &$valor  Numero al que se le va sumar el valor 7.
     */
    function sumasiete(&$valor) {
        $valor += 7;
    }
    $nro = 5;
    print "El valor de nro antes de invocar a sumasiete es: $nro\n";
    sumasiete($nro);
    print "El valor de nro después de invocar a sumasiete es: $nro\n";
    sumasiete($nro);
    print "El valor de nro después de invocar por segunda vez a sumasiete es: $nro\n";
?>

Comentarios:

  • Diferencia entre pasaje de parametros por copia y por referencia.
  • Normalmente se pasa por copia.
  • Si el parámetro se pasa por referencia se usa: (&).
  • Concepto de dirección de memoria. Estan en la misma dirección de memoria, por lo tanto cualquier cambio en uno de ellos impacta en el otro porque “son lo mismo”.

Parámetros optativos

<?php
    /*
     * Muestra un mensaje y cambia de línea tantas veces como se desee.
     * @param string $msg  Texto del mensaje a mostrar.
     * @param int    $cant Cantidad de veces que se desea mostrar el mensaje.
     */
    function imprimir($msg, $cant=1) {
        for ($cant; $cant >= 1; $cant--) {
            print $msg . "\n";
        }
    }
    $texto = "Este es otro texto";
    imprimir("Ejemplo de mensaje de prueba",2);
    imprimir($texto);
    imprimir("y otro más.",1);
?>

Los últimos (más a la derecha), pueden tener un valor por defecto, esto significa que si en la invocación no son indicados(instanciados) asumirán ese valor.

programacionphp2/teorias/teoria2.txt · Última modificación: 2017/10/10 16:12 (editor externo)