Anda di halaman 1dari 44

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR.

. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
Sumrio Captulo 1: Noes Preliminares......................................................................4 1.1. Introduo................................................................................ ............4 1.2. Computadores................................................................................ ......4 1.3. Algoritmos.................................................................................... ........4 1.4. Diagramas de Fluxo.............................................................................5 1.5. Linguagens de Programao................................................................6 1.5.1 Linguagem de Mquina...................................................................6 1.5.2. Linguagem Simblica Montadora...................................................7 1.5.3. Linguagens de Compiladores.........................................................7 1.6.Passos no Desenvolvimento de Programas...........................................8 Capitulo 2 - A Linguagem Fortran: Conceitos Bsicos....................................9 2.1 Introduo................................................................................. ............9 2.2. Definies da Linguagem......................................................................9 2.3. Itens sintticos do Fortran....................................................................9 2.4. Caracteres usados no Fortran............................................................10 2.5. Uma viso geral do Fortran................................................................10 2.6. Codificao de programas em Fortran...............................................16 2.6.1. Formato Livre (Fortran90 e posteriores).......................................16 2.6.2. Formato Fixo (Fortran77 e anteriores)..........................................17 Captulo 3: Constantes, Variveis e Conjuntos.............................................18 3.1 Introduo............................................................................... ............18 3.2. Constantes.........................................................................................19 3.2.1. Constantes Inteiras......................................................................19 3.2.2. Constantes Reais.........................................................................19 3.2.3. Constantes Caracteres.................................................................19 3.3. Variveis............................................................................................19 3.3.1. Variveis Inteiras..........................................................................20 3.3.2 Variveis Reais..............................................................................20 3.3.3. Variveis Caractere......................................................................20 3.4. Conjuntos...........................................................................................20 3.4.1 Declaradores de Conjuntos...........................................................21 Captulo 4: Expresses..................................................................................23 4.1. Introduo.............................................................................. ............23 4.2. Expresses Aritmticas.......................................................................23 4.3. Expresses Relacionais.......................................................................24

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
4.4. Expresses Lgicas.............................................................................25 Captulo 5: Comandos de Atribuio............................................................26 5.1. Introduo.............................................................................. ............26 Captulo 6: Comandos de Especificao: Declarao de Tipos de Variveis.27 6.1. Introduo.............................................................................. ............27 6.2. Comando IMPLICIT.............................................................................27 6.3. Comandos de Especificao Explcita................................................27 6.3.1. Comando Integer.........................................................................27 6.3.2. Comando REAL............................................................................28 6.3.3. Comando DOUBLE PRECISION......................................................28 6.3.4. Comando COMPLEX.....................................................................29 6.3.5. Comando LOGICAL.......................................................................29 6.3.6. Comando CHARACTER.................................................................29 Captulo 7: Comandos de Especificao: Designao de reas de Memria 30 7.1. Introduo.............................................................................. ............30 7.2. Comando DIMENSION.........................................................................30 7.3. Comando COMMON............................................................................30 7.4. Unidades de programas do tipo MODULE...........................................31 7.5. Comando USE....................................................................................31 7.6. Comando PARAMETER........................................................................32 7.7. Comando PROGRAM...........................................................................33 7.8. Comandos ALLOCATE, DEALLOCATE E ALLOCATABLE.........................33 Captulo 8: Comandos de Controle de Fluxo e Programao Estruturada... .34 8.1. Introduo.............................................................................. ............34 8.2. Estruturas de Controle.......................................................................35 8.3. Comandos GO TO...............................................................................35 8.4. Comandos IF......................................................................................36 8.4.1. Comando IF lgico.......................................................................36 8.4.2. Comandos IF bloco.......................................................................37 8.4.3. Estruturas de IF bloco encaixados...............................................38 8.5. Comando DO......................................................................................39 8.5.1. Laos de DO encaixados..............................................................40 8.6. Comando EXIT............................................................................. .......40 8.7. Comando CYCLE.................................................................................40 8.8. Comando CONTINUE..........................................................................40 8.9. Comando STOP..................................................................................41 8.10. Comando END..................................................................................41 8.11. Comando SELECT CASE....................................................................41

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
Captulo 9: Comandos de Entrada/Sada......................................................42 9.1. Introduo.............................................................................. ............42 9.2. Registros, Arquivos e Unidades..........................................................42 9.3. Componentes dos Comandos de E/S..................................................43 9.3.2. Lista de E/S..................................................................................44 9.4. Comandos READ................................................................................46 9.4.1. Comandos READ seqenciais.......................................................46 9.5. Comandos WRITE (PRINT)..................................................................46 9.5.1. Comandos WRITE (PRINT) seqenciais.........................................47 9.6. Comandos de Condio de Arquivos de E/S.......................................48 9.6.1. Comando OPEN............................................................................48 9.6.2. Comando CLOSE..........................................................................48 Captulo 10: Comando FORMAT e Especificaes de Formato.......................48 10.1. Introduo........................................................................................48 10.2. Comando FORMAT............................................................................49 10.3. Especificaes de Formato (EF) de Converso..................................49 10.4. Especificaes de Formato de Edio...............................................50 10.5. Especificaes de Formato em Grupos Repetidos.............................50 Referncias.................................................................................................. .50

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
Captulo 1: Noes Preliminares 1.1. Introduo - "O que todo computador pode realmente fazer seguir ordens muito simples, as quais foram cuidadosamente consideradas e refletidas por um programador e escritas em uma linguagem de programao, como o Fortran." 1.2. Computadores - H somente 4 tipos de instrues que um computador pode realizar: 1. Armazenamento e recuperao de informaes da memria; 2. Clculos; 3. Entrada e sada de dados; 4. Controle de programa. - Esquema de um computador:

1.3. Algoritmos - Um "algoritmo" um conjunto de instrues passo-a-passo para resolver um problema. - Um algoritmo correto deve possuir 3 qualidades: 1. Cada passo no algoritmo deve ser uma instruo que possa ser realizada.

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
2. A ordem dos passos deve ser precisamente determinada. 3. O algoritmo deve ter fim. - Elaborao em grupos de 3 de um algoritmo para que um dos elementos do grupo desempenhe a seguinte tarefa: Sair de uma posio na sala de aula, que ser determinada pelo professor, at o interruptor das luzes e providenciar o desligamento destas.

As operaes corporais possveis devem ser determinadas antes do comeo do trabalho em grupo, em conjunto entre os alunos e o professor. Aps o trmino do trabalho dos grupos, o professor escolher aleatoriamente trabalhos, os ler em voz alta, determinando se os passos do algoritmo esto contidos no conjunto de operaes permitidas. Se isto for verdade, um dos elementos do grupo ler em voz alta os passos que sero executados por outro membro do grupo. Sugestes de operaes permitidas: caminhar, girar o corpo (graus e sentido), levantamento de brao (graus e sentido), movimento de mo, cegueira do executor, etc. 1.4. Diagramas de Fluxo - "Diagramas de Fluxo" fornecem uma representao grfica de um algoritmo. - Principais smbolos de diagramas de fluxo:

1.5. Linguagens de Programao - Um "programa de computador" um algoritmo escrito numa linguagem de programao, como o Fortran.

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
- Existem 3 nveis de linguagens de programao: 1. Linguagens de baixo nvel (ou de mquina). 2. Linguagens de nvel intermedirio (ou simblica montadora). 3. Linguagens de alto nvel (ou de compiladores). 1.5.1 Linguagem de Mquina - Cada instruo constituda de 2 partes: cdigo de operao operando(s) - O "cdigo de operao" instrui o computador para realizar uma funo especfica: adio, subtrao, leitura, escrita, comparao, movimento de dados, etc... - O(s) operando(s) especifica(m) o endereo do dado a ser operado, endereo do dispositivo de entrada/sada, etc... - Exemplo do trecho principal de um programa em linguagem de mquina para calcular 5A+16B R = ---------- - D C onde os valores de A, B, C, D e R esto armazenados nos endereos 1000, 1004, 1012, 1020 e 2050 da memria. Cdigo da Operao 14 12 15 14 12 10 13 11 15 Operand o 1000 =5 3000 1004 =16 3000 1012 1020 2050 Comentrio carrega A no acumulador multiplica o acumulador por 5 armazena contedo acumulado no endereo 3000 carrega B no acumulador multiplica acumulador por 16 adiciona acumulador com contedo de 3000 divide acumulador pelo contedo de 1012 subtrai do acumulador o contedo de 1020 armazena acumulador em 2050

- Na realidade, um programa real em linguagem de mquina, para ser compreendido por ela, geralmente escrito no sistema binrio. 1.5.2. Linguagem Simblica Montadora - As linguagens simblicas procuram facilitar a tarefa do programador, criando mnemnicos para as operaes. - Os programas montadores traduzem um programa fonte (ou seja, em linguagem simblica) em um programa objeto (ou seja, em linguagem de mquina).

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
- O trecho de programa visto acima, ficaria em uma linguagem simblica parecido com: Operao CAR MUL ARM CAR MUL ADI DIV SUB ARM Operando A 5 TMP B 16 TMP C D R Comentrio carrega A multiplica por 5 armazena o resultado em TMP carrega B multiplica por 16 adiciona o resultado com o contedo de TMP divide o resultado por C subtrai o resultado de D armazena o resultado em R

1.5.3. Linguagens de Compiladores - Uma linguagem de compilador (ou de alto nvel) tem por objetivo permitir ao programador se utilizar de uma linguagem muito prxima quela utilizada no ambiente no qual se coloca a tarefa a ser realizada. - Os programas compiladores traduzem um programa fonte, escritos em uma linguagem de alto nvel, em um programa objeto em linguagem de mquina. - O trecho de programa visto acima, ficaria na linguagem de alto nvel Fortran idntico a: R = (5.0*A + 16.0*B) / C - D - Etapas do processamento de um programa em linguagem de alto nvel:

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
1.6.Passos no Desenvolvimento de Programas

Capitulo 2 - A Linguagem Fortran: Conceitos Bsicos 2.1 Introduo - FORTRAN = FORmula TRANslation (em portugus: traduo de frmulas). - O Fortran uma linguagem simples cujo vocabulrio consiste de um conjunto de palavras, conhecidas como "palavras-chave" (para se ter uma idia, no Fortran77 eram cerca de 450; atualmente o nmero bem maior). - Um "comando" Fortran uma sentena escrita nesta linguagem. Um programa consiste numa seqncia de comandos, cada um escrito numa linha. 2.2. Definies da Linguagem - Programa Principal uma unidade que pode chamar outras unidades de programa, mas que no pode ser chamado por estas. O programa principal quem recebe o controle da execuo no incio da fase de execuo. - Subprograma uma unidade de programa que chamada por outra unidade de programa. Pode ser de dois tipos: subrotina ou funo.

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
Usualmente um subprograma recebe parmetros de entrada e parmetros de sada. retorna - Funo Intrnseca uma funo suprida pelo compilador e que realiza operaes sobre nmeros ou caracteres. - Programa Executvel um programa j em linguagem de mquina que pode ser executado pelo computador. Consiste de um programa principal e subprogramas. - Comando Executvel aquele que efetua clculos, testes, providencia entrada ou sada de dados, altera o fluxo de execuo ou atribui valores a variveis. - Comando No-Executvel aquele que descreve as caractersticas de uma unidade de programa, dos dados ou de informaes de edio. - Unidade de Programa uma seqncia de comandos terminando com um comando END. - Arquivos de Dados so unidades de entrada e sada de dados, passveis de serem lidos/escritos por um programa. 2.3. Itens sintticos do Fortran - Sintaxe a parte da gramtica que estuda a disposio das palavras na frase e a das frases no discurso. - Constantes so valores ou nmeros que ocorrem num programa. - Nome simblico uma seqncia de uma ou mais letras ou dgitos, o primeiro dos quais deve ser uma letra. - Variveis so valores ou nmeros ou conjuntos de caracteres que ocorrem num programa e que podem sofrer variaes durante a execuo do programa. Na realidade uma varivel o nome de uma localizao da memria. - Nmero de comando um nmero de um a cinco dgitos, um dos quais deve ser diferente de zero e usado para identificar um comando. Deve estar localizado no incio da linha. - Palavra chave uma seqncia de letras que identificam exclusivamente comandos Fortran. - Operador um ente similar a um operador matemtico. - Valores so obtidos da memria quando eles so usados no lado direito do sinal de igual. - Observe que o sinal de "=" no indica uma igualdade e sim uma atribuio. - O Fortran permite que voc defina diferentes tipos de variveis. Usa-se variveis inteiras para armazenar nmeros inteiros, variveis reais para nmeros reais, variveis complexas para nmeros complexos, variveis caracter para palavras e frases, etc. - Voc pode definir os tipos de variveis no seu programa atravs de "comandos de definio de tipo". - Existem vrios comandos Fortran para a definio de tipo de varivel, entre os quais "CHARACTER", "INTEGER" e "REAL".

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
- Os clculos podem ser feitos atravs de comandos de atribuio, escrevendo-se uma "expresso" no lado direito do sinal de igual. - Smbolos de operaes matemticas (tambm conhecidos como "operadores aritmticos"): adio, "+"; subtrao, "-"; multiplicao, "*"; diviso, "/"; potenciao, "**". - Pode-se usar parnteses para agrupar termos em expresses Fortran, como feito em lgebra. 2.4. Caracteres usados no Fortran - O conjunto de caracteres Fortran constitudo de: letras (ou caracteres alfabticos), dgitos (ou caracteres numricos) e smbolos especiais como =, +, -, /, *, etc. - preciso tomar cuidado em relao aos smbolos especiais, pois estes podem variar de funo dependendo do fabricante do compilador. 2.5. Uma viso geral do Fortran - Exemplo de um programa para calcular a mdia das notas de uma prova de uma turma e determinar o nmero de notas acima e abaixo de 5,0. Vamos usar a equao abaixo para calcular a mdia da turma:

, sendo que: MT = mdia da turma, nota(i) = nota do aluno i, NT = nmero total de alunos.

O cdigo do programa poderia ser: program media ! programa para calcular a media de uma turma ! programador: FCLavarda implicit none integer i,nt,ns5,ni5 real mt,nota,soma soma=0.0 ns5=0 ni5=0 print *,'Digite o numero total de alunos: ' read *, nt do i=1,nt print *,'Digite a nota do aluno ',i read *,nota soma=soma+nota if(nota>=5.0) then ns5=ns5+1 else ni5=ni5+1 endif enddo

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
mt=soma/nt print *,'*** Resultados ***' print *,'Media da turma: ',mt print *,'Notas superiores ou iguais a 5.0 = ',ns5 print *,'Notas inferiores a 5.0 = ',ni5 stop end - Veja figura a seguir contendo o fluxograma para o programa media.f90.
INICIO

I, nt, ns5, ni5 so variveis inteiras Mt, notai, soma so variveis reais Soma = 0.0; nis=0.0; ns5=0.0

nt

i=1

s i>nt n Soma = soma + notai Mt, ns5, ni5 Mt = soma/nt

Nota >= 5.0

Ni5 = ni5+1

fim ns5 = ns5+1

I = i+1

- Uma "varivel" Fortran um nome para uma localizao de memria. Variveis no exemplo acima: nt, ns5, ni5, mt, nota, soma, i. - O "valor" de uma varivel a informao armazenada na localizao de memria que representada pela varivel. - Um "comando de atribuio" o tipo de comando que permite armazenar um valor em uma varivel. Comandos de atribuio no exemplo acima:

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
soma=0.0 ns5=0 ni5=0 soma=soma+nota ns5=ns5+1 ni5=ni5+1 mt=soma/nt - Quando voc atribui um valor a uma varivel, o valor anteriormente armazenado destrudo. -Os comandos num programa Fortran so, normalmente, executados na ordem em que so escritos. Entretanto, pode-se alterar esta ordem de execuo atravs dos "comandos de controle de fluxo". - Um comando de controle que representa uma deciso a construo "IFTHEN-ELSE", que sempre terminado por um comando ENDIF. - Veja figura a seguir para uma tomada de deciso e desvio do fluxo de execuo.
Tal coisa verdade? n

Comandos executaveis

Comando executaveis

- Veja figura a seguir para o fluxograma para o algoritmo que decide aprovar ou reprovar um aluno, baseado na sua mdia final.
n Mf>=5.0 Situao = reprovado

Situao = aprovado

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
- Comandos Fortran para o fluxograma anterior: if(mf>=5.0)then situacao='aprovado' else situacao='reprovado' endif - Um comando de controle que representa um lao o comando "DO", que sempre terminado por um comando ENDDO. - Em Fortran77, um comando DO pode terminar por um comando numerado. - Veja a seguir um fluxograma de um lao de repetio.

I =vi

I > vf?

n Comandos executaveis

I = i + incr

- Veja a seguir o fluxograma para o algoritmo para somar todos os nmeros naturais de 1 a 10.

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
I=2 Soma = 0

I > 10 n

Soma = soma + i

I=i+1

- Comandos Fortran para o fluxograma anterior: soma=0 do i=1,10,1 soma=soma+i enddo - Veja a seguir o fluxograma para o algoritmo para somar todos os nmeros naturais pares de 1 a 10.

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
I=2 Soma = 0

I > 10 n

Soma = soma + i

I=i+2

- Comandos Fortran para o fluxograma anterior: soma=0 do i=2,10,2 soma=soma+i enddo - Para dizer ao computador para parar a execuo de seu programa, voc usa o comando "STOP". - A ltima linha em qualquer unidade de programa Fortran sempre o comando "END". 2.6. Codificao de programas em Fortran 2.6.1. Formato Livre (Fortran90 e posteriores) -Cada comando escrito numa linha. - Cada linha de comando possui at 132 colunas. O editor de texto capaz de trabalhar com um nmero maior de colunas (cuidado!). - Continuao de comandos: muitas vezes um comando no cabe nas colunas disponveis em uma linha (ou no se quer escrever tudo numa linha). Uma "linha de continuao" pode ento ser definida simplesmente colocando-se um caractere & no final da linha e continua-se na de baixo. Pode-se fazer isto at 39 vezes seguidas, de modo que um comando pode ter at 40 linhas. Como sugesto de boa programao, as colunas [1,5] podem ficar em branco. - Para a codificao de arquivos de dados de entrada e sada, estes seguem a estrutura que porventura seja definida no prprio programa que vai

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
ler/escrever neste arquivo. 2.6.2. Formato Fixo (Fortran77 e anteriores) - Cada comando escrito numa linha e cada linha, por sua vez, dividida em "campos", que so conjuntos de colunas. -Cada linha de comando possui 80 colunas. O editor de texto capaz de trabalhar com um nmero maior de colunas (cuidado!). - Cada linha dividida em 4 campos, que so formados pelos conjuntos de colunas [1,5], [6], [7,72] e [73,80]. - Campo de nmeros de comando, colunas [1,5]: um nmero de comando (qualquer nmero inteiro e maior que zero, consistindo de 5 dgitos) pode ser escrito nas colunas de 1 a 5. Brancos e zeros esquerda so ignorados. - Campo de continuao de comandos, coluna [6]: muitas vezes um comando no cabe nas 66 colunas disponveis em uma linha. Uma "linha de continuao" pode ento ser definida simplesmente colocando-se um caractere qualquer diferente de branco e zero na coluna 6. Pode-se fazer isto at 19 vezes seguidas, de modo que um comando pode ter at 20 linhas. As colunas [1,5] devem ficar em branco. - Campo de comandos, colunas [7,72]: somente nestas colunas pode-se escrever um comando Fortran. - Campo de identificao, colunas [73,80]: este campo usado somente para identificao do programa. Isto uma herana muito velha, pouco usada hoje. Geralmente o compilador que ainda se importa com a identificao do programa, escreve os primeiros 8 caracteres do nome do programa nestas colunas. - Linhas de comentrio, coluna [1]: qualquer linha que contenha uma letra "c" ou um asterisco "*" na coluna 1 so ignoradas em Fortran. So usadas para inserir comentrios dentro de um programa Fortran. - Para a codificao de arquivos de dados de entrada e sada, estes seguem a estrutura que porventura seja definida no prprio programa que vai ler/escrever neste arquivo.

Captulo 3: Constantes, Variveis e Conjuntos 3.1 Introduo - Este captulo trata de definir corretamente os componentes bsicos dos comandos Fortran. Alguns j vimos no captulo anterior, como "itens de sintaxe".

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
- "Constantes" so valores fixos, tais como nmeros. Estes valores no podem ser alterados pelos comandos do programa. Exemplos: 3.0, 3, 'palavra'. - "Variveis" so nomes simblicos que representam valores armazenados na memria do computador. Estes valores podem ser alterados pelos comandos do programa. - "Conjuntos" so grupos de variveis, cujos valores so armazenados adjacentemente e podem ser referenciados individualmente atravs de um nome simblico com um ndice. So conhecidos tambm como "variveis indexadas" (VI). - Um "operador" um smbolo especfico para uma determinada operao. Exemplo: + (soma). - "Expresses" so combinaes de constantes, variveis, elementos de conjuntos e operadores. Exemplo: 3.0*var1+var2. - No "comando de atribuio" abaixo: fat = a(3) * 4 * (B + 2.5) temos a "expresso" a(3)*4*(B+2.5). Nesta expresso temos duas "constantes" (4 e 2.5), uma "varivel" (B), uma varivel indexada (a(3)), dois "operadores" (* e +) e parnteses. Vemos tambm que temos uma constante inteira (4) e uma real (2.5); as variveis a(3) e B dependem de como tenham sido definidas. - No trecho de programa abaixo: print *, 'digite a velocidade inicial:' read *, v0y g=9.8 dt=0.1 do i =1,np t(i)=i*dt y(i)=v0y*t(i)-0.5*g*t(i)**2 enddo ... do i=1,np print *,t(i),y(i) enddo vemos o uso das "variveis indexadas" t(i) e y(i). 3.2. Constantes - Uma "constante" uma quantidade fixa e invarivel. - O Fortran distingue trs classes de constantes: numricas, lgicas e cadeias de caracteres. - As constantes numricas que mais nos interessam so: - Inteiras: para nmeros inteiros decimais (escritos sem o ponto decimal). - Reais: para nmeros decimais (ou fracionrios). - Dupla preciso: para nmeros reais com mais dgitos significativos que o normal. - Complexos: para nmeros complexos.

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
- As constantes lgicas podem ser: - .true. : representa o valor "verdade". - .false. : representa o valor "falso". - As constantes "cadeias de caracteres" so uma seqncia de caracteres alfanumricos e/ou especiais sempre entre aspas. - O comando PARAMETER pode ser usado para associar um nome simblico a uma constante. 3.2.1. Constantes Inteiras - O intervalo mximo de valores possveis para constantes inteiras varia de mquina para mquina. O menor intervalo de [-9999,+9999]. 3.2.2. Constantes Reais - Uma constante real uma cadeia de dgitos escrita com ponto decimal, com um expoente ou com ambos, expressando um nmero real. Ex.: 0.123, 123.0E-03, -123.0E-03 . - O intervalo de valores possveis para o expoente, bem como a preciso do nmero (quantidade mxima de dgitos significativos) varia de mquina para mquina. O menor intervalo conhecido de 10-28 a 10+28. A preciso do nmero tipicamente no mnimo de 7 dgitos. 3.2.3. Constantes Caracteres - O comprimento mximo de uma cadeia de caracteres geralmente no menor que 255. 3.3. Variveis - Uma varivel possui um nome e um tipo, podendo assumir diversos valores. - Regras para nomes de variveis: 1. Os nomes devem comear com uma letra. 2. Os nomes podem conter letras e dgitos. - Tipos de variveis: inteiras, reais, dupla preciso, complexas, lgicas e caracteres, que possuem caractersticas similares s constantes. 3.3.1. Variveis Inteiras - Se no for usado o comando IMPLICIT NONE, por conveno, toda varivel numrica cujo nome inicia por uma das letras i, j, k, l, m ou n, uma varivel inteira. - As variveis inteiras podem assumir valores na mesma faixa das constantes inteiras.

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
3.3.2 Variveis Reais - Se no for usado o comando IMPLICIT NONE, por conveno, toda varivel numrica cujo nome no inicia por uma das letras i, j, k, l, m ou n, uma varivel real. - As variveis reais podem assumir valores na mesma faixa que as constantes reais. 3.3.3. Variveis Caractere - Uma varivel caractere uma varivel que declarada como caractere atravs dos comandos de especificao explcita ou do comando IMPLICIT. A quantidade de caracteres numa varivel caractere especificada quando da declarao da varivel caractere. - Veja os seguintes exemplos de comandos de especificao de variveis caractere: 1. implicit character*28 (y,z) 2. character*36 linha 3. character soma*15,matriz*64 Temos que linha, soma e matriz so especificadas como variveis caractere contendo 36, 15 e 64 caracteres, respectivamente. Alm disso, todas as variveis cuja primeira letra y ou z so tambm declaradas como variveis caractere contendo 28 caracteres cada uma. 3.4. Conjuntos - Nesta seo nos ocuparemos dos conjuntos de variveis, ou variveis indexadas (VI), j definidos no incio deste captulo. - Uma VI possui um nome, um tipo e um conjunto de ndices (ou um nico ndice). - "Vetor" uma VI que possui um nico ndice, e por isto dito uma VI unidimensional. - A varivel t no trecho de programa abaixo um vetor: dimension t(10) t(1)=0.1 t(2)=0.2 t(3)=0.3 ... t(10)=1.0 - "Matriz" uma VI que possui dois conjuntos de ndices e por isto dita bidimensional. - A varivel a no trecho de programa abaixo uma matriz: dimension a(3,3) do i = 1,3 do j = 1,3 a(i,j) = 0.0

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
enddo enddo - Representao Matricial da varivel a:

- Forma de armazenamento na memria: ... a11 a21 a31 a12 a22 a32 a13 a23 a33 ... - Dizemos que uma VI uma matriz n-dimensional quando esta possui um conjunto de n ndices. - No Fortran 77, uma VI no podia possuir mais do que 7 ndices. 3.4.1 Declaradores de Conjuntos - Comando DIMENSION: permite especificar uma determinada varivel como sendo uma varivel indexada. - Exemplos do uso do comando DIMENSION: 1) dimension a(8) onde 8 nmero mximo de diferentes a's. 2) dimension a(8),b(5,6) sendo que 5 e 6 so os valores mximos do primeiro e segundo ndices (que resultam em 30 diferentes b's). 3) integer a real b dimension a(8),b(5,6) sendo que o vetor a um vetor de nmeros inteiros e b uma matriz de nmeros reais. 4) dimension c(0:10),d(1:4,1:3,1:5) sendo que: c(10); c = vetor de 11 elementos, sendo o primeiro c(0) e o ltimo

d = matriz tridimensional de 60 elementos, sendo que o primeiro elemento d(1,1,1) e o ltimo d(4,3,5)

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN

Captulo 4: Expresses 4.1. Introduo - Uma "expresso" Fortran definida como uma combinao de itens sintticos, isto : uma expresso pode consistir de uma nica constante, de uma nica varivel, de um nico elemento de conjunto, ou uma combinao de constantes, variveis, elementos de conjuntos, unidos com um ou mais operadores e, possivelmente, agrupados com parnteses. - "Operadores" especificam as computaes a serem realizadas sobre os valores dos elementos bsicos. - As expresses, no Fortran, so classificadas em aritmticas, caracteres, relacionais e lgicas. 4.2. Expresses Aritmticas - Uma "expresso aritmtica" usada para expressar uma computao numrica. O clculo desta expresso produz um valor numrico cujo tipo inteiro, real, dupla preciso ou complexo. - Os "operadores aritmticos" so definidos pela tabela abaixo: Operador Definio Uso Significado ---------------------------------------------------------------------------------------------------** potenciao a**b a elevado potncia b * multiplicao a*b a multiplicado por b / diviso a/b a dividido por b + adio a+b a mais b subtrao a-b a menos b menos unrio -a a com sinal invertido - Em expresses contendo um nico operando, o tipo do operando define o tipo de expresso. - Em expresses com mais de um tipo de operando, o tipo da expresso depende dos tipos dos operandos e dos operadores.

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
- Para todas as operaes (com exceo da potenciao): 1. Se os operandos forem do mesmo tipo, este ser o tipo da expresso. 2. Se os operandos forem de tipos diferentes, o tipo da expresso ser o tipo do operando de maior precedncia, dada pela tabela abaixo: Tipo Precedncia ------------------------------------------inteiro 1 real 2 dupla preciso 3 complexo 4 - Regras para ordem de computao: 1. Parnteses podem ser usados para agrupar operandos em uma expresso. Qualquer expresso entre parnteses calculada antes do clculo da expresso da qual ela uma parte. Parnteses mais internos so calculados antes. 2. Com exceo do uso dos parnteses, as operaes so realizadas na seguinte ordem de precedncia: Operao Precedncia -------------------------------------------------------------+emais baixa *e/ intermediria ** mais alta 3. Para operadores de mesma precedncia, o clculo se desenvolve da esquerda para a direita. 4. Potenciaes consecutivas so realizadas da direita para a esquerda. 4.3. Expresses Relacionais - Uma "expresso relacional" usada para comparar os valores de duas expresses aritmticas (ou os valores de duas expresses caractere). - A comparao entre duas expresses aritmticas feita atravs dos "operadores relacionais". - O clculo de uma expresso relacional produz um resultado lgico, com um valor "verdade" ou "falso". A expresso interpretada como "verdade" se os valores dos operandos satisfazem a relao matemtica especificada pelo operador, e "falso" se eles no satisfazem a relao. - "Operadores Relacionais" so aqueles definidos na tabela abaixo: Operado Definio r somente Fortran90 e posteriores == igual a /= < diferente de menor que Uso A==B A/=B A<B Significado A igual a B ? A diferente de B? A menor a B?

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
<= > >= todos .eq. .ne. .lt. .le. .gt. .ge. igual a (equal) diferente de (not equal) menor que (less than) menor ou igual (less or equal) maior que (greater than) maior ou igual (greater or equal) A.eq.B A.ne.B A.lt.B A.le.B A.gt. B A.ge.B A igual a B ? A diferente de B? A menor a B? A menor ou igual a B? A maior que B ? A maior ou igual a B? menor ou igual maior que maior ou igual A<=B A>B A>=B A menor ou igual a B? A maior que B ? A maior ou igual a B?

4.4. Expresses Lgicas - Uma expresso lgica usada para realizar um clculo lgico. - Os "operadores lgicos" so (listamos somente os principais): Operador Definio Uso Significado ----------------------------------------------------------------------------------------------------.not. negao .not.A se A verdade, .not.A falso .and. conjuno A.and.B para a expresso ser verdade, A e B precisam ser verdade .or. disjuno A.or.B para a expresso ser verdade, A ,ou B, precisa ser verdade - Exemplos: 1) if(x1.eq.x.and.x2.eq.x1) then 2) fim=.false. do while(.not.fim) bloco de comandos enddo - Regras para clculos de expresses lgicas. 1. Parnteses podem ser usados e so calculados antes. 2. Os operadores aritmticos so calculados em segundo lugar. 3. Os operadores relacionais so calculados em terceiro lugar. 4. As operaes lgicas so realizadas na seguinte ordem de precedncia:

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
Operador Precedncia -----------------------------------------------------------------.not. mais alta .and. intermediria .or. mais baixa Captulo 5: Comandos de Atribuio 5.1. Introduo - O "comando de atribuio" usado para atribuir um valor a (ou definir) uma varivel ou a um elemento de conjunto. - Os comandos de atribuio calculam uma expresso e atribuem o valor resultante a uma varivel ou elemento de conjunto. - A forma de um comando de atribuio : varivel=expresso - Os comandos de atribuio so classificados como: aritmtico; caractere; lgico.

- Exemplos: aritmtico: varnum=3.0*a/b caractere: varcar='digite o valor de x:' lgico: varlog=.true. ou varlog=a<b.and.b==c

- Aps o clculo da expresso, o valor convertido, se necessrio, para o tipo de varivel de acordo com a seguinte regra: Tipo da varivel Valor atribudo ---------------------------------------------------------------inteiro a parte inteira da expresso real o valor real da expresso dupla preciso o valor dupla preciso da expresso complexo o valor complexo da expresso

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
Captulo 6: Comandos de Especificao: Declarao de Tipos de Variveis 6.1. Introduo - Os comandos de declarao de tipo so: IMPLICIT, INTEGER, REAL, DOUBLE PRECISION, COMPLEX, LOGICAL e CHARACTER. 6.2. Comando IMPLICIT - A forma geral do comando : IMPLICIT tipo (a[,a]...) [,tipo (a[,a])] - O comando IMPLICIT permite que se defina o tipo de todas as variveis que comeam por uma determinada letra. - Exemplos: 1) implicit real(i) - faz com que todas as variveis que comecem pela letra i sejam reais. 2) implicit real(i,j,k,l) - faz com que as variveis com iniciais de i a l sejam reais. 3) implicit real(i-l) - idem. 4) implicit real(i-l),integer(a,b) - faz a mesma coisa que o comando anterior mais a definio que as variveis com iniciais a ou b sejam inteiras. 5) implicit none - faz com que todas as variveis do programa tenham que ter o seu tipo obrigatoriamente pr-definidas. 6.3. Comandos de Especificao Explcita 6.3.1. Comando Integer - O comando INTEGER usado para declarar variveis inteiras. - A forma geral do comando INTEGER : INTEGER nome [,nome]... ou INTEGER nomevi[(d[,d]...)] sendo que nomevi o nome de uma varivel indexada inteira. - Exemplos: integer soma,cont integer a(0:10,0:8)

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
6.3.2. Comando REAL - O comando REAL usado para declarar variveis reais. - A forma geral do comando REAL : REAL nome[,nome]... ou REAL nomevi[(d[,d]...)] sendo que nomevi o nome de uma varivel indexada real. - Exemplos: real a,b,c real d(1:10,1:8) 6.3.3. Comando DOUBLE PRECISION - O comando DOUBLE PRECISION usado para duplicar o nmero de algarismos significativos de uma varivel ou de um conjunto. - A forma geral do comando DOUBLE PRECISION : DOUBLE PRECISION nome[,nome]... ou DOUBLE PRECISION nomevi[(d[,d]...)] sendo que nomevi o nome de uma varivel indexada de dupla preciso. 6.3.4. Comando COMPLEX - O comando COMPLEX usado para declarar variveis do tipo complexo. 6.3.5. Comando LOGICAL - O comando LOGICAL usado para declarar variveis do tipo lgico. 6.3.6. Comando CHARACTER - O comando CHARACTER usado para declarar variveis do tipo caractere. - A forma geral do comando CHARACTER : CHARACTER*comp nome[,nome]... ou CHARACTER nome*comp[,nome*comp]... sendo que comp o comprimento da(s) varivel(eis) caractere. - Exemplos:

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
character*12 a,b,c character d*5,e*4,f*10

Captulo 7: Comandos de Especificao: Designao de reas de Memria 7.1. Introduo - Neste captulo, aprenderemos a reservar reas de memria, com os seguintes objetivos: 1. Determinar a quantidade de memria que deve ser reservada para variveis indexadas. 2. Indicar reas de memria que podem ser acessadas por diferentes unidades de programa. 7.2. Comando DIMENSION - O comando DIMENSION usado para especificar nomes simblicos como nomes de variveis indexadas, define o nmero de dimenses (ndices) de cada conjunto de vis e especifica os limites de cada dimenso. - A forma geral do comando DIMENSION : DIMENSION c(d[,d]...)[,c(d[,d]...)] sendo que: - "c" um nome de conjunto; - "d" um declarador de dimenso (que podem ser no mximo 7) e especifica os limites para cada ndice do conjunto, em uma das formas: superior ou inferior:superior - superior: o ndice varia de 1 at superior. - inferior:superior: o ndice varia de inferior at superior. - Exemplos: dimension a(0:10),b(3,3),c(3,4,5) 7.3. Comando COMMON - O comando COMMON usado para especificar reas de memria que so utilizadas em comum por vrias unidades de programa, tal como o programa principal e subprogramas do tipo FUNCTION ou SUBROUTINE.

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
- reas de memria designadas por uma unidade de programa no so "enxergadas" pelas outras unidades. Assim, o que COMMON faz permitir que diferentes unidades de programa "enxerguem" uma dada rea de memria. - A forma geral do comando COMMON : COMMON[/r/] lista sendo que: - "r" um rtulo do bloco de variveis que tero suas reas de memria especificadas. - "lista" uma lista com nomes de variveis que tero suas reas de memria especificadas. - Exemplos: 1) common m,a,x 2) dimension a(10),b(5,20) common/bloco1/a,b - O mesmo comando COMMON, escrito do mesmo jeito, deve aparecer em cada unidade de programa que pretende ter acesso s variveis definidas num dado bloco. 7.4. Unidades de programas do tipo MODULE - As unidades de programa do tipo MODULE existem a partir do Fortran 90 e podem substituir todas as ocorrncias do comando COMMON, do comando INCLUDE (no apresentado nesta apostila) e funes de comando (Captulo 11). - Numa unidade de programa do tipo MODULE podem se definir tipos e valores de constantes e variveis. Ainda possvel incluir subprogramas, mas este tpico no ser abordado. 7.5. Comando USE - O comando USE utilizado para definir uma unidade de programa do tipo MODULE que deve ser includa no programa. - Exemplo de utilizao das unidades de programa do tipo MODULE e do comando USE: module modulo01 integer:: a=2,b=3 end module modulo01 module modulo02 integer:: a=4,b=5 end module modulo02 program exmodls ! Objetivo: exemplifica o uso dos subprogramas do tipo MODULE use modulo01 implicit none integer c,d

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
! Nas duas linhas a seguir, sero usados os valores de a e b declarados ! no mdulo modulo01: c=a+b d=a*b print *,a,b,c,d ! Na subrotina abaixo, ainda sero usados os valores de a e b declarados ! no mdulo modulo01, demonstrando a compartilhao de dados entre o ! programa principal e um subprograma: call subrotina01 ! A subrotina abaixo idntica anterior, com a nica diferena que ! utiliza novos valores para a e b declarados no mdulo modulo02: call subrotina02 stop end subroutine subrotina01 use modulo01 implicit none integer c,d c=a+b d=a*b print *,a,b,c,d return end subroutine subrotina02 use modulo02 implicit none integer c,d c=a+b d=a*b print *,a,b,c,d return end 7.6. Comando PARAMETER - O comando PARAMETER fornece um meio de se representar uma constante por um smbolo, como na Matemtica, em vez de represent-la por um valor. - A forma geral do comando PARAMETER : PARAMETER(ns=e[,ns=e]...) sendo que: - "ns" um nome simblico. - "e" uma constante ou uma expresso constante. - PARAMETER um comando de especificao e deve ser escrito entre os comandos de especificao. Porm cada constante simblica deve ser definida antes de qualquer referncia a ela.

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
- Os novos smbolos das constantes definidas dentro de um comando PARAMETER seguem as mesmas regras para os nomes de variveis (em relao ao tipo). - O valor de uma constante definida em PARAMETER jamais ou pode ser alterado durante a execuo do programa. - Exemplo: ? real pi parameter(pi=3.1415927) ? 7.7. Comando PROGRAM - O comando PROGRAM usado para identificar o programa principal. - Todo programa possui um nico programa principal. - A forma geral de PROGRAM : program nome sendo que: - "nome" um nome simblico definido para o programa principal.

7.8. Comandos ALLOCATE, DEALLOCATE E ALLOCATABLE - Os comandos ALLOCATE, DEALLOCATE E ALLOCATABLE tm por funo permitir que uma varivel indexada possa ser dimensionada durante a execuo do programa. - ALLOCATABLE: indica que a matriz vai ter os valores mnimos e mximos para o seu(s) ndice(s) determinados em algum ponto do programa. A rea de memria para esta varivel ainda no est reservada. - ALLOCATE: dimensiona a varivel indexada e reserva (aloca) um espao de memria para ela. - DEALLOCATE: desaloca, mas no extingue, a varivel indexada, liberando a memria antes por ela ocupada. - No exemplo a seguir temos vrios trechos de um programa sendo que as variveis indexadas A, B, C e D esto sendo dimensionadas, alocadas e desalocadas usando os comandos ALLOCATE, DEALLOCATE E ALLOCATABLE: ... integer i,j,k,l,m,n

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
integer,dimension(:,:),allocatable :: a real,dimension(:),allocatable :: b,c real,dimension(:,:,:),allocatable :: d ... print *,'Digite os minimos e maximos das 2 dimensoes de A:' read *,i,j,k,l allocate(a(i:j,k:l)) ... print *,'Digite o minimo e o maximo da unica dimensao de B:' read *,i,j print *,'Digite o minimo e o maximo da unica dimensao de C:' read *,k,l allocate(b(i:j),c(k:l)) ... print *,'Digite os minimos e maximos das 3 dimensoes de D:' read *,i,j,k,l,m,n allocate(d(i:j,k:l,m:n)) ... deallocate(a,d) ... deallocate(b) ... deallocate(c) ... Captulo 8: Comandos de Controle de Fluxo e Programao Estruturada 8.1. Introduo - Normalmente, a execuo dos comandos num programa feita na ordem em que os comandos so escritos: de cima para baixo, linha por linha, de acordo com a estrutura seqencial. Entretanto voc pode usar comandos para transferir o controle de fluxo para outra parte da mesma unidade de programa ou para outra unidade de programa. - O controle pode ser transferido somente para um comando executvel. - Por vezes, um comando pode ser identificado por um "nmero de comando", consistindo de um nmero inteiro, escrito antes do comando, no incio da linha. Cada nmero de comando deve ser nico dentro da unidade de programa. Eles servem principalmente para a especificao de formatos de entrada e/ou sada de dados. Evita-se hoje o uso antigo do nmero de comando, que servia de referncia para uma transferncia de controle de fluxo. Isto favorece a criao de cdigos de programa "espaguete", sendo que o controle de fluxo pode ser mudado de maneira absurda, dificultando e inviabilizando a manuteno dos programas. 8.2. Estruturas de Controle - As estruturas bsicas de controle so:

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
1. Estrutura seqencial. 2. Estrutura de tomada de deciso (if-then-else if-else-endif). 3. Estrutura de lao: faa-enquanto (while-loop). Estrutura de lao repetio (repeat-loop).

4. Estrutura de seleo de caso (select case). 8.3. Comandos GO TO - Os comandos GO TO transferem o controle de fluxo para um comando executvel na mesma unidade de programa. Os trs tipos de GO TO so: 1. GO TO incondicional. 2. GO TO computado. 3. GO TO assinalado. 8.3.1. Comando GO TO incondicional - O comando GO TO incondicional transfere o controle para o comando identificado pelo nmero de comando especificado no GO TO. - A forma geral do comando GO TO incondicional : go to n sendo que "n" um nmero de comando executvel. 8.4. Comandos IF - Os comandos IF transferem o controle do fluxo ou executam outro comando (ou um bloco de comandos) dependendo do resultado verdadeiro ou falso de uma expresso lgica contida no particular comando IF. Os trs tipos de comandos IF so: 1. IF aritmtico. 2. IF lgico. 3. IF bloco. - Os comandos ELSE, ELSE IF e END IF so tambm apresentados nesta seo, pois eles so usados somente em conjunto com um comando IF bloco. 8.4.1. Comando IF lgico - O comando IF lgico calcula uma expresso lgica/relacional e executa ou ignora um comando executvel contido no prprio IF, dependendo do valor (falso ou verdadeiro) dessa expresso. - A forma geral do comando IF lgico : if (e) c sendo que:

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
- "e" uma expresso lgica ou relacional. - "c" o comando que ser executado caso a expresso seja verdade; "c" no pode ser um comando DO. - Vejamos como fica o fluxo do programa quando este chega a estas trs linhas: x=a-b if(a.eq.b) x=a+b y=x**2 Observe que nas ltimas 2 linhas temos trs comandos: 1) if(a.eq.b) 2) x=a+b 3) y=x**2 Ento: a) Se de fato a=b, teremos a seguinte ordem de execuo: 1 >> 2 >> 3. b) Se, por outro lado, a diferente de b, teremos a ordem de execuo: 1 >> 3. 8.4.2. Comandos IF bloco - O comando IF bloco permite a execuo de um determinado bloco de comandos, dependendo do valor da(s) expresses lgica(s)/relacional(is) nele contido. - A forma geral do comando IF bloco : if (e1) then bloco1 else if (e2) then bloco2 else if (e3) then bloco3 ... else bloco n endif sendo que e1, e2,e3, ... so expresses lgicas/relacionais. Deve ficar claro que somente um dos blocos de comandos ser executado. - O menor IF bloco a estrutura: if (e) then bloco endif Vemos que os comandos ELSE IF e ELSE so opcionais. - O comando IF THEN permite a execuo condicional de um bloco de comandos executveis. obrigatrio usar em conjuno o comando ENDIF para fechar o comando.

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
- A forma geral do comando IF THEN : if (e) then sendo que "e" uma expresso lgica/relacional (portanto produzindo um resultado verdadeiro ou falso). - Se a expresso "e" for verdadeira, a execuo passa para o prximo comando executvel e da para o comando ENDIF. Se for falsa, o controle transferido para o prximo comando: ELSE IF THEN, ELSE ou ENDIF. - O comando ELSE fornece uma rota alternativa para um comando IF THEN ou ELSE IF THEN. Sua forma geral simplesmente: else - O comando ELSE IF THEN combina as funes dos comandos ELSE e IF THEN, pois fornece uma rota alternativa e torna possvel uma estrutura IF bloco com mais de uma alternativa. - A forma geral do comando ELSE IF THEN : else if (e) then sendo que "e" uma expresso lgica/relacional. - Se a expresso for verdadeira, o controle passa para o prximo comando executvel e da para o comando ENDIF. Se for falsa, passa para o prximo comando ELSE IF THEN, ELSE ou ENDIF. - O comando ENDIF ou END IF finaliza uma estrutura IF bloco. Sua forma geral simplesmente: end if - Exemplo: ... print *,'Digite a nota do aluno: ' read *,nota if(nota>=5.0) then print *,'O aluno foi aprovado.' elseif(nota>=3.5) then print *,'O aluno foi reprovado mas podera cursar o RE.' else print *,'O aluno foi reprovado e nao podera cursar o RE.' endif ? 8.4.3. Estruturas de IF bloco encaixados - Um bloco de comandos executveis dentro de um comando IF bloco pode conter outra estrutura IF bloco. E isto pode se repetir indefinidamente. ... print *,'Digite a nota do aluno: '

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
read *,nota if(nota>=5.0) then if(nota>=9.5) then print *,'O aluno foi aprovado com louvor.' elseif(nota>=8.0) then print *,'O aluno foi aprovado com distincao.' else print *,'O aluno foi aprovado.' endif elseif(nota>=3.5) then print *,'O aluno foi reprovado mas podera cursar o RE.' else print *,'O aluno foi reprovado e nao podera cursar o RE.' endif ? 8.5. Comando DO - O comando DO um comando de controle que permite que um bloco de comandos seja repetitivamente executado. O nmero de execues depende da varivel de controle. - A forma geral do comando DO : do v = vi , vf [, incr] sendo que: "v" a varivel do controle do lao DO. "vi" o valor inicial de v. "vf" o valor final ou mximo de v. "incr" o incremento de v. Se for omitido, suposto como de valor 1.

- O comando ENDDO ou END DO finaliza uma estrutura DO. Sua forma geral simplesmente: enddo - Exemplo: do i=0,100,5 bloco de comandos enddo - Existem duas estruturas DO: 1) A estrutura DO - END DO (repeat loop) repete um bloco de comandos condicionado ao valor de uma varivel de controle que deve variar de modo fixo e pr-determinado: do v=vi,vf,incr bloco de comandos end do 2) A estrutura DO WHILE - END DO (while loop) executa o lao DO enquanto uma expresso lgica/relacional for verdadeira:

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
do while (var.ge.0) bloco de comandos end do - O comando DO implcito uma terceira forma do comando DO e somente pode ser usando em comandos de entrada ou sada de dados. - Exemplos de uso do comando DO implcito: print *,(var(i),i=1,10,1) print *,(var(i,j),j=10,20,2) read(1,100)(var(i),i=2,8,2) write((3,200)(var(i,j),j=1,5,1) 8.5.1. Laos de DO encaixados - possvel encaixar dois ou mais comandos DO. - Para as estruturas DO encaixadas, o primeiro comando END DO aps o comando DO, fecha o lao. 8.6. Comando EXIT - O comando EXIT termina abruptamente um lao DO, direcionando o fluxo do programa para a primeira linha de comando aps o ENDDO daquele respectivo comando DO envolvido. 8.7. Comando CYCLE - O comando CYCLE reinicia abruptamente um lao DO, direcionando o fluxo do programa para a linha do comando DO dentro do qual ele est inserido. 8.8. Comando CONTINUE - O comando CONTINUE um comando executvel que somente passa o controle para o prximo comando executvel. A forma geral : continue 8.9. Comando STOP - O comando STOP termina a execuo do programa. Apesar de sua localizao dentro do programa em geral ser a penltima linha de comando, ele pode ser colocado em qualquer posio dentro do programa. - A forma geral do comando STOP : stop [varcar] sendo que "varcar" uma varivel caracter que ser exibida na sada padro (em geral, a tela do monitor do operador). 8.10. Comando END - O comando END indica o final de uma unidade de programa para o compilador. Sua forma geral :

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
end e deve obrigatoriamente ser colocado na ltima linha do programa. 8.11. Comando SELECT CASE - A estrutura SELECT CASE permite a execuo de apenas uma entre muitas opes possveis. - A estrutura SELECT CASE possui a seguinte forma: select case (var) case (um_valor_de_var) bloco de comandos 1 case (outro_valor_de_var) bloco de comandos 2 case (outro_ainda_valor_de_var) bloco de comandos 3 ... end select - Exemplo: ... print *,'Digite um numero de 1 a 10: ' read *,nu select case (nu) case (1:4) print *,'A opcao foi um numero no intervalo [1,4]' case (5) print *,'A opcao foi pelo numero 5' case (6:10) print *,'A opcao foi um numero no intervalo [6,10]' end select ...

Captulo 9: Comandos de Entrada/Sada 9.1. Introduo - Os "Comandos de Entrada" fornecem um mtodo de transferir dados de um dispositivo perifrico (como um teclado) ou de um arquivo interno para a memria principal. Este processo chamado de "leitura de dados". - Os "Comandos de Sada" fornecem um meio de transferir dados da memria principal para um dispositivo perifrico (como um monitor de vdeo ou impressora) ou um arquivo interno. Este processo chamado de "escrita" ou "gravao" de dados. - Alguns comandos de E/S permitem que se edite os dados durante a sua transferncia.

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
- Neste captulo somente sero apresentados os comandos de E/S que transferem dados (READ, PRINT, WRITE). Comandos auxiliares no sero discutidos. 9.2. Registros, Arquivos e Unidades - Um "caractere" um nico smbolo, tal como a letra z, o dgito 4 ou um asterisco *. - Um "campo" uma sucesso de caracteres, que representa alguma informao, tal como ANTONIO ou 128.47. - Um "registro" um grupo de campos que rene informaes sobre um nico item, tal como: ANTONIO (nome) 26-01-1937 6543.21 (data nasc.) (salrio)

- Um "arquivo" um grupo de registros, tal como: A N T O N I O A R N A L D O M . C R I S T I 2 6 2 2 N A 0 7 0 1 1 0 0 9 1 9 3 7 6 5 4 3 . 1 9 4 5 9 8 7 . 1 9 4 2 1 2 3 4 . 2 1 6 5 5 6

Temos acima um arquivo, com trs registros, cada registro com trs campos e comprimento total de 27 caracteres. - Cada comando de E/S opera sobre um nico registro. - Uma unidade de E/S um meio de se referir a um arquivo. Usa-se nmeros de unidades de E/S para distinguir um arquivo de outro. - Certos nmeros de unidades podem ser pr-definidos. Assim, por exemplo, o nmero 5 pode indicar o teclado e 6 pode indicar o monitor de vdeo. - O comando OPEN estabelece a conexo entre o nmero da unidade e um particular arquivo. 9.3. Componentes dos Comandos de E/S - Os comandos de E/S so constitudos de 3 partes: comando (especificadores) [lista] sendo que: especificadores definem apropriadamente a execuo do comando; lista define a(s) varivel(eis) sobre a(s) qual(is) opera o comando.

9.3.1. Lista de Especificadores de Controle de E/S

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
- Existem muitos especificadores de controle de entrada e sada. Veremos somente os mais importantes para o iniciante. - UNIT: o especificador de unidade designa a unidade externa de E/S ou o arquivo interno a ser usado para o comando de E/S no qual ele aparece. Seu uso : [unit=]u ou [unit=]* sendo que: - "u" uma expresso inteira que designa o nmero de E/S. - "*" designa a unidade de entrada padro em READ e sada padro em PRINT ou WRITE. - Os caracteres "unit=" somente podem ser omitidos no caso do especificador de unidade ser o primeiro na lista de especificadores. - FMT: o especificador de formato designa o formato a ser usado para o comando de E/S formatado ou o comando de E/S com lista direta. Seu uso [fmt=]f ou [fmt=]* sendo que: - "f" um identificador de formato; - "*" designa uma formatao em lista direta. - Os caracteres "fmt=" somente podem ser omitidos se o especificador de formato for o segundo especificador e ainda o primeiro especificador for o de unidade sem os caracteres "unit=" . - O identificador de formato "f" pode ser um nmero de um comando FORMAT. Ou uma expresso inteira (que acaba por indicar um comando FORMAT). Ou especificaes de formato (em forma de varivel caractere). - Exemplos. Todos eles fazem a mesma coisa e ainda o comando READ poderia ser substitudo pelo comando WRITE. Exemplo 1: read(unit=1,fmt=100) a,b 100 format(i5,f10.3) Exemplo 2: read(1,100) a,b 100 format(i5,f10.3) Exemplo 3: read(1,*) a,b 9.3.2. Lista de E/S - Uma lista de E/S tem a forma: s[,s]

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
sendo que "s" uma lista de itens simples ou uma lista de DO implcito. - Um item da lista pode ser um nome de varivel, um nome de conjunto, um nome de elemento de conjunto, um nome de subcadeia caractere ou uma lista de DO implcito. No caso de lista de sada, ainda pode ser uma expresso. - Exemplos de listas de E/S (sem DO implcito): read(5,100) A,B,C,D read(3,20) X,Y,C(J),D(3,4),E(I,K,7),T read(4,121)I,A(I),J,B(I,J) write(2,302) ALFA,BETA write(6,122) GAMA(4*J+2,5*I+2,4*K),C,D(L) - Registro de entrada contendo os dados L, M e N, que so definidos como nmeros inteiros: 100223456789 que lido pelos comandos: 60 read(5,60) L,M,N format(I3,I2,I7)

apresentar os seguintes valores: L=100 M=22 N=3456789 . - Uma lista de DO implcito tem a seguinte forma: (d , i = e1, e2 [,e3] ) sendo que: - "d" uma lista de E/S. - i , e1, e2 e e3 tm as mesmas formas, funes e efeitos que num comando DO. - Ao invs de usar: print *, A(1),A(2),A(3),A(4),A(5),A(6),A(7),A(8),A(9) use print *, (A(i), i = 1,9) . 9.4. Comandos READ - Os comandos READ transferem dados de entrada para a memria de trabalho. - IMPORTANTE: cada novo comando READ passa a ler dados em uma nova linha.

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
9.4.1. Comandos READ seqenciais - As formas aceitas dos comandos READ seqencial so: read([unit=]u,[fmt=]f) [lista] ou read f [, lista] sendo que "f" pode ser substitudo por "*" para designar uma lista direta. Se "u" for substitudo por "*" , a leitura ser feita na unidade de entrada padro. - Exemplos: read(unit=3,fmt=100) a,b,c 100 format(3f5.2) igual a: read(3,100) a,b,c 100 format(3f5.2) que ainda podem ser simplificados para: read(3,*) a,b,c (lista direta) ou read(*,*) a,b,c (aqui a leitura passa a ser feita a partir da entrada padro) 9.5. Comandos WRITE (PRINT) - Os comandos WRITE (PRINT) transferem dados armazenados na memria do computador para dispositivos de sada (vdeo, arquivos ou impressora). - IMPORTANTE: cada novo comando WRITE (PRINT) passa a escrever dados em uma nova linha. 9.5.1. Comandos WRITE (PRINT) seqenciais - As formas aceitas dos comandos WRITE seqencial so: write([unit=]u,[fmt=]f) [lista] sendo que "f" pode ser substitudo por "*" para lista direta. - Exemplos: write(unit=7,fmt=200) a,b,c 200 format(3f5.2) ou write(7,200) a,b,c 200 format(3f5.2) (igual ao comando anterior) ou

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
write(7,200) a,b,c 200 format(3f5.2) (praticamente igual aos comandos anteriores) ou write(*,*) a,b,c (escreve na sada padro) - A diferena entre WRITE e PRINT que este ltimo somente escreve na sada padro (o vdeo, no nosso caso). Por isso PRINT dispensa o especificador de unidade. - A forma aceita do comando PRINT : print f [, lista] sendo que "f" pode ser substitudo por "*" para lista direta. - Exemplos: print 200, a,b,c 200 format(3f5.2) ou print *, a,b,c (lista direta) 9.6. Comandos de Condio de Arquivos de E/S 9.6.1. Comando OPEN - O comando OPEN serve para inicializar um arquivo. - A forma geral simplificada do comando OPEN : open([unit=]u[,file='a'][,status='b']) sendo que: - "u" o nmero da unidade. - 'a' uma expresso caractere que especifica o nome do arquivo; - 'b' especifica a condio do arquivo, que pode ser: -'NEW', para arquivos novos, que vo ser criados pelo programa; -'OLD', para arquivos j existentes (em geral, arquivos de entrada de dados); -'SCRATCH', para arquivos que so criados pelo programa e que devem ser apagados no final da execuo deste. - 'UNKNOWN', para arquivos para os quais no se aplica nenhuma das condies acima. 9.6.2. Comando CLOSE - O comando CLOSE serve para finalizar um arquivo. o oposto de OPEN.

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
- A forma geral simplificada do comando CLOSE : close([unit=]u) sendo que "u" o nmero da unidade.

Captulo 10: Comando FORMAT e Especificaes de Formato 10.1. Introduo - FORMAT o comando que contm uma lista de especificaes de formato que permite ao programador ter controle sobre os dados de entrada e sada.

- Exemplo do uso de um comando de formatao: 10 PRINT 10 , N, X, Y FORMAT ( I3, F8.3, F5.1)

sendo que: - PRINT e FORMAT so comandos (ou palavras-chave); - "10" nmero de comando; - "N,X,Y" lista de sada; - "I3,F8.3,F5.1" so especificaes de formato. 10.2. Comando FORMAT - A forma geral do comando FORMAT : n format (ef [,ef [,,ef]]) sendo que: - "n" um nmero de comando; - "ef" uma especificao de formato (converso ou edio). - Pode-se usar o mesmo comando FORMAT em diversos READ, WRITE ou PRINT. 10.3. Especificaes de Formato (EF) de Converso - As EF de converso mais usadas so: Especificao Converte dados --------------------------------------------------------------------------Iw inteiros decimais - F w.d reais decimais, sem expoente - E w.d reais decimais, com expoente - D w.d reais decimais dupla preciso, com expoente - G w.d reais decimais, com ou sem expoente -Lw lgicos -Aw caracteres sendo que:

Pgina de 44 UNIVERSIDADE ESTADUAL DO CEAR UECE - CURSO DE FSICA INTRODUO A CINCIA DOS COMPUTADORES PROFESSOR DR. CARLOS SANTANA dr.acss@gmail.com

APOSTILA DE FORTRAN
- "a" uma constante inteira, sem sinal e no-nula, usada para indicar o nmero de vezes que a mesma EF seguidamente usada. - "w" uma constante inteira, sem sinal e no-nula, usada para indicar a largura total do campo externo (incluindo dgitos, espaos, sinais algbricos + ou - , ponto decimal e expoente). - "d" uma constante inteira, sem sinal e que indica a quantidade de dgitos direita do ponto decimal dentro do campo de largura w. Na sada, todos os valores so arredondados. - Exemplos: Exemplo 1. Para escrever na tela do monitor as variveis nmericas var1=111 var2=2222.22 var3=3 var4=44.44 pode-se usar a seguinte combinao de comandos: print 5,var1,var2,var3,var4 5 format(i3,f7.2,i1,f5.2) Exemplo 2: para escrever na tela do monitor a seguinte lista de variveis var1=.true. var2='america' var3=111 var4=2222.22 var5=333.33e+05 pode-se usar a seguinte combinao de comandos: print 6,var1,var2,var3,var4,var5 6 format(l1,a7,i3,f7.2,e10.2) 10.4. Especificaes de Formato de Edio - As especificaes de edio mais usadas no Fortran so: Especificao Funo -------------------------------------wx espaamento / nova linha sendo que "w" representa o nmero de espaos desejados. 10.5. Especificaes de Formato em Grupos Repetidos - O comando: 520 format( i5, i5, f8.3, e16.7, f8.3, e16.7, f8.3, e16.7) pode ser escrito de maneira mais reduzida: 520 format( 2i5, 3(f8.3, e16.7)) Referncias LINGUAGEM DE PROGRAMAO ESTRUTURADA FORTRAN, (Editora McGrawHill, 1986) de M. E. Hehl por Francisco C. Lavarda

Anda mungkin juga menyukai