Organização de programas, leitura e escrita e tipos de

Propaganda
Programação de Computadores
Viviane Torres da Silva
[email protected]
http://www.ic.uff.br/~viviane.silva/progIII
Introdução a Fortran
 Para a escrita de um primeiro programa em Fortran, quatro
aspectos precisam ser considerados:
–
–
–
–
–
Como um programa é organizado.
Quais são os tipos de dados disponíveis.
Como variáveis podem ser declaradas.
Como entrada e saída básica de dados podem ser feitas.
Como atribuir valores às variáveis.
Organização de programas
 Utilizar um editor de texto. Ex: Force
 Regras:
– As colunas de 1 a 6 do programa são reservadas para controle. As
colunas 7 a 72 são utilizadas para o programa em si. As colunas de 73
em diante devem ser ignoradas (não pode ter código nesta área).
 Uso de comentários:
– Texto em linguagem natural
– Iniciar a linha (coluna 1) com C (maiúsculo), * ou !, para indicar que se
trata de uma linha de comentário. A linha será ignorada pelo Fortran.
 Todo programa deve iniciar com o nome do programa
– Utilize o comando “program” (embora seja opcional é uma boa
prática de programação)
 Termine todo programa com o comando “end” (é obrigatório)
Exemplo 1
1
6
11
16
21
26
31
36
41
46
51
56
61
|----|----|----|----|----|----|----|----|----|----|----|----|
C este programa imprime a expressão Hello World na saída
padrão
PROGRAM exemplo1
PRINT *,'Hello World!'
END
Exemplo 1
Exemplo 2
1
6
11
16
21
26
31
36
41
46
51
56
61
|----|----|----|----|----|----|----|----|----|----|----|----|
C Este programa calcula a área de um triangulo retângulo
program Triangulo
C Dados de entrada
integer altura, base
C Dados de saida
real area
C Le a altura e base
print *, 'Informe a altura: '
read *, altura
print *, 'Informe a base: '
read *, base
C Calcula a area
area = 0.5 * altura * base
C Escreve a area
print *, 'Area: ', area
end
Tipos de dados
 Toda variável deve ser de um determinado tipo.
 O tipo da variável ajuda o Fortran saber quais são os valores
possíveis, e reservar um espaço de memória no computador
de tamanho adequado.
 Os tipos de dados podem ser divididos em duas categorias:
numéricos e não numéricos.
 Alguns tipos numéricos são: inteiro, real e real com precisão
dupla.
 Os tipos não numéricos são: caractere e lógico.
Tipos de dados: Numéricos
 Tipo inteiro (integer): variáveis do tipo integer aceitam
números inteiros de -232-1 a 232-1 em um computador de 32
bits. Exemplos: -999 ; +10 ; 123456
 Tipo real (real): variáveis do tipo real aceitam números reais
com precisão para até sete casas decimais, com magnitude de
10-38 a 1038. Esses números podem ser representados com “.”
separando parte inteira da parte decimal ou em notação
científica.
 Notação científica: Um único dígito à esquerda do ponto
decimal: 1,0 x 10-9, 3,15576 x 109
 Exemplos: -21.4 ; 0.0000034 ; 123456.0 ;
0.6023E24 = 6.023x1023 0.4E-3= 0,4x10-3
-0.5E2 = -0,5x102
Tipos de dados: Numéricos
 Tipo real com precisão dupla (double precision): variáveis do
tipo double precision são equivalentes a real mas com
precisão de até 15 casas decimais e magnitude de 10-308 a
10308. Cuidado, o seu processamento pode demandar até 10
vezes mais tempo do que variáveis do tipo real.
 Exemplos: 0.23D-94
0.54336543454323D-7 = 0.54336543454323x10-7
Tipos de dados: Não numéricos
 Tipo Caractere (character): variáveis do tipo character
permitem a representação de texto demarcado por aspas
simples (‘) ou duplas (“). (se quiser utilizar ‘, tem que colocar
outra ‘ antes)
Exemplos: ‘Fortran’ ; ‘123456’ ; ‘caixa d’’agua’
 Tipo lógico (logical): variáveis do tipo logical permitem a
representação valores lógicos, ou seja, verdadeiro ou falso.
(tem que utilizar o ponto antes e depois da palavra)
Exemplos:
.true.
.false.
Declaração de variáveis
 Existe declaração implícita e explícita de variável.
 A declaração implícita se baseia na primeira letra da variável:
– Variáveis que começam com a-h ou o-z são reais
– Variáveis que começam com i-n são inteiras.
 Declaração implícita pode levar a erros, devemos desabilitar
essa opção com o comando “implicit none”.
Exemplo
program someAcom2
print *, 'Informe valor de A: '
read *, a
x=2+a
print *, 'Area: ', x
end
(a, x são reais)
program someAcom2
implicit none
integer a, x
print *, 'Informe valor de A: '
read *, a
x=2+a
print *, 'Area: ', x
end
Declaração explícita de variáveis
 Consiste em definir qual é o tipo de cada variável que será
utilizada no programa. A declaração das variáveis tem que vir
antes de todos os demais comandos de um programa
 Regras para nomes de variáveis:
–
–
–
–
Ter somente letras de A a Z e números de 0 a 9
Começar com uma letra
Maiúscula e minúscula são equivalentes
Espaços em branco são ignorados
 Exemplos:
– X TAXA
RAIO IN
RAIO EX
NUM2
Declaração explícita de variáveis
 A declaração de uma variável consiste em definir o tipo e o
nome da variável. Mais de uma variável pode ser declarada
numa mesma linha.
 Exemplos:
– Integer contador
– Real X, Y, Z
– Character*20 nome
(nome é uma variável do tipo caracter com tamanho 20)
(se for associada uma palavra com mais de 20, nome truncará a
palavra em 20, i.e. só armazenará os primeiros 20 caracteres)
– Character nome*20 endereço*30
(nome tem tamanho 20 e endereço 30)
– Complex fase
(variável complexa)
– Logical teste
(variável lógica)
– Double precision raio
Resumo
1
6
11
16
21
26
31
36
41
46
51
56
61
|----|----|----|----|----|----|----|----|----|----|----|----|
C Este é um comentário
C início do programa
program divisão
C Declaração das variáveis
implicit none
integer x, y
real resultado
character*10 nome, sobrenome
character endereço*10
...
C fim do programa
end
Exercício
 Faça a declaração das variáveis de um programa que calcula a
média das idades de um número N de pessoas.
 Faça a declaração das variáveis de um programa que receba
como entrada o nome de uma pessoa, o endereço, o CEP, o
sexo (F ou M) e a informação se é casada ou não.
Parte II
Entrada e saída de dados
 Entrada e saída básica de dados: read e print.
– Esperam o formato e uma lista de variáveis a serem utilizados.
– Usaremos , por enquanto, formato livre (automático) para leitura e
escrita identificado por *
 Para pedir ao usuário o valor da altura de um triângulo:
– read *, altura
 Para escrever o resultado do calculo da área do triângulo:
– print *, área
 Podemos também ler de uma só vez a altura e a base:
– read *, altura, base
 Podemos escrever o resultado com informação mais
detalhada
– print *, ‘A área do triângulo com altura ‘, altura, ‘ e base ‘, base, ‘ é
‘, area
Atribuição de valores
 O símbolo de igual (=) representa a atribuição de valores a
variáveis.
 Fortran executa os cálculos necessários do lado direito do “=” e
armazena o resultado do cálculo no lado esquerdo do “=”.
 Importante: não imagine que o “=” representa uma equação
algébrica a ser resolvida!
 Exemplos:
x=3
x=4–x
(qual é o valor de x após o cálculo desta expressão?)
nome = ‘Fortran’
verdade = .true.
Exemplo: Faça o método chinês
program atribuicoes
real x, y, z
x = 1.0
y = 2.0
z = 3.0
x = -x
print *, 'valor de x: ', x
y = y - 1
print *, 'valor de y: ', y
z = z + x
z = z + x - y
print *, 'valor de z: ', z
end
Método Chinês
x
y
z
1
2
3
-1
1
2
0
Exercício
 Construa um programa em Fortran para determinar as raízes
de uma equação de 2º grau: ax2 + bx + c = 0
 Recordar que : d = b2 – 4ac
x = ( –b  sqrt(d) ) /2a
 Assuma que só é possível fazer uma operação por linha
 Exemplo: x = b**2
 Exemplo errado: aux= 4*a*c
 Utilize o método Chinês para verificar se o algoritmo está
correto.
Operações aritméticas
 Algumas operações aritméticas básicas são fornecidas pela
linguagem Fortran. São elas:
Na álgebra
(...) parênteses
Ab
X
÷
+
-
No Fortran
(...)
a**b
*
/
+
-
Prioridade
1
2
3
3
4
4
 Em situações onde operações têm prioridade igual, a
avaliação é feita da esquerda para a direita. Contudo, no caso
de potência, a avaliação é feita da direita para a esquerda.
Exemplo
 9.2 – (2.0**3**2 – 14.0 / 7.0) + 14.0 * 0.1
9.2 – (512.0 – 14.0 / 7.0) + 14.0 * 0.1
9.2 – (512.0 – 2.0) + 14.0 * 0.1
9.2 – 510.0 + 14.0 * 0.1
9.2 – 510.0 + 1.4
– 500.8 + 1.4
– 499.4
Aritmética
 Aritmética de inteiros: Caso a operação de divisão seja
aplicada com numerador e denominador inteiros, o resultado
será somente a parte inteira da divisão.
– Ex: 3/2 =1
 Aritmética em modo misto: Caso a operação de divisão
envolva inteiros e reais, os inteiros serão automaticamente
convertidos para reais. A análise é feita para cada operador da
equação.
– Ex: 3.0/2 = 1.5
 Exemplo: integer x
x = 3.3 / ( 5./2) – 5 => 3.3 / ( 2.5) – 5 => 1.65 – 5 => – 3.35
x=–3
Funções matemáticas
 Fortran fornece um conjunto de funções matemáticas que
podem ser utilizadas em expressões.
Função
ABS(x)
MOD(X, Y)
NINT(X)
SQRT(X)
SIN(X)
COS(X)
EXP(X)
LOG(X)
LOG10(X)
MIN(...)
MAX(...)
INT(X)
REAL(X)
Exemplo
ABS(-5)  5
MOD(5, 2)  1
NINT(5.7)  6
SQRT(2.0)  1.41421354
SIN(0.0)  0.0
COS(0.0)  1.0
EXP(1.0)  2.71828175
LOG(2.71828175)  1.0
LOG10(100.0)  2.0
MIN(1, 5, 10)  1
MAX(1, 5, 10)  10
INT(5.7)  5
REAL(5)  5.
Descrição
Valor absoluto
Resto da divisão
Arredondamento
Raiz quadrada
Seno
Cosseno
Exponencial (ex)
Logaritmo natural
Logaritmo na base 10
Menor número de uma lista
Maior número de uma lista
Converte para inteiro
Converte para real
Download