Autor Tema: PHP. Leer y escribir archivos de texto. fopen, fgets, fputs, fclose... CU00836B  (Leído 3734 veces)

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Hola. Hago entrega del ejercicio CU00836B del curso básico de programación web con PHP usando Notepad++ como editor. Función fopen (modo), fgets, fputs, fclose y feof.

Enlace:http://paramonso.byethost7.com/Ejercicio36(CU00836B).php

Codigo HTML, PHP :

Código: [Seleccionar]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<title>PHP Desde cero aprenderaprogramar.com</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="generator" content="Geany 1.27" />
<style type="text/css">
      body{  background-color:yellow; color:white;}
      h1, h2{
  text-align:center;
  color:green;
  margin:0;
  padding:0;
  }
      div{
text-align:left;
background-color:black;
height:350px;
width:500px;
padding:10px;
margin:10px auto;
}
p{
text-align:center;
font-weight: bold;
font-size:20px;
padding:1px;
margin:0px auto;
}
</style>
</head>

<body>

  <h1>Ejercicio36(CU00836B).php</h1>
<h2>Leer y escribir archivos de texto con PHP.<br/>
Función fopen (modo), fgets, fputs, fclose y feof. </h2>

<?php

echo '<div><br/>';

// Llamada a la funcion apartado a)
$num =array(121,232,535.55 );
$fp fopen("datosEjercicio.txt""w");
 
escribirTresNumeros($num,$fp);
fclose($fp);

// Llamada a la funcion apartado b)
$fp fopen("datosEjercicio.txt""r");
$resultado=obtenerSuma($fp,$TotalSuma);
fclose($fp);
echo 
"<p> Apartado b)<br/> 
El resultado de la suma es = "
.$resultado."<br/>
<br/>Apartado c)<br/></p>"
;
// Llamada a la funcion apartado c)
$fp fopen("datosEjercicio.txt""r");
$resultado =obtenerArrNum($fp,$Array);
 
for(
$i=0;$i<count($resultado)-1;$i++) {
echo 
"<p>El indice $i =".$resultado[$i].'</p>';
}
fclose($fp);

// Llamada a la funcion apartado d)
echo "<p><br/>Apartado d)</p>";
$num =array(2,8,14 );
$fp fopen("datosEjercicio2.txt""w");
 
escribirTresNumeros($num,$fp);
fclose($fp);

$fp fopen("datosEjercicio2.txt""r");
$resultado=obtenerSuma($fp,$TotalSuma);
 Echo 
"<p>El resultado de la suma es = ".$resultado."</p>";

rewind($fp );
$res =obtenerArrNum($fp,$Array); 
for(
$i=0;$i<count($res)-1;$i++) {
echo 
"<p>El indice $i =".$res[$i]."</p>";
}
fclose($fp);
echo 
'<br/>';

echo 
'</div>';

//>>>>>>>>>>>>>>>>>>>>>>>>>>>> FUNCIONES <<<<<<<<<<<<<<<<<<<<<<<<
//Funcion apartado a)
function escribirTresNumeros($a,$Fichero)
{
foreach($a as $valor
{
$n=$valor;
fputs($Fichero,$n.chr(13).chr(10));
 
}
}

//Funcion apartado b)
function obtenerSuma($a,$suma)
{
$m=0;
while(!feof($a)) 
{
   $linea fgets($a);
 
$suma=$suma+$linea;
}
return $suma;
}

//Funcion apartado c)
function obtenerArrNum($a,$matriz)
{
$m=0;
while(!feof($a)) 
{
    $linea fgets($a);
 
$matriz[$m]=$linea;
 
$m++;
  
}
return $matriz;

}
?>

 <p>
  <a href="http://validator.w3.org/check?uri=referer">
  <img Src = "http://www.w3.org/Icons/valid-xhtml10" alt = "Valid XHTML 1.0 Strict" height = "31" width = "88" />
  </a>
</p>
</body>

</html>

Hasta luego ::)
« Última modificación: 12 de Agosto 2017, 11:49 por Ogramar »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Entrega Ejercicio36(CU00836B).php
« Respuesta #1 en: 27 de Julio 2017, 00:38 »
Buenas.

Cosas a corregir:

El código quedaría mejor ordenado si la apertura y cierre de los archivos se hicieran dentro de cada función, quedando fuera de las funciones sólo el código necesaria para hacer las llamadas a las funciones y mostrar los resultados.

Cuando llamas a la función obtenerSuma, le pasas dos parámetros, uno con la ruta del archivo y otro que llamas $TotalSuma que no tiene ningún valor puesto que anteriormente no lo has definido, en la función obtenerArrNum te pasa igual, la variable $Array no contiene nada.


Saludos. ;D

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Re:Entrega Ejercicio36(CU00836B).php
« Respuesta #2 en: 27 de Julio 2017, 11:52 »
Hola.

Citar
El código quedaría mejor ordenado si la apertura y cierre de los archivos se hicieran dentro de cada función, quedando fuera de las funciones sólo el código necesaria para hacer las llamadas a las funciones y mostrar los resultados.

Si.

Debería haberlo hecho así.
Pero pienso que las funciones son algo especializado dentro de  la programación y hubiera sido mejor crear una función de apertura de ficheros y otra de cierre.

Y no he querido complicarme ya que solo es para presentar un ejercicio y lo importante en este caso es que se haga la apertura y el cierre del fichero, y prefiero que esten juntos para que no se me olvide.

De todas la maneras gracias por la corrección.

Citar
Cuando llamas a la función obtenerSuma, le pasas dos parámetros, uno con la ruta del archivo y otro que llamas $TotalSuma que no tiene ningún valor puesto que anteriormente no lo has definido, en la función obtenerArrNum te pasa igual, la variable $Array no contiene nada.

Según tengo entendido en PHP no hace falta declarar o iniciar las variables como en otros lenguajes (Vbasic, c++, etc..).

No las declare al principio del programa por este motivo.

Y dentro de la función y al salir de ella hacen su trabajo aunque no estén declaradas.

La correcciòn que me haces es correctisima ya que si pierdo el hábito de declarar variables luego con otros lenguajes tendré problemas.

De todas las maneras en adelante intentaré declarar las variables para no perder la costumbre y estructurar bien el código.

Gracias.

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Entrega Ejercicio36(CU00836B).php
« Respuesta #3 en: 27 de Julio 2017, 13:15 »
Buenas.

Como bien dices en php no es necesario declarar ni iniciar las variables, hasta ahí todo bien.

Lo que quería decir, es
¿que sentido tiene que mandes un parámetro a una función del cuál no se va hacer uso, en este caso?

Porque en la función obtenerSuma estás mandado el valor que contenga "$TotalSuma", es decir, nada. Además de que no comete ninguna tarea dentro de la función.


Saludos. ;D

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Hola.

Ahora dijo gua.

Citar
Lo que quería decir, es
¿que sentido tiene que mandes un parámetro a una función del cuál no se va hacer uso, en este caso?

Porque en la función obtenerSuma estás mandado el valor que contenga "$TotalSuma", es decir, nada. Además de que no comete ninguna tarea dentro de la función.

Ningún sentido.

Ya que esas variables aunque tuvieran algún dato no salen de la función pero por inercia en otros lenguajes se ponen las variables que ha de salir de la función y no medi cuenta que en PHP vuelven con return.

O craso error
Cracias. :-[
 ;D

 

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