Fundamentos de algoritmos e programação - Fortran

Preview:

DESCRIPTION

Algoritmos e Programação

Citation preview

A linguagem FORTRAN, a primeira linguagem de

programação de alto nível (surgiu em 1956), foi proposta

e implementada para auxiliar os programadores na

codificação de problemas técnicos e científicos cuja

solução requer a utilização de computadores eletrônicos.

O FORTRAN é uma das linguagens mais popular e

difundida no meio técnico e científico

O comando INTEGER é usado para declarar,explicitamente, um nome de variável,conjunto de variáveis, constante simbólica,como sendo do tipo inteiro.

Obs.: Ver Exs

O comando REAL é usado para declarar,explicitamente, um nome de variável,conjunto de variáveis, constante simbólicacomo sendo do tipo realObs.: Ver Exs

O comando CHARACTER é usado paradeclarar, explicitamente, um nome devariável, conjunto de variáveis, constantesimbólica, como sendo do tipo alfa-numéricaObs.: Ao declara uma variável do tipoCharacter deve ser indicado o númeromáximo de caracteres que a variável podeconter, esse numero de ser inteiro e positivo.Obs.: Ver Exs

O comando LOGICAL é usado para declarar,explicitamente, um nome de variável,conjunto de variáveis, como sendo do tipológica. As variáveis lógicas devem ser .TRUE.(verdadeiro) ou .FALSE. (falso).

Obs.: Ver Exs

Algoritmo 1 - principal

Inteiro A, B

real X, Y

Caractere nome

lógica W

fim

Obs.: (1) Note que o programa principal deve ter um nome, neste caso, “principal”.

(2) O comando implicit nonedetermina que todas as variáveis usadas no programa seja declaradas. Prevenindo assim, que o programa use uma variável aleatória.

(3) O “ *8” determina um número real em dupla precisão. Assim suporta valores entre 1.0 x 10^-300 até 1.0 x 10^300

Operador Definição Uso do Operador Significado

** Potenciação a**b a elevado a potência b

* Multiplicação a*b a multiplicado por b

/ Divisão a/b a dividido por b

+ Adição a+b a mais b

+ Mais unitário +a o mesmo que a

- Subtração a-b a menos b

- Menos unitário -a a com sinal trocado

Tabela 01

Algoritmo

Algoritmo

B=B^2

A=B x 20

B= B /A

A= A+2

B=+B

A=5-B

B=-A

fim

Obs.: (1) O caractere “!” é utilizado para adicionar um comentário no algoritmo. Todo texto escrito após ele não ira interferir no desenvolvimento do programa.

Operador Definição Uso do Operador Significado

// Concatenação a//b a encadeado com b

Tabela 02

Como resultado deste comando irá aparecer na tela:

Operador Definição Uso do Operador Significado

.EQ. ou == Igual a a.EQ.b ou a==b a = b ?

.NE. ou /= Diferente de a.NE.b ou a/=b a ≠b ?

.LT. ou < Menor que a.LT.b ou a<b a < b ?

.LE. ou <= Menor ou igual a.LE.b ou a<=b a ≤b ?

.GT. ou > Maior que a.GT.b ou a>b a > b ?

.GE. ou >= Maior ou igual a.GE.b ou a>=b a ≥ b ?Tabela 03

Obs.: (1) Os comandos “.LT.” e “.GE.” pode ser substituídos por qualquer outro da tabela 03, caso seja do interesse do programador.

Operador Definição Uso do Operador Significado

.NOT. Negação Lógica .NOT.a Complemento de a: se a

é verdade, então .NOT.a

é falso, se a é falso

então .NOT.a. é

verdade.

.AND. Conjunção lógica a.AND.b Produto Booleano de a

por b: se a e b são

verdade, então a.AND.b

é verdade; se a ou b ou

ambos são falsos, então

a.AND.b é falso.

.OR. Disjunção Inclusivo lógica

a.OR.b Soma Booleana de a com b: se a ou b ou ambos são verdade,

então a.OR.b é verdade; se a e b são falsos,

então a.OR.b é falso..EQV. Equivalência Lógica a.EQV.b Equivalência lógica de a

com b: se a e b são ambos verdade ou

ambos falsos, então a.EQV.b é verdade, caso

contrário é falso..NEQV. Não equivalência lógica a.NEQV.b Não equivalência lógica

de a com b: se a e b são ambos verdade ou

ambos falsos, então a.EQV.b é falso, caso contrário é verdade.

Continuação

Tabela 04

O comando PRINT é usado para transferir dados para o vídeo. Casualmente entendido como uma impressão, de determinado dado, no monitor.

Algoritmo

Imprima ‘Teste de Impressão’

Fim

Obs.: (1) Note que o texto escrito entre aspas simples aparecerá inalterado quando impresso no monitor.

Como resultado deste comando irá aparecer na tela:

O comando WRITE é usado para transferir dados para arquivos externos e internos.Sintaxe:

▪ WRITE ( unit, fmt ) lista de variáveis

Unit Número que identifica o dispositivo de saída (ARQUIVO,IMPRESSORA, VÍDEO), o dispositivo padrão é o vídeo eidentificado pelo símbolo *.

Fmt Pode ser um número (LABEL) associado ao formato de saída dosdados ou pode ser utilizado para especificar diretamente oformato da variável a ser transferida, a qual deve ser escritautilizando os seguintes delimitadores: '(tipo do formato)'. Pode-se omitir a especificação do formato (utiliza-se o dispositivopadrão), para isto é necessário utilizar o símbolo *.

Algoritmo

Write ‘Teste de Impressão’

Fim

O comando READ é usado para adquirir dados de um arquivo ou teclado.

Algoritmo

Leia X

Fim

Obs.: (1) É usual a utilização de um pequeno texto indicando que variável o usuário deve entrar com os dados.

As operações com arquivos no Fortran, em geral, são simples,

necessitando da abertura do arquivo, gravação ou leitura dos dados e

o fechamento do arquivo.

Quando trabalhando com arquivos, deve-se ter em mente que o

tempo de leitura e gravação em arquivos é uma operação

relativamente lenta se comparada com as operações matemáticas.

Portanto se um arquivo deve ser lido várias vezes durante a execução

do programa, uma boa idéia é ler todo o arquivo de uma só vez,

armazenando os dados em variáveis.

Arquivos são abertos usando o comando OPEN que tem forma:

OPEN (<unit>, FILE = <arquivo>)

<unit> unidade de referência para o arquivo,pode ser qualquer número inteiro<arquivo> nome do arquivo a ser criado ou aberto. O nome do arquivo deve vir entre aspas.

Para escrever dados no arquivo deve-se usar o comando WRITE usando a unidade do arquivo:WRITE (<unit> , <formato>) <variáveis>

Para ler o arquivo de dados deve-se usar o comando READ, também usando a unidade do arquivo:READ (<unit> , <formato>) <variáveis>

Antes do programa acabar deve-se fechar o arquivo de dados usando o comando CLOSE:

CLOSE (<unit>)

Estes tipos de arquivo usados pelo Fortran são arquivos texto simples e podem ser editados em qualquer editor de texto (desde que gravados no formato texto). Em geral se opta pela extensão .TXT ou .DAT para os arquivos de dados.

O arquivo .txtutilizado nesse exemplo é:

Obs.: Nesse exemplo atribuímos uma variável (entrada) à “Unit”. Note que essa variável passou a ser nossa unidade de referencia.

O comando IF (Se) transfere o controle de fluxo ou

executam outro comando (ou um bloco de comandos)

dependendo da condição dada como resultado de uma

expressão contida no particular comando IF. O comando IF ,

executa condicionalmente, blocos ou grupos de comandos

executáveis.

Se a expressão lógica (e1) for verdadeira o bloco1 é executado.

Se a expressão lógica (e1) for falsa, então o bloco3 é executado.

Algoritmo

Se (e1) então

Bloco (1)

senão

Bloco (3)

fim se

Fim

Obs.: (1) Nesse caso, se “A”<“C”, então soma-se “1” em “A”.(2) E se “A”≥ “C”, então subtrai-se “1” de “A”.

O comando DO é um comando de controleque permite que uma seqüência decomandos seja repetitivamente executadaenquanto o valor da variável de controleestiver entre os limites especificados.

Algoritmo

faça i=1, até 10, variando em 1

leia x

Fim faça

Fim

Inicialmente a variável “i” ,chamada de contador, recebe o valor “1”, e gradativamente soma-se “1” ao seu valor até atingir “10” . Todos os comando dentro deste algoritmo se repetirá até “i” atingir “10”, por isso é chamado de “laço de repetição”.

Obs.: (1) No laço de repetição usa-se uma variável contador do tipo inteiro que determina o número de repetições.

•Este artifício é muito utilizado ao se trabalhar com vetores e matrizes.

O comando DO WHILE é um comando decontrole que permite que uma seqüência decomandos seja repetitivamente executadaenquanto a expressão lógica permanecerverdadeira .

algoritmo

i=0

Faça enquanto (i=10)

i=i+1

Fim faça

Fim

Enquanto “i” for diferente de “10”, todos os comandos dentro desse algoritmo se repetirá.

Obs.: Inicialmente a variável “i” recebe valor “0”, a medida que passamos por esse laço adiciona-se “1” à “i” até que a condição não seja verdadeira, nesse caso, “i” ≠ ”10”.

O comando executável STOP termina a execução do programa, pode exibir uma informação no vídeo.

Algoritmo

Pare [Fim do Programa]

Fim

Embora o comando stop termine a execução do programa, ele pode ser dispensado.

Nesse caso teremos na tela a seguinte mensagem:

O comando END indica o final físico de uma unidade de programa para o compilador. Um programa na linguagem FORTRAN tem dois pontos terminais. O primeiro é um ponto terminal lógico, indicando o fim da execução do programa. Esse terminal lógico é indicado pelo comando STOP. O segundo ponto terminal é o ponto terminal físico, indicando o fim do processo de compilação. Esse ponto terminal físico é indicado pelo comando END, que deve ser o último comando numa unidade de programa FORTRAN.A forma geral do comando END é:

END

Cada unidade de programa (isto é, um programa principal, um subprograma FUNCTION, um subprograma SUBROUTINE) deve conter um e somente um comando END.

A declaração de vetores e matrizes em FORTRAN é semelhante à declaração de uma variável qualquer, com a diferença que logo após a declaração da variável, é acrescentada a dimensão entre parênteses, indicando o tamanho que este deve ter. Para acessar o conteúdo do vetor, utiliza-se o índice do conteúdo procurado.

Algoritmo

Inteiro A(100)

real X(20,20)

Caractere nome (10)

fim

A variável “A” é um vetor com 100 posições, com valores do tipo inteiro.A variável “X” é uma matriz 20x20, com valores do tipo realA variável “nome” é um vetor com 10 posições, com valores do tipo caractere.

Obs.:(1) Note que a variável “C” tem dimensão “10”, indicando um vetor.

(2) Por sua vez, a variável “Z” tem duas dimensões, o que caracteriza uma matriz, neste caso 10x10.

forma individual

A(2) = 10 atribui o valor 10 ao campo 2

por faixa

A(2:5) = 10 atribui o valor 10 aos campos 2 até 5, ou seja,

A(2) = A(3) = A(4) = A(5) = 10

B(1:3,3:4) = 10 atribui o valor 10 aos campos

B(1,3) B(2,3) B(3,3)

B(1,4) B(2,4) B(3,4)

total

A = 10 atribui o valor 10 a todos os campos da variável A, ou seja,

A(1) = A(2) = ... = A(n) = 10

Obs.: (1) Utiliza-se um laço de repetição para percorrer todas a suposições do vetor, diminuindo assim o tamanho do algoritmo .

(2) No caso de uma matriz também utiliza-se esse artifício, lembrando que este possui duas dimensões, por isso deve-se utilizar dois laços de repetição.

Vetores e matrizes podem ser somados, subtraídos, multiplicados e divididos entre si, desde que sejam de mesmo tamanho:

Algoritmo

A(1)= B(7)+C(5)

X(10,1)=Y(1,7)-Z(4,5)

C(3)= B(2)*A(8)

Z(1,4)= X(9,5)/Y(6,8)

Fim

Obs.: (1) Um laço de repetição também pode ser utilizado para realizar operações percorrendo cada valor do vetor ou matriz.

(2) Note que um vetor pode ser impresso na tela utilizando um laço de repetição.

Recommended