Universidade Federal do Maranhão Curso de Química Departamento de Informática Introdução à Computação Linguagem Fortran Profa. Msc. Maria Auxiliadora Freire maria@deinf.ufma.br 1
LINGUAGEM FORTRAN FUNÇÕES E SUBROTINAS Podem ser usadas para economizar espaço e tempo de programação já que podem ser usadas várias vezes num mesmo programa. As variáveis e rótulos usados em funções e subrotinas são locais e por isso devem ser declarados novamente. Os parâmetros necessários devem ser passados junto com a chamada da função ou subrotina, devem vir entre parênteses e separados por virgula. Retornam sempre um valor, e a ela podem ser passados qualquer número de parâmetros. 2
LINGUAGEM FORTRAN CRIANDO UMA FUNÇÃO Chamada: nome_da_função (lista_de_parâmetros) Definição: Function nome_da_função(lista_de_parâmetros) definição e declaração das variáveis e constantes locais seqüência de comandos return 3
FUNÇÕES Exemplo 1 Função para calcular a área de uma circunferência C programa principal real r,pi PI=3.14 print*, "entre com r" read *,r area = farea(r,pi)! Chamada da Função para cálculo da área print *,area stop function farea(r,pi)! Função para cálculo da área real r,pi,farea farea = (PI*r**2) Return 4
FUNÇÕES Exemplo 2 Função para calcular fatorial C programa principal integer n,fat print*, "entre com um numero" read *,n print *," fatorial de ",n," = ", fat(n) stop function fat(n) integer n,fat fat = 1 do i = 1,n fat = fat * i do Return 5
LINGUAGEM FORTRAN SUBROTINAS Chamada: CALL nome_da_subrotina (lista_de_parâmetros) Definição: SUBROUTINE nome_da_subrotina (lista_de_parâmetros) definição e declaração das variáveis locais seqüência de comandos Return 6
SUBROTINA Exemplo1 ler e imprimir um vetor C programa principal real A(5) print*, "Chamar a subrotina de leitura " call ler (a) print *, " " print*, "Chamar a subrotina de impressão" call imprimir(a) print *, " " pause stop 7
SUBROTINA Exemplo1 ler e imprimir um vetor subroutine ler (a) real A (5) do i=1,5 print*, "entre com A(",i,")" read (*, *) A(i) do return 8
SUBROTINA Exemplo1 ler e imprimir um vetor subroutine imprimir (a) real A (5) print*, "imprimindo" do i=1,5 print *,A(i) do return 9
SUBROTINA Exemplo2 C programa principal ordenar vetor real A(5) print*, "Chamar a subrotina de leitura " call ler (a) print *, Chamar a subrotina de ordenar call ordena (a) print*, "Chamar a subrotina de impressão" call imprimir(a) print *, " " pause stop 10
SUBROTINA Exemplo2 ler e imprimir um vetor subroutine ordena (a) real A (5),aux do i=1,5 do j=i+1,5 if (a(i). GE. a(j) ) then aux = a(i) a(i) = a(j) a(j) = aux if do do return 11
SUBROTINA Exemplo2 multiplicar matriz 3x3 C programa principal real A(3,3),B(3,3),C(3,3) print*, Chamar a subrotina de leitura da matriz A" call ler (a) call imprimir(a) print*, Chamar a subrotina de leitura da matriz B" call ler (b) call imprimir(b) print*, Chamar a subrotina de produto call mult(a,b,c) call imprimir(c) print *, stop 12
SUBROTINA Exemplo2 subroutine ler (a) real A(3,3) leitura da matriz do i=1,3 print*, "entre com linha",i read*, (a(i,j), j=1,3) do return 13
SUBROTINA Exemplo2 impressão da matriz subroutine imprimir (a) real A(3,3) do i=1,3 print*, (a(i,j), j=1,3) do return 14
SUBROTINA Exemplo2 multiplicação das matrizes subroutine mult (a,b,c) C C real A(3,3),B(3,3),C(3,3) Inicializando a matriz do i=1,3 do j=1,3 c(i,j) = 0 do do multiplicando matrizes do i=1,3 do j=1,3 do k=1,3 c(i,j) = c(i,j) + a(i,k) * b(k,j) do do do return 15