Muestra las diferencias entre dos versiones de la página.
programacionphp2:teorias:teoria2 [2012/04/20 10:51] pabrile [Comentarios en módulos] |
programacionphp2:teorias:teoria2 [2017/10/10 16:12] |
||
---|---|---|---|
Línea 1: | Línea 1: | ||
- | ====== Teoría 2 ====== | ||
- | ===== Estrategias ===== | ||
- | |||
- | En [[http://www.unicen.edu.ar/introprog/Intro1/index.html]] puede acceder a: | ||
- | * [[http://www.unicen.edu.ar/introprog/Intro1/3-Estrategias/Estrategias-1.html|Estrategias --> Concepto de Estrategia]] | ||
- | * [[http://www.unicen.edu.ar/introprog/Intro1/3-Estrategias/DiagramaEstructura.html|Estrategias --> Diagrama de Estructura]] | ||
- | * [[http://www.unicen.edu.ar/introprog/Intro1/4-Parametros/Concepto.html|Parametros --> Concepto de Parametros]] | ||
- | |||
- | |||
- | ===== Procedimientos ===== | ||
- | <code php> | ||
- | <?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."); | ||
- | ?> | ||
- | </code> | ||
- | |||
- | 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 ===== | ||
- | <code php> | ||
- | <?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."); | ||
- | ?> | ||
- | </code> | ||
- | |||
- | ===== Función ===== | ||
- | |||
- | <code php> | ||
- | <?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"; | ||
- | ?> | ||
- | </code> | ||
- | |||
- | 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 ===== | ||
- | |||
- | <code php> | ||
- | <?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"; | ||
- | ?> | ||
- | </code> | ||
- | |||
- | 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 ===== | ||
- | |||
- | <code php> | ||
- | <?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); | ||
- | ?> | ||
- | </code> | ||
- | 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. |