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

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

Subprogramas - Funções e Sub-rotinas

Apresentações semelhantes


Apresentação em tema: "Subprogramas - Funções e Sub-rotinas"— Transcrição da apresentação:

1 Subprogramas - Funções e Sub-rotinas
Aula 6 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.

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. [<Tipo da Função>] FUNCTION <Nome> [(argumentos)] Declarações de variáveis Comandos executáveis Comando de atribuição do resultado [Return] END [FUNCTION] [<Nome>]

3 Compilação e “linkedição” (utilizando o ifort)
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 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 <Nome> [(argumentos)] Declarações de variáveis Comandos executáveis [Return] END [SUBROUTINE] [<Nome>]

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 O comando COMMON Bloco de memória comum. Usado para transferir valores entre unidades de programas. Sintaxe: COMMON [/ [ r1 ] /] <lista1> [/ [ r2 ] / <lista2>] ... 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 Programa Principal COMMON A(2),B,C(3) Sub-Rotina COMMON A,B,C,D,E,F A(1) A A(2) B C C(1) D C(2) E C(3) F Comando CALL Usado para chamar a execução de uma sub-rotina. Sintaxe: CALL <nome da sub-rotina> [(a,b,...)]

8 PROGRAM PROGCOMM SUBROUTINE PENDULO
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 TP=2.0*PI*SQRT(Y/G) END SUBROUTINE PENDULO SUBROUTINE MHS REAL, PARAMETER :: PI= ,K=1.0 REAL M,TH TH=2*PI*SQRT(M/K) END SUBROUTINE MHS

9 O comando INCLUDE Inclui declarações, atribuições e comandos em uma unidade de programa. Sintaxe: INCLUDE ‘nome.ext’ ou INCLUDE “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 CSUBS2.F CTS.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 "Subprogramas - Funções e Sub-rotinas"

Apresentações semelhantes


Anúncios Google