0% encontró este documento útil (0 votos)
31 vistas

RESUMENES S

Este capítulo trata sobre los aspectos fundamentales de la programación en Fortran 90, incluyendo el diseño del programa, las pruebas y la codificación. Explica que el diseño es lo más importante, seguido de las pruebas exhaustivas. También introduce los conceptos de módulos, procedimientos, funciones y subrutinas como elementos clave para estructurar programas bien diseñados. El capítulo 3 cubre los tipos de datos en Fortran como enteros, reales, lógicos, complejos y de caracteres.

Cargado por

Yisela Corpas
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
31 vistas

RESUMENES S

Este capítulo trata sobre los aspectos fundamentales de la programación en Fortran 90, incluyendo el diseño del programa, las pruebas y la codificación. Explica que el diseño es lo más importante, seguido de las pruebas exhaustivas. También introduce los conceptos de módulos, procedimientos, funciones y subrutinas como elementos clave para estructurar programas bien diseñados. El capítulo 3 cubre los tipos de datos en Fortran como enteros, reales, lógicos, complejos y de caracteres.

Cargado por

Yisela Corpas
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 22

RESUMENES: Libro Fortran 90

 CAPITULO 2.
En primer lugar vamos a dirigirnos hacia los aspectos importantes de la
programación en este capítulo. Para la realización de este se requiere saber hacia
dónde dirigirse, puesto que el aspecto más importante hablando de programación
es, sin duda, su diseño, con el r fin de proyectar una idea, mientras que el
siguiente más importante es la prueba exhaustiva del programa. También este
capítulo nos habla sobre La codificación real del programa, por importante que
sea, es relativamente sencillo al momento de hacer una comparación. Al
momento de realizar un problema lo primero que debemos hacer es analizar dicho
problema, una vez finalizado, podríamos seguir a resolver el problema de manera
sencilla ya echo los dos pasos mencionados anteriormente, finalizamos con la
programación del ejercicio a realizar. Sim embargo cabe destacar que al analiza
algunos de los principios más importantes de 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 es ilustrado por referencia a un problema simple, una
solución Fortran 90 para que se usa para presentar algunos de los conceptos
fundamentales de Fortran 90 programas Algunos de los aspectos clave de las
pruebas del programa también son breves discutido, aunque el espacio no permite
una cobertura completa de este Aspecto importante de la programación.
Volveremos a este tema en el Intermedio entre las partes I y II de este libro.
Finalmente, la diferencia entre la antigua forma de escritura de forma fija
Programas Fortran, que debieron su origen a las tarjetas perforadas, y el Se
presenta un enfoque alternativo de forma libre introducido en Fortran 90. Solo se
usará el nuevo formulario en este libro, pero el formulario anterior también
perfectamente aceptable, aunque no muy deseable en nuevos programas.
El programa escrito en el ejemplo 2.1 es muy simple, pero contiene
Muchos de los componentes básicos y conceptos que se aplican a todos los
Fortran 90
Programas Por lo tanto, lo examinaremos cuidadosamente línea por línea para
establecer estos
Conceptos antes de continuar para ver el lenguaje en sí mismo en detalle. Antes
de hacerlo, sin embargo, debemos enfatizar que el código que se muestra en el
ejemplo 2.1 no es todo el programa, ya que el procedimiento Calculate3ircle
también es parte del Mismo programa Lo que se muestra es simplemente el
programa principal o, más correctamente, La unidad principal del programa.
Tendremos más que decir sobre los otros tipos de programa la unidad más tarde.

CAPITULO 3.
Tipos de datos. Un tipo de datos es la propiedad de un valor que determina su
dominio (qué valores puede tomar), qué operaciones se le pueden aplicar y cómo
es representado internamente por el computador. Todos los valores que aparecen
en un programa tienen un tipo.
Todo esto va dado de una definición muy simple: El tipo de un dato es el conjunto
de valores que puede tomar durante la realización de un programa. Si se le
intenta dar un valor fuera del conjunto se producirá un error.
La asignación de tipos a los datos tiene dos objetivos principales: Por un lado,
detectar errores en las operaciones y por el otro, determinar cómo ejecutar estas
operaciones De Pascal se dice que es un lenguaje fuertemente tipeado. Esto
quiere decir que todos los datos deben de tener un tipo declarado explícitamente,
y además que existen ciertas restricciones en las expresiones en cuanto a los
tipos de datos que en ellas intervienen. Una ventaja de los lenguajes fuertemente
tipeados es que se gasta mucho menos esfuerzo en depurar (corregir) los
programas gracias a la gran cantidad de errores que detecta el compilador. Los
tipos de datos, como casi todos los objetos de Pascal, se pueden declarar.
La declaración de tipos ya se comentó en el tema correspondiente a la estructura
de un programa. Respectivamente. Casi todas las computadoras funcionan de
manera similar a esto, aunque cuando se usa el sistema binario el efecto es que si
el primer dígito binario (o bit) es uno, entonces el número es negativo, mientras
que si es cero, el número es positivo.
En ciencias de la computación, un tipo de dato informático o simplemente tipo, es
un atributo de los datos que indica al ordenador (y/o al
programador/programadora) sobre la clase de datos que se va a manejar. Esto
incluye imponer restricciones en los datos, como qué valores pueden tomar y qué
operaciones se pueden realizar.
Los tipos de datos más comunes son: números enteros, números con signo
(negativos), números de coma flotante (decimales) Toda la cuestión del
almacenamiento de diferentes tipos de información en una computadora puede,
Se vuelve bastante complicado, y volveremos a este tema varias veces a medida
que desarrollar una comprensión más completa del poder y la flexibilidad del
Fortran
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 función nombre función (arg1 ∈ tipo1, ..., argN ∈ tipoN)
Inicio
sentencia1
sentencia2
...
sentenciaN
fin
tipo función 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:
acción 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
Ejercicio capítulo 2 al 4
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.
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
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.

La capacidad de un programa de computadora para elegir cuál de dos o más
secuencias alternativas de declaraciones obedecer es un factor importante para
hacer que las computadoras sean herramientas tan poderosas. Lo que hace que
las computadoras sean tan poderosas, es su capacidad para variar el orden de
ejecución de las declaraciones de acuerdo con criterios lógicos que no se
determinan hasta después de que el programa ha comenzado la ejecución. Este
nos hace referencia de cómo usar el bloque declaración IF, ELSE, THEN, BUT; La
construcción de bloque IF y la construcción CASE proporcionan los medios para
que un programa seleccione uno de varios cursos de acción alternativos. La
instrucción IF lógica proporciona una alternativa más simple a la construcción IF
de bloque en un número limitado de casos, todo esto consiste en un nuevo tipo de
expresión: una expresión lógica, el cual dirige a la computadora tomas decisiones
a la hora de enfrentarse; el criterio de decisión de Fortran también es una
afirmación que es verdadera o falsa; el decir verdadera o false aquí, trata de las
expresiones lógicas y algunas de sus formas más simple son aquellas que
expresan relación entre dos valores numéricos, Una vez que podemos declarar
variables lógicas, la siguiente pregunta es cómo podemos escribir los dos posibles
valores lógicos, verdadero y falso en Fortran, al igual que con los operadores
aritméticos, es importante que las prioridades relativas de los distintos operadores
lógicos se entiendan. Los operadores relacionales se utilizan para derivar valores
lógicos de una comparación. Los operadores lógicos se utilizan para combinar dos
valores lógicos y, por lo tanto, para permitir comparaciones más complejas. Las
variables lógicas toman uno de dos valores: TRUE. o FALSE. La declaración de
toma de decisiones más poderosa en Fortran fue la declaración lógica IF, que
tomó la forma IF (expresión lógica) Declaración en Fortran esto es exactamente
equivalente a un bloque IF con un bloque que consiste en una sola declaración, en
particular, esto es una forma de declaración extremadamente útil en el control de
bloques de declaraciones que deben repetirse varias veces, un requisito de
programación muy común. En la sección 5.5 nos dicen que el problema principal
es establecer la relación entre letras mayúsculas y minúsculas, de modo que las
conversiones se puedan hacer fácilmente. Allí usan el código ASCII para obtener
buenos resultados debido a la existencia de los dos fondos intrínsecos IACHAR y
ACHAR. Las expresiones de caracteres se pueden comparar usando la secuencia
de clasificación ASCII usando funciones intrínsecas especiales. El primero de
estos proporciona la posición de su argumento de carácter en la secuencia de
clasificación ASCII, mientras que el segundo devuelve el carácter en una posición
especificada en esa secuencia, en algunas situaciones, es necesario tener una
ordenación integrada en la decisión sobre qué opción tomar porque existe una
superposición entre "algunos de los
posibles criterios de decisión"; Antes de escribir el programa real, se nota que a
pesar del hecho de que el problema parece ser adecuado para una declaración
CASE, la incomodidad en calcular un valor adecuado para usarlo como selector de
casos podría hacer uso de un bloque SI construye más apropiado. En este caso.
El tema repitiendo pasos, tratado en la unida seis nos habla de la capacidad de
repetir secuencias de enunciados, ya sea un número predeterminado de veces o
hasta que se cumpla alguna condición, El cual tiene Fortran y trata de una
instalación muy poderosa pero simple de usar para ir controlando la repetición de
bloques de código; Fortran contiene una serie de declaraciones que nos ayudan
en ciertos casos y a la vez por su naturaleza, tales declaraciones interrumpen el
flujo normal de control a través del programa y deben usarse con cuidado si no
van a conducir a otros problemas, la mayoría de estos programas consisten en
una serie de instrucciones que se ejecutan en secuencia solo una vez lo que nos
lleva a conclusión de que sería más útil si pudiera repetirse con diferentes
conjuntos, dándonos una serie de pasos como por ejemplo: el primero trata
simplemente de establecer el proceso que debe repetirse un número
predeterminado de veces. Ahora bien, hablaremos del DO, se pueden nombrar
construcciones de DO de bloque, construcciones de IF de bloque y construcciones
de CASE la construcción DO proporciona los medios para controlar la repetición
de declaraciones dentro de un ciclo, en un ciclo DO controlado por conteo, la
variable DO se incrementa en cada pasada a través del ciclo las dos primeras
alternativas definen un ciclo DO controlado por conteo en el que se utiliza una
variable entera, conocida como la variable DO, para determinar cuántas veces se
debe ejecutar el bloque de declaraciones. Hay muchas situaciones en las que no
es posible determinar este número de antemano, por ejemplo, en un cálculo
matemático que se terminará cuando algún valor sea inferior a un valor
predeterminado. En esta situación, podemos usar la tercera forma de la
declaración de DO, junto con una nueva declaración, EXIT, que provoca una
transferencia de control a la declaración que sigue inmediatamente a la
declaración de END DO. Como esta declaración, cuando se ejecuta, hará que se
omitan todas las declaraciones restantes en el bucle, se deduce que siempre se
usa en asociación con una de las declaraciones de control, sin embargo, el uso de
esta forma de la declaración DO conlleva el riesgo de que nunca se cumpla la
condición de obedecer la declaración EXIT. Es una buena práctica de
programación, ya que permite al programador controlar la lógica del programa
mucho más fácilmente de lo que sería de otro modo. Sin embargo,
ocasionalmente hay situaciones en las cuales esto es inconveniente o dificulta la
programación, y existen tres declaraciones adicionales para
Ayudarnos en estas situaciones excepcionales. La primera de estas declaraciones
simplemente finaliza la ejecución sin la necesidad de encontrar una manera de
llegar a la declaración END de la unidad principal del programa. Fortran 90
contiene una serie de declaraciones y construcciones que se incluyen para la
compatibilidad con versiones anteriores de Fortran, pero que no deben usarse en
nuevos programas, una tercera variación, que era la única posibilidad estándar
antes de Fortran 90, usa cualquiera de las dos primeras formas anteriores como la
declaración inicial del ciclo, pero en lugar de una declaración END DO, la
declaración final del ciclo puede ser una de una amplia gama de declaraciones de
Fortran. También debemos saber que la instrucción STOP provoca una
terminación inmediata de la ejecución del programa, podemos usar una etiqueta
de declaración para identificar una declaración.
Ejemplo del capítulo 5 y 6
[Un programa para resolver una ecuación cuadrática usando un CASO
Declaración para distinguir entre los tres casos
! Declaración constante
REAL, PARÁMETRO :: epsilon = lE-6
! Declaraciones variables
REAL :: a, b, c, d, sqrt_d, x1, x2
~ INTEGER :: selector
! Leer coeficientes
PRINT *, "Escriba los tres coeficientes a, banda c"
LEER *, a, b, c
! Calcule b ** 2-4 * a * c y el selector de casos resultante
d = b ** 2 - 4.0 * a * c
selector = d / epsilon
! Calcular e imprimir raíces, si las hay
SELECCIONE CASO (selector)
CASO 1:)
! Dos raíces
sqrt_d = SQRT (d)
xl = (-b + sqrt_d) / (a + a)
x2 = (-b-sqrt_d) / (a + a)
PRINT *, "La ecuación tiene dos raíces:", xl "y", x2
CASO (0)
! Una raíz
xl = -b / (a + a)
PRINT *, "La ecuación tiene una raíz:", xl
CASO 1)
! Sin raíces
PRINT *, "La ecuación no tiene raíces reales"
FIN SELECCIONAR
(b) Usando una construcción IF
PROGRAMA quadratic_by_block_IF
IMPLÍCITO NINGUNO
! Un programa para resolver una ecuación cuadrática usando un bloque IF
! declaración para distinguir entre los tres casos
! Declaraciones constantes
REAL, PARÁMETRO :: epsilon = lE-6
! Declaraciones variables
REAL :: a, b, c, d, sqrt_d, x1, x2
! Leer coeficientes
PRINT *, "Escriba los tres coeficientes a, banda c"
LEER *, a, b, c
[10:52 p. m., 5/6/2020] Yisela Corpas: PROGRAMA examen_marca
IMPLÍCITO NINGUNO
Este programa imprime estadísticas sobre un conjunto de resultados de
exámenes.
! Declaraciones variables
INTEGER :: i, número, marca y
suma = O, máximo =-ENORME (l), mínimo = ENORME (l)
REAL :: promedio
! Leer el número de marcas y luego las marcas
PRINT *, "¿Cuántas marcas hay?"
LEER *, número
PRINT *, "Por favor escriba", número, "marcas:"
! Bucle para leer y procesar marcas
DO i = l, número
LEER *, marcar
! En cada pase, suma de actualización, máximo y mínimo
suma = suma + marca
IF (marca> máximo) máximo = marca
IF (marca <mínimo) mínimo = marca
END DO
! Calcule la calificación promedio y los resultados de salida
promedio = REAL (suma) / número
PRINT *, "La marca más alta es", máximo
PRINT *, "La marca más baja es", mínimo
PRINT *, "La nota promedio es", promedio
FIN DEL PROGRAMA examen_marca

En informática científica y de ingeniería es comúnmente necesario manipular


conjuntos de valores ordenados, como vectores y matrices. También hay un
requisito común en muchas aplicaciones para repetir la misma secuencia de
operaciones en conjuntos de datos sucesivos. Para manejar estos dos requisitos,
Fortran nos proporciona amplias instalaciones para agrupar un conjunto de
elementos del mismo tipo que una matriz que puede funcionar como un objeto por
derecho propio o por referencia a cada uno de sus elementos individuales. Este
capítulo (7) nos explica los principios de las funciones de procesamiento de matriz
de Fortran 90. Estos son considerablemente más potentes que los de cualquier
otro lenguaje de programación e incluyen la construcción de constantes con
valores de matriz, la entrada y salida de matrices, el uso de matrices como
argumentos de los procedimientos y la devolución de una matriz como resultado
de una función. Para facilitar la comprensión, en este capítulo la descripción estará
restringida a las matrices que tienen un solo subíndice, una matriz es un conjunto
ordenado de variables relacionadas a las que se hace referencia por un solo
nombre, los elementos individuales en una matriz se denominan elementos de
matriz, los elementos de la matriz se identifican siguiendo el nombre de la matriz
mediante una expresión de subíndice entero, encerrada entre paréntesis, una
matriz puede tener hasta siete subíndices, cada uno de los cuales se relaciona
con una dimensión de la matriz, cada dimensión de una matriz tiene un límite
inferior y un límite superior que, juntos, definen el rango de valores de subíndice
permitidos para esa dimensión. El número de subíndices permitidos para una
matriz se denomina rango, la extensión de una dimensión es el número de
elementos en esa dimensión. El tamaño de una matriz es el número total de
elementos en la matriz, la forma de una matriz está determinada por su rango y la
extensión de cada dimensión, la declaración de una matriz debe especificar su
rango y los límites para cada dimensión. Una matriz de forma explícita es una
matriz cuyos límites se especifican explícitamente, una matriz de forma supuesta
es un argumento de matriz ficticia cuyos límites no se especifican en la
declaración de la matriz, pero que asume la misma forma que el argumento de
matriz real correspondiente. Una matriz automática es una matriz en un
procedimiento, que no es un argumento ficticio, que tiene límites no constantes y
que obtiene la información requerida para calcular sus límites desde fuera del
procedimiento al momento de ingresar el procedimiento. Una constante con valor
de matriz se especifica mediante un constructor de estructura, que puede incluir
uno o más elementos DO implícitos. La entrada y salida de las matrices se puede
especificar elemento por elemento, por matrices completas o mediante el uso de
una DO implícita. Dos matrices son conformables si tienen la misma forma; Un
escalar es compatible con cualquier matriz. Todos los operadores intrínsecos se
definen para matrices conformables además de escalares. Las operaciones
intrínsecas en las matrices tienen lugar elemento por elemento. Muchos
procedimientos intrínsecos son elementales y pueden usarse con argumentos de
matriz para entregar resultados valorados por la matriz. Una función con valor de
matriz debe tener los límites de la variable de resultado con valor de matriz
declarada en una declaración de declaración de tipo dentro del cuerpo del
subprograma de función. Las definiciones de tipo derivadas pueden tener matrices
como componentes, siempre que sean matrices de forma explícita que tengan
límites constantes.
Las facilidades de entrada y salida de cualquier lenguaje de programación son
extremadamente importantes, porque es a través de estas características del
lenguaje que se lleva a cabo la comunicación entre el usuario y el programa. Sin
embargo, esto con frecuencia conduce a un conflicto entre la facilidad de uso y la
complejidad, y Fortran 90, por lo tanto, proporciona instalaciones para entrada y
salida en dos niveles bastante diferentes. Las declaraciones de entrada y salida
dirigidas a la lista que hemos estado utilizando hasta ahora proporcionan la
capacidad de entrada directa desde el teclado y salida a la impresora. Sin
embargo, estas declaraciones le permiten al usuario muy poco control sobre el
origen o el diseño de los datos de entrada, o sobre el destino o el diseño de los
resultados impresos. Este capítulo presenta las características de entrada/salida
más generales de Fortran 90, por medio de las cuales el programador puede
especificar exactamente cómo se presentarán e interpretarán los datos, de qué
unidades de entrada disponibles se leerán, exactamente cómo se obtienen los
resultados. que se mostrará y a qué unidades de salida disponibles se enviarán
los resultados. Debido a la interacción con el mundo fuera de la computadora, la
entrada y la salida tienen el potencial de más errores de tiempo de ejecución que
la mayoría de las otras partes de un programa, y el enfoque de Fortran para la
detección de tales errores también se discute brevemente. Durante los datos de
entrada dirigidos a la lista, los valores están separados por separadores de
valores, cada uno de los cuales puede ser una coma, una barra diagonal, un
espacio en blanco o el final del registro, precedidos y/o seguidos por cualquier
número de espacios en blanco consecutivos. Si no hay ningún valor entre dos
separadores de valores consecutivos, se lee un valor nulo, sin modificar el
elemento de la lista de entrada correspondiente. Los datos de caracteres leídos
por una declaración READ dirigida por lista deben estar delimitados por apóstrofos
o comillas a menos que estén contenidos en una sola línea, no contengan
espacios en blanco, comas o barras, no comience con un apóstrofe o comillas, y
no comience con una secuencia de dígitos seguida de un asterisco. Se utiliza un
especificador de formato para proporcionar la edición de datos especificada por el
usuario en la entrada y la salida, y se puede incrustar en la declaración de
entrada/salida o en una declaración de FORMATO separada, los descriptores de
edición se usan para editar datos enteros. Para E, los descriptores de edición se
utilizan para editar datos reales; A los descriptores de edición se utilizan para
editar datos de caracteres. Los descriptores de edición L se utilizan para editar
datos lógicos. Los descriptores de edición x, T, TL y TR se utilizan para controlar
dónde se leen los datos en un registro de entrada y dónde se colocan en un
registro de salida. Los descriptores/edit se utilizan para identificar el final de un
registro. Los formatos, o partes de formatos, se repiten tantas veces como sea
necesario hasta que la lista de entrada o salida se haya agotado. Las
declaraciones READ y WRITE con listas de información de control se usan para
proporcionar una mayor flexibilidad que la que es posible con las simples
declaraciones READ e PRINT que siempre usan las unidades de entrada y salida
predeterminadas. La lista de información de control en una declaración READ o
WRITE consiste en una lista de especificadores que proporcionan información
adicional para su uso durante la entrada o salida. Un especificador UNIT se usa
para especificar la unidad de entrada o salida que se usará para una declaración
READ o WRITE, un especificador FMT se usa para especificar el formato que se
usará con una declaración READ o WRITE, un especificador IOSTAT se usa para
determinar si una declaración READ o WRITE se ejecutó sin ningún error, y para
proporcionar información sobre el tipo de error si se produjo uno , el primer
carácter de cada registro de salida que se envía a la unidad designada por el
procesador como impresora se elimina antes de que se realice la impresión y se
utiliza para controlar el movimiento vertical de la impresora; se llama el carácter de
control de la impresora.
Uno de los aspectos más importantes de la informática es la capacidad de un
programa para guardar los datos que ha estado utilizando para su uso posterior,
ya sea por sí mismo o por otro programa. Esto implica la salida de los datos a un
archivo, generalmente en alguna forma de medio magnético u óptico, para su
entrada en algún momento posterior. Los archivos pueden escribirse y leerse
secuencialmente o, en algunos tipos de medios, la información en un archivo
puede escribirse y leerse en un orden aleatorio. En cualquier caso, el archivo
puede almacenarse permanentemente dentro del sistema informático, por
ejemplo, en un disco magnético o magneto-óptico que es una parte integral de la
computadora, o puede almacenarse en algún medio, como un disco o una cinta,
que se puede quitar de la computadora para guardarla o transportarla físicamente
a otra computadora. Este capítulo muestra cómo las declaraciones LEER y
ESCRIBIR discutidas en el Capítulo 8 pueden usarse para leer datos de un
archivo y escribir datos en un archivo, de manera secuencial, e introduce varias
declaraciones adicionales que se requieren cuando se trata con archivos. Los
usos más sofisticados de los archivos, incluido el acceso aleatorio a la información
almacenada en un archivo, se analizan más adelante. La información que se
conservará después de que finalice la ejecución de un programa se almacena en
un archivo. Un archivo consta de una secuencia de registros. Se puede acceder a
los registros de un archivo de manera secuencial o de manera aleatoria. Escribir
en un archivo secuencial destruye todos los registros después del escrito. Un
archivo puede consistir en registros formateados y, opcionalmente, un registro de
archivo final, o puede constar de registros sin formato y, opcionalmente, un
registro de archivo final. Un registro formateado se escribe mediante una
declaración WRITE formateada, o por algún medio externo a Fortran, y consta de
una secuencia de caracteres; se lee mediante una declaración READ formateada.
Un registro sin formato se escribe mediante una instrucción WRITE sin formato y
consta de una secuencia de valores en una forma dependiente del procesador; se
lee mediante una declaración READ sin formato. Un registro de archivo final se
escribe mediante una instrucción ENDFILE. La lectura de un registro de archivo
final provoca una condición de fin de archivo, que provocará el fallo del programa
a menos que se detecte, por ejemplo, mediante el uso de un especificador
IOSTAT en una declaración READ. Un archivo debe estar conectado a un
programa mediante una instrucción OPEN antes de que se use por primera vez.
Una declaración ABIERTA puede incluir especificadores para especificar el tipo de
archivo, el tipo de acceso permitido al archivo y la posición en la que comenzará la
lectura o escritura en el archivo. Las declaraciones RETROCESO y REBOBINAR
pueden usarse para colocar el archivo antes de una declaración LEER o
ESCRIBIR.
Ejemplo del capítulo 7
PROGRAMA encuesta_análisis
IMPLÍCITO NINGUNO
TIPO persona
CARÁCTER (LEN = 12)
nombre_inicial, nombre_inicial * l,
Y
apellido
INTEGER :: edad
PERSONAJE :: sexo
!M/F
CARÁCTER (LEN = ll) .. social_security
REAL :: altura, peso
TIPO FINAL persona
INTEGER, PARAMETER :: max-people = 100
ENTERO::
yo
TIPO (persona), DIMENSIÓN (máx. Personas) :: individual
DO i = l, max-personas
LEER *, individual (i)
SI (individuo (i)% edad) <0) SALIR
END DO
FIN DEL PROGRAMA encuesta_análisis
edad <O termina datos

El capítulo 10 presenta algunas de las principales limitaciones que son


Impuesto a la resolución numérica de problemas por las características físicas de
Computadoras, así como por la naturaleza de los problemas que se resuelven, y
Los medios que se proporcionan en Fortran 90 para garantizar que los efectos de
Estas restricciones son predecibles y controlables. Dos de los más
Problemas numéricos comunes, el ajuste de una línea recta a través de un
conjunto de
Datos experimentales o empíricos y la solución de ecuaciones no lineales,
Cálculos numéricos, precisión y redondeo.
Errores
Los dos tipos principales de números utilizados en Programas Fortran son (REAL
e INTEGER) Los números INTEGER se almacenan exactamente, sin ninguna
parte fraccional, y todos
Los cálculos realizados sobre ellos, aparte de la división, conducen a un resultado
que es
Matemáticamente preciso Por lo general, los números INTEGER pueden estar en
el rango -10 9 hasta + 10 9. Números INTEGER. Normalmente se usan para
contar y operaciones similares. Números reales, por otro lado, se almacenan como
una aproximación el valor matemático utilizando una representación de punto
flotante que permite una amplia rango de valores que se almacenarán con el
mismo grado de precisión. Típicamente, un REAL
Variables REAL parametrizadas
Un valor real es una aproximación que representa un valor numérico. Valor a una
precisión especificada utilizando una representación de punto flotante.
Para permitir un control más preciso sobre el rango de precisión y exponente de
Números de coma flotante, las variables REALES están, de hecho,
parametrizadas. Es decir, ellos
Tener un parámetro asociado con ellos que especifica la precisión mínima y
Requisitos de rango de exponente. Esto se llama parámetro tipo amable. Cuando
esto
Parámetro no se especifica explícitamente, se dice el tipo de número de punto
flotante
Ser por defecto real. El valor del parámetro tipo amable asignado a un real
predeterminado es
Depende del procesador.
Al usar el tipo amable en asociación con la función intrínseca
SELECTED_REAL_KIND proporcionará portabilidad completa. Esta función
intrínseca tiene dos argumentos opcionales P y R.
P es un argumento entero escalar que especifica el número mínimo de decimales
Dígitos requeridos y R es un argumento entero escalar que especifica el mínimo
decimal
Rango de exponente requerido. El resultado de la función es el tipo de clase que
cumple, o
Excede mínimamente los requisitos especificados por P y R. Si hay más de un tipo
El parámetro type cumple los requisitos, el valor devuelto es el que tiene
La precisión decimal más pequeña. Si hay varios de esos valores, el más pequeño
es devuelto.
Una introducción a los métodos numéricos en los programas Fortran 90
En una computadora que tiene 15 dígitos significativos y un rango de exponente
de
300 por sus números de precisión simple, sin embargo, tanto m y n se almacena
como
Números de precisión simple, y las operaciones aritméticas en ellos usarán un
solo
Registros de precisión.
El punto importante a tener en cuenta aquí es que, independientemente de la
computadora en
En el que se compila y ejecuta el código anterior, no tendrá que cambiarse en
Cualquier forma de cumplir con los requisitos de precisión y rango especificados.
Los valores
Devuelto por SELECTED_REAL_KIND
La función puede cambiar, pero eso no sirve, Consecuencia del programa en lo
que respecta a la portabilidad. De hecho, debido a la falta de portabilidad de los
valores de los parámetros de tipo amable, recomendamos que
Solamente ser utilizado a través de la SELECTED_REAL_KIND La forma más fácil
de hacer esto es
Para definir una constante para usar en declaraciones de variables posteriores:
INTEGER, PARAMETER ::.
Las variables fueron el equivalente de los reales por defecto en Fortran 90. Si se
obtuviera más precisión
Se requiere que una variable REAL proporcionada, un segundo tipo de variable
llamada DOBLE
PRECISIÓN
Estaba disponible para almacenar números reales con mayor precisión y,
Generalmente, un rango de exponente más amplio que el proporcionado para
entidades REALES.
Una variable de DOBLE PRECISIÓN usa dos unidades de almacenamiento
numérico consecutivas (aunque no necesariamente
Mantenga los números con exactamente el doble de dígitos significativos de
precisión que un real predeterminado). Precisión doble
Las variables deben declararse en una declaración de especificación de tipo que
tome la forma
DOBLE PRECISIÓN nombre!, nombre2, ...
La entrada y salida de los valores de precisión doble se realiza mediante
descriptores de edición F o E exactamente iguales.
Las constantes de doble precisión se escriben en forma de exponente y mantisa,
pero con una D para
Separe las dos partes en lugar de una E como con constantes reales.
El capítulo 11 en particular, proporciona una base más formal para la relación
entre argumentos reales y ficticios, así como la introducción del concepto de
argumentos opcionales.
Otro tema importante introducido en este capítulo se refiere Con la relación entre
las variables y otras entidades definidas en diferentes partes de un programa,
dónde están accesibles y las formas en que se puede acceder en otras partes del
programa.
El propósito principal de un procedimiento es permitir que un programa se rompa
Arriba en pequeños segmentos, cada uno de los cuales lleva a cabo una sola
tarea. No solo esto
Significa que es más fácil desarrollar y probar un programa de lo que sería el caso
si Fueron escritos como una sola unidad de programa, pero proporciona muchas
ventajas en Eficiencia y reutilización. En particular, un procedimiento bien
diseñado puede tratar Muchos problemas relacionados a través de variaciones en
sus argumentos.
Hemos visto que un procedimiento puede interactuar con la unidad del programa
desde que se invoca (es decir, llamada, en el caso de una subrutina, o
referenciada, en el caso de una función) de dos maneras. El primero de ellos es a
través de sus argumentos.
Existen en varias versiones adecuadas
Para diferentes tipos de argumentos. Los procedimientos externos están escritos
en Fortran en Forma de un subprograma de función o un subprograma de
subrutina.
La declaración inicial SUBROUTINE o FUNCTION normalmente contiene una lista
de dummy argumentos, encerrados entre paréntesis... UNA LLAMADA a esa
subrutina, o una referencia a esa función, contiene una lista de argumentos reales
que deben coincidir, exactamente, con los argumentos ficticios con respecto al
número de argumentos y sus tipos.
Durante la ejecución de una instrucción CALL o una referencia de función
apropiada
Se tomarán medidas para vincular los valores de los argumentos ficticios con los
de argumentos reales El método utilizado no es importante pero dos comunes
Los enfoques son
(1) para pasar las ubicaciones de los argumentos reales en la memoria a la
Procedimiento de tal manera que permita que los argumentos ficticios hagan
referencia a la mismas ubicaciones de memoria que los argumentos reales, y
(2) para copiar los valores de los argumentos reales a las variables en el
procedimiento
Representando los argumentos ficticios cuando se ingresa el procedimiento, y
Luego copiar el valor de los argumentos ficticios de nuevo al valor real
Argumentos cuando el procedimiento ha terminado.
Ambos enfoques pueden ser utilizados por un compilador, dependiendo del tipo de
Argumento, pero el enfoque utilizado no afectará el comportamiento del programa.
Los argumentos se usan dentro de un procedimiento por medio del atributo
INTENT
, los argumentos ficticios han sido variables escalares o
Matrices Sin embargo, también es posible pasar el nombre de un procedimiento
como
Argumento a un procedimiento, en cuyo caso se requiere una nueva forma de
declaración para
El argumento ficticio correspondiente.
En el caso de un argumento ficticio de función, la declaración del tipo de
El argumento ficticio de la función debe incluir un atributo EXTERNO:
REAL, EXTERNO :: nombre unión ficticio.
En el capítulo 12 Los módulos se han utilizado para proporcionar acceso global a
Variables y tipos derivados, y también para proporcionar una interfaz explícita para
Procedimientos externos Los módulos son, sin embargo, mucho más poderosos
que esto, y proporcionar una amplia capacidad para crear un entorno adecuado
Para el área de aplicación particular para la que se está escribiendo un programa.
Uno de los posibles problemas para obtener acceso a las entidades en un módulo
Por asociación USE es que los nombres de una o más de estas entidades pueden
entrar en conflicto
Con otros nombres en la misma unidad de alcance USE permite entidades en el
Módulo al que se hará referencia con un nombre diferente en la unidad de alcance
que contiene ese
Una instrucción USE puede especificar nombres locales para entidades accesibles
desde
Módulo cambiando el nombre de las entidades del módulo.
Una declaración USE puede restringir las entidades accesibles desde el módulo
mediante el uso de un SOLO calificador, Se pueden hacer los componentes de un
tipo derivado que se define en un módulo privado mediante la inclusión de una
declaración PRIVADA antes de cualquier componente declaraciones, en cuyo
caso los componentes son inaccesibles desde fuera del módulo que no sea
mediante el uso de procedimientos de módulo de ese módulo
Las definiciones de tipo derivadas y los objetos de datos declarados dentro de un
módulo pueden ser dados un atributo público o privado como parte de su
declaración. Una declaración PRIVADA o PÚBLICA en un módulo establece el
atributo de accesibilidad de las entidades listadas como privadas o públicas, según
corresponda.
Se puede usar un bloque de interfaz para ampliar el significado de la asignación
para Tipos de datos intrínsecos. Ejemplo:
PROGRAMA test_vectors
USE vectores
IMPLÍCITO NINGUNO
ENTERO::
punto, yo
REAL, DIMENSIÓN (3) :: a
REAL, DIMENSIÓN (20) :: b
TIPO (vector) :: v, w
Configurar en matrices y convertir a vectores
a = (/1.0, 2.0, 3.0 /)
si
(/2.0, 3.0, 4.0, 5.0, (0.0, i = 1,16) /)
v = create_vector (a, 3)
w = create_vector (b, 3)
! Imprimir detalles de vectores
PRINT '("La longitud de v es", n /
,
"Sus elementos son (", 3 (F5.l, ","), ")") ',,
vector_size (v), vector_array (v)
PRINT '("La longitud de w es", I3 /
,
"Sus elementos son (", 3 (F5.l, ","), ")") ',,
vector_size (w), vector_array (w)
Calcular e imprimir su producto escalar
PRINT '("Su producto escalar es", F6.l)',
,
producto escalar (v, w)
Probar mensajes de error
w = create_vector (b, 20)
w = create_vector (b, 5)
dot = producto escalar (v, w)
FIN DEL PROGRAMA test_vectors
Figura 12.4
Un programa de prueba para los vectores del módulo.
La longitud de v es 3
Sus elementos son (1.0, 2.0, 3.0)
La longitud de w es 3
Sus elementos son (2.0, 3.0, 4.0)
Su producto escalar es
20,0
Error: vector de longitud
20 solicitados
El máximo permitido es 10
Error: los vectores son de diferentes longitudes
3y
55
PRESENTADO POR: YISELA CORPAS NEGRETE

También podría gustarte