You are on page 1of 15

UNIDAD 5: ARREGLOS Y ARCHIVOS.

ARREGLOS.

Los arreglos es un conjunto de variables, de un mismo tipo. Una "lista" como bien
diría uno puede definirse como un grupo o una colección finita, homogénea y
ordenada de elementos.
Su finalidad es ordenar, estructurar datos que responden a una misma realidad
o entidad, pero donde cada uno hace referencia a una "instancia". De este modo
nos evitamos tener n variables de un mismo tipo. Por ejemplo: deseamos tener
registrada las temperaturas promedio de los días de la semana.
Una opción sería disponer de 7 variables tem_diaX, siendo X = 1...7 o Domingo,
sábado. La otra opción es disponer de un vector de tamaño 7 y en el hacer
corresponder a cada posición o índice un día:

temp(1) = hace referencia al domingo


temp(7) = hace referencia al sábado

Los arreglos pueden ser de los siguientes tipos:


De una dimensión.
De dos dimensiones.
De tres o más dimensiones.

DECLARACION DE UN ARREGLO:
Al igual que con las variables, se debe declara un arreglo antes de utilizarlo. Un
arreglo se declara de modo similar a otros tipos de datos, excepto que se debe
indicar al compilador el tamaño o longitud del arreglo, se debe seguir el nombre, el
tamaño encerrado entre corchetes.
La sintaxis para declarar un arreglo de una dimensión es:
Tipo nombre_arreglo [numero_de_elementos].

JOSÉ MICHEL MADRIGAL IZQUIERDO


ALGORITMO Y LENGUAJE DE PROGRAMACIÓN 5
UNIDAD 5: ARREGLOS Y ARCHIVOS
5.1 ARREGLO UNIDIMENSIONALES.

Un arreglo bidimensional es un arreglo de doble entrada, por ejemplo que maneja


filas y columnas, las cuales todas deben de ser del mismo tipo de esto, por ejemplo
si el arreglo es entero toda la matriz será de enteros, la cual se maneja por medio
de 2 ciclos, uno para controlar las filas y otro para controlar las columnas.
Un arreglo unidimensional es un tipo de datos estructurado que está formado de
una colección 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 posición relativa.
Para implementar arreglos unidimensionales se debe reservar espacio en
memoria, y se debe proporcionar la dirección base del arreglo, la cota superior y la
inferior.
Por ejemplo para crear un arreglo de diez elementos enteros, se escribe:

Int num [10];

Esta declaración hace que el compilador reserve espacio suficiente para contener
diez valores enteros. Los valores iniciales deben aparecer en el orden en el que
serán asignados a los elementos individuales del arreglo, encerrados entre llaves y
separados por comas, la forma general es.

Tipo nombre_arreglo [numero_de_elementos]= {valor1, valor2,…, valorN};

La presencia del número de elementos del arreglo, es opcional cuando los


valores opcionales están presentes. El método para inicializar arreglos mediante
valores constantes después de su definición, es adecuado cuando el número de
elementos es pequeño. Por ejemplo, para inicializar un arreglo de diez enteros con
los valores 5,1,3,8,9,3,0,1,5,7, se escribe:

Int num[] = {5,1,3,8,9,3,0,1,5,7};

JOSÉ MICHEL MADRIGAL IZQUIERDO


ALGORITMO Y LENGUAJE DE PROGRAMACIÓN 6
UNIDAD 5: ARREGLOS Y ARCHIVOS
REPRESENTACIÓN
GRÁFICA DE UN
ARREGLO DE UNA
DIMENSIÓN.

EJEMPLO: ARRAYS (ARREGLOS) UNIDIMENSIONALES.

Crea un proyecto y escribe el siguiente código:

#include <stdio.h>
#include <stdlib.h>
// Ejemplo aprenderaprogramar.com
int main() {
int numeroDeCoches [4];
numeroDeCoches[0] = 32;
printf ("El numero de coches en la hora cero fue %d \n", numeroDeCoches[0]);
printf ("El numero de coches en la hora uno fue %d \n", numeroDeCoches[1]);
printf ("El numero de coches en la hora dos fue %d \n", numeroDeCoches[2]);
printf ("El numero de coches en la hora tres fue %d \n", numeroDeCoches[3]);
return 0;
}

El resultado de ejecución puede ser similar a este:

El numero de coches en la hora cero fue 32


El numero de coches en la hora uno fue 8
El numero de coches en la hora dos fue 100
El numero de coches en la hora tres fue 100

JOSÉ MICHEL MADRIGAL IZQUIERDO


ALGORITMO Y LENGUAJE DE PROGRAMACIÓN 7
UNIDAD 5: ARREGLOS Y ARCHIVOS
5.2 ARREGLO BIDIMENSIONALES Y MULTIDIMENSIONALES.

ARREGLOS BIDIMENSIONALES.

Los arreglos bidimensionales son tablas de valores. Cada elemento de un


arreglo bidimensional está simultáneamente en una fila y en una columna. En
matemáticas, a los arreglos bidimensionales se les llama matrices, y son muy
utilizados en problemas de Ingeniería.

Los arreglos bidimensionales se usan para representar datos que pueden verse
como una tabla con filas y columnas. La primera dimensión del arreglo representa
las columnas, cada elemento contiene un valor y cada dimensión representa una
relación. La representación en memoria se realiza de dos formas: almacenamiento
por columnas o por renglones.
La siguiente figura muestra un arreglo con 4 filas y 4 columnas. Las filas se
acceden integrando un rango desde 0 hasta el 3 y las columnas con un rango del 0
al 3. Un arreglo bi-dimensional se declara de la misma manera que un arreglo
unidimensional, exceptuando que su tamaño debe ser declarado.

EJEMPLO DE ARREGLO BIDIMENSIONAL

Este ejemplo declara caja como un arreglo de 2 dimensiones cuyos elementos


son variables del tipo float. Para acceder a un elemento individual del arreglo debe
de especificar 2 expresiones (una por cada dimensión) ejemplo: caja [0] [2] donde
[0] es fila y [2] columna.

JOSÉ MICHEL MADRIGAL IZQUIERDO


ALGORITMO Y LENGUAJE DE PROGRAMACIÓN 8
UNIDAD 5: ARREGLOS Y ARCHIVOS
REPRESENTACIÓN
GRÁFICA DE UN
ARREGLO DE DOS
DIMENSIONES.

EJEMPLO: ARRAYS (ARREGLOS) BIDIMENSIONALES.


Crear y cargar una tabla de tamaño 3x3, mostrar la suma de cada fila y de cada
columna.
import java.util.Scanner;

/**
*
* @author Ariel
*/
public class Bidimensional {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int[][] num = new int[3][3];
Scanner numero = new Scanner(System.in);
System.out.println("Ingrese los números.");
for (int i = 0; i < num.length; i++) {//Dimensión Uno.
for (int j = 0; j < num.length; j++) {//Dimensión Dos.
num[i][j]=numero.nextInt();
}
}
System.out.println("Imprimiendo Tabla.");
for (int i = 0; i < num.length; i++) {
System.out.println();
for (int j = 0; j < num.length; j++) {
System.out.print(num[i][j] + " ");
}
}

System.out.println("\nSuma Fila.");
int suma=0;
JOSÉ MICHEL MADRIGAL IZQUIERDO
ALGORITMO Y LENGUAJE DE PROGRAMACIÓN 9
UNIDAD 5: ARREGLOS Y ARCHIVOS
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num.length; j++) {
suma += num[i][j];
}
System.out.println("Fila " + i + " =" + suma);
suma=0;
}
System.out.println("\nSuma Columna");
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num.length; j++) {
suma += num[j][i];
}
System.out.println("Columna " + i + " =" + suma);
suma=0;
}

}
}

ARREGLOS MULTIDIMENSIONALES.

Un arreglo multidimensional es simplemente una extensión de un arreglo


unidimensional.
Más que almacenar una sola lista de elementos, piense en un arreglo
multidimensional como el almacenamiento de múltiples listas de elementos. Por
ejemplo, un arreglo bidimensional almacena listas en un formato de tabla de dos
dimensiones de filas y columnas, en donde cada fila es una lista.
Las filas proporcionan la dimensión vertical del arreglo, y las columnas dan la
dimensión horizontal. Un arreglo de tres dimensiones almacena listas en un formato
de tres dimensiones de filas, columnas y planos, en donde cada plano es un arreglo
bidimensional.
Las filas proporcionan la dimensión vertical; las columnas, la dimensión
horizontal; y los planos, la dimensión de profundidad del arreglo.
Este también es un tipo de dato estructurado, que está compuesto por n
dimensiones.

JOSÉ MICHEL MADRIGAL IZQUIERDO


ALGORITMO Y LENGUAJE DE PROGRAMACIÓN 10
UNIDAD 5: ARREGLOS Y ARCHIVOS
Para hacer referencia a cada componente del arreglo es necesario utilizar n
índice, uno para cada dimensión, un arreglo bidimensional almacena listas en un
formato de tabla de dos dimensiones de filas y columnas, en donde cada fila es una
lista. Las filas proporcionan la dimensión vertical del arreglo, y las columnas dan la
dimensión horizontal. Un arreglo de tres dimensiones almacena listas en un formato
de tres.

EJEMPLO DE ARREGLO TRIDIMENSIONAL

REPRESENTACIÓN
GRÁFICA DE UN
ARREGLO DE TRES
DIMENSIONES.

EJEMPLO: ARRAYS (ARREGLOS) MULTIDIMENSIONAL.


Veamos lo que sería un ejemplo de programa con array multidimensional. Escribe
y ejecuta este código.
#include <stdio.h>
#include <stdlib.h>

int main() {
int habitantesVivienda[5][25];
habitantesVivienda[3][24] = 4;

JOSÉ MICHEL MADRIGAL IZQUIERDO


ALGORITMO Y LENGUAJE DE PROGRAMACIÓN 11
UNIDAD 5: ARREGLOS Y ARCHIVOS
printf("El numero de personas que viven en la vivienda 24 del piso 3 es %d\n",
habitantesVivienda[3][24]);
return 0; //Ejemplo aprenderaprogramar.com
}

El resultado del programa es que se muestra el mensaje “El número de personas


que viven en la vivienda 24 del piso 3 es 4”.

ARCHIVOS.
Los archivos son un mecanismo de abstracción: proporcionan una forma de
almacenar información en el disco y leerla después. Cuando un proceso crea un
archivo, le asigna un nombre. Cuando el proceso termina, el archivo sigue
existiendo y otros procesos pueden acceder a él utilizando su nombre.
Las reglas exactas para nombrar archivos varían tanto de un sistema a otro, pero
todos los sistemas operativos permiten cadenas de 1 a 8 caracteres como nombres
de archivos válidos. En muchos casos se permite también dígitos y caracteres
especiales.

Estructura de Archivos

Los archivos pueden estructurarse de varias maneras. Tres posibles comunes


son:
Secuencia de bytes
Secuencia de registros
Árbol
Tipos de Archivos
Archivos Regulares: Son los que contienen información del usuario.
Directorios: Son archivos de sistema que sirven para mantener la estructura
del sistema de archivos.
Archivos Especiales por Caracteres: Están relacionados con E/S y sirven
para modelar dispositivos deE/S en serie.
Archivos Especiales por Bloques: Sirven para modelar discos.
JOSÉ MICHEL MADRIGAL IZQUIERDO
ALGORITMO Y LENGUAJE DE PROGRAMACIÓN 12
UNIDAD 5: ARREGLOS Y ARCHIVOS
5.3 APERTURA, ENTRADA-SALIDA DE DATOS, Y CIERRE DE ARCHIVOS.
Para que un programa pueda operar directamente sobre un archivo, la primera
operación que debe realizar es la apertura del mismo. En la misma, el programa
emplea una subrutina identificando el archivo con el que quiere trabajar (mediante
un nombre y, según el caso, el soporte donde se encuentra) y el modo en que va a
emplearlo (este segundo aspecto varía según el lenguaje con que se trabaje). El
sistema operativo construye a partir de estas informaciones un descriptor de fichero,
de manera que el programa ya no se referirá al archivo por su nombre (que es un
identificador externo al programa), sino por un número o variable asociado a este
descriptor, que a partir de ahora será un identificador interno del programa. Apertura
y cierre de archivos Para que un programa pueda operar directamente sobre un
archivo, la primera operación que debe realizar es la apertura del mismo.

En un programa, los datos de entrada son los que la computadora va a procesar.


Los datos de salida son datos derivados, es decir, obtenidos a partir de los datos de
entrada. Por esta razón, a los datos de salida se les considera más significativos
que a los datos de entrada. Ambos tipos de datos son información (textos,
imágenes, sonidos, vídeos,...) que maneja la computadora. Sin embargo, en un
sentido más filosófico, a los datos de entrada se les considera la materia prima de
los datos de salida, considerados estos como la verdadera información.

Cuando un programa no vaya a acceder más a un archivo, es necesario indicar


al sistema operativo esta circunstancia. Con ello el sistema operativo libera el
descriptor de fichero y se asegura que el archivo queda debidamente almacenado
en la memoria secundaria. Para cerrar un archivo simplemente se utiliza la subrutina
de cierre indicando el archivo por medio de su identificador interno (número o
variable).
Evidentemente, para poder utilizar un archivo, éste tiene que existir. Por ello el
fichero deberá haber sido creado en algún momento, y recordemos que la creación
de un fichero es una tarea propia del sistema operativo. Asimismo, al abrir un fichero
para su lectura, las informaciones de este archivo tienen que haber sido

JOSÉ MICHEL MADRIGAL IZQUIERDO


ALGORITMO Y LENGUAJE DE PROGRAMACIÓN 13
UNIDAD 5: ARREGLOS Y ARCHIVOS
almacenadas sobre un soporte y ser utilizables; un intento de lectura en un fichero
inexistente produce indefectiblemente un error.

La situación de escritura es diferente: si en la apertura damos el nombre de un


fichero para escribir datos en él y no existe ningún fichero con ese nombre, en
muchos lenguajes ello significará que el sistema operativo lo creará de modo
automático (en caso contrario lo habrá hecho el programador previamente). Si ya
existiera un fichero con el mismo nombre, sus contenidos serían borrados y
empezaría a escribiese desde un principio.

La forma de evitar el borrado de contenidos si se desea añadir datos nuevos a


los ya existentes en un archivo es abrirlo en modo ‘añadir’: los datos nuevos se
escribirán en el archivo sin borrar los anteriores, en el bien entendido que haya
espacio disponible para ello. En los casos en que la apertura requiere la creación
de un nuevo archivo por parte del sistema operativo, éste necesita saber: - nombre
dispositivo: indica el soporte donde se situará el archivo; - nombre del archivo: que
lo identifica entre los restantes en el mismo soporte; - tamaño del archivo: indica el
espacio necesario para la creación del archivo; - organización del archivo: tipo de
organización del archivo; - tamaño del bloque o registro físico: cantidad de datos
que se leen o escriben en cada operación de entrada/salida (E/S). Además de
algunas indicaciones acerca del directorio al que se va a incorporar.

Algunos de estos datos tienen valores por defecto, esto es, valores que tomarán
si no se indica nada distinto. El proceso de creación puede no ser posible por
generar una serie de errores entre los que se pueden señalar:
Otro archivo con el mismo nombre ya existía en el soporte.
El dispositivo no tiene espacio disponible para crear otro nuevo archivo.
El dispositivo no está operativo.
Existe un problema de hardware que hace abortar el proceso.
Uno o más de los parámetros de entrada en la instrucción son erróneos.

JOSÉ MICHEL MADRIGAL IZQUIERDO


ALGORITMO Y LENGUAJE DE PROGRAMACIÓN 14
UNIDAD 5: ARREGLOS Y ARCHIVOS
EJEMPLO DEL PROCESAMIENTO DE UN ARCHIVO.

Por ejemplo, para mostrar todas las líneas de un archivo, precedidas por el
número de línea, podemos hacerlo como en el Código 11.1.

# Código 11.1: numera_líneas.py**: Imprime las líneas de un archivo con su


número

archivo = open("archivo.txt")

i=1

for linea in archivo:

linea = linea.rstrip("\\n")

print " %4d: %s" % (i, linea)

i+=1

archivo.close()

La llamada a rstrip es necesaria ya que cada línea que se lee del archivo contie
ne un fin de línea y con la llamada a rstrip("\\n") se remueve.

Otra opción para hacer exactamente lo mismo seria utilizar la función de


Python`enumerate (secuencia). Esta función devuelve un contador por cada uno de
los elementos que se recorren, puede usarse con cualquier tipo de secuencia,
incluyendo archivos. La versión equivalente se muestra en el Código 11.2.

JOSÉ MICHEL MADRIGAL IZQUIERDO


ALGORITMO Y LENGUAJE DE PROGRAMACIÓN 15
UNIDAD 5: ARREGLOS Y ARCHIVOS
# Código 11.2: numera_líneas2.py: Imprime las líneas de un archivo con su
número

archivo = open("archivo.txt")

for i, línea in enumerate(archivo):

línea = línea.rstrip("\\n")

print " %4d: %s" % (i, línea)

archivo.close()

JOSÉ MICHEL MADRIGAL IZQUIERDO


ALGORITMO Y LENGUAJE DE PROGRAMACIÓN 16
UNIDAD 5: ARREGLOS Y ARCHIVOS
CONCLUSIÓN

Como conclusión podemos decir que esta unidad nos sirve para ordenar datos
como por ejemplo un directorio telefónico o una librería alfabéticamente utilizando
diversos métodos ya mencionados como lo son los arreglos unidimensionales, los
bidimensionales y los multidimensionales, además de que el uso de funciones al
programar facilitara su uso.

Los arreglos y matrices nos permiten almacenar y manipular conjuntos de datos


agrupados de manera eficiente. En general, son ideales para el registro y
manipulación de información homogénea que representa una tabulación de
resultados agrupados por categorías. Tienen la ventaja de que sus elementos se
acceden rápidamente a través de sub-índices.
Describamos de forma precisa estos arreglos.

Los arreglos unidimensionales son una lista de variables a las que se hace
referencia por medio de un nombre común. Un arreglo unidimensional es un dato
estructurado el cual está formado por una colección finita y ordenada de datos del
mismo tipo. Por otro lado, el arreglo bidimensional es un tipo de dato estructurado,
finito, ordenado y homogéneo. Estos arreglos se usan para representar datos que
pueden verse como una tabla con filas y columnas. Por último, el arreglo
multidimensional se puede describir como una cadena o una extensión de lo que es
un arreglo unidimensional. En él se almacenan múltiples listas de elementos.

De igual forma, finalizamos recordando algo sobre el tema de archivos; apertura,


entrada-salida de datos y cierre de archivos.
Los archivos es una colección de registros lógicamente relacionados, compuesto
a su vez de registros, los cuales son una colección de campos con información,
lógicamente relacionados. Los registros de un archivo se almacenan juntos. Un
archivo o fichero informático es un conjunto de bits que son almacenados en un
dispositivo. Existen algunas formas de manipular los archivos, como lo son:

JOSÉ MICHEL MADRIGAL IZQUIERDO


ALGORITMO Y LENGUAJE DE PROGRAMACIÓN 17
UNIDAD 5: ARREGLOS Y ARCHIVOS
Creación: Permite a los usuarios la creación de nuevos archivos, indicando
una serie tanto de propiedades como de características del archivo.
Apertura: Esta operación localiza e identifica un archivo existente, para
operar con el archivo.
Cerrar: Se utiliza para dejar de utilizar el archivo, es decir, termina el acceso
al archivo.
Borrar: Elimina el archivo del directorio o la tabla de contenidos. Es un
archivo organizado secuencialmente, los registros se graban de forma
consecutiva.

JOSÉ MICHEL MADRIGAL IZQUIERDO


ALGORITMO Y LENGUAJE DE PROGRAMACIÓN 18
UNIDAD 5: ARREGLOS Y ARCHIVOS
BIBLIOGRAFÍA

JOYANES, L. (2008). Fundamentos de la programación. Arreglos y


Archivos, 4ª Edición. Madrid: McGraw-Hill.
PÉREZ, C.. (2007). Arreglos y archivos. diciembre 4, 2008, de ITSS.
LINDOR, F. (2019). Apertura y Cierre de Archivos.
DIEGO LLANOS. (2010). Fundamentos de informática y programación.
En Fundamentos de informática y programación (310-314). MEXICO:
GUSTAVO GUILI.

JOSÉ MICHEL MADRIGAL IZQUIERDO


ALGORITMO Y LENGUAJE DE PROGRAMACIÓN 19
UNIDAD 5: ARREGLOS Y ARCHIVOS