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:
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.
•
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 trabalhoO 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.
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
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.
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
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.f034. Abrindo o Terminal
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)
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 -lno terminal ou então usando o navegador de arquivo.
6. Execução do programa
A execução do programa
mensagem_01é feita assim:
./mensagem_01isto é, 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_01e do arquivo que contem o programa executável é
mensagem_01enquanto o nome do arquivo que contém o programa fonte é
mensagem_01.f03A 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
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.
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.f03o
"gfortran"refere-se ao compilador Fortran
depois do
gfortranfoi 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"
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.f03criará o
programa executável
mensagem_01no 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_01significa:
“
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
.
Salve o arquivo. Compile o programa e veja o que acontece. Recomponha o programa.
Remova o asterisco ( *) do instrução
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.
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
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
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
programcomo primeira instrução (
abertura) e a instrução
end programcomo ú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
programquanto 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
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
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
forem executadas.
A instrução
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: "" "
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 programmarca o termino do programa principal.
a instrução
end program mensagem_01marca 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
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
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.
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
! 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
anocom os nomes
bissextoe
01espaç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
•
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 eimprime 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:
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
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"
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*
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
Observe: o nome do programa é
meu_nomee do arquivo que contem o programa executável é
primeiroenquanto o nome do arquivo que contém o programa fonte é
primeiro.f03A 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 nonetem 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:
!---implicit none
character(len=20):: nome
O programa
meu_nomedefine 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
nomefor 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
nomepode conter 20
posições, ou seja,
nomepode conter no máximo 20 caracteres
Definição de tipo é feita assim:
tipo,atributos::lista-variáveisonde:
tipo
pode ser :
character,
integer,
real,
complexou
logicalatributos
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
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
forem executadas.
A instrução
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
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
nomeconterá
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*, nomeimprime na tela do computador o valor que está guardado
na variável caractere
nomeprogram 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