Informática y Programación
Escuela de Ingenierías Industriales y Civiles
Curso 2010/2011
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1
1
Módulo 2.Fundamentos de Programación
• Tema 1. Conceptos generales de algorítmica
• Tema 2. Sentencias de control
• Tema 3. Conjuntos dimensionados
• Tema 4. Programación modular
• Tema 5. Ficheros
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1
2
CONTENIDO
Los ficheros o archivos son elementos de almacenamientopermanente de grandes volúmenes de informaciónpresente en un ordenador.
Esta información se guarda en disco duro o cualquier otro dispositivo de almacenamiento externo.
3
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Ficheros
La estructura física de un fichero consiste en un conjuntode sectores o bloques que, a su vez, están compuestos poruna secuencia de bits.
4
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Estructura de los Ficheros
• Fichero físico: Hace referencia a la secuencia de bitsalmacenados en un dispositivo.
• Fichero lógico: Se trata de una estructura de nivelsuperior donde los datos están estructurados en unidadesmínimas denominadas registros y todos ellos agrupadosbajo el nombre del fichero.
5
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Fichero Físico vs Fichero Lógico
• Se pueden definir dos tipos de modos de acceso alfichero:
• Acceso Secuencial: El acceso al registro N del fichero requiere la"visita" a los N − 1 registros anteriores. El tamaño de registro no esconstante.
• Acceso Directo: Se puede acceder al registro N sin la necesidad devisitar cualquier otro registro del fichero. Los registros tienen elmismo tamaño.
6
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Modos de Acceso
• Un nombre identifica de forma unívoca un fichero dentrode un directorio.
• Antes de poder realizar cualquier operación es necesarioestablecer una asociación entre el nombre del fichero y elprograma que desea acceder a su información.
• En esta asociación se determina el tipo de operacionesque el programa puede realizar sobre el fichero.
7
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Manipulación de Ficheros
• Se pueden definir dos tipos de ficheros:• Ficheros Homogéneos: La información almacenada en ellos tienen el
mismo tipo. El acceso a estos ficheros puede ser tanto secuencialcomo directo.
• Ficheros NO Homogéneos: La información de cada registro puedeser de cualquier tipo. Al no haber uniformidad en los datos el accesodebe ser secuencial.
8
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Tipos de ficheros
• Declaración de una variable fichero:
• F es el identificador del fichero lógico utilizado en el algoritmo.
• Es necesario emplear este identificador para realizar las distintas acciones demanipulación del fichero.
• Ejemplo de la declaración de cuatro variables fichero:
9
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Variables Fichero
variable fichero F // Fichero no homogéneovariable fichero<tipo> F // Fichero homogéneo
variable fichero f1, f2, f3 // Ficheros que contienen // datos de distinto tipo
variable fichero<entero> f // Fichero que contiene// datos enteros (mismo tipo)
• Apertura o creación:• Establece una asociación entre el fichero y el programa.
• Tiene tres parámetros: (1) el identificador de fichero (F), (2) elnombre del fichero <NombreFichero> y (3) el modo de acceso alfichero (Lectura, Lectura/Escritura, Escritura, Creación).
• Modos de acceso:• Lectura: Si solo se va a acceder a la información sin modificar el
contenido del fichero.• Lectura/Escritura: Si no se especifica ningún modo de acceso se
podrán realizar operaciones de lectura y escritura.• Escritura/Creación: Tanto el modo de apertura Escritura como
Crear generan un fichero nuevo; si este existe lo sobreescribe.10
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Operaciones con Ficheros
• Los distintos modos de apertura de un fichero son:
• Ejemplos de apertura de un fichero:
11
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Operaciones con Ficheros
Abrir(F, <NombreFichero>) // Modo lec./escr.Abrir(F, <NombreFichero>, Lectura) // Modo lecturaAbrir(F, <NombreFichero>, Escritura) // Modo escrituraAbrir(F, <NombreFichero>, Crear) // Modo creación
Abrir(f, "fich.txt")Abrir(f1, "fich1.txt", Lectura)Abrir(f2, "fich2.txt", Escritura)Abrir(f3, "fich3.txt", Crear)
• El nombre del fichero (Nombrefichero) es el identificador externo que tiene el archivo en el directorio donde está ubicado, p.e. misDatos.txt.
• La variable de tipo fichero (F) es el identificador interno que se emplea dentro del programa para referirnos al fichero.
12
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Operaciones con Ficheros
• Lectura:• Permite la lectura de un registro de un fichero (F) y almacenar esa
información en una variable (V).
• Formato de la operación:
• Ejemplo de la lectura de datos desde dos ficheros
13
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Operaciones con Ficheros
Leer(F,V)
variable fichero f1 variable fichero<entero> fvariable real x variable entera a
Abrir(f, "fich.txt")Abrir(f1, "fich1.txt", Lectura)
Leer(f, a)Leer(f1, x)
• Escritura:• Permite la escritura del contenido de una variable (V) dentro de un
fichero (F).
• Formato de la operación:
• Ejemplo de la escritura de datos en dos ficheros:
14
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Operaciones con Ficheros
Escribir(F,V)
variable fichero f2, f3variable real xvariable entera a
x = 5.1, a = 3
Abrir(f2, "fich2.txt", Escritura)Abrir(f3, "fich3.txt", Crear)
Escribir(f2, x*x) Escribir(f3, 2*a)
• Cerrar:• Cierra la asociación entre el programa y el fichero. Tiene como
parámetro el identificador de fichero (F).
• Formato de la operación:
• Ejemplo de la lectura de datos desde dos ficheros:
15
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Operaciones con Ficheros
Cerrar(F)
variable fichero<entero> f
Abrir(f,"fich.txt")
/* Operaciones de lectura/escritura sobre el fichero f */
Cerrar(f)
• Marca de fin de fichero (EOF):• Detrás del último registro de un fichero existe una marca
denominada EOF (End-Of-File) o FDF (Fin De Fichero).
• Formato de la operación:
• Esta función devuelve verdadero si se ha alcanzado dicha marca yfalso en caso contrario.
16
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Operaciones con Ficheros
Fin(F)
variable fichero f1 Abrir(f1, "fich1.txt", Lectura)
mientras no Fin(f1) hacer Leer(f1, a)
fin mientras
Cerrar(f1)
• Tamaño del fichero:• Indica el número de bytes que contiene un fichero.
• Formato de la operación:
• Esta función también se puede utilizar para obtener el tamaño de undeterminado tipo de datos.
17
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Operaciones con Ficheros
Tamaño(F)
variable fichero f1
Abrir(f1, "fich1.txt", Lectura)
Escribir("El tamaño en bytes del fichero f1 es: ", Tamaño(f1))
Cerrar(f)
• Posicionamiento:• En los ficheros homogéneos es posible colocarse en un registro
concreto.
• En el momento de apertura del fichero se crea una variable internadenominada indicador de acceso.
• Existe una operación que permite variar la posición del indicador deacceso a un registro.
• Formato de la operación:
• Pos indica a la posición dentro del fichero donde se realizará lasiguiente operación.
• Indicando Inicio o Fin, nos colocaremos al inicio o final del fichero.
18
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Operaciones con Ficheros
IrA(F,Pos)
• Posicionamiento:• Ejemplo que sitúa el indicador de acceso en la penúltima posición
del fichero:
19
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Operaciones con Ficheros
variable fichero<entero> fAbrir(f, "fich.txt")
/* Calcular el número de registros del fichero f */n = Tamaño(f)/Tamaño(entero)
si n > 2 entonces IrA(f,n-1)
si noIrA(f,Inicio)
fin si
Cerrar(f)
• Cambiar de nombre:• Realiza un cambio de nombre del fichero F. Hay que especificar una
cadena de caracteres con el nuevo nombre del fichero.
• Formato de la operación:
• Ejemplo que cambia el nombre al fichero "fich.txt" por"NuevoFich.txt":
20
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Operaciones con Ficheros
Renombrar(F, <NuevoNombre>)
variable fichero<entero> f variable cadena x = "NuevoFich.txt"
Abrir(f, "fich.txt")Renombrar(f, x)
Cerrar(f)
• Eliminar:• Borra el fichero F del sistema de archivos.
• Formato de la operación:
• Ejemplo de la eliminación del fichero "fich.txt ":
21
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Operaciones con Ficheros
Eliminar(F)
variable fichero<entero> f
Abrir(f, "fich.txt")
Eliminar(f)
• Ejemplo de uso de ficheros:
22
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1Manejo de Ficheros
variable fichero<entero> fvariable entera i, valAbrir(f, "cuadrados.txt", Escritura)
para i desde 1 hasta 100 hacer Escribir(f, i*i)
fin para
Cerrar(f)
Abrir(f, "cuadrados.txt", Lectura)
para i desde 1 hasta 100 hacer Leer(f, val) Escribir(val)
fin para
Cerrar(f)
Ejercicios de Ficheros1. Escribir un algoritmo que escriba en un fichero los primeros 100
números naturales impares.
2. Escribir un algoritmo que genere como resultado un fichero quecontendrá un número n de valores equiespaciados para la funciónf (x) = sen(x) en el rango [xmin, xmax] especificado por el usuario.
3. Escribir un algoritmo que genere el fichero de salida"numeros_aleatorios.txt" que contendrá un número introducidopor teclado de valores enteros aleatorios entre 0 y 1000.
4. Escribir un algoritmo que lea los datos numéricos almacenados enun fichero de texto que contenga valores enteros (uno por cadalínea), y calcule la media aritmética y la desviación típica de losvalores enteros contenidos en el fichero.
5. Realizar un algoritmo que, dados dos ficheros conteniendo datosnuméricos, genere un fichero de salida correspondiendo cadaelemento al producto de los valores obtenidos de los ficheros deentrada.
23
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1
Ejercicios6. Realizar un algoritmo que lea 100 números enteros de cada uno
de los siguientes ficheros "entrada1.txt", "entrada2.txt" y"entrada3.txt", y posteriormente escriba en el fichero "salida.txt"la media de cada grupo de tres valores.
7. Realizar un algoritmo que a partir de dos ficheros de datosnuméricos ordenados de menor a mayor, genere otro fichero queincluya los valores numéricos de ambos ficheros manteniendo elorden creciente.
8. Realizar un algoritmo que cree un fichero "medidas.txt"conteniendo en cada línea la concentración del metanoatmosférico junto al día, mes y año en que fue realizada dichamedida durante un determinado periodo (siglo XX). El usuariodebe introducir medida a medida por teclado hasta completar lasmedidas a introducir.
24
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1
Ejercicios9. El fichero denominado "NivelBoro.txt" que contiene los datos del
nivel de boro medido diariamente a lo largo de un año. Realizar unalgoritmo que tras preguntar al usuario el nivel máximo de boroaceptable, escriba:
1. el número de días que se haya superado el nivel indicado por dicho valor,2. el número de días que no se haya superado dicho nivel,3. la media en ambos casos,4. los niveles máximo y mínimo registrados en dicho año.
10. Realizar un algoritmo que genere en un fichero los datossimplificados de la plantilla de un equipo de baloncesto. Para cadajugador se almacenará:
1. DNI,2. Edad,3. y estatura.
En un fichero separado se almacenará el nombre del jugador. 25
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1
Ejercicios propuestos11. Realizar un algoritmo que lea los ficheros generados en el ejercicio
anterior y muestre su contenido por pantalla. Al final deberámostrarse la siguiente información:
1. edad del jugador más joven,2. edad del mayor,3. y altura promedio.
26
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1
Bibliografía• Fundamentos de Informática y Programación para Ingeniería.
Ejercicios Resueltos para C y Matlab. Modesto Castrillón et al,Paraninfo, 2011.
• Introducción a la informática, A. Prieto Espinosa, A. Lloris Ruiz, J.C.Torres Cantero, McGraw-Hill, Madrid, 1989.
• Programación en C, Byron S. Gottfried, McGraw-Hill, Madrid (1997) -(2ª ed.)
• Introducción a la informática, A. Prieto Espinosa, A. Lloris Ruiz, J.C.Torres Cantero, McGraw-Hill, Madrid (1989)
• Una introducción a la programación. Un enfoque algorítmico. J.García Molina et al., Thomson, 2005.
27
Gru
po D
ocen
te Iy
P –
Dep
arta
men
to d
e In
form
átic
a y
Sist
emas
-20
10/1
1