Programação de Computadores
Viviane Torres da Silva
[email protected]
http://www.ic.uff.br/~viviane.silva/progIII
Vetores
 Declaração da variável:
real nota(30)
OU
integer param
parameter (param=30)
real nota(param)
 Uso:
do i = 1, 30
read *, nota(i)
enddo
OU
read *, (nota(i), i = 1, 30)
print*, (nota(i), i = 1, 30)
nota
1,5
10,0
8,7
5,5
....
Exemplo
 Faça um programa em Fortran que lê dois vetores inteiros de
tamanho 3 e soma cada posição uma a uma armazenando os
resultados em outro vetor .
program soma vetores
implicit none
integer vetorA(3), vetorB(3), i, vetorC(3)
print *, 'digite os valores dos vetores:'
read *, (vetorA(i), i=1,3) , (vetorB(i), i=1,3)
do i=1, 3
vetorC (i) = vetorA (i) + vetorB (i)
enddo
print *, (vetorC(i), i=1,3)
end
Matrizes
 Declaração da variável:
real notas(30,2)
OU
P1
P2
real param, param2
parameter (param=30)
parameter (param2=2)
real nota2(param, param2)
1,5
10,0
8,7
5,5
....
6,5
8,3
4,0
7,5
 Uso:
do i = 1, 30
do j = 1, 2
read *, nota(i,j)
enddo
enddo
OU
read *, ((nota(i), j=1,2), i = 1,30)
Exemplo
 Faça um programa em Fortran que lê as notas da P1 e P2 de
30 alunos e calcule a média de cada aluno.
program x
implicit none
integer i,j
integer param
parameter (param=30)
character*20 nome(param)
real notas(param, 2), media(param)
print*, 'entre com os nomes dos alunos:'
read*, (nome(i), i=1,param)
print*, 'entre com as notas da P1 e P2 de cada aluno:'
read*, ((notas(i,j), j=1,2), i=1,param)
do i=1,param
media(i) = (notas(i,1) + notas(i,2))/2
enddo
print*, 'as medias dos alunos são:'
do i=1,param
print*,'nome aluno: ', nome(i), 'e média: ', media(i)
enddo
end
Subrotina
 Implementação:
subroutine s1(a,b)
implicit none
real a
integer b
...
End
 Chamada:
call s1(a,b)
Exemplo
program ex5
implicit none
integer a, b, c
a = 1
b = 2
c = 3
call teste(c)
print *, a, b, c
end
subroutine teste(d)
implicit none
integer a, b, d
a = 10
b = 20
d = 30
end
a e b são variáveis locais do
programa principal e não são
alteradas na sub-rotina
c é um parâmetro alterado na
sub-rotina
a e b são variáveis locais da
sub-rotina
Função
 Implementação:
integer function f1(a)
implicit none
integer a
...
f1 = ...
End
 Declaração e chamada:
real raio, volume
...
print *, 'Volume da esfera: ', volume(raio)
program calculo da media
implicit none
integer P1, P2
real media
character*10 status
print *, 'informe a nota da P1 e P2:‘
read *, P1, P2
print *, status( media(P1, P2) )
end
real function media(P1, P2)
integer P1, P2
media = (P1 + P2)/2
end
character*10 function status(valor)
real valor
if (valor .GE. 6) then
status = 'aprovado‘
else if (valor .LT. 4) then
status = 'reprovado‘
else
status = 'VS'
end if
end
Leitura de arquivo
 Regra:
OPEN (<identificador>,FILE=‘<nome do arquivo>’)
READ (<identificador>, *) <dados a serem lidos>
CLOSE (<identificador>)
 Uso:
open(1, file='entrada.txt')
do i=1,3
read(1,*) nome(i), altura(i), (sangue(i,j), j=1,2)
endddo
close(1)
Nome altura glicose colesterol
Joao
70
100
120
Maria 60
80
89
Ana
120
200
250
Exemplo
 Suponha que um médico tem um arquivo onde armazena
informações sobre seus 3 pacientes. Os dados armazenados
no arquivo são: nomePaciente, peso, nívelColesterol,
nívelGlicose. Escreva um programa que ajude o médico a fazer
a seguinte consulta:
1. Nome dos pacientes com nível de colesterol acima de 120
2. Paciente com nível de glicose mais baixo
3. Relatório sobre o paciente A
Exemplo arquivo de pacientes: paciente.txt
joao 70 100 120
maria 60 80 89
ana 120 200 250
program medico
implicit none
integer i, j, k, dados(3,3), aux
character*10 nome(3), nomePac
open(1, file='paciente.txt')
do i=1,3
read(1,*) nome(i), (dados(i, j), j = 1, 3)
enddo
close(1)
do i=1, 3
if (dados(i,2) .GT. 120) then
print*,'paciente com cholesterol alto:', nome(i)
endif
enddo
aux=dados(1,3)
do i=1, 3
if (dados(i,3) .LT. aux) then
aux = dados(i,3)
endif
enddo
print*,"pacientes com glicose mais baixo ‚: ",aux
print*,"entre com o nome do paciente"
read*, nomePac
do i=1,3
if(nome(i)
print*,
print*,
print*,
endif
enddo
end
.EQ. nomePac) then
"peso= ", dados(i,1)
"colesterol= ", dados(i,2)
"glicose= ", dados(i,3)
Exercício 1
 Faça um programa em Fortran que leia de um arquivo uma
tabela contendo nomes dos funcionários, salário de cada
funcionário e a informação se o funcionário está de férias ou
não. O programa deve implementar as seguintes opções para
o usuário:




Informar o salário de um funcionário dado pelo usuário
Informar a média salarial (função)
Informar a lista de funcionários que estão de férias (subrotina)
Informar os nomes dos funcionários que ganham acima da
média (subrotina)
Exercício 2
 Faça um programa em Fortran que leia de um arquivo o
relatório dos itens que existem no estoque. São ao todo 20
itens cadastrados. O relatório possui o nome do item, um
número identificador para o item, a quantidade no estoque e
o preço deste item. Outro relatório é utilizado para armazenar
os itens comprados pelos clientes. Cada linha deste relatório
armazena o nome do cliente, o número do identificar do item
que este cliente comprou e a quantidade que ele comprou
deste item. O programa deve implementar as seguintes
opções para o usuário:
 Informar o nome dos itens comprados por um cliente.
 Informar o valor da compra de um determinado cliente.
 Cada uma das operações anteriores deve ser implementada
utilizando sub-programação.
Download

Introdução a Sistemas Multi-Agentes - Instituto de Computação