









Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Aprenda a estruturar um programa em fortran, incluindo os cinco tipos básicos de dados (complexos, lógicos, inteiros, reais e caracteres), a estrutura básica do programa (cabeçalho, conjunto de especificações, conjunto de instruções de execução, subprogramas e instrução de final), declarações de variáveis e constantes, e a instrução stop.
O que você vai aprender
Tipologia: Notas de aula
1 / 15
Esta página não é visível na pré-visualização
Não perca as partes importantes!
3.1 Estrutura de um programa Fortran
Como se viu anteriormente, a definição da sequência de instruções (isto é, o algoritmo) é uma etapa importante na elaboração de um programa. Essas instruções podem corresponder a dados numéricos representando, por exemplo, tempos, temperaturas; ou ainda dados do tipo caracteres representando nomes; ou dados lógicos representado os valores lógicos verdadeiro ou falso; ou outros. A etapa seguinte deverá ser a codificação dessa sequência de instruções de diferentes tipos numa linguagem que possa ser armazenada e processada pelo compilador.
A linguagem Fortran define cinco tipos básicos de dados:
48 FEUP – Licenciatura em Engenharia Civil – Programação e Computadores
A estrutura de um programa Fortran é a seguinte:
Programa FORTRAN ÿ Cabeçalho
ÿ Conjunto de especificações
ÿ Conjunto de instruções de execução
ÿ Subprogramas (caso existam)
ÿ Instrução de final do programa
O cabeçalho consiste na instrução PROGRAM seguida pelo nome do programa escolhido pelo programador. O nome do programa deve iniciar-se por uma letra e consiste numa sequência de, no máximo 31 letras, algarismos ou sublinhados (ex.: PROGRAM ex1_a).
No conjunto de especificações declaram-se os nomes e os tipos de variáveis que são usados para guardar os valores dos dados, resultados e dos cálculos intermédios.
O conjunto de instruções de execução consiste na sequência de instruções do algoritmo que permitem resolver o problema em estudo.
A instrução final do programa consiste na instrução END PROGRAM seguida pelo nome do programa.
Exemplo de um pequeno programa em Fortran PROGRAM Calc IMPLICIT NONE INTEGER :: num num = 2 WRITE(,) " 2+2 = ", 2+num STOP END PROGRAM Calc
50 FEUP – Licenciatura em Engenharia Civil – Programação e Computadores
Exemplo de um programa em Fortran
program Cilindro
! Este programa calcula e escreve a 'area total ! de um cilindro
implicit none real :: a_base, a_late, a_total, altura, raio real, parameter :: pi = 3.
! Leitura do raio da base e da altura do cilindro
write(,) "Valor do raio =? " read(,) raio write(,) "Valor da altura =? " read(,) altura
! Calculo da 'area total (a_total) de um cilindro ! a_base - 'area da base ; a_late - 'area lateral
a_base = piraio* a_late = 2.0piraioaltura a_total = 2.0a_base+a_late
! Escrita do resultado
write (*,"(//' A ''area do cilindro de raio ',f7.2,& & ' e altura ',f7.2/' e'' igual a ',e13.6)")& & raio, altura, a_total
stop
end program Cilindro
3.2 Constantes em Fortran
A forma mais simples de manipular os dados num programa é através de constantes e variáveis. De acordo com os diferentes dados a tratar, definem-se cinco tipos distintos (já referidos anteriormente): inteiros, reais, complexos, caracteres e lógicos. Nas sub-secções seguintes abordam-se cada um desses tipos e a forma como são tratados em Fortran.
Capítulo 3 - Introdução à programação em Fortran 51
3.2.1 Tipo inteiro (em Fortran: INTEGER)
Um elemento inteiro é um valor numérico sem parte decimal (positivo, negativo ou zero). Uma constante inteira é formada por uma série de algarismos do 0 ao 9. As constantes negativas devem ser precedidas pelo sinal menos (–), sendo opcional a consideração do sinal mais (+) para inteiros não negativos. Assim,
0 123
são constantes inteiras válidas, sendo os seguintes casos inválidos:
1,234 (não são permitidas vírgulas em constantes numéricas); 12.0 (constantes inteiras não podem conter parte decimal); --6 (só é permitido um único sinal algébrico); 3- (o sinal algébrico deve preceder a sequência de algarismos).
3.2.2 Tipo real (em Fortran: REAL)
Um elemento real é um valor numérico com parte decimal (positivo, negativo ou zero). Uma constante real pode ser representada em notação decimal (ex.: 1.23) ou em notação científica (mantissa - inteira ou real em notação decimal – e expoente – inteiro, separados pelo símbolo 'E'; ex.: 0.123E1). Na notação decimal o sinal que separa a parte inteira da parte decimal é o ponto (.) e não a vírgula (,). As constantes negativas devem ser precedidas pelo sinal menos (–), sendo opcional a consideração do sinal mais (+) para reais não negativos. Assim,
–0.
Capítulo 3 - Introdução à programação em Fortran 53
é uma constante caracter com um comprimento igual a 10, porque o espaço em branco e o ponto também se encontram incluídos.
Se a plica for também um caracter da constante, então poderá usar-se as aspas para delimitar os caracteres dessa constante; por exemplo:
"John ' s house".
Em alternativa, pode-se usar plicas para delimitar os caracteres da constante, neste caso a plica da constante deverá ser considerada através de um par de plicas; por exemplo:
'John ' ' s house'.
Caracteres válidos em Fortran. Caracter Significado Caracter Significado 0, …, 9 Algarismos : dois pontos A, …, Z letras maiúsculas = sinal de igual a, …, z letras minúsculas! ponto de exclamação ' plica ou apostrofe & e comercial " aspas $ sinal de dólar ( parêntesis à esquerda ; ponto e vírgula ) parêntesis à direita < menor do que
3.2.5 Tipo lógico (em Fortran: LOGICAL)
Um elemento lógico pode ter dois valores: verdadeiro ou falso. Assim, uma constante lógica pode ser representada por esses dois valores. Em Fortran a sua representação é, respectivamente, a seguinte:
54 FEUP – Licenciatura em Engenharia Civil – Programação e Computadores
.TRUE. - valor lógico correspondente a verdadeiro;
.FALSE. - valor lógico correspondente a falso.
Note-se que em Fortran os valores lógicos TRUE e FALSE têm que estar compreendidos entre pontos.
3.3 Identificadores
Os identificadores são nomes usados para identificar variáveis, funções e outras entidades num programa. No Fortran normalizado, os identificadores devem começar com uma letra e podem ser seguidos por mais 30 letras, algarismos ou sublinhados ( _ ), perfazendo, assim, no total um máximo de 31. Desta forma,
Ficha
Velocidade
Aluno_1_ano
B3d
são identificadores válidos em Fortran, mas os seguintes nomes já não são identificadores válidos pelas razões indicadas:
x+y (somente letras, algarismos e sublinhados são permitidos);
2somas (os identificadores têm que começar por uma letra).
Notas:
→ É considerada boa regra de programação utilizar identificadores que representem nomes com significado, de forma a facilitar a interpretação dos programas.
56 FEUP – Licenciatura em Engenharia Civil – Programação e Computadores
o especificador de tipo é usualmente um dos seguintes:
INTEGER REAL COMPLEX CHARACTER ( especificador de tamanho ) LOGICAL
a lista de variáveis é a lista de identificadores das variáveis, separados por vírgulas.
Objectivo:
Declara o tipo de cada uma das variáveis identificadas na lista.
Alguns exemplos simples de declaração de variáveis em Fortran são apresentados nos parágrafos seguintes:
INTEGER :: num_valores, factorial, soma
REAL :: juros, fraccao, distancia
COMPLEX :: z_val
CHARACTER(LEN = 15) :: primeiro_nome, ultimo_nome
LOGICAL :: questao
Estas instruções declaram que as variáveis num_valores, factorial e soma, são variáveis com conteúdo inteiro; as variáveis juros, fraccao e distancia, são variáveis com conteúdo real; as variáveis z_val e questao são variáveis com conteúdo complexo e lógico, respectivamente; e as variáveis primeiro_nome e ultimo_nome são do tipo caracter com um comprimento de 15 caracteres.
Capítulo 3 - Introdução à programação em Fortran 57
Os números decimais não podem muitas vezes ser representadas de forma exacta por elementos do tipo real (por exemplo, 1/3 = 0.3333…), por isso, a representação em termos computacionais está sujeita a erros de arredondamento. Esses erros serão tanto maiores quanto menor for o número de algarismos significativos disponíveis. Por defeito, na generalidade dos computadores, as constantes reais são aproximadas por 7 algarismos significativos (precisão simples). No entanto há possibilidade de aumentar a precisão através da utilização da designada dupla precisão que permite usar aproximadamente 14 algarismos significativos. Isso é possível usando a declaração parametrizada de variáveis:
Declaração parametrizada de variáveis (simples) Forma:
especificador de tipo (KIND = número-tipo ) , atributos :: lista de variáveis
onde,
o especificador de tipo é usualmente um dos seguintes: INTEGER REAL COMPLEX CHARACTER ( especificador de tamanho ) LOGICAL o número-tipo é uma constante ou expressão inteira positiva que define a precisão dos valores; os atributos consistem numa lista de atributos que, eventualmente, podem ser omitidos; e a lista de variáveis é a lista de identificadores das variáveis, separados por vírgulas.
Objectivo:
Declara o tipo e a precisão de cada uma das variáveis identificadas na lista.
Capítulo 3 - Introdução à programação em Fortran 59
3.5 A instrução IMPLICIT NONE
Na maioria das linguagens de programação exige-se que seja explicitado os tipos de todas as variáveis. Em Fortran, no entanto, qualquer variável que não seja explicitamente declarada será "automaticamente" atribuído um tipo de acordo com a seguinte convenção implícita :
→ Qualquer identificador não declarado cujo nome comece por I, J, K, L, M ou N ou os seus equivalentes minúsculos, será considerado como variável inteira; todos os restantes serão considerados como reais.
Não é considerado bom hábito de programar deixar variáveis por declarar, logo sempre que possível deve-se evitar usar esta convenção implícita. O Fortran 90 fornece a instrução IMPLICIT NONE para cancelar a convenção anterior:
Instrução IMPLICIT NONE Forma:
IMPLICIT NONE
Objectivo:
Cancelar a convenção implícita de atribuição de tipos às variáveis. Esta instrução deve aparecer no início do programa e de todos os subprogramas.
3.6 O atributo PARAMETER
Certas constantes ocorrem tão frequentemente que são identificadas através de nomes. Por exemplo, o nome "pi" está normalmente associado à constante 3.14159… e o nome " e " à base 2.71828… dos logaritmos
60 FEUP – Licenciatura em Engenharia Civil – Programação e Computadores
neperianos. O Fortran permite especificar um identificador para uma constante através do atributo PARAMETER:
Declaração de Constantes como parâmetros fixos Forma:
especificador de tipo, PARAMETER :: lista de parâmetros
onde,
o especificador de tipo é aquele já anteriormente definido para a declaração de variáveis.
a lista de parâmetros é a lista de identificadores das constantes, separados por vírgulas.
Objectivo:
Associa a cada identificador da lista de parâmetros um valor constante. O valor dessa constante não pode ser alterado durante a execução do programa e qualquer tentativa para o modificar levará à ocorrência de erro de compilação.
Por exemplo, as declarações
INTEGER, PARAMETER :: Limite = 50 REAL, PARAMETER :: Pi = 3.141593, DoisPi = 2.0*Pi CHARACTER (LEN = 2), PARAMETER :: Unidades = 'kg'
Associa aos nomes Limite o inteiro 50, Pi e DoisPi as constantes reais 3.141593 e 6.283186, respectivamente, e a Unidades a string "kg". A última declaração pode também ser escrita como
CHARACTER (LEN = *), PARAMETER :: Unidades = 'kg'