• Nenhum resultado encontrado

Instituto de Física Armando Dias Tavares Departamento de Física Aplicada e Termodinâmica

N/A
N/A
Protected

Academic year: 2019

Share "Instituto de Física Armando Dias Tavares Departamento de Física Aplicada e Termodinâmica"

Copied!
64
0
0

Texto

(1)

Departamento de Física Aplicada e Termodinâmica

Física Computacional A

DFAT/

FiscompFA

Primeiros Programas: constantes e variáveis tipo caractere

Professor: Anibal Leonardo Pereira

última atualização: março 2011

Estagiários:

2004/1 a 2005/2

Luciana Conceição Iecker Lima

2010/1

Magali dos Santos Leodato

2009/1 a 2010/2

Filipe da Fonseca Cordovil

Monitores:

2001/1

Diego Chagas Garcia

2002/2

Erick Azevedo Meirelles

2003/1 a 2003/2

Luciana Maria dos Santos Azevedo

2003/1 a 2003/2

Tatiana Gonçalves Martins

2003/1 a 2005/2

Renato Nascente Júnior

2004/1 a 2005/2

Públio Martins Romano M. Carreiro

2006/1 a 2007/2

Luiz Fernando Rosalba Telles Souza

2006/1 a 2007/2

Paulo Henrique Pfitzner

2008/1 a 2008/2

Filipe da Fonseca Cordovil

2008/1 a 2009/2

Magali dos Santos Leodato

2011/1 a

Filipe da Fonseca Cordovil

1. Introdução

Existem inúmeras linguagem de programação disponíveis para uso, entre as quais podemos citar: Fortran, C,

Pascal, C++, Java, etc.. Cada linguagem de programação foi criada e desenvolvida para tornar fácil a

implementação de um certo tipo de tarefa. Cada linguagem de programação possui qualidades e fraquezas.

Dentre as várias linguagens de programação existentes, Fortran é importante para quem trabalha na área

científica, porque muitas atividades necessárias à ciência envolvem o uso de cálculo numérico. Além disto, a

linguagem de programação Fortran é fácil de ser aprendida, muito eficiente para a realização de cálculos

numéricos, é orientada a objetos e (

uma das razões mais importante

) pode ser utilizada na

computação em paralelo

.

Por estes motivos, o Fortran é uma linguagem muito importante, principalmente, para os físicos e engenheiros.

A linguagem de programação C, própria para controlar tarefas ligadas ao sistema operacional dos computadores, também pode ser utilizada para a realização de cálculos numéricos, mas apresenta um grau de dificuldade maior de aprendizagem do que o Fortran. A linguagem de programação C++, que é uma linguagem orientada a objeto, também pode ser utilizada, mas também apresenta grande dificuldade de aprendizado.

A título de curiosidade, mas também porque permite evidenciar uma atitude bastante equivocada (não muito difícil de ser encontrada), apresenta-se um texto tirado do livro Classical Fortran – Programming for engineering and scientific applications de Michael Kupferschimd de 2002:

(2)

Tradução livre:

Faculdades frequentemente convidam professores e administradores de outras escolas para avaliar o currículo local. Um destes visitantes terminando sua visita no departamento de ciência computacional, estava quase a ponto de emitir seu parecer favorável ao responsável pela escola, quando alguém descuidadamente mencionou que havia ministrado uma disciplina de método numérico utilizando Fortran. Incrédulo, o visitante arqueou um sobrancelha e olhando com ar superior, subitamente deixa escapar “FORTRAN”. Então com ar de desdém pronuncia “é a língua dos ignorantes”. Eu não estava presente para apreciar este incidente, então somente posso assumir que o relato que ouvi é correto, mas mesmo sendo questionável ele dá uma boa estória e destaca vários pontos importantes sobre o Fortran. Esta atitude motivou a escrita deste livro.

Resumidamente, pode-se dizer que as principais razões para o uso da linguagem de programação Fortran são:

alta performance: poucas linguagem de programação têm performance comparável ao Fortran nos

cálculos numéricos

linguagem moderna: permite trabalhar de forma bastante adequada as complexidades apresentadas

forte nos problemas numéricos: mas, também possibilita implementar tarefas não numéricas

muito utilizada no campo científico: especialmente pelos físicos e engenheiros (

em 1996: 32% dos usuários de estações de trabalho envolvidos com engenharia e ciência usavam o Fortran

)

dispõe de muitas

bibliotecas (

grátis e comerciais

) de alta qualidade contendo inúmeras funções e

sub-rotinas disponíveis para uso

fácil de aprender e usar: mais fácil do que a linguagem C ou a linguagem C++

linguagem orientada a objeto permite escrever programas sob o paradigma de Orientação a Objeto

computação em paralelo: permite escrever programas para serem usados na computação em paralelo.

Computação em paralelo é cada vez mais necessário para a programação de alta performance

2. Primeiro Programa em Fortran

A linguagem de programação utilizada em nossa disciplina é o Fortran: Fortran 2003.

IMPORTANTE

No momento, o compilador gfortran, utilizado na disciplina, não é considerado um compilador Fortran

2003, mas sim um compilador Fortran 95 com extensões gnu (

extensões disponibilizadas pela gnu

).

Isto se deve ao fato de padrão Fortran 95 estar completamente implementado no compilador gfortran

enquanto existem algumas especificações do padrão Fortran 2003 ainda não implementadas.

ENTRETANTO, as características do padrão Fortran 2003 ainda não implementadas no compilador

gfortran não impedem que ele seja utilizado como um compilador Fortran 2003 para a maioria dos

programas escritos em Fortran 2003 (

a menos, claro, que se utilize explicitamente alguma característica ainda ausente

).

Porque nossa disciplina não fará uso de nenhuma das características do Fortran 2003 que ainda estão

ausentes no compilador gfortran

e porque a implementação delas está sendo feito e deverá estar

completa num futuro próximo, optamos por fazer uso do Fortran 2003 e não do Fortran 95.

Tudo isto, significa que o gfortran se comporta como um compilador Fortran 2003, a menos que se

necessite de alguma característica ainda não implementada no compilador. Como elas (

para nós

) são de

uso pouco frequente, o compilador – NA PRÁTICA – se comporta como um compilador Fortran 2003.

(3)

Fortran 95 completo com extensão gnu disponíveis (

as extensões do gnu

) ou

Fortran 2003 ainda não finalizado com extensões gnu ou

Fortran 2008 ainda não finalizado com extensões gnu

Ainda não implementado

Conforme dito, o compilador gfortran (

que utilizamos

) usualmente compila os programas usando o padrão Fortran

2003 (

na realidade o Fortran 2008

). Ele não é chamado de Fortran 2003 porque ainda restam algumas características

do padrão Fortran 2003 (

e também do padrão Fortran 2008

) não implementadas no compilador.

Do site do gnu (

http://gcc.gnu.org/wiki/Fortran2003

– em 08/02/2011) as seguintes características são citadas

como ainda não implementadas no compilador gfortran:

Assíncronos IO implementa assíncronos real I/O, atualmente isto é síncrono

Extensão de especificadores de formato I/O especificadores i/o do tipo não default

Exceções IEEE (TR15580)

Finalização de sub-rotinas

Opção KIND= especificando MACLOC, MINLOC e SHAPE

Alguns tipos de expressões de inicialização

Expressões não inicializadas no seletor de caso

I/O de tipo definido pelo usuário

Polimorfismo completo (

incluindo polimorfismo ilimitado

)

Esta folha de atividades inicia a apresentação e uso da linguagem de programação Fortran (

Fortran 2003

). Por

este motivo ela contém conceitos básicos do Fortran e também os conhecimentos necessários à execução de um

programa Fortran, em nosso ambiente de trabalho (

ambiente Linux – o uso do ambiente MS-Windows não é muito diferente

).

Todas as atividades desta folha de atividades foram especialmente projetadas para facilitar o processo de

aprendizado, portanto

não deixe de ler cuidadosamente o material apresentado

, pratique e (

principalmente

)

procure entendê-los. A maior parte dos conceitos serão abordados novamente em folhas subsequentes, mas nem

todos, por isto não acumule dúvidas.

Leitura prévia

:

é muito conveniente que se faça uma leitura prévia desta folha como um todo antes de iniciar o trabalho. Leia completamente a folha de atividade sem se preocupar em decorar ou entender todos os detalhes apresentados, durante a leitura prévia. A intenção de fazer uma leitura prévia é a de obter uma visão global do assunto, o que ajudará bastante quando for iniciar o trabalho

O parágrafo que segue, que modifiquei fazendo a troca de duas palavras scripting → programming e scripts → programs

escrito por Mendel Cooper, representam bem a filosofia adotada em nossa folha de atividades. Não poderia escrever, sucintamente, algo tão bom quanto ele o fez:

The exercises and heavily-commented examples invite active reader participation, under the premise that the only way to really learn programming is to write programs.

Paragrafo modificado do livro:

Advanced Bash-Scripting Guide – An in-depth exploration of the art of shell scripting Mendel Cooper

Tradução Livre: Os exercícios e exemplos detalhadamente comentados convida à participação do leitor ativo sob a premissa de que a única forma de realmente aprender programação é escrevendo programas.

Programas exemplos

Não deixe de escrever e executar todos os programas exemplos.

Esta e as outras folhas de atividades contêm vários exemplos. Você tem que escrelos e executá-los para

vê-los funcionando. Ao fazer isto, você estará estudando e treinado o uso da linguagem de programação Fortran.

(4)

Atividades sob sua responsabilidade

Algumas atividades estarão sob sua inteira responsabilidade, claro, elas não podem deixar de ser feitas. Elas são

importantes.

Esta Folha contém

17 Atividades

11 atividades exemplos

02 atividades exemplos com ajustes e/ou acréscimos

04 atividades para serem feitas

00 atividades para serem ajustadas e/ou acrescidas

Seu professor de laboratório (e/ou teoria) poderá alterar esta relação !

Atividade 01

Nossa primeira atividade consiste em escrever o código fonte de um programa Fortran, compilar e

executar o programa.

Entregar em meio magnético:

1. programa: mensagem_01 mensagem_01.f03

Exemplo:

Este será nosso primeiro programa em Fortran, por isto ele é bastante simples. Usando o editor de texto, escreva o programa.

Depois usando um terminal, compile-o. A seguir execute-o.

Não deixe de ler as informações disponibilizadas pois elas servirão de apoio para a implementação de todos os passos necessários à realização da atividade

O processo para escrever, compilar e executar um programa envolve os seguintes passos:

Criar um diretório de trabalho

Escrever o programa fonte em Fortran

salvar o programa no diretório de trabalho

Abrir um terminal

fazer o diretório de trabalho ser o diretório onde o programa foi salvo

Compilar o programa

Executar o programa

O

passo-a-passo

que segue ajudará na implementação da tarefa.

1. Criando o diretório de trabalho

Para manter o trabalho organizado você tem que criar um diretório de trabalho (

uma pasta

) na sua conta.

Pode ser na sua área de trabalho (

desktop

) ou então onde você julgar mais conveniente, mas não deve

ser no seu pendrive, pois trabalhar no HD do computador é mais rápido e seguro.

O nome do diretório que está sendo criado segue a regra indicada na sequência:

turma nome folha-atividades (

sem espaços entre eles

)

O nome do diretório criado será similar a: 03filipe01

03filipe01

Turma: 03

Aluno: filipe (

use somente letras minúsculas

)

Folha de Atividades: 01

(5)

A

home page

da disciplina contém o link

Datas-e-Atividades

onde é disponibilizada uma

tabela com os códigos utilizados para identificar as folhas de atividades. Consulte este

link para obter o código referente à folha de atividades em uso.

Para criar o diretório de trabalho, abra o navegador de arquivo:

No painel da esquerda, clique em Área de trabalho.

Isto abrirá a área de trabalho (

desktop

) no painel direito.

Coloque o ponteiro do mouse dentro do painel direito e clique no botão direito do mouse.

Escolha a opção criar Criar pasta.

(6)

2. Escrevendo o programa Fortran

Para escrever o programa abra o editor de texto gedit.

Após o editor gedit estar disponível para uso, escreva o código fonte do programa

mensagem_01

(

texto mostrado a seguir

):

program mensagem_01

!--- ! Propósito: Escrever uma mensagem na tela do micro

!--- ! Arquivo:mensagem_01.f03

! Autor: Anibal L. Pereira 27/11/2010 !Revisões:

!---

print*

print*," =========================="

print*," Programa mensagem_01 " print*," =========================="

print*

print*,"O programa escreve, na tela do micro, o conjunto de mensagens abaixo: " print*

print*,"---" print*

print*," (*) Linha de comentário " print*

print*," o programa contém 7 linhas de comentários: "

print*," elas são as linhas que iniciam com o caractere exclamação: ! " print*

print*," (*) Constante Literal do tipo caractere " print*

print*," também chamado de string "

print*," são os textos envolvidos por aspas: "" " print*

print*," (*) instrução PRINT" print*

print*,"o código fonte do programa contém 23 instruções print " print*

end program mensagem_01

3. Salvando o arquivo

(7)

Depois que a janela referente a Salvar como … abrir, navegue pelos diretório até entra no diretório

que criou (

exemplo: 03anibal01). Escreva o nome do arquivo que será salvo na caixa chamada nome:

Nesta primeira atividade o nome do arquivo é:

mensagem_01.f03

(

assim mesmo como está escrito, tudo em letras minúsculas

).

Depois clique no botão salvar.

Pronto ! Você salvou o programa da atividade 1 no diretório que criou, com o nome

mensagem_01.f03

4. Abrindo o Terminal

(8)

Depois que a janela do terminal aparece é necessário (

na maioria das vezes é necessário

) mudar o

diretório de trabalho para o diretório que contém o programa (

neste caso o arquivo mensagem_01.f03)

Os seguintes conhecimentos são relevantes:

comando pwd

no prompt do terminal execute o comando pwd

no terminal, escreva pwd seguido de um espaço em branco e pressione a tecla <enter>

(

pwdsignifica print working directory

) este comando mostra no terminal o diretório de trabalho

se não estiver no diretório certo

se o diretório de trabalho não for o diretório que contém o arquivo

mensagem_01.f03

, no terminal,

escreva o comando cd <diretório> para mudar o diretório de trabalho para lá

exemplo: supondo que o programa está no diretório 03anibal01 você deve digitar o seguinte:

cd 03anibal01

ou então digitar o comando que fornece o caminho completo para se chegar até o diretório desejado:

cd "/home/anibal/Área de trabalho/03anibal01"

listando o conteúdo do diretório de trabalho

no prompt do terminal, digite o comando ls -l (

-l é menos letra ele, não menos um)

escreva ls seguido de um espaço em branco seguido de -l para então pressionar a tecla <enter>

isto mostrará o conteúdo do diretório de trabalho, num formato longo (

se preferir use o comando ls

)

(9)

5.

Compilando o programa

Depois de ter escrito e salvo o programa fonte, aberto o terminal e colocado o diretório de trabalho no

diretório onde o programa se encontra você pode compilar o programa.

O processo de compilação cria um programa em linguagem de máquina que o computador pode

executar (

rodar

). Para isto, no prompt do terminal digite o comando:

gfortran -o mensagem_01 mensagem_01.f03

e pressione a tecla <enter>

Atenção:

escreva o comando exatamente como mostrado:

gfortran -o mensagem_01 mensagem_01.f03

Se tudo correu bem, o terminal simplesmente retorna ao aviso de comando (

prompt

) sem emitir

nenhuma mensagem.

Caso exista(m) erro(s) nos códigos fontes do módulo, uma mensagem será emitida. Se isto ocorreu, vá

para o editor de texto e corrija o(s) erro(s), salve o arquivo e repita o processo de compilação.

Depois da compilação do programa contido no arquivo mensagem_01.f03 você terá o programa

executável (

arquivo mensagem_01

) que estará no diretório de trabalho. Verifique isto executando o

comando

ls -l

no terminal ou então usando o navegador de arquivo.

6. Execução do programa

A execução do programa

mensagem_01

é feita assim:

./mensagem_01

isto é, no prompt do terminal, digite um ponto seguido de uma barra seguido do nome do arquivo e

depois pressione a tecla <enter>.

Observe: o nome do programa é

mensagem_01

e do arquivo que contem o programa executável é

mensagem_01

enquanto o nome do arquivo que contém o programa fonte é

mensagem_01.f03

A execução do programa irá mostrar na tela do micro a seguinte saída:

Saída no terminal do computador

anibal@anibaldsk:/home/anibal/03anibal01/$ ./mensagem_01

==========================

Programa mensagem_01 ==========================

O programa escreve, na tela do micro, o conjunto de mensagens abaixo:

---

(*) Linha de comentário

o programa contém 7 linhas de comentários:

elas são as linhas que iniciam com o caractere exclamação: !

(*) Constante Literal do tipo caractere

também chamado de string

são os textos envolvidos por aspas: "

(*) instrução PRINT

o código fonte do programa contém 23 instruções print

(10)

3. O processo de compilação

O texto a seguir fornece informações ligada ao processo de compilação.

Em nosso laboratório o comando gfortran roda o compilador gfortran.

O compilador gfortran desenvolvido pela Fundação Software Livre (

FSF = Free Software Foundation

),

usualmente conhecida como Projeto Gnu, é um compilador Fortran (

Fortran 95 completo e Fortran 2003 com algumas características do padrão Fortran 2003 ainda em implementação – em 10-03-2011

) que pode ser instalado

e utilizado tanto no Linux quanto no MS-Windows.

O compilador gfortran pode ser obtido no endereço: http://gcc.gnu.org/wiki/GFortran

Depois de ter escrito e salvo o programa num arquivo, a criação do programa executável se faz pelo processo de

compilação.

Programa executável é o programa que o computador utiliza para rodar (

executar

) as tarefas especificadas no

código fonte do programa (

também se usa a expressão inglesa run

).

Atualmente a maioria dos compiladores adota a estratégia de utilizar somente um comando para realizar a

compilação e o carregamento (

link-edição

) do programa fonte. As duas tarefas (

que são diferentes

) são realizadas

sequencialmente, dando a impressão de serem uma só.

Na realidade a compilação é a execução somente da etapa um do processo mostra na figura que segue.

Etapas na compilação

Se na etapa um (

compilação

) não for encontrado erro, o compilador passa imediatamente para a etapa dois

(

carregamento ou link-edição

) e gera o programa executável.

Caso exista um erro no código fonte (

ou mais de um erro

) o processo não passa ao carregamento (

link-edição

) e

uma ou mais mensagens de erros são escritas na tela do microcomputador indicando (

ou tentando indicar

) o tipo de

erro e onde ele ocorreu.

Algumas vezes a referência do erro (

ou erros

) que o compilador faz não ajuda muito, porque ela indica que há

um erro numa declaração que não está errada. O que realmente aconteceu é que o compilador não conseguiu

identificar precisamente a causa do erro (

a sua origem

) e portanto não pode ajudar. Neste caso, você deve procurar o

erro nas instruções anteriores da instrução indicada pela mensagem de erro do compilador, desconsiderar o tipo do

erro indicado porque a indicação do erro não está correta. Um erro existe, mas a sua indicação, pelo compilador,

não feita de forma correta. Apesar disto e erro tem que ser identificado e eliminado. Este processo, as vezes, é

difícil mesmo.

(11)

O que fazer quando o compilador encontra erro(s)

Se existe um erro no programa (

ou mais de um

), o compilador indica isto. Leia a mensagem emitida pelo

compilador. Ela identifica a origem (unidade de programa), o tipo de erro, linha e coluna em que o erro aconteceu.

Dê atenção especial ao primeiro erro encontrado pelo compilador. Retorne ao programa fonte e localize o

primeiro erro para sua correção. Não se preocupe com os erros subsequentes (

segundo em diante

). Elimine o

primeiro erro.

Após ter feito a correção do primeiro erro salve o programa fonte e execute novamente a compilação

Caso ainda existam erros, a compilação será novamente interrompida e nova(s) mensagen(s) de erro(s) será(ão)

mostrada(s). O que fazer? Retorne ao programa fonte para a correção do primeiro erro (

novo primeiro erro

). Salve o

programa fonte corrigido e depois compile novamente o programa.

Repita estes procedimentos tantas vezes quanto necessários, até que o programa compile sem erros criando o

programa executável.

A compilação do programa

O compilador Fortran utilizado em nosso laboratório trabalha no modo texto, isto é, não tem interface

gráfica, por isto ele necessita ser executado num terminal.

Editor gedit e um terminal

Se trabalhou com o editor gedit, abra um terminal e no prompt do terminal entre com o comando:

gfortran -o mensagem_01 mensagem_01.f03

Reforçando o entendimento do processo de compilação

No comando

gfortran -o mensagem_01 mensagem_01.f03

o

"gfortran"

refere-se ao compilador Fortran

depois do

gfortran

foi escrita a chave

"-o"

.

A opção

"-o mensagem_01"

é usado para que o programa executável receba o nome

mensagem_01

. Se esta

opção não for usada o programa criará um executável de nome

a.out

(

no Linux

) ou então

a.exe

(

no MS-Windows

).

O sinal menos ( - ) indica uma opção; a letra "

o

" indica que é a saída (

output

) e o nome que segue a letra "

o

"

(12)

programa executável com o nome

mensagem_01

.

O "

mensagem_01.f03

"

especifica o nome do arquivo que contém os códigos fonte (

programa

) em Fortran que

será lido pelo compilador.

Observe a diferença

:

nome do arquivo que contém os códigos fontes (

o programa escrito

) em Fortran que será lido pelo compilador.

O nome do arquivo que contém o programa escrito em Fortran, não o nome do programa

Se o programa fonte não contiver erro(s) o comando

gfortran -o mensagem_01 mensagem_01.f03

criará o

programa executável

mensagem_01

no diretório atual.

Executando o programa

No prompt do terminal digite o nome do arquivo e pressionar a tecla <enter>

./mensagem_01 <enter>

No Linux, o ponto barra ("

./

" ) é utilizado para indicar o diretório atual. Então

./mensagem_01

significa:

execute o programa executável mensagem_01 que está no diretório em que me encontro no

momento

3.1. Para treinar

Para ver na prática como o compilador se comporta quanto existem erros, deliberadamente, introduza um erro

conhecido no programa e veja o que ocorre no processo de compilação.

Usando o programa mensagem_01:

Remova a letra "p" de uma instrução

print

.

Salve o arquivo. Compile o programa e veja o que acontece. Recomponha o programa.

Remova o asterisco ( *) do instrução

print

em vez de remover a letra " p ".

Salve o arquivo. Compile o programa e veja o que acontece. Recomponha o programa.

Remova uma das aspas (").

Salve o arquivo. Compile o programa e veja o que acontece. Recomponha o programa.

Troque o nome do programa somente na instrução

end program

.

Salve o arquivo. Compile o programa e veja o que acontece. Recomponha o programa.

(13)

4. Programa Fortran

Um programa (p

rograma em Fortran

) pode ser construído utilizando-se quatro tipos de unidades de programa

(program-units). As unidades de programa existentes no Fortran são:

unidade programa principal

(main-program unit)

unidade programa módulo

(module unit)

unidade subprograma externo

(external-subprogram unit)

unidade programa dados em bloco (block-data program unit)

Um programa Fortran consiste de um programa principal e qualquer número (

inclusive zero

) dos outros tipo de

unidades de programa. É possível utilizar qualquer combinação, desde que exista somente um programa principal.

A figura ao lado, mostra o caso geral

entretanto, a melhor forma de se pensar um programa

Fortran é que ele é composto por um programa principal

e tantos módulos quanto se queira ou necessite (

inclusive nenhum módulo

).

A figura que segue evidencia as melhores formas de se pensar um programa em Fortran.

Programa Principal

(

caso mais simples

)

Programa Principal e um Módulo

(

caso comum

)

Programa Principal e vários Módulos

(

muito útil

)

Melhores formas de se pensar um programa Fortran

Unidade de programa dados em bloco

(14)

Subprograma externo

As principais características de um

subprograma externo

, no Fortran 2003, são:

subprograma externo escrito em Fortran

até o padrão FORTRAN 77, subprograma externo era a única forma que o programador podia utilizar

para escrever uma função e uma sub-rotina (

coletivamente identificadas pelo termo procedimento

). A partir

do Fortran 90, o padrão criou maneiras mais eficiente para se dispor de procedimentos. Atualmente,

um subprograma externo escrito em Fortran é completamente desnecessário. Esta forma de criar

procedimentos externos ainda existe no Fortran para manter compatibilidade com as versões

anteriores, portanto

não utilize subprogramas externos escritos em Fortran

subprograma externo escrito em outra língua de programação

subprograma função externa e subprograma sub-rotina externa podem ser utilizadas para acessar

códigos de programação escrito em outra língua de programação (

por exemplo, na linguagem de programação C

). Isto permite que outra língua de programação possa ser utilizada junto com um

programa Fortran. Esta é a forma recomendada de uso para os subprogramas externos no Fortran.

Entretanto, é pouco provável que um usuário comum (

em nosso caso, nós

) necessite fazer uso deste

recurso, porém ele está disponível.

5. Programa Principal

Nossa primeiro atividade realizou uma tarefa bastante simples, por causa disto o programa Fortran escrito

utilizou apenas uma unidade de programa: o programa principal.

O programa Fortran

mensagem_01

(

arquivo: mensagem_01.f03

) é um programa principal Fortran, ou como

usualmente chamamos, um programa.

Veja a diferença:

programa

programa é “aquilo” que irá fazer a tarefa global desejada. Por estar escrito na linguagem de programação Fortran, o mais adequado seria chamá-lo de programa Fortran, mas acaba-se chamando apenas de programa

programa mensagem_01

o programa principal recebeu o nome “mensagem_01”, por isto ele é o programa mensagem_01

programa executável mensagem_01

a compilação do programa com a chave “ -o “ possibilita escolher um nome para o arquivo que conterá o programa executável que será criado. Nós usamos “-o mensagem_01” portanto o arquivo chama-se mensagem_01

Observe que o programa executável mensagem_01 está guardado no arquivo mensagem_01

arquivo mensagem_01.f03

o arquivo que contém o código fonte do programa mensagem_01 chama-se mensagem_01.f03 enquanto o arquivo que contém os códigos em linguagem de máquina (programa executável) chama-se mensagem_01

Observe que temos :

• programa

• programa mensagem_01

• programa mensagem_01 (ou programa executável mensagem_01 ou programa executável

ou programa executávelmensagem_01)

• arquivo mensagem_01

• arquivo mensagem_01.f03

(15)

Recordando

: o programa Fortran

mensagem_01

, foi criado utilizando-se apenas uma unidade de programa: o

programa principal. O código fonte do programa

mensagem_01

é reapresentado a seguir:

program mensagem_01

!--- ! Propósito: Escrever uma mensagem na tela do micro

!--- ! Arquivo:mensagem_01.f03

! Autor: Anibal L. Pereira 27/11/2010 !Revisões:

!---

print*

print*," =========================="

print*," Programa mensagem_01 " print*," =========================="

print*

print*,"O programa escreve, na tela do micro, o conjunto de mensagens abaixo: " print*

print*,"---" print*

print*," (*) Linha de comentário " print*

print*," o programa contém 7 linhas de comentários: "

print*," elas são as linhas que iniciam com o caractere exclamação: ! " print*

print*," (*) Constante Literal do tipo caractere " print*

print*," também chamado de string "

print*," são os textos envolvidos por aspas: "" " print*

print*," (*) instrução PRINT" print*

print*,"o código fonte do programa contém 23 instruções print " print*

end program mensagem_01

As seguintes características devem ser observadas:

instrução PROGRAM e instrução END PROGRAM

No Fortran, um programa principal é identificado por estas instruções.

O programa principal utiliza a instrução

program

como primeira instrução (

abertura

) e a instrução

end program

como última instrução (

fechamento

).

Os códigos do programa (

programa principal

) são escritos entre estas duas instruções.

program mensagem_01 . . . . . . . . . end program mensagem_01

escreve-se o nome do programa tanto na instrução de abertura

program

quanto na instrução de

fechamento

end program

.

comentário

depois da instrução de abertura (

program mensagem_01

) as próximas 7 linhas são comentários.

Comentários são identificadas pelo caractere exclamação ( ! ) .

program mensagem_01

(16)

comentários são inseridos no programa para fornecer informação para quem está lendo os códigos

fontes (

um humano

). O cabeçalho serve para explicar o propósito do programa e disponibilizar outras

informações. O cabeçalho (

e os comentários dentro do programa

) deve ser visto como parte integrante do

programa. É essencial que se tenha o hábito de escrever comentários nos códigos fontes dos programas.

instrução PRINT

a instrução

print*

mostra (

escreve, imprime

) na tela do micro uma mensagem.

Tudo aquilo que estiver escrito entre aspas na instrução

print

será escrito (

impresso

) na tela do

computador

program mensagem_01

!--- ! Propósito: Escreve mensagens na tela do micro

!--- ! Arquivo:mensagem_01.f03

! Autor: Anibal L. Pereira 27/11/2010 !Revisões:

!---

print* print*," ==========================" print*," Programa mensagem_01 " print*," ==========================" print* print*,"O programa escreve, na tela do micro, o conjunto de mensagens abaixo: " print* print*,"---" print* print*," (*) Linha de comentário " print* print*," o programa contém 7 linhas de comentários: " print*," elas são as linhas que iniciam com o caractere exclamação: ! " print* print*," (*) Constante Literal do tipo caractere " print* print*," também chamado de string " print*," são os textos envolvidos por aspas: "" " print* print*," (*) instrução PRINT" print* print*,"o código fonte do programa contém 23 instruções print " print*

Nestas instruções os textos (

sem as aspas

) serão escritas na tela do computador (

uma depois da outra

)

quando as instruções

print

forem executadas.

A instrução

print

possibilita escrever informações na tela do computador para o usuário do programa.

Esta característica é muito importante e será utilizada na construção da

documentação em tempo de

execução

Observe que o texto que será escrito pela instrução PRINT deve aparacer entre aspas (

"

) ou entre

apóstrofo ( ' ). Não importa qual, o importante é que o símbolo utilizado na abertura tem que ser o

mesmo utilizado no fechamento. Por exemplo, as duas instruções que seguem são similares

print*,"O programa escreve, na tela do micro, o conjunto de mensagens abaixo: "

print*,'O programa escreve, na tela do micro, o conjunto de mensagens abaixo: '

Além disto, observe também, o uso de duas aspas seguidas (

""

) para que apenas uma aspas apareça na

mensagem escrita na tela do micro.

print*," são os textos envolvidos por aspas: "" "

(17)

Uma forma de se evitar o uso de duas as apas seguidas seria utilizar o apóstrofo como mostrado na

instrução que segue:

print*,' são os textos envolvidos por aspas: "" '

isto funciona, porque a constante literal caractere está marcada (

delimitada

) pelo apóstrofo e portanto as

aspas não irá sinalizar para o compilador o término (

fechamento

) da constante literal caractere.

instruções PRINT sem constante literal caractere

as instruções

print*

que não contém nenhum texto entre aspas (

ou entre apóstrofos

) imprime uma linha

em branco na tela do computador.

instrução END PROGRAM

a instrução

end program

marca o termino do programa principal.

a instrução

end program mensagem_01

marca o termino do

programa principal mensagem_01

program mensagem_01

!--- ! Propósito: Escreve mensagens na tela do micro

!--- ! Arquivo:mensagem_01.f03

! Autor: Anibal L. Pereira 27/11/2010 !Revisões:

!---

print*

print*," =========================="

print*," Programa mensagem_01 " print*," =========================="

print*

print*,"O programa escreve, na tela do micro, o conjunto de mensagens abaixo: " print*

print*,"---" print*

print*," (*) Linha de comentário " print*

print*," o programa contém 7 linhas de comentários: "

print*," elas são as linhas que iniciam com o caractere exclamação: ! " print*

print*," (*) Constante Literal do tipo caractere " print*

print*," também chamado de string "

print*," são os textos envolvidos por aspas: "" " print*

print*," (*) instrução PRINT" print*

print*,"o código fonte do programa contém 23 instruções print " print*

end program mensagem_01

6. Conjunto de Caracteres do Fortran 2003

O conjunto de caracteres que o Fortran 2003 utiliza é dependente do processador, mas a estrutura do conjunto

tem que ser a seguinte:

1. caracteres de controle

2. caracteres gráficos

letras

dígitos

sublinha

(18)

As letras, dígitos, sublinha e os caracteres especiais formam o

conjunto de caracteres do Fortran (Fortran

character set).

LETRAS

as 52 letras são:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

a b c d e f g h i j k l m n o p q r s t u v w x y z

as letras minúsculas são equivalentes as letras maiúsculas, exceto no contexto caractere.

String

a palavra string significa: corda, fio, cordão, conjunto de objetos, corrente

entretanto é muito utilizada como: cadeia de caracteres - sequência de caracteres

Contexto caractere

contexto caractere são os caracteres que estão sendo empregados (usados) dentro de

constante literal caractere ou

dentro de um string que define um descritor de edição

DIGITOS

os 10 dígitos são: 0 1 2 3 4 5 6 7 8 9

SUBLINHA

underscore, em inglês ( _ )

o caractere sublinha é utilizado como caractere significativo em um nome

CARACTERES ESPECIAIS

os 32 caracteres especiais (

no Fortran 2003

) são:

Caractere Nome do caractere

Caractere Nome do caractere

branco

;

ponto e vírgula

=

igual

!

ponto de exclamação

+

mais

"

aspas

-

menos

%

porcento

*

asterisco

&

e-comercial (ampersand)

/

barra

~

til

\

Barra invertida

<

menor que

(

abre parênteses

>

Maior que

)

fecha parênteses

?

ponto de interrogação

[

abre colchetes

'

apóstrofo

]

fecha colchetes

`

acento grave

{

abre chaves

^

acento circunflexo

}

fecha chaves

|

barra vertical

,

vírgula

$

símbolo de moeda

.

ponto decimal ou ponto final

#

símbolo númerico

(19)

OUTROS CARACTERES

caracteres adicionais que o processador pode representar, só podem aparecer em:

comentários

constantes caractere

registros de entrada/saída

string usado nos descritores de edição

Na prática

, pode-se considerar que os caracteres e símbolos que o Fortran 2003 utiliza são os contidos na tabela

ASCII.

TABELA ASCII

baseada na tabela existente em:

http://www.hobbyprojects.com/ascii-table/ascii-table.html (em 27/07/2010)

7. Nomes

Nomes são utilizados por várias entidades tais como variáveis, unidades de programa, argumento mudos,

constantes com nome e tipos derivados.

(20)

Exemplos: velocidade

massa15

massa_do_corpo

nome_muito_longo_que_nao_esta_errado (

tem 37 caracteres

)

Atividade 02

Entregar em meio magnético:

1. programa: ano_bissexto_01 ano_bissexto_01.f03

Exemplo:

Nesta atividade, o programa escrito irá escrever na tela do micro a seguinte mensagem.

--- A regra para saber se um ano é ou não bissexto é:

(*) Todo ano divisível por 4 é um ano bissexto

(*) exceção : quando o ano também for divisível por 100 não é um ano bissexto entretanto: todo ano divisível por 400 é sempre um ano bissexto

---

Os seguintes anos são bissextos : 1600 2000 2400

Os seguintes anos não são bissextos: 1700 1800 1900

Escreva o

programa ano_bissexto_01

, salvando-o no arquivo

ano_bissexto_01.f03

.

Compile e execute o programa.

Não esqueça, o processo para escrever, compilar e executar o programa envolve os seguintes passos:

Escrever o programa fonte

Compilar o programa

Executar o programa

Você pode copiar e colar os códigos fontes para que não tenha que escrever os códigos disponibilizados,

mas isto não evita o trabalho de ajuste da diagramação dos códigos fontes segundo o estilo

de programação adotado na disciplina

Momentaneamente, você deve fazer com que os códigos que está escrevendo (copiando) fiquem visualmente parecidos com os códigos fontes disponibilizados. Para você se sentir um pouco mais confortável, considere que, no estilo de programação que adotamos, todo programa tem:

• nome • cabeçalho

Não deixe de atualizar o cabeçalho do programa de forma adequada, ou seja, não deixe de

acrescentar seu nome como revisor e a data em que isto aconteceu.

________________________________________________________________________________________

arquivo: ano_bissexto_01.f03

◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

program ano_bissexto_01 !

!--- ! Propósito: Escreve na tela do micro identificação de anos Bissextos

(21)

! Autor: Anibal L. Pereira 27/11/2010 !Revisões:

!---

print*

print*,"---" print*,"A regra para saber se um ano é ou não bissexto é:"

print*,

print*," (*) Todo ano divisível por 4 é um ano bissexto "

print*," (*) exceção : quando o ano também for divisível por 100 não é um ano bissexto" print*," entretanto, todo ano divisível por 400 é sempre um ano bissexto" print*,"---" print*

print*,'Os seguintes anos são bissextos : 1600 2000 2400 ' print*

print*,'Os seguintes anos não são bissextos: 1700 1800 1900 ' print*

end program ano_bissexto_01

As características importantes a serem destacadas são:

caractere sublinha

o nome do programa é

ano_bissexto_01

espaço em branco não pode aparecer dentro de nomes, por isto o uso do caractere sublinha (

underline

)

unindo o nome

ano

com os nomes

bissexto

e

01

espaço em branco é utilizado como separador, portanto se for escrito

ano bissexto 01

no lugar de

ano_bissexto_01

o compilador vai entender que o nome do programa é apenas ano e vai interpretar

bissexto como sendo o início de uma nova instrução, o que gera uma condição de erro

Recorde que um nome, no Fortran 2003, pode conter até 63 caracteres. Portanto você pode usar nomes

compostos unidos com o caractere sublinha sem problema, desde que use, no máximo, 63 caracteres

PRINT

a instrução

print*

escreve uma linha em branco na tela do computador

A instrução

print*,"---"

escreve uma linha de traços (

que está colocada entre as aspas

) na tela do computador.

Tudo o que estiver colocado entre aspas é considerado uma constante literal caractere ou

constante

caractere

(

é usual utilizar-se o termo string) e o compilador trata a constante caractere como um string e

imprime o string exatamente como ele foi escrito pelo programador

as aspas nas constantes literais caracteres (

strings

) não fazem parte da constante, estão ali apenas para

marcar o início e o fim da constante (

da mesma forma os apóstrofos se eles forem usados no lugar das aspas

)

comentário

uma linha completamente em branco é considerada uma linha de comentário

Tudo o que for escrito depois de uma caractere de exclamação ( ! ) é considerado um comentário,

portanto as linhas que seguem são comentários

!

!--- ! Propósito: Escreve na tela do micro identificação de anos Bissextos

!--- ! Arquivo: ano_bissexto_01.f03

! Autor: Anibal L. Pereira 27/11/2010 !Revisões:

(22)

Atividade 03

Entregar em meio magnético:

1. programa: quadro_01 quadro_01.f03

Exemplo:

Esta atividade utiliza constantes literais caractere (strings) para criar um quadro e escreve uma mensagem na tela do micro. Observe que a arrumação, a distribuição da mensagem na tela do micro e a decoração do quadro, é feita dentro do string, isto é, toda a distribuição das letras e símbolos utilizados são arrumados com espaços em branco dentro do string, que tem que ser diagramado pelo programador (quem escreve os códigos fontes).

O compilador não modifica o string. Ele simplesmente escreve o string na tela do micro, sem nenhum tipo de interferência ou modificação na disposição que o programador utilizou no string

Portanto, qualquer arrumação (disposição dos símbolos) deve ser feita pelo programador dentro do string que está utilizando

Escreva o

programa quadro_01

, salvando-o no arquivo

quadro_01.f03

.

Compile e execute o programa.

Não deixe de atualizar o cabeçalho do programa de forma adequada, ou seja, não deixe de

acrescentar seu nome como revisor e a data em que isto aconteceu.

________________________________________________________________________________________

arquivo: quadro_01.f03

◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

program quadro_01 !

!--- ! Propósito: Escreve na tela do micro um quadro com mensagem

!--- ! Arquivo: quadro_01.f03

! Autor: Anibal L. Pereira 27/11/2010 !Revisões:

!---

print*

print*,"(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)"

print*,"(*) (*)" print*,"(*) Primeiro quadro (*)"

print*,"(*) (*)" print*,"(*) Observe a decoração da moldura do quadro (*)" print*,"(*) (*)" print*,"(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)" print*

end program quadro_01

As características importante:

a aparência (

arrumação

) é feita pelo programador, escrevendo o string (

dentro do string

)

o compilador não modifica ou altera o string especificado pelo programador

(23)

Atividade 04

Entregar em meio magnético:

1. programa: quadro_02 quadro_02.f03

Exemplo:

Decoração de mensagem na tela do micro

________________________________________________________________________________________

arquivo: quadro_02.f03

◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

program quadro_02 !

!--- ! Propósito: Escreve na tela do micro um quadro com mensagem

!--- ! Arquivo: quadro_02.f03

! Autor: Anibal L. Pereira 27/11/2010 !Revisões:

!---

print*

print*,"(:)(:)(:)(:)(:)(:)(:)(:)(:)(:)(:)(:)(:)(:)(:)(:)(:)"

print*,"(:) (:)" print*,"(:) Segundo quadro (:)"

print*,"(:) (:)" print*,"(:) Observe a decoração da moldura do quadro (:)" print*,"(:) (:)" print*,"(:)(:)(:)(:)(:)(:)(:)(:)(:)(:)(:)(:)(:)(:)(:)(:)(:)" print*

end program quadro_02

Atividade 05

Entregar em meio magnético:

1. programa: quadro_03 quadro_03.f03

Exemplo:

Decoração de mensagem na tela do micro

________________________________________________________________________________________

arquivo: quadro_03.f03

◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

program quadro_03 !

!--- ! Propósito: Escreve na tela do micro um quadro com mensagem

!--- ! Arquivo: quadro_03.f03

! Autor: Anibal L. Pereira 27/11/2010 !Revisões:

!---

print*

print*,"x*xx*xx*xx*xx*xx*xx*xx*xx*xx*xx*xx*xx*xx*xx*xx*xx*x"

print*,"x*x x*x" print*,"x*x Terceiro quadro x*x"

(24)

print*

end program quadro_03

Atividade 06

Entregar em meio magnético:

1. programa: quadro_04 quadro_04.f03

Exemplo:

Decoração de mensagem na tela do micro

________________________________________________________________________________________

arquivo: quadro_04.f03

◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

program quadro_04 !

!--- ! Propósito: Escreve na tela do micro um quadro com mensagem

!--- ! Arquivo: quadro_04.f03

! Autor: Anibal L. Pereira 27/11/2010 !Revisões:

!---

print*

print*,"\>\>\>\>\>\>\>\>\>\>>::</</</</</</</</</</</"

print*,">>>>>>>>> <<<<<<<<<" print*,">->->->->->->> Q U A D R O <<-<-<-<-<-<-<"

print*,">>>>>>>>> <<<<<<<<<" print*,"+>+>+>+>+>+>+>+>+>+>>::<+<+<+<+<+<+<+<+<+<+<+"

print*

end program quadro_04

Atividade 07

Entregar em meio magnético:

1. programa: frase_Willian frase_Willian.f03

Exemplo:

Escreve frase (pensamento - citação) de Willian Shakespeare

________________________________________________________________________________________

arquivo: frase_willian.f03

◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

program frase_Willian !

!--- ! Propósito: Escreve na tela do micro uma frase de autoria de William Shakespeare !--- ! Arquivo: frase_willian.f03

! Autor: Anibal L. Pereira 27/11/2010 !Revisões:

!---

print*

(25)

print*," haverá esperança. " print*," -- William Shakespeare -- "

print*

end program frase_Willian

Utilizar strings (

constantes literal caractere

) para escrever mensagem na tela do micro é útil, mas usualmente

necessitamos mais do que isto. Portanto o passo seguinte é aprender a utilizar variáveis.

Constante

entidade (

objeto de dado

) – é um valor que não pode ser alterado durante a execução do programa

Variável

objeto de dado (

entidade

) – valor que pode ser alterado durante a execução do programa

Atividade 08

Entregar em meio magnético:

1. programa: meu_nome primeiro.f03

Exemplo:

Programa que define e utiliza uma variável do tipo caractere e utiliza constantes literais do tipo caractere (strings). O programa também utiliza as instruções: IMPLICIT NONE, PRINT e READ

________________________________________________________________________________________

arquivo: meu_nome.f03

◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄►◄

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

program meu_nome

!--- ! Propósito: escreve um nome fornecido pelo usuário na tela do micro !--- ! Arquivo:primeiro.f03

! Autor: Anibal L. Pereira 27/11/2010 !Revisões:

!--- implicit none

character(len=20):: nome !

print*

print*,"Escreva seu nome: (máximo de 20 caracteres)"

print*,"Nomes compostos escreva entre aspas ("") ou apóstrofo (')" read*, nome

print* print*, nome print*

!

end program meu_nome

1.

Compilando o programa

Para isto, no prompt do terminal digite o comando:

gfortran -o primeiro primeiro.f03

e pressione a tecla <enter>

Depois da compilação do programa contido no arquivo primeiro.f03 você terá o programa executável

(

arquivo primeiro

) que estará no diretório de trabalho.

2. Execução do programa

(26)

Observe: o nome do programa é

meu_nome

e do arquivo que contem o programa executável é

primeiro

enquanto o nome do arquivo que contém o programa fonte é

primeiro.f03

A execução do programa irá mostrar na tela do micro o nome que o usuário fornecer. Admitindo que o nome

fornecido pelo usuário tenha sido

Paulo César (nome composto, contendo espaço em branco tem que ser fornecido pelo usuário entre aspas ou apóstrofos)

a saída no terminal será similar a mostrada dentro do

quadro que segue.

Saída no terminal do computador

anibal@anibaldsk:/home/anibal/01anibal03$ ./primeiro

Escreva seu nome: (máximo de 20 caracteres)

Nomes compostos escreva entre aspas (") ou apóstrofo (') 'Paulo César'

Paulo César

anibal@anibaldsk:/home/anibal/01anibal03$

instrução

IMPLICIT NONE

a instrução

implicit none

é utilizada para anular a definição implícita de tipo. É um bom hábito de

programação utilizar esta declaração nos programas Fortran, pois seu uso permite que o compilador

detecte erros que de outra forma seriam muito trabalhoso e/ou difíceis de serem achados.

Um detalhe importante é que a instrução

implicit none

tem que ser escrita antes das instruções de

definição de tipo no programa.

program meu_nome

!--- ! Propósito: escreve um nome fornecido pelo usuário na tela do micro !--- ! Arquivo:primeiro.f03

! Autor: Anibal L. Pereira 27/11/2010 !Revisões:

!---implicit none

porque o compilador não considera os comentários existentes no programa, ele enxerga os códigos

mostrados acima como sendo composto somente por duas linhas, ou seja:

program meu_nome implicit none

o que mostra que IMPLICIT NONE está colocada imediatamente depois da instrução

program meu_nome

declaração de tipo caractere

a instrução

character(len=20):: nome

é uma instrução de declaração de tipo (

tipo caractere

)

program meu_nome

!--- ! Propósito: escreve um nome fornecido pelo usuário na tela do micro !--- ! Arquivo:primeiro.f03

! Autor: Anibal L. Pereira 27/11/2010 !Revisões:

(27)

!---implicit none

character(len=20):: nome

O programa

meu_nome

define e utiliza uma única variável do tipo caractere.

Tipo de dados (

ou simplesmente tipo

) é uma maneira que a linguagem de programação tem de saber que

valores podem ser guardados na entidade e quais operações podem ser realizadas com estes valores.

Por exemplo, um dado do tipo caractere não tem a operação adição disponível. Então, se o valor da

variável tipo caractere

nome

for Anibal, o Fortran sabe que a operação adicionar o número 5 à variável

caractere

nome

(

ou seja, a operação de adição: Anibal + 5

) não é permitida, porque variáveis do tipo

caractere não possuem a operação de adição disponível

A instrução de definição de variável de tipo caractere estabelece que a variável

nome

pode conter 20

posições, ou seja,

nome

pode conter no máximo 20 caracteres

Definição de tipo é feita assim:

tipo,atributos::lista-variáveis

onde:

tipo

pode ser :

character

,

integer

,

real

,

complex

ou

logical

atributos

define um ou mais de um atributos do tipo que está sendo definido.

Para o tipo caractere o atributo comprimento (

comprimento em inglês: lenght

len

) é sempre utilizado

e especifica o número de caracteres para a variável que está sendo definida.

lista-variáveis

é uma lista de variáveis separadas por vírgula. Neste exemplo, nossa lista possuí

somente uma variável

character(len=20):: nome

instrução PRINT

a instrução

print*

mostra (

escreve, imprime

) na tela do micro uma mensagem.

Tudo aquilo que estiver escrito entre aspas na instrução

print

será escrito (

impresso

) na tela do

computador

program meu_nome

!--- ! Propósito: escreve um nome fornecido pelo usuário na tela do micro !--- ! Arquivo:primeiro.f03

! Autor: Anibal L. Pereira 27/11/2010 !Revisões:

!--- implicit none

character(len=20):: nome !

print* print*,"Escreva seu nome: (máximo de 20 caracteres)" print*,"Nomes compostos escreva entre aspas ("") ou apóstrofo (')"

Nestas instruções o texto

"Escreva seu nome: (máximo de 20 caracteres)"

(

sem as aspas

) e

"Nomes compostos escreva entre aspas("") ou apóstrofo (')"

serão escritas na tela do

computador (

uma depois da outra

) quando as duas instruções

print

forem executadas.

A instrução

print

possibilita escrever informações na tela do computador para o usuário do programa.

Isto é muito importante. Esta característica é chamada de

documentação em tempo de execução

Observe que o texto que será escrito pela instrução PRINT deve aparacer entre aspas (

"

) ou entre

(28)

Além disto, observe também, o uso de duas aspas seguidas (

""

)

para que apenas uma aspas

apareça na mensagem escrita na tela do micro

. Caso se utilize apenas uma aspas, o compilador irá

interpretar que a aspas está terminando a mensagem (

o que não está

) e indicará uma mensagem de erro.

Ao utilizar duas aspas juntas, o compilador interpreta que elas na realidade são uma aspas única e

escreve a aspas na tela do micro, o que realmente é desejado.

instrução READ

é uma instrução de entrada de dados.

A instrução

read*

lê (

recebe

) dados fornecidos ao programa pelo teclado.

program meu_nome

!--- ! Propósito: escreve um nome fornecido pelo usuário na tela do micro !--- ! Arquivo:primeiro.f03

! Autor: Anibal L. Pereira 27/11/2010 !Revisões:

!--- implicit none

character(len=20):: nome !

print*

print*,"Escreva seu nome: (máximo de 20 caracteres)"

print*,"Nomes compostos escreva entre aspas ("") ou apóstrofo (')" read*, nome

O que for digitada usando o teclado será atribuído à variável

nome

(

guardado na variável depois de se pressionar a tecla <enter>

)

porque o

espaço em branco é utilizado para separar valores

do tipo caractere (

string

) valores

compostos (

por exemplo: Antônio Carlos, Maria José

) que possuem espaço em branco devem ser

envolvidos (

protegidos

) por aspas (

"

) ou apóstrofo ( ' ). Ao escrever os valor dentro de aspas ou

apóstrofo ele será considerado como sendo uma entidade única, o que realmente é desejado.

Por exemplo se o valor entrado for

Maria José

(

sem as aspas

) o valor que a variável

nome

conterá

será

Maria

, não

Maria José

(

execute o programa, entre com um nome composto sem as aspas e veja o comportamento do programa

)

instruções PRINT

a instrução

print*

que não contém nenhum texto entre aspas imprime uma linha em branco na tela do

computador.

por sua vez, a instrução

print*, nome

imprime na tela do computador o valor que está guardado

na variável caractere

nome

program meu_nome

!--- ! Propósito: escreve um nome fornecido pelo usuário na tela do micro !--- ! Arquivo:primeiro.f03

! Autor: Anibal L. Pereira 27/11/2010 !Revisões:

!--- implicit none

character(len=20):: nome !

print*

print*,"Escreva seu nome: (máximo de 20 caracteres)"

print*,"Nomes compostos escreva entre aspas ("") ou apóstrofo (')" read*, nome

Imagem

TABELA ASCII  baseada na tabela existente em:

Referências

Documentos relacionados

Participar ou já ter participado, na UFU, de projetos de extensão, de estágios em órgãos administrativos ou acadêmicos da universidade, representação em conselhos (colegiados

Os resultados não foram satisfatórios, para alguns alunos, podemos dizer que está sendo positivo, mas para a maioria está sendo negativo, pela dificuldade de acesso.. Não

nesta nossa modesta obra O sonho e os sonhos analisa- mos o sono e sua importância para o corpo e sobretudo para a alma que, nas horas de repouso da matéria, liberta-se parcialmente

O objetivo do curso foi oportunizar aos participantes, um contato direto com as plantas nativas do Cerrado para identificação de espécies com potencial

3.3 o Município tem caminhão da coleta seletiva, sendo orientado a providenciar a contratação direta da associação para o recolhimento dos resíduos recicláveis,

Apesar dos esforços para reduzir os níveis de emissão de poluentes ao longo das últimas décadas na região da cidade de Cubatão, as concentrações dos poluentes

Como resultado da deliberação entre os parceiros (São Bernardo do Campo, SHAMA e SABESP), em relação ao Centro de Estudo e Experimentação Ambiental e Centro de Gerenciamento

Neste estudo foram estipulados os seguintes objec- tivos: (a) identifi car as dimensões do desenvolvimento vocacional (convicção vocacional, cooperação vocacio- nal,