Você está na página 1de 41

LGICA DE

PROGRAMAO



FABIANO KEIJI TAGUCHI







ESTE MATERIAL TEM UM OBJETIVO DE
COMPLEMENTAR OS ASSUNTOS ABORDADOS DENTRO
DE SALA DE AULA, TORNANDO-SE UM GUIA PARA
CONSTRUO DE ALGORTIMOS, BASE PARA PODER-SE
PROGRAMAR UTILIZANDO QUALQUER LINGAUGEM DE
PROGRAMAO

2

INTRODUO

Lgica consiste na arte de pensar corretamente, organizado o pensamento, de forma a
corrigir o raciocnio. Em nosso dia-a-dia, sem percebermos colocamos em prtica a lgica, em
qualquer pensamento seguimos passos para alcanar um objetivo, como em uma simples
movimentao de um objeto para outro local a at casos mais complexos como resoluo de
solues computacionais.
Ex.: Os animais so dotados de instinto. (Premissas)
Todo cachorro um animal. (Premissas)
Portanto, todo cachorro tem instinto. (Concluso)

Maria tem 15 anos. (Premissas)
Joo mais velho que Maria. (Premissas)
Portanto, Joo tem mais do que 15 anos. (Concluso)

O palet est dentro do guarda-roupa. (Premissas)
O guarda-roupa est fechado. (Premissas)
Preciso abrir o guarda-roupa para poder pegar o palet. (Concluso)

Que passos devemos seguir para trocar uma lmpada:
1. Pegue uma escada;
2. Posicione-a embaixo da lmpada;
3. Busque uma lmpada nova;
4. Suba na escada;
5. Retire a lmpada velha;
6. Coloque a lmpada nova;
7. Desa da escada;

Outra soluo:
1. Desligue o interruptor
2. Pegue uma escada;
3. Posicione-a embaixo da lmpada;
4. Busque uma lmpada nova;
5. Suba na escada;
6. Retire a lmpada velha;
7. Coloque a lmpada nova;
8. Desa da escada;
9. Descarte a lmpada queimada;
10. Guarde a escada;

Analisando os dois exemplos acima podemos chegar a uma concluso: sempre que
fazemos algo podemos de certa forma melhorar refinando o problema, isso no diferente
quando falamos em algoritmos. Vamos ao estudo deles!

3


Exerccios
01 Agora, defina um comportamento de um algoritmo para dirigir um carro.
02 E se no exemplo de trocar a lmpada, o que iria acontecer se a lmpada nova estiver
queimada?

Nota: Existem vrias formas de se pensar sobre o mesmo problema, a resoluo pode ser
diferente, mas no final os resultados esperados podem ser alcanados, isso porque, cada
pessoa tem uma forma diferente de pensar, podemos dizer que nenhuma lgica errada,
solues diferentes podem estar corretas, porm, existem solues que so consideradas mais
adequadas dependendo do contexto.

Mas o que uma soluo adequada?
Soluo adequada aquela que prev a possibilidade de que certa situao alcance resultados
de forma mais eficiente.


CONCEITOS DE LGICA

DADO: Elemento bsico para processamento eletrnico de dados. a menor unidade
da informao;
INFORMAO: Conjunto de dados sobre um determinado elemento;
SISTEMA: Conjunto estruturado de elementos que interagem para atingir um objetivo;
LINGUAGEM DE PROGRAMAO: Notao formal para descrio de algoritmos que
so executados a partir de um computador. Existem duas classificaes de linguagem
de programao, as de baixo nvel (Assembly consistem em cdigos de operao) e
as de alto nvel (Java Aproxima-se das linguagens utilizados por humanos);
o BAIXO NVEL: Os programas so processados mais rapidamente, pois ocupam
menos espao em memria, porm com pouca portabilidade;
o ALTO NVEL: Os programas tm maior portabilidade, porm exigem mais de
processamento.
INTERPRETADOR: Executam as instrues indicados por comando atravs da
linguagem de programao, traduzindo de uma-a-uma as instrues e executando-as,
sem gerar cdigo-objeto (.exe) como resultado.
COMPILADOR: Rotinas que geram um arquivo executvel, de forma que traduz todo o
programa escrito em linguagem de alto nvel para baixo nvel, possibilitando o
entendimento do computador, gerando como resposta um cdigo-objeto.


4

Exerccios:
01 Uma lesma deve subir um poste de 10m de altura. De dia sobe 2m e noite desce 1m. Em
quantos dias atingir o topo do poste?
02 Trs gatos comem trs ratos em trs minutos. Cem gatos comem cem ratos em quantos
minutos?
03 O pai do padre filho do meu pai. O que eu sou do Padre?
04 Qual o prximo nmero da sequncia 7, 8, 10, 13, 17?
05 Um pai de 80 kg e suas 2 filhas (40 kg cada) precisa sair de uma ilha com um barco. Porm
a capacidade do barco de 80 kg. Como faro para sair da ilha?

ALGORITMOS

Um algoritmo uma sequncia ordenada finita de operaes definidas que quando
executadas por um computador operando sobre dados em um determinado tempo produzem
uma algum resultado, objetivado em seu incio.
INSTRUES: Indica qual ao algum objeto deve agir, algoritmos so baseados em instrues
a serem realizadas.
A construo de um algoritmo passa por quatro fases:
1. ABSTRAO DOS DADOS Conhecimento do objetivo a ser tratado no problema;
2. DEFINIO DAS ENTRADAS Definio dos dados que precisam ser conhecidos para
resoluo do problema;
3. PROCESSAMENTO Clculo e operaes necessrias para que se atinja o objetivo em
questo;
4. SADA Resultado do processamento.

Exemplo: Para calcular a mdia de um aluno, dadas quatro notas (N1, N2, N3, N4).
Objetivo: Calcular a mdia de um aluno
Entrada: As quatro nota
Processamento: Somar as quatro notas e dividir por 4
Sada: Mdia dos alunos
Exerccio:
01 Identifique os dados de entrada, processamento e sada do algoritmo abaixo:
Receba o cdigo da pea;
Receba o valor da pea;
Receba quantidade de peas;
Calcule o valor total da pea;
Mostre o cdigo da pela e seu valor total;

5

ALGORITMOS E AS SUAS FORMAS DE REPRESENTAO

Os algoritmos podem ser representados de trs formas, sendo atravs de: uma
narrao descritiva, de um fluxograma ou atravs de pseudocdigo. Vejamos detalhadamente
essas trs formas:
1. Narrao Descritiva: Representao do problema feita por meio da linguagem
natural, descrevendo os passos que devem ser seguidos para soluo de um problema.
Exemplo: Algoritmo que efetua a soma entre dois nmeros.
preciso obter como entrada dois nmeros quaisquer, esses nmeros devem ser
somados, e ento o resultado apresentado.

2. Fluxograma: Notao grfica que permite indicar as aes e decises.


Figura 1 - Representao de um fluxograma

Simbologia a ser utilizada na construo de um fluxograma:

Figura 2 - Simbologia utilizada para criao de fluxogramas


6

3. Pseudocdigo: Representao do problema por meio de regras pr-definidas, sendo
uma linguagem restrita e estruturada. Conhecido como Portugol ou Portugus
Estruturado.

Figura 3 - Representao de um pseudocdigo

Exerccios:
01) Utilizando uma narrao descritiva escreva algoritmos para as seguintes situaes:
a) Trocar o pneu de um carro;
b) Resolver o problema da torre de Hani;


02) Com um fluxograma, represente uma possvel soluo para os algoritmos abaixo:
a) Calcular a mdia aritmtica de 3 valores;
b) Analisar se uma pessoa maior de idade ou no.


TCNICAS DE PROGRAMAO DICAS QUE PODEM TORNAR MAIS
FCIL A VIDA DE DESENVOLVER

Algoritmos devem ter os trechos comentados, um algoritmo no documentado, um
dos piores erros de um desenvolvedor, pois o grande objetivo de se comentar um cdigo,
facilitar o entendimento para outras pessoas e at para si mesmo.
Da mesma forma, o uso dos conhecidos prlogos facilita o cdigo de um algoritmo.
Prlogo o cabealho de um algoritmo, que contm informaes de: descrio do que o
algoritmo faz, nome do autor e data de criao.
O uso de espaos em branco entre trechos de cdigo, alm de separar ajuda na
legibilidade do algoritmo, comum deixarmos uma linha em branca entre as declaraes de
variveis do corpo do algoritmo, entre as estruturas de controle utilizadas e tambm nos
blocos de sada dos algoritmos.
Utilize a indentao, consiste em um recuo da margem de escrita do algoritmo que
diferencia as instrues que fazem parte de um bloco do cdigo para as instrues que fazem
parte do algoritmo, essa indentao utilizada nas estruturas condicionais, nos laos de
repetio e tambm nas sub-rotinas.
Figura 4 - Figura representativa da Torre de Hani

7


Figura 5 - Exemplo de identao em algoritmos

O QUE FAZER PARA COMEAR A ESCREVER UM ALGORITMO

Muitas vezes nos deparamos com gigantes enunciados que por vezes, acaba se tornando
bem simples sua resoluo, a recproca vlida, encontramos tambm enunciados que
parecem simples, mas nos trazem um grande problema na hora de escrever um algoritmo para
resoluo do problema. Como tratar isso, segue abaixo listado algumas dicas para entender o
que o enunciado pede e comear a escrever o cdigo. Entender o objetivo do algoritmo 50%
do caminho para se chegar a resoluo, se no temos certo onde queremos chegar, podemos
dominar a linguagem de programao que no conseguirmos resolver o problema exposto.
1. Leia cuidadosamente a especificao do problema.
2. Faa uma anlise de todas as sadas que o programa exige, isto tudo aquilo que vai
ser mostrado de alguma forma para o usurio, seja uma informao, o resultado de
um clculo ou uma resposta.
3. Levante todas as entradas necessrias, ou seja, tudo aquilo que vai ser necessrio para
alcanar o objetivo do algoritmo. Tudo isso, so variveis que devem ser declaradas
para utilizao no processamento do algoritmo.
4. Analise os clculos que devem ser feitos para que se chegue ao resultado que se busca,
verifique o tipo de estrutura de controle ser utilizado para o algoritmo, se ser
necessrio utilizar um lao de repetio.

VARIVEIS

Consiste em um espao utilizado na memria do computador para armazenar algum
tipo de dado, as variveis podem assumir quatro tipos bsicos, sendo:
Inteiro;
Real;
Caractere;
Lgico;


8

Obs.: Na hora de escrever os cdigos no software Visualg, o tipo de dado caractere
apresentado como caracter.

O primeiro passo quando criar uma varivel identificar o seu tipo, aps isso
precisamos dar um nome a essa varivel, ao nomear uma varivel devemos prestar ateno
em algumas regras para utilizao desse nome:

01) Uma varivel deve comear sempre com uma letra;
02) No permitido espaos entre nomes de variveis;
03) Nomes reservados da linguagem de programao, tambm no podem ser usados;
04) Caracteres especiais tambm no podem ser utilizados (!, ?, @, $, &, *, +, =).



Figura 6 - Quadro de palavras reservadas, que no podem ser usadas como nome em variveis

A partir disso, j podemos declarar uma varivel, a partir do seu nome e do seu tipo, a
sequencia que seguimos , primeiro o nome e depois o seu tipo:

nome: caractere[20]
idade: inteiro
nota: real
valor1: inteiro
media, nota1, nota2, nota3: real

Obs.: Em variveis do tipo caractere, podemos definir o tamanho que a varivel pode assumir,
colocando um nmero entre colchetes, como no exemplo acima, o nome no pode possuir
mais de 20 caracteres.



9


Abaixo temos alguns exemplos de nomes no permitidos para declarao de variveis:

nome pessoa: caractere
x!: real
media 2: real
valor?: inteiro
a+b: inteiro
.media : real

Quando declaramos uma varivel, seu valor inicial nulo, a partir do processamento
do algoritmo, ela passa a receber valores. Durante a execuo de um algoritmo uma varivel
pode receber vrios valores, sendo que armazena s o ltimo que recebeu.
Quando uma varivel assume um valor que no pode ser mudado durante a execuo
de um algoritmo, chamamos as de constantes. O valor de uma constante o mesmo do inicio
ao fim do algoritmo, um exemplo prtico para se utilizar de constante o valor do , que e
constante e em todo clculo vale 3,14.

OPERADORES

Trabalhamos com quatro tipos de operadores. Esses operadores sero utilizados
durante o processamento de algum algoritmo, vejamos agora as classificaes entre os
operadores existentes: os aritmticos, os relacionais, os lgicos e o de atribuio.
Operadores aritmticos:

Podemos utilizar como operador para os clculos de resto o operador %.
O operador de exponenciao utilizado pelo Visual (Software que trabalharemos mais
a frente o ^).

Operadores relacionais:


10



Operadores Lgicos:


Os operadores lgicos so utilizados para os clculos que envolvem lgebra booleana,
onde so analisadas preposies a partir dela, uma concluso tomada, abaixo vemos uma
tabela de comparao tomada a partir dos operadores lgicos:
p q p ^ q p v q
V V V V
V F F V
F V F V
F F F F
~p
F
F
V
V
pp qq p ^ q p ^ q p v q p v q
VV VV VV VV
VV FF FF VV
FF VV FF VV
FF FF FF FF
~p ~p
FF
FF
VV
VV

Exerccio:
01 - Considerando p = V e q = F, resolva as seguintes expresses lgicas:

a) ~p
b) ~q
c) p ^ q
d) p v q
e) (~p) ^ q
f) (~p) v q
g) p ^ (~q)
h) p v (~q)
i) (~p) ^ (~q)
j) (~p) v (~q)

Operador de atribuio: Forma para especificar que uma varivel receber um valor. Essa
operao ser indicada pelo sinal de igual (linguagem de programao) ou (representao
algortmica).

Exemplo:
a <-7;
nome <- Cascavel;
ab <- 1,2;

11

COMANDOS DE ENTRADA/SADA

Entrada e Sada de Dados: Um computador processa algo, esse processamento feito sobre
informaes que so passadas a eles, essas informaes so tratadas como entradas, essas
entradas sofrem aes, que nada mais a ao do processamento, transformando-as em
sadas:
a) ENTRADA: Utiliza-se na representao algortmica o comando leia, que l valores e
atribui-os a variveis indicadas, como no exemplo:
escreva(Digite um nome: )
leia(nome);
O comando escreva foi utilizado apenas para mostrar a mensagem Digite um nome na
tela, quem faz a atribuio do nome digitado pelo usurio para varivel nome, o
comando leia.

b) SADA: utilizado o comando escreva, que permite que os resultados sejam
exibidos. Podemos observar a utilizao do comando no exemplo a seguir:
escreva(A sua mdia : , media)
escreva (Estou estudando lgica de programao)

algoritmo teste
var
idade: inteiro
nome: caractere[20]
inicio
escreva (Digite o seu nome: )
leia(nome)
escreva(Digite a sua idade: )
leia(idade)
escreva(Ol , nome, voc tem, idade, anos.)
fim
Exerccios:
01 Escreva um algoritmo para calcular a base de um retngulo, cujo clculo da rea a base
multiplicada pela altura.

02 Dadas trs notas, calcule a mdia aritmtica.

03 Faa um algoritmo que calcule o salrio lquido de um funcionrio onde: SL (Salrio
Lquido), DE (Desconto), SB (Salrio Bruto) e AD (Adicionais). A base para o clculo : SL = (SB-
DE)+AD.

04 Dada uma idade, converta em horas e meses e apresente os resultados.

12

05 - Um quadrado uma figura geomtrica com quatro lados de mesmo comprimento e
quatro ngulos retos. Elabore um algoritmo para calcular a rea e o permetro de um
quadrado. Sendo a rea de um quadrado (lado x lado) e o permetro a soma dos lados do
quadrado.

06 - Elabore um algoritmo que leia um nmero inteiro, e apresente o seu antecessor e seu
sucessor.

07 - Construa um algoritmo que leia o preo de um produto, o percentual de desconto e
calcule o valor a pagar e o valor com desconto.

08 - Elabore um algoritmo que leia um nmero inteiro e apresente a raiz quadrada e o valor
deste nmero elevado ao quadrado.


TESTE DE MESA

O teste de mesa consiste em uma tcnica utilizada para simular a execuo dos
algoritmos, a fim de testar o processamento, essa prtica feita simulando o valor que
armazenado nas variveis conforme o processamento realizado pelo algoritmo.


Figura 7 - Imagem referenciada realizando um teste de mesa


13

COMENTRIOS

Todo trecho escrito em nosso algoritmo interpretado como parte do cdigo a ser
executado, quando quisermos escrever algum comentrio, devemos utilizar duas barras (//)
para que seja entendido que as frases aps os caracteres so comentrios.
// Isso um comentrio.

ANOTAES

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________

14

ESTRUTURA CONDICIONAL

Os algoritmos que escrevemos at agora baseavam em uma sequncia linear, onde as
instrues eram executadas de forma sequencial, no havendo nenhum tipo de desvio, a partir
de agora, fazendo uso de estruturas condicionais, faremos desvios, que acontecero de acordo
com anlises que so feitas em determinadas aes durante o processamento. Vamos analisar
a seguinte situao: Chegamos a um caixa eletrnico, e inserimos o carto para sacar o
dinheiro, aps inserir o carto, a senha requerida, se a senha digitada for correta, o
algoritmo continua a ser executada, caso a senha digitada estiver errada, h um desvio e
informada uma mensagem que a senha estava invlida.
A estrutura condicional aquela que permite a execuo de comandos se uma
condio que for testada seja verdadeira, como no exemplo, a condio que estamos
analisando a senha ser vlida, se a senha que o usurio digitou vlida, ele continua a
manipular o caixa eletrnico, se a senha for invlida, o mesmo impossibilitado de fazer aes
no caixa. Vejamos agora os tipos de estrutura condicional que temos:

ESTRUTURA CONDICIONAL SIMPLES

Nesse tipo de estrutura, uma condio analisada, e caso seja verdadeira, executa
um conjunto de instrues que est dentro do bloco da estrutura, se a condio for falsa, a
instruo a ser executada a primeira que est abaixo do fim_se. Sua sintaxe :
se (<<Condio>>) ento
<<Instruo>>
fim_se



Figura 8 - Fluxograma de representao da estrutura condicional simples

15

ESTRUTURA CONDICIONAL COMPOSTA

Na estrutura do tipo composta, podemos dizer que avaliamos uma condio por
completo. Na estrutura simples, a condio testada e caso seja verdadeira, um conjunto de
instrues executada, a diferena em utilizar uma estrutura condicional composta est
justamente ai, quando se analisa uma condio, caso esta for verdadeira um conjunto de
instruo so executadas, e se caso essa condio for falsa, outro conjunto de instrues passa
a ser executada, ento, tanto faz o resultado da analise da condio sendo verdadeira ou falsa
alguma instruo ser executada. Sua sintaxe :
se (<<Condio>>) ento
<<Instruo se a condio for verdadeira>>
seno
<<Instruo se a condio for falsa>>
fim_se



Figura 9 - Fluxograma de representao da estrutura condicional composta
Exemplo:
algoritmo maior
var
a, b: inteiro
inicio
escreva (Digite um nmero: )
leia (a)
escreva (Digite o segundo nmero: )
leia (b)
se (a>b) ento
escreva (O primeiro nmero digitado maior)
fim_se
fim

16


algoritmo menor
var
a, b: inteiro
inicio
escreva (Digite um nmero: )
leia (a)
escreva (Digite o segundo nmero: )
leia (b)
se (a<b) ento
escreva (O primeiro nmero digitado menor)
seno
escreva(O segundo nmero digitado menor)
fim_se
fim

ESTRUTURA CONDICIONAL ANINHADA (ENCADEADA)


Figura 10 - Fluxograma de representao da estrutura condicional aninhada

Essa estrutura utilizada quando precisamos verificar condies sucessivas, isto ,
podemos utilizar uma condio dentro de outra, para isso vamos analisar o seguinte problema:
Temos trs nmeros digitados, precisamos saber qual o maior. Vejamos:
OBJETIVO: Encontrar o maior nmero digitado;
ENTRADA: Obter trs nmeros inteiros;
PROCESSAMENTO: Comparar os trs nmeros digitados e encontrar o maior;
SADA: Imprimir o maior nmero.


17

As entradas dos nmeros sero armazenadas nas variveis a, b e c, para encontrar o
maior nmero precisamos realizar comparaes entre os nmeros digitados, primeiro faremos
a comparao se o valor de a>b, se o valor de a for maior, ento faremos a comparao se o
valor de a>c, isso consiste na primeira estrutura condicional. Se no teste de a>b, obtivermos
uma resposta falsa, iremos para o seno, onde ser avaliado se o valor de b>c, o cdigo abaixo
exemplifica o funcionamento:
algoritmo valor_maior
var
a, b, c, max: inteiro
inicio
escreva (Digite um nmero: )
leia (a)
escreva (Digite o segundo nmero: )
leia (b)
escreva (Digite o terceiro valor: )
leia (c)
se (a>b) ento
se(a>c) ento
max <- a
seno
max <- c
fim_se
seno
se(b>c) ento
max <- b
seno
max <- c
fim_se
fim_se
escreva (O maior valor : , max)
fim


ESTRUTURA DE DECISO MLTIPLA

Utilizando a estrutura de deciso mltipla podemos avaliar vrias condies ao mesmo
tempo, sendo alguma dessas condies satisfeitas, executa-se a instruo da qual a condio
verdadeira. A sintaxe de funcionamento a abaixo:
caso (varivel)
seja (valor1) faa (instruo1)
seja (valor2) faa (instruo2)
seja (valor3) faa (instruo3)
seno (instruo)
fim_caso

18


Figura 11 - Fluxograma de representao da estrutura de deciso de mltipla escolha

Vamos agora elaborar um algoritmo que ao usurio digitar o nmero referente ao
ms, possamos imprimir o nome por extenso do ms, caso o usurio digite um nmero
invlido, uma mensagem de erro deve ser exibida.
OBJETIVO: Retornar o nome extenso do ms;
ENTRADA: Solicitar ao usurio o nmero de ms;
PROCESSAMENTO: Encontrar o nome do ms por extenso, de acordo com o nmero;
SADA: Imprimir o nome do ms.

algoritmo ms
var
numero: inteiro
inicio
escreva (Digite o nmero do ms correspondente: )
leia (numero)
caso (numero)
seja 1 faa escreva (Janeiro)
seja 2 faa escreva (Fevereiro)
seja 3 faa escreva (Maro)
seja 4 faa escreva (Abril)
seja 5 faa escreva (Maio)
seja 6 faa escreva (Junho)
seja 7 faa escreva (Julho)
seja 8 faa escreva (Agosto)
seja 9 faa escreva (Setembro)
seja 10 faa escreva (Outubro)
seja 11 faa escreva (Novembro)
seja 12 faa escreva (Dezembro)
senao escreva(Ms no encontrado)
fim_caso
fim


19

Exerccios:
01 Formule um algoritmo que leia a matrcula e o nome de um vendedor, seu salrio fixo e o
total de vendas e calcule a comisso de vendas. Se o total de vendas inferior a R$ 1.500,00 o
percentual de comisso de 2%, e se for maior o percentual sobe para 4%. Apresente o nome
do vendedor, sua matrcula, salrio fixo e o salrio total.
02 Escreva um algoritmo que leia um nmero e informe se ele divisvel por 3e por 7.
03 Elabore um algoritmo que leia o percurso em KM, o tipo da moto e informe o consumo
estimado de combustvel para realizar o percurso. Sabendo que motos do tipo A fazem 26 km
com 1 litro e combustvel, motos do tipo B fazem 20 km e do tipo C 7 km com 1 litro.
04 Crie um algoritmo que pea a idade de uma pessoa, e classifique de acordo com sua
classe eleitoral, sendo: NO ELEITOR quando tiver uma idade menor que 16 anos, ELEITOR,
quando sua idade for entre 18 e 65 anos, e FACULTATIVO quando sua idade for maior que 65
anos.
05 Elabore um algoritmo que receba o nome do funcionrio, salrio e o cdigo do cargo, ao
trmino apresente o nome, o cargo que ocupa e seu salrio reajustado, conforme as seguintes
condies:
Cdigo 1 Servios Gerais Reajuste de 50%
Cdigo 2 Vigia 30%
Cdigo 3 Recepcionista 25%
Cdigo 4 Vendedor 15%

06 - Leia um nmero inteiro e apresente uma mensagem indicando se este nmero par ou
mpar, e se positivo ou negativo.


ANOTAES

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_________________________________________________________________________

20

ESTRUTURA DE REPETIO

Os algoritmos que precisam fazer um mesmo conjunto de instrues repetidas vezes
podem facilmente serem resolvidos atravs das estruturas de repetio. Por exemplo: se
quisermos efetuar a soma de 100 nmeros consecutivos, calcular a tabuada de um nmero,
efetuar um processamento enquanto o usurio digita algo correspondente para continuar. So
inmeros casos em que se utiliza estruturas de repetio, esse nmero de repetio pode ser
fixo ou no.
Quando sabemos o nmero de vezes a se fazer uma repetio, chamamos de laos
contados, pois, sabemos quantas vezes uma repetio deve ser realizada, como em: Realize a
leitura de 100 nmeros, ou some os nmeros entre a sequencia 500 e700. No primeiro caso
sabemos que a repetio a ser feita de 100 vezes e no segundo de 200 vezes, para isso
usamos a estrutura chamada PARA.
Quando no sabemos ao certo o nmero de vezes que uma repetio deve ser feita,
estamos fazendo uso dos laos condicionais, onde a nmero de vezes da repetio est
atrelada a uma condio. Vejamos que precisamos solicitar ao usurio um nmero entre 1 e
12, a repetio ser feita at que o usurio digite um nmero fora da sequencia estipulada.
Assim, essa repetio vai acontecer infinitamente, encerrando-se apenas quando o nmero
digitado tiver fora da sequencia que consta no enunciado do problema. As estruturas utilizadas
para esse tipo de situao so a: REPITA e ENQUANTO.

ESTRUTURA DE REPETIO (LAO CONTADO PARA)

utilizado somente quando soubermos o nmero de vezes que a repetio ser
realizada. Para utilizar uma estrutura PARA, precisamos obrigatoriamente utilizar uma varivel
de controle, que tem como objetivo controlar o nmero de repeties a ser feita, a sintaxe da
estrutura apresentada a seguir:
para (VARIVEL) de (INICIO) at (FINAL) passo (INCREMENETO) faa
(INSTRUES)
fim_para

Onde:
VARIVEL: a varivel contadora, que vai controlar a estrutura de repetio, sendo do
tipo inteiro;
INICIO e FIM: significa o intervalo que ser executado;
INCREMENTO: um novo conceito que comeamos a utilizar, a operao de
incremento faz com que o valor da varivel de controle aumente. Caso precisamos que
o valor da varivel de controle diminui, o nome da operao decremento.

Vejamos: Vamos construir um algoritmo para efetuar a tabuada de um nmero
qualquer.
OBJETIVO: Calcular a tabuada de um nmero inteiro;
ENTRADA: Receber o nmero para ser calculada a tabuada;
PROCESSAMENTO: Efetuar o clculo da tabuada entre 0 e 10;
SADA: Imprimir o resultado dos clculos da tabuada.

21


algoritmo tabuada
var
numero, contador, mult: inteiro
inicio
escreva (Digite o nmero a ser utilizado para o clculo da tabuada: )
leia (numero)
para contador de 0 at 10 faa
mult <- contador*numero
escreva (contador, X, numero, =, mult)
fim_para
fim

ESTRUTURA DE REPETIO (LAO CONDICIONAL ENQUANTO)

A estrutura enquanto um lao condicional, ou seja, o nmero de repeties depende
de uma condio imposta ao usurio, utilizada sempre que voc no sabe o nmero de vezes
que uma repetio ir ser realizada. Vejamos a seguir a sintaxe de montagem da estrutura:

enquanto (Condio) faa
(Instrues)
fim_enquanto


Diferente do lao PARA, no lao ENQUANTO no temos uma varivel que controla o
nmero de repeties do lao, por isso, temos aqui um cuidado especial, pois essa varivel
de controle que coloca um fim no nmero de repeties a ser feita, no tendo essa varivel
podemos deixar o nosso loop (nmero de repeties) infinito.
Vamos agora analisar seguinte caso: Construir um algoritmo que leia vrios nmeros
e informe quantos se encontram no intervalo entre 100 e 300, quando o usurio digitar o
nmero 0, o algoritmo se encerra.

OBJETIVO: A partir da leitura de nmero, informar quais esto dentre o intervalo de
100 a 300;
ENTRADA: Receber nmeros inteiros;
PROCESSAMENTO: Contar quantos nmeros esto entre o intervalo de 100 a 300;
SADA: Imprimir a quantidade de nmeros digitados entre o intervalo de 100 a 300.

Para resoluo deste algoritmo devemos ler vrios nmeros inteiros, at que o usurio
digite o nmero 0, quando 0 for digitado, o lao de repetio se encerra, e so mostrados
quantos nmeros atenderam a condio do lao, isto estar entre 100 e 300.





22

algoritmo contagem
var
numero, contador : inteiro
inicio
escreva (Digite o nmero a ser utilizado para o clculo da tabuada: )
leia (numero)
contador <- 0
enquanto (numero <> 0) faa
se (numero>=100) e (numero<300) ento
contador <- contador +1
fim_se
escreva(Digite um nmero: )
leia(numero)
fim_enquanto
escreva(Dentre os valores digitados, contador, esto entre a sequencia 100 e 300)
fim

Notamos no cdigo acima que dentro do lao enquanto h uma funo escreva que
ser utilizada para pedir ao usurio digitar outro nmero, esse nmero digitado faz com que se
mude o valor da varivel numero, para posterior anlise na estrutura enquanto. fundamental
que sempre que se utilize uma estrutura enquanto, altere-se o valor da varivel em anlise
para que o loop no se torne infinito, como visualizado no exemplo a seguir.
algoritmo contagem_inifinito
var
numero, contador : inteiro
inicio
escreva (Digite o nmero a ser utilizado para o clculo da tabuada: )
leia (numero)
contador <- 0
enquanto (numero <> 0) faa
se (numero>=100) e (numero<300) ento
contador <- contador +1
fim_se
fim_enquanto
escreva(Dentre os valores digitados, contador, esto entre a sequencia 100 e 300)
fim

ESTRUTURA DE REPETIO (LAO CONDICIONAL REPITA)

Da mesma forma que a estrutura enquanto, essa estrutura utilizada quando no
sabemos ao certo quantas vezes as instrues sero repetidas, precisando de um teste
condicional para finalizar o loop. A diferena entre os laos em questo est no local que
feito o teste condicional, na estrutura REPITA, o teste feito no final do lao, j na estrutura
ENQUANTO, o teste feito no inicio do lao. Isso faz com que quando usamos o lao repita, as
instrues sero realizadas pelo menos uma vez, j que o teste condicional feito depois que
o lao executado.

23

Para percebermos a diferena, vamos reescrever o algoritmo conta que escrevemos
acima, utilizando a estrutura repita, evitando que o loop se torne infinito.
algoritmo conta_repita
var
numero, contador : inteiro
inicio
contador <- 0
repita
escreva (Digite o nmero a ser utilizado para o clculo da tabuada: )
leia (numero)
se (numero>=100) e (numero<300) ento
contador <- contador +1
fim_se
ate_que(numero=0)
escreva(Dentre os valores digitados, contador, esto entre a sequencia 100 e 300)
fim

ESTRUTURA DE REPETIO ENCADEADAS

Da mesma forma que as estruturas condicionais, podemos encadear estruturas de
repetio, ou seja, podemos misturar os tipos de estruturas, colocando-as umas dentro das
outras.
Para a utilizao correta desse encadeamento, basta que voc entenda como o
funcionamento de cada, portanto, no existem regras, voc pode encadear todas as estruturas
se precisam, basta que tenha ateno para no tornar o seu loop infinito, Vejamos abaixo
algumas sintaxes de encadeamento:

para VARIVEL de INICIO at FIM passo 1 faa
para VARIVEL2 de INICIO at FIM passo 1 faa
(INSTRUES)
fim_para
fim_para


para VARIVEL de INICIO at FIM passo 1 faa
enquanto (VARIVEL1<>0) faa
(INSTRUES)
fim_enquanto
fim_para

Lembre-se: As estruturas condicionais que estudamos at agora, assim como os laos
de repetio so boas prticas que voc deve adotar para construo dos seus algoritmos,
portanto entenda como utiliza essas estruturas e faa um bom aproveitamento na estrutura
dos cdigos.
essencial tambm utilizar o teste de mesa para que seja analisado se a sequencia do
cdigo est correta, assim tambm como melhorar um cdigo que j esteja funcionando.

24

Exerccios
01 Pea ao usurio que digite um nmero, e apresente o fatorial desse nmero. O fatorial de
um nmero dado por sucessivas multiplicaes at o nmero 1. O fatorial do nmero 7 ,
dado pela multiplicao de 7 X 6 X 5 X 4 X 3 X 2 X 1.
02 Elabore um algoritmo que informe se um aluno est aprovado ou no, a aprovao de um
aluno depende da sua mdia, se a mdia for superior a 6 o mesmo estar aprovado, se a
mdia for inferior a 6, ele estar reprovado. Para auxiliar o professor nessa atividade voc
deve solicitar quantas notas fazem parte da disciplina, solicitar o nome do aluno, e a partir
disso calcular a mdia do aluno. Ao final, informe o nome do aluno e a sua mdia. Esse
algoritmo deve ser repetido at que o professor digite a palavra NO, enquanto o professor
digitar a palavra SIM, o algoritmo deve se repetir.
03 - Crie um algoritmo que informe ao professor quantos alunos da turma esto aprovados,
para isso pea ao professor que informe quantos alunos fazem parte da turma, aps isso pea
a mdia desses alunos. Com a mdia dos alunos faa uma anlise utilizado uma estrutura
condicional, os alunos que possurem mdias superiores a 6 esto aprovados, enquanto as
mdias inferiores a 6 esto reprovadas. Ao trmino a fim que estatstica, apresente a
quantidade de alunos que a turma possui, quantos foram aprovados e quantos reprovados.
04 Formule um algoritmo que leia nota de 20 alunos, sendo de cada aluno necessrio as
seguintes informaes: o nome, as quatro notas. A partir disso calcule a mdia de cada aluno e
a mdia geral da turma e apresente.
05 Construa um algoritmo que leia nmeros inteiros at que seja digitado 0, quando o 0 for
digitado se encerra o lao. Com o lao encerrado apresente algumas estatsticas como: o
nmero de valores digitados, a mdia aritmtica desses valores e a quantidade de nmeros
pares e mpares.
06 Apresente todos os nmeros divisveis por 5 que sejam menores que 200.
07 Escreva um algoritmo que leia o nmero de vezes que se deseja imprimir a palavra
ALGORITMOS, a partir desse nmero imprima o nmero de vezes solicitada.
08 Escreva um algoritmo que solicite ao usurio 100 nmeros, a partir desses nmeros
apresente quantos so pares e quantos so mpares.
09 Construa um algoritmo que leia o nome, sexo, idade, peso e altura dos atletas que
participam de um campeonato, o lao vai existir at que no campo nome do atleta seja escrito
a palavra FIM. Apresente como estatstica o nome do atleta do sexo masculino mais alto, o
nome da atleta do sexo feminino mais pesada e a mdia geral das idades dos atletas.
10 Uma indstria produz e vende vrios produtos e para cada um deles tm-se os seguintes
dados: nome, quantidade produzida e quantidade vendida. Formule um algoritmo que:
Leia a quantidade de produtos que a empresa possui;
Imprima o nome e quantidade em estoque para os produtos que sejam maiores que 30;
Imprima o nome do produto com maior quantidade em estoque;
Imprima o nome do produto que foi mais vendido.

11 - Leia o nome e a idade de trs pessoas e informe o nome da pessoa mais velha e da pessoa
mais nova. Considere que no existam idades iguais.


25

ESTRUTURAS DE DADOS HOMOGNEAS

As estruturas de dados homogneas tm como objetivo armazenar diversos valores
em uma mesma varivel, esses valores tem que ser do mesmo tipo. As estruturas homogneas
se dividem em duas: vetores (unidimensionais) e matrizes (multidimensionais).

VETORES

Consistem em um arranjo de elementos armazenados na memria principal
sequencialmente. Um vetor nada mais que uma linha, onde podemos armazenar vrios
nmeros.

Figura 12 - Representao de um vetor de 5 posies
Na representao cima temos um vetor de cinco posies, onde o valor 15 est
armazenado na posio 1 do vetor, o 10 na posio 2, o nmero 0 na posio 3, o valor 5 na
posio 4 e por fim o valor 1 na posio 5. A declarao de um vetor deve seguir a sintaxe
abaixo:
VARIAVEL: vetor DIMENSO de TIPO DE DADO

Exemplo: media: vetor [1...5] de real

Acima est declarado um vetor chamado mdia de 5 posies que armazena valores
do tipo real. Para manipular os valores de um vetor, as operaes so realizadas
individualmente para cada ndice ou posio, na figura 6, temos a representao de um vetor,
se quisermos trabalhar com o nmero 10 que est na posio 2, teramos que digitar o nome
do vetor e entre colchetes ([2]) colocar o nmero 2. comum em vetores utilizarmos a
estrutura PARA, com ela conseguimos manipular os valores que esto armazenados dentro do
vetor.

Faa a leitura do nome e quatro notas de 10 alunos, e imprima uma relao contendo o nome
do aluno, suas notas e a mdia final.
OBJETIVO: Emitir uma relao contendo nome dos alunos, notas e mdia final;
ENTRADA: Receber o nome e as notas de 10 alunos;
PROCESSAMENTO: Calcular a mdia dos 10 alunos;
SADA: Imprimir o nome, as notas e a mdia dos alunos.

Na entrada de dados precisamos ler o nome de 10 alunos e quatro notas de cada um
desses alunos. Sem utilizar um vetor, precisaramos de 10 variveis para armazenar o nome
dos 10 alunos, 40 variveis para armazenar as notas e mais 10 variveis para armazenar as
mdias. Usando dois vetores, resolvemos esse problema de ter um grande nmero de
variveis.




26

algoritmo turma
var
nome: vetor [1..10] de caractere
nota1, nota2, nota3, nota4, media: vetor [1...10] de real
x: inteiro
inicio
para x de 1 at 10 passo 1 faa
escreva (Informe o nome do aluno: )
leia (nome[x])
escreva (Informe a primeira nota: )
leia (nota1[x])
escreva (Informe a segunda nota: )
leia (nota2[x])
escreva (Informe a terceira nota: )
leia (nota3[x])
escreva (Informe a quarta nota: )
leia (nota4[x])
media[contador] <- (nota1[x] + nota2[x] + nota3[x] + nota4[x])/4
fim_para
para x de 1 at 10 faa
escreva (nome[x])
escreva (Nota 1: , nota1[x])
escreva (Nota 2: , nota2[x])
escreva (Nota 3: , nota3[x])
escreva (Nota 4: , nota4[x])
escreva (Mdia: , media[x])
fim_para
fim

ANOTAES

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________


27

Temos agora a seguinte situao: Buscar um valor dentro de um vetor. O vetor est
preenchido, precisamos ento percorrer os ndices do vetor para saber se o nmero que
estamos procurando, foi digitado ou no, para isso devemos utilizar estruturas condicionais e
um lao de repetio, vejamos o cdigo abaixo:
algoritmo busca
var
numeros: vetor [1..20] de inteiro
contador, numero: inteiro
pesquisa: caractere
inicio
para contador de 1 at 20 passo 1 faa
escreva (Informe um nmero: )
leia (numeros[contador])
fim_para
escreva (Informe o nmero que deseja pesquisar no vetor: )
leia(numero)
contador <- 1
pesquisa <- NO
enquanto (contador<=20) e (pesquisa=NO) ento
se (numero=nmeros[contador] ento
pesquisa <- SIM
seno
contador <- contador +1
fim_se
fim_enquanto

se (pesquisa=SIM) ento
escreva(O nmero foi encontrado na posio, contador)
seno
escreva(O nmero no foi encontrado)
fim_se
fim

MATRIZES

Conhecidas tambm como variveis homogneas multidimensionais, as matrizes
diferente dos vetores podem possuir mais de uma dimenso, enquanto os valores de um vetor
so alocados em uma linha, os valores das matrizes so armazenados em linha e coluna, isto
significa que ao utilizar um ndice para pesquisar ou inserir um valor em uma matriz, utilizamos
dois ndices, uma para a linha e outro para a coluna.


Figura 13 - Representao de uma matriz

28

A matriz do exemplo acima uma matriz 4 X 4, possui 4 linhas e 4 colunas. Dizemos
que tambm o valor 10, ocupa a posio 2X3, fazendo referncia linha 2 e a coluna 3. Ao
declarar uma matriz como a do exemplo acima, seguimos a mesma sintaxe de um vetor,
vejamos:
notas: vetor [1...4][1...4] de real
media: vetor [1...8][1...4] de real

Nos exemplos foram declaradas uma matriz de 4 linhas e 4 colunas chamada notas,
essa matriz poder armazenar valores do tipo real. Da mesma forma, foi declarada no exemplo
abaixo uma matriz chamada media que possui 8 linhas e 4 colunas, que podem ser utilizadas
para armazenar valores do tipo real.
Vamos analisar a seguinte situao: Escrever um algoritmo para efetuar a leitura de
quatro notas de vinte alunos, calcular a mdia de cada aluno e a mdia geral da turma.

Para isso, vamos utilizar um vetor e uma matriz. O vetor servir para armazenar a
mdia dos alunos, enquanto a matriz armazenar as notas desses alunos. Fazendo uma anlise
rpida, como so 20 mdias, precisaremos de um vetor de 20 posies, sabendo que so 20
alunos e cada aluno possui 4 notas, precisaremos tambm de uma matriz 20X4, ou seja, 20
linhas e 4 colunas, as linhas representam os alunos, e as colunas representam uma nota de
cada aluno. Poderamos tambm usar uma matriz 20X5, o aumento de 4 para 5, seria para a
quinta coluna armazenar o valor da mdia, no necessitando a criao do vetor. Mas isso tome
como questo de estudo para voc, ento depois de analisar o exemplo transforme o
algoritmo para usar somente uma matriz e no uma matriz e um vetor. Vamos ao exemplo.

algoritmo media
var
media: vetor [1..20] de real
notas: vetor [1..20][1...4] de real
linha, coluna: inteiro
soma, somatotal, mediatotal: real
inicio
soma <- 0
somatotal <- 0
mediatotal <-0
para linha de 1 at 20 passo 1 faa
para coluna de 1 at 4 passo 1 faa
escreva (Informa a nota do aluno: )
leia (notas[coluna,linha])
soma <- soma +notas [coluna,linha]
fim_para
media[linha] <- soma/4
somatotal <- somatotal+soma
soma <- 0
fim_para
mediatotal <- somatotal/20
para linha de 1 at 20 passo 1 faa
escreva (A mdia do aluno, linha, : , media[linha])
fim_para
escreva (A mdia da turma : , mediatotal)
fim


29

ESTRUTURAS DE DADOS HETEROGNEAS (REGISTRO)

As estruturas de dados heterogneas permitem que sejam salvos diferente tipos de
dados em uma mesma estrutura, isto , podemos criar estruturas chamadas registros, onde
armazenamos valores reais, inteiros, caracteres ou lgicos, diferente das matrizes e dos
vetores que s permitem o agrupamento de dados de um mesmo tipo.
Em um registro cada informao salva chamada de campo. A declarao de um
registro deve ocorrer antes da seo utilizada para declarar variveis, a sintaxe utilizada
apresentada a seguir:

tipo
IDENTIFICADOR: registro
(LISTA DOS CAMPOS E SEUS TIPOS)
fim_registro

A partir dos conceitos de registros, vamos ler o nome e quatro notas de um aluno, ao
final, devemos imprimir o nome do aluno, suas notas e a mdia final. Aplicaremos os registros
para resoluo desse problema, vejamos:
algoritmo registro
tipo
CadastroAluno = registro
nome: caractere
nota1: real
nota2: real
nota3: real
nota4: real
media: real
fim_registro
var
aluno: CadastroAluno
inicio
escreva(Digite o nome do aluno: )
leia(aluno.nome)
escreva (Digite a primeira nota: )
leia(aluno.nota1)
escreva (Digite a segunda nota: )
leia(aluno.nota2)
escreva (Digite a terceira nota: )
leia(aluno.nota3)
escreva (Digite a quarta nota: )
leia(aluno.nota4)
aluno.media <- (aluno.nota1+aluno.nota2+aluno.nota3+alun.nota4)/4
escreva(aluno.nome, a sua mdia :, aluno.media)
fim




30

Exerccios:
01 Elabore um algoritmo que leia um vetor de 50 nmeros inteiros e imprima o maior e o
menor nmero.
02 Construa um algoritmo que leia o preo de compra e o preo de venda de 30 produtos e
imprima o nmero de mercadorias que apresenta lucro menor que 15% e quantas apresentam
lucro maior que 30%.
03 Escreva a estrutura de cadastro de um livro para uma biblioteca, contendo as seguintes
informaes: ttulo, autor, editora, edio e ano.
04 Construa um algoritmo para uma agenda telefnica (nome, fone e e-mail) com 20
contatos. Alm do cadastro, deve ser permitido fazer consultas nessa agenda, onde ao digitar
o nome da pessoa exibido o contato telefnico, se o nome no existir deve ser retornada
uma mensagem de erro.

SUB-ROTINAS

No dia-a-dia de um programador, comum encontrar problemas de grande
complexidade e muito abrangente. Para isso, devemos aprender a decompor esses complexos
problemas em subproblemas, a fim de facilitar o pensamento sobre a soluo. As sub-rotinas
classificam-se em duas: as funes e os procedimentos, a diferena entre elas veremos mais a
frente.
Ao trabalhar com sub-rotinas, devemos aprender um novo conceito sobre as variveis,
j sabemos manipular e qual a finalidade das variveis, agora devemos compreender a
diferena entre as variveis globais e locais. Dizemos ento que uma varivel pode ter
diferentes escopos, pode ser o escopo local, assim como o escopo global. Com isso, j
podemos at citar a diferena entre o escopo de variveis, as variveis global, so vistas
durante toda execuo do algoritmo, enquanto as locais, apenas dentro das sub-rotinas
(funes ou procedimentos).
Estudar a complexidade de um problema, e fazer refinamentos com objetivo de dividir
esse grande problema, em problemas menores, conhecida como anlise top-down.
Tecnicamente dizendo, uma sub-rotina so blocos de instrues que realizam tarefas
especficas. Essas sub-rotinas podem ser utilizadas dentro de um algoritmo quantas vezes
forem necessrias, veremos agora os tipos de sub-rotinas.


ANOTAES

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________

31

PROCEDIMENTOS

Consiste em um trecho de cdigo, identificado por um nome, que quando executada
ao seu trmino no retorna nenhum tipo de valor, sua sintaxe representada abaixo:
procedimento NOME DO PROCEDIMENTO
var
VARIAVIS
inicio
INSTRUES
fim_procedimento

Veremos uma aplicao prtica de um procedimento na construo de um algoritmo
que simula uma calculadora, onde apresentado um menu de opes no programa principal,
possibilitando ao usurio escolher as seguintes operaes: adio, subtrao, multiplicao ou
diviso, e se no quiser mais calcular, a opo de sair.
OBJETIVO: Criar uma calculadora que realize as quatro operaes fundamentais;
ENTRADA: Receber os nmeros e que tipo de operao aritmtica ser realizada;
PROCESSAMENTO: Realizar a operao aritmtica;
SADA: Resultado do clculo.

algoritmo calculadora

procedimento soma
var
valor1, valor2, resultado: inteiro
inicio
escreva(Digite o primeiro valor: )
leia (valor1)
escreva (Digite o segundo valor: )
leia(valor2)
resultado <- valor1+valor2
escreva(O resultado do clculo : , resultado)
fim_procedimento

procedimento subtracao
var
valor1, valor2, resultado: inteiro
inicio
escreva(Digite o primeiro valor: )
leia (valor1)
escreva (Digite o segundo valor: )
leia(valor2)
resultado <- valor1-valor2
escreva(O resultado do clculo : , resultado)
fim_procedimento

32

procedimento divisao
var
valor1, valor2, resultado: real
inicio
escreva(Digite o primeiro valor: )
leia (valor1)
escreva (Digite o segundo valor: )
leia(valor2)
resultado <- valor1/valor2
escreva(O resultado do clculo : , resultado)
fim_procedimento

procedimento multiplicacao
var
valor1, valor2, resultado: inteiro
inicio
escreva(Digite o primeiro valor: )
leia (valor1)
escreva (Digite o segundo valor: )
leia(valor2)
resultado <- valor1*valor2
escreva(O resultado do clculo : , resultado)
fim_procedimento

var
opcao: inteiro
inicio
opcao <- 0
enquanto (opcao<>5) faa
escreva(1 Soma)
escreva (2 Subtrao)
escreva(3 Diviso)
escreva (4 Multiplicao)
escreva (5 Sair)
escreva(Digite a opo desejada)
leia(opcao)
se (opcao<>5) entao
caso (opcao)
seja 1 faa soma
seja 2 faa subtracao
seja 3 faa divisao
seja 4 faa multiplicao
seno escreva (Opo Invlida)
fim_caso
fim_se
fim_enquanto
escreva (Saindo do programa)
fim


33

Na soluo foram criados quatro procedimentos, todos antes do incio do algoritmo,
cada um executando uma funcionalidade, sendo uma das quatro operaes fundamentais. No
cdigo principal, apenas solicitamos ao usurio que operao o mesmo queria que fosse
realizado, ento chamamos o procedimento de acordo com a opo selecionada pelo usurio.

ESCOPO DE VARIVEIS

As variveis que so declaradas no interior de um bloco de sub-rotinas so chamadas
de variveis locais, pois s so vistas dentro daquele bloco, sendo ao final da sub-rotina
essas variveis destrudas. No exemplo acima, temos vrias variveis locais, como o valor1,
valor2 e o resultado.
As variveis globais so declaradas fora das sub-rotinas, no exemplo, temos a varivel
opcao, como sendo uma varivel global. O escopo de sua uma varivel est ligado a sua
visibilidade.

PASSAGEM DE PARMETROS

Parmetro a comunicao existente entre o algoritmo e as sub-rotinas, servindo
como um canal onde se passa variveis para serem utilizadas em sub-rotinas, no cdigo abaixo
faremos uma alterao no exemplo que criamos na seo do procedimento. Vamos criar um
algoritmo que permita ao usurio selecionar se desejar somar ou subtrair os valores,
permitindo que escolha tambm hora que deseja sair, vamos ao exemplo.
algoritmo calculadora1

procedimento soma (a, b: inteiro)
var
resultado: inteiro
inicio
resultado <- a+b
escreva(O resultado do clculo : , resultado)
fim_procedimento

procedimento subtrao (a, b: inteiro)
var
resultado: inteiro
inicio
resultado <- a-b
escreva(O resultado do clculo : , resultado)
fim_procedimento

var
numero1, numero2, opcao: inteiro
inicio
opcao <- 0
enquanto (opcao<>3) faa
escreva(Digite o primeiro nmero: )
leia(numero1)
escreva(Digite o segundo nmero: )
leia(numero2)
escreva(1 Soma)
escreva (2 Subtrao)

34

escreva (3 Sair)
escreva(Digite a opo desejada)
leia(opcao)
se (opcao<>3) entao
caso (opcao)
seja 1 faa soma(numero1, numero2)
seja 2 faa subtracao(numero1, numero2)
seno escreva (Opo Invlida)
fim_caso
fim_se
fim_enquanto
escreva (Saindo do programa)
fim

Temos no cdigo principal uma entrada de dados, primeiramente o usurio deve
digitar dois valores, estes sero armazenados nas variveis numero1 e numero2, aps isso,
deve-se ento selecionar se deseja fazer o clculo de uma soma ou subtrao. Escolhido o tipo
do clculo feita uma passagem de parmetros por valor, onde os valores armazenados nas
variveis numero1 e numero2 passam a ser convertidas para as variveis a e b dos
procedimentos.
Fazendo um breve teste de mesa, imaginemos que o usurio digitou 10 (Varivel
numero1) e 3 (Varivel numero2) e selecionou que desejava fazer uma soma, atravs de
parmetros so passados os valores que 10 e 3, em questo, no procedimento chamado soma
a varivel a passa a valer 10, assim como a varivel b, passa a valer 3, isso porque existiu um a
passagem de parmetros por valor. O clculo ento feito, e o resultado exibido na tela.
Quando fazemos a passagem de parmetros, podemos realiz-la de duas maneiras:
atravs da passagem por valor e por referncia. A passagem por valor ilustrada no exemplo
acima, onde temos os valores armazenados nas variveis numero1 e numero2 e atravs da
passagem por valor, esses valores dentro do procedimento passar a ser manipuladas atravs
das variveis a e b.
A passagem por referncia ser til quando quisermos trazer algum valor gerado
dentro de um procedimento para ser utilizado no cdigo principal do algoritmo, para ilustrar
esse funcionamento temos a seguinte situao: Precisamos calcular o fatorial de um nmero.

algoritmo fatorial

procedimento fator (a: inteiro var fat: inteiro)
var
x: inteiro
inicio
fat <- 1
para x de 1 at a passo 1 faa
fat <- fat*x
fim_para
fim_procedimento

var
numero, resultado: inteiro
inicio
escreva (Informe o valor do nmero a ser calculado o fatorial: )
leia (numero)
fator (numero, resultado)
escreva (O fatorial : , resultado)
fim

35

Dizemos que a passagem feita por referncia de fat para resultado. No comeo do
algoritmo o usurio digita um valor qualquer, que fica armazenado na varivel numero, que
por sua vez passada ao procedimento atravs de uma passagem por valor, no procedimento
esse valor passa a ser armazenada em uma varivel que s existe dentro do procedimento, a
varivel a.
A passagem de parmetros por referencia faz com que o valor gerado e armazenado
na varivel fat, seja passado ao cdigo principal e armazenado na varivel resultado, para ser
utilizada para exibir o resultado do clculo.


FUNES

A funo, outra sub-rotina, assim como os procedimentos tem como objetivo realizar
uma sub-tarefa, dentro de um algoritmo, com a diferena que sempre retorna um valor, a
sintaxe de escrita segue abaixo:
funcao NOME DA FUNO
var
VARIAVIS
inicio
INSTRUES
Retorne VALOR
fim_funcao

Vejamos o exemplo do clculo de um nmero fatorial tratado com o uso de uma
funo.
algoritmo fatorial

funcao fator (a: inteiro): inteiro
var
x: inteiro
inicio
fat <- 1
para x de 1 at a passo 1 faa
fat <- fat*x
fim_para
retorne fat
fim_procedimento

var
numero, resultado: inteiro
inicio
escreva (Informe o valor do nmero a ser calculado o fatorial: )
leia (numero)
resultado <- fator(numero)
escreva (O fatorial : , resultado)
fim

36

Exerccios:
01 Escreva uma funo que receba uma letra e retorne 1 se for consoante e 2 se for vogal.
02 Escreva um algoritmo que leia um nmero inteiro qualquer, utilizando uma sub-rotina,
informe se este nmero par ou mpar.
03 Escreva um algoritmo que utilizando uma funo converta um valor em real para dlar,
para isso solicite que o usurio informe o valor a ser convertido e o valor da cotao.
04 Elabore uma sub-rotina que receba um nmero inteiro, e retorne a raiz quadrada desse
nmero. Uma dica a ser utilizada a funo sqr, para que seja calculada a raiz quadrada de
qualquer nmero basta fazer -> sqr (VARIVEL).
05 Elabore um algoritmo fazendo uso de um procedimento que receba um valor de tempo
em minutos, e converta para esse tempo para segundos.

ANOTAES

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________

37

VISUALG

Desenvolvido pelo Professor Cludio Morgado de Souza, programador/analista e
professor da Universidade do Rio de Janeiro, tem como objetivo auxiliar os alunos a
entenderem com mais facilidade como funciona o fantstico mundo da programao.
A idia deste programa nasceu de uma necessidade identificada para aqueles que
esto iniciando na programao, ficar escrevendo os algoritmos, mas no tem uma interface
que permita testar o real funcionamento deles, talvez foi o grande incentivo de se desenvolver
o Visualg. Fazer com o aluno no seu passo inicial j adentre em uma linguagem de
programao no o correto, escrever utilizando pseudocdigo o jeito mais fcil de
entender a lgica e a linguagem que utilizado pelos desenvolvedores.
Agradeo publicamente pelos benefcios que o Professor Cludio Morgado de Souza
trouxe com a ferramenta Visualg, se hoje os alunos conseguem entender e so fascinados pela
programao, certamente o Visualg tem uma parcela de publicao nisso.
O Visualg um programa de fcil instalao e pode ser executado a partir de um
computador com simples configurao, no exigindo muito de hardware, para mais
informaes podemos acessar o link abaixo, da empresa criadora do Visualg de propriedade do
Professor Cludio.


VISUALG http://www.apoioinformatica.inf.br


APRESENTAO DO SOFTWARE

A tela do Visual composta por:
1. Menu;
2. Barra de tarefas;
3. Barra de execuo de algoritmos;
4. Editor de textos;
5. Visualizador de variveis;
6. Simulador de sada;
7. Barra de Status.

Quando o programa iniciado, a estrutura do algoritmo j apresentada na tela,
apresentando j ao aluno a estrutura pronta, bastando ele montar o seu algoritmo. Outro
importante ponto a presena do prlogo, til para preencher as informaes sobre o
algoritmo como: a funo do algoritmo, o nome do autor e a data de criao do mesmo. Na
imagem abaixo visualizamos a tela de apresentao do Visualg.


38


Figura 14 - Tela de Apresentao do Visualg

MENU

As ferramentas do software esto divididas em 07 menus, sendo:
1. ARQUIVO Responsvel pelas manipulaes das funes principais de um arquivo,
como: novo, abrir, salvar, salvar como e imprimir.
2. EDITAR Nele esto listadas as ferramentas de manipulao de textos: desfazer,
refazer, recortar, copiar, colar, localizar e substituir. Uma ateno a duas ferramentas
teis encontradas neste menu, a ferramenta corrigir indentao, que corrige
indentao de cdigos utilizando por padro trs espaamentos e a ferramenta gravar
um bloco, que salva blocos de textos para serem utilizadas em outros algoritmos. Para
completar a utilizao da ferramenta gravar um bloco, temos a ferramenta de inserir
um bloco, que insere um bloco salvo em um algoritmo novo, essas ferramentas podem
ser aproveitadas em reutilizao de cdigo.
3. EXIBIR Este menu controla a exibio do software, uma ateno a ferramenta
nmero de linhas, que insere nmero a frente das linhas, til para sabermos quantas
linhas de cdigo nosso algoritmo possui. Alm disso, temos tambm a ferramenta
variveis modificadas que nos mostra a varivel que est sendo modificada a partir da
execuo do algoritmo.
4. ALGORITMO Controla a execuo do algoritmo. Iniciamos o estudo pela ferramenta
executar que nos mostra o cdigo escrito sendo executado, alm disso, podemos
utilizar a ferramenta passo a passo que faz a execuo linha por linha, mostrando ao
usurio o que cada linha realiza no algoritmo. Para completar a funcionalidade da

39

ferramenta passo a passo, temos a executar com um tempo, que executa linha por
linha do algoritmo de acordo com um tempo que inserimos. A ferramenta marca e
desmarca um breakpoint, tem como atalho a tecla F5 e serve para criar pontos de
parada na execuo do algoritmo, para seu uso basta selecionar a linha que se deseja
criar o breakpoint e pressionar F5, para desmarcar um breakpoint seguimos o mesmo
passo, querendo desmarcar todos os breakpoints todos de uma vez s basta
pressionarmos CTRL + F5. Temos tambm a ferramenta parar, que encerra a execuo
do algoritmo. Para finalizar temos ainda as ferramentas gerar valores aleatrios,
executar em Modo Dos e perfil, respectivamente ativam valores aleatrios a serem
inseridos nas variveis evitando que seja necessrio o usurio digitar valores para
testar o algoritmo, faz com que a exibio do algoritmo seja feito em uma tela do MS-
DOS e por fim, a ferramenta perfil nos mostra quantas vezes uma determinada linha
de cdigo foi executado, para que possamos avaliar a eficincia do algoritmo.
5. CDIGO Menu ainda em criao traduz o pseudocdigo para uma linguagem de
programao, hoje temos o funcionamento apenas da linguagem Pascal.
6. FERRAMENTAS Neste menu podemos personalizar o Visualg, encontramos apenas a
ferramenta opes, que possui duas abas. A primeira chamada editor que formatamos
a aparncia do cdigo do Visualg e a segunda chamada lista, onde possvel
personalizar o valor de algumas variveis, essa lista utilizada quando usamos a
ferramenta gerar valores aleatrios do menu Algoritmo.
7. AJUDA Por fim, o menu ajuda, contm as pginas de ajuda sobre a ferramenta. Uma
ferramenta bastante til a linguagem do Visualg, que podemos consultar como o
Visualg entende os comandos, verificando se estamos escrevendo com a sintaxe certa.
Assim tambm como encontramos uma ajuda geral na utilizao da ferramenta nas
opes dica do tela e a tela do Visualg.

BARRA DE TAREFAS E BARRA DE EXECUO DOS ALGORITMOS

Todas as ferramentas que encontramos na barra de menu, esto lotadas na barra de
tarefas como forma de atalho, isso, para que sempre que desejamos utilizar uma ferramenta
no seja preciso procurar em qual menu ela se encontra. A fim de se familiarizar com essa
barra, basta que deixemos o mouse posicionado sobre os botes que nos aparece no nome da
ferramenta.

VISUALIZADOR DE VARIVEIS

Esta parte da tela do Visualg nos mostra todas as variveis disponveis no algoritmo,
assim como o escopo da varivel (Global ou Local, se local, onde ela se encontra), seu nome, o
tipo e o valor que ela assume na execuo do algoritmo.


40

SIMULADOR DE SADAS

Essa parte da tela do software nos mostra o resultado do algoritmo, exibindo as sadas
que foram obtidas a partir da execuo do cdigo.

BARRA DE STATUS

Por fim, temos a barra de status que mostra o nmero da linha que estamos
alterando, a palavra: modificado, caso tenhamos feito alguma modificao no cdigo e no
tenha sido salvo ainda e a exibio de um comando que mostra as funes predefinidas no
Visualg, o atalho CRTL + J.
A lista de funes uma maneira rpida de inserir funes em seu algoritmo,
pressionado o atalho apontado acima, voc visualiza as funes disponveis no Visualg, para
utilizar basta selecionar a funo e teclar ENTER.

ANOTAES

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________
Bons Estudos!
Fabiano Taguchi

41

REFRENCIAS

FORBELLONE, Andr Luiz Villar; EBERSPCHER, Henri Frederico. Algoritmos e Programao. 3
ed. So Paulo SP: Pearson Prentice Hall, 2005.


LEAL, Gislaine Camila Lapasini. Algoritmos e Lgica de Programao I. 1 ed. Maring PR:
Cesumar, 2012


TONET, Bruno. Software Visualg 2.0. Disponvel em: <
http://www.univasf.edu.br/~marcelo.linder/arquivos_ap/visualg.pdf>. Acessado em 07 jun
2012


TONET, Bruno; KOLIVER, Cristian. Introduo aos Algoritmos. Disponvel em: <
http://pt.scribd.com/garibaldi_pessoa/d/63071545-Introducao-aos-Algoritmos-Linguagem-
VisuAlg>. Acessado em 07 junh 2012.


VISUAL. Visualg. Disponvel em: http://www.apoioinformatica.inf.br/o-visualg. Acessado em:
07 jun. 2012