You are on page 1of 13

Introduo Programao com Fortran 90

CAPTULO 5: F90/5 SUBPROGRAMAS


Neste subconjunto introduziremos a idia de subprogramas. A necessidade do subprograma surgiu na medida que os programas foram tornando-se maiores e mais complexos. Notou-se que um programa muito grande poderia ser dividido em vrios subprogramas gerenciados por um programa principal, e que isso facilitava a compreenso do mesmo. Verificou-se tambm, que parte da soluo de um problema poderia ser utilizada na resoluo de muitos problemas diferentes e por isso, aquela parte da soluo, sendo um subprograma, daria a facilidade de ser usado em vrios programas com objetivos diferentes. E mais, os subprogramas poderiam ser feitos por pessoas diferentes e ao mesmo tempo, diminuindo assim o tempo de programao. Por exemplo, um subprograma que determina a inversa uma matriz pode ser usada: na matemtica, para resolver sistemas de equaes lineares; na engenharia civil, no clculo estrutural; na engenharia eltrica, para calcular admitncias de linhas de transmisso.

TIPOS DE SUBPROGRAMAS Subprogramas Funo Predefinida (Funo Embutida ou Intrnseca) So subprogramas que realizam funes largamente usadas nos nossos clculos, tais como: SIN(X) COS(X) ALOG(X) IFIX(X) FLOAT(X) MOD(I, J) SQRT(X) etc. Estas funes so fornecidas pelo fabricante do compilador e por isso tm o nome de prdefinidas. Uma maneira de utiliz-las atravs do comando de atribuio: nome da varivel = funo(argumentos) Por exemplo, o resto da diviso inteira do nmero 17 pelo nmero 5 dada por: os argumentos da funo 17 e 5; a funo pr-definida MOD; o nome da varivel RESTO;

Ento a chamada da funo dentro do programa ser: RESTO = MOD(17, 5)

UFCG/CEEI/DSC/ Prof. Roberto Medeiros de Faria

Introduo Programao com Fortran 90

Outra maneira, utilizar a funo no lugar onde voc utilizaria uma varivel, ou seja, como operando de uma expresso. Por exemplo: IF (MOD(VALOR, 2) .EQ. 0) THEN Ou ainda, podemos utilizar a funo como um elemento a ser mostrado num comando de sada: WRITE (*, *) VALOR DA FUNO = , & &MOD(INTEIRO1, INTEIRO2) Subprograma Funo (FUNCTION) O subprograma funo, ou simplesmente funo, semelhante ao subprograma funo prdefinida, com a diferena que: A funo pr-definida desenvolvida pelo fabricante do compilador para produzir o resultado de alguma funo de uso muito freqente; A funo feita pelo programador para produzir um valor qualquer a partir da execuo de uma computao do seu interesse.

A chamada de uma funo pode ser feita de dentro do programa principal ou de dentro de outro subprograma, e semelhante chamada da funo pr-definida. Uma forma de se chamar uma funo : nome-de-varivel = nome-da-funo(argumentos-de-entrada) Onde: nome-de-varivel - a varivel onde vamos guardar o valor produzido e devolvido pela funo. nome-da-funo - nome dado funo que o mdulo de chamada (programa principal ou subprograma) vai utilizar. argumentos-de-entrada - lista de valores (constantes, variveis e/ou expresses) com os quais a funo vai trabalhar para determinar e devolver o resultado. Estrutura de um Subprograma funo A estrutura de um subprograma funo a seguinte: FUNCTION nome_da_funo (parmetros_de_entrada) Declaraes de parmetros e variveis Comandos FORTRAN RETURN END FUNCTION nome_da_funo

UFCG/CEEI/DSC/ Prof. Roberto Medeiros de Faria

Introduo Programao com Fortran 90

FUNCTION - significa que este subprograma uma funo. nome_da_funo - deve ser declarado com o tipo (INTEGER, REAL, etc.) do retorno da funo. Funciona como uma pseudo-varivel que dever conter o resultado da funo. parmetros_de_entrada - lista de variveis que devero receber os argumentos de chamada da funo todas devem ser declaradas. Exemplo: Suponha um programa para determinar qual foi a maior temperatura alcanada durante o ms de Maio, aqui em C. Grande. O programa deve ler a quantidade de medidas de temperaturas tomadas neste ms e as respectivas temperaturas. Em seguida, chamar um subprograma funo para determinar o maior elemento do conjunto de temperaturas e finalmente mostrar o maior elemento. Ento, nosso programa seria:
! ! Encontra a maior de um nmero informado de temperaturas ! ! Programa principal PROGRAM maior_temperatura IMPLICIT NONE ! Definio de variveis INTEGER :: indice, numero_temperaturas REAL :: temperaturas(20), maior ! Apresentao da finalidade do programa WRITE(*, *) "Mostra o maior valor de N temperaturas:" WRITE(*, *) ! Leitura do nmero de temperaturas WRITE (*, *) "Informe o nmero de temperaturas (mximo 20):" READ (*,*) numero_temperaturas ! Leitura das temperaturas WRITE (*, *)"Informe as", numero_temperaturas, "temperaturas" READ (*, *) (temperaturas(indice), & &indice = 1, numero_temperaturas, 1) ! Chamada da funo maior e impresso da maior temperatura WRITE(*, *) WRITE(*, *) "Temperatura Mxima =", & &maior(numero_temperaturas, temperaturas) STOP END PROGRAM maior_temperatura ! ! Funo que acha o maior de um conjunto de nmeros reais ! ! Subprograma funo FUNCTION maior(tamanho, conjunto) IMPLICIT NONE ! Declarao dos parmetros, declarao do retorno da funo ! e declaraes das variveis da funo INTEGER :: tamanho, indice REAL :: maior, conjunto(tamanho) ! define o primeiro como maior maior = conjunto(1) ! procura o maior DO indice = 2, tamanho, 1

UFCG/CEEI/DSC/ Prof. Roberto Medeiros de Faria

Introduo Programao com Fortran 90 IF(conjunto(indice) .GT. maior) THEN maior = conjunto(indice) END IF END DO ! encerramento da funo com retorno do resultado RETURN END FUNCTION maior

Neste exemplo, a funo comea a ser executada quando chamada pelo programa principal atravs do comando: maior(numero_temperaturas, temperaturas) Onde: maior - nome da funo numero_temperaturas e temperaturas - argumentos de entrada

Observe que ao chegar no RETURN, nome da funo, maior, possui o maior elemento do conjunto, que exatamente o valor numrico que desejamos obter deste subprograma funo. A correspondncia entre os argumentos do programa principal com os parmetros da funo, feita da seguinte maneira: O primeiro argumento de chamada da funo, numero_temperaturas, corresponde ao primeiro parmetro de definio da funo, tamanho. O segundo argumento de chamada da funo, temperaturas, corresponde ao segundo parmetro de definio da funo, conjunto.

Os argumentos (constantes ou variveis) devem ser dados de mesmo tipo que seus parmetros correspondentes. Ento, o contedo de numero_temperaturas do programa principal transferido para a varivel tamanho da funo. Da mesma maneira, o contedo da varivel indexada temperaturas do programa principal transferida para a varivel indexada conjunto da funo e quando a funo est procurando o maior elemento de conjunto, ele na realidade est procurando a temperatura mxima do conjunto temperaturas. Subprograma Sub-rotina (SUBROUTINE) O subprograma sub-rotina semelhante ao subprograma funo com algumas diferenas que iremos descobrindo no decorrer do texto, A primeira diferena que a sub-rotina pode devolver ao programa principal (ou a outro subprograma) mais de um valor, ao contrrio da funo que s capaz de devolver apenas um valor quando chamada pelo programa principal (ou por outro subprograma). A chamada de um subprograma sub-rotina dentro de um programa principal (ou de outro subprograma) feita da seguinte maneira:
CALL nome_da_sub-rotina(argumentos_de_entrada, argumentos_de_sada, argumentos_de_entrada_e_saida)

Onde:

UFCG/CEEI/DSC/ Prof. Roberto Medeiros de Faria

Introduo Programao com Fortran 90

CALL - uma palavra reservada do Fortran que determina a chamada de uma subrotina. nome_da_sub-rotina - nome pela qual ser identificada esta sub-rotina. Deve ter at 31 caracteres, sendo o primeiro obrigatoriamente uma letra, e pode ser composto de letras (o sublinha considerado uma letra) e dgitos. argumentos_de_entrada - so todos os valores (constantes, variveis e/ou expresses) que a sub-rotina vai utilizar para computar os contedos dos argumentos de sada. argumentos_de_sada - so as variveis que vo conter os valores utilizados na computao pela sub-rotina e que sero devolvidos ao programa principal (ou para outro subprograma) para posterior utilizao. argumentos_de_entrada_e_sada - so as variveis que a sub-rotina vai utilizar, modificando seu contedo para conter os valores computados pela prpria sub-rotina e que sero devolvidos ao programa principal (ou a outro subprograma) para posterior utilizao.

Estrutura de um Subprograma Sub-rotina SUBROUTINE nome_da_sub-rotina(parmetros_de_entrada, parmetros_de_sada, parmetros_de_entrada_e_sada) Declaraes deparmetros e variveis Comandos Fortran RETURN nome_da_sub-rotina END SUBROUTINE Onde: SUBROUTINE - significa que o subprograma do tipo sub-rotina. nome_da_sub-rotina - nome pelo qual identificada esta sub-rotina. parmetros_de_entrada - nomes de variveis com a qual a sub-rotina vai trabalhar para determinar os parmetros de sada. parmetros_de_sada - nomes de variveis que guardaro os resultados calculados pela sub-rotina. parmetros_de_entrada_e_sada - nomes de variveis que recebero valores que sero modificados e devolvidos pela sub-rotina. RETURN - comando Fortran que devolve ao programa principal (ou para outro subprograma) o controle de execuo que neste ponto estava com a sub-rotina.

Por Exemplo, suponha um programa para determinar a matriz transposta de uma matriz lida da entrada padro. O programa deve apenas:

UFCG/CEEI/DSC/ Prof. Roberto Medeiros de Faria

10

Introduo Programao com Fortran 90

ler as dimenses da matriz ler a matriz chamar uma sub-rotina para determinar a matriz transposta imprimir a matriz transposta.

Ento o programa seria:


! ! Programa para calcular a matriz_transposta de uma matriz real de no mximo ! 4 linhas e 5 colunas ! ! Programa principal PROGRAM calcula_matriz_transposta IMPLICIT NONE ! Declarao das variveis INTEGER :: i, j, num_lin, num_col, num_lin_transp, num_col_transp REAL :: matriz(4, 5), matriz_transposta(5, 4) ! Leitura do numero de linhas e colunas da matriz WRITE (*, *) "calcula e mostra a transposta de uma matriz lida:" WRITE (*, *) WRITE (*, *) "Informe o nmero de linhas (mximo 4) e" WRITE (*, *) "e o nmero de colunas (mximo 5) da matriz:" READ (*, *) num_lin, num_col WRITE (*, *) "Informe os elementos da matriz:" READ (*, *) ((matriz(i, j), j = 1, num_col, 1), i = 1, num_lin, 1) ! Chamada da sub-rotina CALL transposta(num_lin, num_col, matriz, num_lin_transp, num_col_transp,& & matriz_transposta) ! Apresentao da matriz lida WRITE (*, *) WRITE(*, *) "Matriz lida:" DO i = 1, num_lin, 1 WRITE(*, *) (matriz(i, j), j = 1, num_col, 1) END DO ! Apresentao da matriz transposta WRITE (*, *) WRITE(*, *) "Matriz transposta:" DO i = 1, num_lin_transp, 1 WRITE(*, *) (matriz_transposta(i, j), j = 1, num_col_transp, 1) END DO STOP END PROGRAM calcula_matriz_transposta ! ! Sub-rotina que calcula a transposta de uma matriz real ! ! Subprograma sub-rotina SUBROUTINE transposta(nLin, nCol, mat, nLin_trans, nCol_trans, mat_trans) IMPLICIT NONE ! Declarao dos parmetros, declarao do retorno da funo ! e declaraes das variveis da funo INTEGER :: nLin, nCol, nLin_trans, nCol_trans, i, j REAL :: mat (nLin, nCol), mat_trans(nCol, nLin) ! Gerao da transposta DO i = 1, nLin, 1 DO j = 1, nCol, 1

UFCG/CEEI/DSC/ Prof. Roberto Medeiros de Faria

11

Introduo Programao com Fortran 90 mat_trans(j, i) = mat(i, j) END DO END DO ! Gerao do nmero linhas e colunas da transposta nLin_trans = nCol nCol_trans = nLin ! Encerramento da sub-rotina RETURN END SUBROUTINE transposta

Neste exemplo, a sub-rotina comea a ser executada quando chamada pelo programa principal atravs do comando:
CALL transposta(num_lin, num_col, matriz, num_lin_transp, num_col_transp,$ & matriz_transposta)

Observe que ao chegar no RETURN em nLin_trans temos a dimenso de coluna da matriz transposta, em nCol_trans temos a dimenso de coluna da matriz transposta e em mat_trans temos a transposta da matriz mat. A correspondncia entre os argumentos de entrada e sada do programa principal com os parmetros de entrada e sada da sub-rotina feita da seguinte maneira: Na chamada, ou seja, na execuo do comando CALL: O contedo de num_lin transferido para nLin; O contedo de num_col transferido para nCol; O contedo da varivel indexada matriz transferido para a varivel indexada mat.

No retorno, ou seja, na execuo do comando RETURN: O contedo de nLin_trans transferido para num_lin_transp; O contedo de nCol_trans transferido para num_col_transp; O contedo da varivel indexada mat_trans transferido para a varivel indexada matriz_transposta.

Como Chamar uma Sub-rotina numa Biblioteca Quando queremos utilizar uma sub-rotina que j exista numa biblioteca (coleo de subprogramas), precisamos de informaes adicionais para sabermos exatamente quais os parmetros ela usa e qual o tipo de cada parmetro. Para isso, devemos utilizar uma documentao que pode ser o manual do usurio da biblioteca ou alguma opo de ajuda em software que a mesma possua. EXEMPLO DE FUNO Programar uma funo que converte um nmero binrio no seu equivalente na base decimal. Para converter um nmero binrio em decimal fazemos da seguinte maneira:

UFCG/CEEI/DSC/ Prof. Roberto Medeiros de Faria

12

Introduo Programao com Fortran 90

(100011)2

= 1 x 25 + 0 x 24 + 0 x 23 + 0 x 22 + 1 x 21 + 1 x 20 = 32 + 0 + 0 + 0 + 2 + 1 = (35)10

O algoritmo que utilizaremos para converso ser: d0 = b0 d1 = 2 x d0 + b1 ... dn = 2 x d (n-1) + bn Se o nmero (100011)2, ento n = 5 e b0 = 1, b1 = 0, b2 = 0, b3 = 0, b4 = 1 e b5 = 1. Usando o nmero acima e aplicando o algoritmo obtemos: d0 = 1 d1 = 2 x 1 + 0 = 2 d2 = 2 x 2 + 0 = 4 d3 = 2 x 4 + 0 = 8 d4 = 2 x 8 + 1 = 17 d5 = 2 x 17 + 1 = 35 Ento o subprograma funo utilizando este algoritmo ser:
! ! Programa que l um nmero binrio e o converte para decimal ! ! Programa principal PROGRAM binario_para_decimal IMPLICIT NONE ! Declarao das variveis e do tipo da funo INTEGER :: binario, bindec ! Apresentao da finalidade do programa WRITE (*, *) "Converte um inteiro binrio lido para decimal:" WRITE (*, *) ! Leitura do valor binrio para um inteiro decimal WRITE (*, *) "Informe o nmero binrio (mximo 10 dgitos):" READ (*, *) binario ! Chama a funo que converte de binrio para inteiro e ! mostra o resultado da converso WRITE (*, *) WRITE (*, *) "Valor convertido para decimal:", bindec(binario) STOP END PROGRAM binario_para_decimal ! ! Funo que converte um inteiro binrio (com 0's e 1's) para decimal

UFCG/CEEI/DSC/ Prof. Roberto Medeiros de Faria

13

Introduo Programao com Fortran 90 ! ! Subprograma funo FUNCTION bindec(binario) IMPLICIT NONE ! Declarao do retorno da funo, do parmetro de entrada e ! das variveis da funo INTEGER :: bindec, binario, digito, vezes, potencia_de_2 ! Inicializa para o somatrio bindec = 0 ! Inicializao da potncia de 2 com 2**0 potencia_de_2 = 1 DO vezes = 1, 10, 1 ! Separa um dgito binrio digito = MOD(binario, 2) ! Soma o valor da potncia da posio do dgito no decimal bindec = bindec + digito * potencia_de_2 ! Calcula a potncia da posio do prximo dgito potencia_de_2 = potencia_de_2 * 2 ! Elimina o dgito da potncia j somada binario = binario / 10 END DO ! Encerra a funo retornando o valor final de bindec RETURN END FUNCTION bindec

EXEMPLO DE SUB-ROTINA Programar uma sub-rotina que converta um nmero inteiro positivo na base decimal para. seu equivalente na base binria. Para converter um nmero decimal em binrio dividimos este nmero sucessivamente por 2 at obtermos resto e quociente iguais a zero. O resto das divises de cada uma das divises sucessivas na ordem inversa o resultado que procuramos. Exemplo:

Parmetro de entrada da Sub-rotina: Nmero em decimal

Parmetros de sada:
UFCG/CEEI/DSC/ Prof. Roberto Medeiros de Faria 14

Introduo Programao com Fortran 90

Vetor contendo o respectivo nmero em binrio Dimenso do vetor

O programa com a sub-rotina ficar ento:


! ! Programa que l um nmero decimal e o converte para binrio ! ! Programa principal PROGRAM decimal_para_binario IMPLICIT NONE ! Declarao das variveis e do tipo da funo INTEGER :: decimal, binario ! Apresentao da finalidade do programa WRITE (*, *) "Converte um inteiro decimal lido para binrio:" WRITE (*, *) ! Leitura do valor binario para um inteiro decimal WRITE (*, *) "Informe o nmero decimal (mximo 10 digitos):" READ (*, *) decimal ! Chama a sub-rotina que converte de decimal para binrio CALL decbin(decimal, binario); ! Mostra o resultado da converso WRITE (*, *) WRITE (*, *) "Valor convertido para binrio:", binario STOP END PROGRAM decimal_para_binario ! ! Sub-rotina que converte um inteiro binrio (com 0's e 1's) para decimal ! ! Subprograma sub-rotina SUBROUTINE decbin(decimal, binario) IMPLICIT NONE ! Declarao de parmetros e variveis INTEGER :: decimal, binario, dividendo, quociente, expoente_de_10 ! Converso de decimal para binrio dgito a dgito dividendo = decimal quociente = dividendo / 2 expoente_de_10 = 0 binario = 0 DO WHILE (quociente .NE. 0) binario = binario + 10**expoente_de_10 * MOD(dividendo, 2) dividendo = quociente quociente = dividendo / 2 expoente_de_10 = expoente_de_10 + 1 END DO binario = binario + 10**expoente_de_10 * MOD(dividendo, 2) ! Encerramento da sub-rotina RETURN END SUBROUTINE decbin

MAIS EXEMPLOS 1) Programa para somar matrizes inteiras com dimenses mximas 10x10:
! ! Programa para somar matrizes inteiras com dimenses mximas 10x10 ! ! Programa principal PROGRAM soma_matrizes IMPLICIT NONE UFCG/CEEI/DSC/ Prof. Roberto Medeiros de Faria 15

Introduo Programao com Fortran 90 ! Declaraes das variveis do programa INTEGER :: mat1(10, 10), mat2(10, 10), matS(10, 10), lin, col INTEGER :: indl, indc ! Apresentao da finalidade do programa WRITE (*, *) "Programa para somar matrizes inteiras com dimenses& & mximas 10x10:" WRITE (*, *) ! Leitura das dimenses da matriz WRITE(*,*)"Informe o numero de linhas e colunas das matrizes:" READ(*,*)lin, col ! Leitura dos dados da primeira matriz WRITE(*,*)"Informe os dados para a primeira matriz a somar:" CALL lemat(mat1, lin, col) ! Leitura dos dados da segunda matriz WRITE(*,*)"Informe os dados para a segunda matriz a somar:" CALL lemat(mat2, lin, col) ! Soma das matrizes DO indl = 1, lin, 1 DO indc = 1, col, 1 matS(indl, indc) = mat1(indl, indc) + mat2(indl, indc) END DO END DO ! Impresso da primeira matriz WRITE(*,*) "Primeira Matriz:" CALL impmat(mat1, lin, col) ! Impresso da segunda matriz WRITE(*,*) "Segunda Matriz:" CALL impmat(mat2, lin, col) ! Impresso da matriz soma WRITE(*,*) "Matriz Soma:" CALL impmat(matS, lin, col) STOP END PROGRAM soma_matrizes ! ! Sub-rotina que l uma matriz ! ! Subprograma sub-rotina SUBROUTINE lemat(mat, lin, col) IMPLICIT NONE ! Declarao dos parmetros e das variveis da sub-rotina INTEGER :: mat(10, 10), lin, col, l, c ! Leitura dos elementos da matriz DO l = 1, lin, 1 DO c = 1, col, 1 READ(*,*)mat(l, c) END DO END DO ! Encerramento da sub-rotina RETURN END SUBROUTINE lemat ! ! Sub-rotina que imprime uma matriz ! ! Subprograma sub-rotina SUBROUTINE impmat(mat, lin, col) IMPLICIT NONE INTEGER :: mat(10, 10), lin, col, l, c ! Impresso dos elementos da matriz DO l = 1, lin, 1

UFCG/CEEI/DSC/ Prof. Roberto Medeiros de Faria

16

Introduo Programao com Fortran 90 WRITE(*,*) (mat(l, c), c = 1, col, 1) END DO ! Encerramento da sub-rotina RETURN END SUBROUTINE impmat

! ! Programa que calcula a soma dos fatoriais de dois nmeros ! ! Programa principal PROGRAM soma_fatoriais IMPLICIT NONE ! Declarao das variveis do programa INTEGER :: valor1, valor2, fatorial

2) Programa para calcular a soma dos fatoriais de dois nmeros inteiros usando uma funo:

! Apresentao WRITE (*, *) "Mostra a soma do fatorial de dois nmeros:" WRITE (*, *) ! Leitura dos dois inteiros WRITE (*, *) "Informe os dois inteiros:" READ (*, *) valor1, valor2 WRITE (*, *) ! Chamada dupla da funo fatorial e apresentao da soma WRITE (*, *) "A soma dos fatoriais dos dois nmeros eh",& & fatorial(valor1) + fatorial(valor2) STOP END PROGRAM soma_fatoriais ! ! Funo que calcula o fatorial de um nmero ! FUNCTION fatorial(numero) IMPLICIT NONE ! Declaraes do retorno, do parmetro e varivel da funo INTEGER :: numero, fatorial, fator ! Clculo do fatorial fatorial = 1 DO fator = numero, 1, -1 fatorial = fatorial * fator END DO ! Encerramento da funo com retorno do resultado pelo nome ! da funo RETURN END FUNCTION fatorial

3) Programa para ler dois inteiros fazendo uma comparao de valores entre eles, utilizando uma funo comparadora:
! ! Programa que compara dois inteiros e informa atravs de uma mensagem ! a relao entre eles ! ! Programa principal PROGRAM comparaInteiros IMPLICIT NONE ! Declarao das variveis do programa e do retorno da funo INTEGER :: numero1, numero2, retorno, comparaInt ! Apresentao da finalidade do programa WRITE (*,*) "Compara dois inteiros e informa a relao entre eles:" WRITE (*,*) UFCG/CEEI/DSC/ Prof. Roberto Medeiros de Faria 17

Introduo Programao com Fortran 90 ! Leitura dos valores a serem comparados WRITE (*,*) "Informe os 2 numeros inteiros para serem comparados: " READ (*,*) numero1, numero2 ! Chama a funo comparadora e armazena o resultado da comparao retorno = comparaInt(numero1, numero2) ! Emite mensagem de acordo com o resultado armazenado IF (retorno .EQ. -1) THEN WRITE (*,*) "O primeiro ", numero1, " menor que o segundo ", numero2 ELSE IF (retorno .EQ. 0) THEN WRITE (*,*) "O primeiro ", numero1, " igual ao segundo ", numero2 ELSE WRITE (*,*) "O primeiro ", numero1, " maior que o segundo ", numero2 END IF ! Encerra o programa STOP END PROGRAM comparaInteiros ! ! Funao para comparar numeros inteiros ! ! Sub-programa funo FUNCTION comparaInt (inteiro1, inteiro2) ! Declaraes do nome e dos parmetros da funo IMPLICIT NONE INTEGER :: comparaInt, inteiro1, inteiro2 ! Comparao dos valores recebidos IF (inteiro1 .LT. inteiro2) THEN comparaInt = -1 ELSE IF (inteiro1 .EQ. inteiro2) THEN comparaInt = 0 ELSE comparaInt = 1 END IF ! Encerra a funo retornando o resultado no nome da funo RETURN END FUNCTION comparaInt

UFCG/CEEI/DSC/ Prof. Roberto Medeiros de Faria

18