Autor Tema: Ejercicio CU00836B ejemplos funciones en php leer y escribir datos a archivos  (Leído 7286 veces)

JuanMontaña

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 87
    • Ver Perfil
La verdad es que no se como llevar a cabo los ejercicios propuestos en la entrega CU00836B del curso, he visto ejemplos pero son ejecutados con formularios al decir el ejercicio que con funciones quede algo loco y lo sierto es que no se ni como empezar a desarrollarlos
« Última modificación: 10 de Febrero 2015, 08:00 por Mario R. Rancel »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Re:(CU00836B) tengo problemas con la leccion
« Respuesta #1 en: 06 de Febrero 2015, 20:34 »
Hola, empieza por realizar el apartado a).

Crea las siguientes funciones en PHP:

a) Una función (tipo procedimiento, no hay valor devuelto) denominada escribirTresNumeros que reciba tres números enteros como parámetros y proceda a escribir dichos números en tres líneas en un archivo denominado datosEjercicio.txt. Si el archivo no existe, debe crearlo.


Para realizarlo tienes que repasar:

- El concepto de función y parámetros que recibe una función, que se ve en la entrega CU00827B. Fíjate en esta entrega en ejemplo1.php cómo se declara la función y cómo se llama después para probarla.

- La apertura y escritura de archivos que se ve en la entrega CU00836B


Puedes probar antes de hacer apertura y escritura en archivo a mostrar lo que se debería escribir en archivo por pantalla, así vas paso a paso.

Saludos.

JuanMontaña

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 87
    • Ver Perfil
Re:(CU00836B) tengo problemas con la leccion
« Respuesta #2 en: 10 de Febrero 2015, 04:05 »
a) Una función (tipo procedimiento, no hay valor devuelto) denominada escribirTresNumeros que reciba tres números enteros como parámetros y proceda a escribir dichos números en tres líneas en un archivo denominado datosEjercicio.txt. Si el archivo no existe, debe crearlo.

Código: [Seleccionar]
<?php

function escribirTresNumeros($num1,$num2,$num3){

echo 'Que comience la funcion<BR/><BR/>Se han escrito los numeros:<BR/><BR/>';
echo $num1.'<BR/>';
echo $num2.'<BR/>';
echo $num3.'<BR/>';


$fp fopen("datosEjercicioA.txt""a");
fputs($fp,$num1."\n".$num2."\n".$num3."\n"); 
fclose($fp);


}

escribirTresNumeros(1000,2000,3000);



?>

Buenas... muchisimas garcias por su respuesta este es el codigo del primer ejercicio la verdad no se sie ste bien.
El tema me ha parecido un poco duro se me dificulto pero ya creo estar entendiendolo aunque la verdad es que en la leccion no muestran ningun ejemplo del tipo de los ejercicios.

debido a esto el segundo ya se me dificulto bastante ya intente

b) Una función denominada obtenerSuma (tipo función, devolverá un valor numérico) que reciba una ruta de archivo como parámetro, lea los números existentes en cada línea del archivo, y devuelva la suma de todos esos números.

Código: [Seleccionar]
<?php
function obtenersuma(rutadearchivo.txt)
{  
$tmp='rutadearchivo.txt';
return $tmp;

$fp fopen("rutadearchivo.txt""r+");
     
$fp2 fgets($fp);
    
fclose($fp);  
}
echo 
"<BR/>La sumatoria de los datos es" obtenersuma('rutadearchivo.txt');
?>


yo sse que este codigo esta de locos y pido disculpas la verdad lo he modificado tantas veces tratando en estos momentos estoy ya exhausto porfavor pido su orientacion

muchisimas garcias por su ayuda. hasta luego
« Última modificación: 10 de Febrero 2015, 08:29 por Mario R. Rancel »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Hola, el código del apartado a) está correcto, aunque fíjate que al hacer la apertura en modo a:

$fp = fopen("datosEjercicioA.txt", "a");

 cada vez que ejecutes el código se van a escribir nuevas líneas. Si en vez de escribir nuevas líneas queremos que se reescriba el archivo lo haríamos abriendo en modo w por ejemplo:

$fp = fopen("datosEjercicioA.txt", "w");

El código del apartado b) tiene varios fallos, en algunos casos fallan los conceptos vistos en temas previos del curso que te recomiendo repases.

function obtenersuma(rutadearchivo.txt) está mal escrito, tienes que escribir function obtenerSuma($rutadearchivo)

Además tienes un return y después del return ya no tiene sentido que incluyas más código, el return se pone al final de una función para devolver un resultado.

El código para el apartado b) tendría que ser este (o similar, puedes adaptarlo):

Código: [Seleccionar]
<?php
function obtenerSuma($rutadearchivo) {  
$sumatorio 0;
$fp fopen($rutadearchivo"r");
    
$i 0;
while(!feof($fp)) {
$linea fgets($fp);
$sumatorio $sumatorio+$linea;
if (!feof($fp)) {echo 'El dato leido en la linea '.$i' es '.$linea ' y el sumatorio por ahora vale '.$sumatorio.'<br />';}
$i=$i+1;

    
fclose($fp);  
return $sumatorio;
}
echo 
"<BR/>La sumatoria de los datos en el archivo datosEjercicioA es: " obtenerSuma('datosEjercicioA.txt');
?>

Tienes que repasar todo lo que hace este código según lo explicado en el curso y entenderlo paso a paso para poder seguir avanzando.

Saludos

JuanMontaña

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 87
    • Ver Perfil
Buenas.

Muchísimas gracias Mario por tu ayuda. Aqui esta el codigo del punto c)

c) Una función denominada obtenerArrNum (tipo función, devolverá un array de valores numéricos) que reciba una ruta de archivo como parámetro, lea los números existentes en cada línea del archivo, y devuelva un array cuyo índice 0 contendrá el número existente en la primera línea, cuyo índice 1 contendrá el número existente en la segunda línea y así sucesivamente.

Código: [Seleccionar]
<?php
function obtenerArray($rutadearchivo) {  
$miarray = array();

$fp fopen($rutadearchivo"r");
    $i 0;
while(!feof($fp)) {
   

$miarray[$i] = fgets($fp);

$i=$i+1;

    
fclose($fp);  
return $miarray;
}
$miNuevoArray obtenerArray('rutadearchivo.txt');

echo 
$miNuevoArray[0].'<BR/>'.'<BR/>';
echo 
$miNuevoArray[1].'<BR/>'.'<BR/>';
echo 
$miNuevoArray[2].'<BR/>'.'<BR/>';
echo 
$miNuevoArray[3].'<BR/>'.'<BR/>';

?>




¿Está correcto?
« Última modificación: 11 de Febrero 2015, 17:15 por Mario R. Rancel »

JuanMontaña

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 87
    • Ver Perfil
y aqui esta el ultimo si estan correctos?.. muchas gracias

d) Crea código php donde a través de la función escribirTresNumeros escribas en el fichero los números 2, 8, 14. Luego, mediante la función obtenerSuma muestra por pantalla el resultado de sumar los números existentes en el archivo. Finalmente, mediante la función obtenerArrNum obtén el array, recórrelo y muestra cada uno de los elementos del array.

Código: [Seleccionar]
<?php

function escribirTresNumeros($num1,$num2,$num3){

echo 'Que comience la funcion<BR/><BR/>Se han escrito los numeros:<BR/><BR/>';
echo $num1.'<BR/>';
echo $num2.'<BR/>';
echo $num3.'<BR/>';


$fp fopen("ejercicio4.txt""w");
fputs($fp,$num1."\n".$num2."\n".$num3."\n"); 
fclose($fp);


}

escribirTresNumeros(2,8,14);


function 
obtenerSuma($ejercicio4) {  
$sumatorio 0;
$fp fopen($ejercicio4"r");
    
$i 0;
while(!feof($fp)) {
$linea fgets($fp);
$sumatorio $sumatorio+$linea;
if (!feof($fp)) {echo 'El dato leido en la linea '.$i' es '.$linea ' y el sumatorio por ahora vale '.$sumatorio.'<br />';}
$i=$i+1;

    
fclose($fp);  
return $sumatorio;
}
echo 
"<BR/>La sumatoria de los datos en el archivo datosEjercicioA es: " obtenerSuma('ejercicio4.txt')."<BR/>";


function 
obtenerArray($ejercicio4) {  
$miarray = array();

$fp fopen($ejercicio4"r");
    $i 0;
while(!feof($fp)) {
   

$miarray[$i] = fgets($fp);

$i=$i+1;

    
fclose($fp);  
return $miarray;
}
$miNuevoArray obtenerArray('ejercicio4.txt');

echo 
$miNuevoArray[0].'<BR/>'.'<BR/>';
echo 
$miNuevoArray[1].'<BR/>'.'<BR/>';
echo 
$miNuevoArray[2].'<BR/>'.'<BR/>';
echo 
$miNuevoArray[3].'<BR/>'.'<BR/>';

?>

« Última modificación: 11 de Febrero 2015, 17:15 por Mario R. Rancel »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Hola, el apartado c) está correcto, pero para recorrer un array siempre es recomendable usar un bucle, no hacerlo "a mano". El código quedaría así:

Código: [Seleccionar]
<?php
function obtenerArray($rutadearchivo) {  
$miarray = array();
$fp fopen($rutadearchivo"r");
$i 0;
while(!feof($fp)) {
   
$miarray[$i] = fgets($fp);
$i=$i+1;

    
fclose($fp);  
return $miarray;
}
$miNuevoArray obtenerArray('datosEjercicioA.txt');
for (
$j=0$j count($miNuevoArray); $j++){
echo 
$miNuevoArray[$j].'<br/>'.'<br/>';
}
?>

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
El apartado c) también está correcto aunque te haría algunas recomendaciones:

Mantén todas las funciones agrupadas (por ejemplo al principio del archivo) y el código escríbelo después. Sería como esto:

Código: [Seleccionar]
<?php
function escribirTresNumeros($num1,$num2,$num3){
echo 'Que comience la funcion<BR/><BR/>Se han escrito los numeros:<BR/>';
echo $num1.'<BR/>';
echo $num2.'<BR/>';
echo $num3.'<BR/>';
$fp fopen("ejercicio4.txt""w");
fputs($fp,$num1."\n".$num2."\n".$num3."\n"); 
fclose($fp);
}

function 
obtenerSuma($ejercicio4) {  
$sumatorio 0;
$fp fopen($ejercicio4"r");
    
$i 0;
while(!feof($fp)) {
$linea fgets($fp);
$sumatorio $sumatorio+$linea;
if (!feof($fp)) {echo 'El dato leido en la linea '.$i' es '.$linea ' y el sumatorio por ahora vale '.$sumatorio.'<br />';}
$i=$i+1;

    
fclose($fp);  
return $sumatorio;
}

function 
obtenerArray($ejercicio4) {  
$miarray = array();
$fp fopen($ejercicio4"r");
$i 0;
while(!feof($fp)) {
$miarray[$i] = fgets($fp);
$i=$i+1;

    
fclose($fp);  
return $miarray;
}
escribirTresNumeros(2,8,14);
echo 
"<BR/>La sumatoria de los datos en el archivo datosEjercicioA es: " obtenerSuma('ejercicio4.txt')."<br/><br/>";
$miNuevoArray obtenerArray('ejercicio4.txt');
for (
$j=0$j count($miNuevoArray); $j++){
echo 
$miNuevoArray[$j].'<br/>';
}
?>

Otra recomendación es que sacaras las instrucciones echo fuera de todas las funciones (llevarlas a la parte final donde escribes el código), es decir, una función que escribe a un archivo debe limitarse a esto, no debe mostrar nada por pantalla, lo mismo si suma datos y devuelve la suma, debe limitarse a devolver la suma. Ahora mismo no pasa nada, pero sería bueno que vayas acostumbrándote a mantener buenas prácticas y buena ordenación del código.

Saludos y adelante

JuanMontaña

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 87
    • Ver Perfil
ok mario muchisimas gracias por tus consejos y ayuda.

 

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".