Foros del Web » Programando para Internet » PHP »

No se si me quedan muy claras las funciones.

Estas en el tema de No se si me quedan muy claras las funciones. en el foro de PHP en Foros del Web. Buenas vecinos!!! Como dice el título del hilo, no se si me quedan muy claro para que sirven las funciones exactamente. Una vez despues de ...
  #1 (permalink)  
Antiguo 30/11/2013, 08:36
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
No se si me quedan muy claras las funciones.

Buenas vecinos!!! Como dice el título del hilo, no se si me quedan muy claro para que sirven las funciones exactamente.

Una vez despues de haber buscado información sobre ellas, lo que yo entiendo es que sirven para ahorrarte muchas lineas de código, que una vez creada la función en un archivo php, solo tienes que incluir el archivo por medio de include y llamar a dicha función.

Para hcer mis pruebas he creado un archivo llamado utilidades.php en el cual tengo esta función para ir probando:

Código PHP:
Ver original
  1. <?php
  2.  
  3. function par_impar($numero = 1) {
  4. if($numero%2==0) {
  5. echo "El numero $numero es par <p>"; }
  6. else { echo "El numero $numero es impar <p>"; }
  7. }
  8.  
  9. ?>

luego he creado un index.php en el cual tengo el siguiente código:

Código PHP:
Ver original
  1. <?php
  2.  
  3. include("utilidades.php");
  4.  
  5. par_impar($numero = 38);
  6.  
  7. ?>

Cada vez que quiera averiguar si por ejemplo un número es par o impar se que puedo usar la función que par_impar() que he creado. Pero... Porque tengo que declarar la variable en la función creada en utilidades.php si no es esa la que realmente quiero asignarle ??

He probado a dejarlo de la siguiente forma, pero no funciona

Código PHP:
Ver original
  1. <?php
  2.  
  3. function par_impar() {
  4. if($numero%2==0) {
  5. echo "El numero $numero es par <p>"; }
  6. else { echo "El numero $numero es impar <p>"; }
  7. }
  8.  
  9. ?>

y luego añadirle el valor como tengo puesto en el index mencionado antes si es ahí donde declaro que el número que quiero asignarle a la variable, pero de esta forma no funciona.

Otras preguntas... hasta que punto puedo usar las funciones?? Digamos que tengo una cabecera de una web, y meto todo el código dentro de la función mi_cabecera(), imagenes menu,osea todo el código html

luego puedo mostrarlo en el index con esa función ? o es solo para codigos php.
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #2 (permalink)  
Antiguo 30/11/2013, 08:58
Avatar de Cuervoo  
Fecha de Ingreso: octubre-2013
Mensajes: 165
Antigüedad: 10 años, 6 meses
Puntos: 43
Respuesta: No se si me quedan muy claras las funciones.

Una función puede recibir parámetros o no, y estos parámetros pueden ser opcionales o estar predefinidos.

Los parámetros que recibe los específicás en la declaración de la función:
Código PHP:
Ver original
  1. function sumar($a, $b)
  2. {
  3. }

Eso quiere decir que sumar va a recibir dos parámetros que son obligatorios.

Si no necesitás que reciba ninguno, suponete que hacés una función que imprime el año, no lo especificás.

Código PHP:
Ver original
  1. function esAno()
  2. {
  3.     echo 'Estamos en el año: '.date('Y);
  4. }

Ahora, si un parámetro es opcional, quiere decir que tiene la opción de usarlo o no, lo podés declarar con un valor inicial.
Suponete que querés hacer la suma pero en algunos casos tenés que pasarle dos, y en otro tres valores.

Código PHP:
Ver original
  1. function sumar($a, $b, $c = false)
  2. {
  3.     //Sumamos los dos primeros, que son oblugatorios
  4.     $ret = $a + b;
  5.    
  6.     //Vemos si pasó un tercer valor, lo sumamos,
  7.     //si no lo pasó, va a quedar en false asique no entra al if
  8.     if ($c)
  9.     {
  10.         $ret += $c;
  11.     }
  12.    
  13.     return $ret;
  14. }

Entonces a esa función la podés llamar sumar(5, 10) o sumar(5, 10, 15).

También tenés otras opciones como usar func_get_args() pero no te enrosques, que te quede bien claro como funcionan primero.

Cita:
Otras preguntas... hasta que punto puedo usar las funciones?? Digamos que tengo una cabecera de una web, y meto todo el código dentro de la función mi_cabecera(), imagenes menu,osea todo el código html
Una vez que declarás una función, la podés usar en cualquier lugar, en cualquier momento, siempre que estés dentro de etiquetas php (<?php ?>), sino no lo interpreta como código php y no lo evalua como tal.
  #3 (permalink)  
Antiguo 30/11/2013, 09:12
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: No se si me quedan muy claras las funciones.

Vamos por partes. Una función es un conjunto de instrucciones que permiten procesar las variables para obtener un resultado determinado. Ahora bien como queremos que se comporte cada función depende de nosotros.

Si tengo una función que me dice si un numero es impar o no depende de mi como programador decir que valores aceptará y como mostrará la información. Me explico

Código PHP:
Ver original
  1. function numero_impar( $numero = 1 ){
  2.     if( $numero % 2 == 0 ){
  3.         echo "{$numero} es par";
  4.     } else {
  5.         echo "{$numero} es impar";
  6.     }
  7. }
  8.  
  9. numero_impar(2); //muestra 2 es par

Pero que pasa si quiero tomar una decisión basada en si un número es impar o no? La anterior función no nos servirá ya que imprime algo en pantalla. Así que tocaría modificarla de esta manera:

Código PHP:
Ver original
  1. function numero_impar( $numero = 1 ){
  2.     if( $numero % 2 == 0 ){
  3.         return false; //colocamos false ya que la función (semanticamente hablando) diría algo como: verificar si un numero es impar
  4.     } else {
  5.         return true;
  6.     }
  7. }
  8.  
  9. if(numero_impar(2)){
  10.     //operaciones si un número es impar
  11. } else {
  12.     //operaciones si un número es par
  13. }

Algo tan sutil como eso cambia el comportamiento y el funcionamiento de la misma función. Como exprese al principio, lo mas importante es ver que queremos lograr con una función y acorde a ello podemos saber como va a funcionar.

Siguiendo el mismo ejemplo, es posible no declarar parámetros en una función y podemos hacer lo siguiente:

Código PHP:
Ver original
  1. function numero_impar(){
  2.     $arg_list = func_get_args();
  3.     $arrayEspar = array();
  4.     $arrayEsimpar = array();
  5.     foreach( $arg_list as $k=>$valor ){
  6.         if( $valor % 2 == 0 ){
  7.             $arrayEspar[] = $valor;
  8.         } else {
  9.             $arrayEsimpar[] = $valor;
  10.         }
  11.     }
  12.     return array('numerosPares'=>$arrayEspar, 'numerosImpares'=>$arrayEsimpar);
  13. }
  14.  
  15. var_dump( numero_impar(2,3,5,122,827,65,10) );
  16.  
  17. /*retorna:
  18. array(2) { ["numerosPares"]=> array(3) { [0]=> int(2) [1]=> int(122) [2]=> int(10) } ["numerosImpares"]=> array(4) { [0]=> int(3) [1]=> int(5) [2]=> int(827) [3]=> int(65) } }
  19. */

Aunque claro el ejemplo es un poco burdo, pero creo que sirve para explicar la funcionalidad de func_get_args.

Por ultimo una función no esta atada a "solo código php". Por ejemplo WordPress, en el index de su plantilla usa funciones que invocan el header, el contenido y el footer de la plantilla. Y dependiendo de los casos esto puede ser útil

Código PHP:
Ver original
  1. <?php
  2. function muestra_saludo($nombre){
  3.     echo "Hola <p>{$nombre}</p>"; //Puesdes colocar el codigo html que creas mas conveniente. Pero como digo solo en ocasiones, ya que a veces es mejor usar include
  4. }
  5. ?>
  6. <!DOCTYPE html>
  7. <html>
  8.     <head></head>
  9.     <body>
  10.         <?php muestra_saludo('rodrypaladin') ?>
  11.     </body>
  12. </html>

Espero te sirva mi explicación

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #4 (permalink)  
Antiguo 30/11/2013, 09:14
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: No se si me quedan muy claras las funciones.

Entonces en mi 2º ejemplo donde no declaro y lo dejo así par_impar() { .... porque no funciona ?? si le estoy declarando luego cuando pongo en el idnex par_impar( $numero = 33 );
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #5 (permalink)  
Antiguo 30/11/2013, 09:19
Avatar de Cuervoo  
Fecha de Ingreso: octubre-2013
Mensajes: 165
Antigüedad: 10 años, 6 meses
Puntos: 43
Respuesta: No se si me quedan muy claras las funciones.

Porque en el segundo ejemplo no le estás diciendo que recibe un valor, como lo tenés en el primero está bien.
  #6 (permalink)  
Antiguo 30/11/2013, 09:24
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: No se si me quedan muy claras las funciones.

Cita:
Iniciado por rodrypaladin Ver Mensaje
Entonces en mi 2º ejemplo donde no declaro y lo dejo así par_impar() { .... porque no funciona ?? si le estoy declarando luego cuando pongo en el idnex par_impar( $numero = 33 );
Porque para eso son los parámetros. Como aparece en mi ejemplo func_get_args recibe todos los parametros de una función. Que es un parametro? es una variable que se le pasa a una funcion y que es la que afecta el comportamiento de la misma.

Por esa razón, y dependiendo de la funcion, es necesario declarar parametros. Si solo quieres ver si un solo numero es par o no debes de decirle a la funcion, mira tu vas a recibir esta variable y quiero que hagas esto con ella. Asi la funcion no se pierde y sabe como debe de actuar.

Tomando el ejemplo del colega @Cuervoo

Código PHP:
Ver original
  1. function esAno() {
  2.     echo 'Estamos en el año: '.date('Y);
  3. }

Es util si queremos saber en que año estamos actualmente.

Pero que pasa si queremos saber el año de una fecha (cualquiera que sea)?

Código PHP:
Ver original
  1. function esAno($fecha) {
  2.     echo 'Estamos en el año: '.date('Y', strtotime($fecha));
  3. }

De esa manera le decimos a una función que va a recibir una variable fecha y que muestre el año de la misma.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #7 (permalink)  
Antiguo 30/11/2013, 09:50
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: No se si me quedan muy claras las funciones.

De esta manera si que funciona a la perfección

Código PHP:
Ver original
  1. <?php
  2.      
  3.     function par_impar($numero) {
  4.     if($numero%2==0) {
  5.     echo "El numero $numero es par <p>"; }
  6.     else { echo "El numero $numero es impar <p>"; }
  7.     }
  8.      
  9.     ?>

Arriba solo le asigno la variable $numero.

Código PHP:
Ver original
  1. <?php
  2.      
  3.     include("utilidades.php");
  4.      
  5.     par_impar(38);
  6.      
  7.     ?>


Y en la llamada a la función le asigno solamente el valor.

Lo he probado con un formulario y funciona con cualquier numero que le pase :) Pueden verlo en http://rodrys.com/pruebaphp/formpar.php
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #8 (permalink)  
Antiguo 30/11/2013, 09:59
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: No se si me quedan muy claras las funciones.

Ahora puedes hacer una verificacion de que si el valor ingresado es un número

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #9 (permalink)  
Antiguo 30/11/2013, 10:41
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: No se si me quedan muy claras las funciones.

una funcion es algo en lo que se basa el funcionamiento de php.
por ejemplo cuando usas un strpos($string,$find);
eso es una funcion preescrita de php.
Pero tambien se te permite generar las propias para suplir las deficiencias del sistema.
Las funciones reciben parametros, unos son opcionales pero otros son necesarios.
Si no introduces los que son necesarios php lo interpreta como un fallo.
Por ejemplo
Cita:
<?php

function par_impar($numero) {
if($numero%2==0) {
echo "El numero $numero es par <p>"; }
else { echo "El numero $numero es impar <p>"; }
}

?>
eso si haces lo que dijiste te dara error
Pero si usas eso mismo definiendo un default no te lanzara error por que tomara el default como el parametro
Cita:
<?php

function par_impar($numero = 4) {
if($numero%2==0) {
echo "El numero $numero es par <p>"; }
else { echo "El numero $numero es impar <p>"; }
}

?>
De este modo si instancias a par_impar();
te dara como resultado
Cita:
El numero 4 es par <p>
pero si la instanciaras pasandole un valor, tomaria el valor que le has pasado en vez de el de por defecto

Última edición por Dalam; 30/11/2013 a las 10:51
  #10 (permalink)  
Antiguo 30/11/2013, 11:56
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: No se si me quedan muy claras las funciones.

Macho, no vas a aprender a programar preguntando este tipo de cosas en un foro. Coge o busca un libro de introducción a la programación, donde explican qué es un tipo de dato, qué es una estructura condicional, qué es un algoritmo, etcétera.
Esas bases se aprenden leyendo, porque son muy sencillas de entender si le dedicas un poco de tiempo y ganas. Y cuando empieces con cosas más complicadas, entonces usa el foro.

Empieza por un lenguaje como C, que no es orientado a objetos y es de tipado duro. Así en cuanto algo no esté bien, lo sabrás. Si empiezas por PHP te meteran conceptos que no son de iniciación a la programación y te liarás.
  #11 (permalink)  
Antiguo 30/11/2013, 14:18
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: No se si me quedan muy claras las funciones.

Cita:
Iniciado por marlanga Ver Mensaje
Macho, no vas a aprender a programar preguntando este tipo de cosas en un foro. Coge o busca un libro de introducción a la programación, donde explican qué es un tipo de dato, qué es una estructura condicional, qué es un algoritmo, etcétera.
Esas bases se aprenden leyendo, porque son muy sencillas de entender si le dedicas un poco de tiempo y ganas. Y cuando empieces con cosas más complicadas, entonces usa el foro.

Empieza por un lenguaje como C, que no es orientado a objetos y es de tipado duro. Así en cuanto algo no esté bien, lo sabrás. Si empiezas por PHP te meteran conceptos que no son de iniciación a la programación y te liarás.
Primero, si te dignas a leer la creación del hilo verás que es que simplemente tengo unas dudas sobre las funciones, no significa que no sepa absolutamente nada de ellas. He sabido construirla y llamarla funcionando bien, pero aun a sí, he tenido dudas con ellas. No vengo aquí a buscar profesores particulares para que me expliquen las cosas de 0, simplemente busco respuestas a mis dudas.

Segundo, en los 3 años y 7 meses que llevo en ForosDelWeb no he visto ninguna sola notificación ni norma que prohiba, ni esté mal visto preguntar cosas que estén dentro de un nivel de iniciación, por lo que creo que tienes que respetar absolutamente todas las preguntas y dudas que tengan los usuarios. Cada uno aprende a su ritmo. Y si no te gusta simplemente no te dignes a contestar al hilo. Ahorrarás tiempo con ese tipo de contestaciones y yo ahoraré tiempo por responderte. Aun a sí, pregunté a mis compañeros moderadores sobre este tipo de preguntas y de momento me han animado a seguir haciendolas.

Tercero, antes de empezar con la idea de aprender PHP, el único requisito que he visto que es casi necesario para ir empezando es tener nociones de HTML, por lo que si se puede aprender PHP sin saber C u otro lenguaje de programación no obligues a los demás a aprenderlo.
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #12 (permalink)  
Antiguo 30/11/2013, 14:29
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: No se si me quedan muy claras las funciones.

"Simplemente" tienes dudas con las funciones, tu primera pregunta fue acerca de su utilidad. Bien. Es como pedir consejo para escribir un libro, que alguien te aconseje que antes aprendas a leer, y que tú le respondas que simplemente no conoces las vocales.

Aunque no te lo creas, lo que te dije es el mejor consejo que se te ha dado en todo el hilo, si tu objetivo es iniciarte en la programación. Saber mover las piezas del ajedrez no es saber jugar al ajedrez.

Para programar en PHP, antes hay que saber programar. Que sepas HTML no te ayudará nada.

PHP es un lenguaje pensado para generar HTML, por eso no te lo recomiendo. Tu objetivo es aprender a programar, y cuando sepas programar, aprender a utilizar código para generar HTML. Se puede utilizar PHP para aprender a programar también, pero no te lo recomiendo porque ya te dije que es de tipado blando, eso hará que cometas errores y no te des ni cuenta.

Si no quieres hacerme caso, pues bueno.

Etiquetas: html, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:26.