clase 7 - unlpvalhalla.fcaglp.unlp.edu.ar/computacion/teorias-2019-ss/clase-7_20… · clase 7...

Post on 14-Jul-2020

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CLASE 7

Computación 2019– FCAG-UNLP – Paula Benaglia

Orden de las sentencias

Funciones intrínsecas

Funciones intrínsecas (continuación)

Funciones intrínsecas (continuación)

Sentencias de entrada y salida READ / WRITE

READ: como su nombre lo sugiere, sirve para leer datos. Los datos pueden estar en un archivo, o tener que ser ingresados por el usuario del programa.

Sean n, x, y las variables cuyos datos hay que ingresar.

read (*,*) n, x, y Equivalente a: read (unit=*,format=*) n, x, y Al correr el programa, ¿qué produce esta sentencia?

READ y WRITE Forma general: read ( [ lista de items de control ] ) lista_de_variables lista-de-control: los items de la lista de control describen a dónde y en qué forma están los datos. Cada item tiene un nombre (o palabra) clave: fmt, unit, etc. Si los primeros items de la lista de control son la unidad y el formato (en ese orden), uno puede saltearse las palabras clave.

La sentencia WRITE se escribe parecido: write (*,*) n, x, y

¿Qué produce esta sentencia? por ejemplo,

8675 -1.3456e+09 7.5033 1) ¿Qué hacemos si los datos están en un archivo? 2) ¿Cómo hacer para que aparezca esto: n = 8675; x = -1.3456e+09; y = 7.5033 ?

READ y WRITE

Catálogo “HD” o Henry Draper

Sirio = HD 48915

OPEN y CLOSE Supongamos tener una serie de medidas salidas de un detector, guardadas en un archivo de dos columnas:

tiempo medida 1.5 45 2.2 163 … ...

Se precisa un programa que lea esos datos y luego los use.

OPEN y CLOSE Es necesario crear una conexión entre el programa que está corriendo, y el archivo donde se guardan los datos.

Para eso se usa la sentencia OPEN

open (unit=n, file=‘nombre-del-archivo’) n es un número entero (de 0 a 99) que representa la unidad asociada al archivo. Ejemplo: open (unit=9, file=‘Mediciones_16sep16.dat’)

file guarda el nombre del archivo

Para leer los datos: read(unit=9, *) t, xm

OPEN y CLOSE Al terminar de leer todo lo que se precise del archivo anterior, en el código fuente se debe incluir la sentencia para cerrar la(s) conexión(es) abierta(s), usando la sentencia CLOSE

close (unit=9) o close(9) NO SE PUEDE abrir una unidad que ya está abierta…

OPEN y CLOSE Forma general de la sentencia OPEN:

open ( [lista de items de control] )

• Trabajaremos con archivos de acceso secuencial (= hay que leerlos desde el comienzo para encontrar un registro; no se puede ‘saltar’ hasta el registro).

• En estos archivos no se puede ir ‘hacia atrás’. Hay que cerrarlos y volverlos a abrir para eso.

• Se puede imaginar un ‘puntero’ que se va moviendo a medida que el programa hace recorrer el archivo.

Archivos secuenciales: son los que tienen sus registros grabados en forma de códigos de caracteres, como líneas de texto. Ocupan más lugar, pero son legibles por los usuarios y permiten registros de longitud variable. Archivos de acceso directo: guardan los datos en el código interno de la computadora. Ocupan menos memoria, son más rápidos de acceder, pero sus registros son todos de igual tamaño.

OPEN y CLOSE La lista de items de control de la sentencia OPEN incluye:

UNIT = expresión entera de 0 a 99

STATUS = ‘old’ ‘new’ ‘scratch’ ‘unknown’ <- x defecto

FILE = (nombre del archivo a leer/crear)

Puede ser una constante o una variable ¿Qué pasa si el programador se olvida de especificar el status?

OPEN y CLOSE • ERR = número de sentencia ejecutable a la que el

programa sigue en caso de error de apertura de conexión •  IOSTAT = variable entera. En ella se guardará un 0 si no

hubo errores de ejecución, o un número positivo si hubo.

Forma completa de CLOSE:

unit = n (expresión entera)

status = ‘keep’ ‘delete’ iostat (idem para open)

Códigos de formato De datos:

I : datos enteros F : datos reales sin exponente E : datos reales con exponente D : datos doble precisión L : datos lógicos A : datos alfanuméricos

De posicionamiento: X : salta espacios

/ : salta líneas

Código “ I ” • Forma general: I n n: cantidad de caracteres

read(*,100) ivar write (*,120) ll 100 format(i4) 120 format (i3)

read(9,110) m1, m2, m3 write (1,101) I1,l2,l3 110 format (i3, i2, i2) 101 format(i5,i4,i3)

o: (i3, 2i2) (sean l1=-276, l2=10, l3= -2008 )

¿Qué pasa si no alcanza el formato para el valor?

1234 -> 123 1234 -> **

Código F • Forma general: Fn.d d: cantidad de decimales

n: cantidad total de caracteres Ejemplos:

read (*,100) a read(2,101) a,kim,c,x 100 format (F8.3) 101 format(f7.2, i5, f6.4, f7.3)

write(7,120) w 120 format (<codigo>)

w=25.338 F9.3 ___25.338 w=0.32547 f9.1 ______0.3

Código E • Forma general: En.d d: cantidad de decimales

n: cantidad total de caracteres

Ejemplos:

Valor interno Código Valor externo s = 83.974 E10.2 __0.84E+02

e10.3 _0.840E+02 e10.4 0.8397E+02

s = -6.3 e9.1 -0.6E+01 El código de formato debe tener n >= 8: ±0._E±__ El programa escribe los valores “tipificados” (cero coma…).

Código D • Forma general: Dn.d d: cantidad de decimales

n: cantidad total de caracteres

Funciona de la misma manera que el código E, pero con mayor cantidad de decimales y de caracteres.

Programas ejemplo 1.  Construir un programa en el que se ingresen tres

valores (lados de un triángulo) y se obtenga como resultados el perímetro y el área.

[ Recordar: s = ½ (l1 + l2 + l3), area = √ s (s - l1) (s - l2) (s - l3) ]

2.  Construir un programa que calcule el volumen de una esfera, a partir de su radio como dato.

3.  Calcular el centro de masa de un sistema de 3 cuerpos unidimensionales. Rehacer para 3 dimensiones.

FIN CLASE 7

top related