Autor Tema: ejercicio funciones PHP CU00827B (diferenciar tipo función y tipo procedimiento)  (Leído 10610 veces)

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Tengo que crear una función que reciba cinco números enteros como parámetros y muestre por pantalla el resultado de sumar los cinco números (tipo procedimiento, no hay valor devuelto).
Lo que yo he escrito es esto:
Código: [Seleccionar]
<html>
<head><title>Ejemplo aprenderaprogramar.com</title></head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<?php
//Funcion procedimiento
function sumacincosin($resultado) {
echo $resultado;
}
$n1 1;
$n2 2;
$n3 3;
$n4 4;
$n5 5;
 
sumacincosin(n1 n2 n3 n4 n5);
echo "</br>";
?>

</body>
</html>

Pero me muestra un 0 por pantalla... no se muy bien donde esta el fallo
Gracias
« Última modificación: 28 de Septiembre 2014, 10:22 por Alex Rodríguez »

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Duda con una funcion PHP
« Respuesta #1 en: 27 de Septiembre 2014, 16:14 »
vale, ya funciona :)

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Duda con una funcion PHP
« Respuesta #2 en: 27 de Septiembre 2014, 18:22 »
¿Puedes poner el código corregido? Puede servirle de ayuda a otras personas...

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:Duda con una funcion PHP
« Respuesta #3 en: 27 de Septiembre 2014, 18:30 »
El enunciado es este (Entrega 23 del curso de PHP)
Crear las siguientes funciones en PHP y código para comprobar su funcionamiento:

a) Una función que reciba cinco números enteros como parámetros y muestre por pantalla el resultado de sumar los cinco números (tipo procedimiento, no hay valor devuelto).

b) Una función que reciba cinco números enteros como parámetros y devuelva el resultado de sumar los cinco números (tipo función, hay un valor devuelto). Asigna el resultado de una invocación a la función con los números 2, 5, 1, 8, 10 a una variable de nombre $tmp y muestra por pantalla el valor de la variable.

c) Una función que reciba como parámetros el valor del radio de la base y la altura de un cilindro y devuelva el volumen del cilindro, teniendo en cuenta que el volumen de un cilindro se calcula como Volumen = númeroPi * radio * radio * Altura siendo númeroPi = 3.1416 aproximadamente.


El codigo completo para este ejercicio creo que este (espero no estar muy equivocado :P):
Código: [Seleccionar]
<html>
<head><title>Ejemplo aprenderaprogramar.com</title></head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<?php
//Funcion procedimiento
function sumacincosin($resultado) {
echo $resultado;
}
$n1 1;
$n2 2;
$n3 3;
$n4 4;
$n5 5;
 
sumacincosin($n1 $n2 $n3 $n4 $n5);
echo "</br>";
//Funcion con valor devuelto
function sumacinco($n1$n2$n3$n4$n5) {
$tmp $n1 $n2 $n3 $n4 $n5;
return $tmp;
}
echo sumacinco(251810);
echo "</br>";
//Función volumen cilindro
function volumencilindro($radiobase$altura) {
$numeroPI 3.1416;
$volmen $numeroPI $radiobase $radiobase *$altura;
echo "El volumen del cilindro es: ";
return $volmen;
}
echo volumencilindro(24);
echo "</br>";

?>

</body>
</html>

Espero que sirva :)

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Duda con una funcion PHP
« Respuesta #4 en: 27 de Septiembre 2014, 21:28 »
Te comento:

a) Una función que reciba cinco números enteros como parámetros y muestre por pantalla el resultado de sumar los cinco números (tipo procedimiento, no hay valor devuelto).

Tu código no es correcto. ¿Por qué? Porque la función sumacincosin que tú has definido no recibe 5 números como parámetros.

Este código:

Código: [Seleccionar]
function sumacincosin($resultado) {
echo $resultado;
}

no recibe 5 parámetros y calcula la suma. Simplemente recibe algo y lo muestra por pantalla con la instrucción echo. Pero da igual que le pases la cadena "camilla" a que le pases la suma de 3 números a que le pases la suma de 5, lo único que hace es aplicar la función echo sobre lo que recibe. El resto del código que has escrito está fuera de function (...) { ... } por lo que no pertenece a la función.

La solución correcta sería algo así:

Código: [Seleccionar]
function sumacincosin($n1, $n2, $n3, $n4, $n5) {
$tmp = $n1 + $n2 + $n3 + $n4 + $n5;
echo 'El resultado de sumar los cinco números recibidos es'.$tmp;}

Esta función es tipo procedimiento porque no existen una sentencia return que devuelva un resultado.


b) Una función que reciba cinco números enteros como parámetros y devuelva el resultado de sumar los cinco números (tipo función, hay un valor devuelto).

Tu código es correcto.

c) Una función que reciba como parámetros el valor del radio de la base y la altura de un cilindro y devuelva el volumen del cilindro.

Tu código digamos que está bien planteado pero sería mejor que fuera así:

Código: [Seleccionar]
function volumencilindro($radiobase, $altura) {
$numeroPI = 3.1416;
$volmen = $numeroPI * $radiobase * $radiobase *$altura;
return $volmen;
}

¿Por qué? Porque el enunciado no dice que la función deba mostrar ningún mensaje, sino simplemente que debe devolver el volumen del cilindro. Y porque es la forma habitual de trabajar en programación: una función devuelve un resultado sin mensajes.

Supón que quisieras mostrar un mensaje. Para ello debes llamar a la función desde fuera de ella, por ejemplo en este código lo puedes ver:

Código: [Seleccionar]
<?php
function volumencilindro($radiobase$altura) {
$numeroPI 3.1416;
$volmen $numeroPI $radiobase $radiobase *$altura;
return $volmen;
}

//La función ya terminó, estamos fuera de ella
echo 'El volumen del cilindro de base 2 metros y altura 3 metros es '.volumencilindro(2,3).' metros';

Hay otra cosa que debes intentar hacer, que es usar sintaxis camelCase para el nombre de funciones. Esto significa que se empieza con minúsculas y cada vez que viene una nueva palabra se intercala una minúsculas. Por ejemplo volumenCilindro ó sumaCincoNumeros en lugar de volumencilindro o sumacinconumeros.

Saludos

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:ejercicio funciones PHP CU00827B
« Respuesta #5 en: 27 de Septiembre 2014, 21:29 »
Por cierto que es el ejercicio CU00827B y no el 23B si no me equivoco  :-X

erniker

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Vale, entones el codigo correcto de este ejercicio completo seria algo asi:
Código: [Seleccionar]
<html>
<head><title>Ejemplo aprenderaprogramar.com</title></head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<?php
//Funcion procedimiento
function sumaCincoSin($n1$n2$n3$n4$n5) {
$tmp $n1 $n2 $n3 $n4 $n5;
echo 'El resultado de sumar los cinco números recibidos es '.$tmp;
}
sumacincosin(12345);
echo "</br>";
//Funcion con valor devuelto
function sumaCinco($n1$n2$n3$n4$n5) {
$tmp $n1 $n2 $n3 $n4 $n5;
return $tmp;
}
echo 'El resultado de sumar los cinco números recibidos es ' .sumaCinco(251810);
echo "</br>";
//Función volumen cilindro
function volumenCilindro($radiobase$altura) {
$numeroPI 3.1416;
$volmen $numeroPI $radiobase $radiobase *$altura;
return $volmen;
}
echo 'El volumen del cilindro de base 2 metros y altura 3 metros es '.volumencilindro(2,3).' metros';
echo "</br>";
?>

</body>
</html>

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Sí, ahora está bien. Lo que te recomendaría es que separes por un lado las funciones y por otro lado el código para una mejor organización. Quedaría así:

Código: [Seleccionar]
<?php
//FUNCIONES
//Función tipo procedimiento
function sumaCincoSin($n1$n2$n3$n4$n5) {
$tmp $n1 $n2 $n3 $n4 $n5;
echo 'El resultado de sumar los cinco números recibidos es '.$tmp;
}

//Funcion con valor devuelto
function sumaCinco($n1$n2$n3$n4$n5) {
$tmp $n1 $n2 $n3 $n4 $n5;
return $tmp;
}

//Función volumen cilindro
function volumenCilindro($radiobase$altura) {
$numeroPI 3.1416;
$volmen $numeroPI $radiobase $radiobase *$altura;
return $volmen;
}
//FIN FUNCIONES
?>


<html>
<head><title>Ejemplo aprenderaprogramar.com</title></head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<body>
<?php
echo "Pruebas de la funcion sumaCincosin: <br/>";
sumacincosin(12345);
echo "<br/>";
                
sumacincosin(246810);
echo "<br/><br/>";
echo "Pruebas de la funcion sumaCinco: <br/>";
echo 'El resultado de sumar los cinco números recibidos es ' .sumaCinco(251810);
echo "</br>";
echo 'El resultado de sumar los cinco números recibidos es ' .sumaCinco(510191810);
echo "<br/><br/>";
echo "Pruebas de la funcion volumenCilindro: <br/>";
echo 'El volumen del cilindro de base 2 metros y altura 3 metros es '.volumencilindro(2,3).' metros';
echo "<br/>";

echo 'El volumen del cilindro de base 5 metros y altura 3 metros es '.volumencilindro(5,3).' metros';
echo "<br/>";
?>

</body>
</html>

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".