Académique Documents
Professionnel Documents
Culture Documents
Aula 05
Programao utilizando
Portugol
-Verso de impresso
Tpicos Principais:
0. Estrutura de um programa
1. Resoluo de problemas
1.1 Algoritmos
1.2 Diagrama de blocos
1.3 Portugol
2. Programa padro
3. Sada de dados
4. Memria
5. Entrada de dados
6. Processamento
7. Resumo
8. Lista de Exerccios
Por
Guilherme Bezerra Fernandes
0. Estrutura de um programa
Como j visto nas aulas passadas, o conceito que estrutura um programa segue
basicamente a prpria organizao do computador que pode ser resumida da seguinte forma:
Memria
Entrada
Processamento
Sada
Entrada/
Sada
A seqncia principal de execuo entrada -> processamento -> sada, MAS no
decorrer da execuo podem ser necessrios outros tipos de acesso como, por exemplo, a
necessidade ou no de armazenamento de dados temporrios (memria) e, por fim o
armazenamento ou no fixo de maneira permanente no HD (entrada/sada).
1. Resoluo de problemas
Para maior segurana no desenvolvimento de um programa geralmente so adotadas trs
etapas:
1 Elaborao do Algoritmo;
2 Diagrama de bloco;
3 Portugol.
1.1. Algoritmo
Como j visto nas aulas passadas, algoritmo uma seqncia de passos finitos com o
objetivo de solucionar um problema. Pode tambm ser definido como uma seqncia de
instrues finita e ordenada de forma lgica para a resoluo de uma determinada tarefa ou
problema. So exemplos de algoritmos: instrues de montagem, receitas, manuais de uso, etc.
3
Um algoritmo no A soluo do problema, pois, se assim fosse, cada problema teria um
nico algoritmo; um algoritmo UM CAMINHO para a soluo de um problema. Em geral,
existem muitos (seno infinitos) caminhos que levam a uma soluo satisfatria.
Um algoritmo no computacional um algoritmo cuja seqncia de passos, a princpio,
no pode ser executada por um computador. Abaixo apresentado um algoritmo NO
COMPUTACIONAL cujo objetivo usar um telefone pblico.
1 Retirar o telefone do gancho
2 Esperar o sinal
3 Colocar o carto
4 Discar o nmero
5 Falar ao telefone
6 Colocar o telefone no gancho
Provavelmente voc executou o algoritmo deste exemplo diversas vezes. O termo
algoritmo est muito ligado Cincia da Computao, mas, na realidade, ele pode ser aplicado a
qualquer problema cuja soluo possa ser decomposta em um grupo de instrues.
Fim
Diagrama de bloco
1.3 Portugol
Para que o algoritmo possa ser til, necessrio ainda que quem faz uso dele conhea os
termos utilizados nas instrues. O algoritmo do exemplo s ser til para algum que seja
fluente na lngua portuguesa e conhea o significado dos verbos Retirar, Colocar, Esperar assim
como dos substantivos utilizados no contexto de uma receita culinria. Em outras palavras,
preciso que a linguagem utilizada no algoritmo seja conhecida tanto por quem o escreveu quanto
por quem vai execut-lo.
Para que o algoritmo possa ser executado por uma mquina importante que as
instrues sejam corretas e sem ambigidades. Portanto, a forma especial de linguagem que
utilizaremos bem mais restrita que o Portugus e com significados bem definidos para todos os
termos utilizados nas instrues. Essa linguagem conhecida como Portugus Estruturado (s
vezes tambm chamada de Portugol).
O portugus estruturado , na verdade, uma simplificao extrema do Portugus, limitada
a umas poucas palavras e estruturas que tm um significado muito bem definido. Ao conjunto de
palavras e regras que definem o formato das sentenas vlidas chamamos sintaxe da
linguagem. Durante este texto, a sintaxe do Portugus Estruturado ser apresentada
progressivamente e a utilizaremos em muitos exerccios de resoluo de problemas.
Aprender as palavras e regras que fazem parte dessa sintaxe fundamental; no entanto,
no o maior objetivo deste curso. O que realmente exigir um grande esforo por parte do
estudante aprender a resolver problemas utilizando a linguagem. Para isso, h somente um
caminho: resolver muitos problemas. O processo semelhante ao de tornar-se competente em
um jogo qualquer: aprender as regras do jogo (a sintaxe) s o primeiro passo, tornar-se um bom
jogador (programador) exige tempo, muito exerccio e dedicao.
Embora o Portugus Estruturado seja uma linguagem bastante simplificada, ela possui
todos os elementos bsicos e uma estrutura semelhante de uma linguagem tpica para
programao de computadores. Alm disso, resolver problemas com portugus estruturado pode
ser uma tarefa to complexa quanto a de escrever um programa em uma linguagem de
programao qualquer. Portanto, neste curso, estaremos na verdade procurando desenvolver as
habilidades bsicas que sero necessrias para adquirir-se competncia na programao de
computadores.
5
Daqui para frente, sero apresentados exemplos de algoritmos, sua representao no
diagrama de blocos e, por fim, sua escrita em portugol.
O Programa VisuAlg permite testar os programas desenvolvidos em portugol
rapidamente. Pode ser encontrado no site de busca www.apoioinformatica.inf.br.
2. Programa padro
Abra o programa VisuAlg. Observe que gerado automaticamente o seguinte cdigo:
algoritmo "semnome"
// Funo :
// Autor :
// Data : 15/02/2008
// Seo de Declaraes
var
inicio
// Seo de Comandos
fimalgoritmo
Por enquanto no necessrio todo este cdigo, desta forma, apague tudo o que est
depois do // e a palavra var, ficando da seguinte maneira:
Programa padro:
algoritmo "basico"
inicio
fimalgoritmo
TODO programa em portugol tem no mnimo a estrutura bsica acima. Ele composto
pela palavra-chave algoritmo seguido do nome do algoritmo entre aspas duplas, neste caso
bsico. Em seguida, tem-se a outra palavra-chave inicio e fimalgoritmo.
Sua representao em diagrama de bloco demonstrada abaixo:
Incio
Fim
Diagrama de bloco
Para testarmos o algoritmo pressione o boto F9. Ao pressionar este boto ser simulada
a compilao do cdigo, isto a transformao do cdigo em Portugol para linguagem de
mquina. Preste ATENO! ISTO ir apenas SIMULAR. Pois o portugol no uma linguagem
de programao realmente, apenas um portugus estruturado. Aps isto, ser aberta uma janela
preta. Este ser o ambiente em que possibilitar a criao dos nossos programas. Feche-a.
..
Bem-vindo
Fim
Diagrama de bloco
3.3 Portugol
Em portugol ficaria da seguinte maneira:
algoritmo "basico"
inicio
escreva ("Bem-vindo!")
fimalgoritmo
Observaes: Foram utilizados trs espaos em branco antes do comando escreva, isto
no obrigatrio para o programa funcionar, MAS ajuda muito o entendimento por parte do
prprio programador e outros que quiserem entend-lo. Esta tcnica chamada de endentao
e visa uma boa documentao do seu programa.
7
Caso fosse necessrio apresentar vrias mensagens, bastaria utilizar o mesmo comando
diversas vezes. Outro comando que permite escrever um texto na tela o escreval. Este possui a
mesma sintaxe que o escreva, a diferena que aps apresentar o texto ele permite escrever uma
nova linha aps o texto desejado. Ex: escreval(Teste).
3.4 Exerccio: Desenvolva um programa que apresente na tela Estou comeando a
conhecer Portugol!, mas de forma que cada palavra fique em uma linha diferente! Faa
o algoritmo, diagrama de bloco e por fim, o portugol.
4. Memria
O conceito memria faz referncia a variveis. Uma das razes para o de uso de variveis
devido necessidade de armazenar os dados que sero digitados pelo usurio.
Mas o que seria varivel?
Varivel um local na memria principal (temporria), isto um endereo que armazena
um contedo. Tambm pode ser considerada como tudo aquilo que sujeito a variaes, que
incerto, instvel ou inconstante. Por exemplo, a entrada de dados de um usurio incerta, no
tem como saber exatamente o que um usurio ir digitar.
Uma varivel ir armazenar dados de forma TEMPORRIA na memria do computador,
isto quer dizer que ao fechar o programa os dados sero PERDIDOS! Para utiliz-la, basta inserir
a palavra-chave var seguido do nome desta varivel, dois pontos : e seu tipo sublinhado
(inteiro, real, caractere, lgico). Ex: var idade : inteiro.
Uma observao importante que as variveis no precisam ser representadas em
diagrama de blocos quando so criadas, mas apenas quando recebem valores.
Quando formos dar nomes s variveis, se faz necessrio seguirmos algumas regras:
a) O PRIMEIRO caractere DEVE ser uma letra. (No podem ser nmeros)
b) Se houver MAIS de um caractere, S poderemos usar letras ou nmeros. (No
podem ser utilizados caracteres simblicos como: -,+,!,@,#,$,&,*(,),?, etc.)
c) NENHUMA palavra reservada (ou palavra-chave) poder ser nome de uma varivel.
A seguir, apresentada uma tabela com a lista de palavras reservadas que no podem ser
utilizadas para nomes de variveis.
8
Lista de palavras reservadas
algoritmo
escreva
fimrepita
mod
arquivo
escreval
fimse
no
ate
faca
funo
caractere
falso
inicio
ou
caso
fimalgoritmo
int
outrocaso
cronometro fimenquanto
inteiro
para
debug
fimescolha
interrompa passo
enquanto
fimfuncao
leia
pausa
ento
fimpara
limpatela
real
escolha
fimprocedimento logico
procedimento
repita
retorne
se
seno
timer
var
vetor
verdadeiro
xou
inicio
fimalgoritmo
9
A declarao de variveis feita antes das palavras-chave incio e fimalgoritmo. Um dos
objetivos de se declarar uma varivel no incio do algoritmo para que seja alocada (reservada)
uma rea na memria (endereo de memria) para a varivel.
Uma varivel pode ser vista como uma caixa com um rtulo ou nome colado a ela, que
num dado instante guarda um determinado objeto. O contedo desta caixa no algo fixo,
permanente. Na verdade, essa caixa pode ter seu contedo alterado diversas vezes.
Tipo
i
n
t
e
i
r
o
Valor qualquer
idade
Nome da
varivel(rtulo)
O contedo deve ser sempre do mesmo tipo. Na figura acima, a caixa (que a varivel)
foi rotulada como IDADE. Ela do tipo inteiro, isto , s capaz de armazenar valores inteiros.
Quando se cria uma varivel deve-se inicializ-la com algum valor. Geralmente um valor
nulo, mas isto vai depender do problema a ser resolvido. Para iniciar a varivel usa-se o smbolo
MENOR seguido de MENOS (<-). Exemplo: idade <- 0
A atribuio de valores para varivel representada no diagrama de blocos com um
retngulo. O diagrama de blocos ficar assim:
Incio
idade <-0
Fim
Diagrama de bloco
10
A inicializao da varivel feita entre as palavras chaves incio e fimalgoritmo, ficando
da seguinte maneira:
algoritmo "idade"
var
idade: inteiro
inicio
idade <- 0
fimalgoritmo
Caso a varivel no fosse inicializada com zero, ela ficaria com um valor qualquer da
memria com computador, o que geralmente chamado de lixo.
Agora que se declarou a varivel, vamos conhecer o comando para receber os dados do
usurio e armazen-lo na varivel.
idade <-0
idade
Fim
Diagrama de bloco
inicio
idade <- 0
leia(idade)
fimalgoritmo
11
Observa-se que instruo leia DEVE ficar entre o bloco incio e fimalgoritmo.
Supondo que o usurio digite o valor 32 e pressione ENTER, veja como ficar a varivel
com o seu contedo:
32
Tipo
i
n
t
e
i
r
o
idade
Nome da
varivel
Agora que foi possvel receber os dados digitados pelo usurio, interessante apresentlos na tela. Ser utilizada a palavra-chave escreva seguido do nome da varivel idade que foi
criada. Assim, qualquer valor do tipo inteiro que o usurio digitar ser apresentado.
algoritmo "apresenta_idade"
var
idade: inteiro
inicio
escreva ("Digite sua idade:")
leia(idade)
escreva ("Sua idade :")
escreva (idade)
fimalgoritmo
12
6. Processamento
O Conceito de processamento se refere aos clculos, testes condicionais, etc. Sero
apresentados primeiramente os operadores bsicos disponveis. Os restantes sero vistos mais
frente do curso.
6.1 Operaes aritmticas bsicas
As operaes aritmticas so as mais bsicas que um programador deve saber programar.
Os smbolos adotados na programao so basicamente os mesmos j conhecidos.
Operao
Operador
Adio
Subtrao
Multiplicao
Diviso (com resultado real)
Diviso (com resultado inteiro)
Resto
Exponenciao
+
*
/
div
% ou mod
^
Tabela 1: Operadores aritmticos
6.1.1 Adio e Subtrao: Observa-se atravs da tabela acima o uso dos operadores de soma e
subtrao da mesma maneira utilizados na matemtica convencional.
Problema 3: Desenvolver o algoritmo, portugol e diagrama de blocos de um programa
que efetue a soma de dois nmeros.
Algoritmo:
1 Atribuir o valor zero s variveis valorA, valorB e resultado;
2 Apresente a mensagem Digite o primeiro valor
3 Leia o valorA
4 Apresente a mensagem Digite o segundo valor
5 - Leia o valorB
6 - Efetue a soma das variveis valorA e valorB e atribua seu resultado varivel resultado;
7 Apresentar o valor da varivel resultado.
Portugol:
algoritmo "soma"
var
valorA: inteiro
valorB: inteiro
resultado: inteiro
inicio
valorA <- 0
valorB <- 0
resultado <- 0
escreva("Digite o primeiro valor")
leia(valorA)
escreva("Digite o segundo valor")
leia(valorB)
resultado <- valorA + valorB
escreva(resultado)
fimalgoritmo
13
Diagrama de bloco:
Incio
valorA<-0
valorB<-0
resultado<-0
Digite o primeiro valor
valorA
Digite o segundo valor
valorB
resultado
Fim
Diagrama de bloco
14
Quando 4 dividido por 3 utilizando o operador / tem-se o valor REAL 1,33. MAS
quando utiliza-se 4 div 3 tem-se o valor INTEIRO 1. Quando 8 dividido por 3 com o operador
/ tem-se o valor 2,66 e ao utilizar o div tem-se o valor 2. Observe que toda a parte
fracionria retirada, MAS no ocorre o arredondamento para cima.
Outra operao chamada de RESTO e representada pelo operador %. utilizado
quando se deseja encontrar o resto da diviso entre dois nmeros inteiros.
Exemplos:
4%2=0
8%3=2
7%4=3
A seguir, ser apresentado um uso tpico em programas dos operadores div e %.
Problema 4 - Desenvolva um programa que leia um nmero de duas casas e imprima os
algarismos separados em cada linha.
algoritmo "Separa_Numeros"
var
valorA : inteiro
resultado : real
inicio
valorA <- 0
resultado <- 0
escreval(" Entre com um numero inteiro de 2 casas: ")
leia(valorA)
resultado <- valorA div 10
escreval("Primeira casa: ", resultado)
resultado <- valorA % 10
escreva("Segunda casa: ", resultado)
fimalgoritmo
Um nmero de duas casas possui o algarismo das dezenas e das unidades. Para a dezena
utilizou-se operador div ao invs de /, isto porque no ser necessria a parte fracionria. No
caso das unidades utiliza-se o operador %, pois deseja-se apenas o resto.
Exerccio: Desenvolva um programa que leia um nmero de 3 casas e imprima os
algarismos separados em cada linha.
6.1.4 Exponenciao e radiciao - A ltima operao chamada de exponenciao
representada pelo operador ^. Na matemtica, representada pela base e por um expoente, Ex:
23 = 8.
15
Exemplos:
2^2=4
2^3=8
4 ^ 2 = 16
Na matemtica possvel utilizar a exponenciao para encontrar, por exemplo, a raiz
quadrada de um nmero.
Exemplos:
16 = 4 (raiz quadrada convencional)
16 ^ (1/2) = 4 (raiz quadrada com exponenciao)
3
8 = 2 (raiz cbica)
8 ^ (1/3) (raiz cbica com exponenciao)
Problema 5 - Desenvolva um programa que leia o valor da base e o valor do expoente e
calcule a exponenciao.
algoritmo "expoente"
var
base : inteiro
expoente : inteiro
resultado : real
inicio
base <- 0
expoente <- 0
escreva("Entre com o valor da base: ")
leia(base)
escreva("Entre com o valor do expoente: ")
leia(expoente)
resultado <- base ^ expoente
escreva(Resultado, resultado)
fimalgoritmo
16
7. Resumo
1 - Todo programa escrito em potugol composto no mnimo pela palavra-chave algoritmo
seguido do nome do algoritmo entre aspas duplas. Em seguida, tem-se a outra palavra-chave
inicio e fimalgoritmo, conforme abaixo:
algoritmo "basico"
inicio
fimalgoritmo
17
8.5 Faa um programa que leia a quantidade de fitas que uma locadora de vdeo possui e o valor
que ela cobra por cada aluguel, mostrando as informaes pedidas a seguir(1 pt):
- sabendo que um tero das fitas so alugadas por ms, exiba o faturamento anual da locadora.
- quando o cliente atrasa a entrega, cobrada uma multa de 10% sobre o valor do aluguel.
Sabendo que um dcimo das fitas alugadas no ms so devolvidas com atraso, calcule o valor
ganho com multas por ms.
- sabendo ainda que 2% de fitas se estragam ao longo do ano, e um dcimo do total comprado
para reposio, exiba a quantidade de fitas que a locadora ter no final do ano.
8.6 Faa um programa que, dado um nmero de conta corrente com trs dgitos, retorne o seu
dgito verificador, o qual calculado da seguinte maneira(1 pt):
Exemplo: nmero da conta: 235
- somar o nmero da conta com o seu inverso: 235 + 532 = 767
- multiplicar cada dgito pela sua ordem posicional e somar estes resultados:
7
6
7
x1
x2 x3
7 + 12 + 21 = 40
- o ltimo dgito desse resultado o dgito verificador da conta, isto o nmero zero.
-----------------
--------------
--------------