jueves, 7 de julio de 2011

puntos extras subrutinas

una subrutina es tambien llamada subprograma que permite resolver un una tarea en particular  esto quiere decir que nos permiten hacer una serie de operaciones de tal mandera que despues las podremos llamar sin necesidad de preocuparnos de que lo que se haga en la subrutina influya en nuestro programa.

Los subprogramas sólo se ejecutan cuando
son invocados desde el programa principal
o desde otros subprogramas


 utilidad que tienen los subrutinas
– Dividir el trabajo
– Reutilización
– Facilidad de modificación.
– Legibilidad
– Descomponer la dificultad






la sintaxis de una subrrutina en un algoritmo es :

#include ...
// Programa principal
int main (int argc, char **argv)
{
...
}
// Subprogramas
... // Funciones y procedimientos





ejemplo de subprograma:

·
Subrutina que dibuja n asteriscos:
subroutine asteriscos (n)
implicit none
integer n
integer i
do i=1, n
print *, ‘*’
end do
end subroutine
·
Subrutina que intercambia los dos argumentos que recibe:
subroutine intercambio (a,b)
implicit none
integer a,b
integer temporal
temporal=a
a=b
b=temporal
end subroutine

En FORTRAN existe una palabra reservada relacionada con las subrutinas, denominada
sentencia permite detener la ejecución de una subrutina en cualquier momento y retornar al programa principal, su
utilización es altamente desaconsejable pues puede llevar a una desestructuración del algoritmo, es preferible diseñar
las subrutinas de tal forma que el retorno siempre se produzca al llegar al final de las mismas.
El siguiente programa muestra la forma de invocar las subrutinas anteriores:
RETURN; esta


program programa
implicit none
integer x,y
call asteriscos(5)
x=0;y=1;
print *,x,y
call intercambio(x,y)
print *,x,y
contains
subroutine asteriscos (n)
implicit none
integer n
integer i
do i=1, n
print *, '*'
end do
end subroutine
subroutine intercambio (a,b)
implicit none
integer a,b
integer temporal
temporal=a
a=b
b=temporal
end subroutine
end













1 comentario:

  1. ¿Te gustó mucho fortran o se te pasó leer lo que estabas copiando y pegando? :P Te pongo 2 puntos extra.

    ResponderEliminar