You are on page 1of 129

Carlos A. R. Carvalho Junior (carloscarvalhoj@gmail.

com)

Nivelamento 2015 - Algoritmos/Programao

Universidade Federal do Paran


Setor de Cincia e Tecnologia
Programa de Ps-Graduao em Mtodos Numricos em Engenharia

CURITIBA
2015

Sumrio
1
1.1
1.2

CRONOGRAMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
AULA 1 (20/01/2015) . . . . . . . . . . . . . . . . . . . . . . . . . . .
AULA 2 (22/01/2015) . . . . . . . . . . . . . . . . . . . . . . . . . . .

3
3
3

2
2.1
2.1.1
2.1.2
2.1.3
2.1.4
2.1.5
2.2
2.2.1
2.2.2
2.2.3
2.2.4
2.2.5
2.2.6

LISTA DE EXERCCIOS
LISTA 1 . . . . . . . . . .
Exerccio 1 . . . . . . . . .
Exerccio 2 . . . . . . . . .
Exerccio 3 . . . . . . . . .
Exerccio 4 . . . . . . . . .
Exerccio 5 . . . . . . . . .
LISTA 2 . . . . . . . . . .
Exerccio 1 . . . . . . . . .
Exerccio 2 . . . . . . . . .
Exerccio 3 . . . . . . . . .
Exerccio 4 . . . . . . . . .
Exerccio 5 . . . . . . . . .
Exerccio 6 . . . . . . . . .

4
4
4
4
5
5
5
5
5
5
6
6
6
6

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

. . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

ANEXOS

ANEXO A MATERIAL DISCIPLINA PROG-I(PUC RIO) . . . . .

B.1
B.2

ANEXO B LISTA DE EXERCCIOS 2014 . . . . . . . . . . . . . 31


Lista 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Lista 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

C.1
C.2
C.3
C.4
C.5
C.6
C.7

ANEXO
CAP.1 CAP.2 CAP.3 CAP.4 CAP.5 CAP.7 CAP.8 -

C APOSTILA DE FORTRAN . . . . . . . . . . . . . . . 34
INTRODUO . . . . . . . . . . . . . . . . . . . . . . . . . . 35
VARIVEIS DO TIPO INTEIRO . . . . . . . . . . . . . . . . 53
VARIVEIS DO TIPO REAL . . . . . . . . . . . . . . . . . . 67
VARIVEIS DO TIPO CARACTER . . . . . . . . . . . . . . 81
ARQUIVOS E FUNES MATEMTICAS INTRNSECAS 93
DECISES E OPES . . . . . . . . . . . . . . . . . . . . . 107
CICLOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

1 Cronograma
1.1 AULA 1 (20/01/2015)
Noes bsicas de programao: O que um algoritmo, tipos de linguagens
existentes e sua utilidade no estudo cientfico.
Linguagem de programao: Pseudo-linguagem, fluxograma, linguagem natural.
Linguagem base: Fortran
Material utilizado: Prog3.pdf (disponvel no anexo A)

1.2 AULA 2 (22/01/2015)


Tipos de variveis: Inteira(Integer), real e caracteres (character)
Condicionais: se (IF), caso (case)
Repeties: para (Do), enquanto (While)
Material utilizado: Prog3.pdf (disponvel no anexo A) e apostila de fortran cap...
(disponvel no anexo C)

2 Lista de exerccios
2.1 LISTA 1
2.1.1 Exerccio 1
Escreva o pseudocdigo, para ler, a partir do teclado, o ano de nascimento de uma
pessoa. Com esse dado, o programa deve fazer o seguinte: (a) calcular e imprimir sua
idade, considerando que estamos no ano de 2015; (b) verificar e imprimir se a pessoa j
tem idade para votar (16 anos ou mais); (c) verificar e imprimir se a pessoa j tem idade
para conseguir a carteira de habilitao (18 ou mais). Veja alguns exemplos de entrada e
sada de dados a partir da execuo do programa:
Exemplo 1:
1998
Idade de 17 anos
Tem idade para votar
No pode ter carteira de habilitao.
Exemplo 2:
1990
Idade de 25 anos
Tem idade para votar
Pode ter carteira de habilitao.

2.1.2 Exerccio 2
Escreva um programa em pseudocdigo, para ler, a partir do teclado, a rea de um
cmodo e escreva a potncia de iluminao necessria para ilumin-lo de acordo com a
seguinte relao: 100 watts para cmodos com 6m2 ou menos , para cmodos com mais
de 6m2 , a potncia de 80 watts para os primeiros 3m2 e mais 15 watts a cada 1m2 de
acrscimo.
Exemplo de execuo:
rea (m2 ): 3
Potncia: 100 watts
rea (m2 ): 7 (nova execuo)
Potncia: 140 watts

Captulo 2. Lista de exerccios

rea (m2 ): 8
Potncia: 155 watts

2.1.3 Exerccio 3
Escreva um programa em pseudocdigo, para ler, a partir do teclado, o primeiro
termo e a razo de uma progresso aritmtica, determinar a soma dos seus primeiros cinco
termos. As frmulas que definem os termos e soma de uma progresso aritmtica (PA) so:
an = a1 + (n 1) r
a1 + an
S=
n
2

2.1.4 Exerccio 4
Resolver lista 1 - 2014 de Fortran (Anexo B ) em pseudocdigo.

2.1.5 Exerccio 5
Resolver exerccios 2,3,4 e 5 da Lista 2 - Programao I (Anexo A )

2.2 LISTA 2
2.2.1 Exerccio 1
Escreva o pseudocdigo de um programa que l o nmero de alunos de uma turma
e, para cada aluno, l as suas trs notas, escreve sua mdia aritmtica e, no final, escreve
a mdia da turma.

2.2.2 Exerccio 2
Escreva o pseudocdigo, que mostre as mdias aritmticas dos valores positivos e
negativos fornecidos via teclado. O final da entrada de valores indicado com o valor 0
(zero) que no deve ser considerado no clculo das mdias.
Exemplo de execuo:
1.5 ; 2.0 ; -3.0 ; 1.0 ; -2.5; -5.0; 2.5 ; 0
Mdia dos positivos: 1.75
Mdia dos negativos: -3.5

Captulo 2. Lista de exerccios

2.2.3 Exerccio 3
Afrnio tem um peso de 80 kg e est engordando uma mdia de 2 kg por ano.
Enquanto isto, Ermengarda, sua amada esposa, tem 45 kg e est engordando uma mdia
de 3 kg por ano. Faa um programa em pseudocdigo que calcule e imprima quantos anos
sero necessrios para que Ermengarda ultrapasse o peso de Afrnio. O programa deve
tambm imprimir qual ser o peso de cada membro do casal ternura neste momento.
Observe que a evoluo do peso de cada um dos pombinhos uma PA. Tomando-se
n, como o nmero de anos que demora para os pesos serem iguais, use uma das
frmulas do exerccio 2.1.3, para calcular n.

2.2.4 Exerccio 4
Escreva o pseudocdigo de um programa que leia um conjunto de valores inteiros
positivos e imprime na tela quantos nmeros pares e quantos nmeros mpares foram
digitados pelo usurio. O final do conjunto de valores indicado quando o usurio digitar
o valor 0 (zero), que no deve ser considerado na contagem de valores pares ou impares.
Exemplo de execuo:
1 ; 4 ; 35 ; 89 ; 67 ; 54 ;0
2 pares e 4 impares

2.2.5 Exerccio 5
Resolver lista 2 - 2014 de Fortran (Anexo B ) em pseudocdigo.

2.2.6 Exerccio 6
Resolver exerccios 6,7,8 da Lista 2 - Programao I (Anexo A )

Anexos

ANEXO A Material disciplina


PROG-I(PUC RIO)
Disciplina: Programao I (Prog I)
Site da disciplina: http://www.inf.puc-rio.br/ inf1005/index.lp
Conforme utilize algum material, deste site, irei anexando.
Observao: Esta disciplina voltada para linguagem em C++
Arquivos utilizados:
Prog3.pdf
ProgILista2.pdf

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

Algoritmos e Pseudocdigo

INF1005 Programao I
Prof. Hlio Lopes
lopes@inf.puc-rio.br
sala 408 RDC

algoritmos e pseudocdigo
tpicos
algoritmo definies
representao e resoluo de problemas
representao de programa
pseudocdigo
fluxograma
construes
entrada e sada
condicionais
repeties
2

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

algoritmos

algoritmo - definies
especificao precisa (no ambgua) de um
comportamento que visa resolver um problema bem
definido

sequncia finita de instrues precisas que podem ser


executadas mecanicamente num perodo de tempo
finito e com uma quantidade de esforo finito

programa de computador
algoritmo codificado em uma linguagem de programao
4

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

algoritmo - definies
especificao precisa (no ambgua) de um
comportamento que visa resolver um problema bem
definido

Uma receita culinria um algoritmo?


"sal a gosto" vs. "1/4 colher (ch) de sal"
"bata bem" vs.

"bata at a massa ficar homognea"


"forno mdio" vs. "forno a 220C"

algoritmo definies
especificao precisa (no ambgua) de um
comportamento que visa resolver um problema bem
definido
condies iniciais (estado de problema)
como as coisas so

objetivos (estado desejado)


como as coisas deveriam ser

recursos
meios ou mtodos para transformar um estado de problema

desde as condies iniciais at os objetivos


ex: movimentos possveis em um jogo

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

exemplo

EX. 01

Escreva um algoritmo com objetivo de matar a fome na rua

pessoa com fome

algoritmo

pessoa sem fome

1.

______________________________________________

2.

______________________________________________

3.

______________________________________________

4.

______________________________________________

5.

______________________________________________

6.

______________________________________________ 7

exemplo isto um algoritmo?


objetivo: matar a fome na rua
1.

decidir onde comer, conforme tempo e dinheiro disponvel

2.

ir at o local escolhido

3.

decidir o que comer, conforme cardpio, tempo e dinheiro


disponvel

4.

fazer o pedido

5.

pagar

6.

aguardar o pedido

7.

comer

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

resolver o problema antes de programar


Qual a situao inicial? J temos todos os dados de entrada?
Esses dados so especficos a uma nica situao ou podemos generalizar?
Existe alguma notao para representar de forma sucinta os dados e os
estados intermedirios?

Qual o objetivo? / Quais so os objetivos?


H um nico objetivo, ou so vrios?
Cada objetivo pode ser dividido em sub-objetivos, ou no?
Os (sub-)objetivos so independentes, ou no?
H obstculos a serem vencidos? Como podem ser vencidos?
H restries na elaborao da soluo? (tempo, espao em memria, custo)

Quais so os recursos (movimentos, operaes, procedimentos, regras,


transformaes)?
Para cada recurso, h restries ou pr-condies para sua aplicao?
H outros recursos mais simples que satisfaam essas pr-condies?
Quando voc aplica um recurso, o que muda? (variantes)
Quando voc aplica um recurso, o que permanece igual? (invariantes)
H outros recursos mais poderosos para resolver esse problema?
9

adaptado de Blank & Barnes (1998) The Universal Machine.

exemplo Como chegar ao destino?


Rua 4

Rua 5

Rua 6

Rua 7

Av.1

Av.2

Av.3

Av.4

10

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

problemas e solues

um problema pode ter vrias solues

algumas solues so melhores do que outras

um problema pode ter solues parciais

restries no espao de problema podem ajudar na


busca por uma soluo

11

representao do espao de problema


descrio do mundo:
Rua 4

ruas: [4,7]

Rua 5

avenidas: [1,4]

convenes de representao:

Rua 6

posio: (r,a)
obstculo: (r1,a1,r2,a2)

Rua 7

Av.1

Av.2

Av.3

Av.4

condies iniciais:
posio: (7,1)
obstculos: { (6,2,7,2), (4,2,5,2), (5,3,6,3), (6,4,7,4) }

objetivo:
posio: (4,3)
Quais as consequncias dessa representao?
12

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

algoritmo - exemplo
objetivo: verificar se um aluno est aprovado
(mdia das 3 notas >= 5.0) ou reprovado (caso
contrrio)

13

como representar um algoritmo


linguagem natural
1. Obter as trs notas das provas
do aluno
2. Calcular a mdia aritmtica das
trs notas
3. Se a mdia for maior ou igual a
5, escrever aprovado
4. Caso contrrio, escrever
reprovado

fluxograma
incio

leia (nota1, nota2,


nota3);

media
(nota1+nota2+nota3)/3;

pseudocdigo
variveis
media, nota1, nota2, nota3
incio
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) ento
escreva aluno aprovado
seno
escreva aluno reprovado
fim-se
fim

media >= 5.0?

no

sim
escreva
(aprovado);

escreva
(reprovado);

fim
14

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

algoritmo em pseudocdigo
variveis
media, nota1, nota2, nota3
incio
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) ento
escreva aluno aprovado
seno
escreva aluno reprovado
fim-se
fim

15

algoritmo em pseudocdigo
variveis
media, nota1, nota2, nota3
incio
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) ento
escreva aluno aprovado
seno
escreva aluno reprovado
fim-se
fim

variveis armazenam valores (dados,


informaes) necessrios soluo do
problema:
dados de entrada:
nota1, nota2, nota3
dados utilizados no processamento:
mdia
dados de sada

16

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

algoritmo exemplo
objetivo: a partir de trs notas de um aluno, verificar se
ele est:
aprovado (mdia >= 5.0)
em prova final (mdia < 5.0 e mdia >= 3.0) ou
reprovado (mdia < 3)

17

fluxograma (com defeito)


objetivo: a partir de trs notas de um aluno,
verificar se ele est:

incio

aprovado (mdia >= 5.0)


leia (nota1, nota2,
nota3);

em prova final (mdia < 5.0 e mdia >= 3.0) ou


reprovado (mdia < 3)

media
(nota1+nota2+nota3)/3;

media >= 5.0?

sim
escreva
(aprovado);

no

media >
3.0?

no

sim
escreva
(em prova final);

escreva
(reprovado);

fim
18

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

fluxograma (com defeito)


objetivo: a partir de trs notas de um aluno,
verificar se ele est:

incio

aprovado (mdia >= 5.0)


leia (nota1, nota2,
nota3);

em prova final (mdia < 5.0 e mdia >= 3.0) ou


reprovado (mdia < 3)

media
(nota1+nota2+nota3)/3;

media >= 5.0?

no

sim

media >
3.0?

no

sim

escreva
(aprovado);

escreva
(em prova final);

escreva
(reprovado);

fim
19

fluxograma (corrigido)
objetivo: a partir de trs notas de um aluno,
verificar se ele est:

incio

aprovado (mdia >= 5.0)


leia (nota1, nota2,
nota3);

em prova final (mdia < 5.0 e mdia >= 3.0) ou


reprovado (mdia < 3)

media
(nota1+nota2+nota3)/3;

media >= 5.0?

sim
escreva
(aprovado);

no

media >=
3.0?

no

sim
escreva
(em prova final);

escreva
(reprovado);

fim
20

10

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

algoritmo em pseudocdigo
variveis
media, nota1, nota2, nota3

variveis
media, nota1, nota2, nota3

incio
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) ento
escreva aluno aprovado
seno
se (media >= 3) ento
escreva aluno em prova final
seno
escreva aluno reprovado
fim-se
fim-se
fim

incio
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) ento
escreva aluno aprovado
seno se (media >= 3) ento
escreva aluno em prova final
seno
escreva aluno reprovado
fim-se
fim

21

entrada e
sada
22

11

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

entrada e sada
pseudocdigo
variveis
media, nota1, nota2, nota3
incio
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) ento
escreva aluno aprovado
seno
escreva aluno reprovado
fim-se
fim

23

exerccio

EX. 02

Escreva o pseudocdigo ou desenhe o fluxograma de um


programa que leia do teclado uma temperatura em Fahrenheit e
escreva na tela a temperatura equivalente em Celsius (tempC =
(tempF-32)/1.8).
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
24

12

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

condicionais

25

controle de execuo: condicionais


pseudocdigo

fluxograma

variveis
media, nota1, nota2, nota3
incio
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) ento
escreva aluno aprovado
seno
escreva aluno reprovado
fim-se
fim

se (condio) ento
instruo V1
instruo V2

instruo Vn
seno
instruo F1
instruo F2

instruo Fn
fim-se

instrues
executadas se
a condio for
verdadeira

incio

leia (nota1, nota2,


nota3);

media
(nota1+nota2+nota3)/3;

media >=
5.0?

sim
escreva
(aprovado);

instrues
executadas se
a condio for
falsa

no

escreva
(reprovado);

fim
26

13

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

dvidas?

27

exerccio

EX. 03

Escreva o pseudocdigo ou desenhe o fluxograma de um


programa que leia do teclado a probabilidade de chuva e escreva
na tela sol, caso a probabilidade seja menor que 60%; e chuva,
caso contrrio.
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
28

14

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

condicionais expresses booleanas


uma condio representada por uma expresso booleana, que
resulta em um valor verdadeiro ou falso
exemplos:
media > 5

maior que

media >= 5 maior ou igual a


media < 5

menor que

media <= 5 menor ou igual a


media == 5 igual a
media != 5 diferente de

29

condicionais combinando expresses


se (media < 5 e media >= 3)
escreva (em prova final)
fim

se (nota1 == 10 ou nota2 == 10)


escreva (excelente!)
fim

conjuno (E)
resultado s verdadeiro se
ambos os valores forem
verdadeiros

disjuno (OU)
resultado s falso se ambos
os valores forem falsos

AeB

A ou B

30

15

INF 1005 Programao I - Prof. Hlio Lopes

exerccio

8/7/12

EX. 04

Escreva o pseudocdigo ou desenhe o fluxograma de um


programa que obtm as 3 notas de um aluno, calcula sua mdia e,
caso o aluno tenha sido aprovado, escreva na tela aprovado. O
aluno aprovado se ele teve mdia maior ou igual a 5 e nenhuma
nota menor que 3.
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
31

repeties

32

16

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

controle de execuo: repeties


pseudocdigo
variveis
num, media, nota1, nota2, nota3
incio
leia num
enquanto (num > 0) faa
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
se (media >= 5) ento
escreva aluno aprovado
seno
escreva aluno reprovado
fim-se
num= num 1
fim-enquanto
fim

fluxograma

incio
leia num

no

num > 0?

fim

sim
leia (nota1, nota2,
nota3);

media
(nota1+nota2+nota3)/3;

no

media >= 5.0?

enquanto (condio) faa


instruo V1
instrues executadas

enquanto a condio
for verdadeira
instruo Vn
fim-enquanto
instrues executadas

sim
escreva
(reprovado);

escreva
(aprovado);
num = num - 1

quando a condio
ou se torna falsa

33

exerccio

EX. 05

Qual a sada dos seguintes programas?


variveis
num
incio
num = 0
enquanto (num < 3) faa
escreva num
num= num + 1
fim-enquanto
fim

variveis
num
incio
num = 0
enquanto (num < 3) faa
escreva num
num= num - 1
fim-enquanto
fim

sada

sada

_______________________________

_______________________________

_______________________________

_______________________________

_______________________________

_______________________________

_______________________________

_______________________________


valor
de num a cada iterao
I0

num

I1

I2

I3

I4

I5

valor de num a cada iterao


I6

I7

I8

I0

num

I1

I2

I3

I4

I5

I6

I7

I8
34

17

INF 1005 Programao I - Prof. Hlio Lopes

exerccio

8/7/12

EX. 06

Escreva o pseudocdigo de um programa que l o nmero de


alunos de uma turma e, para cada aluno, l as suas trs notas,
escreve sua mdia e, no final, escreve a mdia da turma.
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
35

exerccio

EX. 06

Escreva o pseudocdigo de um programa que l o nmero de


alunos de uma turma e, para cada aluno, l as suas trs notas,
escreve sua mdia e, no final, escreve a mdia da turma.
variveis
num_alunos, i
media, media_turma, nota1, nota2, nota3
incio
leia num_alunos
i=0
media_turma = 0
enquanto (i < num_alunos) faa
leia nota1, nota2, nota3
media = (nota1+nota2+nota3)/3
media_turma = media_turma + media
i=i+1
fim-enquanto
media_turma = media_turma / num_alunos
escreva media_turma
fim

Em que situaes
este programa falha?

36

18

INF 1005 Programao I - Prof. Hlio Lopes

exerccio

8/7/12

EX. 07

Escreva o pseudocdigo ou desenhe o fluxograma de um


programa que l um nmero no negativo e escreve na tela o seu
fatorial. Lembrando: n! = n x (n-1) x ... x 1
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________
37

exerccio

EX. 07

Escreva o pseudocdigo de um programa que l um nmero no


negativo e escreve na tela o seu fatorial.
Lembrando: n! = n x (n-1) x ... x 1

variveis
f, n
incio
leia n
f=1
enquanto (n > 1) faa
f=f*n
n=n-1
fim-enquanto
escreva f
fim

Em que situao esse


programa falha?

38

19

INF 1005 Programao I - Prof. Hlio Lopes

8/7/12

dvidas?
Prof. Hlio Lopes
lopes@inf.puc-rio.br
sala 408 RDC

39

20

INF 1005 Programao I lista 02


Algoritmos e Pseudocdigo
1. Escreva um algoritmo com o objetivo de matar a fome na rua:
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
2. Dado o objetivo do programa representado abaixo, verifique qual o erro:

objetivo: a partir de trs notas de um aluno,


verificar se ele est:

incio

aprovado (mdia > = 5.0)


leia (nota1, nota2,
nota3);

em prova final (mdia < 5.0 e mdia > = 3.0) ou


reprovado (mdia < 3)

media
(nota1+ nota2+ nota3)/3;

media > =
5.0?

sim
escreva
(aprovado);

no

media >
3.0?

no

sim
escreva
(em prova final);

escreva
(reprovado);

fim

3. Escreva o pseudocdigo ou desenhe o fluxograma de um programa que leia do teclado uma


temperatura em Fahrenheit e escreva na tela a temperatura equivalente em Celsius (tempC =
(tempF-32)/1.8).
4. Escreva o pseudocdigo ou desenhe o fluxograma de um programa que leia do teclado a
probabilidade de chuva e escreva na tela sol, caso a probabilidade seja menor que 60%; e
chuva, caso contrrio.
Hlio Lopes
lopes@inf.puc-rio.br
Departamento de Informtica
Rua Marqus de So Vicente, 225 Gvea 22451-900
Rio de Janeiro RJ Tel. (21) 3527-1500 r.4350 Fax (21) 3527-1530

INF 1005 Programao I lista 02 Algoritmos e Pseudocdigo

5. Escreva o pseudocdigo ou desenhe o fluxograma de um programa que obtm as 3 notas de um


aluno, calcula sua mdia e, caso o aluno tenha sido aprovado, escreva na tela aprovado. O aluno
aprovado se ele teve mdia maior ou igual a 5 e nenhuma nota menor que 3.
6. Qual a sada dos seguintes programas?
variveis
num
incio
num = 0
enquanto (num < 3) faa
escreva num
num= num + 1
fim- enquanto
fim

variveis
num
incio
num = 0
enquanto (num < 3) faa
escreva num
num= num - 1
fim- enquanto
fim

sada

sada

_______________________________

_______________________________

_______________________________

_______________________________

_______________________________

_______________________________

_______________________________

_______________________________

valor de num a cada iterao


I0

num

I1

I2

I3

I4

I5

valor de num a cada iterao


I6

I7

I8

I0

I1

I2

I3

I4

I5

I6

I7

num

7. Escreva o pseudocdigo de um programa que l o nmero de alunos de uma turma e, para cada
aluno, l as suas trs notas, escreve sua mdia e, no final, escreve a mdia da turma.
8. Escreva o pseudocdigo ou desenhe o fluxograma de um programa que l um nmero no
negativo e escreve na tela o seu fatorial. Lembrando: n! = n x (n-1) x ... x 1

Pgina 2 de 2

I8

31

ANEXO B LISTA DE EXERCCIOS 2014


B.1

Lista 1

1) Faa um programa que mostre um carter qualquer digitado pelo usurio. (Depois
altere o cdigo para mostrar um dia da semana qualquer digitado pelo usurio)
2) Escreva um programa que leia 5 nmeros e imprima a soma dos nmeros lidos.
3) Faa um programa que leia a data de nascimento e o ano atual e mostre:
a) a idade da pessoa em anos
b) a idade da pessoa em meses
c) a idade da pessoa em dias
4) Fazer um programa que l um conjunto de 6 valores, um de cada vez, e imprima o valor
lido, seu quadrado, seu cubo e sua raiz quadrada.
5) Tendo como dado de entrada a altura de uma pessoa, faa um programa que calcule e
mostre seu peso ideal, utilizando a seguinte frmula: peso ideal = (72.7*h) 58
6) Faa um programa que receba como entrada uma determinada temperatura em graus
Celsius e mostre a temperatura em fahrenheit. Fahrenheit = (9/5)*(Celsius) + 32
7) Faa programa que l dois pontos e calcula a distncia entre esses pontos.
8) Faa um programa que leia dois valores inteiros e um valor real calcule e mostre:
a) a soma dos dois nmeros inteiros.
b) a soma dos trs nmeros.
c) o resto da diviso do primeiro nmero inteiro pelo segundo nmero inteiro.
d) o quociente da diviso do primeiro nmero inteiro pelo segundo nmero inteiro.
e) o produto dos trs nmeros.
f) a diviso do terceiro nmero pelo segundo nmero inteiro.
9) Dados os comprimentos dos catetos de um tringulo retngulo, preparar um programa
para determinar e imprimir o comprimento da hipotenusa.
10) Faa um programa em Fortran para construir a tabela de multiplicao de nmeros de
1 a 10 (ex.: 1 x 1 = 1, 1 x 2 = 2, etc.). Onde o valor a ser multiplicado ser dado.
11) Faa um programa FORTRAN que receba, para um aluno, trs notas de provas e
quatro de trabalhos, calcule a mdia parcial (ponderada) sabendo que o peso das medias

ANEXO B. LISTA DE EXERCCIOS 2014

32

das provas representa 70% e a mdia dos trabalhos 30%. O programa calcular tambm
a nota mnima para que o aluno passe na prova final, utilizando a frmula apresentada
abaixo. Todos os dados devem ser mostrados.

B.2 Lista 2
1) Elabore um programa para testar se uma senha digitada igual a senha. Se a senha
estiver correta escreva Acesso permitido, do contrario emita a mensagem Voc no tem
acesso ao sistema.
2) Faa um programa que leia 3 nmero inteiro os imprima em ordem crescente
3) Faa um programa que leia os lados de um tringulo retngulo e exiba sua hipotenusa.
Se a hipotenusa for maior que 100 escreva, hipotenusa muito grande, caso contrrio exiba
hipotenusa pequena.
4) Faa um programa que l o nome de um produto, o preo e a quantidade comprada.
Escreva o nome do produto comprado e o valor total a ser pago, considerando que so
oferecidos descontos pelo nmero de unidades compradas, segundo a tabela abaixo:
a) At 10 unidades: valor total
b) De 11 a 20 unidades: 10% de desconto
c) De 21 a 50 unidades: 20% de desconto
d)Acima de 50 unidades: 25% de desconto
5) Faa um programa que leia um nmero inteiro e positivo e mostre uma mensagem
informando se esse nmero par ou impar.
6) Faa um programa que leia o sexo da pessoa (M para masculino e F para feminino),
o peso e a altura e mostre uma mensagem notificando se a pessoa esta acima do peso,
abaixo do peso ou em seu peso ideal utilizando as respectivas frmulas.
peso_ideal_masculino = (72.7h) 58
peso_ideal_f eminino = (62.1h) 44.7
7) Um aluno realizou 3 provas de uma disciplina. Considerando o critrio abaixo, faa um
programa que mostre se ele ficou para exame, se foi aprovado ou se foi reprovado. Se for
para exame, mostrar a nota final e dizer se foi aprovado ou reprovado.
Mdia >=7 - Aprovado
Mdia >= 3 E Media < 7 - Exame
Mdia < 3 - Reprovado
Se for para exame, a nova mdia deve ser:

ANEXO B. LISTA DE EXERCCIOS 2014

33

Final = (media + exame) / 2


Final >= 5 Aprovado
Final < 5 Reprovado
8) Faa uma calculadora que efetue as 4 operaes bsicas. Dever conter um menu onde
liste: 1-Adio 2- Subtrao 3-Diviso 4-Multiplicao
Uma varivel que receba o Cdigo da operao a ser feita
Duas variveis que recebam os valores que devero ser calculados.
Default: Voc escolheu uma operao invlida
9)Leia 5 valores e informe quantos destes so negativos.
10) Leia dois valores inteiros e positivos e verifique se so mltiplos entre si.
11) Crie um programa que receba o valor de x, e calcule e imprima o valor da funo f ,
definida para os casos:

(a) f (x) =

1,
x1
2, 1 < x 2
; (b) f (x) =
x2 , 2 < x 3
x3 ,
x>3

5x+3
x2 16

34

ANEXO C APOSTILA DE FORTRAN


Apostila da disciplina de Fortran do departamento de engenharia mecnica da
UFPR, ministradas pelos professores Carlos Henrique Marchi e professor Luciano Araki.

ANEXO C. APOSTILA DE FORTRAN

C.1 CAP.1 - INTRODUO

35

Captulo 1. INTRODUO

OBJETIVOS DO CAPTULO

Conceitos de: linguagem de programao, FORTRAN, projeto, programa-fonte, programa-objeto,


programa-executvel, compilao, comando

Procedimentos bsicos para programar em linguagem FORTRAN

Comandos do FORTRAN: WRITE e END

1.1 USO DESTE TEXTO EM DISCIPLINAS


O objetivo deste texto ensinar a implementar programas com a linguagem FORTRAN 95 e,
implicitamente, a desenvolver algoritmos para resolver problemas bsicos de matemtica e fsica. Os
captulos 1 a 13 deste texto so recomendados para disciplinas introdutrias de programao em cursos de
engenharia. J os captulos 14 a 20 podem ser usados em cursos avanados de programao em nvel de
graduao.
Cada captulo foi estruturado para ser lecionado em aulas com durao de duas horas. Uma
disciplina de 30 horas vem sendo ministrada no primeiro perodo semestral do curso de graduao em
engenharia mecnica da Universidade Federal do Paran. Esta disciplina envolve os captulos 1 a 13 mais
duas provas. Outra disciplina, envolvendo os captulos 1 a 20, com 45 horas, est prevista para ser
lecionada em nvel de ps-graduao.
1.2 BIBLIOGRAFIA
No objetivo deste texto entrar em detalhes sobre hardware e software de computadores. Aos
interessados nestes aspectos recomenda-se o livro de Ramalho (2000), que adotado neste texto como
referncia para termos tcnicos de informtica em portugus. Dois textos recomendados sobre algoritmos
so o livro de Forbellone e Eberspacher (2000) e a apostila de Moraes (2000). O material apresentado
aqui baseado no livro de Adams et al. (1997), que se constitui num manual completo sobre a linguagem
FORTRAN 95, padronizada pelas organizaes ISO (International Standadrs Organization) e ANSI
(American National Standards Institute).

Captulo 1. Introduo

1.3 FORTRAN
Existe uma infinidade de linguagens de programao, por exemplo, Assembly, Cobol, Visual
Basic, Pascal, Java, C++ etc (Ramalho, 2000, p. 114 e 124-30). Elas so usadas para criar os programas,
tambm denominados de softwares ou aplicativos, que so empregados nos computadores. A utilidade
das linguagens de programao pode ser percebida ao se lembrar para que so usados, por exemplo: os
sistemas operacionais Windows, Unix e Linux; os aplicativos Word, Excel, PowerPoint, FrontPage,
CorelDraw, Origin e Acrobat; os navegadores da internet Netscape e Explorer; e os programas dos caixas
automticos dos bancos.
A linguagem FORTRAN, contrao de FORmula TRANslation (Traduo de Frmulas), ainda a
principal linguagem de programao usada em engenharia e aplicaes cientficas (Adams, 2000, p. 1).
Foi criada em 1954. Sua primeira verso comercial surgiu em 1957. As verses do FORTRAN
padronizadas pela ANSI e ISO so:
1) Ano 1966 = FORTRAN 66
2) Ano 1978 = FORTRAN 77
3) Ano 1992 = FORTRAN 90
4) Ano 1997 = FORTRAN 95
1.4 CONVENES
Para melhor entendimento deste texto, as seguintes convenes so adotadas:
1) So mostrados na cor azul links para endereos de sites da internet ou para arquivos que definem
termos e procedimentos importantes para este texto.
2) Comandos de programas ou aplicativos que devem ser executados ao longo do texto so
mostrados em negrito. A vrgula usada para separar uma seqncia de comandos.
3) So apresentados na cor vermelha: os programas, seus dados (entradas) e seus
resultados (sadas).

4) Qualquer referncia ao sistema operacional Windows NT 4.0 abreviado para Windows.


5) Qualquer referncia ao aplicativo Fortran PowerStation 4.0, da Microsoft, abreviado para Fortran.
6) Qualquer referncia linguagem FORTRAN abreviado para FORTRAN, tudo em maisculo para
distinguir do aplicativo Fortran PowerStation 4.0.
7) Devido grande quantidade de termos em ingls, no feito qualquer distino para palavras em
portugus.
8) Comandos, isto , palavras-chave da linguagem FORTRAN so apresentados em letras maisculas.

Captulo 1. Introduo

1.5 INICIALIZAO DO APLICATIVO FORTRAN POWERSTATION 4.0


Para seguir este texto, no necessrio nenhum conhecimento anterior sobre linguagem de
programao. necessrio apenas ter conhecimentos bsicos sobre o sistema operacional Windows NT
4.0 ou verses mais recentes. Todos os programas em FORTRAN apresentados neste texto foram
editados e compilados com o aplicativo Fortran PowerStation 4.0, da Microsoft. Alm de seus manuais,
este aplicativo contm o livro de Hahn (1994) sobre FORTRAN 90 e o item Reference onde so descritos
todos os comandos do FORTRAN, incluindo exemplos.
Conforme mostrado na Figura 1.1, para iniciar o uso deste aplicativo, deve-se executar no
Windows: Start, Programs, Fortran PowerStation 4.0, Microsoft Developer Studio. Para facilitar a
edio dos programas, recomenda-se maximizar a janela principal do Fortran, clicando sobre o cone
central que fica no canto superior direito. Fazendo isso, o aspecto do Fortran dever ser semelhante
quele mostrado na Figura 1.2.

Figura 1.1 Inicializao do aplicativo Fortran PowerStation 4.0.


Na janela principal do Fortran, mostrada na Figura 1.2, pode-se perceber:

Captulo 1. Introduo

Figura 1.2 Janela principal do aplicativo Fortran PowerStation 4.0.


1) Na barra em azul, o cone do Fortran e o ttulo da janela principal: Microsoft Developer Studio.
2) Abaixo da barra em azul, o menu do Fortran, ou seja, as opes existentes para usar este aplicativo,
que so: File, Edit, View, Insert, Build, Tools, Window e Help.
3) A janela principal do Fortran dividida em trs partes ou subjanelas. Se no estiver aparecendo a
subjanela inferior, mostrada na Figura 1.2, deve-se executar: View, Output.
4) Na subjanela do lado esquerdo, tem-se o diretrio principal dos manuais do Fortran, destacando-se:
Reference, que uma lista de comandos do FORTRAN 90, incluindo explicaes e exemplos de uso;
e Fortran 90 for Scientists and Engineers, que um livro sobre a linguagem FORTRAN 90. Esta
subjanela tambm usada para mostrar os nomes dos programas editados na linguagem FORTRAN.
Quando um programa estiver sendo editado, para acessar os manuais, deve-se clicar sobre a opo ?
InfoView, mostrada na Figura 1.2, que fica na parte inferior da subjanela do lado esquerdo. E para
voltar ao programa que est sendo editado, basta clicar sobre a opo FileView.
5) Na subjanela inferior so apresentadas informaes sobre erros de programao e compilao.
Detalhes sero vistos no captulo 2.
6) A subjanela do lado direito, a maior das trs, usada para: apresentar o contedo dos manuais e para a
edio de programas em FORTRAN.

Captulo 1. Introduo

1.6 CRIAO DE UM PROJETO DO TIPO CONSOLE APPLICATION


O Fortran organiza todos os arquivos de um programa numa entidade chamada projeto. Em termos
prticos, a criao de um projeto resulta na criao de uma pasta ou diretrio dentro do Windows.
Existem diversos tipos de projetos que podem ser criados com o Fortran. A escolha do tipo depende da
finalidade do programa e dos recursos do Windows que se deseja empregar. No caso deste texto, em sua
parte bsica, que compreende os captulos 1 a 13, so empregados apenas projetos do tipo Console
Application. E na parte avanada, que corresponde aos captulos 14 a 20, so usados projetos do tipo
QuickWin Application, que permite utilizar diversos recursos do Windows.
Para criar um projeto do tipo Console Application, devem ser executados os seguintes passos:
1) No menu do Fortran, conforme mostrado na Figura 1.3: File, New.

Figura 1.3 Incio da criao de um projeto no Fortran.


2) Na janela New, mostrada na Figura 1.4, clicar sobre a opo Project Workspace. Depois, clicar
sobre o boto OK.
3) Na janela New Project Workspace, mostrada na Figura 1.5, necessrio executar o que segue:

Captulo 1. Introduo

Figura 1.4 Segundo passo na criao de um projeto no Fortran.

Figura 1.5 Janela para definio do tipo, diretrio e nome do projeto.


a) Entre os seis tipos de projetos apresentados na opo Type, clicar sobre Console Application no
caso deste tipo de projeto no estar selecionado (realado em azul).
b) Na opo Location estar indicado um diretrio (pasta) default, ou seja, um diretrio escolhido
pelo prprio Fortran em funo de sua configurao atual. possvel que no seja o diretrio
desejado. Neste caso, deve-se clicar sobre o boto Browse para indicar o diretrio onde se quer
criar o projeto. Ao se fazer isso, surgir a janela Choose Directory mostrada na Figura 1.6, na qual
deve-se executar:
Na opo Drives, clicando sobre o tringulo invertido, escolher C:
Na opo Directory name, digitar C:\MSDEV\Projects, conforme mostrado na Figura 1.7.
Clicar sobre o boto OK.
c) Estar de volta a janela New Project Workspace, mostrada na Figura 1.5. Clicar dentro do espao
de edio da opo Name. Escrever o nome do projeto, por exemplo, programa01. Depois disso,
a janela New Project Workspace dever ficar conforme a Figura 1.8. Deve-se perceber que o
nome do projeto, digitado na opo Name, aparece automaticamente na opo Location. Em

Captulo 1. Introduo

seguida, deve-se clicar sobre o boto Create. Aps isso, o Fortran criar um diretrio com o nome
do projeto indicado, dentro do diretrio j selecionado, conforme mostrado na Figura 1.9.

Figura 1.6 Definio do drive do projeto.

Figura 1.7 Definio do diretrio para criao do projeto.

Figura 1.8 Tipo, nome e diretrio do projeto j definidos.


Captulo 1. Introduo

Figura 1.9 Fortran com o nome do diretrio criado para o projeto especificado.
1.7 CRIAO E INSERO DO PROGRAMA-FONTE DENTRO DO PROJETO
O processo de edio ou criao de um programa semelhante redao de uma carta com o
aplicativo Word, que um editor de textos. So necessrios dois componentes: um editor de textos para
escrever o programa computacional e um arquivo para guardar o texto no hard disk (HD) do computador.
No caso dos programas computacionais, a carta chamada de programa-fonte e pode ser aberta, editada
ou redigida dentro do Fortran ou em qualquer outro editor de textos. Ao longo deste texto, as palavras
edio, digitao e implementao sero usadas como sinnimos. Para iniciar a edio ou escrita de um
programa-fonte em linguagem FORTRAN necessrio criar e inserir um arquivo dentro do projeto. Isso
feito atravs dos seguintes passos:
1) No menu do Fortran, conforme mostrado na Figura 1.10, executar: Insert, Files into Project
2) Na janela Insert Files into Project, mostrada na Figura 1.11, executar o seguinte:
a) Na opo File Name, digitar o nome do programa-fonte a ser criado; por exemplo, como mostrado
na Figura 1.12, programa01.f90
Sempre deve-se usar f90 como extenso dos nomes dos arquivos do tipo programa-fonte. Ele
indica que o programa est ou ser escrito na linguagem FORTRAN 90 ou 95.
b) Clicar sobre o boto OK
Captulo 1. Introduo

Figura 1.10 Incio da criao do programa-fonte.

Figura 1.11 Janela para definio do nome do programa-fonte a inserir no projeto.


3) Na janela Microsoft Developer Studio, mostrada na Figura 1.13, clicar sobre o boto Yes
4) Na subjanela do lado esquerdo do Fortran, clicar sobre o sinal + ao lado do nome do projeto; dever
aparecer o nome do programa-fonte que foi inserido no projeto; no caso, programa01.f90
Captulo 1. Introduo

5) Clicar rapidamente duas vezes sobre o nome do programa-fonte que foi inserido
6) Na janela Microsoft Developer Studio, mostrada na Figura 1.14, clicar sobre o boto Yes
7) O programa-fonte inserido no projeto j est pronto para ser editado na subjanela do lado direito do
Fortran, conforme mostrado na Figura 1.15.

Figura 1.12 Nome do programa-fonte j definido.

Figura 1.13.

Figura 1.14.

Captulo 1. Introduo

10

Figura 1.15 Fortran pronto para edio do programa-fonte.


1.8 EDIO DO PROGRAMA-FONTE
Aps a criao e insero do programa-fonte dentro do projeto, o Fortran est pronto para ser
usado na edio do programa-fonte, conforme mostrado na Figura 1.15. Um exemplo de edio de
programa-fonte apresentado a seguir.
1) Dentro do espao de edio do Fortran, na subjanela maior, copiar exatamente o texto mostrado
abaixo em vermelho (para aparecerem as aspas, deve-se clicar sobre a tecla delas e, em seguida, clicar
sobre a tecla de espao em branco).
WRITE(*,*) "Meu primeiro programa em FORTRAN"
WRITE(*,*) "Ano 2004"
END

2) Para gravar ou salvar este texto, no menu do Fortran, executar: File, Save. Em seguida, na
extremidade inferior da janela principal do Fortran, surgir uma mensagem informando o diretrio e o
nome do programa-fonte que foi gravado ou salvo, como mostrado na Figura 1.16.
3) Comentrios sobre este programa:

Captulo 1. Introduo

11

a) Dentro do editor de textos do Fortran, os comandos da linguagem FORTRAN so mostrados na


cor azul, conforme pode ser visto na Figura 1.16. E o que criado ou definido pelo programador
mostrado na cor preta. Comandos so palavras-chave que tm uma funo especfica e devem ser
usados exatamente de acordo com suas normas.
b) Existem dezenas de comandos na linguagem FORTRAN. No caso do primeiro programa-fonte,
mostrado na Figura 1.16, so usados apenas dois comandos: WRITE e END.
c) Como ser visto aps a execuo deste programa, ele simplesmente ir mostrar numa janela duas
linhas de texto: na primeira, Meu primeiro programa em Fortran; e, na segunda, Ano 2004. Isso
conseguido com o comando WRITE. Qualquer texto colocado entre aspas aps o comando
WRITE(*,*) escrito numa janela.
d) O comando END necessrio para indicar o fim do programa.

Figura 1.16 Programa-fonte escrito na linguagem FORTRAN.


1.9 COMPILAO E GERAO DO PROGRAMA-OBJETO
Aps concluir a edio de um programa-fonte, ele deve ser compilado. O processo de compilao
traduz o programa-fonte (que um arquivo do tipo texto, isto , que as pessoas conseguem ler
naturalmente, como o programa01.f90) no chamado programa-objeto, que um arquivo do tipo binrio
Captulo 1. Introduo

12

(escrito na linguagem dos computadores, usando apenas os algarismos zero-0 e um-1). Uma linguagem de
programao de alto nvel (Ramalho, 2000) como o FORTRAN se constitui numa forma amigvel ou
relativamente fcil de se escrever programas. O aplicativo Fortran PowerStation 4.0, alm do editor de
programas, tambm tem junto um compilador de programas. Para compilar um programa-fonte que est
aberto no editor de textos do Fortran, deve-se executar o seguinte no menu do Fortran: Build, Compile
Aps a compilao, conforme mostrado na Figura 1.17, aparecero trs linhas com mensagens
na subjanela da parte inferior do Fortran:
1) A primeira informa que o Fortran est compilando (Compiling) o programa-fonte.
2) A segunda informa o nome e o diretrio do programa-fonte que est sendo compilado.
3) Finalmente, a terceira informa o nome do programa-objeto (no caso, programa01.obj) que foi gerado
e o nmero de erros (errors) e de avisos (warnings) relativos ao programa-fonte compilado. Se houver
algum erro, o programa-objeto no gerado. Avisos no impedem a gerao do programa-objeto. O
nome do programa-objeto igual ao nome do programa-fonte mas com extenso obj

Figura 1.17 Compilao do programa-fonte.


A compilao cria automaticamente um subdiretrio chamado Debug dentro do diretrio do
projeto. Dentro deste subdiretrio que se encontra o programa-objeto bem como outros arquivos
auxiliares. Pode-se ver isso com o aplicativo Windows NT Explorer, que acessado executando o
Captulo 1. Introduo

13

seguinte no Windows: Start, Programs, Windows NT Explorer. Depois, deve-se acessar o diretrio do
projeto, que deve estar dentro do diretrio C:\Msdev\Projects
1.10 GERAO DO PROGRAMA-EXECUTVEL
Aps o processo de compilao, necessrio gerar o programa-executvel, que um arquivo
possvel de ser executado ou rodado pelo computador, como qualquer outro programa ou aplicativo;
por exemplo, os aplicativos Word, Excel, PowerPoint, FrontPage, CorelDraw, Acrobat, e o navegador
Internet Explorer. O programa-executvel resulta da unio do programa-objeto, que foi gerado na
compilao do programa-fonte, com outros programas-objeto da prpria linguagem FORTRAN, que
contm a traduo dos comandos do FORTRAN, como o WRITE e END usados no primeiro programafonte (Figura 1.17).
Para gerar o programa-executvel, deve-se fazer o seguinte no menu do Fortran: Build, Build. Em
seguida, conforme mostrado na Figura 1.18, aparecero duas linhas com mensagens na subjanela da
parte inferior do Fortran:

Figura 1.18 Gerao do programa-executvel.

Captulo 1. Introduo

14

1) A primeira informa que o Fortran est gerando o programa-executvel, processo chamado de


lincagem (linking).
2) A segunda informa o nome do programa-executvel (no caso, programa01.exe) que foi gerado e o
nmero de erros (errors) e de avisos (warnings) relacionados a ele. O nome do programa-executvel
igual ao nome do projeto mas com extenso exe
O programa-executvel gravado automaticamente dentro do subdiretrio Debug, que fica dentro
do diretrio do projeto, alm de outros arquivos auxiliares. Isso pode ser visto com o aplicativo Windows
NT Explorer, como mostrado na Figura 1.19. Note nesta figura que no Windows NT Explorer a extenso
ou Type do programa-executvel aparece como Application.

Figura 1.19 Diretrio do projeto programa01 e seu subdiretrio Debug.


1.11 EXECUO DO PROGRAMA
Aps gerar o programa-executvel, para execut-lo ou rod-lo, isto , para coloc-lo em
funcionamento, basta fazer o seguinte no menu do Fortran: Build, Execute. Como resultado deste
comando, deve ocorrer o seguinte:
1) Aparecer uma janela do tipo DOS, conforme a Figura 1.20. Isso ocorre porque na seo 1.6 foi criado
um projeto do tipo Console Application.
Captulo 1. Introduo

15

2) No ttulo desta janela, com fundo em azul, aparece o nome do programa que est sendo executado e o
diretrio no qual ele se encontra, no caso C:\MSDEV\Projects\programa01\Debug\programa01.exe
3) Dentro desta janela, com fundo em preto, aparece o resultado da execuo do programa. No caso, as
frases Meu primeiro programa em Fortran e Ano 2004. A ordem das duas frases a mesma em que
elas foram colocadas no programa-fonte. Isso ocorre, porque o programa executado do topo para
baixo, linha por linha do programa-fonte.
4) Alm disso, tambm aparece a frase Press any key to continue. Como diz este aviso, basta clicar em
qualquer tecla para continuar. Ao fazer isso, a execuo do programa encerrada.

Figura 1.20 Resultado da execuo do programa01.


1.12 FIM DA SESSO
Para concluir o uso do Fortran e do Windows, deve-se executar o seguinte:
1) Para encerrar as atividades com um projeto, basta executar no menu do Fortran: File, Close
Workspace
2) Na janela Microsoft Developer Studio, clicar sobre o boto Yes
3) Para fechar o aplicativo Fortran, basta fazer o seguinte em seu menu: File, Exit
4) Para fechar o Windows, executar: Start, Shut Down
5) Na janela Shut Down Windows, escolher a opo Close all programs and log on as a different
user?. Clicar sobre o boto Yes

Captulo 1. Introduo

16

1.13 EXERCIOS
Exerccio 1.1
1) Editar um programa-fonte em FORTRAN para escrever a data atual.
2) Compilar o programa-fonte
3) Gerar o programa-executvel
4) Executar o programa
Exerccio 1.2
1) Repetir o exerccio 1.1 para escrever em linhas diferentes cada um dos seguintes itens: nome, e-mail,
endereo e telefone de uma pessoa.

Captulo 1. Introduo

17

ANEXO C. APOSTILA DE FORTRAN

C.2 CAP.2 - VARIVEIS DO TIPO INTEIRO

53

Captulo 2. VARIVEIS DO TIPO INTEIRO

OBJETIVOS DO CAPTULO

Conceitos de: variveis do tipo inteiro, atribuio, avisos e erros de compilao, erros de execuo,
comentrios dentro do programa-fonte

Operadores matemticos bsicos

Comandos do FORTRAN: INTEGER e READ

2.1 programa02.f90, verso A


Para inicializar as atividades deste captulo, deve-se executar:
1) No Windows, seguindo o procedimento apresentado na seo 1.5 do captulo 1: Start, Programs,
Fortran PowerStation 4.0, Microsoft Developer Studio
2) No Fortran, seguindo o procedimento apresentado na seo 1.6 do captulo 1, criar um projeto do tipo
Console Application com o nome programa02 no diretrio Z:\\SERVER1\Alunos2004_1\login,
onde login deve ser substitudo pelo user name do usurio, isto , a conta particular na rede Windows
do DEMEC/UFPR.
3) No Fortran, seguindo o procedimento apresentado na seo 1.7 do captulo 1, criar e inserir no projeto
o programa-fonte programa02.f90
4) Conforme mostrado na Figura 2.1, dentro do espao de edio do Fortran, na subjanela maior,
copiar exatamente o texto mostrado abaixo em vermelho.
INTEGER A
WRITE(*,*) "A"
WRITE(*,*) A
END

5) Comentrios sobre o programa:


a) No captulo 1 foram usados os comandos WRITE e END da linguagem FORTRAN. No
programa02.f90, h um novo comando: INTEGER. Ele usado para definir variveis do tipo
inteiro, isto , variveis que podem guardar ou armazenar na memria do computador nmeros
inteiros, positivos ou negativos, como 2, 5, 0, 54367 ou 3.
b) A linha INTEGER A define a varivel A como sendo do tipo inteiro. Este comando reserva um
espao na memria do computador, utilizando o nome ou rtulo A para armazenar um valor
inteiro.
Captulo 2. Variveis do tipo inteiro

18

c) A linha WRITE(*,*) "A" escreve o comentrio que est entre aspas; no caso a letra A.
d) A linha WRITE(*,*) A escreve o valor da varivel A que est armazenado na memria do
computador.
e) A linha END encerra o programa.
6) Ao se compilar o programa, executando Build, Compile, o resultado deve ser o mostrado na Figura
2.1. Deve-se notar na subjanela inferior um aviso (warning) mencionando que o valor da varivel A
no foi definido.
7) Gerar o programa-executvel fazendo Build, Build.

Figura 2.1 Resultado da compilao do programa02.f90, verso A.


8) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 2.2,
dentro da qual tem-se:
a) Na primeira linha, a letra A, resultado do comando WRITE(*,*) "A" do programa.
b) Na segunda linha, o valor zero, resultado do comando WRITE(*,*) A do programa. Isso ocorre
porque no foi definido um valor para a varivel A, conforme o prprio Fortran informou durante
a compilao do programa. Portanto, sempre necessrio definir o valor de cada varivel do
programa, caso contrrio, por default, assume-se valor nulo.
c) E na terceira linha, a frase Press any key to continue. Como diz este aviso, basta clicar em
qualquer tecla para continuar. Ao se fazer isso, a execuo do programa encerrada.
9) Deve-se perceber a diferena que existe entre os comandos WRITE(*,*) "A" e WRITE(*,*) A do
programa. No primeiro, A um comentrio. No segundo, A uma varivel utilizada para armazenar
um valor inteiro na memria do computador.

Captulo 2. Variveis do tipo inteiro

19

Figura 2.2 Resultado da execuo do programa02.f90, verso A.


2.2 programa02.f90, verso B
1) Dentro do Fortran, editar exatamente o texto mostrado abaixo em vermelho.
INTEGER A
A = 3
WRITE(*,*) "A"
WRITE(*,*) A
END

2) Comentrios sobre o programa: a nica diferena entre a verso anterior (A) e a atual (B) do
programa02.f90 a incluso da segunda linha, ou seja, A = 3. O sinal de igualdade dentro de um
programa escrito em linguagem FORTRAN utilizado para atribuir o valor que est do lado direito
varivel do lado esquerdo. Portanto, neste caso, o valor 3 atribudo varivel A. Em outras palavras,
o valor 3 armazenado num espao da memria do computador que identificado pelo nome ou
rtulo A, o nome da varivel. Este valor utilizado (3) apenas um exemplo; ele pode ser qualquer
nmero inteiro.
3) Nesta verso do programa, ao se executar Build, Compile, no haver aviso (warning) porque, neste
caso, o valor da varivel A est definido.
4) Gerar o programa-executvel fazendo Build, Build.
5) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 2.3,
dentro da qual tem-se:
a) Na primeira linha, a letra A, resultado do comando WRITE(*,*) "A" do programa.
b) Na segunda linha, o valor 3, resultado do comando WRITE(*,*) A do programa e do comando
anterior, A = 3.
c) E na terceira linha, a frase Press any key to continue.
6) Deve-se perceber que o programa executado, linha por linha, da primeira (INTEGER A) at a ltima
(END).
7) Um exemplo de erro de compilao apresentado na Figura 2.4. Ele ocorre devido eliminao do
segundo asterisco da terceira linha do programa. Erros de compilao ocorrem quando os comandos
Captulo 2. Variveis do tipo inteiro

20

do FORTRAN so utilizados de forma incorreta. Na subjanela inferior do Fortran, geralmente haver


um comentrio indicando cada erro (error). Logo aps o nome do programa-fonte compilado, entre
parnteses, indicado o nmero da linha do programa-fonte aonde deve estar o erro. No exemplo da
Figura

2.4,

compilador

do

Fortran

mostra

seguinte

comentrio:

C:\marchi\programa02\programa02b.f90(3): error FOR3852: syntax error detected between , and ).


Portanto, este comentrio indica que na linha 3 h um erro de sintaxe (erro que resulta do uso
incorreto de um comando, no caso o WRITE) entre a vrgula e o sinal de fechamento de parnteses.
8) As linhas do programa-fonte so numeradas do topo para baixo, e as colunas, da esquerda para a
direita. Na extremidade inferior da janela principal do Fortran, do lado direito, sempre so indicados a
linha (Ln) e a coluna (Col) aonde o cursor se encontra dentro do programa-fonte.

Figura 2.3 Resultado da execuo do programa02.f90, verso B.

Figura 2.4 Exemplo de erro de compilao.


2.3 programa02.f90, verso C
1) Dentro do Fortran, editar exatamente o texto mostrado abaixo em vermelho.
INTEGER A
A = 3
WRITE(*,*) "Valor de A = ", A

Captulo 2. Variveis do tipo inteiro

21

END

2) Comentrios sobre o programa: a diferena bsica entre a verso anterior (B) e a atual (C) do
programa02.f90 a juno dos dois comandos WRITE num s, na terceira linha do programa, isto ,
WRITE(*,*) "Valor de A = ", A. Esta forma do comando WRITE usada quando se quer

escrever na mesma linha diversos elementos. No caso, so apenas dois elementos, ou seja, o
comentrio Valor de A = e a varivel A. Os elementos devem ser separados por vrgula.
3) Executar Build, Compile para compilar o programa.
4) Gerar o programa-executvel fazendo Build, Build.
5) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 2.5,
dentro da qual tem-se:
a) Na primeira linha, como resultado do comando WRITE(*,*) "Valor de A = ", A do programa,
o comentrio Valor de A = e, na mesma linha, o valor da varivel A, cujo valor atribudo dentro
do programa foi 3.
b) E na segunda linha, a frase Press any key to continue.

Figura 2.5 Resultado da execuo do programa02.f90, verso C.


2.4 programa02.f90, verso D
1) Dentro do Fortran, editar exatamente o texto mostrado abaixo em vermelho.
INTEGER A
A = 4
A = 3
WRITE(*,*) "Valor de A = ", A
END

2) Comentrios sobre o programa: a nica diferena entre a verso anterior (C) e a atual (D) do
programa02.f90 a incluso da linha A = 4, que atribui o valor 4 varivel A.
3) Executar Build, Compile para compilar o programa.
4) Gerar o programa-executvel fazendo Build, Build.

Captulo 2. Variveis do tipo inteiro

22

5) Ao se executar o programa, atravs de Build, Execute, o resultado o mesmo mostrado na Figura


2.5. Isso ocorre porque o programa executado, linha por linha, da primeira (INTEGER A) at a ltima
(END). Assim, embora tenha sido atribudo o valor 4 varivel A na segunda linha do programa, na
linha seguinte atribui-se o valor 3 mesma varivel, e, na quarta linha do programa, escreve-se o
valor de A. O valor escrito 3 porque o ltimo valor que foi armazenado na memria do
computador. A denominao varivel usada justamente porque seu valor pode ser alterado ao longo
da execuo do programa.
2.5 programa02.f90, verso E
1) Dentro do Fortran, editar exatamente o texto mostrado abaixo em vermelho, incluindo a linha em
branco.
! Programa02.f90
INTEGER A
A = 3 ! atribui o valor 3 varivel A
WRITE(*,*) "Valor de A = ", A
END

2) Comentrios sobre o programa: em cada linha do programa-fonte, tudo que estiver direita do
smbolo ! (exclamao) no executado pelo programa. So apenas comentrios usados para
esclarecer o que faz cada parte do programa. Isso chamado de documentao interna. Dentro do
editor do Fortran, todos os comentrios ficam na cor verde, como mostrado na Figura 2.6. Um
comentrio pode envolver uma linha inteira do programa, como na primeira da verso E, ou apenas
uma parte, como na quarta linha do programa. Linhas em branco dentro do programa-fonte tambm
no so executadas. Elas equivalem a um comentrio em branco. Um exemplo a terceira linha do
programa02.f90, verso E, na Figura 2.6.
3) Executar Build, Compile para compilar o programa.
4) Gerar o programa-executvel fazendo Build, Build.
5) Ao se executar o programa, atravs de Build, Execute, o resultado o mesmo mostrado na Figura
2.5. Isso ocorre porque as diferenas entre a verso C e a atual (E) do programa02.f90 so apenas os
comentrios e uma linha em branco, que no so executados pelo programa.
6) Para maior clareza e facilidade de compreenso do programa-fonte, recomenda-se que dentro dele
sejam usados comentrios e linhas em branco.

Captulo 2. Variveis do tipo inteiro

23

Figura 2.6 Programa02.f90, verso E.


2.6 programa03.f90, verso A
Para inicializar as atividades com o prximo programa, deve-se executar:
1) No Fortran, para fechar o projeto atual: File, Close Workspace
2) Na janela Microsoft Developer Studio, clicar sobre o boto Yes
3) No Fortran, seguindo o procedimento apresentado na seo 1.6 do captulo 1, criar um projeto do tipo
Console Application com o nome programa03 no diretrio Z:\\SERVER1\Alunos2004_1\login,
onde login deve ser substitudo pelo user name do usurio, isto , a conta particular na rede Windows
do DEMEC/UFPR.
4) No Fortran, seguindo o procedimento apresentado na seo 1.7 do captulo 1, criar e inserir no projeto
o programa-fonte programa03.f90
5) Dentro do Fortran, editar exatamente o texto mostrado abaixo em vermelho, incluindo as linhas em
branco.
INTEGER A, B, C, D, E, F, G
A = -6
B = 2
C = A + B
D = B - A
Captulo 2. Variveis do tipo inteiro

24

E = A * B
F = A / B
G = A ** B
WRITE(*,*) "A = ", A
WRITE(*,*) "B = ", B
WRITE(*,*) "A + B = ", C
WRITE(*,*) "B - A = ", D
WRITE(*,*) "A * B = ", E
WRITE(*,*) "A / B = ", F
WRITE(*,*) "A ** B = ", G
END

6) Comentrios sobre o programa:


a) A linha INTEGER A, B, C, D, E, F, G define as variveis A, B, C, D, E, F e G como sendo do
tipo inteiro. Este comando reserva espao na memria do computador para diversas variveis com
apenas um comando INTEGER. Entretanto, as variveis devem estar separadas por vrgula.
b) As linhas A = -6 e B = 2 atribuem os valores inteiros 6 e 2 s variveis A e B. Estes valores so
apenas exemplos; eles podem ser quaisquer nmeros inteiros.
c) As variveis C, D, E, F e G so calculadas em funo dos valores das variveis A e B, usando os
cinco operadores matemticos bsicos definidos na Tabela 2.1, conforme explicado a seguir.
Tabela 2.1 Operadores matemticos bsicos em FORTRAN.
Smbolo do operador

Nome do smbolo

matemtico em FORTRAN

Operao matemtica
correspondente

Sinal mais

Adio

Sinal menos

Subtrao

Asterisco

Multiplicao

Barra

Diviso

**

Duplo asterisco

Potenciao

d) A linha C = A + B adiciona os valores das variveis A e B e atribui o resultado varivel C.


e) A linha D = B - A subtrai o valor da varivel A do valor da varivel B e atribui o resultado
varivel D.
f) A linha E = A * B multiplica os valores das variveis A e B e atribui o resultado varivel E.
g) A linha F = A / B divide o valor da varivel A pelo valor da varivel B e atribui o resultado
varivel F.
Captulo 2. Variveis do tipo inteiro

25

h) A linha G = A ** B eleva o valor da varivel A ao valor da varivel B e atribui o resultado


varivel G.
7) Executar Build, Compile para compilar o programa.
8) Gerar o programa-executvel fazendo Build, Build.
9) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 2.7,
dentro da qual tem-se: os valores das variveis A e B; e os valores resultantes das cinco operaes
matemticas bsicas da Tabela 2.1 efetuadas com as variveis A e B. Analisar cada resultado,
comparando-o com o valor esperado obtido de um clculo mental.
10) Dentro do programa-fonte, fazer A = 1 e B = 2. Compilar e gerar o executvel do programa com
esta alterao. Executar o programa cujo resultado deve ser aquele mostrado na Figura 2.8.
Analisar cada resultado, comparando-o com o valor esperado obtido de um clculo mental. O
resultado da diviso pode parecer incorreto mas no . Isso se deve ao seguinte: o valor que resulta de
um clculo envolvendo dois nmeros inteiros tambm um nmero inteiro, que corresponde parte
inteira do nmero real equivalente ao clculo realizado. Portanto, o resultado de 1 dividido por 2
resulta em 0,5, que um nmero real. Mas como o clculo envolve dois nmeros inteiros, a parte
inteira do nmero real 0,5 0, que o resultado da diviso mostrado na Figura 2.8. Este tema ser
explorado com mais detalhes no Captulo 3.

Figura 2.7 Resultado da execuo do programa03.f90, verso A, com A = 6 e B = 2.

Figura 2.8 Resultado da execuo do programa03.f90, verso A, com A = 1 e B = 2.

Captulo 2. Variveis do tipo inteiro

26

11) Atribuir valores s variveis dentro do prprio programa-fonte no recomendvel. Pois, para alterar
os valores, necessrio ter o programa-fonte, alm de recompil-lo e gerar o programa-executvel a
cada vez. O procedimento mais indicado utilizar o comando READ, apresentado na prxima seo.
2.7 programa03.f90, verso B
1) Dentro do Fortran, alterar o programa03.f90, verso A, para que fique exatamente igual ao texto
mostrado abaixo em vermelho, incluindo as linhas em branco.
INTEGER A, B, C, D, E, F, G
WRITE(*,*) "Entre com o valor de A"
READ(*,*) A
WRITE(*,*) "Entre com o valor de B"
READ(*,*) B
C = A + B
D = B - A
E = A * B
F = A / B
G = A ** B
WRITE(*,*) "A = ", A
WRITE(*,*) "B = ", B
WRITE(*,*) "A + B = ", C
WRITE(*,*) "B - A = ", D
WRITE(*,*) "A * B = ", E
WRITE(*,*) "A / B = ", F
WRITE(*,*) "A ** B = ", G
END

2) Comentrios sobre o programa:


a) A nica diferena entre a verso anterior (A) e a atual (B) do programa03.f90 est no nicio do
programa. a incluso de 4 linhas novas no lugar de se atribuir valores s variveis A e B.
b) At aqui, os comandos da linguagem FORTRAN que foram usados so: WRITE, END e
INTEGER. Na verso B do programa03.f90, h um novo comando: READ. Ele usado para
atribuir (fornecer) valores s variveis durante a execuo de um programa. Isto , o comando
READ empregado para LER os dados de um programa.
Captulo 2. Variveis do tipo inteiro

27

c) A linha WRITE(*,*) "Entre com o valor de A" escreve o comentrio que est entre aspas.
d) A linha READ(*,*) A l um valor digitado dentro da janela DOS, aberta durante a execuo do
programa, e o atribui varivel A.
3) Executar Build, Compile para compilar o programa.
4) Gerar o programa-executvel fazendo Build, Build.
5) Ao se executar o programa, atravs de Build, Execute, surge uma janela do tipo DOS dentro da qual
tem-se:
a) Na primeira linha, o comentrio Entre com o valor de A, resultado do comando WRITE(*,*)
"Entre com o valor de A" do programa.

b) Na segunda linha, o programa pra e fica aguardando que seja fornecido o valor da varivel A,
resultado do comando READ(*,*) A do programa. Para que o programa continue sua execuo
necessrio digitar o valor 6 para a varivel A e, em seguida, clicar na tecla enter.
c) Na terceira linha, o comentrio Entre com o valor de B, resultado do comando WRITE(*,*)
"Entre com o valor de B" do programa.

d) Na quarta linha, o programa pra e fica aguardando que seja fornecido o valor da varivel B,
resultado do comando READ(*,*) B do programa. Para que o programa continue sua execuo
necessrio digitar o valor 2 para a varivel B e, em seguida, clicar na tecla enter.
e) Em seguida, so apresentados os mesmos resultados da verso A do programa03.f90, conforme a
Figura 2.9.

Figura 2.9 Resultado da execuo do programa03.f90, verso B, com A = 6 e B = 2.


6) Executar novamente o programa, entrando com outros valores para A e B. Em seguida, analisar
cada resultado, comparando-o com o valor esperado obtido de um clculo mental.
7) Executar novamente o programa, com A = 6 e B = 0. Nenhum resultado apresentado porque o
programa no consegue dividir 6 por 0. Isso gera um erro que interrompe a execuo normal do
programa. Ao se implementar um programa, deve-se prepar-lo para que seja evitado qualquer

Captulo 2. Variveis do tipo inteiro

28

diviso por zero. Isso pode ser feito atravs de comentrios que informem ao usurio do programa, na
janela da execuo do programa ou no manual do programa, por exemplo, quais as variveis que no
podem ter valor nulo. Outra forma mais efetiva de evitar diviso por zero ser vista em captulo
futuro.
2.8 FIM DA SESSO
Para concluir o uso do Fortran e do Windows, deve-se executar o seguinte:
1) Para encerrar as atividades com um projeto, basta executar no menu do Fortran: File, Close
Workspace
2) Na janela Microsoft Developer Studio, clicar sobre o boto Yes
3) Para fechar o aplicativo Fortran, basta fazer o seguinte em seu menu: File, Exit
4) Para fechar o Windows, executar: Start, Shut Down
5) Na janela Shut Down Windows, escolher a opo Close all programs and log on as a different
user?. Clicar sobre o boto Yes
2.9 EXERCIOS
Exerccio 2.1
Executar novamente o programa03.f90, verso B, com A = 2 e B = 1. Em seguida, analisar cada
resultado, comparando-o com o valor esperado obtido de um clculo mental, especialmente o caso da
potenciao. No Fortran, para abrir um projeto j existente, como o programa03, basta executar File,
Open Workspace. Em seguida, indicar o diretrio do projeto e selecionar o arquivo que tem o nome
do projeto e extenso mdp, no caso programa03.mdp
Exerccio 2.2
Executar novamente o programa03.f90, verso B, usando nmeros reais, isto , A = 1.5 e B = 0.4.
Nmeros reais so representados com o sinal de ponto para separar a parte inteira da decimal.
Exerccio 2.3
1) Editar um programa-fonte em FORTRAN para executar o seguinte algoritmo (passos):
a) ler trs nmeros inteiros
b) calcular a mdia aritmtica deles
c) escrever os valores lidos e o valor da mdia aritmtica juntamente com comentrios para
identific-los
2) Compilar o programa-fonte
Captulo 2. Variveis do tipo inteiro

29

3) Gerar o programa-executvel
4) Executar o programa com os valores 1, 2 e 3. Em seguida, analisar o resultado da mdia fornecido
pelo programa comparando-o com o valor esperado obtido por um clculo mental.
5) Repetir o item 4 para os valores 1, 1 e 2.
Exerccio 2.4
1) Editar um programa-fonte em FORTRAN para executar o seguinte algoritmo (passos):
a) ler o primeiro valor (inteiro) de uma progresso aritmtica (P.A.), denotado por A1
b) ler a diferena (nmero inteiro) entre dois termos subseqentes da P.A., denotada por D
c) ler o nmero (inteiro) de termos da P.A., denotado por N
d) calcular o ltimo termo da P.A., denotado por AN
e) calcular a soma de todos os termos da P.A., denotado por SN
f) escrever os trs valores lidos e os dois calculados juntamente com comentrios para identific-los
2) Compilar o programa-fonte
3) Gerar o programa-executvel
4) Executar o programa para A1 = 1, D = 3 e N = 5. Os resultados devem ser AN = 13 e SN = 35.

Captulo 2. Variveis do tipo inteiro

30

ANEXO C. APOSTILA DE FORTRAN

C.3 CAP.3 - VARIVEIS DO TIPO REAL

67

Captulo 3. VARIVEIS DO TIPO REAL

OBJETIVOS DO CAPTULO

Conceitos de: variveis do tipo real, traduo de expresses algbricas em FORTRAN, mistura de
variveis do tipo inteiro com real, prioridade nas operaes matemticas

Operadores matemticos bsicos

Comando do FORTRAN: REAL

3.1 programa03c.f90
Para inicializar as atividades deste captulo, deve-se executar:
1) No Windows: Start, Programs, Fortran PowerStation 4.0, Microsoft Developer Studio
2) Neste captulo ser usado um projeto j existente, no caso o projeto do fim do captulo 2. Para abri-lo,
deve-se executar o seguinte no Fortran:
a) File, Open Workspace
b) Indicar o diretrio do projeto chamado programa03
c) Selecionar o arquivo que tem o nome do projeto e extenso mdp, no caso programa03.mdp
d) Na subjanela do lado esquerdo do Fortran, clicar sobre o sinal + ao lado do nome do projeto;
dever aparecer o nome do ltimo programa-fonte que foi inserido neste projeto
e) Clicar sobre o nome do programa-fonte
f) Edit, Cut para retirar o programa-fonte do projeto. Este comando no deletar o programa-fonte.
Ele apenas o retirar do projeto. Quando se quiser, ele poder ser inserido no projeto novamente,
bastando para isso selecionar o programa-fonte desejado dentro do seu diretrio e usar o comando
Insert, Files into Project.
3) No Fortran, seguindo o procedimento apresentado na seo 1.7 do captulo 1, criar e inserir no
projeto chamado programa03 o programa-fonte programa03c.f90
4) Conforme mostrado na Figura 3.1, dentro do espao de edio do Fortran, na subjanela maior,
copiar exatamente o texto em vermelho mostrado na Tabela 3.1.
5) Comentrios sobre o programa:
a) Nos captulos 1 e 2 foram usados os comandos WRITE, END, INTEGER e READ da linguagem
FORTRAN. No programa03c.f90 h um novo comando: REAL. Ele usado para definir variveis
do tipo real, isto , variveis que podem guardar ou armazenar na memria do computador
nmeros reais, positivos ou negativos, como 1.0, 1.0, 1.1, 3.1416 ou 0.003.

Captulo 3. Variveis do tipo real

31

b) No FORTRAN, nmeros reais so representados com o sinal de ponto para separar a parte inteira
da decimal. Deve-se lembrar que em portugus se usa a vrgula com este fim.
c) A linha REAL A define a varivel A como sendo do tipo real. Este comando reserva um espao na
memria do computador, utilizando o nome ou rtulo A para armazenar um valor real. As demais
linhas do programa j foram comentadas no captulo 2.
Tabela 3.1 Programa03c.f90.
REAL A
WRITE(*,*) "Entre com o valor de A ="
READ(*,*) A
WRITE(*,*) "Valor de A = ", A
END

Figura 3.1 Programa03c.f90.


6) Executar Build, Compile para compilar o programa
7) Gerar o programa-executvel fazendo Build, Build.
8) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 3.2,
dentro da qual tem-se:
a) Na primeira linha, o comentrio Entre com o valor de A, resultado do comando WRITE(*,*)
"Entre com o valor de A" do programa.

Captulo 3. Variveis do tipo real

32

b) Na segunda linha, o programa pra e fica aguardando que seja fornecido o valor da varivel A,
resultado do comando READ(*,*) A do programa. Para que o programa continue sua execuo
necessrio digitar o valor 1 para a varivel A, por exemplo, e, em seguida, clicar na tecla
enter.
c) Na terceira linha, o comentrio Valor de A = e o valor da varivel A, resultado do comando
WRITE(*,*) "Valor de A = ", A do programa. Deve-se notar que foi fornecido um valor

inteiro para a varivel A, no caso 1. Mas o resultado do programa mostra o valor 1.000000
porque a varivel A do tipo real.
d) Na quarta linha, a frase Press any key to continue. Como diz este aviso, basta clicar em qualquer
tecla para continuar. Ao se fazer isso, a execuo do programa encerrada.

Figura 3.2 Resultado da execuo do programa03c.f90 com A = 1.


9) Executar novamente o programa, atravs de Build, Execute, com A = 0.0031. Junto a um nmero
real, a letra E usada para representar nmeros muito grandes ou muito pequenos atravs da chamada
notao cientfica ou exponencial. Desta forma, o valor 3.100000E-03 da varivel A, mostrado na
Figura 3.3, significa 3.1x10-3, que igual a 0.0031.

Figura 3.3 Resultado da execuo do programa03c.f90 com A = 0.0031.


10) Executar novamente o programa, atravs de Build, Execute, com A = 1.0E+2. Pode-se fornecer
dados ao programa usando a notao cientfica ou exponencial, como no exemplo mostrado na Figura
3.4, onde A = 1.0E+2 = 1.0x102 = 100 = 1.0E2 = 1E2.

Captulo 3. Variveis do tipo real

33

Figura 3.4 Resultado da execuo do programa03c.f90 com A = 1.0E+2.


3.2 programa03d.f90
1) Nesta seo ser usado um projeto j existente, no caso o projeto da seo anterior. Portanto, deve-se
executar o seguinte no Fortran:
a) Clicar sobre o nome do programa-fonte
b) Edit, Cut para retirar o programa-fonte do projeto.
2) No Fortran, seguindo o procedimento apresentado na seo 1.7 do captulo 1, criar e inserir no
projeto chamado programa03 o programa-fonte programa03d.f90
3) Dentro do espao de edio do Fortran, na subjanela maior, copiar exatamente o texto em vermelho
mostrado na Tabela 3.2.
Tabela 3.2 Programa03d.f90.
INTEGER D
REAL A, B, C
WRITE(*,*) "Entre com o valor de A ="
READ(*,*) A
D = A
B = 1 / D
C = 1.0 / D
WRITE(*,*) "Valor de D = ", D
WRITE(*,*) "Valor de B = ", B
WRITE(*,*) "Valor de C = ", C
END

4) Executar Build, Compile para compilar o programa


5) Gerar o programa-executvel fazendo Build, Build.

Captulo 3. Variveis do tipo real

34

6) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 3.5,
dentro da qual tem-se:
a) Na primeira linha, o comentrio Entre com o valor de A, resultado do comando WRITE(*,*)
"Entre com o valor de A" do programa.

b) Na segunda linha, o programa pra e fica aguardando que seja fornecido o valor da varivel A,
resultado do comando READ(*,*) A do programa. Para que o programa continue sua execuo
necessrio digitar o valor 2.9 para a varivel A, por exemplo, e, em seguida, clicar na tecla
enter.
c) Nas linhas seguintes, os resultados das variveis D, B e C.

Figura 3.5 Resultado da execuo do programa03d.f90.


7) Comentrios sobre os resultados do programa03d.f90 mostrados na Figura 3.5:
a) Na linha D = A do programa, o valor da varivel real A atribudo varivel inteira D. Portanto,
apenas a parte inteira do nmero A passada varivel D, desprezando-se a parte decimal.
b) Na linha B = 1 / D do programa, o resultado da diviso do nmero 1 (inteiro) pela varivel
inteira D atribudo varivel real B. Conforme visto no captulo 2, o valor que resulta de um
clculo envolvendo dois nmeros inteiros tambm um nmero inteiro, que corresponde parte
inteira do nmero real equivalente ao clculo realizado. Portanto, o resultado de 1 dividido por 2
(varivel D) resulta em 0.5, que um nmero real. Mas como o clculo envolve dois nmeros
inteiros, a parte inteira do nmero real 0.5 0, que o resultado da varivel B mostrado na Figura
3.5. Assim, apenas a parte inteira da diviso 1 / D passada varivel real B, desprezando-se a
parte decimal.
c) Na linha C = 1.0 / D do programa, o resultado da diviso do nmero 1.0 (real) pela varivel
inteira D atribudo varivel real C. Neste caso, o clculo envolve a diviso de um nmero real
(1.0) por um nmero inteiro (D). O resultado da varivel C mostrado na Figura 3.5 igual a 0.5,
que um nmero real. Isso ocorre porque o valor que resulta de um clculo envolvendo um
nmero inteiro e um nmero real um nmero real.
3.3 programa03e.f90
Captulo 3. Variveis do tipo real

35

1) Nesta seo ser usado um projeto j existente, no caso o projeto da seo anterior. Portanto, deve-se
executar o seguinte no Fortran:
a) Clicar sobre o nome do programa-fonte
b) Edit, Cut para retirar o programa-fonte do projeto.
2) No Fortran, seguindo o procedimento apresentado na seo 1.7 do captulo 1, criar e inserir no
projeto chamado programa03 o programa-fonte programa03e.f90
3) Dentro do espao de edio do Fortran, na subjanela maior, copiar exatamente o texto em vermelho
mostrado na Tabela 3.3.
Tabela 3.3 Programa03e.f90.
REAL A, B, C, D, E, F, G
WRITE(*,*) "Entre com o valor de A"
READ(*,*) A
WRITE(*,*) "Entre com o valor de B"
READ(*,*) B
C = A + B
D = B - A
E = A * B
F = A / B
G = A ** B
WRITE(*,*) "A = ", A
WRITE(*,*) "B = ", B
WRITE(*,*) "A + B = ", C
WRITE(*,*) "B - A = ", D
WRITE(*,*) "A * B = ", E
WRITE(*,*) "A / B = ", F
WRITE(*,*) "A ** B = ", G
END

4) Executar Build, Compile para compilar o programa


5) Gerar o programa-executvel fazendo Build, Build.
6) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 3.6,
dentro da qual tem-se:

Captulo 3. Variveis do tipo real

36

a) Na primeira linha, o comentrio Entre com o valor de A, resultado do comando WRITE(*,*)


"Entre com o valor de A" do programa.

b) Na segunda linha, o programa pra e fica aguardando que seja fornecido o valor da varivel A,
resultado do comando READ(*,*) A do programa. Para que o programa continue sua execuo
necessrio digitar o valor 1.5 para a varivel A, por exemplo, e, em seguida, clicar na tecla
enter.
c) Na terceira linha, o comentrio Entre com o valor de B, resultado do comando WRITE(*,*)
"Entre com o valor de B" do programa.

d) Na quarta linha, o programa pra e fica aguardando que seja fornecido o valor da varivel B,
resultado do comando READ(*,*) B do programa. Para que o programa continue sua execuo
necessrio digitar o valor 0.4 para a varivel B, por exemplo, e, em seguida, clicar na tecla
enter.
e) Nas linhas seguintes, os resultados das variveis C, D, E, F e G.

Figura 3.6 Resultado da execuo do programa03e.f90.


7) Analisar cada resultado mostrado na Figura 3.6 comparando-o com o valor esperado obtido de um
clculo mental ou com o uso de uma calculadora.
8) Executar novamente o programa com outros valores para A e B. Analisar cada novo resultado
comparando-o com o valor esperado obtido de um clculo mental ou com o uso de uma calculadora.
3.4 ESCALA DE PRIORIDADES ENTRE OS OPERADORES MATEMTICOS
Na linguagem FORTRAN, as operaes matemticas so executadas numa seqncia lgica de
acordo com uma escala de prioridades entre elas, que apresentada na Tabela 3.4. Alm disso so
consideradas as regras descritas na Tabela 3.5. importante conhecer estas prioridades e regras para se
fazer corretamente a traduo de expresses algbricas em expresses na linguagem FORTRAN, dentro
Captulo 3. Variveis do tipo real

37

de um programa-fonte. Alguns exemplos de expresses algbricas so apresentados abaixo nas Equaes


(3.1) a (3.8).
Tabela 3.4 Escala de prioridades entre os operadores matemticos bsicos em FORTRAN.
Prioridade

Smbolo

Nome do smbolo

Operao

1a

( )

Parnteses

Qualquer

2a

**

Duplo asterisco

Potenciao

3a

Asterisco

Multiplicao

Barra

Diviso

Sinal mais

Adio

Sinal menos

Subtrao

4a

Tabela 3.5 Regras adotadas nas operaes matemticas em FORTRAN.


Item

Regra

No caso de operaes matemticas que tm a mesma prioridade (multiplicao e diviso ou


adio e subtrao), executa-se primeiro o clculo mais esquerda

Parnteses so usados para que os clculos sejam executados na ordem que se deseja. Com eles,
a ordem de execuo do parnteses mais interno para o mais externo.

Com duas ou mais potenciaes consecutivas, a ordem de execuo da direita para a esquerda.

O valor que resulta de um clculo envolvendo dois nmeros inteiros tambm um nmero
inteiro, que corresponde parte inteira do nmero real equivalente ao clculo realizado.

Uma operao envolvendo um nmero real com um nmero inteiro resulta num nmero real.

A atribuio de um nmero real a uma varivel do tipo inteiro resulta num nmero inteiro que
trunca a parte decimal do nmero real.

A atribuio de um nmero inteiro a uma varivel do tipo real resulta num nmero real.

Quando se somam ou se subtraem dois nmeros com magnitudes muito diferentes, possvel
que o valor menor seja desprezado. A isso se denomina de erro de arredondamento ou de
truncamento.

Espaos em branco entre variveis, sinais de igualdade, parnteses, nmeros ou operadores


matemticos no interferem no resultado dos clculos. Eles tm apenas funo esttica.
H1

A +

H2

A +

B
C

Captulo 3. Variveis do tipo real

(3.1)

(3.2)

38

H3

A +
C

H4

A +

B
D
C

(3.4)

H5

A +

B
CD

(3.5)

H6

A +

BC D

(3.6)

H9

= (C 3 ) 2

H 10

1
B3
3

(3.3)

(3.7)

(3.8)

3.5 programa03f.f90

1) Nesta seo ser usado um projeto j existente, no caso o projeto da seo 3.3 deste captulo.
Portanto, deve-se executar o seguinte no Fortran:
a) Clicar sobre o nome do programa-fonte
b) Edit, Cut para retirar o programa-fonte do projeto.
2) No Fortran, seguindo o procedimento apresentado na seo 1.7 do captulo 1, criar e inserir no
projeto chamado programa03 o programa-fonte programa03f.f90
3) Dentro do espao de edio do Fortran, na subjanela maior, copiar exatamente o texto em vermelho
mostrado na Tabela 3.6.
4) Comentrios sobre o programa:
a) Nas duas primeiras linhas usado o comando REAL para definir as variveis do tipo real do
programa. Num mesmo programa, pode-se usar um ou mais comandos REAL ou INTEGER.
b) A linha READ(*,*) A, C, B, D do programa usada para ler os valores de quatro variveis. Um
nico comando READ pode ser usado para a leitura de diversos valores que so atribudos a
diversas variveis, que tm que estar separadas por vrgula.
c) As expresses em FORTRAN para as variveis H1 a H6, H9 e H10 correspondem
respectivamente s expresses algbricas dadas pelas Equaes (3.1) a (3.8).

Captulo 3. Variveis do tipo real

39

Tabela 3.6 Programa03f.f90.


REAL A, C, B, D
REAL H1, H2, H3, H4, H5, H6, H7, H8, H9, H10, H11, H12
WRITE(*,*) "Entre com os valores de A, C, B e D"
READ(*,*) A, C, B, D
H1 = A + B - C
H2 = A + B / C
H3 = (A + B) / C
H4 = A + B / C * D
H5 = A + B / (C * D)
H6 = A + B * C ** D
H7 = A + (B * (C ** D))
H8 = 1.0 + 1.0E-10
H9 = C ** 3 ** 2
H10 = (1.0 / 3

) * ( (B**3) ** (1

/ 2.0) )

H11 = (1.0 / 3.0) * ( (B**3) ** (1.0 / 2.0) )


H12 = (1

/ 3

) * ( (B**3) ** (1

WRITE(*,*) "H1

= ", H1

WRITE(*,*) "H2

= ", H2

WRITE(*,*) "H3

= ", H3

WRITE(*,*) "H4

= ", H4

WRITE(*,*) "H5

= ", H5

WRITE(*,*) "H6

= ", H6

WRITE(*,*) "H7

= ", H7

WRITE(*,*) "H8

= ", H8

WRITE(*,*) "H9

= ", H9

/ 2

) )

WRITE(*,*) "H10 = ", H10


WRITE(*,*) "H11 = ", H11
WRITE(*,*) "H12 = ", H12
END

Captulo 3. Variveis do tipo real

40

d) A expresso em FORTRAN para a varivel H7 corresponde expresso algbrica dada pela


Equao (3.6).
e) As expresses em FORTRAN para as variveis H11 e H12 correspondem expresso algbrica
dada pela Equao (3.8). Porm, na expresso de H12 so usados apenas nmeros inteiros nas
divises.
f) A expresso em FORTRAN para a varivel H8 corresponde a uma simples soma de dois nmeros
reais, um muito pequeno em relao ao outro.
5) Executar Build, Compile para compilar o programa
6) Gerar o programa-executvel fazendo Build, Build.
7) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 3.7,
dentro da qual tem-se:

Figura 3.7 Resultado da execuo do programa03f.f90.


a) Na primeira linha, o comentrio Entre com os valores de A, C, B e D, resultado do comando
WRITE(*,*) "Entre com os valores de A, C, B e D" do programa.

b) Na segunda linha, o programa pra e fica aguardando que sejam fornecidos os valores da variveis
A, C, B e D, resultado do comando READ(*,*) A, C, B, D do programa. Para que o programa
continue sua execuo necessrio digitar quatro valores. Cada valor digitado ser atribudo
respectivamente a uma das quatro variveis, na mesma seqncia. H vrias formas de se entrar
com diversos valores para um nico comando READ: digitando tudo na mesma linha, com cada
valor separado por vrgula ou espao em branco; digitando cada valor e, em seguida, clicando na
tecla enter; ou misturas das trs formas anteriores. A primeira forma foi usada no exemplo da
Figura 3.7 para se entrar com os valores 1, 2, 3 e 4, respectivamente, para as variveis A, C, B e
D.
c) Nas linhas seguintes, os resultados das variveis H1 a H12.
Captulo 3. Variveis do tipo real

41

8) Analisar cada resultado mostrado na Figura 3.7 comparando-o com o valor esperado obtido de um
clculo mental ou com o uso de uma calculadora. Para tanto, devem ser consideradas a escala de
prioridades da Tabela 3.4 e as regras descritas na Tabela 3.5.
9) Executar novamente o programa com outros valores para as variveis A, C, B e D. Analisar cada
novo resultado comparando-o com o valor esperado obtido de um clculo mental ou com o uso de
uma calculadora.
10) Para concluir o uso do Fortran e do Windows, deve-se executar os passos mostrados na seo 2.8 do
captulo 2.
3.6 EXERCCIOS
Exerccio 3.1

Escrever as expresses em linguagem FORTRAN que correspondem s seguintes expresses algbricas,


onde A, B e L so nmeros reais e I e J so nmeros inteiros:

+ 5
100

a)

A =

b)

A =

1
10

c)

L =

1
3 I

I2 +

1
J3
1

d)

1 2
J 3
I + 3

L =
1
I 2
1+
I

Para verificar se a resposta de cada item est correta, basta implementar a expresso em FORTRAN num
programa e comparar seu resultado com o valor obtido com uma calculadora para a expresso algbrica
correspondente. Os dois resultados devem ser iguais. Isso tambm vale para o prximo exerccio.
Exerccio 3.2

Escrever as expresses algbricas que correspondem s seguintes expresses em linguagem FORTRAN:


a)

A = ( ( B**(1.0/2) ) + 5) / 100

b)

A = (1.0/10) + ( B**(1/3.0) )

Captulo 3. Variveis do tipo real

42

c)

L = (1.0/(3.0I)) * ( ( (I**2) + (1.0/(J**3)) ) ** (1.0/2) )

d)

L = ( 1.0 / ( 1.0 + (1.0/I) ) ) * ( ( (I**2) + ( J / ( (I**3) 2 ) ) ) ** (1.0/3) )

Exerccio 3.3

1) Editar um programa-fonte em FORTRAN para executar o seguinte algoritmo (passos):


a) ler trs nmeros reais
b) calcular a mdia aritmtica deles
c) escrever os valores lidos e o valor da mdia aritmtica juntamente com comentrios para
identific-los
2) Compilar o programa-fonte
3) Gerar o programa-executvel
4) Executar o programa com os valores 1.0, 2.5 e 3.7. Em seguida, analisar o resultado da mdia
fornecido pelo programa comparando-o com o valor esperado obtido com uma calculadora.
5) Repetir o item 4 para os valores 10, 1E+3 e 2E-1.
Exerccio 3.4

1) Editar um programa-fonte em FORTRAN para executar o seguinte algoritmo (passos):


a) ler o primeiro valor (real) de uma progresso aritmtica (P.A.), denotado por A1
b) ler a diferena (nmero real) entre dois termos subseqentes da P.A., denotada por D
c) ler o nmero (inteiro) de termos da P.A., denotado por N
d) calcular o valor (real) do ltimo termo da P.A., denotado por AN
e) calcular a soma de todos os termos da P.A., denotado por SN
f) escrever os trs valores lidos e os dois calculados juntamente com comentrios para identific-los
2) Compilar o programa-fonte
3) Gerar o programa-executvel
4) Executar o programa para A1 = 1.3, D = 3.9 e N = 5. Os resultados devem ser AN = 16.9 e SN = 45.5.

Captulo 3. Variveis do tipo real

43

ANEXO C. APOSTILA DE FORTRAN

C.4 CAP.4 - VARIVEIS DO TIPO CARACTER

81

Captulo 4. VARIVEIS DO TIPO CARACTER

OBJETIVOS DO CAPTULO

Conceitos de: variveis do tipo caracter, strings, funes intrnsecas

Funes intrnsecas do FORTRAN para variveis do tipo caracter: ADJUSTL, ADJUSTR, TRIM e
LEN

Comando do FORTRAN: CHARACTER

4.1 programa4a.f90
Para inicializar as atividades deste captulo, deve-se executar:
1) No Windows: Start, Programs, Fortran PowerStation 4.0, Microsoft Developer Studio
2) No Fortran, seguindo o procedimento apresentado na seo 1.6 do captulo 1, criar um projeto do
tipo Console Application com o nome programa04 no diretrio Z:\\SERVER1\Alunos2004_1\login,
onde login deve ser substitudo pelo user name do usurio, isto , a conta particular na rede Windows
do DEMEC/UFPR.
3) No Fortran, seguindo o procedimento apresentado na seo 1.7 do captulo 1, criar e inserir no
projeto o programa-fonte programa4a.f90
4) Conforme mostrado na Figura 4.1, dentro do espao de edio do Fortran, na subjanela maior,
copiar exatamente o texto em vermelho mostrado na Tabela 4.1.
5) Comentrios sobre o programa:
a) Nos captulos 1 a 3 foram usados os comandos WRITE, END, INTEGER, READ e REAL da
linguagem FORTRAN. No programa4a.f90 h um novo comando: CHARACTER. Ele usado
para definir variveis do tipo caracter ou string, isto , variveis que podem guardar ou armazenar
comentrios na memria do computador. Estes comentrios podem incluir palavras, nmeros,
smbolos, espaos em branco ou frases. Alguns exemplos so (os contedos das variveis esto
separados por vrgula): UFPR, 5 de abril de 2004, teste de hoje, TM-102, U-20/5%, L&L. As
variveis do tipo caracter tambm so chamadas de alfanumricas porque envolvem letras e
nmeros.
b) No FORTRAN, o contedo ou string de uma varivel do tipo caracter definido entre aspas.
c) A linha CHARACTER A declara a varivel A como sendo do tipo caracter. Este comando reserva um
espao na memria do computador, utilizando o nome ou rtulo A, para armazenar um nico
caracter alfanumrico.

Captulo 4. Variveis do tipo caracter

44

d) A linha A = "UFPR, Curitiba, PR" atribui o contedo entre aspas varivel A.


Tabela 4.1 Programa4a.f90, verso 1.
CHARACTER A
A = "UFPR, Curitiba, PR"
WRITE(*,*) "Conteudo de A = ", A
END

Figura 4.1 Programa4a.f90, verso 1.


6) Executar Build, Compile para compilar o programa
7) Gerar o programa-executvel fazendo Build, Build.
8) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 4.2,
dentro da qual tem-se:
a) Na primeira linha, o comentrio Conteudo de A =, e, em seguida, a letra U, resultado do comando
WRITE(*,*) "Conteudo de A = ", A do programa.

b) Na segunda linha, a frase Press any key to continue. Como diz este aviso, basta clicar em qualquer
tecla para continuar. Ao se fazer isso, a execuo do programa encerrada.

Captulo 4. Variveis do tipo caracter

45

Figura 4.2 Resultado da execuo do programa4a.f90, verso 1.


9) No FORTRAN, cada varivel do tipo caracter deve ser declarada com a dimenso adequada
quantidade mxima de letras, nmeros, espaos em branco e smbolos que ela poder conter. Quando
no se declara o tamanho, assume-se que seja apenas um caracter. Devido a isso, somente a letra U foi
apresentada como contedo da varivel A, na verso 1 do programa4a.f90, embora ela tenha sido
definida com muito mais caracteres.
10) Para declarar a dimenso de uma varivel do tipo caracter, basta colocar o tamanho entre parnteses
junto palavra character, como exemplificado na verso 2 do programa4a.f90, na Tabela 4.2.
Tabela 4.2 Programa4a.f90, verso 2.
CHARACTER(50) A
A = "UFPR, Curitiba, PR"
WRITE(*,*) "Conteudo de A = ", A
END

11) Alterar a primeira linha do programa4a.f90 para ficar igual Tabela 4.2. Compilar novamente o
programa e gerar seu executvel. Executar o programa. Agora, conforme a Figura 4.3, apresentado
o contedo completo da varivel A, j que ele ocupa apenas 18 caracteres e a varivel A foi
dimensionada prevendo at 50 caracteres.

Figura 4.3 Resultado da execuo do programa4a.f90, verso 2.

Captulo 4. Variveis do tipo caracter

46

4.2 programa4b.f90
1) Nesta seo ser usado o mesmo projeto da seo anterior. Portanto, deve-se executar o seguinte no
Fortran:
a) Clicar sobre o nome do programa-fonte
b) Edit, Cut para retirar o programa-fonte do projeto.
2) No Fortran, seguindo o procedimento apresentado na seo 1.7 do captulo 1, criar e inserir no
projeto chamado programa04 o programa-fonte programa4b.f90
3) Dentro do espao de edio do Fortran, na subjanela maior, copiar exatamente o texto em vermelho
mostrado na Tabela 4.3.
4) Comentrios sobre o programa:
a) A linha CHARACTER(50) A declara a varivel A como sendo do tipo caracter. Este comando
reserva um espao na memria do computador, utilizando o nome ou rtulo A, para armazenar at
50 caracteres alfanumricos.
b) O comando READ do FORTRAN tambm pode ser usado para atribuir valor ou contedo a
uma varivel do tipo caracter, desde que o contedo esteja entre aspas. Um exemplo mostrado na
linha READ(*,*) A.
Tabela 4.3 Programa4b.f90.
CHARACTER(50) A
WRITE(*,*) "Entre com o conteudo de A ="
READ(*,*) A
WRITE(*,*) "Conteudo de A = ", A
END

5) Executar Build, Compile para compilar o programa


6) Gerar o programa-executvel fazendo Build, Build.
7) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 4.4,
dentro da qual tem-se:
a) Na primeira linha, o comentrio Entre com o conteudo de A =, resultado do comando WRITE(*,*)
"Entre com o conteudo de A =" do programa.

b) Na segunda linha, o programa pra e fica aguardando que seja fornecido o contedo da varivel A,
resultado do comando READ(*,*) A do programa. Para que o programa continue sua execuo
necessrio digitar, entre aspas, um contedo para a varivel A, por exemplo, Teste de hoje e,
em seguida, clicar na tecla enter.
c) Na terceira linha, o contedo da varivel A.
Captulo 4. Variveis do tipo caracter

47

Figura 4.4 Resultado da execuo do programa4b.f90.


8) Executar novamente o programa, atravs de Build, Execute, testando outros contedos para a
varivel A e vendo o resultado. Testar, por exemplo, uma frase com pelo menos duas palavras mas
sem usar aspas para definir o contedo de A.
4.3 programa4c.f90
1) Nesta seo ser usado o mesmo projeto da seo anterior. Portanto, deve-se executar o seguinte no
Fortran:
a) Clicar sobre o nome do programa-fonte
b) Edit, Cut para retirar o programa-fonte do projeto.
2) No Fortran, seguindo o procedimento apresentado na seo 1.7 do captulo 1, criar e inserir no
projeto chamado programa04 o programa-fonte programa4c.f90
3) Dentro do espao de edio do Fortran, na subjanela maior, copiar exatamente o texto em vermelho
mostrado na Tabela 4.4.
4) Comentrios sobre o programa:
a) A linha CHARACTER(20) LOCAL, DIA declara duas variveis, LOCAL e DIA, como sendo do tipo
caracter, cada uma podendo armazenar at 20 caracteres alfanumricos.
b) A linha CHARACTER(10) HORA declara a varivel HORA como sendo do tipo caracter, podendo
armazenar at 10 caracteres alfanumricos.
c) A linha CHARACTER(90) FRASE declara a varivel FRASE como sendo do tipo caracter, podendo
armazenar at 90 caracteres alfanumricos.
d) A linha FRASE = "Frase: " // LOCAL // ", " // DIA // ", as " // HORA // " horas"
define o contedo da varivel FRASE com base em alguns comentrios que esto entre aspas e no
contedo das variveis LOCAL, DIA e HORA. Isso possvel devido ao uso do operador de
concatenao cujo smbolo composto por duas barras (//). Este operador permite juntar duas ou
mais variveis do tipo caracter.

Captulo 4. Variveis do tipo caracter

48

Tabela 4.4 Programa4c.f90.


CHARACTER(20) LOCAL, DIA
CHARACTER(10) HORA
CHARACTER(90) FRASE
WRITE(*,*) "Entre com o local ="
READ(*,*) LOCAL
WRITE(*,*) "Entre com o dia ="
READ(*,*) DIA
WRITE(*,*) "Entre com a hora ="
READ(*,*) HORA
FRASE = "Frase: " // LOCAL // ", " // DIA // ", as " // HORA // " horas"
WRITE(*,*) "Conteudo de FRASE = ", FRASE
END

5) Executar Build, Compile para compilar o programa


6) Gerar o programa-executvel fazendo Build, Build.
7) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 4.5,
dentro da qual tem-se:
a) Na primeira linha, o comentrio Entre com o local =, resultado do comando WRITE(*,*) "Entre
com o local =" do programa.

b) Na segunda linha, o programa pra e fica aguardando que seja fornecido o contedo da varivel
LOCAL, resultado do comando READ(*,*) LOCAL do programa. Para que o programa continue
sua execuo necessrio digitar o contedo da varivel LOCAL, por exemplo, Curitiba e,
em seguida, clicar na tecla enter.
c) Na terceira linha, o comentrio Entre com o dia =, resultado do comando WRITE(*,*) "Entre
com o dia =" do programa.

d) Na quarta linha, o programa pra e fica aguardando que seja fornecido o contedo da varivel
DIA, resultado do comando READ(*,*) DIA do programa. Para que o programa continue sua
execuo necessrio digitar o contedo da varivel DIA, por exemplo, 5 de abril de 2004 e,
em seguida, clicar na tecla enter.
e) Na quinta linha, o comentrio Entre com a hora =, resultado do comando WRITE(*,*) "Entre
com a hora =" do programa.

f) Na sexta linha, o programa pra e fica aguardando que seja fornecido o contedo da varivel
HORA, resultado do comando READ(*,*) HORA do programa. Para que o programa continue sua
Captulo 4. Variveis do tipo caracter

49

execuo necessrio digitar o contedo da varivel HORA, por exemplo, 10:58 e, em


seguida, clicar na tecla enter.
g) Na stima linha, o comentrio Contedo de FRASE = e, em seguida, o contedo da varivel
FRASE, resultado do comando WRITE(*,*) "Conteudo de FRASE = ", FRASE do programa e
da linha anterior aonde se definiu a varivel FRASE.

Figura 4.5 Resultado da execuo do programa4c.f90.


8) Deve-se notar na Figura 4.5 que a escrita do contedo da varivel FRASE ocupou mais de uma linha.
Isso ocorre devido a sua extenso ser muito grande, isto , superior ao nmero disponvel de colunas
numa janela do tipo DOS.
9) No FORTRAN, se o contedo de uma varivel definido com menos caracteres do que o mximo
declarado, a diferena entre os caracteres ocupados e o mximo previsto preenchida com espaos
em branco, como no contedo da varivel FRASE. Por exemplo, a varivel LOCAL foi declarada
com tamanho mximo de 20 caracteres. Mas seu contedo foi definido com Curitiba, palavra que
ocupa apenas 8 caracteres. Neste caso, os demais 12 caracteres so preenchidos com espaos em
branco. O mesmo problema ocorre com as demais variveis. Formas de se resolver este problema so
abordadas na prxima seo.
10) Executar novamente o programa com outros contedos para as variveis LOCAL, DIA e HORA.
4.4 programa4d.f90
1) Nesta seo ser usado o mesmo projeto da seo anterior deste captulo. Portanto, deve-se executar o
seguinte no Fortran:
a) Clicar sobre o nome do programa-fonte
b) Edit, Cut para retirar o programa-fonte do projeto.
2) No Fortran, seguindo o procedimento apresentado na seo 1.7 do captulo 1, criar e inserir no
projeto chamado programa04 o programa-fonte programa4d.f90
Captulo 4. Variveis do tipo caracter

50

3) Dentro do espao de edio do Fortran, na subjanela maior, copiar exatamente o texto em vermelho
mostrado na Tabela 4.5.
Tabela 4.5 Programa4d.f90.
CHARACTER(9) A
INTEGER L
WRITE(*,*) "Entre com o conteudo de A ="
WRITE(*,*) "0123456789"
READ(*,*) A
WRITE(*,*) "

0123456789"

WRITE(*,*) "A

=(", A, ")"

WRITE(*,*) "Com ADJUSTL

=(", ADJUSTL(A), ")"

WRITE(*,*) "Com ADJUSTR

=(", ADJUSTR(A), ")"

WRITE(*,*) "Com TRIM

=(", TRIM(A), ")"

WRITE(*,*) "Com ADJUSTL e TRIM =(", TRIM(ADJUSTL(A)), ")"


L = LEN(A)
WRITE(*,*) "L de A = ", L
L = LEN(TRIM(ADJUSTL(A)))
WRITE(*,*) "L de A com TRIM e ADJUSTL = ", L
END

4) Comentrios sobre o programa:


a) A linha CHARACTER(9) A declara a varivel A como sendo do tipo caracter, podendo armazenar
at 9 caracteres alfanumricos.
b) A linha INTEGER L declara a varivel L como sendo do tipo inteiro.
c) Conforme pode-se ver na Figura 4.6, ADJUSTL, ADJUSTR, TRIM e LEN esto escritos em azul
dentro do Fortran. Elas so chamadas de funes intrnsecas do FORTRAN, ou seja, so funes
ou comandos que existem dentro da linguagem FORTRAN. Estas funes so usadas para
manipular strings, isto , contedos de variveis do tipo caracter.
d) A lista completa das funes para variveis do tipo caracter pode ser vista no manual do Fortran.
Para acess-lo, dentro da subjanela do lado esquerdo, deve-se executar: clicar uma vez sobre o
smbolo ?InfoView; e acessar as opes Reference, Procedures, Character Procedures.
e) A linha WRITE(*,*) "A

=(", A, ")" escreve em seqncia o contedo de

trs strings que esto separadas por vrgula. A primeira o comentrio A


Captulo 4. Variveis do tipo caracter

=(;
51

a segunda, o contedo da varivel A; e a terceira, ). As quatro linhas seguintes do programa


fazem o mesmo, isto , cada uma escreve trs strings em seqncia. Mas, nestes casos, em vez de
escrever o contedo da varivel A, escreve-se o resultado de alguma funo operando sobre A,
conforme as explicaes a seguir.

Figura 4.6 Programa4d.f90.


f) A funo ADJUSTL elimina os espaos em branco que esto esquerda de uma string e os passa
direita dela.
g) A funo ADJUSTR elimina os espaos em branco que esto direita de uma string e os passa
esquerda dela.
h) A funo TRIM elimina os espaos em branco que esto direita de uma string.
i) O resultado das funes ADJUSTL, ADJUSTR e TRIM so strings.
j) A funo LEN conta o nmero de caracteres de uma string ou varivel do tipo caracter. Seu
resultado um nmero inteiro.
k) Na instruo TRIM(ADJUSTL(A)) do programa, a funo TRIM opera sobre o resultado da funo
ADJUSTL sobre a varivel A.
l) Na linha L = LEN(A) do programa, a funo LEN opera sobre a varivel A e atribui o resultado
varivel inteira L.
Captulo 4. Variveis do tipo caracter

52

m) Na linha L = LEN(TRIM(ADJUSTL(A))) do programa, a funo LEN opera sobre o resultado da


funo TRIM, que opera sobre o resultado da funo ADJUSTL sobre a varivel A. Finalmente, o
resultado da funo LEN atribudo varivel inteira L.
5) Executar Build, Compile para compilar o programa
6) Gerar o programa-executvel fazendo Build, Build.
7) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 4.7,
dentro da qual tem-se:
a) Na primeira linha, o comentrio Entre com o conteudo de A =, resultado do comando WRITE(*,*)
"Entre com o conteudo de A =" do programa.

Figura 4.7 Resultado da execuo do programa4d.f90.


b) Na segunda linha, o comentrio 0123456789, resultado do comando WRITE(*,*) "0123456789"
do programa. Este comentrio uma espcie de rgua para se perceber claramente o nmero de
caracteres usados para definir a varivel A, e quantos espaos em branco existem antes da string
de A e depois dela. O zero usado porque a definio da varivel A exige o sinal de aspas, que
no conta em seu contedo.
c) Na terceira linha, o programa pra e fica aguardando que seja fornecido o contedo da varivel A,
resultado do comando READ(*,*) A do programa. Para que o programa continue sua execuo
necessrio digitar o contedo da varivel A, por exemplo, Rio 45 e, em seguida, clicar na
tecla enter . Deve-se perceber que h um espao em branco antes da palavra Rio.
d) Na quarta linha, 20 espaos em branco seguidos pelo comentrio 0123456789, resultado do
comando WRITE(*,*) "

0123456789" do programa. Este comentrio

uma espcie de rgua para se perceber claramente os resultados a seguir.


e) Nas linhas seguintes, so apresentados os resultados do contedo da varivel A e das funes
ADJUSTL, ADJUSTR, TRIM e LEN operando sobre a varivel A. Os sinais ( e ) marcam o nicio
e o fim de cada string.
Captulo 4. Variveis do tipo caracter

53

8) Analisar cada resultado mostrado na Figura 4.7, considerando o contedo da varivel A e as


definies apresentadas acima, nesta seo, para as funes ADJUSTL, ADJUSTR, TRIM e LEN.
9) Executar novamente o programa com outros contedos para a varivel A. Analisar os resultados de
cada nova execuo do programa.
10) Para concluir o uso do Fortran e do Windows, deve-se executar os passos mostrados na seo 2.8 do
captulo 2.
4.5 EXERCCIO
Exerccio 4.1
1) Editar um programa-fonte em FORTRAN para executar o seguinte algoritmo (passos):
a) declarar quatro variveis do tipo caracter com dimenso de 5, 10, 20 e 30 caracteres
b) ler o contedo das quatro variveis
c) escrever o contedo de cada uma das quatro variveis
d) usando o operador de concatenao, escrever combinaes das quatro variveis lidas
e) aplicar e escrever o resultado da funo ADJUSTL a cada uma das quatro variveis lidas
f) aplicar e escrever o resultado da funo ADJUSTR a cada uma das quatro variveis lidas
g) aplicar e escrever o resultado da funo TRIM a cada uma das quatro variveis lidas
h) aplicar e escrever o resultado da funo TRIM(ADJUSTL) a cada uma das quatro variveis lidas
i) aplicar e escrever o resultado da funo LEN a cada uma das quatro variveis lidas
j) aplicar e escrever o resultado da funo LEN(TRIM(ADJUSTL)) a cada uma das quatro variveis
lidas
2) Compilar o programa-fonte
3) Gerar o programa-executvel
4) Executar o programa. Em seguida, comparar os resultados escritos com o esperado para cada caso.

Captulo 4. Variveis do tipo caracter

54

ANEXO C. APOSTILA DE FORTRAN

93

C.5 CAP.5 - ARQUIVOS E FUNES MATEMTICAS


INTRNSECAS

Captulo 5. ARQUIVOS E FUNES MATEMTICAS INTRNSECAS

OBJETIVOS DO CAPTULO

Conceitos de: arquivo de sada, biblioteca, funes matemticas intrnsecas

Criar e usar arquivos para mostrar resultados da execuo de um programa em FORTRAN

Usar o aplicativo Notepad do Windows para mostrar o contedo de um arquivo durante a execuo de
um programa em FORTRAN

Funes matemticas intrnsecas do FORTRAN

Comandos do FORTRAN: WRITE(nmero,*), OPEN, CLOSE, USE, SYSTEM

5.1 programa5a.f90
Para inicializar as atividades deste captulo, deve-se executar:
1) No Windows: Start, Programs, Fortran PowerStation 4.0, Microsoft Developer Studio
2) No Fortran, seguindo o procedimento apresentado na seo 1.6 do captulo 1, criar um projeto do
tipo Console Application com o nome programa05 no diretrio Z:\\SERVER1\Alunos2004_1\login,
onde login deve ser substitudo pelo user name do usurio, isto , a conta particular na rede Windows
do DEMEC/UFPR.
3) No Fortran, seguindo o procedimento apresentado na seo 1.7 do captulo 1, criar e inserir no
projeto o programa-fonte programa5a.f90
4) Conforme mostrado na Figura 5.1, dentro do espao de edio do Fortran, na subjanela maior,
copiar exatamente o texto em vermelho mostrado na Tabela 5.1.
5) Comentrios sobre o programa:
a) At aqui o comando WRITE foi utilizado com dois asteriscos dentro do parnteses, isto , foi
usado na forma WRITE(*,*). O primeiro asterisco do comando WRITE representa o local ou
dispositivo que usado para escrever algum comentrio ou resultado do programa. Este
asterisco pode ser substitudo por um nmero. O nmero 6 representa uma janela do DOS, como
aquela que vem sendo usada at aqui para apresentar os resultados dos programas; por exemplo, a
janela mostrada na Figura 5.2. Portanto, o uso de asterisco no comando WRITE equivale a
empregar o nmero 6.
b) A nica diferena entre o programa5a.f90 e o programa3c.f90, da seo 3.1 do captulo 3, o uso
do nmero 6 no lugar do primeiro asterisco dos comandos WRITE.
6) Executar Build, Compile para compilar o programa.

Captulo 5. Arquivos e funes matemticas intrnsecas

55

7) Gerar o programa-executvel fazendo Build, Build.


8) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 5.2,
dentro da qual tem-se:
a) Na primeira linha, o comentrio Entre com o valor de A =, resultado do comando WRITE(6,*)
"Entre com o valor de A =" do programa.

Tabela 5.1 Programa5a.f90.


REAL A
WRITE(6,*) "Entre com o valor de A ="
READ(*,*) A
WRITE(6,*) "Valor de A = ", A
END

Figura 5.1 Programa5a.f90.


b) Na segunda linha, o programa pra e fica aguardando que seja fornecido o valor da varivel A,
resultado do comando READ(*,*) A do programa. Para que o programa continue sua execuo
necessrio digitar o valor 1 para a varivel A, por exemplo, e, em seguida, clicar na tecla
enter.
c) Na terceira linha, o comentrio Valor de A = e o valor da varivel A, resultado do comando
WRITE(6,*) "Valor de A = ", A do programa. Deve-se notar que foi fornecido um valor

inteiro para a varivel A, no caso 1. Mas o resultado do programa mostra o valor 1.000000
porque a varivel A do tipo real.

Captulo 5. Arquivos e funes matemticas intrnsecas

56

d) Na quarta linha, a frase Press any key to continue. Como diz este aviso, basta clicar em qualquer
tecla para continuar. Ao se fazer isso, a execuo do programa encerrada.
9) O resultado da execuo do programa5a.f90 exatamente igual a do programa3c.f90, da seo 3.1 do
captulo 3. Conforme explicado no item 5a, acima, isso ocorre devido equivalncia completa entre
os comandos WRITE(*,*) e WRITE(6,*).

Figura 5.2 Resultado da execuo do programa5a.f90.


5.2 programa5b.f90
1) Nesta seo ser usado o mesmo projeto da seo anterior. Portanto, deve-se executar o seguinte no
Fortran:
a) Clicar sobre o nome do programa-fonte
b) Edit, Cut para retirar o programa-fonte do projeto.
2) No Fortran, seguindo o procedimento apresentado na seo 1.7 do captulo 1, criar e inserir no
projeto chamado programa05 o programa-fonte programa5b.f90
3) Dentro do espao de edio do Fortran, na subjanela maior, copiar exatamente o texto em vermelho
mostrado na Tabela 5.2.
Tabela 5.2 Programa5b.f90.
REAL A
WRITE(6,*) "Entre com o valor de A ="
READ(*,*) A
OPEN(7, file="saida5b.txt")
WRITE(7,*) "Valor de A = ", A
CLOSE(7)
END

4) Comentrios sobre o programa:

Captulo 5. Arquivos e funes matemticas intrnsecas

57

a) No programa5b.f90 so usados dois novos comandos do FORTRAN: OPEN e CLOSE. Ambos


devem ser usados em conjunto.
b) A forma do comando OPEN que ser usada neste texto OPEN(nmero, file=nome). O
comando OPEN usado para: definir um nmero que ser usado como referncia a um arquivo; e
para abrir o arquivo chamado nome. O nmero pode ser de 1 a 99 e 105 a 299. A utilizao
deste nmero num comando WRITE(nmero,*) resulta na escrita de comentrios ou variveis no
arquivo que corresponde ao nmero definido no comando OPEN. O nome do arquivo pode ser
qualquer um mas deve ficar entre aspas. Quando se declara um nome de arquivo num comando
OPEN, se o arquivo no existir, ele criado dentro do diretrio do projeto.
c) A forma do comando CLOSE que ser usada neste texto CLOSE(nmero). O comando CLOSE
usado para fechar ou encerrar o uso de um arquivo aberto anteriormente com o comando OPEN.
d) Todos arquivos abertos com o comando OPEN so fechados ao final da execuo do programa,
existindo ou no o comando CLOSE.
e) Dentro de um programa, para um mesmo nmero ou arquivo, a seqncia obrigatria dos
comandos a seguinte: OPEN, WRITE, CLOSE. Para um mesmo arquivo, deve existir apenas um
comando OPEN e um CLOSE dentro do programa, e podem existir diversos comandos WRITE.
f) Podem ser usados vrios arquivos simultaneamente num programa.
g) A principal vantagem de se usar um arquivo ter um registro permanente dos resultados do
programa para posterior anlise. Isso fica mais evidente quanto maior for a quantidade de
resultados de um programa.
5) Executar Build, Compile para compilar o programa.
6) Gerar o programa-executvel fazendo Build, Build.
7) Ao se executar o programa, atravs de Build, Execute, surge uma janela do DOS, mostrada na
Figura 5.3, dentro da qual tem-se:

Figura 5.3 Resultado da execuo do programa5b.f90 na janela DOS com A = 1.


a) Na primeira linha, o comentrio Entre com o valor de A =, resultado do comando WRITE(*,*)
"Entre com o valor de A =" do programa.

b) Na segunda linha, o programa pra e fica aguardando que seja fornecido o contedo da varivel A,
resultado do comando READ(*,*) A do programa. Para que o programa continue sua execuo
Captulo 5. Arquivos e funes matemticas intrnsecas

58

necessrio digitar o valor 1 para a varivel A, por exemplo, e, em seguida, clicar na tecla
enter.
c) Em seguida ocorrer a criao do arquivo saida5b.txt, dentro do diretrio do projeto, como
resultado do comando OPEN(7, file="saida5b.txt") do programa, uma vez que este arquivo
ainda no existe quando o programa5b.f90 for executado pela primeira vez. Este comando
tambm declara que ser usado o nmero 7 no programa como referncia ao arquivo saida5b.txt.
d) Conforme mostrado na Figura 5.4, na primeira linha do arquivo saida5b.txt est escrito o
comentrio Valor de A = e o valor da varivel real A como resultado do comando WRITE(7,*)
"Valor de A = ", A do programa.

e) O arquivo saida5b.txt fechado, isto , nada mais pode ser escrito nele aps o comando CLOSE(7)
do programa.

Figura 5.4 Resultado da execuo do programa5b.f90 no arquivo saida5b.txt com A = 1.


8) A existncia do arquivo saida5b.txt pode ser comprovada ao se executar Start, Programs, Windows
NT Explorer. Em seguida, indicar o diretrio do projeto, no caso, programa05. Finalmente, ao se
clicar duas vezes sobre o nome do arquivo, ele ser aberto, podendo-se ver o seu contedo.
9) Executar novamente o programa, atravs de Build, Execute, com A = 123. Neste caso, como j
existe o arquivo saida5b.txt ele ser usado para escrever o novo resultado do programa sobre o
resultado anterior, conforme mostrado na Figura 5.5. Ou seja, o resultado anterior, mostrado na
Figura 5.4 eliminado ou apagado. Para evitar isso, necessrio gravar os resultados em arquivos
diferentes a cada execuo do programa. Outra possibilidade alterar o nome do arquivo de
resultados antes do programa ser executado novamente. Executar o indicado no item anterior (8)
para ver o novo contedo do arquivo saida5b.txt.
10) No comando OPEN tambm possvel especificar todo o caminho ou o diretrio aonde o arquivo
deve ser criado ou aberto. Quando o diretrio no especificado, por default, usa-se o diretrio do
projeto ou o diretrio no qual o programa executado. Por exemplo, trocar a linha OPEN(7,
file="saida5b.txt"), pelo seguinte: OPEN(7,

file="C:\Temp\saida5b.txt"). Compilar

novamente o programa5b.f90, gerar o seu executvel, executar o programa. Usar o aplicativo

Captulo 5. Arquivos e funes matemticas intrnsecas

59

Windows NT Explorer para encontrar e abrir o arquivo saida5b.txt, que agora dever estar no
diretrio C:\Temp.

Figura 5.5 Resultado da execuo do programa5b.f90 no arquivo saida5b.txt com A = 123.


11) Na prxima seo, apresentada uma forma de se automatizar a abertura do arquivo de sada. Isso
permite maior rapidez na visualizao dos resultados de um programa.
5.3 programa5c.f90
1) Nesta seo ser usado o mesmo projeto da seo anterior. Portanto, deve-se executar o seguinte no
Fortran:
a) Clicar sobre o nome do programa-fonte
b) Edit, Cut para retirar o programa-fonte do projeto.
2) No Fortran, seguindo o procedimento apresentado na seo 1.7 do captulo 1, criar e inserir no
projeto chamado programa05 o programa-fonte programa5c.f90
3) Dentro do espao de edio do Fortran, na subjanela maior, copiar exatamente o texto em vermelho
mostrado na Tabela 5.3.
4) Comentrios sobre o programa:
a) No programa5c.f90 so usados dois novos comandos do FORTRAN: USE e SYSTEM.
b) O comando USE biblio usado para incluir dentro do programa uma biblioteca chamada biblio,
onde biblio deve ser substitudo pelo nome da biblioteca desejada. Uma biblioteca, no presente
contexto, uma coleo de comandos que no existem automaticamente dentro da linguagem
FORTRAN. Todos os comandos usados at aqui, por exemplo WRITE, j existem
automaticamente dentro da linguagem FORTRAN, mas o comando SYSTEM, no. Para ele ser
usado necessrio incluir no programa a biblioteca aonde este comando est definido, no caso a
biblioteca chamada PORTLIB.
c) A linguagem FORTRAN permite a qualquer programador criar suas prprias bibliotecas, como
ser visto nos captulos avanados deste texto.

Captulo 5. Arquivos e funes matemticas intrnsecas

60

Tabela 5.3 Programa5c.f90.


USE PORTLIB
REAL A
INTEGER VER
WRITE(6,*) "Entre com o valor de A ="
READ(*,*) A
OPEN(7, file="saida5c.txt")
WRITE(7,*) "Valor de A = ", A
CLOSE(7)
VER = SYSTEM ("Notepad saida5c.txt")
END

d) No editor do aplicativo Fortran, o comando SYSTEM no fica na cor azul por no ser um dos
comandos bsicos da linguagem FORTRAN. O comando SYSTEM utilizado para executar
comandos que interagem com o sistema operacional Windows. Isso permite que, durante a
execuo do programa escrito em FORTRAN, seja realizado o seguinte: executar outros
programas ou aplicativos; criar ou deletar diretrios ou arquivos; e qualquer outro comando
possvel de se executar numa janela do tipo DOS. Para utilizar o comando SYSTEM deve-se
definir uma varivel do tipo inteiro. Depois, usar esta varivel na linha do programa aonde se
deseja executar o comando SYSTEM. Dentro de parnteses e aspas, deve-se incluir a seqncia
de comandos que se deseja executar no Windows.
e) A linha USE PORTLIB declara que a biblioteca chamada PORTLIB ser acrescentada ao programa.
f) A linha VER = SYSTEM ("Notepad saida5c.txt") executa o comando SYSTEM para que o
aplicativo NOTEPAD do Windows abra o arquivo chamado saida5c.txt. A varivel VER, usada
nesta linha, foi definida como uma varivel do tipo inteiro na linha INTEGER VER do programa.
5) Executar Build, Compile para compilar o programa.
6) Gerar o programa-executvel fazendo Build, Build.
7) Ao se executar o programa, atravs de Build, Execute, ocorrer exatamente o mesmo j explicado na
seo anterior para o programa5b.f90. A nica diferena que quase no final da execuo do
programa, o arquivo de resultados, que foi denominado de saida5c.txt, ser aberto automaticamente
pelo aplicativo Notepad para mostrar o seu contedo. Ao se fechar o Notepad, a execuo do
programa5c.f90 ser encerrada.
8) No caso do comando OPEN ser usado para especificar todo o caminho ou o diretrio aonde o arquivo
deve ser criado ou aberto, o comando SYSTEM tambm deve ser adaptado. Por exemplo, se o arquivo

Captulo 5. Arquivos e funes matemticas intrnsecas

61

saida5c.txt

for

criado

no

diretrio

C:\Temp

com

comando

OPEN(7,

file="C:\Temp\saida5c.txt"), o comando correspondente para abrir automaticamente o arquivo

saida5c.txt VER = SYSTEM ("Notepad C:\Temp\saida5c.txt").


5.4 programa5d.f90
1) Nesta seo ser usado o mesmo projeto da seo anterior deste captulo. Portanto, deve-se executar o
seguinte no Fortran:
a) Clicar sobre o nome do programa-fonte
b) Edit, Cut para retirar o programa-fonte do projeto.
2) No Fortran, seguindo o procedimento apresentado na seo 1.7 do captulo 1, criar e inserir no
projeto chamado programa05 o programa-fonte programa5d.f90
3) Dentro do espao de edio do Fortran, na subjanela maior, copiar exatamente o texto em vermelho
mostrado na Tabela 5.4.
4) Comentrios sobre o programa:
a) Conforme pode-se ver na Figura 5.6, ABS, LOG10, ACOS, COS e COSH esto escritos em azul
dentro do Fortran. Elas so chamadas de funes intrnsecas do FORTRAN, ou seja, so funes
ou comandos que existem dentro da linguagem FORTRAN. Elas so funes matemticas usadas
em clculos que envolvem variveis do tipo real. Outras funes so apresentadas nas Tabelas
5.5 e 5.6.
b) A lista completa de funes matemticas intrnsecas do FORTRAN pode ser vista no manual do
Fortran. Para acess-lo, dentro da subjanela do lado esquerdo, deve-se executar: clicar uma vez
sobre o smbolo ?InfoView; e acessar as opes Reference, Procedures, Numeric Procedures e
as opes Reference, Procedures, Trigonometric, Exponential, Root, and Logathmic
Procedures.
5) Executar Build, Compile para compilar o programa.
6) Gerar o programa-executvel fazendo Build, Build.
7) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 5.7,
dentro da qual tem-se:
a) Na primeira linha, o comentrio Entre com o valor de A =, resultado do comando WRITE(*,*)
"Entre com o valor de A =" do programa.

b) Na segunda linha, o programa pra e fica aguardando que seja fornecido o valor da varivel A,
resultado do comando READ(*,*) A do programa. Para que o programa continue sua execuo
necessrio digitar o valor 10 para a varivel A, por exemplo, e, em seguida, clicar na tecla
enter.
Captulo 5. Arquivos e funes matemticas intrnsecas

62

c) Em seguida ocorrer a criao do arquivo saida5d.txt, dentro do diretrio do projeto, como


resultado do comando OPEN(8, file="saida5d.txt") do programa, uma vez que este arquivo
ainda no existe quando o programa5d.f90 for executado pela primeira vez. Este comando
tambm declara que ser usado o nmero 8 no programa como referncia ao arquivo saida5d.txt.
d) Os resultados das funes aplicadas no programa5d.f90 so mostrados na Figura 5.8.
Tabela 5.4 Programa5d.f90.
USE PORTLIB
REAL A, B, C, Pi
INTEGER VER
WRITE(*,*) "Entre com o valor de A ="
READ(*,*) A
OPEN(8, file="saida5d.txt")
WRITE(8,*) "Valor de A = ", A
B = ABS(A)
WRITE(8,*) "B = Mdulo de A =", B
C = LOG10(B)
WRITE(8,*) "C: Logaritmo decimal de B =", C
Pi = ACOS(-1.0)
WRITE(8,*) "Pi =", Pi
D = COS(Pi)
WRITE(8,*) "Cosseno de Pi =", D
D = COSH(Pi)
WRITE(8,*) "Cosseno hiperblico de Pi =", D
CLOSE(8)
VER = SYSTEM ("Notepad saida5d.txt")
END

8) Comparar cada resultado mostrado na Figura 5.8 com o resultado obtido de uma calculadora.
Captulo 5. Arquivos e funes matemticas intrnsecas

63

9) Executar novamente o programa com outro valor para a varivel A. Comparar cada novo resultado
com o obtido de uma calculadora.
10) Os programas-executveis tambm podem ser executados, rodados ou postos para funcionar fora do
aplicativo Fortran. Para testar isso, primeiro, fechar o aplicativo Fortran. Em seguida, utilizando o
aplicativo Windows NT Explorer, copiar o programa-executvel chamado programa05.exe ou
programa05.application para o diretrio C:\Temp. Para executar o programa, basta clicar duas
vezes sobre o arquivo copiado. Como resultado, surgir o arquivo saida5d.txt. O diretrio C:\Temp
apenas um exemplo. O programa-executvel pode ser copiado para qualquer outro diretrio e ser
executado l.

Figura 5.6 Programa5d.f90.


Captulo 5. Arquivos e funes matemticas intrnsecas

64

Tabela 5.5 Algumas funes matemticas do FORTRAN.


Funo

Comando

Mdulo ou valor absoluto

Observao

Y = ABS(X)

Raiz quadrada

Y = SQRT(X)

Exponencial: Y

Y = EXP(X)

= eX

Logaritmo natural

Y = LOG(X)

Logaritmo decimal

Y = LOG10(X)

Sinal

Y = SIGN(X,Z)

Y = valor absoluto de X vezes o sinal de Z

Y = MIN(X,Z,W)

Y = valor mnimo entre X, Z e W; o

Mnimo

argumento pode conter 2 ou mais variveis


Mximo

Y = MAX(X,Z,W)

Y = valor mximo entre X, Z e W; o


argumento pode conter 2 ou mais variveis

Tabela 5.6 Algumas funes trigonomtricas do FORTRAN.


Funo

Comando

Observao

Seno

Y = SIN(X)

X em radianos

Cosseno

Y = COS(X)

X em radianos

Tangente

Y = TAN(X)

X em radianos

Arco-seno

Y = ASIN(X)

Y em radianos

Arco-cosseno

Y = ACOS(X)

Y em radianos

Arco-tangente

Y = ATAN(X)

Y em radianos

Seno hiperblico

Y = SINH(X)

Cosseno hiperblico

Y = COSH(X)

Tangente hiperblica

Y = TANH(X)

Figura 5.7 Janela DOS do programa5d.f90.

Captulo 5. Arquivos e funes matemticas intrnsecas

65

Figura 5.8 Arquivo saida5d.txt do programa5d.f90.


5.5 EXERCCIOS
Exerccio 5.1
1) Editar um programa-fonte em FORTRAN para executar o seguinte algoritmo (passos):
a) ler o primeiro valor (real) de uma progresso aritmtica (P.A.), denotado por A1
b) ler a diferena (nmero real) entre dois termos subseqentes da P.A., denotada por D
c) ler o nmero (inteiro) de termos da P.A., denotado por N
d) calcular o valor (real) do ltimo termo da P.A., denotado por AN
e) calcular a soma de todos os termos da P.A., denotado por SN
f) escrever no arquivo chamado saida_5p1.txt os trs valores lidos e os dois calculados juntamente
com comentrios para identific-los
2) Compilar o programa-fonte
3) Gerar o programa-executvel
4) Executar o programa para A1 = 1.3, D = 3.9 e N = 5. Os resultados devem ser AN = 16.9 e SN = 45.5.
Exerccio 5.2
1) Editar um programa-fonte em FORTRAN para executar o seguinte algoritmo (passos):
a) ler algumas variveis do tipo real
b) aplicar as funes matemticas da Tabela 5.5 sobre as variveis lidas
c) escrever no arquivo chamado saida_5p2.txt os valores lidos e os resultados calculados com as
funes juntamente com comentrios para identific-los
2) Compilar o programa-fonte
3) Gerar o programa-executvel
4) Executar o programa. Em seguida, comparar os resultados escritos com aqueles obtidos de uma
calculadora.

Captulo 5. Arquivos e funes matemticas intrnsecas

66

Exerccio 5.3
1) Editar um programa-fonte em FORTRAN para executar o seguinte algoritmo (passos):
a) ler algumas variveis do tipo real
b) aplicar as funes matemticas da Tabela 5.6 sobre as variveis lidas
c) escrever no arquivo chamado saida_5p3.txt os valores lidos e os resultados calculados com as
funes juntamente com comentrios para identific-los
2) Compilar o programa-fonte
3) Gerar o programa-executvel
4) Executar o programa. Em seguida, comparar os resultados escritos com aqueles obtidos de uma
calculadora.

Captulo 5. Arquivos e funes matemticas intrnsecas

67

ANEXO C. APOSTILA DE FORTRAN

C.6 CAP.7 - DECISES E OPES

107

Captulo 7. DECISES E OPES

OBJETIVOS DO CAPTULO

Conceitos de: deciso, condio, operadores relacionais e lgicos, e opo

Comandos do FORTRAN: IF THEN ELSE END IF, SELECT CASE CASE END SELECT

7.1 programa7a.f90
Para inicializar as atividades deste captulo, deve-se executar:
1) Para acessar o programa Fortran, no Windows: Start, Programs, Fortran PowerStation 4.0,
Microsoft Developer Studio
2) No Fortran, seguindo o procedimento-padro, criar um projeto com o nome programa7
3) No Fortran, seguindo o procedimento-padro, criar e inserir no projeto o programa-fonte
programa7a.f90
4) Dentro do espao de edio do Fortran, na subjanela maior, copiar exatamente o texto em vermelho
mostrado na Tabela 7.1.
5) Comentrios sobre o programa:
a) Nesta e na prxima seo so vistas trs formas de uso do comando IF (SE). A primeira
mostrada na Tabela 7.2 e usada em diversas linhas do programa7a.f90. O comando IF usado
para tomar decises com base em condies. Se as condies so satisfeitas, executa-se o
comando que est na mesma linha do IF, caso contrrio, no.
b) Por exemplo, na linha IF ( A <

B ) WRITE(*,*) "A eh MENOR do que B" do programa, se o

valor de A for menor do que o valor de B, executado o comando que est aps o parnteses, no
caso, escrever um comentrio. Aquilo que est dentro de parnteses chamado de condio, que
pode ser simples ou composta. Para definir as condies, so usados os chamados operadores
relacionais (Tabela 7.3) e lgicos (Tabela 7.4).
c) Na linha IF ( (A < 0) .AND. (B < 0) ) WRITE(*,*) "A E B sao numeros NEGATIVOS" do
programa, tem-se um exemplo de condio composta. Cada condio simples unida pelos
operadores lgicos .AND. e .OR., que em portugus significam E e OU.
d) Nas condies, alm de variveis, podem ser usados diretamente valores ou expresses
envolvendo valores e variveis.
e) Nas demais linhas do programa, so testados todos os operadores relacionais e lgicos.
6) Executar Build, Compile para compilar o programa.

Captulo 7. Decises e opes

82

7) Gerar o programa-executvel fazendo Build, Build.


Tabela 7.1 Programa7a.f90.
REAL A, B
WRITE(*,*) "Entre com os valores de A e B"
READ(*,*) A, B
IF ( A <

B ) WRITE(*,*) "A eh MENOR do que B"

IF ( A <= B ) WRITE(*,*) "A eh MENOR OU IGUAL a B"


IF ( A >

B ) WRITE(*,*) "A eh MAIOR do que B"

IF ( A >= B ) WRITE(*,*) "A eh MAIOR OU IGUAL a B"


IF ( A == B ) WRITE(*,*) "A eh IGUAL a B"
IF ( A /= B ) WRITE(*,*) "A eh DIFERENTE de B"
IF ( (A < 0) .AND. (B < 0) ) WRITE(*,*) "A E B sao numeros NEGATIVOS"
IF ( (A > 0) .AND. (B > 0) ) WRITE(*,*) "A E B sao numeros POSITIVOS"
IF ( (A > 0) .OR.

(B > 0) ) WRITE(*,*) "A OU B eh um numero POSITIVO"

END

Tabela 7.2 Sintaxe 1 do comando IF.


IF ( condies ) COMANDO
onde condies representa uma ou vrias condies que devem ser satisfeitas para
que COMANDO seja executado.

8) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 7.1,
dentro da qual tem-se:
a) Na primeira linha, o comentrio Entre com os valores de A e B, resultado do comando
WRITE(*,*) "Entre com os valores de A e B" do programa.

Captulo 7. Decises e opes

83

b) Na segunda linha, o programa pra e fica aguardando que sejam fornecidos os valores das
variveis A e B, resultado do comando READ(*,*) A, B do programa. Para que o programa
continue sua execuo necessrio digitar 1.0 2.0, por exemplo, e, em seguida, clicar na tecla
enter.
c) Em seguida so apresentados os comentrios correspondentes aos comandos IF cujas condies
foram satisfeitas para os valores de A e B.
Tabela 7.3 Operadores relacionais do FORTRAN.
Operador

Significado

<

menor

<=

menor ou igual

>

maior

>=

maior ou igual

==

igual

/=

diferente

Tabela 7.4 Operadores lgicos do FORTRAN.


Operador

Significado

.AND.

.OR.

ou

Figura 7.1 Resultado do programa7a.f90 para A = 1.0 e B = 2.0.


9) At entender, comparar os resultados da execuo do programa7a.f90, mostrados na Figura 7.1, com
cada linha do programa-fonte onde exista um comando IF.
10) Executar novamente o programa com A = 1 e B = 1. At entender, comparar os novos resultados,
mostrados na Figura 7.2, com cada linha do programa-fonte onde exista um comando IF.

Captulo 7. Decises e opes

84

Figura 7.2 Resultado do programa7a.f90 para A = 1 e B = 1.


11) Executar novamente o programa com A = 1 e B = 2. At entender, comparar os novos resultados,
mostrados na Figura 7.3, com cada linha do programa-fonte onde exista um comando IF.

Figura 7.3 Resultado do programa7a.f90 para A = 1 e B = 2.


12) Executar novamente o programa com outros valores para A e B. At entender, comparar os novos
resultados com cada linha do programa-fonte onde exista um comando IF.
7.2 programa7b.f90
1) Nesta seo ser usado o mesmo projeto da seo anterior. Portanto, deve-se executar o seguinte no
Fortran:
a) Clicar sobre o nome do programa-fonte
b) Edit, Cut para retirar o programa-fonte do projeto.
2) No Fortran, seguindo o procedimento-padro, criar e inserir no projeto o programa-fonte
programa7b.f90
3) Dentro do espao de edio do Fortran, na subjanela maior, copiar exatamente o texto em vermelho
mostrado na Tabela 7.5.
4) Comentrios sobre o programa:
a) Este programa foi escrito para extrair as duas razes de uma equao do 2o grau.

Captulo 7. Decises e opes

85

b) Nesta seo mostrada e testada a segunda forma de uso do comando IF (SE), cuja sintaxe
apresentada na Tabela 7.6 e usada no programa7b.f90. Esta estrutura do comando IF permite que,
se as condies so satisfeitas, sejam executados diversos comandos do programa escritos em
vrias linhas. Se as condies no so satisfeitas, so executados os comandos que esto entre o
comando ELSE e o END IF.
Tabela 7.5 Programa7b.f90.
REAL A, B, C
REAL D, X1, X2
WRITE(*,*) "Entre com os valores de A, B e C, onde"
WRITE(*,*) "A*(X**2) + B*X + C = 0"
READ(*,*) A, B, C
D = (B**2) - 4.0 * A * C
IF ( D >= 0.0 ) THEN
X1 = ( -B + SQRT(D) ) / ( 2.0 * A )
X2 = ( -B - SQRT(D) ) / ( 2.0 * A )
WRITE(*,*) "A primeira raiz real eh = ", X1
WRITE(*,*) "A segunda

raiz real eh = ", X2

ELSE
X1 = -B / ( 2.0 * A )
X2 = SQRT(ABS(D)) / ( 2.0 * A )
WRITE(*,*) "A primeira raiz complexa eh = ", X1, " + ", X2, " i"
WRITE(*,*) "A segunda

raiz complexa eh = ", X1, " - ", X2, " i"

END IF
END

c) Se no existir necessidade de comandos entre o ELSE e o END IF, pode-se usar a estrutura do
comando IF mostrada na Tabela 7.7.
d) Recomenda-se identar, isto , deslocar para a direita os comandos entre o IF (SE) e o ELSE
(SENO), e entre o ELSE e o END IF, para que sejam facilmente visualizados os comandos que
so ou no executados. Um exemplo desta recomendao mostrado no programa7b.f90, na
Tabela 7.5.
Captulo 7. Decises e opes

86

e) As trs formas de uso do comando IF, mostradas nas Tabelas 7.2, 7.6 e 7.7, podem ser combinadas
entre si, cada uma podendo ser inserida dentro das estruturas das outras.
Tabela 7.6 Sintaxe 2 do comando IF.
IF ( condies ) THEN
BLOCO 1 (uma ou vrias linhas de programa com comandos)
ELSE
BLOCO 2 (uma ou vrias linhas de programa com comandos)
END IF
onde condies representa uma ou vrias condies que devem ser satisfeitas para
que o bloco 1 seja executado;
se as condies no forem satisfeitas, o bloco 2 executado.

Tabela 7.7 Sintaxe 3 do comando IF.


IF ( condies ) THEN
BLOCO (uma ou vrias linhas de programa com comandos)
END IF
onde condies representa uma ou vrias condies que devem ser satisfeitas para
que o bloco de linhas de programa seja executado.

5) Executar Build, Compile para compilar o programa.


6) Gerar o programa-executvel fazendo Build, Build.
7) Ao se executar o programa, atravs de Build, Execute, surge uma janela do DOS, mostrada na
Figura 7.4, dentro da qual tem-se:
a) Na primeira linha, o comentrio Entre com os valores de A, B e C, onde, resultado do comando
WRITE(*,*) "Entre com os valores de A, B e C, onde" do programa.

b) Na segunda linha, o comentrio A*(X**2) + B*X + C = 0, resultado do comando WRITE(*,*)


"A*(X**2) + B*X + C = 0" do programa.

c) Na terceira linha, o programa pra e fica aguardando que sejam fornecidos os valores das
variveis A, B e C, resultado do comando READ(*,*) A, B, C do programa. Para que o
programa continue sua execuo necessrio digitar 1 5 6, por exemplo, e, em seguida, clicar
na tecla enter.
Captulo 7. Decises e opes

87

d) Em seguida so apresentados os resultados correspondentes ao bloco do programa selecionado em


funo da condio testada no comando IF.

Figura 7.4 Resultado do programa7b.f90 para A = 1, B = 5 e C = 6.


8) At entender, comparar os resultados da execuo do programa7b.f90, mostrados na Figura 7.4, com
cada linha do programa-fonte.
9) Executar novamente o programa com A = 1, B = 6 e C = 10. At entender, comparar os novos
resultados, mostrados na Figura 7.5, com cada linha do programa-fonte.

Figura 7.5 Resultado do programa7b.f90 para A = 1, B = 6 e C = 10.


10) Executar novamente o programa com outros valores para A, B e C. At entender, comparar os
novos resultados com cada linha do programa-fonte.
7.3 programa7c.f90
1) Nesta seo ser usado o mesmo projeto da seo anterior. Portanto, deve-se executar o seguinte no
Fortran:
a) Clicar sobre o nome do programa-fonte
b) Edit, Cut para retirar o programa-fonte do projeto.
2) No Fortran, seguindo o procedimento-padro, criar e inserir no projeto o programa-fonte
programa7c.f90

Captulo 7. Decises e opes

88

3) Dentro do espao de edio do Fortran, na subjanela maior, copiar exatamente o texto em vermelho
mostrado na Tabela 7.8.
Tabela 7.8 Programa7c.f90.
INTEGER A
WRITE(*,*) "Entre com o valor inteiro de A"
READ(*,*) A
SELECT CASE ( A )
CASE ( -1000:1 )
WRITE(*,*) "Valor de A estah entre -1000 e 1"
CASE ( 2, 4 )
WRITE(*,*) "Valor de A eh 2 ou 4"
CASE ( 3 )
WRITE(*,*) "Valor de A eh 3"
CASE ( 5:2000 )
WRITE(*,*) "Valor de A estah entre 5 e 2000"
CASE DEFAULT
WRITE(*,*) "Valor de A eh menor do que -1000 ou maior do que 2000"
END SELECT
END

4) Comentrios sobre o programa:


a) No programa7c.f90 usado um novo comando do FORTRAN: SELECT CASE. Este comando
empregado para escolher apenas uma opo entre vrias e executar o bloco de linhas ou comandos
do programa correspondente opo escolhida. A opo feita em funo de uma varivel do
tipo inteiro ou caracter, chamada de varivel seletora. Cada bloco pode conter uma ou vrias
linhas de programa. A sintaxe deste comando apresentada na Tabela 7.9.
b) O nmero de opes existentes depende de cada caso ou programa em particular.
c) A opo CASE DEFAULT executada se nenhuma das anteriores for satisfeita.

Captulo 7. Decises e opes

89

d) Recomenda-se identar, isto , deslocar para a direita cada opo (CASE) e cada bloco para que
sejam facilmente visualizados os comandos ligados a cada opo. Um exemplo desta
recomendao mostrado no programa7c.f90, na Tabela 7.8.
e) Deve-se notar que em todos os comandos WRITE no usado o valor da varivel A.
Tabela 7.9 Sintaxe do comando SELECT CASE.
SELECT CASE ( variavel )
CASE ( valor1 )
BLOCO 1
CASE ( valor2 )
BLOCO 2
CASE DEFAULT
BLOCO DEFAULT
END SELECT
onde valor representa um valor inteiro, alguns valores separados por vrgula ou,
ainda, um intervalo de valores separados por dois pontos;
apenas o bloco de comandos correspondente ao valor da varivel executado.
A varivel de seleo pode ser do tipo inteiro ou caracter. No caso de varivel
caracter, os valores devem ser strings entre aspas.

5) Executar Build, Compile para compilar o programa.


6) Gerar o programa-executvel fazendo Build, Build.
7) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 7.6,
dentro da qual tem-se:
a) Na primeira linha, o comentrio Entre com o valor inteiro de A, resultado do comando
WRITE(*,*) "Entre com o valor inteiro de A" do programa.

b) Na segunda linha, o programa pra e fica aguardando que seja fornecido o valor da varivel A,
resultado do comando READ(*,*) A do programa. Para que o programa continue sua execuo
necessrio digitar o valor 10 para a varivel A, por exemplo, e, em seguida, clicar na tecla
enter.

Captulo 7. Decises e opes

90

c) Na terceira linha, mostrado um comentrio correspondente opo selecionada em funo do


valor da varivel A.
8) At entender, verificar se o resultado da execuo do programa7c.f90, mostrado na Figura 7.6, est
correto em funo do valor da varivel A e o comentrio correspondente opo selecionada.
9) Executar novamente o programa com A = 2. At entender, verificar se o novo resultado da execuo
do programa7c.f90 est correto em funo do valor da varivel A e o comentrio correspondente
opo selecionada.
10) Repetir o item 9 com A = 50.
11) Repetir o item 9 com A = 2345.
12) Repetir o item 9 com outro valor qualquer.
13) Encerrar a sesso seguindo o procedimento-padro.

Figura 7.6 Resultado do programa7c.f90 para A = 10.


7.4 EXERCCIOS
Exerccio 7.1
Editar um programa-fonte em FORTRAN para executar o seguinte algoritmo (passos):
1) Ler os valores inteiros de trs variveis, denotadas por A, B e C
2) Determinar qual das variveis tem o menor e o maior valor
Exerccio 7.2
Alterar o programa7b.f90 para que no ocorra erro de execuo quando o usurio entrar com valor nulo
para a varivel A, e que seja calculado e escrito o valor da nica raiz deste caso.
Exerccio 7.3
Editar um programa-fonte em FORTRAN para calcular as razes de uma equao algbrica cbica.
Exerccio 7.4
Editar um programa-fonte em FORTRAN para executar o seguinte algoritmo (passos):
Captulo 7. Decises e opes

91

1) Mostrar na tela uma lista com pelo menos 4 opes de clculo: 1 = mdulo de A; 2 = raiz quadrada de
A; 3 = exponencial de A; 4 = logaritmo de A
2) Ler o valor da opo de clculo desejada
3) Ler o valor real da varivel A
4) Calcular o resultado de A para a opo escolhida pelo usurio
5) Mostrar o resultado de A

Captulo 7. Decises e opes

92

ANEXO C. APOSTILA DE FORTRAN

C.7 CAP.8 - CICLOS

119

Captulo 8. CICLOS

OBJETIVOS DO CAPTULO

Conceito de ciclo

Comandos do FORTRAN: DO END DO, EXIT

8.1 programa8a.f90
Para inicializar as atividades deste captulo, deve-se executar:
1) Para acessar o programa Fortran, no Windows: Start, Programs, Fortran PowerStation 4.0,
Microsoft Developer Studio
2) No Fortran, seguindo o procedimento-padro, criar um projeto com o nome programa8
3) No Fortran, seguindo o procedimento-padro, criar e inserir no projeto o programa-fonte
programa8a.f90
4) Dentro do espao de edio do Fortran, na subjanela maior, copiar exatamente o texto em vermelho
mostrado na Tabela 8.1.
Tabela 8.1 Programa8a.f90.
INTEGER A
A = 20
WRITE(*,*) "Valor de A antes do ciclo =", A
DO A = 1, 10, 1
WRITE(*,*) "Valor de A dentro do ciclo =", A
END DO
WRITE(*,*) "Valor de A depois do ciclo =", A
END

5) Neste programa so usados dois novos comandos do FORTRAN: DO e END DO, que definem um
ciclo. Ele so usados para executar vrias vezes uma ou mais linhas do programa. Explicaes gerais
sobre o seu funcionamento so apresentadas na prxima seo.
6) Executar Build, Compile para compilar o programa.

Captulo 8. Ciclos

93

7) Gerar o programa-executvel fazendo Build, Build.


8) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 8.1,
dentro da qual tem-se:
a) Na primeira linha, o valor corrente ou atual da varivel A na memria do computador, resultado
do comando WRITE(*,*) "Valor de A antes do ciclo =", A do programa. O valor escrito,
20, resultado da linha anterior do programa, A = 20.
b) Da segunda dcima-primeira linha, o programa executa 10 vezes a linha WRITE(*,*) "Valor
de A dentro do ciclo =", A porque ela est dentro de um ciclo definido pelos comandos DO

e END DO. Deve-se notar que o valor da varivel A muda a cada repetio do ciclo.
c) Na dcima-segunda linha, o programa escreve o valor da varivel A como resultado da linha
WRITE(*,*) "Valor de A depois do ciclo =", A , que j est fora do ciclo.

Figura 8.1 Resultado do programa8a.f90.


9) Explicaes gerais sobre o funcionamento de um ciclo em FORTRAN so apresentadas a seguir.
8.2 programa8b.f90
1) Nesta seo ser usado o mesmo projeto da seo anterior. Portanto, deve-se executar o seguinte no
Fortran:
a) Clicar sobre o nome do programa-fonte
b) Edit, Cut para retirar o programa-fonte do projeto.
2) No Fortran, seguindo o procedimento-padro, criar e inserir no projeto o programa-fonte
programa8b.f90
3) Dentro do espao de edio do Fortran, na subjanela maior, copiar exatamente o texto em vermelho
mostrado na Tabela 8.2.

Captulo 8. Ciclos

94

Tabela 8.2 Programa8b.f90.


INTEGER A, INICIO, FIM, PASSO, B, C
WRITE(*,*) "Entre com os valores inteiros de A, INICIO, FIM e PASSO"
READ(*,*) A, INICIO, FIM, PASSO
WRITE(*,*) "Valor de A antes do ciclo =", A
B = (FIM - INICIO + PASSO) / PASSO
C = MAX ( B, 0 )
WRITE(*,*) "O ciclo deve ser executado", C, " vezes"
DO A = INICIO, FIM, PASSO
WRITE(*,*) "Valor de A dentro do ciclo =", A
END DO
WRITE(*,*) "Valor de A depois do ciclo =", A
END

4) Comentrios sobre o programa:


a) Neste programa so usados dois novos comandos do FORTRAN: DO e END DO, que definem um
ciclo. A sintaxe deles, isto , a forma de utiliz-los mostrada na Tabela 8.3. Todas as linhas do
programa que esto entre os comandos DO e END DO so executadas diversas vezes.
b) A definio de um ciclo envolve quatro variveis do tipo inteiro: A, INICIO, FIM e PASSO. Os
nomes delas podem ser outros quaisquer. Quando a execuo do programa chega a um comando
DO, a seqncia a seguinte:
b.1) A varivel A assume o valor da varivel INICIO
b.2) Verifica-se se deve-se entrar ou no no ciclo em funo dos valores das variveis
INICIO, FIM e PASSO, conforme explicao do item c abaixo
b.3) No caso de se entrar no ciclo:
b.3.1) So executadas todas as linhas do programa at se chegar ao comando END
DO
b.3.2) Retorna-se linha do comando DO
b.3.3) O valor da varivel A passa a ser A = A + PASSO
b.3.4) Retorna-se ao item b.2 acima

Captulo 8. Ciclos

95

b.4) No caso de no se entrar no ciclo, a execuo do programa passa diretamente linha


que estiver abaixo do comando END DO
Tabela 8.3 Sintaxe do comando DO.
DO A = INICIO, FIM, PASSO
BLOCO (uma ou vrias linhas de programa com comandos)
END DO
onde os valores das variveis INICIO, FIM e PASSO devem ter sido definidos antes da
execuo do programa chegar ao comando DO.

c) O nmero de execues (varivel C) do ciclo depende das variveis do tipo inteiro INICIO, FIM e
PASSO, calculado atravs de

FIM

INICIO +
PASSO

= MAX ( B, 0 )

PASSO

(8.1)

(8.2)

onde o resultado da funo MAX(B,0) o maior valor entre a varivel B e o valor zero. O
resultado de C pode ser 0, 1, 2, 3 etc. Portanto, o ciclo pode ser executado uma vez, diversas vezes
ou nenhuma vez.
d) O valor da varivel PASSO pode ser positivo ou negativo; nulo, no. Portanto, pode-se ter um
ciclo cujo valor de A progressivo (PASSO > 0) ou regressivo (PASSO < 0). Se PASSO = 1, seu
valor no precisa ser declarado no comando DO.
e) O valor da varivel A no pode ser alterado nas linhas que esto entre os comando DO e END
DO. Se isso for feito, resultar num erro de compilao.
f) Recomenda-se identar, isto , deslocar para a direita todas as linhas do programa que esto entre
os comandos DO e END DO para que facilmente se perceba os comandos que compem o ciclo.
Exemplos desta recomendao so mostrados no programa8a.f90 (Tabela 8.1) e no
programa8b.f90 (Tabela 8.2).
5) Executar Build, Compile para compilar o programa.
6) Gerar o programa-executvel fazendo Build, Build.

Captulo 8. Ciclos

96

7) Ao se executar o programa, atravs de Build, Execute, surge uma janela do DOS, mostrada na
Figura 8.2, dentro da qual tem-se:
a) Na primeira linha, o comentrio Entre com os valores inteiros de A, INICIO, FIM e PASSO,
resultado do comando WRITE(*,*) "Entre com os valores inteiros de A, INICIO, FIM
e PASSO" do programa.

b) Na segunda linha, o programa pra e fica aguardando que sejam fornecidos os valores das
variveis A, INICIO, FIM e PASSO, resultado do comando READ(*,*) A, INICIO, FIM,
PASSO do programa. Para que o programa continue sua execuo necessrio digitar 20 1 10 1,

por exemplo, e, em seguida, clicar na tecla enter.


c) Em seguida so apresentados os resultados correspondentes execuo do programa.

Figura 8.2 Resultado do programa8b.f90 para A = 20, INICIO = 1, FIM = 10 e PASSO = 1.


8) At entender, analisar os resultados do programa8b.f90, mostrados na Figura 8.2, considerando cada
linha do programa-fonte e as explicaes descritas no item 4 acima. Deve-se notar que o ciclo do
programa8b.f90 idntico ao do programa8a.f90, Figura 8.1, devido aos valores usados para as
variveis INICIO, FIM e PASSO. Neste caso tem-se um ciclo progressivo, pois PASSO > 0.
9) Executar novamente o programa com A = 20, INICIO = 5, FIM = 5 e PASSO = 1. Neste caso
tem-se um ciclo progressivo, pois PASSO > 0. At entender, analisar os novos resultados, mostrados
na Figura 8.3, considerando cada linha do programa-fonte e as explicaes descritas no item 4 acima.
10) Executar novamente o programa com A = 20, INICIO = 20, FIM = 11 e PASSO = 1. Neste caso
tem-se um ciclo regressivo, pois PASSO < 0. At entender, analisar os novos resultados, mostrados
na Figura 8.4, considerando cada linha do programa-fonte e as explicaes descritas no item 4 acima.

Captulo 8. Ciclos

97

Figura 8.3 Resultado do programa8b.f90 para A = 20, INICIO = 5, FIM = 5 e PASSO = 1.

Figura 8.4 Resultado do programa8b.f90 para A = 20, INICIO = 20, FIM = 11 e PASSO = 1.
11) Executar novamente o programa com A = 20, INICIO = 12, FIM = 15 e PASSO = 2. Neste caso
tem-se um ciclo progressivo, pois PASSO > 0. At entender, analisar os novos resultados, mostrados
na Figura 8.5, considerando cada linha do programa-fonte e as explicaes descritas no item 4 acima.
12) Executar novamente o programa com A = 20, INICIO = 11, FIM = 20 e PASSO = 1. Neste caso
tem-se um ciclo regressivo, pois PASSO < 0. At entender, analisar os novos resultados, mostrados
na Figura 8.6, considerando cada linha do programa-fonte e as explicaes descritas no item 4 acima.
8.3 programa8c.f90

1) Nesta seo ser usado o mesmo projeto da seo anterior. Portanto, deve-se executar o seguinte no
Fortran:

Captulo 8. Ciclos

98

a) Clicar sobre o nome do programa-fonte


b) Edit, Cut para retirar o programa-fonte do projeto.

Figura 8.5 Resultado do programa8b.f90 para A = 20, INICIO = 12, FIM = 15 e PASSO = 2.

Figura 8.6 Resultado do programa8b.f90 para A = 20, INICIO = 11, FIM = 20 e PASSO = 1.
2) No Fortran, seguindo o procedimento-padro, criar e inserir no projeto o programa-fonte
programa8c.f90

3) Dentro do espao de edio do Fortran, na subjanela maior, copiar exatamente o texto em vermelho
mostrado na Tabela 8.4.
4) Comentrios sobre o programa:
a) No programa8c.f90 usado um novo comando do FORTRAN: EXIT. Este comando empregado
para que a execuo de um ciclo seja interrompida e a execuo do programa continue na linha
seguinte ao comando END DO.
b) No programa8c.f90 tambm exemplificado o uso da varivel A em operaes ou clculos dentro
de um ciclo. Conforme j foi mencionado, o valor de A no pode ser alterado por comandos
dentro do ciclo. Mas o valor que a varivel A assume a cada execuo do ciclo pode ser usado em
outros clculos ou variveis.
c) No caso, a varivel SOMA zerada antes do incio do ciclo. A cada execuo do ciclo, seu valor
alterado com o valor atual da varivel A. O mesmo ocorre com a varivel CUBO.

Captulo 8. Ciclos

99

d) Quando a condio estipulada na linha IF ( SOMA > FIM ) EXIT do programa for satisfeita, o
comando EXIT ser executado. Em seguida, a execuo do programa transferida para a linha
WRITE(*,*) "Valor de A depois do ciclo =", A do programa, que a linha seguinte ao

comando END DO.


Tabela 8.4 Programa8c.f90.
INTEGER A, INICIO, FIM, PASSO, SOMA, CUBO
WRITE(*,*) "Entre com os valores inteiros de INICIO, FIM e PASSO"
READ(*,*) INICIO, FIM, PASSO
SOMA = 0
CUBO = 0
DO A = INICIO, FIM, PASSO
SOMA = SOMA + A
CUBO = CUBO + A**3
WRITE(*,*) "A, SOMA, CUBO =", A, SOMA, CUBO
IF ( SOMA > FIM ) EXIT
END DO
WRITE(*,*) "Valor de A depois do ciclo =", A
END

5) Executar Build, Compile para compilar o programa.


6) Gerar o programa-executvel fazendo Build, Build.
7) Ao se executar o programa, atravs de Build, Execute, surge uma janela, mostrada na Figura 8.7,
dentro da qual tem-se:
a) Na primeira linha, o comentrio Entre com os valores inteiros de INICIO, FIM e PASSO,
resultado do comando WRITE(*,*) "Entre com os valores inteiros de INICIO, FIM e
PASSO" do programa.

b) Na segunda linha, o programa pra e fica aguardando que sejam fornecidos os valores das
variveis INICIO, FIM e PASSO, resultado do comando READ(*,*) INICIO, FIM, PASSO do
programa. Para que o programa continue sua execuo necessrio digitar 1 10 1, por exemplo,
e, em seguida, clicar na tecla enter.
c) Em seguida so apresentados os resultados correspondentes execuo do programa.

Captulo 8. Ciclos

100

8) At entender, analisar os resultados do programa8c.f90, mostrados na Figura 8.7, considerando cada


linha do programa-fonte e as explicaes descritas no item 4 acima.
9) Executar novamente o programa com INICIO = 5, FIM = 5 e PASSO = 2. At entender, analisar
os novos resultados, mostrados na Figura 8.8, considerando cada linha do programa-fonte e as
explicaes descritas no item 4 acima.
10) Encerrar a sesso seguindo o procedimento-padro.

Figura 8.7 Resultado do programa8c.f90 para INICIO = 1, FIM = 10 e PASSO = 1.

Figura 8.8 Resultado do programa8c.f90 para INICIO = 5, FIM = 5 e PASSO = 2.


8.4 EXERCCIOS
Exerccio 8.1

Editar um programa-fonte em FORTRAN para executar o seguinte algoritmo (passos):


1) Ler o valor inteiro de uma varivel, denotada por N
2) Determinar se N um nmero primo
3) Mostrar o resultado, isto , se N um nmero primo ou no.
Exerccio 8.2

Editar um programa-fonte em FORTRAN para executar o seguinte algoritmo (passos):


Captulo 8. Ciclos

101

1) Ler o valor inteiro de uma varivel, denotada por N


2) Calcular o fatorial de N apenas para N 0
3) Mostrar o resultado do fatorial de N
Exerccio 8.3

Editar um programa-fonte em FORTRAN para calcular e escrever num arquivo o valor de cada termo de
uma progresso aritmtica, cujo problema est definido no exerccio 5.1
Exerccio 8.4

Editar um programa-fonte em FORTRAN para calcular e escrever num arquivo o valor de cada termo de
uma progresso geomtrica, cujo problema est definido no exerccio 6.2

Captulo 8. Ciclos

102

You might also like