A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 Subprogramas - Funções e Sub-rotinas Seqüência de instruções compreendida entre uma declaração identificadora do subprograma e o comando END e que fazem.

Apresentações semelhantes


Apresentação em tema: "1 Subprogramas - Funções e Sub-rotinas Seqüência de instruções compreendida entre uma declaração identificadora do subprograma e o comando END e que fazem."— Transcrição da apresentação:

1 1 Subprogramas - Funções e Sub-rotinas Seqüência de instruções compreendida entre uma declaração identificadora do subprograma e o comando END e que fazem parte de um programa. Tanto o programa principal como os subprograma são ditos unidades de programas. As unidades de programa podem ser compiladas independentemente Os subprogramas só podem ser executados a partir de um programa principal. Aula 6

2 2 Funções Um tipo de subprograma que retorna um valor. As funções devem combinar em tipo com as variáveis com as quais será associada. Funções Intrínsecas: Predefinidas dentro da estrutura da linguagem (sin, cos, sqrt, etc) Funções definidas pelo usuário: Funções criadas pelos usuários. [ ] FUNCTION [(argumentos)] Declarações de variáveis Comandos executáveis Comando de atribuição do resultado [Return] END [FUNCTION] [ ]

3 3 Function definida em um arquivo externo (subs.f) Programa Principal (prog.f) INTEGER FUNCTION ISOMA(N) ISOMA=0 DO I=1,N ISOMA=ISOMA+I END DO END FUNCTION ISOMA PROGRAM TESTESUBS INTEGER X,S PRINT *,Informe um numero inteiro: READ *,X S=ISOMA(X) PRINT *,A soma dos,X, primeiros número inteiros é:, S END PROGRAM TESTESUBS Compilação e linkedição (utilizando o ifort) (1) ifort prog.f subs.f –o prog.exe Compila prog.f e subs.f gerando (*.o) Faz a ligação (linkedição) dos programas objetos, gerando o executável prog.exe (2) ifort – c prog.f ifort – c subs.f ifort prog.o subs.o –o prog.exe Compila e gera prog.o Compila e gera subs.o Faz a ligação de prog.o e subs.o, gerando o executável prog.exe

4 4 Sub-rotinas Podem conter quaisquer tipos de comandos. Podem retornar nenhum, um, ou mais valores. Sub-rotinas Intrínsecas: Predefinidas dentro da estrutura da linguagem (call exit) Sub-rotinas definidas pelo usuário: Criadas pelos usuários. SUBROUTINE [(argumentos)] Declarações de variáveis Comandos executáveis [Return] END [SUBROUTINE] [ ]

5 5 Subrotina definida em um arquivo externo (subs.f) Programa Principal (prog.f) SUBROUTINE TRANSMAT3(A,B) INTEGER I,J INTEGER, DIMENSION(3,3) :: A,B DO I=1,3 DO J=1,3 B(I,J)=a(J,I) END DO END SUBROUTINE TRANSMAT3 PROGRAM TESTSUBS INTEGER X,S,I,J INTEGER, DIMENSION (3,3) :: C,D DATA C/1,4,7,2,5,8,3,6,9/ ! PRINT *,'Informe um número inteiro: ' READ *,X S=ISOMA(x) PRINT *,'A soma dos ',x,' primeiros inteiros é: ',S PRINT *,' x ' ! PRINT *,'Matriz C: ' PRINT '(3(I1,1X))',((C(i,j),j=1,3),i=1,3) ! Transposta da matriz C CALL TRANSMAT3(C,D) ! Escreve a matriz transposta (D) PRINT *,'Matriz transposta (D): ' PRINT '(3(I1,1X))',((D(i,j),j=1,3),i=1,3) PRINT *,'*** FIM ***' END PROGRAM testsubs

6 6 O comando COMMON Bloco de memória comum. Usado para transferir valores entre unidades de programas. Sintaxe: COMMON [/ [ r1 ] /] [/ [ r2 ] / ]... r: rótulo do bloco COMMON. Poder branco. Se o primeiro for branco o par de barras pode ser suprimido. O nome do rótulo não pode coincidir com o nome de uma unidade de programa. lista1, lista2: listas de variáveis Variáveis especificadas no COMMON compartilham posição de memória em comum entre subprogramas. A lista de variáveis num COMMON pode ser diferente entre unidades de programas. Em uma unidade de programa pode-se ter apenas um bloco COMMON não rotulado, entretanto pode-se ter vários rotulados.

7 7 Programa Principal COMMON A(2),B,C(3) Sub-Rotina COMMON A,B,C,D,E,F A(1)A A(2)B BC C(1)D C(2)E C(3)F Comando CALL Usado para chamar a execução de uma sub-rotina. Sintaxe: CALL [(a,b,...)]

8 8 PROGRAM PROGCOMM REAL Y,K,M,TP,TH COMMON /PEND/Y,TP COMMON /MH/M,TH ! PRINT *,'===== Período do Pendulo =====' PRINT *,'Qual o comprimento do Pendulo (m)?' READ *,Y CALL PENDULO PRINT *,'O periodo do pendulo é: ',TP,' s' ! PRINT *,'===== Periodo do MHS =====' PRINT *,'Qual a massa da particula (Kg):' READ *,M CALL MHS PRINT *,'O periodo do sistema é: ',TH,' s' ! END PROGRAM PROGCOMM SUBROUTINE PENDULO REAL, PARAMETER :: PI= ,G=9.8 REAL Y,TP COMMON /PEND/Y,TP ! TP=2.0*PI*SQRT(Y/G) ! END SUBROUTINE PENDULO ! SUBROUTINE MHS REAL, PARAMETER :: PI= ,K=1.0 REAL M,TH COMMON /MH/M,TH ! TH=2*PI*SQRT(M/K) ! END SUBROUTINE MHS

9 9 O comando INCLUDE Inclui declarações, atribuições e comandos em uma unidade de programa. Sintaxe: INCLUDE nome.ext ouINCLUDE nome.ext É permitido o uso de caminhos completos no lugar de nome.ext nome.ext pode ter qualquer extensão (.inc é mais comum). Permite que linhas de programas, comuns a várias unidades de programa, sejam agrupadas em um único arquivo que será incluído quando necessário. As instruções no arquivo nome.inc são interpretadas como parte do programa e por isso devem seguir as mesmas regras do programa.

10 10 CSUBS2.FCTS.INC SUBROUTINE PENDULO INCLUDE CTS.INC REAL Y,TP COMMON /PEND/Y,TP ! TP=2.0*PI*SQRT(Y/G) ! END SUBROUTINE PENDULO ! SUBROUTINE MHS INCLUDE CTS.INC REAL M,TH COMMON /MH/M,TH ! TH=2*PI*SQRT(M/K) ! END SUBROUTINE MHS REAL, PARAMETER :: PI= ,G=9.8,K=1.0


Carregar ppt "1 Subprogramas - Funções e Sub-rotinas Seqüência de instruções compreendida entre uma declaração identificadora do subprograma e o comando END e que fazem."

Apresentações semelhantes


Anúncios Google