====== 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 ''; ?>