====== Teoría 6 ======
===== Archivos =====
[[http://www.unicen.edu.ar/introprog/Intro2/index.html|Concepto de Archivos - Primer tema de la página.]]
';
// file_exists: Informa si existe o no ese archivo
if(file_exists('datos.txt')) echo 'datos.txt EXISTE.' . "\n";
if(!file_exists('xxxxx.txt')) echo 'xxxxx.txt NO EXISTE.' . "\n";
// filesize: Cantidad de caracteres de un archivo
echo 'El tamaño de datos.txt es: ' . filesize('datos.txt') . "\n";
// file_get_contents: Obtiene todo el texto de un archivo (file_put_contents)
echo file_get_contents('datos.txt'); // Salta de línea?
// file: Pasa todo el texto de un archivo a un arreglo (1 elemento por línea)
print_r(file('datos.txt'));
// is_readable: Existe y se puede leer.
if(is_readable('datos.txt')) echo 'datos.txt se puede leer.' . "\n";
// is_writeable: Existe y se puede escribir.
if(is_writeable('datos.txt')) echo 'datos.txt se puede modificar.' . "\n";
// Archivo de texto
// fopen (archivos o URL), ver segundo parametro r,w,a,x,+
// r: el archivo DEBE existir.
// w: INICIALIZA al archivo.
// a: Se posiciona al final, si el archivo no existe lo crea.
// x: Crea al archivo, NO debe existir.
$archivo = fopen('datos.txt', 'w');
if ($archivo == FALSE) {
print "ERROR: No se pudo abrir el archivo ! ! !\n";
} else {
fputs($archivo,"Renglon a\n");
fputs($archivo,"Renglon 2\n");
fputs($archivo,"Renglon 3\n");
fputs($archivo,"Renglon 4\n");
fclose($archivo);
}
// Lectura secuencial de archivo y agregado de renglones al final
$archivo = fopen('datos.txt', 'r+');
if($archivo) {
$renglon = fgets($archivo); // Lee texto, incluye el \n
// fread: similar pero para binario y con long. obligatoria.
while(!feof($archivo)) { // Fin del archivo? La próxima lectura dará error?
print $renglon;
$renglon = fgets($archivo);
}
fputs($archivo,"Final.");
fclose($archivo);
}
// Lectura secuencial y modificacion de datos en el medio del archivo
$archivo = fopen('datos.txt', 'r+');
if($archivo) {
$posicion = 0;
$renglon = fgets($archivo); // Lee texto, incluye el \n
// fread: similar pero para binario y con long. obligatoria.
while(!feof($archivo)) { // Fin del archivo? La próxima lectura dará error?
print $renglon;
if(substr($renglon,0,9)=='Renglon 2') {
fseek($archivo,$posicion);
fputs($archivo,"RENGLON 2"); // alias de fwrite
//fputs($archivo,"RENGLON 2 Y SUGUE PISANDO EL RESTO"); // El arch continua con igual longitud.
}
$posicion = ftell($archivo); // ftell -> posicion (0 a filesize($filename) )
$renglon = fgets($archivo);
}
fclose($archivo);
}
// Utilización de fseek y fputs para posicionarse, leer y escribir.
$archivo = fopen('datos.txt', 'r+');
if($archivo) {
fseek($archivo,4);
print fread($archivo,3);
fseek($archivo,4);
fputs($archivo,"LON");
fclose($archivo);
}
// El fputs no funciona al medio de un archivo si no hay un fseek antes.
$archivo = fopen('datos.txt', 'r+');
if($archivo) {
print fread($archivo,3) . "\n\n";
fseek($archivo,ftell($archivo));
fputs($archivo,"GLO");
fclose($archivo);
print file_get_contents('datos.txt');
}
// Posicionarse al principio del archivo
$archivo = fopen('datos.txt', 'r+');
if($archivo) {
print fread($archivo,3) . "\n\n";
fseek($archivo,ftell($archivo));
fputs($archivo,"GLO");
rewind($archivo); // Igual a fseek($archivo, 0)
fputs($archivo,'r');
fclose($archivo);
print file_get_contents('datos.txt');
}
echo '';
?>
===== Recursión =====
[[http://www.unicen.edu.ar/introprog/Intro2/index.html|Concepto de Recursión - Quinto tema de la página.]]
';
function esEntero($numero) {
if ($numero < 0) { /* como los núm. son simétricos chequeamos lo convertimos a positvo */
return (esEntero(-$numero));
} elseif ($numero >= 1) {
return (esEntero($numero -1));
} elseif ($numero == 0) { /* el cero es entero por definición */
return ("SI");
} else {
return ("NO");
}
} // fin esEntero
echo "¿Es 0 un número entero? ".esEntero(0)."\n";
echo "¿Es 3.5 un número entero? ".esEntero(3.5)."\n";
echo "¿Es -7 un número entero? ".esEntero(-7)."\n";
echo "¿Es -9.2 un número entero? ".esEntero(9.2)."\n";
echo "¿Es 1 un número entero? ".esEntero(1)."\n";
echo "¿Es 100 un número entero? ".esEntero(100)."\n";
function factorial( $n ) {
if ($n == 0 || $n== 1) { // $n == 0 o $n == 1 termina la ejecucion
return 1;
} else {
return ( $n * factorial ($n-1));
}
} // fin factorial
echo "El factorial de 3 es " . factorial(3) . "\n";
echo "El factorial de 7 es " . factorial(7) . "\n";
echo "El factorial de 2 es " . factorial(2) . "\n";
echo "El factorial de 0 es " . factorial(0) . "\n";
echo '';
?>