Sei sulla pagina 1di 17

1

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 :::

Nesta aula, serão apresentados os principais conceitos de um programa, etapas de


resolução de problemas, estrutura básica de um programa, funções básicas de entrada, saída de
dados, uso de variáveis, processamento, resumo e exercícios.

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 Processamento Saída

Entrada/
Saída

A seqüência principal de execução é entrada -> processamento -> saída, MAS no


decorrer da execução podem ser necessários outros tipos de acesso como, por exemplo, a
necessidade ou não de armazenamento de dados temporários (memória) e, por fim o
armazenamento ou não fixo de maneira permanente no HD (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.

Um algoritmo não computacional é um algoritmo cuja seqüência de passos, a princípio,


não pode ser executada por um computador. Abaixo é apresentado um algoritmo NÃO
COMPUTACIONAL cujo objetivo é usar um telefone público.

1 – Retirar o telefone do gancho


2 – Esperar o sinal
3 – Colocar o cartão
4 – Discar o número
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 à Ciência da Computação, mas, na realidade, ele pode ser aplicado a
qualquer problema cuja solução possa ser decomposta em um grupo de instruções.

1.2. Diagrama de bloco

O diagrama de bloco, também chamado de fluxo, é uma ferramenta usada e desenvolvida


pelo profissional que está envolvido diretamente com a programação, tendo como objetivo
descrever o método e a seqüência do processo dos planos num computador.

Essa ferramenta usa diversos símbolos geométricos, os quais estabelecerão as seqüências


de operações a serem executadas em um processamento computacional. Um exemplo de
diagrama é apresentado abaixo:

Início

Fim
Diagrama de bloco

Observações: Os programas Word e VISIO permitem criar diagrama de blocos


facilmente. Ao longo do curso serão apresentados os principais símbolos.
4
1.3 Portugol

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).

O português estruturado é, na verdade, uma simplificação extrema do Português, limitada


a umas poucas palavras e estruturas que têm um significado muito bem definido. Ao conjunto de
palavras e regras que definem o formato das sentenças válidas chamamos sintaxe da
linguagem. Durante este texto, a sintaxe do Português Estruturado será apresentada
progressivamente e a utilizaremos em muitos exercícios de resolução de problemas.

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.

O Programa VisuAlg permite testar os programas desenvolvidos em portugol


rapidamente. Pode ser encontrado no site de busca www.apoioinformatica.inf.br.

2. Programa padrão

Abra o programa VisuAlg. Observe que é gerado automaticamente o seguinte código:


algoritmo "semnome"
// Função :
// Autor :
// Data : 15/02/2008
// Seção de Declarações
var

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.

Para a apresentação de dados na tela, utiliza-se a palavra-chave escreva seguido do texto a


ser apresentado entre parêntesis. O símbolo do diagrama de blocos utilizado para apresentação
de dados na tela é o ..

Problema 1: Desenvolva um programa que mostre na tela a mensagem “Bem-vindo!”.


O primeiro passo é desenvolver o algoritmo.

3.1 Algoritmo:
Apresente a mensagem “Bem-vindo!”.

3.2 Diagrama de bloco:


Início

“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”).

3.4 Exercício: Desenvolva um programa que apresente na tela “Estou começando a


conhecer Portugol!”, mas de forma que cada palavra fique em uma linha diferente! Faça
o algoritmo, diagrama de bloco e por fim, o portugol.

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.

Mas o que seria variável?


Variável é um local na memória principal (temporária), isto é um endereço que armazena
um conteúdo. Também pode ser considerada como tudo aquilo que é sujeito a variações, que é
incerto, instável ou inconstante. Por exemplo, a entrada de dados de um usuário é incerta, não
tem como saber exatamente o que um usuário irá digitar.

Uma variável irá armazenar dados de forma TEMPORÁRIA na memória do computador,


isto quer dizer que ao fechar o programa os dados serão PERDIDOS! Para utilizá-la, basta inserir
a palavra-chave var seguido do nome desta variável, dois pontos “:” e seu tipo sublinhado
(inteiro, real, caractere, lógico). Ex: var idade : inteiro.

Uma observação importante é que as variáveis não precisam ser representadas em


diagrama de blocos quando são criadas, mas apenas quando recebem valores.

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

4.1 Tipo de dados


Os tipos de dados que podem ser armazenados em um computador são divididos em 4
categorias:
1 - Inteiros: correspondem aos dados numéricos positivos ou negativos que NÃO sejam
fracionários. Ex: ...-3, -2, -1, 0, 1, 2, 3... A palavra-chave para seu uso é inteiro.
2 – Reais: correspondem aos dados numéricos positivos ou negativos E fracionários.
Ex: ...-3.0, -2.1, -1.5, 0, 1, 2.4, 3... A palavra-chave para seu uso é real
3 – Caracteres: correspondem aos tipos de caracteres contendo letras, números e
símbolos especiais. Ex: “João”, “Rua 10”, “123”, etc. É também conhecido como alfanumérico,
string, literal ou cadeia. A palavra-chave é caractere.
4 – Lógicos: São os tipos de dados com valores verdadeiros e falsos, sendo possível
representar apenas um dos dois valores. Ex: Falso, F e N (para valor lógico falso) e
Verdadeiro, V e S (para o valor lógico verdadeiro). A palavra-chave é logico.

Problema 2: Desenvolver um programa para armazenar a idade do usuário.

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

Representação de uma variável

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

A atribuição de valores para variável é representada no diagrama de blocos com um


retângulo. O diagrama de blocos ficará assim:

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.

5. Entrada de dados: leia

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 é .

O novo diagrama de blocos:

Início

idade <-0

idade

Fim
Diagrama de bloco

No caso do Portugol, ficaria: leia(idade).


Um exemplo completo:
algoritmo "idade"
var
idade: inteiro

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:

Dado digitado pelo


32 usuário

i
n
t Nome da
Tipo e idade variável
i
r
o

Repare que ao executar o programa, simplesmente fica um cursor piscando, obrigando o


usuário a adivinhar o que deve ser digitado. Desta maneira, é aconselhável mostrar uma
mensagem solicitando ao usuário que digite sua idade, por exemplo “Digite a sua idade:”.
algoritmo "idade"
var
idade: inteiro

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

O Conceito de processamento se refere aos cálculos, testes condicionais, etc. Serão


apresentados primeiramente os operadores básicos disponíveis. Os restantes serão vistos mais à
frente do curso.

6.1 Operações aritméticas básicas

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.

Problema 3: Desenvolver o algoritmo, portugol e diagrama de blocos de um programa


que efetue a soma de dois números.

Algoritmo:

1 – Atribuir o valor zero às variáveis 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 variáveis valorA e valorB e atribua seu resultado à variável resultado;
7 – Apresentar o valor da variável 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:
Início

valorA<-0

valorB<-0

resultado<-0

“Digite o primeiro valor”

valorA

“Digite o segundo valor”

valorB

resultado <- valorA + valorB

resultado

Fim

Diagrama de bloco

Exercício: Faça uma calculadora com as 4 operações básicas de soma, subtração,


multiplicação e divisão. Faça o algoritmo, diagrama de bloco e portugol.

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.

Outra operação é chamada de RESTO e representada pelo operador “%”. É utilizado


quando se deseja encontrar o resto da divisão entre dois números inteiros.

Exemplos:

4%2=0
8%3=2
7%4=3

A seguir, será apresentado um uso típico em programas dos operadores div e %.

Problema 4 - Desenvolva um programa que leia um número 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 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.

Exercício: Desenvolva um programa que leia um número de 3 casas e imprima os


algarismos separados em cada linha.

6.1.4 Exponenciação e radiciação - A última operação chamada de exponenciação é


representada pelo operador “^”. Na matemática, representada pela base e por um expoente, Ex:
23 = 8.
15
Exemplos:

2^2=4
2^3=8
4 ^ 2 = 16

Na matemática é possível utilizar a exponenciação para encontrar, por exemplo, a raiz


quadrada de um número.

Exemplos:

√16 = 4 (raiz quadrada convencional)


16 ^ (1/2) = 4 (raiz quadrada com exponenciação)
3
√8 = 2 (raiz cúbica)
8 ^ (1/3) (raiz cúbica com exponenciação)

Problema 5 - Desenvolva um programa que leia o valor da base e o valor do expoente e


calcule a exponenciação.

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

Exercício: Desenvolva um programa que calcule a raiz quadrada e cúbica de um número


digitado pelo usuário.
16
7. Resumo
1 - Todo programa escrito em potugol é composto no mínimo 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

2 - A declaração das variáveis devem estar entre o bloco algoritmo e início


3 – Comandos para saída de dados(apresentação de textos na tela):
escreva, escreval

4 – Declaração de variáveis
var idade : inteiro

5 – Comando para entrada de dados(leitura dos dados digitados pelo usuário):


leia(idade)

6 – Operadores básicos:
+, - , *, /, div, %, ^

8.0 Lista de Exercícios (valor: 10 pts)


8.1. Faça o algoritmo, diagrama de blocos e portugol dos exercícios abaixo(2 pts):

 Um programa que calcule a média de 5 notas de um aluno.


 Um programa que calcule a área de um triângulo. (dica: fórmula para área de um triângulo
é base * altura dividido por 2)
 Um programa que calcule a área de uma circunferência. (dica: fórmula para área de uma
circunferência é 3,14 * raio ao quadrado.
 Um programa que efetue o cálculo do salário líquido de um professor. Dados necessários:
valor da hora aula, número de horas trabalhadas no mês e percentual de desconto no
INSS.

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).

8.4. Faça um programa de cálculo de custo de energia de dois aparelhos de um estabelecimento


comercial. O usuário entrará com o valor da potência do aparelho (em watts) e o tempo de
utilização (em horas) diário de ambos os aparelhos. O programa deverá apresentar o nome do
aparelho, o seu custo em reais por hora, por dia e por mês. (Obs: a CEMIG estabelece que um
aparelho de 1000 watts de potência ligado por uma hora custa 0,642 reais para o
estabelecimento)(1 pt).
17
8.5 Faça um programa que leia a quantidade de fitas que uma locadora de vídeo possui e o valor
que ela cobra por cada aluguel, mostrando as informações pedidas a seguir(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):

Exemplo: número da conta: 235


- somar o número da conta com o seu inverso: 235 + 532 = 767
- multiplicar cada dígito pela sua ordem posicional e somar estes resultados:
7 6 7
x1 x2 x3
----------------- -------------- --------------

7 + 12 + 21 = 40
- o último dígito desse resultado é o dígito verificador da conta, isto é o número zero.

8.7. Faça um resumo do capítulo 1, 2 e 3 do Livro: Algoritmos – lógica para desenvolvimento de


programação de computadores.(3 pts)

Potrebbero piacerti anche