Nothing Special   »   [go: up one dir, main page]

Capitulos 2 Al 4 FORTRAN PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 14

RESÚMENES: LIBRO FORTRAN 90

• CAPÍTULO # 2 Al 4
Estos capítulos nos da una breve introducción del libro, nos hablan de
que el aspecto más importante de la programación es, sin duda, su
diseño, mientras que lo más importante es la prueba exhaustiva del
programa. La codificación real del programa, aunque es importante, es
relativamente sencilla en comparación. Estos capítulos tratan algunos
de los principios más importantes del diseño del programa e introduce
una técnica, conocida como plan de estructura, por ayudar a crear
programas bien diseñados. Esta técnica se ilustra por referencia a un
problema simple, una solución Fortran 90 para que se utiliza para
introducir algunos de los conceptos fundamentales de los programas
Fortran90
Se ha afirmado que la programación es tanto un arte como una ciencia.
De hecho, contiene elementos de arte y ciencia, pero en realidad es una
disciplina de ingeniería, y como tal se rige por reglas de procedimiento.
La razón de escribir un programa, cualquier programa, es hacer que una
computadora resuelva un problema específico.
● Programa: Conjunto, colección o serie de instrucciones realizadas
computacionalmente, utilizadas para introducir, procesar o presentar
datos. Las instrucciones deben estar escritas en un código ejecutable o
código binario o lenguaje máquina.
Un programa en FORTRAN tiene los siguientes elementos básicos:
• Nombre del programa; el nombre del programa es en realidad
opcional, pero es muy buena idea tenerlo.
• Declaraciones de variables; utilizadas en el programa.
• Cuerpo del programa. Comandos a ejecutar en el código. Los
comandos se ejecutan en orden de aparición. El programa
siempre debe terminar con el comando END PROGRAM
• Subprogramas. El cuerpo del programa puede llamar a
subprogramas que realicen tareas específicas. Es buena práctica
de programación separar un programa en bloques y poner cada
bloque en diferentes subprogramas.

La estructura de un comando en FORTRAN tiene las siguientes


propiedades:
• Los comandos se escriben en líneas de no más de 132 caracteres.
• Espacios en blanco al principio de una línea se ignoran. Esto
ayuda a mejorar visualmente la estructura del programa.
• Un signo & al final de una línea indica que el comando continua
en la línea siguiente.
• Todo lo que siga de un signo ! se considera un comentario y es
ignorado por el compilador.
• Importante: FORTRAN no distingue entre mayúsculas y
minúsculas en un programa, también ignora más de un espacio
en blanco y líneas en blanco.

Estructura general de un programa Fortran: Todo programa tiene 3


partes:
1. Parte de declaración
2. Parte de ejecución
3. Parte de terminación
En Fortran existen 5 unidades básicas de programa:
• Programa principal: Es declarado con la sentencia PROGRAM
• Módulos: Es declarado con la sentencia MODULE
• Funciones: Se declara usando la sentencia FUNCTION
• Subrutinas: Se declara usando la sentencia SUBROUTINE
• Bloques de datos: Se declara usando la sentencia BLOCK l_l
DATA
-Sentencia: Es una palabra reservada que indica al computador una
orden u acción. Hay dos tipos de sentencia:
*Sentencia ejecutable: Se encarga como su nombre lo indica de ejecutar
acciones u órdenes
*Sentencia no ejecutable: No realizan acciones, su propósito consiste
más en definir acciones U otras entidades que ejecutarlas
En Fortran hay 5 tipos de datos predefinidos. Un conjunto define a los
datos de tipo numérico y el otro a datos de tipo no numéricos.
• DATOS DE TIPO NUMÉRICO:
- Datos de tipo entero: En general un tipo de datos se
declara mediante una sentencia de declaración de tipo, para
el caso de los enteros la sentencia de declaración de tipos
INTEGER
- Datos de tipo Real > cuidado ! = Número de punto
flotante: Se declaran con la sentencia REAL.
- Datos de tipos complejos: Se declaran con la sentencia
COMPLEX

• DATOS DE TIPO NO NUMÉRICOS: Hay dos tipos de datos no


numéricos
- Datos de tipo carácter(CHARACTER): Definimos
variables o constantes de caracteres o textos.
- Datos de tipo lógico(LOGICAL): Son utilizados para tomas
de decisiones u operaciones lógicas.

El lenguaje también permite que el programador defina sus


propios tipos de datos. Los tipos se datos definidos por el
programador en el lenguaje FORTRAN son llamados tipos de
datos derivados y son resultado de la combinación de los 5 tipos
de datos predefinidos. Los datos de tipo derivable se declaran con
la sentencia de declaración de tipo (TYPE).

DATOS NUMÉRICOS:

• ENTEROS:
• REALES: DATOS PREDEFINIDOS
• COMPLEJOS:
Por cada tipo de datos numéricos predefinidos existen unas clases;
estas clases se señalan mediante una sentencia no ejecutable que
indica la clase a la cual pertenece dicho dato (KIND).
➢ Enteros: KIND 2, 4, 8
[2-n`¹, 2n'¹ -1]
Rango de los enteros para un máquina de tamaño de palabra n.
ENTRADA GENERAL DE UN PROGRAMA:
- Unidad (PRINCIPAL)
PROGRAM: Nombre_del_programa(opcional)
PARTE DE DECLARACIÓN: En esta parte está consignada toda la
información sobre la declaración de variables y propósitos en el
programa.
PARTE DE EJECUCIÓN: Se construyen todas las instrucciones de la
parte comparativa del programa.
PARTE DE TERMINACIÓN: Se finaliza en programa.
STOP: Con esta sentencia se indica que el programa debe terminar
END PROGRAN: Nombre del programa (opcional).
Todas las variables constantes en Fortran son tomadas por defecto
como datos de tipos numéricos.
Todas las variables que empiecen con las letras de la A-H son tomadas
como reales de precisión simple y las variables que empiecen con las
letras que van de O-Z también son tomadas como datos reales de
precisión simple.
Todas las variables que empiezan con la letras I, J, K, L, M, N; son
tomadas como datos de tipo entero.
REGLAS PARA DEFINIR LOS IDENTIFICADORES:
Un identificador es una secuencia de caracteres alfanuméricos (las
letras desde a hasta z, los dígitos enteros de 0 a 9 y el sub guion _ )
Que permiten dar nombre a cualquier entidad en Fortran: nombre de
programas, nombre de funciones, nombres de subrutinas, nombre de
variables, constante, etc..
REGLAS:
1. Todo identificador debe empezar con una letra
2. Solo se permiten carácter alfanuméricos (A-Z)(o, a,_)
3. Cada identificador tiene como mínimo 63 caracteres
4. Los comentarios se indican con el signo de exclamación ! ó una
letra C mayúscula ó minúsculas; la letra C siempre debe ubicarse
en la primera posición valida de caracteres para que pueda ser
tomada como comentario.
Hay definidas 4 operaciones aritméticas
Suma +

Resta -

Multiplicación *

División /

(Todos son operadores binarios en el contexto aritmético)


El signo = no representa igualdad en sentido matemático de realidad
representa una operación de asignación.
Las variables deben tener nombres significativos.
Por ejemplo, la entrada de datos es desde el teclado y la salida es a la
pantalla. La entrada y salida de datos se manejan con los comandos:
read(,)
write(,)
Ambos comandos tienen dos argumentos, el primero de los cuales
indica la “unidad” de entrada o salida, y el segundo el formato en el que
están los datos. La versión más simple es:
read(*,*)
write(*,*)
Aquí, el primer asterisco indica entrada o salida estandard (teclado y
pantalla respecti-vamente), y el segundo formato libre. El comando
write(*,*) puede substituirse por la forma equivalente print * seguido de
una coma.
ENTRADA Y SALIDA:
Además de utilizar el teclado y la pantalla, los datos también pueden
leerse o enviarse a un archivo. Para ello:
1- abrir el archivo con el comando open
2- leer o escribir
3- cerrar el archivo con el comando close
La secuencia sería:
open (unit=número, file="nombre de archivo")
read (de donde, en que formato) donde lo guarda
o
write (a donde, en que formato) de donde lo saca
close (unit=número).
La sentencia PRINT* es muy útil para mostrar cantidades pequeñas de
datos, comúnmente mientras usted desarrolla un programa, no necesita
tener preocupación con los detalles exactos de la forma de obtener los
resultados.
El formato general es: PRINT*, lista
Donde:
Lista : puede ser una lista de constantes, variables, expresiones, y
cadena de caracteres, separa por comas. Una cadena de caracteres es
una sucesión de caracteres delimitada por comillas (") o apóstrofes (').
Por ejemplo:
PRINT*, "La raíz cuadrado de", 2, 'es', SQRT( 2.0 )
Aquí mostramos algunas reglas generales:
➢ Cada sentencia PRINT* genera un nuevo registro de rendimiento.
➢ La manera que se imprimen los números reales depende de su
sistema (Pc) en particular. El compilador Fortran 90 en un
procesador 386, por ejemplo, muestra los números reales entre: –
99.999 y +99.999 en el formato de punto fijo, y los otros
procesadores de más alto orden (486/586-Pentium) en forma
exponencial. Si usted quiere más precisión de los datos de salida,
aprenderemos mas adelante a usar formato de salida de datos.
Por ejemplo, las declaraciones siguientes imprimirán el número
123.4567 en la forma fija de punto sobre 8 columnas corriendo a
dos lugares decimales:
X = 123.4567
PRINT* 10, X
10 FORMAT( F8.2 )

1)Si en una cadena de caracteres la declaración PRINT* se anhela


escribir demasiado caracteres sobre una de línea se mostrará sin
una rotura si usa &, también aparece en la línea de continuación:
Ejemplo:
PRINT*, “Ahora es el tiempo para que todos los &
& hombres muestren la resistencia contra la corrupción “

En todos los ámbitos de la vida, la forma más fácil de resolver la mayoría


de los problemas es romper reducirlos a subproblemas más pequeños
y lidiar con cada uno de ellos a su vez subdividiendo aún más estos
subproblemas según sea necesario.
En el capítulo 4 se presenta el concepto de un procedimiento para
ayudar en la solución de tales subproblemas, y muestra cómo los dos
tipos de Fortran de procedimientos, funciones y subrutinas, se utilizan
como el edificio principal, bloques en programas bien diseñados.
Otra instalación de encapsulación, conocida como módulo, también es
introducido en este capítulo como un medio para proporcionar acceso
controlado a datos globales, y también se muestra como una
herramienta esencial en el uso de tipos de datos derivados (o definidos
por el usuario). Los módulos también se recomiendan como un medio
de empaquetar grupos de procedimientos relacionados, para facilitar la
manipulación, como un medio de proporcionar seguridad adicional y
simplificar el uso de algunas de las potentes funciones de Fortran 90
que se cumplirán en capítulos posteriores.
Los subprogramas facilitan la utilización de técnicas de diseño
descendente para la construcción de programas.
Los subprogramas: Facilitan la modularidad y estructuración de los
algoritmos. Facilitan la lectura e inteligibilidad de los algoritmos.
Permiten una economización del esfuerzo del programador al poder
escribir código reutilizable en muchas partes de un mismo algoritmo.
Facilitan la depuración y mantenimiento de los programas. Los
subprogramas pueden ser funciones y subrutinas.
Las funciones son subrutinas con 0 ó más argumentos y que devuelven
un único valor de retorno.
Las funciones pueden formar parte de expresiones o aparecer en la
parte derecha de una sentencia de asignación pero nunca pueden
constituir una sentencia aislada o aparecer en la parte izquierda de una
asignación.
Las funciones son invocadas mediante su nombre seguido de los
argumentos entre paréntesis.
Existen dos tipos de funciones: intrínsecas y definidas por el usuario:
Las funciones intrínsecas son funciones de uso muy común: raíz
cuadrada, logaritmos, funciones trigonométricas, etc.
Las funciones definidas por el usuario deben describirse dentro del
algoritmo principal; la sintaxis de la definición de funciones en la
notación algorítmica y en FORTRAN es la siguiente:
tipo funcion nombre_funcion (arg1 ∈ tipo1, ..., argN ∈ tipoN)
inicio
sentencia1
sentencia2
...
sentenciaN
fin
tipo function nombre_funcion (arg1, ..., argN)
declaración arg1
...
declaración argN
sentencia1
sentencia2
...
sentenciaN
end
Los argumentos y variables declaradas dentro del cuerpo de una
función (o subrutina) se denominan variables locales, las variables
declaradas dentro del programa principal son variables globales. Los
subprogramas tienen acceso a las variables globales aunque en el caso
de que una variable local se denomine igual que una variable global
tiene preferencia la primera.
Las subrutinas son subprogramas que no devuelven ningún resultado;
sin embargo, gracias a la utilización de los efectos laterales es posible
su utilización para permitir el “retorno” de varios resultados.
La sintaxis de la definición de subrutinas o procedimientos en la
notación algorítmica y en FORTRAN es la que sigue:
accion nombre_subrutina ([ent|sal|ent sal] arg1∈tipo1, ..., [ent|sal|ent
sal] argN∈tipoN)
inicio
sentencia1
sentencia2
...
sentenciaN
fin
subroutine nombre_subrutina (arg1, ..., argN)
inicio
declaración arg1
...
declaración argN
sentencia1
...
sentenciaN
Una expresión lógica únicamente puede tomar dos valores que son :
true o false
Este tipo de expresiones permiten crear estructuras de control dentro
del programa FORTRAN que dependiendo de los valores obtenidos por
la expresión se bifurcan y recorren caminos alternativos.
A la hora de construir una expresión lógica FORTRAN cuenta con una
serie de operadores lógicos que se aplican siempre entre dos elementos
del mismo tipo, bien numéricos o bien tipo carácter. Una vez construida
la expresión esta únicamente puede tomar dos valores cierto o falso.

EJEMPLOS DE LOS CAPITULOS 2 AL 4


1)Sean:
a=8.0 b=4.0 c=3.0 (Reales)
i=8 j=4 k=3 (Enteros)
El resultado de:
• a/b 2.0 (real)
• j/a 0.5 (real)
• i/j 2 (entero)
• b/c 1.33333... (real)
• a/c 2.66667 (real)
• j/k 1 (entero)
• j/i 0 (entero)
• j/c 1.33333... (real)
• Dado que la división entera puede producir resultados inesperados,
los enteros deberían ser usados únicamente para cosas que son
enteras intrínsecamente por naturaleza, como los contadores y los
índices.
• Debido a la longitud de palabra finita de un computador, algunos
números reales no pueden representarse exactamente. Por ejemplo, la
representación de 1./3. puede ser 0.333333 y, como resultado, algunas
cantidades que son teóricamente iguales no lo son al ser evaluadas en
un computador: 3.*(1./3.)≠ 1.

2)Si i es una variable entera:


i = 3./2. ! i se le asigna el valor 1
i=i+1 ! Incrementa en una unidad el valor de i

3)PROGRAM cap1_2
INTEGER :: a
REAL :: b1,b2,sueldo_del_ultimo_mes
LOGICAL :: d1,d2
COMPLEX :: e
CHARACTER (LEN=18) :: pal
CHARACTER (LEN=180) :: frase_larga
a=-123
b1=-2.98
b2=0.9E-8
sueldo_del_ultimo_mes=2850.75
d1=.true.
d2=.false.
e=(2.3,3.7)
pal='CONSTANTE CARACTER'
frase_larga='"CONSTANTE CARACTER dividida en dos lineas usando
& &el caracter & al final de la primera y al principio de la siguiente"'
WRITE (*,*) 'CONSTANTE ENTERA',a
WRITE (*,*) 'CONSTANTES REALES (NOTAC NORMAL Y
EXPON)',b1,b2
WRITE (*,*) 'IDENTIFICADOR DE VARIABLE REAL (MAX. 31 letras)',&
sueldo_del_ultimo_mes,'EUROS'
WRITE (*,*) 'CONSTANTES LOGICAS',d1,d2
WRITE (*,*) 'CONSTANTE COMPLEJA',e
WRITE (*,*) pal !OBSERVAR QUE NO SALEN LOS APOSTROFES
WRITE (*,*) frase_larga !AQUI SI SALEN LAS COMILLAS DOBLES
END PROGRAM cap1_2
-El programa presenta declaraciones de todos los tipos de variables
Fortran. Se usan sentencias de asignación para asignar valores a esas
variables, mostrándolos a continuación por monitor.
− Las sentencias demasiado largas se han dividido en dos líneas
usando el operador & como marca de continuación de la línea
anterior.

4)Supongamos dos variables con valores A=2.0 y B=10.0,


entonces:
.not. (a .lt. b) .false.
(a .ne. b) .and. (a .lt. b) .true. (ambas expresiones lógicas son ciertas)
(a .lt. b) .or. (a .gt. b) .true. (una de las expresiones lógicas es cierta)
(a .ne. b) .xor. (a .lt. b) .true. (ambas expresiones son ciertas)
(a .lt. b) .eqv. (a .gt. b) .false. (los resultados de las expresiones no son
iguales)
(a .lt. b) .neqv. (a .gt. b) .true. (los resultados de las expresiones no son
iguales)

5)PROGRAM mengano
!Declararvariables.
im p l i c i t none
charac ter ( 2 0 ) : : nombre
p ri n t ∗ ! Esta l i n e a imprime un l u g a r en blanco
w ri te ( ∗ , ∗ ) ’Como t e llama s ? ’
p ri n t ∗ ! Esta l i n e a imprime un l u g a r en blanco
read ( ∗ , ∗ ) nombre ! Leemos desde e l t e c l a d o
p ri n t ∗
w ri te ( ∗ , ∗ ) ’ Hola ’ , nombre
p ri n t ∗
END PROGRAM mengano

6)PROGRAM v a r i a b l e s
im p l i c i t none
l o gi c al : : f l a g
in tege r : : i
r e al : : a
charac ter ( 3 0 ) : : t e xt o
i=1
a = 2.5
t e x t o = ’ Estas son l a s v a r i a b l e s : ’
w ri te ( ∗ , ∗ ) t e x t o
w ri te ( ∗ , ∗ ) f l a g , i , a
END PROGRAM v a r i a b l e s

• Presentado por: NATHALIA VÁSQUEZ


MARTÍNEZ

También podría gustarte