Web-Introdução A Portugol PDF
Web-Introdução A Portugol PDF
Web-Introdução A Portugol PDF
Aula 05
Programação utilizando
Portugol
-Versão de impressão
Tópicos Principais:
0. Estrutura de um programa
1. Resolução de problemas
1.1 Algoritmos
1.2 Diagrama de blocos
1.3 Portugol
2. Programa padrão
3. Saída de dados
4. Memória
5. Entrada de dados
6. Processamento
7. Resumo
8. Lista de Exercícios
Por
Guilherme Bezerra Fernandes
Algoritmos e estrutura de dados 2
::: 5.0 Programação utilizando Portugol :::
0. Estrutura de um programa
Como já visto nas aulas passadas, o conceito que estrutura um programa segue
basicamente a própria organização do computador que pode ser resumida da seguinte forma:
Memória
Entrada/
Saída
1. Resolução de problemas
Para maior segurança no desenvolvimento de um programa geralmente são adotadas três
etapas:
1 – Elaboração do Algoritmo;
2 – Diagrama de bloco;
3 – Portugol.
1.1. Algoritmo
Como já visto nas aulas passadas, algoritmo é uma seqüência de passos finitos com o
objetivo de solucionar um problema. Pode também ser definido como uma seqüência de
instruções finita e ordenada de forma lógica para a resolução de uma determinada tarefa ou
problema. São exemplos de algoritmos: instruções de montagem, receitas, manuais de uso, etc.
3
Um algoritmo não é A solução do problema, pois, se assim fosse, cada problema teria um
único algoritmo; um algoritmo é UM CAMINHO para a solução de um problema. Em geral,
existem muitos (senão infinitos) caminhos que levam a uma solução satisfatória.
Início
Fim
Diagrama de bloco
Para que o algoritmo possa ser útil, é necessário ainda que quem faz uso dele conheça os
termos utilizados nas instruções. O algoritmo do exemplo só será útil para alguém que seja
fluente na língua portuguesa e conheça o significado dos verbos Retirar, Colocar, Esperar assim
como dos substantivos utilizados no contexto de uma receita culinária. 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 máquina é importante que as
instruções sejam corretas e sem ambigüidades. Portanto, a forma especial de linguagem que
utilizaremos é bem mais restrita que o Português e com significados bem definidos para todos os
termos utilizados nas instruções. Essa linguagem é conhecida como Português Estruturado (às
vezes também chamada de Portugol).
Aprender as palavras e regras que fazem parte dessa sintaxe é fundamental; no entanto,
não é o maior objetivo deste curso. O que realmente exigirá um grande esforço 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 exercício e dedicação.
Embora o Português Estruturado seja uma linguagem bastante simplificada, ela possui
todos os elementos básicos e uma estrutura semelhante à de uma linguagem típica para
programação de computadores. Além disso, resolver problemas com português estruturado pode
ser uma tarefa tão complexa quanto a de escrever um programa em uma linguagem de
programação qualquer. Portanto, neste curso, estaremos na verdade procurando desenvolver as
habilidades básicas que serão necessárias para adquirir-se competência na programação de
computadores.
5
Daqui para frente, serão apresentados exemplos de algoritmos, sua representação no
diagrama de blocos e, por fim, sua escrita em portugol.
2. Programa padrão
inicio
// Seção de Comandos
fimalgoritmo
Por enquanto não é necessário todo este código, desta forma, apague tudo o que está
depois do // e a palavra var, ficando da seguinte maneira:
Programa padrão:
algoritmo "basico"
inicio
fimalgoritmo
TODO programa em portugol tem no mínimo a estrutura básica acima. Ele é composto
pela palavra-chave algoritmo seguido do nome do algoritmo entre aspas duplas, neste caso é
“básico”. Em seguida, tem-se a outra palavra-chave inicio e fimalgoritmo.
Sua representação em diagrama de bloco é demonstrada abaixo:
Início
Fim
Diagrama de bloco
Para testarmos o algoritmo pressione o botão F9. Ao pressionar este botão será simulada
a compilação do código, isto é a transformação do código em Portugol para linguagem de
máquina. Preste ATENÇÃO! ISTO irá apenas SIMULAR. Pois o portugol não é uma linguagem
de programação realmente, apenas um português estruturado. Após isto, será aberta uma janela
preta. Este será o ambiente em que possibilitará a criação dos nossos programas. Feche-a.
6
3. Saída de dados: escreva e escreval
Lembra-se de entrada, processamento e saída? Pois bem, veremos primeiro a saída e não
a entrada, pois geralmente é necessário apresentar alguma informação para o usuário antes que o
mesmo possa entrar com os dados.
3.1 Algoritmo:
Apresente a mensagem “Bem-vindo!”.
“Bem-vindo”
Fim
Diagrama de bloco
3.3 Portugol
Em portugol ficaria da seguinte maneira:
algoritmo "basico"
inicio
escreva ("Bem-vindo!")
fimalgoritmo
Observações: Foram utilizados três espaços em branco antes do comando escreva, isto
não é obrigatório para o programa funcionar, MAS ajuda muito o entendimento por parte do
próprio programador e outros que quiserem entendê-lo. Esta técnica é chamada de endentação
e visa uma boa documentação do seu programa.
7
Caso fosse necessário apresentar várias 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 diferença é que após apresentar o texto ele permite escrever uma
nova linha após o texto desejado. Ex: escreval(“Teste”).
4. Memória
O conceito memória faz referência a variáveis. Uma das razões para o de uso de variáveis
é devido à necessidade de armazenar os dados que serão digitados pelo usuário.
Quando formos dar nomes às variáveis, se faz necessário seguirmos algumas regras:
a) O PRIMEIRO caractere DEVE ser uma letra. (Não podem ser números)
b) Se houver MAIS de um caractere, SÓ poderemos usar letras ou números. (Não
podem ser utilizados caracteres simbólicos como: -,+,!,@,#,$,&,*(,),?, etc.)
c) NENHUMA palavra reservada (ou palavra-chave) poderá ser nome de uma variável.
A seguir, é apresentada uma tabela com a lista de palavras reservadas que não podem ser
utilizadas para nomes de variáveis.
8
Lista de palavras reservadas
algoritmo escreva fimrepita mod
repita
arquivo escreval fimse não
retorne
ate faca função e
se
caractere falso inicio ou
senão
caso fimalgoritmo int outrocaso
timer
cronometro fimenquanto inteiro para
var
debug fimescolha interrompa passo
vetor
enquanto fimfuncao leia pausa
verdadeiro
então fimpara limpatela real
xou
escolha fimprocedimento logico procedimento
Deve-se declarar uma variável com um nome fácil para saber seu significado (por
exemplo: idade) e o tipo (por exemplo: inteiro). Dos 4 tipos possíveis, o inteiro é o mais
adequado. Ficando da seguinte maneira: var idade : inteiro
Em portugol:
algoritmo "idade"
var
idade: inteiro
inicio
fimalgoritmo
9
A declaração de variáveis é feita antes das palavras-chave início e fimalgoritmo. Um dos
objetivos de se declarar uma variável no início do algoritmo é para que seja alocada (reservada)
uma área na memória (endereço de memória) para a variável.
Uma variável pode ser vista como uma caixa com um rótulo ou nome colado a ela, que
num dado instante guarda um determinado objeto. O conteúdo desta caixa não é algo fixo,
permanente. Na verdade, essa caixa pode ter seu conteúdo alterado diversas vezes.
Valor qualquer
i
0
n
t Nome da
Tipo e idade variável(rótulo)
i
r
o
O conteúdo deve ser sempre do mesmo tipo. Na figura acima, a caixa (que é a variável)
foi rotulada como IDADE. Ela é do tipo inteiro, isto é, só é capaz de armazenar valores inteiros.
Quando se cria uma variável deve-se inicializá-la com algum valor. Geralmente é um valor
nulo, mas isto vai depender do problema a ser resolvido. Para iniciar a variável usa-se o símbolo
MENOR seguido de MENOS (<-). Exemplo: idade <- 0
Início
idade <-0
Fim
Diagrama de bloco
10
A inicialização da variável é feita entre as palavras chaves início e fimalgoritmo, ficando
da seguinte maneira:
algoritmo "idade"
var
idade: inteiro
inicio
idade <- 0
fimalgoritmo
Caso a variável não fosse inicializada com zero, ela ficaria com um valor qualquer da
memória com computador, o que geralmente é chamado de lixo.
Agora que se declarou a variável, vamos conhecer o comando para receber os dados do
usuário e armazená-lo na variável.
A palavra-chave para receber dados digitados pelo usuário é leia, seguida entre parêntesis
do nome da variável. O símbolo do diagrama de blocos utilizado para receber dados digitados
pelo usuário é .
Início
idade <-0
idade
Fim
Diagrama de bloco
inicio
idade <- 0
leia(idade)
fimalgoritmo
11
Observa-se que instrução leia DEVE ficar entre o bloco início e fimalgoritmo.
Supondo que o usuário digite o valor 32 e pressione ENTER, veja como ficará a variável
com o seu conteúdo:
i
n
t Nome da
Tipo e idade variável
i
r
o
inicio
escreva ("Digite sua idade:")
leia(idade)
fimalgoritmo
Agora que foi possível receber os dados digitados pelo usuário, é interessante apresentá-
los na tela. Será utilizada a palavra-chave escreva seguido do nome da variável idade que foi
criada. Assim, qualquer valor do tipo inteiro que o usuário digitar será apresentado.
algoritmo "apresenta_idade"
var
idade: inteiro
inicio
escreva ("Digite sua idade:")
leia(idade)
escreva ("Sua idade é:")
escreva (idade)
fimalgoritmo
Até agora foi possível receber os dados, armazená-los na memória e apresentá-los na tela.
Não é algo muito útil. O principal mesmo é processar estes dados, o que será demonstrado no
próximo tópico.
12
6. Processamento
As operações aritméticas são as mais básicas que um programador deve saber programar.
Os símbolos adotados na programação são basicamente os mesmos já conhecidos.
Operação Operador
Adição +
Subtração -
Multiplicação *
Divisão (com resultado real) /
Divisão (com resultado inteiro) div
Resto % ou mod
Exponenciação ^
Tabela 1: Operadores aritméticos
6.1.1 Adição e Subtração: Observa-se através da tabela acima o uso dos operadores de soma e
subtração da mesma maneira utilizados na matemática convencional.
Algoritmo:
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:
Início
valorA<-0
valorB<-0
resultado<-0
valorA
valorB
resultado
Fim
Diagrama de bloco
6.1.2 Multiplicação - De acordo com a Tabela 1 apresentada, pode-se observar que na operação
de multiplicação é utilizado o “*” para representá-lo, ex: 5 * 3 = 15.
6.1.3 Divisão e resto - A divisão possui dois tipos: uma que retorna um valor do tipo REAL e
outra que retorna um valor do tipo INTEIRO.
Exemplos:
4 / 3 = 1,33
4 div 3 = 1
8 / 3 = 2,66
8 div 3 = 2
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
fracionária é retirada, MAS não ocorre o arredondamento para cima.
Exemplos:
4%2=0
8%3=2
7%4=3
algoritmo "Separa_Numeros"
var
valorA : inteiro
resultado : real
inicio
valorA <- 0
resultado <- 0
fimalgoritmo
Um número de duas casas possui o algarismo das dezenas e das unidades. Para a dezena
utilizou-se operador div ao invés de “/”, isto porque não será necessária a parte fracionária. No
caso das unidades utiliza-se o operador “%”, pois deseja-se apenas o resto.
2^2=4
2^3=8
4 ^ 2 = 16
Exemplos:
algoritmo "expoente"
var
base : inteiro
expoente : inteiro
resultado : real
inicio
base <- 0
expoente <- 0
fimalgoritmo
inicio
fimalgoritmo
4 – Declaração de variáveis
var idade : inteiro
6 – Operadores básicos:
+, - , *, /, div, %, ^
8.2. Faça um programa que receba o saldo de uma aplicação e imprima o valor aplicado e valor
com rendimento de 5%(1 pt).
8.3. Entrar com um número no formato CDU(centena, dezena e unidade) e imprimir invertido:
UDC. (exemplo: se entrar com o valor 123, sairá 321)(1 pt).
- sabendo que um terço das fitas são alugadas por mês, 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 décimo das fitas alugadas no mês são devolvidas com atraso, calcule o valor
ganho com multas por mês.
- sabendo ainda que 2% de fitas se estragam ao longo do ano, e um décimo do total é comprado
para reposição, exiba a quantidade de fitas que a locadora terá no final do ano.
8.6 Faça um programa que, dado um número de conta corrente com três dígitos, retorne o seu
dígito verificador, o qual é calculado da seguinte maneira(1 pt):
7 + 12 + 21 = 40
- o último dígito desse resultado é o dígito verificador da conta, isto é o número zero.