informática y programación -...

27
Informática y Programación Escuela de Ingenierías Industriales y Civiles Curso 2010/2011 Grupo Docente IyP – Departamento de Informática y Sistemas - 2010/11 1 Módulo 2. Fundamentos de Programación

Upload: vuongtruc

Post on 06-Oct-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

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