Professional Documents
Culture Documents
29/08/13 09:10
NDICE
Primeira Parte: Conceitos da Linguagem 1. Introduo
2. Formatao
3. Conceitos Bsicos
Complexas (COMPLEX):
Pgina 1 de 46
Atribuio
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
29/08/13 09:10
Operadores Literais
6. Funes Intrnsecas
Subrotinas
Outros Recursos
Pgina 2 de 46
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
29/08/13 09:10
DO Implcito (WIN)
GOTO Implcito
IF Com Deslocamento
Pgina 3 de 46
INCLUDE
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
29/08/13 09:10
10. Arredondamento de X
Pgina 4 de 46
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
29/08/13 09:10
tpicos precedidos do identificao WIN s so validos para WINDOWS; tpicos precedidos de F90 so vlidos apenas para os compiladores que aceitam comandos FORTRAN 90.
Deve ficar claro que compiladores para FORTRAN 90 aceitam tambm os outros dois tipos, e os baseados em WINDOWS aceitam todos os comandos dos compiladores mais antigos (FORTRAN 77), e que a reciproca no verdadeira. Os programas podem ser escritos em qualquer editor de texto, desde que sejam salvos com as extenses .for ou .f90. Esta segunda forma somente para FORTRAN 90. Os compiladores em WINDOWS possuem um editor prprio, que deve ser usado pois possui muitos recursos adicionais, como por exemplo o destaque das palavras chaves.
2. Formatao
Os seguintes critrios devem ser seguidos para se escrever um programa em FORTRAN no modo de formulrio fixo:
colunas 1 a 5: so usadas escrever os rtulos "label" ou nmeros de comando. Estes nmeros dever ser inteiros e estar totalmente contido nestas colunas. No podem se repetir e no preciso estar em ordem crescente. Sero usados para que outros comandos possam identificar aquela linha; coluna 6: qualquer caractere diferente de 0 "zero" nesta coluna indica que o que vem a seguir continuao da linha anterior ou da ultima linha que no seja um comentrio (prximo item), podem existir at 19 linhas de continuao; colunas 7 a 72: comandos ou comentrios; colunas 73 a 80: campos de identificao, so usados pelo computador, portanto no se deve escrever nestas colunas.
F90 O programa pode ser escrito em qualquer posio, desde que o modo "free form" esteja ativado. Alguns pontos devem ser observados para este formato:
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm Pgina 5 de 46
29/08/13 09:10
as linhas de continuao so indicadas pelo smbolo & no fim da sentena, e o que estiver na linha abaixo ser tomado como continuao. permitido a insero de comentrios aps o &; os rtulos dever ser os primeiros caracteres da linha, e podem estar em qualquer coluna.
3. Conceitos Bsicos
1. Comentrios: no so interpretados pelo computador, um bom programa deve conter muitos para que fique o mais claro possvel. Em FORTRAN a letra c ou o caractere * na primeira coluna indicam que toda a linha um comentrio. Na linha de comentrio permitido o uso de qualquer caracter, especial ou no. WIN o ponto de exclamao ! indica que o que vem aps ele comentrio, ele pode vir em qualquer posio, inclusive aps comandos. 2. Variveis e Nomes de Blocos: devem ter no mximo seis letras, no permitido o uso de caracteres espaciais e no podem comear com um nmero. WIN podem ter 31 caracteres, inclusive o caracter upercase _ 3. Constantes: o Numricas: podem conter qualquer valor real, inteiro ou complexo. A parte decimal separado da inteira por um ponto.. Os zeros antes e depois do ponto decimal podem ser omitidos, se no forem significantes. O expoente decimal indicado pela letra e ou E, deve vir entre o nmero seu expoente sem o uso de espaos entre eles. Nmeros negativos assim como a parte exponencial quando for negativa deve vir precedida do sinal menos -. O sinal + opcional em ambas as partes. Os nmeros imaginrios devem vir entre parnteses e aparte real deve ser separada por uma virgula da parte imaginria. o Alfanumricas: (so as strings, seqncias de letras e/ou nmeros) podem conter qualquer seqncia de caracteres. Deve vir entre aspas " " ou apstrofos . As aspas tem preferencia sobre os apstrofos, portanto um valor literal pode conter apstrofos, desde que seu valor venha entre aspas. No permitido o uso de caracteres especiais e letras acentuadas. Uma outra forma de se declarar valores alfanumricos o uso de wHvalorliteral, onde w o nmero de caracteres do valor alfanumrico. 4. Maisculas e Minsculas: o FORTRAN no faz qualquer distino entre letras maisculas e minsculas. permitido inclusive o uso do nome da varivel escrita de formas diferentes no mesmo programa. EX.: VAR = var = Var. 5. Os programas podem conter no incio o seu nome (program nome_do _programa), e devem terminar com a palavra end. 6. Outra forma de parar o programa, e esta pode ser usada em qualquer parte dele, usando a palavra stop. O programa terminar independentemente de haver mais comandos na seqncia.
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm Pgina 6 de 46
29/08/13 09:10
4. Declarao de Variveis
As variveis podem ser inteiras, reais ou literais. A declarao de uma varivel deve vir antes que ela seja usada, se isto no ocorrer o compilador assumir as variveis que comeam com as letras I at N como inteiras (INTEGER*4) e todas as outras como reais (REAL*4). Esta forma de declarao implcita pode ser modificada usando o comando implicit tipo (a1a2,b1-b2,...) antes do tipo de varivel. Sendo a1, a2, b1, b2 quaisquer letras da alfabeto. Quando no se deseja que nenhuma varivel seja declarada implicitamente usa-se o comando implicit none. Para se declarar variveis que sejam matrizes e vetores deve-se indicar suas dimenses logo aps o nome da varivel; entre parnteses, e separadas umas das outras por vrgula. Ex.: a(4,3) indica uma matriz de 4 linhas por 3 colunas. As variveis podem receber valores iniciais usando /valor/, logo aps sua declarao. Tipos de Variveis: Inteiras (INTEGER): Podem assumir os seguintes valores: INTEGER*1 128 a 127 INTEGER*2 32,768 a 32,767 INTEGER*4 2,147,483,648 a 2,147,483,647 INTEGER*4 pode ser representado somente por: INTEGER Reais (REAL): Preciso simples at 6 casas decimais: REAL*4 ou REAL ` 3.402823E+38 Incremento mnimo de ` 1.175494E-38 Preciso dupla at 15 casas decimais: REAL*8 ou DOBLE PRECISION ` 1.797693134862316D+308 Incremento mnimo de ` 2.225073858507201D-308 A parte exponencial deve ser separada por um d ou D no lugar do e ou E. WIN pode ser usado o e ou E para separar a parte exponencial. No s isso mas tambm todas as outras funes (item 6 primeira parte) podem ser iguais a de um real comum para compiladores baseados em WINDOWS. Complexas (COMPLEX): Preciso simples at 6 casas decimais:
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm Pgina 7 de 46
29/08/13 09:10
COMPLEX*8 ou COMPLEX Preciso dupla at 15 casas decimais: COMPLEX*16 Os valores que um complexo pode assumir so os mesmos que os reais. Alfanumricas (CHARACTER): CHARACTER NOME*w Onde w representa o nmero mximo de caracteres que a varivel pode conter dentro do programa. Ou CHARACTER *wvar1,var2 (var1 e var2 possuem o mesmo tamanho w) Ou CHARACTER (LEN = w) var1, (LEN=w2) var2 (var1 tem tamanho w e var2 tamanho w2) Lgicas (LOGICAL): LOGICAL NOME Podem assumir os valores .TRUE. (VERDADEIRO) ou .FALSE. (FALSO) Ou somente T e F implicit integer (a-t,x,y,z) integer num_dias/3/ real temp(3) character data1*8,*8 data2,data3 data1 = "12\10\98" data2 = "20\11\98" data3 = "15\3\99" temp(1)= 25.6 temp(2)= 22.4 temp(3)= 22.8
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
Pgina 8 de 46
29/08/13 09:10
O sinal = atribui a varivel o valor que vem sua direita (item 5). F90 estas declaraes poderiam estar na mesma linha desde que fossem separadas por ponto e vrgula ;. data3 = "15\3\99";temp(1)= 25.6;num_dias= 3
5. Operadores
Atribuio A varivel ou identificador que estiver a esquerda do sinal de atribuio = recebem o valor da expresso, constante ou varivel que estiver direita. Identificador = Expresso nome = Engenharia Quimica ano = 1999 Operadores Literais Uma funo til para variveis literais a concatenao, ou a juno de duas ou mais palavras. Em FORTRAN a concatenao feita pele operador //. a = tele b = visao c = a//b => c = televisao Operadores Aritmticos Executam operaes aritmticas comuns. FORTRAN + * / ** ap Matemtica Tradicional + Significado soma Subtrao Multiplicao Diviso Potenciao
Quando uma varivel inteira recebe o resultado de uma diviso com resto, este resto desprezado ou seja o valor truncado. C = A**2 + B**2
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm Pgina 9 de 46
29/08/13 09:10
D = E**(1/2) Operadores Relacionais Comparam variveis, constantes ou expresses e retornam .TRUE. ou 1 se a comparao for verdadeira, .FALSE. ou 0 se a comparao for falsa. FORTRAN .LT. .LE. .EQ. .NE. .GT. .GE. 20 .ne. 30 1000 .lt. 500 Operadores Lgicos So usados quando necessrio mais de uma condio relacional ou quando preciso inverter seu resultado. FORTRAN .AND. .OR. .NOT. 10.GT.5 .AND. 20.GT.25 10.GT.5 .OR. 20.GT.25 .NOT. 20.GT.25 Prioridade Operador ** * / Prioridade 1 2 2
Pgina 10 de 46
IGUAL A DIFERENTE DE
>
Significado Juno Disjuno Negao => .FALSE. => .TRUE. => .TRUE.
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
29/08/13 09:10
3 3 4 4 4 4 4 4 5 6 7
O uso de parnteses pode ser feito para trocar a ordem de prioridade. (20.GT.10 .AND. 20.GT.25).OR.(10.LT.20 .AND. 10.LT.(3*10)) => .TRUE.
6. Funes Intrnsecas
Existem vrias funes predefinidas em FORTRAN, que podem ser usadas em qualquer parte do programa. Funes Trigonomtricas Nome SIN (x) Definio Tipo de Argumento Tipo da Funo REAL*4
seno (radianos). Se x for Real ou complexo. complexo, a parte real assumida como valor em radianos. Arcoseno (radianos). Real, |x| .le. 1 Retorna valores na faixa [-_ /2, _ /2 ] Coseno (radianos) Se x for complexo, a parte real assumida como valor em radianos. Real ou complexo
ASIN (x)
REAL*4
COS (x)
REAL*4
ACOS (x)
Arcocoseno (radianos) ) Real, |x| .le. 1 Retorna valores na faixa [ 0, _ ] Tangente (radianos) Real
REAL*4
TAN (x)
REAL*4
Pgina 11 de 46
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
29/08/13 09:10
ATAN (x)
Arcotangente (radianos). Real Retorna valores na faixa [-_ /2, _ /2 ] Seno Hiperblico (radianos) Coseno Hiperblico (radianos) Tangente Hiperblica (radianos) Real Real Real
REAL*4
Outras funes trigonomtricas podem ser encontradas no Apndice A. Outras Funes Nome ALOG10 (x) ALOG (x) EXP (x) ABS (x) IABS (x) IFIX (x) FLOAT (x) DBLE (x) CMPLX (x) SIGN (x,y) MOD (x,y) AMOD (x,y) SQRT (x) Definio logaritmo de x na base 10 logaritmo neperiano de x (x > 0) o nmero e (base dos logaritmos neperianos) elevado a x valor absoluto de x valor absoluto de x converso de real para inteiro, truncando converso de inteiro para real converte para dupla preciso converte para o tipo complexo Tipo de Argumento real real real real inteiro real inteiro real real Tipo da Funo real real real real inteiro inteiro real real (dupla preciso) complexo real inteiro real real
fornece valor positivo de x se y 0 real e negativo de x se y < 0 resto da diviso de x por y resto da diviso de x por y raiz quadrada de x (x 0) inteiro real real
7. Funes e Subrotinas
Funes e subrotinas podem ser usadas para economizar espao e tempo de programao j que podem ser usadas vrias vezes num mesmo programa. Outro ponto importante que elas
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm Pgina 12 de 46
29/08/13 09:10
podem dar ao programa maior clareza, pois vrias seqncias de clculos ou execues podem vir separadas do restante dos comandos. O que d grande versatilidade as funes e subrotinas, so os argumentos passados a elas, que quando variam produzem resultados diferentes. As funes e subrotinas podem vir em qualquer parte do programa, mas o mais comum que apaream no fim (aps o end de termino do programa), por motivo de clareza. As variveis usadas em funes e subrotinas so locais e por isso devem ser declaradas novamente, podendo ser usado os mesmos nomes de variveis de outras funes e subrotinas ou mesmo do programa principal. Os parmetros necessrios devem ser passados junto com a chamada da funo ou subrotina, devem vir entre parnteses e separados por virgula. Os nomes das variveis no preciso ser os mesmos na chamada e definio de uma funo ou subrotina, devendo apenas estar na mesma ordem. Funes Retornam sempre um valor, e a ela podem ser passados qualquer nmero de parmetros. As funes funcionam de forma semelhante as funes intrnsecas, com a diferena de que agora o programador que define o que a funo de gerar como resultado. O tipo da funo deve ser declarado no programa principal, como se fosse uma varivel comum. Uma funo pode utilizar outras funes. Chamada: nome_da_funo(lista_de_parmetros) Definio: function nome_da_funo(lista_de_parmetros) definio e declarao das variveis e constantes locais seqncia de comandos return end A palavra chave return opcional. Ela indica que o comando deve retornar ao programa principal ou funo ou subrotina que a chamou. A funo retornar o valor do ultimo comando do tipo: nome_da_funo = expresso Exemplo: volume = gas_ideal(T,P,3) function gas_ideal(temp,press,n_mols)
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm Pgina 13 de 46
29/08/13 09:10
Subrotinas No retornam nenhum valor, e tambm a elas podem ser passados qualquer nmero de parmetros. Nas subrotinas podem conter qualquer tipo de comandos como imprimir resultados, abrir arquivos (estes sero vistos frente) ou executar clculos. Como ocorre com as funes, as subrotinas podem chamar outras subrotinas. Chamada: call nome_da_subrotina (lista_de_parmetros) Definio: subroutine nome_da_subrotina (lista_de_parmetros) definio e declarao das variveis e constantes locais seqncia de comandos return end A palavra chave return opcional.
8. Leitura e Impresso
Na maior parte dos programas preciso haver uma interao entre o programa e o usurio, essa interao pode ser feita em FORTRAN pelos comandos de leitura e escrita de dados. Esses comandos na sua forma mais simplificada possuem a seguinte estrutura: leitura : read (unidade, formato) lista_de_parmetros impresso: write (unidade, formato) lista_de_parmetros
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm Pgina 14 de 46
29/08/13 09:10
print formato, lista_de_parmetros Onde lista_de_parmetros representa os dados que sero impressos, e devem vir separados por vrgula. Podendo conter variveis ou expresses alfanumricas, esta ultimas devem vir entre apstrofos . Unidade representa a unidade onde os dados sero impressos ou de onde sero lidos. Formato pode conter uma lista de formatos de impresso (mostrado a seguir), um rtulo que indique um comando format, que contenha alista de formatos ou o smbolo * que indica impresso ou leitura de forma livre. As unidades 6 e * se no forem definidas dentro do programa, sero consideradas como a tela do computador (write ou print). Da mesma forma as unidades 5 ou * so definidas como o teclado (read). O comando print imprime sempre os resultados na unidade definida por * ou na tela caso no haja nenhuma definio para de uma unidade usando especificada pelo *. Na leitura os dados devem vir separados por espaos ou vir na linha seguinte. Caso se tenha mais dados em uma linha do que os que sero lidos por um comando read eles sero desprezados, inclusive pelo prximo comando read. Na escrita os dados viro um aps o outro separados por espaos (no casa de strings vero sem espao entre elas), ou na linha seguinte quando no houver mais espao. O prximo comando write ou print comear a escrever na linha seguinte. F90 para que se leia ou escreva dados na mesma linha mesmo aps mudar o comando pode-se usar a opo advance=advance no comando anterior. Onde advance pode ser yes ou no e indica se o comando deve ou no avanar automaticamente para a prxima linha. So usados somente nos comandos read e write onde a opo formato no seja livre. write (*,2,advance=no) Engenharia write (*,2) Quimica 2 format(a) imprime: Engenharia Quimica a significa que ser impressa um string de qualquer tamanho (item 9). Outras opes de impresso e leitura so encontrados no Apndice B.
9. Formatos
Os formatos servem para que os dados sejam impressos ou lidos de uma forma especifica, determinado pelo programador. Os formatos so compostos por uma seqncia de especificaes que determinaro como os dados sero processados. Cada uma dessas especificaes devem vir separadas por vrgulas. Pode-se ainda imprimir constantes numricas e alfanumricas, sendo que esta ultima deve vir entre apstrofos . O uso do * no lugar do formato indica que todos os dados sero impresso de forma livre, com o nmero de casas especificados pelo prprio compilador. um recurso til para se evitar erros. O FORTRAN no considera a primeira coluna da umidade de leitura e impresso quando a
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm Pgina 15 de 46
29/08/13 09:10
sada ou entrada formatada, por isso deve-se incluir uma casa de impresso a mais para dados. Para formato livre no necessrio pois o FORTRAN os posiciona automaticamente. Quando mais de um dado usar a mesma especificao, ela pode ser feita da seguinte forma: nespecificao1, n2especificao2 ou n( especificao1 , especificao2, ...), onde n e n2 representam o nmero de vezes que a seqncia deve se repetir. Caso o nmero de especificaes seja menor que o de variveis a serem lidos ou impressos, a ultima especificao ou a ultima seqncia, caso seja usado o recurso n(especificao1, especificao2, ...), ser repetida at que se complete o nmero necessrio. Isto no valido para constantes. Quando o nmero de especificaes maior que os de dados a serem impressos as ultimas sero desprezadas. A forma de se declarar os formatos a seguinte: r format (especificao1, especificao2, ...) Onde r um numero inteiro, e representa o rtulo do format. Um mesmo format pode ser usado por vrios comandos de escrita e leitura. WIN o formato pode vir entre apstrofos e parnteses (esp.1, esp2,..), dentro do prprio comando de impresso ou leitura. print (esp.), var1 write (*, (esp.1,esp.2)) var1,var2 read (*, (esp.1,esp.2)) var1,var2 Strings devem vir entre apstrofos duplos (string) nesse formato. Formato Iw[.m] Fw.d Ew.d[Ee] Gw.d[Ee] Dw.d Lw A[w] WIN F90 F90 Zw_hexedit Bw[.m] Ow[.m] Uso Valores Inteiros Valores Reais Valores Reais com expoente Mesmo que Iw[.m], Ew.d[Ee], Lw e A[w] Valores Reais de Dupla Preciso Valores Lgicos Seqncia de Caracteres Valores Hexadecimais Valores Binrios Valores Octadecimais
Pgina 16 de 46
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
29/08/13 09:10
F90 F90
ENw.d[Ee] ESw.d[Ee]
w representa o tamanho do campo a ser impresso ou lido, m representa o nmero de zeros que vir antes do nmero, d representa o nmero de casas decimais e e representa o nmero de casas para o expoente. O ponto decimal, o e do expoente e o sinal - devem ser contados ao se dar o tamanho do campo (w). Ao ler um dado que no possui ponto decimal e no seu formato esperado um, o compilador ler este dado como se l houvesse um ponto. 12345 read (*,(f5.3)) a => a = 12.345 Quando o ponto existe mas no est na posio especificada, a sua posio original mantida. 12.345 read (*,(f5.4)) a => a = 12.345 A notao com zeros m s vlida quando m maior que o nmero de casas que o nmero ocuparia no formato livre. a = 555 print (i5.4),a => 0555 Nas notaes com expoente (ENw.d[Ee], ESw.d[Ee], ...) no se pode omitir o E ou e. Sempre que houver este termo, a parte exponencial vai existir independente do seu valor. a = 12.345 b = 12345.789e6 write (*,1) a,b 1 format ( a=,e10.4e3, e b=,e10.4e3) => a=.1235E+002 e b=.1235E+011 Caso as strings sejam maiores que o espao reservado elas, sero tomados apenas os w primeiros caracteres. Se forem menores, elas sero alinhadas a direita e os outros espaos deixados em branco. Nome = belo horizonte read (*, (a10)) nome write (*, (a15)) nome => belo horiz => belo horiz
Pgina 17 de 46
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
29/08/13 09:10
F90 os valores dos campos podem ser variveis desde que venham entre <var1>. No valido para print. a = 5 b = FORTRAN write (*,(a<a>)) b Para valores numricos que preciso de mais casas de impresso que as indicadas no format, sero impressos somente * naquele campo. Pi = 3.1416 print (1x,E7.3e2), pi print (1x,E8.3e2), pi Outros Recursos Para Formatos Alguns recursos adicionais so permitidos para read ou write. Formato Uso String F90 Q Nh Tc TLc TRc NX SP SS S / WIN \ WIN $ : KP BN BZ Transmite uma string para a sada A varivel recebe o nmero de espaos que o valor ocupa Transmite os prximos n caracteres para a sada Move o ponto de leitura ou escrita para a posio c Move o ponto de leitura ou escrita c posies esquerda Move o ponto de leitura ou escrita c posies direita Deixa n posies em branco Escreve o sinal + onde ele opcional Omite o sinal + onde ele opcional Retorna ou padro ss Muda de linha Comea a escrever no ponto onde a ultima escrita parou Comea a escrever no ponto onde a ultima escrita parou Termina a impresso se no houver mais itens na lista O nmero multiplicado por 10 elevado -k (se o nmero j possuir expoente no h efeito) Ignora os espaos em branco Transforma os espaos em branco em zeros => ******* => .314E+01 => FORTR
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
Pgina 18 de 46
29/08/13 09:10
Antes ou depois de , , /, \, nH, $ ou : a vrgula opcional. real a, b character dia*20 a = 23.99 b = 55.8e-3 dia = 'Segunda-feira' write (*,'(5x,sp,e10.3e2,2x,en12.3e3)') a, b write (*,'(/2x,''hoje e '',a8)') dia produz o seguinte resultado: +.240E+02 +55.800E-003 hoje e Segunda-
10. Arquivos
Quando se deseja trabalhar com grandes quantidades de dados, o melhor armazena-los numa unidade de memria secundaria, ou seja em arquivos. Um programa pode gerar tantos dados que todos eles no caberiam na tela de uma s vez, e ainda seriam perdidos ao finalizar o programa. Os dados salvos em arquivos podem ser usados pelo prprio programa ou exportados para serem processados de outra forma. Arquivos de leitura economizam um tempo precioso para o usurio do programa pois ele no vai precisar de enviar dados via teclado, e com arquivos milhares de dados podem ser lidos em segundos. O primeiro passo para se usar arquivos em FORTRAN indicar ao programa qual o nome do arquivo e o nmero de unidade referente a ele. open (unidade,file=nome.ext) Outras opes para abertura e fechamento de arquivos podem ser encontradas no Apndice B. Onde unidade deve ser um inteiro maior ou igual a zero, e uma referencia a este arquivo. O nmero da unidade deve vir no comando read ou write indicando que os dados sero retirados ou colocados neta unidade. A disposio dos dados em arquivos so as mesmas utilizadas nas unidades de entrada e sada padro (Item 8 Primeira Parte), com uma nica diferena, as strings devem vir entre apstrofos . A abertura do arquivo pode ser feita em qualquer parte do programa (inclusive dentro de funes e subrotinas), desde que venha antes de um comando que o utilize. Apesar de se poder usar qualquer extenso de arquivo ou at omiti-la, as extenses .dat para leitura e .out para sada so mais comumente encontradas.
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
Pgina 19 de 46
29/08/13 09:10
Quando no for utilizado o comando open, o programa emitir uma mensagem na tela pedindo o seu nome, podendo o usurio escolher um nome diferente a cada vez que o programa for executado. Todos os arquivos dever estar ou sero criados no mesmo diretrio em que estiver o programa. Um arquivo pode tambm ser fechado, isto far com que o FORTRAN coloque uma marca de fim de arquivo naquele ponto, esta marca pode ser identificado por outro comando ou funo (Apndices A e B). close (unidade,status=estado) ou endfile unidade Onde status=estado opcional. Estado pode ser keep que mantm o arquivo na memria (esta a opo assumida quando status=estado omitida), ou delete que apaga o arquivo da memria. Arquivos fechados podem ser reabertos em qualquer parte do programa. Outros Recursos rewind unidade backspace unidade Programa character *15a,b,c open(20,file='arqui.out') open(30,file='arqui.dat') read (30,*) a write(20,*) ' este um ' write(20,*) ' arquivo de ' write(20,*) ' sada ' read (30,*) b rewind 30 read (30,*) c write(20,*) a write(20,*) b,c
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm Pgina 20 de 46
(volta o controle ao primeiro espao do arquivo) (volta o controle ao primeiro espao do arquivo) Arquivo arqui.dat ' Qumica' ' Fsica' ' Engenharia' Arquivo arqui.out este um arquivo de sada Qumica Engenharia Qumica
29/08/13 09:10
end
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
Pgina 21 de 46
29/08/13 09:10
a=10 b=20 c=30 write (*,*) a write (*,*) b stop write (*,*) c end integer*1 a,b a=10 b=20 c=30 write (*,*) a call exit write (*,*) b write (*,*) c end
20
10
2. Comando GO TO ou GOTO
O quando se deseja que o comando do programa avance ou recue em sua estrutura, usa-se o comando goto ou go to. goto r Onde r um rtulo de uma linha que possui ou no um comando. Como uma linha rotulada no pode estar em branco, se no for necessria incluso de nenhum comando, pode-se usar a palavra chave continue, que no ir interferir em nada no programa. Programa goto 20 10 write (*,*) ' linha 10' 20 write (*,*) ' linha 20'
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm Pgina 22 de 46
29/08/13 09:10
3. Estrutura Condicional
Estrutura Condicional Simples if (expresso de teste) comando ou if (expresso de teste) then seqncia de comandos end if Quando a expresso de teste for verdadeira os comandos sero executados, quando for falsa o programa segue para o prximo comando logo abaixo da estrutura condicional. A primeira opo s valida quando for executado um nico comando. Este comando pode ser de qualquer tipo, atribuio, escrita, leitura ou goto. Estrutura Condicional Composta if (expresso de teste) then seqncia de comandos 1 else seqncia de comandos 2 end if Quando a expresso de teste for falsa a seqncia de comandos 2 ser executada. Mesmo quando s h um comando na seqncia de comandos 1, no se pode omitir a palavra chave then. permitido o uso de estruturas condicionais umas dento das outras. Programa implicit integer (a-z) a=10 b=20 c=30
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm Pgina 23 de 46
Resultado a<b c= 30
29/08/13 09:10
if (a.lt.b) then write (*,*) ' a<b' a=b+10 else write (*,*) ' a>b' b=a-5 end if if (c.ge.20) write(*,*)' c=', c end Estrutura Condicional Composta Simplificada Uma outra forma de se usar uma estrutura condicional composta ( somente WINDOWS e FORTRAN 90) usando o comando case. WIN SELECT CASE (exp. case) CASE (lista de seleo 1) comandos 1 CASE (lista de seleo 2) comandos 2 ... CASE (lista de seleo n) comandos n CASE DEFAULT comandos d END SELECT F90 nome_case: SELECT CASE (exp. case) CASE (lista de seleo 1) comandos 1 CASE (lista de seleo 2) comandos 2 ... CASE (lista de seleo n) comandos n CASE DEFAULT comandos d END SELECT nome_case
Onde exp. case' uma expresso ou constante inteira, lgica ou literal (somente um caractere character*1). Caso o valor de exp. case estiver na lista de seleo 1, os comandos 1 sero executados. Se o valor no estiver na lista de seleo 1 o computador ir avaliar a lista de seleo 2, se for verdadeira sero executados os comandos 2 e assim at terminar os comandos case (lista de seleo n). O comando case default opcional, e faz com que os
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm Pgina 24 de 46
29/08/13 09:10
comandos d sejam executados caso nenhuma das outras avaliaes sejam verdadeiras. nome_case opcional, deve seguir as mesmas regras usadas para dar nomes as variveis. A sua utilidade apenas de dar maior clareza ao programa As listas de seleo podem ser da seguinte forma: Estrutura case (valor) case (:valor) case (valor:) case (valor1:valor2) Condio para ser verdadeira Exp. teste igual valor Exp. teste menor que valor Exp. teste maior que valor Exp. teste entre valor1 e valor2
case (valor1,valor2,...,valorn) Exp. teste igual valor1 ou igual valor2 ou ... valorn. No permitida a superposio de valores. Os valores literais devem vir entre apstrofos e seus valores sero avaliados de acordo com o padro ASCII. Uma tabela com os valores ASCII pode ser encontrada no Apndice C. Programa i=20 select case (i) case (10) write (*,*) 'a=10' case (20) write (*,*) 'a=20' case (11,19) write (*,*) 'a>11 a<19' end select end Valor_i: character i*1 i='h' select case (i) case ('a','b','c') i esta entre d e m a=20 Resultado
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
Pgina 25 de 46
29/08/13 09:10
write (*,*) 'i=a ou b ou c' case ('d':'m') write (*,*) 'i esta entre d e m' case ('D':'M') write (*,*) 'i esta entre D e M' end select valor_i end
4. Estruturas de Repetio
Quando o mesmo comando precisa ser executado vrias vezes at que se atinja uma certa condio ou um nmero certo de repeties, o melhor usar as estruturas de repetio. Estas estruturas so bem simples e podem economizar vrias linhas de comando. Estruturas de Repetio Simples r1 if (condio_de_teste) goto r2 comandos goto r1 r2 continue
Esta uma estrutura de repetio muito simples, mas no recomendada para programao. Estruturas mais aceitas, pois possuem equivalentes em outras linguagens, so da seguinte forma: do r1 var=n1,n2,n3 seqncia de comandos r1 continue ou (WIN) do var=n1,n2,n3 seqncia de comandos end do
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
Pgina 26 de 46
29/08/13 09:10
var uma varivel inteira que recebe inicialmente o valor n1, a seqncia de comandos se repete, e o valor de var aumenta de n3 a cada vez que o comando volta para a linha do do. A repetio s para quando o valor de var ultrapassa n2. A palavra chave end do pode ser escrita como enddo. n1, n2 e n3 podem ser constantes ou variveis inteiras ou reais, positivas ou negativas. Quando n3 for igual a um ele pode ser omitido. DO WHILE (F90) Uma forma de se usar uma expresso de teste no comando do, o uso do do while. do while(exp. teste) seqncia de comandos end do Enquanto exp. teste for verdadeira a seqncia de comandos ser executada. Programa real*8 a,b a=0 b=0 1 if(a.lt.0) goto 2 a=cos(b) b= b+.125 write (*,*) a goto 1 2 continue end Resultado 1.000000000000000 9.921976672293290E-001 9.689124217106447E-001 9.305076219123143E-001 8.775825618903728E-001 8.109631195052179E-001 7.316888688738209E-001 6.409968581633251E-001 5.403023058681398E-001 4.311765167986662E-001 3.153223623952687E-001 1.945477079889872E-001 7.073720166770291E-002 -5.417713502693632E-002 integer i/1/, j/1/ do while (i) 2 1 3 1
Pgina 27 de 46
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
29/08/13 09:10
j=j+1 if(j.eq.5) i=0 print *,j,i end do end real*8 a(4) i = 1; a(1) = 2.97645984 a(2) = 576.74e5 a(3) =.45; a(4) = sin(.5) do while(i.le.4) print'(2x,sp,en16.5e3)', a(i) write (*,*)' ---------------' i = i + 1 end do end do i=9,12 print '(2x,I2.2)',i enddo end DO Implcito (WIN)
4 1 5 0
09 10 11 12
Nos comandos read e write possvel usar uma estrutura de repetio semelhante ao DO, mas de forma implcita e mais simplificada. read(unidade,formato)(lista_de_parmetros, var=n1,n2,n3) Onde var=n1,n2,n3 tem o mesmo significado que na estrutura DO. Pode ser usadas vrias estruturas deste tipo em um mesmo read ou write desde que venham separadas por parnteses. Quando impressos desta forma, os dados ficam na mesma linha. Para leitura eles podem vir na mesma linha ou em linhas diferentes. Os parmetros em formato sero usados at que se atinja o seu final, quando isto acontecer o comando muda de linha e os formatos so usados novamente desde o comeo.
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm Pgina 28 de 46
29/08/13 09:10
Programa integer a(5,3), b(3) do i=1,5 do j=1,3 a(i,j)=10*i+j b(j)=100+j**3 enddo enddo write (*,1) ((a(i,j), i=1,5) & & ,b(j), j=1,3) 1 format ( 2x,i4,' - ',i5,' - ',i4) end
29/08/13 09:10
go to 1 15 write (*,*) ' o valor de i=3' 1 continue end IF Com Deslocamento Uma outra maneira de se deslocar num programa, usando agora uma expresso no lugar de uma varivel a seguinte: if (exp. numrica) r1,r2,r3 Exp. numrica no pode ser complexa. r1, r2, r3 so rtulos. Se o valor de exp. numrica for menor que zero o comando vai para a linha com o rtulo r1, quando for igual a zero o comando vai para linha com o rtulo r2 e quando for maior que zero vai para r3. Programa i=1 10 if(i-2) 1,2,3 1 write (*,*) ' i<2' i=2 goto 10 2 write (*,*) ' i=2' i=3 goto 10 3 write (*,*) ' i>2' end i<2 i=2 i>2 Resultado
29/08/13 09:10
ou tipo var1(Li1:Ls1), var2(Li2:Ls2), ...,varn(Lin:Lsn) tipo pode ser qualquer tipo de varivel inteira, real, lgica, complexa ou literal. Li1, Li2,..., Lin so os ndices inferiores, e Ls1, Ls2,..., Ln so os ndices superiores da matriz ou vetor. Os valores de Li e Ls podem ser positivos, nulos ou negativos desde que sejam inteiros. Quando o valor de Li omitido, o valor um usado como padro. As variveis podem ter duas ou mais dimenses, sendo declaradas da mesma forma, com cada dimenso separada das outras por vrgulas. var(Li1:Ls1, Li2:Ls2, ...,Lin:Lsn) Programa integer a dimension a(-3:2,3) do i=-3,2 do j=1,3 a(i,j)=i**j print 1,'a(',i,',',j,')=',a(i,j) 1 format(1x,sp,a,i3.2,a,i3.2 & & ,a,i3.2) enddo enddo end Resultado a(-03,+01)=-03 a(-03,+02)=+09 a(-03,+03)=-27 a(-02,+01)=-02 a(-02,+02)=+04 a(-02,+03)=-08 a(-01,+01)=-01 a(-01,+02)=+01 a(-01,+03)=-01 a(+00,+01)=+00 a(+00,+02)=+00 a(+00,+03)=+00 a(+01,+01)=+01 a(+01,+02)=+01 a(+01,+03)=+01 a(+02,+01)=+02 a(+02,+02)=+04 a(+02,+03)=+08
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
Pgina 31 de 46
29/08/13 09:10
PARAMETER Uma constante pode ser representada por um smbolo no lugar do seu valor, ou seja o valor de _ pode ser sempre que preciso referenciado como pi, no lugar de se escrever sempre 3.14159, bastando para isso o uso do comando parameter. A diferena entre um valor com parameter e uma varivel comum que com parameter o valor no pode ser modificado em nenhuma parte do programa ou ser lido atravs de um comando read. O tipo do constante deve ser especificado antes ou sero usadas as atribuies implcitas (item 4 primeira parte). tipo constante1, constante2,... parameter ( constante1 = valor, constante2 = valor,...) Os parnteses so opcionais. tipo pode ser integer, real ou qualquer outro tipo de variveis. Em parameter no se pode declarar vetores e matrizes. F90 Uma forma simplificada de se atribuir o valor e o tipo da constante feito da seguinte forma. tipo , parameter :: constante1=valor, constante2=valor,...
Programa real pi,r(3),a parameter (pi=3.1459) do i=1,3 r=i**2 a=area(r(i),pi) print *,a enddo end function area(r,pi) real r,area area=2*pi*r return end real pi,r(3) parameter (pi=3.1459) do i=1,3 r=i**2 call area(r(i),pi) enddo end subroutine area(r,pi) real r,a a=2*pi*r print *,a return end
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
Pgina 32 de 46
29/08/13 09:10
TYPE (F90) Quando vrias variveis esto relacionadas entre si, o melhor agrupadas em grupos (type), de forma que possam ser acessadas pelo nome do grupo. Declarao: type nome_type declaraes end type nome_type Nome_type o nome do bloco, e deve seguir as mesmas regras para nomes de variveis. Declaraes so declaraes de variveis ( tipo varivel). Este bloco pode ser usado vrias vezes, associando cada novo bloco um nome. O bloco com esse novo nome ter as mesmas variveis feitas na declarao. Associao: type (nome_type) :: nome Atribuio: nome = nome_type (valor das variveis) ou nome%nome_varivel = valor Programa type anivers character nome*10 character mes*10 integer*1 dia end type anivers type (anivers) :: helder type (anivers) :: luciene type (anivers) :: carlo helder=anivers('Helder','Fevereiro',17) Resultado Fevereiro Helder 17 Carlo 12 Luciene Agosto 22
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
Pgina 33 de 46
29/08/13 09:10
carlo=anivers('Carlo','Fevereiro',12) luciene%nome='Luciene' luciene%mes='Agosto' luciene%dia=22 write(*,*) helder%mes write(*,*) helder%nome,helder%dia write(*,*) carlo%nome,carlo%dia write(*,'(1x,a,a,i2)') luciene end DATA O modo mais estruturado de se atribuir valores iniciais valores a variveis pelo comando data. As diferenas entre o data e parameter que as variveis declaradas em data podem alterar seu valor durante o programa, e essas variveis podem ser vetores ou matrizes. data var1/valor1/,var2/valor2/,...,varn/valorn/ ou data var1,var2,...,varn/valor1,valor2,...,valorn/ Os valores de vetores e matrizes devem ser declarados todos de uma vez, com separao entre eles feita por vrgula. Programa integer h(3,4),a,b,c logical l1,l2 character cor*5 data h/1,2,3,4,5,6,7,8,9,10,11,12/ data a/5/,b/3/,c/10/ data l1,l2,cor/.true.,.false.,'preto'/ print '(2x,6i2.2,/,2x,6i2.2)',h print '(2x,3(i2.2,2x))',a,b,c print '(2x,l7,2x,l7)',l1,l2
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm Pgina 34 de 46
29/08/13 09:10
3. Designao de Memria
COMMON Quando muitos dados devem ser passados funes ou subrotinas, um recurso til o common, que pode resumir este servio. Um mesmo common pode ser usado vrias vezes e carregar muitas variveis ao mesmo tempo. Este comando deve aparecer de forma igual no incio do programa principal (logo aps a definio dos tipos de variveis) e tambm no incio de cada funo ou subrotina que o utilize. common /nome/lista de variveis/nome2/lista de variveis2,... O nome do bloco opcional, e se for repetido as variveis sero agrupadas em um bloco de mesmo nome. A ausncia do nome e o nome / / tem o mesmo significado. As variveis de um common sem nome no podem ser declaradas pelo comando data. Uma mesma varivel no pode ocupar mais de um comando common. Programa common /func/a,b common / /c,d common e,f data a,b/1,2/ c=3;d=4;e=5 f=funcao(4) call subrotina(5) end ! funes e subrotinas function funcao(t) common /func/a,b a=a*2 funcao=t+a+b return 12.000 2.000 4.000 Resultado
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
Pgina 35 de 46
29/08/13 09:10
end subroutine subrotina(r) common /func/a,b common c,d,e,f r=r+c+d+e print '(3(2x,f6.3,/))',r,a,f return end BLOCK DATA As variveis declaradas em um common com nome podem receber valores iniciais de uma forma mais estruturada. No block data podem ser usados os seguintes recursos: common(com nome), parameter, data, dimension e variveis derivadas de um type. block data nome_bloco declaraes e atribuies end O nome_bloco opcional e deve seguir as mesmas regras para nomes de variveis.
4. Modularizao
INCLUDE Declaraes, atribuies, common e outros comados que estejam em um arquivo de texto com o mesmo formato usado no programa podem ser adicionados ao programa principal atravs do comando include. Esses arquivos podem ser adicionados a outros arquivos include ao programa principal e a funes e subrotinas. O mesmo arquivo pode ser usado vrias vezes. Os arquivos sero interpretados como parte do programa, e por isso devem seguir as mesmas regras de programa normal escrito em FORTRAN. Funes e subrotinas no podem ser declaradas em um arquivo include, mas podem ser acessadas a partir deles. include nome.ext ou include "nome.ext" Nome e extenso podem ser qualquer um, mas a extenso .inc a mais comum para este tipo de arquivo. permitido o uso de caminhos completos no lugar do nome.
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm Pgina 36 de 46
29/08/13 09:10
SIND (X)
real ou complexo
real*4
CSIN (X) CDSIN (X) DSIN (X) DSIND (X) ASIN (X) ASIND (X) DASIN (X) DASIND (X) COS (X)
complex*4 complex*8 real*8 real*8 real, |x| .le. 1 real |x| .le. 1 real*8 real*8 real ou complexo
COSD (X)
real ou complexo
real*4
CCOS (X) CDCOS (X) DCOS (X) DCOSD (X) ACOS (X)
Arcocoseno (radianos) ) real, |x| .le. 1 retorna valores na faixa [ 0, _ ] Arcocoseno (graus) retorna valores na faixa [ 0, 180 ] real, |x| .le. 1
real*4 real*8
Arcocoseno (radianos) ) real*8, |x| .le. 1 retorna valores na faixa [ 0, _ ] Arcocoseno (graus) ) retorna real*8, |x| .le. 1 valores na faixa [ 0, 180 ] tangente (radianos) tangente (graus) real real
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
29/08/13 09:10
DTAN (X) DTAND (X) COTAN (X) DCOTAN (X) ATAN (X)
Arcotangente (radianos). ) real retorna valores na faixa [-_ /2, _ /2 ] Arcotangente (graus). ) retorna valores na faixa [-90, 90 ] real
ATAND (X)
real*4
DATAN (X)
Arcotangente (radianos). real*8 retorna valores na faixa [-_ /2, _ /2 ] Arcotangente (graus). retorna real*8 valores na faixa [-90, 90 ] Arcotangente (y / x) em radianos. retorna valores na faixa [-_ ,_ ] Arcotangente (y / x) em graus. retorna valores na faixa [-180, 180 ] Arcotangente (y / x) em radianos retorna valores na faixa [-_ ,_ ]) Arcotangente (y / x) em graus. retorna valores na faixa [-180, 180 ] seno hiperblico (radianos) seno hiperblico (radianos) real. x e y no podem ambos ser 0. real. x e no podem ambos ser 0. real*8 x e y no podem ambos ser 0. real*8 x e y no podem ambos ser 0. real real*8
real*8
real*8 real*4
ATAN2D (Y,X)
real*4
DATAN2 (Y,X)
real*8
DATAN2D (Y,X)
real*8
SINH (X) DSINH (X) COSH (X) DCOSH (X) TANH (X) DTANH (X)
coseno hiperblico (radianos) real coseno hiperblico (radianos) real*8 tangente hiperblica (radianos) tangente hiperblica (radianos) real real*8
2. Funes Genricas
Nome DPROD(A,B) EOF(UNIT) SIGN(X,Y) ISIGN(X,Y) DSIGN(X,Y) a*b verifica o final da unidade unit retorna x com o sinal de y retorna x com o sinal de y retorna x com o sinal de y Definio Parmetro real*4, real*4 integer*2 real ou inteiro inteiro real*8 Resultado real*8 logical real ou inteiro inteiro real*8
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
Pgina 38 de 46
29/08/13 09:10
3. Exponenciais
O nmero e elevado a X (eX )
Nome CDEXP (X) CEXP (X) DEXP (X) EXP (X) complex*16 complex*8 real*8 real, inteiro ou complexo Parmetro complex*16 complex*8 real*8 mesmo que o parmetro Resultado
4. Logaritmos
Nome LOG (X) ALOG (X) DLOG (X) CLOG (X) CDLOG (X) LOG10 (X) ALOG10 (X) DLOG10 (X) Definio logaritmo natural logaritmo natural logaritmo natural logaritmo natural logaritmo natural logaritmo na base 10 logaritmo na base 10 logaritmo na base 10 Parmetro real ou complexo real*4 real*8 complex*8 complex*16 real real*4 real*8 Resultado mesmo que o parmetro real*4 real*8 complex*8 complex*16 mesmo que o parmetro real*4 real*8
5. Mximos
Nome MAX(X1,X2,..) MAX0(X1,X2,..) AMAX1(X1,X2,..) AMAX0(X1,X2,..) MAX1(X1,X2,..) DMAX1(X1,X2,..) Definio maior valor maior valor maior valor maior valor maior valor maior valor Parmetro qualquer tipo inteiro real inteiro real real*8 Resultado maio tipo entre os valores inteiro real real inteiro real*8
6. Mnimos
Semelhante as funes de mximo (MIN, MIN0, AMIN1, AMIN0, MIN1, DMIN1)
7. Restos
Resto da diviso de X por Y
Nome Parmetro Resultado
Pgina 39 de 46
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
29/08/13 09:10
8. Raiz Quadrada de X
Nome SQRT(X) DSQRT(X) CSQRT(X) CDSQRT(X) Parmetro real ou complexo real*8 complex*8 complex*16 Resultado real ou complexo real*8 complex*8 complex*16
9. Truncamento de X
Nome AINT(X) DINT(X) real real*8 Parmetro real real*8 Resultado
10. Arredondamento de X
Nome NINT(X) DNINT(X) ANINT(X) IDNINT real real*8 real real*8 Parmetro inteiro real*8 real inteiro Resultado
Resultado
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
29/08/13 09:10
ser incrementado HUGE(X) MAXEXPONENT(X) MINEXPONENT(X) NEAREST(X,Y) maior valor possvel maior expoente possvel menor expoente possvel se y positivo retorna o maior real se negativo o menor real nmero de casas decimais menor valor positivo que pode ser armazenado real ou inteiro real real real real ou inteiro real real real
PRECISION(X) TINY(X)
real real
real real
14. Complexos
Nome IMAG(X) Definio retorna a parte imaginria Parmetro complexo real Resultado
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
Pgina 41 de 46
29/08/13 09:10
retorna a parte imaginria retorna a parte imaginria retorna o complexo conjugado retorna o complexo conjugado
15. Caracteres
Nome LEN(X) LGE(X,Y) LGT(X,Y) LLE(X,Y) LLT(X,Y) INDEX(X,Y) LEN_TRIM(X) SCAN(X,Y) VERIFY(X,Y) tamanho de x compara x e y se x >= y .true. compara x e y se x > y .true. compara x e y se x <= y .true. compara x e y se x < y .true. procura y em x e retorna a posio tamanho de x menos o nmero de espaos procura um dos caracteres de y em x e retorna o nmero de ocorrncias procura um dos caracteres de y em x e retorna a posio da primeira no ocorrncia Definio Parmetro character character character character character character character character character Resultado inteiro logical logical logical logical inteiro inteiro inteiro inteiro
29/08/13 09:10
destas. As opes entre colchetes so opcionais. Elas podem vir em qualquer ordem, exceto quando explicitado.
29/08/13 09:10
3. Escrita (WRITE)
WRITE ([UNIT=] unit [ , [{[ FMT=] format] | [ NML=] nml }] [ , ERR=errlabel] [ , IOSTAT=iocheck] [ , REC=rec] ) iolist UNIT= - Quando omitido, o primeiro valor ser o nmero da unidade (unit). Se FMT= ou NML= forem omitidos, format ou nml devem ser o segundo parmetro. unit Expresso inteira. Indica o nmero da unidade. format Expresso inteira. Indica o rtulo de um comando format. Expresso alfanumrica. Expresso que contenha os formatos de impresso. nml Lista de variveis serem impressas, se estiver presente iolist deve ser omitida. errlabel Expresso inteira. Indica o rtulo de uma linha no mesmo arquivo para onde o comando vai se houver erro. Quando omitido o efeito determinado pela presena ou no de iocheck. iocheck Varivel inteira. Retorna zero quando no ocorre erros, retorna o nmero do erro quando um ocorre. rec Expresso inteira. Indica a posio do arquivo onde o dado ser impresso. Somente para arquivos com access=DIRECT. iolist Lista de variveis serem impressas.
4. Leitura (READ)
READ { { format, | nml } | ([UNIT=]unit [ , [ {[FMT=] format] |
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
Pgina 44 de 46
29/08/13 09:10
[NML=]nmlspec}] [ , END=endlabel] [ , ERR=errlabel] [ , IOSTAT=iocheck] [, REC=rec])} iolist UNIT= - Quando omitido, o primeiro valor ser o nmero da unidade (unit). Se FMT= ou NML= forem omitidos, format ou nml devem ser o segundo parmetro. unit Expresso inteira. Indica o nmero da unidade. format Expresso inteira. Indica o rtulo de um comando format. Expresso alfanumrica. Expresso que contenha os formatos de leitura. nml Lista de variveis serem lidas, se estiver presente iolist deve ser omitida. endlabel Expresso inteira. Indica o rtulo de uma linha no mesmo arquivo para onde o comando vai se a marca de fim de arquivo (EOF) for encontrada. errlabel Expresso inteira. Indica o rtulo de uma linha no mesmo arquivo para onde o comando vai se houver erro. Quando omitido o efeito determinado pela presena ou no de iocheck. iocheck Varivel inteira. Retorna zero quando no ocorre erros, retorna 1 se encontrar EOF, retorna o nmero do erro quando um ocorre. rec Expresso inteira. Indica a posio do arquivo de onde o dado ser lido. iolist Lista de variveis serem lidas.
29/08/13 09:10
comando vai se houver erro. Quando omitido o efeito determinado pela presena ou no de iocheck. iocheck Varivel inteira. Retorna zero quando no ocorre erros, retorna o nmero do erro quando um ocorre.
http://www.dsc.ufcg.edu.br/~icc/Periodo-2013.1/matadic/Programacao%20em%20Linguagem%20FORTRAN.htm
Pgina 46 de 46