Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: pedro,, en 07 de Marzo 2016, 22:36

Título: PHP Funciones que reciben arrays como parámetros procedimientos Ejemplo CU0827B
Publicado por: pedro,, en 07 de Marzo 2016, 22:36
Hola, dejo la solución del ejercicio CU0827B del tutorial php desde cero.

Citar
EJERCICIO
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.

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>Ejercicio. CU00827B</title>
<meta charset="utf-8">
</head>
<body>
<h1>Apartado a</h1>
<?php 
function sumaNumeros($numero){
$msg 'El resultado de sumar: ';
$resultado 0;
for($i 0$i count($numero); $i++) {
$resultado += $numero[$i];
if($i < (count($numero)-1)){
$msg $msg $numero[$i] . ' + ';
} else {
$msg $msg $numero[$i] . ' = ' $resultado;
}
}
echo ($msg);
}
sumaNumeros([371142]);
?>

<hr>
<h1>Apartado b</h1>
<?php
function returnSumaNumeros($numero){
$msg 'El resultado de sumar: ';
$resultado 0;
for($i 0$i count($numero); $i++) {
$resultado += $numero[$i];
if($i < (count($numero)-1)){
$msg $msg $numero[$i] . ' + ';
} else {
$msg $msg $numero[$i] . ' = ' $resultado;
}
}
return $msg;
}
$tmp returnSumaNumeros([251810]);
echo ($tmp);
?>

<hr>
<h1>Apartado c</h1>
<?php
function volumenCilindro($radio$altura) {
return 'El volumen del cilindro con radio=' $radio ' y altura=' $altura ' es ' . (3.1416 $radio $radio $altura);
}
echo (volumenCilindro(24));
?>

</body>
</html>

http://aprendehtml.byethost3.com/CU00827B/ejercicioCU00827B.php

Saludos.
Título: Re:PHP Funciones que reciben arrays como parámetros procedimientos Ejemplo CU0827B
Publicado por: Alex Rodríguez en 09 de Marzo 2016, 17:44
Hola Pedro con este ejercicio me ocurre lo mismo que con uno anterior, me sale un error

Parse error: syntax error, unexpected '[', expecting ')' in

Situado en la línea:

sumaNumeros([3, 7, 11, 4, 2]);

o también en

$tmp = returnSumaNumeros([2, 5, 1, 8, 10]);

Se puede corregir haciendo:

sumaNumeros(array(3, 7, 11, 4, 2));

O también de esta manera:

$tmp = returnSumaNumeros($dato);
echo ($tmp);

Como ya hemos comentado en unos casos (en algunos servidores) da error y en otros no, depende de la versión php que estemos usando.

En el apartado a) haz hecho que los cinco números se envíen en un array. Realmente el ejercicio no indica expresamente que se use un array y quizás la solución más normal es tener cinco parámetros como se comenta en https://www.aprenderaprogramar.com/foros/index.php?topic=1372.0 aunque enviarlos en un array también está bien

En el apartado b) si se trata de una función es más normal que una función devuelva un valor, en este caso un valor numérico, en lugar de una cadena. Puedes verlo en el hilo que te he citado antes

Con el apartado c) ocurre lo mismo: una función normalmente devolvería el volumen como valor numérico, no una cadena informando del volumen del cilindro. El motivo para ello es que el valor numérico te permitirá operar, mostrar mensajes, etc. mientras que una cadena no te da esa funcionalidad.

Saludos
Título: Re:PHP Funciones que reciben arrays como parámetros procedimientos Ejemplo CU0827B
Publicado por: pedro,, en 09 de Marzo 2016, 20:50
Hola Alex.

Los arrays a partir de ahora los creare de distinta forma para que no haya problemas con las versiones.

Lo de la función lo tendré en cuenta para próximas entregas, quise dejar claro el mensaje y podría haberlo hecho desde fuera de la función.

El código corregido quedaría de la siguiente forma:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>Ejercicio. CU00827B</title>
<meta charset="utf-8">
</head>
<body>
<h1>Apartado a</h1>
<?php 
$numeros = array(251810);
sumaNumeros($numeros);
function sumaNumeros($numero){
$msg 'El resultado de sumar: ';
$resultado 0;
for($i 0$i count($numero); $i++) {
$resultado += $numero[$i];
if($i < (count($numero)-1)){
$msg $msg $numero[$i] . ' + ';
} else {
$msg $msg $numero[$i] . ' = ' $resultado;
}
}
echo ($msg);
}
?>

<hr>
<h1>Apartado b</h1>
<?php
$numeros = array(251810);
$tmp returnSumaNumeros($numeros);
$msg 'El resultado de sumar: ';
for($i 0$i count($numeros); $i++) {
if($i < (count($numeros)-1)){
$msg $msg $numeros[$i] . ' + ';
} else {
$msg $msg $numeros[$i] . ' = ';
}
}
echo ($msg $tmp);
function returnSumaNumeros($numero){
$resultado 0;
for($i 0$i count($numero); $i++) {
$resultado += $numero[$i];
}
return $resultado;
}
?>

<hr>
<h1>Apartado c</h1>
<?php
function volumenCilindro($radio$altura) {
return 3.1416 $radio $radio $altura;
}
echo ('El volumen del cilindro es = ' .  volumenCilindro(24));
?>

</body>
</html>

Gracias por corregir.

Saludos.