Vous êtes sur la page 1sur 9

UNIDAD 5Y ALGORITMOS LENGUAJE DE ARREGLOS PROGRAMACION Y ARCHIVOS

ARREGLO UNIDIMENCIONAL

Un arreglo unidimensional es un tipo de datos estructurado que est formado de una coleccin finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un ndice para cada elemento del arreglo que nos da su posicin relativa. Para implementar arreglos unidimensionales se debe reservar espacio en memoria, y se debe proporcionar la direccin base del arreglo, la cota superior y la inferior. REPRESENTACION EN MEMORIA Los arreglos se representan en memoria de la forma siguiente: x : array[1..5] of integer

Para establecer el rango del arreglo (nmero total de elementos) que componen el arreglo se utiliza la siguiente formula: RANGO = Ls - (Li+1)

donde: ls = Lmite superior del arregloli = Lmite inferior del arreglo. Para calcular la direccin de memoria de un elemento dentro de un arreglo se usa la siguiente formula: A[i] = base(A) + [(i-li) * w] donde :A = Identificador nico del arregloi = Indice del elementoli = Lmite inferior w = Nmero de bytes tipo componente si el arreglo en el cual estamos trabajando tiene un ndice numerativo utilizaremos las siguientes frmulas: RANGO = ord (ls) - (ord (li)+1) A[i] = base (A) + [ord (i) - ord (li) * w] Que es un while (Mientras). Una de las estructuras de repeticin empleada en la programacin de algoritmos. While permite al programador especificar las veces que se repita una accin (una o ms sentencias de programacin) mientras una condicin se mantenga verdadera. La forma del while en lenguaje C es:while (condicin){bloque de instrucciones};Mientras la condicin se mantenga verdadera, el bloque de instrucciones dentro de las llaves se ejecutar "x" cantidad de veces. Es necesario que alguna vez la condicin se haga falsa, pues de lo contrario se entrara en un ciclo infinito de repeticiones (bucle infinito) y el programa se considerara bloqueado. Por lo tanto es necesario que en el bloque de instrucciones dentro de la estructura while, se ejecute alguna accin que en algn momento haga que la condicin sea falsa. Un ejemplo del funcionamiento de la estructura de repeticin while: int num;num = 0;while (num<=10){printf(Repeticin numero %d, num);num = num + 1;}; El cdigo anterior imprimir en pantalla: Repeticin nmero 0Repeticin numero 1Repeticin numero 2Repeticin numero 3Repeticin numero 4Repeticin numero 5Repeticin numero 6Repeticin numero 7Repeticin numero 8Repeticin numero 9Repeticin nmero 10. Por qu? Vemos que iniciamos la variable del tipo entero num en cero. Luego, se evala por primera vez si es menor o igual a 10, al ser verdadera, se ejecuta el bloque dentro del while por primera vez. Se imprime Repeticin nmero 0, pues el valor dentro de nm es cero. Luego el proceso se repite hasta que nm. con valor 10 se le suma 1, y toma el valor 11. Se evala la condicin del while y se determina que NO se cumple, por lo tanto, salta el bloque y sigue la ejecucin del programa.

ARREGLOS BIDIMENSIONALES
Un arreglo bidimensional est compuesto, por un conjunto de elementos homogneos y se puede acceder a los datos utilizando dos subndices, este tipo de arreglo es tambin conocido como matriz. DECLARACIN Un arreglo bidimensional se define as: int float matriz[10][10]; arreglo[10][10];

tambin podemos utilizar constantes para definir la dimensin del arreglo de dos dimensiones: const int N = 10; int arreglo[N][N]; INICIALIZACIN Una matriz o arreglo bidimensional se puede inicializar de este modo: int matriz[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; Con la anterior asignacin se crea en memoria una matriz igual a la de abajo 0 0 1 1 4 2 7 1 2 5 8 2 3 6 9

Tambin podemos utilizar una estructura for dentro de otra estructura for para inicializar los valores de un arreglo de dos dimensiones como se muestra a continuacin: EJEMPLO Leer desde teclado una matriz de nmeros enteros de dimensin 3x3. #include void { const int for( int { for( int { cout<<Ingrese cin>>matriz[I][j]; <iostream.h> main() int i=0; j=0; el elemento i<TAM TAM=3; matriz[TAM][TAM]; ; i++) j<TAM; [<<i<<,<<j<<] j++) ;

} } } ACCESO A LOS ELEMENTOS DE UN ARREGLO BIDIMENSIONAL En un arreglo de dos dimensiones necesitamos tambin dos ndices para acceder a sus elementos. Si utilizamos: matriz[i][j], entonces i se refiere a la fila y j a la columna. Para acceder al elemento de la segunda fila y segunda columna de la matriz de la Fig. 8.1 hacemos: int nro = matriz[1][1]; En la variable nro se guardara el nmero 5.

Las matrices o arreglos bidimensionales se suelen utilizar en clculos matemticos, operaciones con matrices, recorridos por matrices, y cualquier uso que nosotros le podamos dar. Se pueden definir arreglos de ms de 2 dimensiones, pero su manejo se dificultara enormemente. EJEMPLO (CUADRADO PERFECTO) Se debe imprimir un cuadrado mgico de tamao N, donde N es un nmero impar comprendido entre 3 y 11. Un cuadrado mgico esta compuesto de nmeros enteros entre 1 y N, con las siguientes caractersticas: la sumas de las filas, columnas, diagonales son iguales, como se ve en el siguiente ejemplo: 81 6 357 492 El mtodo de generacin del cuadrado mgico consiste en situar el nmero 1 en la casilla del centro de la primera fila, el siguiente nmero se debe situar en la casilla ubicada en la fila anterior (por encima) y en la columna de la derecha. Este proceso se repite hasta colocar los N nmeros. Es importante saber que el cuadrado mgico es cclico, es decir, la fila anterior (encima) de la primera fila es la ltima fila y la columna a la derecha de la ltima es la primera columna. En caso de que un nmero se debe colocar en una casilla que ya esta ocupada, entonces se elige la casilla que se encuentra debajo (en la siguiente fila, la misma columna) del nmero que acabamos de ubicar.

ARCHIVOS
Son el almacenamiento secundario por excelencia. Existen varios tipos de archivos: Archivos de texto Archivos binarios secunciales. Archivos de Texto: Son aquellos archivos que solo almacenan datos de tipo carcter o cadena de caracteres. Son utilizados para: - Informacin de tipo registro - Guardar informacin que no necesite de un formato especifico Guardar informacin de cualquier otro tipo en estos archivos no es una solucin ptima. Archivos binarios de acceso secuencial: A diferencia de los archivos de texto, en estos archivos se almacenan datos de todo tipo (char, long, float, int etc.). Los tipos de datos que se almacenan es estos archivos se guardan de manera binaria, de acuerdo a la extensin que tengan los tipos de datos. Los datos se guardan de manera secuencial, es decir, uno tras de otro. Cuando queremos accesar a un dato, es este tipo de archivos, tenemos que leer cada dato, hasta encontrar aquel que andamos buscando. Cmo abrir archivos en Java? - Hasta ahora toda la entrada y salida (E/S I/O), ha sido con la consola. Los objetos ms primitivos de entrada y salida con la consola System.in, System.out, System.err, estn comprendidos dentro de BufferedReader y PrintWriter que permiten una interface ms conveniente y refinada.

- Pero tambin pueden ser usados para el manejo de archivos. La entrada y salida de

archivos queda disponible al utilizar las siguientes declaraciones: BufferedReader FileIn = new BufferedReader (new fileReader(nombre de archivo)); PrintWriter fileOut= new PrintWriter (new FileWriter(nombre de archive)); PrintWriter fileApnd= (new PrintWriter(nombredearchivo, true); El argumento nombre de archivo que aparece en las declaraciones, es simplemente un String que indica el nombre de archivo que se desea abrir. Cuando se abre un archivo para grabar (output), su contenido se borra. Si queremos abrir un archivo para agregar (append) informacin, debemos utilizar un constructor FileWriter en la declaracin fileApnd. Si le pasamos false a este constructor, logramos el mismo efecto que el contructor para la declaracin de fileOut. Si abrimos un archivo que no existe, para grabar sobre l, este ser creado por el sistema y comenzar, desde luego, estando vaco. La utilizacin de objetos de E/S con archivos. La utilizacin es la misma que para E/S con consola. // leyendo de un archivoint x=Integer.parseInt(fileInt.readLine( )); //leyendo de la consolaint x=Integer.parseInt(stdIn.readLine( )); Existen dos reas que requieren atencin adicional cuando manejamos E/S con archivos. La inicializacin de los objetos de E/S con archivos, puede ser una tarea no tan exitosa. Puede ser que el archivo que se desee abrir no se encuentre, lo cual lanza una

excepcin FileNotFoundException. Esto podra ser por que la cadena entregada al constructor puede ser el nombre de un archivo inexistente o que no se encuentra en el directorio de trabajo del programa Al momento de leer o escribir un archivo se puede lanzar IOException. Cmo cerrar archivos en Java? - Cada archivo abierto ocupa recursos del sistema, por tanto debemos cerrar cada archivo que deja de utilizarse. Infile.close( ); outFile.close( ); - Tanto el mtodo close de la clase BufferedReader como el de la clase PrintWriter lanzan la excepcin IOException. En resumen: Cuando hablamos de manejo de archivos tenemos que tener en cuenta 3 pasos: 1 Abrir el archivo. 2 Realizar operacin deseada: leer y/o escribir datos en el archivo. 3 Cerrar el archivo

Vous aimerez peut-être aussi