“INTRODUCCIÓN AL ENTORNO DE
FORTRAN”.
INTEGRANTES BOLETA
Dorantes Arias Ever 2014300451
Cruz Morales Gustavo 2014300389
Rodríguez López Cristofer Mateo 2014301605
Santana Lopez Abdielh Raul 2014301770
Torres Mercado Ritchie Abraham 2013301528
GRUPO: 9EV1
PROFESOR:
CORREA MARTÍNEZ ROLANDO WILIBALDO
1
INTRODUCCIÓN
LA HISTORIA DEL LENGUAJE FORTRAN
Fortran es el abuelo de todos los lenguajes científicos de programacion. El nombre Fortran
se deriva de FORmula TRANSlation, que indica que el lenguaje fue pensado desde el
principio para traducir ecuaciones científicas en código de computadora. La primera
versión del lenguaje FORTRAN 7 fue desarrollada durante los años 1954-1957 por IBM
para su uso con su computadora Tipo 704. Antes de ese momento, esencialmente todos los
programas de computadora se generaban a mano en lenguaje de máquina, que era un
proceso lento, tedioso y propenso a errores. FORTRAN fue un producto realmente
revolucionario. Por primera vez, un programador podría escribir un algoritmo deseado
como una serie de ecuaciones algebraicas estándar, y el compilador de FORTRAN
convertiría las declaraciones en el lenguaje de la máquina que la computadora podría
reconocer y ejecutar.
¡FORTRAN fue una idea maravillosa! La gente comenzó a usarlo tan pronto como estuvo
disponible, porque hizo que la programación fuera mucho más sencilla que el lenguaje de
máquina. El lenguaje fue lanzado oficialmente en abril de 1957, y en el otoño de 1958, más
de la mitad de todos los programas informáticos IBM 704 se escribieron en Fortran.
El idioma original de FORTRAN era muy pequeño en comparación con nuestras versiones
modernas de Fortran. Contenía solo un número limitado de tipos de extracto y solo
soportaba los tipos de datos enteros y reales. Tampoco hubo subrutinas en el primer
FORTRAN. Fue un primer esfuerzo para escribir un lenguaje informático de alto nivel, y
naturalmente se encontraron muchas deficiencias a medida que las personas comenzaron a
usar el lenguaje regularmente. IBM abordó esos problemas, lanzando FORTRAN II en la
primavera de 1958.
Otros desarrollos continuaron hasta 1962, cuando se lanzó FORTRAN IV. FORTRAN IV
fue una gran mejora, y se convirtió en la versión estándar de Fortran durante los siguientes
15 años. En 1966, FORTRAN IV se adoptó como un estándar ANSI, y se llegó a conocer
como FORTRAN 66.
La siguiente actualización importante de Fortran fue Fortran 90. Fortran 90 incluyó todos
los FORTRAN 77 como un subconjunto y amplió el idioma en muchas direcciones nuevas
e importantes. Entre las principales mejoras introducidas en el lenguaje en Fortran 90 se
encuentran un nuevo formato de fuente libre, secciones de matriz, operaciones de matriz
2
completa, tipos de datos parametrizados, tipos de datos derivados e interfaces explícitas.
Fortran 90 fue una mejora dramática sobre las versiones anteriores del lenguaje.
Fortran 90 fue seguido en 1996 por una actualización menor llamada Fortran 95. Fortran 95
agregó una serie de características nuevas al lenguaje tales como el constructo FORALL,
funciones puras y algunos procedimientos intrínsecos nuevos. Además, aclaró numerosas
ambigüedades en el estándar Fortran 90.
Fortran 2003 fue la próxima actualización. Este es un cambio más importante de Fortran
95, que incluye nuevas características como tipos de derivados mejorados, soporte de
programación orientada a objetos, soporte de conjuntos de caracteres Unicode, mejoras en
la manipulación de datos, indicadores de procedimientos e interoperabilidad con el lenguaje
C. Fue seguido por una actualización más pequeña llamada Fortran 2008.
LA EVOLUCIÓN DE FORTRAN
El lenguaje Fortran es un lenguaje dinámico que evoluciona constantemente para
mantenerse al día con los avances en la práctica de programación y la tecnología
informática. Una nueva versión importante aparece aproximadamente una vez por década.
La responsabilidad de desarrollar nuevas versiones del lenguaje Fortran recae en el Grupo
de Trabajo Fortran de la International Organization for Standardization’s (ISO), WG5. Esa
organización ha delegado autoridad en el Comité J3 del Comité Internacional de Estándares
de Tecnología de la Información (INCITS) para preparar realmente nuevas versiones del
lenguaje. La preparación de cada nueva versión es un proceso extenso que incluye primero
sugerencias para su inclusión en el idioma, decidir qué sugerencias son factibles de
implementar, escribir y distribuir borradores a todas las partes interesadas de todo el
mundo, y corregir los borradores e intentar nuevamente hasta general acuerdo alcanzado
Eventualmente, se realiza una votación mundial y se adopta el estándar. Los diseñadores de
nuevas versiones del lenguaje Fortran deben encontrar un delicado equilibrio entre la
compatibilidad con versiones anteriores de la base existente de los programas Fortran y la
introducción de nuevas características deseables. Aunque se han introducido en el lenguaje
características y enfoques modernos de programación estructurada, muchas características
indeseables de versiones anteriores de Fortran se han conservado para compatibilidad con
versiones anteriores. Los diseñadores han desarrollado un mecanismo para identificar las
características no deseadas y obsoletas del lenguaje Fortran que ya no deberían usarse, y
para eventualmente eliminarlas del lenguaje. Aquellas partes del lenguaje que han sido
reemplazadas por métodos nuevos y mejores se declaran como características obsoletas.
Las características que se han declarado obsoletas nunca deben usarse en ningún programa
nuevo. A medida que el uso de estas características disminuye en la base de código Fortran
existente, se considerarán eliminaciones del idioma. Ninguna función se eliminará de una
versión del idioma a menos que esté en la lista obsoleta en al menos una versión anterior, y
a menos que el uso de la característica haya caído a niveles insignificantes. De esta manera,
el lenguaje puede evolucionar sin amenazar la base de código Fortran existente.
3
DESARROLLO
1) DEFINA CONCEPTO DEL PROGRAMA.
Ingenieros y científicos, siempre han tenido la necesidad de diseñar y ejecutar
programas informáticos para cumplir con un cierto objetivo. El objetivo generalmente
implica cálculos técnicos que serían demasiado difíciles o tomarían demasiado tiempo
para realizarse a mano. Fortran es uno de los lenguajes de computadora comúnmente
utilizados para estos cálculos técnicos.
Pueden usarse para crear programas que controlen el comportamiento físico y lógico de
una máquina, para expresar algoritmos con precisión, o como modo de comunicación
humana.
Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen
su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se
escribe, se prueba, se depura, se compila (de ser necesario) y se mantiene el código
fuente de un programa informático se le llama programación.
4
4) REALICE EL ESQUEMA DE LA ESTRUCTURA DEL PROGRAMA.
Estructura de un programa en Fortran
Cada programa de Fortran consiste en un conjunto de enunciados ejecutables y no
ejecutables, que deben ocurrir en un orden específico. Un ejemplo del programa
Fortran se muestra en la Figura 1. Este programa lee dos números, los multiplica, e
imprime el resultado. Examinemos las características significativas de este
programa.
5
5) EXPLIOUE EN QUE CONSISTE COMPILAR Y CORRER PROGRAMAS
EN FORTRAN.
Compilación, Vinculación y Ejecución de un programa Fortran
Antes de que se pueda ejecutar el programa de ejemplo, debe compilarse en código
de objeto con un compilador de Fortran, y luego vincularse con las bibliotecas del
sistema de una computadora para producir un programa ejecutable (Figura 2). Estos
dos pasos generalmente se realizan juntos en respuesta a un único comando del
programador. Los detalles de compilación y enlace son diferentes para cada
compilador y sistema operativo.
FIGURA 2. Crear un programa Fortran ejecutable implica dos pasos, compilar y vincular.
Los programas Fortran se pueden compilar, vincular y ejecutar en uno de dos modos
posibles: por lotes e interactivo. En el modo por lotes, un programa se ejecuta sin
una entrada o interacción de un usuario. Esta es la forma en que la mayoría de los
programas de Fortran funcionaban en sus primeros días. Un programa se presentaría
como un mazo de cartas perforadas o en un archivo, y se compilaría, vincularía y
ejecutaría sin ninguna interacción del usuario. Todos los datos de entrada para el
programa tenían que colocarse en tarjetas o colocarse en archivos antes de que se
comenzara el trabajo, y todos los resultados se enviaban a archivos de salida o a una
impresora de línea.
Por el contrario, un programa que se ejecuta en modo interactivo se compila,
vincula y ejecuta mientras un usuario está esperando en un dispositivo de entrada,
como el teclado de la computadora o un terminal. Dado que el programa se ejecuta
con el presente humano, puede solicitar datos de entrada del usuario mientras se está
ejecutando, y puede mostrar resultados intermedios y finales tan pronto como se
computen.
Hoy, la mayoría de los programas de Fortran se ejecutan en modo interactivo. Sin
embargo, algunos programas Fortran muy grandes que se ejecutan durante días
seguidos se siguen ejecutando en modo por lotes.
6
6) MENCIONE LOS ELEMENTOS BASICOS DE UN PROGRAMA EN
FORTRAN.
TABLA 1. Conjunto de caracteres.
i. Declaraciones ejecutables.
ii. Declaraciones no ejecutables.
La estructura de un programa.
i. La sección de declaración.
ii. La sección de ejecución.
iii. La sección de finalización.
Estilo del programa.
Constantes y variables.
Una constante es un objeto de datos que se define antes de que se ejecute un
programa, y eso lo hace no cambia el valor durante la ejecución del programa, una
variable es un objeto de datos que puede cambiar el valor durante la ejecución de un
programa.
i. Constantes y variables enteras.
ii. Constantes y variables reales.
iii. Constantes y variables de caracteres.
7
7) MENCIONE LAS OPERACIONES EN FORTRAN.
+ Adición
- Sustracción
* Multiplicación
/ División
** Exponenciación
Aritmética de enteros.
Aritmética de reales.
Aritmética en modo mixto.
Aritmética y exponenciación en modo mixto.
8
dobles ("). El número de caracteres en una cadena es 0, mientras que el número
máximo de caracteres en una cadena varía de compilador a compilador.
Los caracteres entre las dos comillas simples o dobles se dice que están en un
contexto del carácter.
Una variable de caracteres es una variable que contiene un valor del tipo de datos de
caracteres.
9
! de fibonacci hasta nmax.
implicit none
integer i,nmax
integer jnew,jold,aux
! Poner un limite. nmax = 10
! Inicializar (jnew,jold). jnew = 1; jold = 1
! Iniciar loop.
print *
do i=1,nmax
! Imprimir elemento i de la serie.
print *, ’Elemento ’,i,’ de la serie de Fibonacci: ’, jnew
print *
! Calcular nuevo elemento de la serie.
aux = jnew
jnew = jnew + jold
jold = aux
end do
end program Fibonacci
IF
En ocasiones uno desea que una parte del programa solo sea ejecutada si cierta
condición específica se satisface. Esto se logra utilizando los “condicionales”, que en
FORTRAN se controlan con el comando IF. La estructura de este comando es la
siguiente:
if (expresión lógica) then
comando 1
comando 2
else
comando 3
comando 4
10
end if
Al ejecutar esto, el programa verifica si la expresión lógica entre paréntesis después del
if es verdadera. De serlo, se ejecutan los comandos siguientes. De ser falsa, se ejecutan
los comandos después del else (nótese que el [else] es opcional). La expresión lógica
puede utilizar cualquiera de los siguientes operadores lógicos:
11
else if (expresión lógica 3)
comando 3
else comando 4 end if
12
Control lógico de loops
Es posible utilizar condiciones lógicas para controlar un loop. Esto se logra utilizando el
comando do while():
do while(expresi´on l´ogica)
comando 1
comando 2
...
end do
En este caso no se cuenta con una variable entera como en el caso estandard, sino que el
loop se ejecuta una y otra vez mientras la expresión lógica sea verdadera. El loop se
detiene una vez que dicha expresión es falsa. Por ejemplo, el siguiente código actúa de
la misma forma que un loop estandard de 1 a 10:
i=1
do while (i <=10)
i=i+1
end do
CUIDADO: Con este tipo de loops se corre el riesgo de caer en un ciclo eterno, donde
la condición lógica nunca deja de satisfacerse y la máquina sigue ejecutando el loop
para siempre. Cuando se trabaja en una terminal uno nota esto fácilmente si el código
continua mucho tiempo más del que esperábamos sin hacer aparentemente nada. En ese
caso siempre se puede detener al código tecleando [CTRL C]. Pero cuando uno esta
corriendo en una cola en una super-computadora se corre el riesgo de terminarse la
cuota que debería haber durado un año de una sola vez, y peor aún, los encargados del
sistema pueden decidir retirar los privilegios de trabajar en esa máquina ante semejante
desperdicio de recursos de computo y falta de cuidado.
13
10) QUÉ TIPO DE ECUACIONES SE SOLUCIONAN EN EL PROGRAMA
FORTRAN
El programa realiza la solución de sistemas de ecuaciones tanto lineales como no
lineales.
14
32) SC= (1.0/2.0)*PI
33) SB= (7.0/6.0)*PI
34) !SEXAGESIMALES
35) TA=(180.0*SA)/PI
36) TB=(180.0*SB)/PI
37) TC=(180.0*SC)/PI
38)
39)
40) VAN=CMPLX(Vf*COS(SA),Vf*SIN(SA))
41) VBN=CMPLX(Vf*COS(SB),Vf*SIN(SB))
42) VCN=CMPLX(Vf*COS(SC),Vf*SIN(SC))
43) VAB=VAN-VBN
44) VBC=VBN-VCN
45) VCA=VCN-VAN
46)
47) WRITE(*,*)'FASORES'
48) WRITE(*,*)'VAN=',VAN,' V'
49) WRITE(*,*)'VBN=',VBN,' V'
50) WRITE(*,*)'VCN=',VCN,' V'
51) WRITE(*,*)'VAB=',VAB,' V'
52) WRITE(*,*)'VBC=',VBC,' V'
53) WRITE(*,*)'VCA=',VCA,' V'
54)
55) WRITE(*,*)'DATOS DE CARGA 1 (monofasica en B)'
56) WRITE(*,*)'R1(ohm):'
57) READ(*,*)R1
58) WRITE(*,*)'X1(ohm):'
59) READ(*,*) X1
60) Z1=CMPLX(R1,X1)
61) I1B=VBN/Z1
62) I1=Vf/(SQRT((R1*R1)+(X1*X1)))
63) P1=I1*I1*R1
64)
65)
15
66)
67) WRITE(*,*)'DATOS DE CARGA 2 (bifasica en AB)'
68) WRITE(*,*)'S2(VA):'
69) READ(*,*)S2
70) WRITE(*,*)'f.p(2):'
71) READ(*,*) fp2
72) I2=S2/VL
73) !WRITE(*,*)I2
74) P2=S2*fp2
75) !WRITE(*,*)P2
76) R2=P2/(I2*I2)
77) !WRITE(*,*)R2
78) Z2=VL/I2
79) X2=SQRT((Z2*Z2)-(R2*R2))
80) ZZ2=CMPLX(R2,-X2)
81) I2A=VAB/ZZ2
82) I2B=-I2A
83)
84) WRITE(*,*)'DATOS POR FASE DE CARGA 3 (trifasica en delta balanceada)'
85) WRITE(*,*)'R3(ohm):'
86) READ(*,*)R3
87) WRITE(*,*)'X3(ohm):'
88) READ(*,*) X3
89) Z3=CMPLX(R3,X3)
90) IAB=VAB/Z3
91) IBC=VBC/Z3
92) ICA=VCA/Z3
93) I3A=IAB-ICA
94) I3B=IBC-IAB
95) I3C=ICA-IBC
96) I3=VL/(SQRT((R3*R3)+(X3*X3)))
97) !WRITE(*,*)I3
98) P3=3*I3*I3*R3
99) !WRITE(*,*)P3
16
100)
101) WRITE(*,*)'DATOS DE CARGA 4 (trifasica en estrella balanceada)'
102) WRITE(*,*)'P4(W):'
103) READ(*,*)P4
104) WRITE(*,*)'f.p(4):'
105) READ(*,*) fp4
106) I4=P4/(SQRT(3.0)*VL*fp4)
107) !WRITE(*,*)'I4',I4
108) R4=(P4/3)/(I4*I4)
109) !WRITE(*,*)'R4=',R4
110) Z4=Vf/I4
111) !WRITE(*,*)'Z4=',Z4
112) X4=SQRT((Z4*Z4)-(R4*R4))
113) ZZ4=CMPLX(R4,X4)
114) I4A=VAN/ZZ4
115) I4B=VBN/ZZ4
116) I4C=VCN/ZZ4
117)
118) ITA=I2A+I3A+I4A
119) ITB=I1B+I2B+I3B+I4B
120) ITC=I3C+I4C
121)
122)
123) WRITE(*,*)'- - - - - - RESULTADOS - - - - - - -'
124) WRITE(*,*)''
125) WRITE(*,*)'- -CORRIENTES DE LINEA POR CARGA - -'
126) WRITE(*,*)'I1B=',I1B,' A'
127) WRITE(*,*)''
128) WRITE(*,*)'I2A=',I2A,' A'
129) WRITE(*,*)'I2B=',I2B,' A'
130) WRITE(*,*)''
131) WRITE(*,*)'I3A=',I3A,' A'
132) WRITE(*,*)'I3B=',I3B,' A'
133) WRITE(*,*)'I3C=',I3C,' A'
17
134) WRITE(*,*)''
135) WRITE(*,*)'I4A=',I4A,' A'
136) WRITE(*,*)'I4B=',I4B,' A'
137) WRITE(*,*)'I4C=',I4C,' A'
138) WRITE(*,*)''
139) WRITE(*,*)'- - -CORRIENTES DE LINEA TOTAL - - -'
140) WRITE(*,*)'ITA=',ITA,'A'
141) WRITE(*,*)'ITB=',ITB,'A'
142) WRITE(*,*)'ITC=',ITC,'A'
143) WRITE(*,*)''
144) WRITE(*,*)''
145) WRITE(*,*)'-POTENCIA ACTIVA CONSUMIDA POR CARGA-'
146) WRITE(*,*)'P1=',P1,'W'
147) WRITE(*,*)'P2=',P2,'W'
148) WRITE(*,*)'P3=',P3,'W'
149) WRITE(*,*)'P4=',P4,'W'
150) WRITE(*,*)''
151) WRITE(*,*)'-POTENCIA ACTIVA TOTAL ENTREGADA - -'
152) WRITE(*,*)'P entregada=',P1+P2+P3+P4,'W'
153)
154) END
18
PARA LOS PUNTOS SIGUIENTES, INCLUIR COMO EVIDENCIA LAS
PANTALLAS DEL PC:
1) DESCRIBA LOS FORMATOS DE ESCRITURA DE UN PROGRAMA EN
FORTRAN
Formatos de representación de datos Al hablar de formato de datos, se debe comenzar
diciendo que existen datos formateados y datos no formateados. Cuando uno se refiere a
datos formateados, está tratando con datos representados por caracteres de texto; es decir,
cadenas de caracteres y una persona con formación suficientes es capaz de interpretarlos.
En cambio, para los datos no formateados, la representación de este se hace a través de
código binario o código máquina, representación que es difícilmente interpretable por un
ser humano. Los datos formateados, por razones obvias, deben ser almacenados en
archivos, a los cuales la computadora accede para leerlos o bien para escribir datos.
El asterisco * resaltado indica que el formato es automático y ´está establecido por las
características propias del Fortran. El programador o el usuario solo debe saber que al
introducir los datos, ya sea a través del teclado o un archivo de texto, los datos requeridos
por la instrucción read deben estar separados por espacios o comas, los datos de tipo
carácter delimitados por comillas o dobles comillas. Para la escritura de datos, la
computadora proporcionara los datos de tipo numérico de manera completa, separados por
espacios; los datos de tipo lógica utilizando los caracteres T y F, representaciones de los
valores. true. y false. respectivamente, separados por espacios y las cadenas de caracteres
serán escritas de acuerdo a la longitud de la expresión de tipo carácter sin tipos de
separación.
Formatos preestablecidos Si bien, una de las ventajas de utilizar el formato automático,
tanto en la lectura, como en la escritura de datos, es que el programador y el usuario del
programa solo deben preocuparse de escribir bien las instrucciones del programa e
introducir correctamente los datos, separados por comas o espacios. Sin embargo, esta
aparente facilidad, tiene algunas consecuencias de orden práctico; como, por ejemplo:
• Dificultad para confeccionar cuadros o tablas de resultados presentables.
• Dificultad para reutilizar datos obtenidos, como datos de entrada.
• Confusiones con cadenas de caracteres
19
2) DESCRIBIR COMO SE REALIZA LA COMPILACION
Permite convertir un programa en código fuente a código máquina. Un compilador es un
programa que, a su vez, traduce un programa escrito en un lenguaje de programación a otro
lenguaje de programación, generando un programa equivalente. Usualmente el segundo
lenguaje es código máquina, pero también puede ser simplemente texto. Este proceso de
traducción se conoce como compilación. La razón principal para querer usar un compilador
es querer traducir un programa de un lenguaje de alto nivel, a otro lenguaje de nivel inferior
(típicamente lenguaje maquina). De esta manera un programador puede diseñar un
programa en un lenguaje mucho más cercano a cómo piensa un ser humano, para luego
compilarlo a un programa más manejable por una computadora.
El proceso de compilación puede desglosarse en dos subprocesos:
• El primero en el cual el compilador verifica que el código fuente este bien escrito, y al
decir “bien escrito” el código fuente debe cumplir las reglas sintácticas y semánticas del
lenguaje de programación, sin preocuparse sobre la pertinencia del conjunto de
instrucciones del programa. Resultado de este subproceso, si es que no hay errores, es un
código intermedio, llamado código objeto, manifestado, para FORTRAN y C, en archivos
de extensión .o.
• El segundo subproceso, consiste en enlazar (link en inglés) el código objeto producido en
el primer subproceso, eventualmente con otros códigos que se encuentran en archivos
biblioteca, cuya extensión usual son. a o .so. Luego optimizar este código y convertirlo
finalmente en código ejecutable, manifestado en archivos ejecutables.
20
Figura I.1.2: Esquema de la Estructura de un Programa
En consecuencia, el nivel de jerarquía puede ser definido como sigue: el nivel más alto
corresponde al primer nivel, el programa principal es de primer nivel o nivel 1, el nivel de
un subprograma corresponde al nivel inmediatamente inferior del subprograma de nivel
más inferior que sirve. A manera de ilustración, en la figura I.1.2, el programa principal es
de nivel 1, SP1, SP2 y SP3 son de nivel 2, SP4, SP5 y SP6 de nivel 3, y por ´ultimo SP7 de
nivel 4. Asimismo, la figura I.1.2 permite vislumbrar una relación entre subprogramas: SPk
≺ SPl , si existen subprogramas SPk+1, SPk+2, . . . , SPl−1, tales que SPk+1 es utilizado
por SPk, SPk+2 es utilizado por SPk+1 y así sucesivamente hasta SPl es utilizado por
SPl−1. SPi SPj , si SPi ≺ SPj .
A partir de la relación definida entre subprogramas, la primera regla que se tiene es que no
puede existir dos subprogramas SPk y SPl , tales que SPk ≺ SPl y SPl ≺ SPk al mismo
tiempo; aun si el proceso de compilación culmina sin errores, con un programa ejecutable,
al momento de ejecutar el programa se verán los errores. También, otra regla que debe
respetarse es que un subprograma no puede utilizarse así mismo, excepto en alguna
situación especial de recursividad que permite Fortran 90.
21
4) DESCRIBA LA LECTURA Y ESCRITURA DE DATOS
Uno de los elementos básicos de la programación e cualquier lenguaje es la lectura y/o
escritura de datos. En el lenguaje FORTRAN la lectura escritura se realiza a través de las
sentencias READ y WRITE
A la hora de leer/escribir datos necesitamos definir:
¿Qué tipo de datos son?
¿Dónde queremos leerlos/escribirlos?
¿Cómo queremos leerlos/escribirlos?
El esquema general es el de:
WRITE(___,___ ) ____
Igualmente con la sentencia READ.
En el primer campo se especifica donde están (o deben ponerse ) los datos (si ponemos un *
se tomará la pantalla). En el segundo campo como deben escribirse, (si ponemos un * se
tomará la opción por defecto) , y en el tercer campo la lista de variables a leer/escribir.
Adicionalmente a las variables también podemos escribir texto explicativo, poniéndolo
entre comillas simples.
WRITE(*,*)’Resultados = ’A,B
Hará aparecer en pantalla el texto
Resultados=
Seguido de los valores de las variables A y B.
22
5) OPERACIONES CON TABLEROS
Los tableros que son arreglos de valores de un determinado tipo, engloban las nociones de
vector (tablero unidimensional), matriz (tablero bidimensional), grilla (tablero
tridimensional), etc. Se los puede generar de manera estática o de manera dinámica. Los
tableros pueden ser tratados por Fortran, como listas de valores para ciertas funciones y
como matrices, en el sentido maten ático, por otras.
Para poder comprender, como Fortran maneja los tableros, debemos abordar desde el punto
de vista de una lista de valores indexados; por consiguiente: 1. Un tablero unidimensional
es una lista indexada de valores a un índice:
Se observa que el índice i que identifica la ubicación del valor en la lista está acotado por ni
y ns. Normalmente la cota inferior ni vale 1; sin embargo, nada impide que tome otros
valores, la única condición es que ns ≥ ni.
2. Un tablero bidimensional es una lista indexada de valores a dos índices:
23
Un tablero n-dimensional será una lista indexada a índices i1, i2,...,in, donde los índices
están acotados por una cota inferior nik y una cota superior nsk.
Ahora bien, la computadora solo maneja listas indexadas a un índice, por lo que Fortran, en
el proceso de compilación, convierte los tableros multidimensionales en tableros
unidimensionales, cuyo índice está acotado inferiormente por 1. Este hecho es fundamental
y debe ser tomado en cuenta, cuando se utiliza tableros multidimensionales en los
programas
Declaración de Tableros
Comencemos con la forma más fácil de declarar un tablero, por la forma estática,
definiendo el número de índices y el rango de los índices, al momento de declararlo. La
notación o simbología, en Fortran del rango es,
Significa que el tablero tiene n ´índices con sus respectivos rangos. Cuando un ni=1, no se
puede indicar el rango del ´índice, solamente colocando ns, en lugar de 1:ns; el compilador
asumirá que el rango es 1:ns. La declaración de un tablero, cuyos valores son de un tipo
dado, puede realizarse, utilizando el atributo dimensión o directamente sobre la variable, de
acuerdo a las siguientes sintaxis:
Donde, es uno de los tipos intrínsecos (integer, real, character, complex, logical) o un tipo
derivado; está dado por (V.2.4) y donde cada nik y nsk es un valor constante de tipo integer
o una variable constante de tipo integer, declarada antes, con el atributo parameter. De esta
manera, se tiene como, las siguientes declaraciones validas:
24
Una vez declarado un tablero, los elementos o componentes del tablero son identificados
por sus ´índices, tal como ilustran los siguientes ejemplos, de los tableros dados por el
código de más arriba.
Vector (10)
Vector (i)
Matriz (i,j)
Matriz (10,i*5-j)
Matemáticas (20,(n2-ns1)/2)
Por lo observado, puede utilizarse como ´índices: valores enteros fijos, variables de tipo
integer o expresiones de tipo integer. Solamente hay que tener cuidado que el número de
índices esté en concordancia con la declaración del tablero y que los valores de los índices
estén dentro el rango de cada uno de los ´índices del tablero.
6) OPERACIONES MATRICIALES
Fortran, en sus versiones 90 y posteriores permite realizar operaciones matriciales con
matrices (tableros bidimensionales) y vectores (tableros unidimensionales). A continuación
detallamos estas operaciones matriciales.
La adición, sustracción, multiplicación por escalar de matrices y vectores, se las trata como
tableros, lo que ha sido visto más arriba. La multiplicación de matrices, matrices con vector
(columna), se la efectúa utilizando la función intrínseca matmul, cuyas sintaxis son:
Está demás decir, que las tallas de las matrices y vectores involucrados deben ser
compatibles con la definición de la multiplicación de matrices y vectores.
Ejemplo.- Consideremos las matrices:
25
Ahora, ilustremos mathmul con líneas de código Fortran
Si no hay más que una sola instrucción ejecutable, se puede utilizar la forma compacta de la
instrucción if, como en el ejemplo siguiente:
26
Si hay más de una instrucción ejecutable, se debe utilizar un bloque if, como:
Do while
27
Una manera de limitar el número de iteraciones de un bloque de instrucciones do, consiste
en utilizar la variante do while, cuya estructura es:
El ciclo continua realizando mientras la condición sea cierta; eso significa, que para que se
ejecute al menos una vez, la condición tiene que ser cierta en el primer ciclo. En esta
variante, está permitido utilizar las instrucciones cycle y exit; como también es posible
imbricar otros ciclos do.
Donde puede ser una expresión de tipo character, logical o integer; él es opcional; es un
valor, rango de valores (especificados por :) o valores y rangos (separados por comas).
28
CONCLUSIONES.
CRUZ MORALES GUSTAVO
Al finalizar la practica numero dos, se puede concluir que los objetivos aclarados al
principio fueron cumplidos satisfactoriamente, ya que se pudo familiarizar con el entorno
del programa interactuando con ello, de igual manera se logro familiariza con los
operadores básicos con matrices, así como los tipos de variables que este maneja. Se logro
implementar las operaciones con números complejos y se comprendieron los comandos
básicos de programación. Una gran ventaja que este programa tiene es que el ingreso y la
declaración de los parámetros son fáciles de hacer a comparación con otros programas que
son más laboriosos. Este lenguaje de programación de alto nivel es utilizado por científicos
e ingenieros, ya que es muy práctico y nos ayuda como una herramienta de calculo en los
proyectos a fines. Con esta herramienta nuestra formación se fundamenta aun mas y nos
hace mas competitivos en el campo laboral ya que nos ahorra tiempo y nos ofrece
seguridad y precisión de los cálculos.
29
De igual manera se ha adquirido el conocimiento sobre como elaborar un código
(algoritmo) en este entorno de programación, desde lo más básico, tal como la declaración
y tipos de variables, hasta las operaciones que se pueden realizar, además claro de los
distintos tipos de funciones tales como las trigonométricas, etc.
De esta manera se cuenta con un elemento más de apoyo para el modelado y resolución de
problemas relacionados a los sistemas eléctricos de potencia de manera computacional, lo
cuál como se ha planteado resulta de gran ayuda no sólo en la confiabilidad de los
resultados, si no en la velocidad de obtención de los mismos.
Con este código podemos resolver un sinfín de análisis de sistemas eléctricos de potencia
como pequeños circuitos, desarrollando un adecuado código podemos dar solución a este
tipo de problemas. En la actualidad se sigue utilizando en diversos ámbitos, en menor
proporción que otros lenguajes de programación más actuales.
30