Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Programación con diseño descendente (página 3)




Enviado por Pablo Turmero



Partes: 1, 2, 3

Monografias.com

Resuelto 4-b
4.- Calcular la media de cinco números (leídos por teclado) utilizando para ello una función.
¿Qué cambios hay que hacer en el programa para usar perfil asumido en el array formal xx?

Monografias.com

Resuelto 5
5.- Lo mismo que en el ejercicio CAP5_1 pero usando una subrutina. Sumar dos números enteros usando una subrutina para calcular la suma.
Notar la forma de llamar a la subrutina usando la sentencia CALL.
La ejecución de la llamada ocurre de la misma manera que en el caso de una función.
El resultado de la suma de las dos variables se transfiere al programa principal a través del argumento Z.
¿En qué tipo de problemas usarías subprogramas función y en cuáles subprogramas subrutina? ¿Es indiferente?

Monografias.com

Resuelto 6
6.- Intercambiar los valores de dos variables enteras. Usar una subrutina para realizar el intercambio.

Monografias.com

Resuelto 7
7.- Lo mismo que en el ejercicio 4 pero usando una subrutina. Calcular la media de cinco números (leídos por teclado) utilizando para ello una subrutina.
En la llamada a la subrutina, la dirección de memoria del primer elemento de vector se pasa al argumento formal num y la solución calculada, media de los cinco números de ese array, se pasa a su vez al programa principal a través del argumento formal solu.

Monografias.com

Resuelto 8
8.- Calcular la cantidad de números positivos, negativos y ceros que hay en una matriz, sabiendo que el número de filas y columnas es como máximo 10. Usar una subrutina para leer el número de filas y columnas de la matriz, así como sus elementos y otra subrutina para calcular el número de positivos, negativos y ceros que tiene la matriz.
Un bucle controla que se introduce el tamaño permitido para la matriz, es decir, como máximo 10X10.
Se usan tres contadores para calcular las cantidades pedidas.

Monografias.com

Resuelto 9
9.- Generar aleatoriamente un número de 1 a 100. Se trata de adivinar qué número es, con sucesivos intentos.
random_seed() y random_number(arg) son dos subrutinas intrínsecas FORTRAN. La primera inicializa el procedimiento aleatorio y la segunda genera un número aleatorio real arg tal que 0< =arg< 1.

Monografias.com

Resuelto 10
10.- Leer por teclado el coeficiente de convección (h), la diferencia de temperatura (dT), el radio y la altura de un cilindro y calcular la pérdida de calor, según la fórmula q=hxAxdT, donde A es el área del cilindro..
El programa principal realiza la llamada a una función que, a su vez, llama a otra función. En concreto, la función area realiza la llamada a la función circulo para completar el cálculo del área del cilindro que se requiere.

Monografias.com

Resuelto 11-1º
11.- Cargar por teclado la temperatura T de 25 puntos del espacio con coordenadas (X, Y) en un instante de tiempo dado. Se pide:
a) Visualizar la temperatura T de un punto del espacio (X, Y) dado por el usuario por teclado.
b) Visualizar los puntos del espacio (X, Y), si los hay, que tienen el mismo valor de temperatura T, dada por el usuario por teclado.
c) Calcular la mayor (en valor absoluto) de las diferencias de las temperaturas respecto de la temperatura media.
Usar programación modular. Unidades: (X, Y, T) = (m, m, C).

Monografias.com

Resuelto 11-2º
a) Visualizar la temperatura T de un punto del espacio (X, Y) dado por el usuario por teclado.

Monografias.com

Resuelto 11-3º
b) Visualizar los puntos del espacio (X, Y), si los hay, que tienen el mismo valor de temperatura T, dada por el usuario por teclado.

Monografias.com

Resuelto 11- 4º
c) Calcular la mayor (en valor absoluto) de las diferencias de las temperaturas respecto de la temperatura media.
La utilidad de la función media aumentaría si la función difm calculara las medias de varios conjuntos de temperaturas.
La función media es un argumento actual de la función difm. Para especificarlo se usa el atributo EXTERNAL.

Monografias.com

Compartir datos con módulos
Los módulos para compartir datos son útiles cuando se necesita compartir grandes cantidades de datos entre muchas unidades de programa, pero manteniéndolos invisibles para las demás.
Además de las listas de argumentos, un programa Fortran puede intercambiar datos a través de módulos.
Un módulo es una unidad de programa, compilada por separado del resto, que contiene, al menos, las declaraciones e inicializaciones necesarias de los datos que se quieren compartir entre las unidades de programa.
La sintaxis general de un módulo es:
Para poder usar los datos de módulos en una unidad de programa hay que escribir, como primera sentencia no comentada inmediatamente después del cabecero de la unidad de programa, la sentencia:
MODULE nombre_modulo
[SAVE]
Declaración e inicialización de datos compartidos Cuerpo del módulo
END MODULE nombre_modulo
USE nombre_modulo1[,nombre_modulo2],…
Cada vez que se sale de un procedimiento, los valores de sus variables locales se pierden, a menos que se utilice la sentencia SAVE. Sirve para preservar los valores de los datos del módulo cuando éste se comparte entre varias unidades de programa.

Monografias.com

Compartir datos con módulos. Ejemplo
Escribir un módulo de datos para compartir dos vectores con valores iniciales v1(1 1 1 1 1) y v2(10 11 12 13 14) y una matriz m entre el programa principal y una subrutina sub. El programa principal debe calcular el vector suma de v1 y v2 y la subrutina debe volcar el vector suma en la primera columna de la matriz y el vector v2 en la segunda columna.
El uso de la instrucción SAVE impide que se vuelvan a inicializar los valores de las variables.

Monografias.com

Procedimientos módulo
Además de datos, un modulo puede contener procedimientos (subrutinas y/o funciones), que se denominan entonces procedimientos módulo.
Un procedimiento contenido en un módulo se dice que tiene una interfaz explícita, pues el compilador conoce todos los detalles de su lista de argumentos. Como consecuencia, cuando se usa el módulo en cualquier unidad de programa, el compilador chequea la concordancia de número, tipo y orden entre las listas de argumentos actuales y sus correspondientes formales, así como usos indebidos de los últimos según el valor del atributo INTENT.
La sintaxis general de un procedimiento módulo es:
MODULE nombre_modulo
[SAVE]
Declaración e inicialización datos compartidos
CONTAINS
Estructura general procedimiento1
[Estructura general procedimiento2]

END MODULE nombre_modulo
USE nombre_modulo1[,nombre_modulo2],…
Para hacer accesibles procedimientos módulos a una unidad de programa hay que escribir, como primera sentencia no comentada inmediatamente después del cabecero de la unidad de programa, la sentencia:
Por contraposición, un procedimiento externo que no está en un módulo se dice que tiene una interfaz implícita. El compilador desconoce los detalles de las listas de argumentos y, por tanto, no puede chequear errores de concordancias en las mismas. Es responsabilidad del programador encargarse de chequearlo.

Monografias.com

Ejemplo de procedimiento en un módulo
Ejemplo. Sumar dos números enteros usando un procedimiento módulo que contenga una subrutina que calcule la suma.
Comprobar que si se declaran los argumentos actuales del tipo REAL, el compilador encuentra el error de concordancia de tipos. Sin embargo, si se repite el ejercicio con la subrutina sub1 como procedimiento externo, el compilador no encuentra errores.

Monografias.com

Resuelto 1
1.- Calcular la media de cinco números (leídos por teclado) utilizando para ello una función.
¿Qué cambios hay que hacer en el programa para usar perfil asumido en el array formal xx?

Monografias.com

Ejemplo modulos:
(Gp:) PROGRAM test_random0
(Gp:) MODULE ran001
(Gp:) SUBROUTINE random0
(Gp:) SUBROUTINE seed
(Gp:) Llama a:
(Gp:) usan

Compilación:
%ifort –c random0.f90 (compila el módulo)
%ifort test_random0.f90 –o test_random0 random0.o
Crea:
random0.o
ran001.mod
Ejemplo en http://venus.ifca.unican.es/~gserrano/PEC

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter