Algorítmica y Lenguajes de Programación Declaración de variables Sentencias de entrada/salid a Variables y E/S. n Introducción En esta lección veremos: Estructura de un programa FORTRAN. n Declaración de variables. n Variables de tipo character, vectores y matrices. n Entrada/Salida con formato en FORTRAN. n 2 1 Variables y E/S. Estructura programa (i) n Todo programa en FORTRAN tiene siguiente estructura: program nombre_programa sentencia 1 sentencia 2 ... end n Las sentencias pueden ser: n n n Declaraciones de variables. Definiciones de constantes. Instrucciones. 3 Variables y E/S. Estructura programa (ii) n n Las declaraciones de variables y definiciones de constantes deben hacerse antes de ninguna instrucción. Por tanto, estructura de programa: program nombre_programa declaración variable o definición constante 1 declaración variable o definición constante 2 ... sentencia 1 sentencia 2 ... end 4 2 Variables y E/S. Declaración implícita n n n FORTRAN admite declaración implícita: proporcionar un tipo (entero o real) a una variable no declarada en base a la primera letra de su nombre. Declaración implícita es muy peligrosa!! Para evitar declaración implícita hay que incluir la sentencia IMPLICIT NONE antes de ninguna declaración de variable. 5 Variables y E/S. Declaración explícita n La sintáxis de una sentencia de declaración de variables es la siguiente: tipo variable1 [, variable2]* n Ejemplos: integer velocidad real a, b, c logical entrada, salida character cadena 6 3 Variables y E/S. Declaración cadenas n Para declarar una variable de tipo cadena de caracteres hay que indicar su longitud. Sintaxis cambia un poco: tipo*longitud variable1 [, variable2]* n Ejemplos: character a, b, c character*8 dni character*9 telefono, nif 7 Variables y E/S. Vectores (i) n La notación algorítmica permite la utilización de vectores y matrices, la sintaxis es la siguiente: variable ∈ vector (n [, m]*) de tipo n Ejemplos: coordenadas ∈ vector (3) de real tres_en_raya ∈ vector (3,3) de logico 8 4 Variables y E/S. Vectores (ii) n FORTRAN también admite vectores y matrices con una sintaxis diferente: tipo variable (n [,m]*) o bien tipo variable dimension variable (n [,m]*) n Ejemplos: real coordenadas (3) logical tres_en_raya (3,3) 9 Variables y E/S. Vectores (iii) n n n No es posible operar con vectores ni matrices de forma global, hay que acceder a cada componente individual. Sintáxis idéntica en FORTRAN y notación algorítmica: variable (i [,j]*) Ejemplos: coordenadas(2) tres_en_raya(3,3) 10 5 Variables y E/S. Entrada/Salida (i) n Tanto notación algorítmica como FORTRAN poseen sentencias de entrada/salida: n n n leer/escribir read/print Son similares aunque la sintaxis de las sentencias en FORTRAN incluye un parámetro para indicar formato: read formato, variable1 [, variableN]* print formato, expresión1 [, expresiónN]* 11 Variables y E/S. Entrada/Salida (ii) n n n En caso de no desear especificar formato debe utilizarse un asterisco * El equivalente de leer variable sería read *, variable El equivalente de escribir expresión sería print *, expresión 12 6 Variables y E/S. Códigos de formato (i) n Los códigos de formato más comunes son: n n n n n para tipo integer y E para tipo real para tipo logical para tipo character I F L A Cada formato admite diversas posibilidades para controlar el número de posiciones, el número de decimales, etc. 13 Variables y E/S. Códigos de formato (ii) n Código de formato I (integer): n In n n Permite leer/escribir un entero empleando n posiciones (contando el signo) Ejemplo: print '(I1,I1,I2)', 2, 3, -1 23-1 n In.d n n Permite leer/escribir un entero empleando n posiciones de las que al menos se utilizarán d Ejemplo: print '(I5.5)', 2 00002 n cIn.d n n Permite leer/escribir c enteros empleando n posiciones para cada uno de las que al menos se utilizarán d Ejemplo: print '(3I5.3)',2,2,2 --002--002--002 14 7 Variables y E/S. Códigos de formato (iii) n Código de formato F (real): n Fn.d n n Permite leer/escribir un real empleando n posiciones de las que d se utilizarán para decimales Ejemplo: print '(F5.1,F5.3)',3.142, 3.142 --3.13.142 n cFn.d n n Permite leer/escribir c reales empleando n posiciones para cada uno de las que d se utilizarán para decimales Ejemplo: print '(2F5.3)',3.142, 3.142 3.1423.142 15 Variables y E/S. Códigos de formato (iv) n Código de formato E (real): n En.d n n Permite leer/escribir un real con exponente empleando n posiciones de las que d se utilizarán para mantisa Ejemplo: print '(E6.1,E8.3)',3.142, 3.142 .3E+01.314E+01 n cEn.d n n Permite leer/escribir c reales con exponente empleando n posiciones para cada uno de las que d se utilizarán para mantisa Ejemplo: print '(2E6.1)',3.142, 3.142 .3E+01.3E+01 n cEn.dEe n n Permite leer/escribir c reales con exponente empleando n posiciones para cada uno de las que d se utilizarán para mantisa y e para exponente Ejemplo: print '(2E7.1E3)',3.142, 3.142 .3E+001.3E+001 16 8 Variables y E/S. Códigos de formato (v) n Código de formato L (logical): n Ln Permite leer/escribir una expresión de tipo lógico ocupando n posiciones n Ejemplo: n print '(L1,L5)', .true., .true. T----T 17 Variables y E/S. Códigos de formato (vi) n Código de formato A (character): n An n n Permite leer/escribir una expresión de tipo cadena de caracteres ocupando n posiciones Ejemplo: print '(A2,A4)', 'hola', 'hola' hohola n cAn n n Permite leer/escribir c expresiones de tipo cadena de caracteres ocupando cada una n posiciones Ejemplo: print '(2A3)', 'hola', 'adios' holadi n Si una expresión no puede encuadrarse en el formato solicitado el resultado que se obtiene es una secuencia de n asteriscos donde n es el ancho de formato especificado 18 9 Variables y E/S. Resumen (i) n n n n Notación algorítmica y FORTRAN disponen de una zona para declarar variables y definir constantes. En FORTRAN variables y constantes deben declararse y definirse antes de ninguna instrucción ejecutable. FORTRAN posee declaración implícita de variables enteras y reale s. Para evitar esta característica indeseable es necesario utilizar la sentencia IMPLICIT NONE antes de ninguna declaración de variables. La estructura de un programa FORTRAN es la siguiente: program nombre_programa implicit none declaración de variable o definición de constante 1 declaración de variable o definición de constante 2 ... sentencia 1 sentencia 2 ... end n La sintáxis de las sentencias de declaración en FORTRAN es la siguiente: tipo variable1 [, variable2]* 19 Variables y E/S. Resumen (ii) n n n n n En el caso de que se deseen declarar cadenas de caracteres la sintáxis es: character*longitud variable1 [, variable2]* Tanto en FORTRAN como en la notación algorítmica es posible declarar vectores y matrices; en el caso de la notación algorítmica la sintáxis es: variable ∈ vector (n [, m]*) de tipo mientras que en FORTRAN es: tipo variable (n [, m]*) Para acceder a un componente de un vector o matriz tanto en la notación algorítmica con en FORTRAN se emplea la sintáxis siguiente: variable (i [, j]*) FORTRAN tiene dos sentencias de entrada salida: read y print; estas sentencias incluyen un parámetro para “formatear” la entrada o la salida de los datos siendo su sintáxis la siguiente: read formato, variable1 [, variableN]* print formato, expresión1 [, expresiónN]* Sin embargo, existe la posibilidad de utilizarlas con formato libre, para ello basta con indicar un asterisco * 20 10