Herramientas de usuario

Herramientas del sitio


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

Función

<?php
    function factorial($valor) {
    /**
     * 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.
     */
        $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
    function sumasiete(&$valor) {
    /**
     * Le suma siete al valor recibido como parámetro
     * @param  int &$valor  Numero al que se le va sumar el valor 7.
     */
        $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
    function imprimir($msg, $cant=1) {
    /**
     * 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.
     */
        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.

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