Apostila Algoritmos
Apostila Algoritmos
Apostila Algoritmos
PROGRAMAO
INTRODUO
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
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.
CONCEITOS DE LGICA
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
INSTRUES: Indica qual ao algum objeto deve agir, algoritmos so baseados em instrues
a serem realizadas.
Exemplo: Para calcular a mdia de um aluno, dadas quatro notas (N1, N2, N3, N4).
Exerccio:
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:
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.
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.
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
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:
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
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
Operadores aritmticos:
Operadores relacionais:
10
Operadores Lgicos:
p q ~p p^q pvq
V V F V V
V F F F V
F V V F V
F F V F F
Exerccio:
a) ~p
b) ~q
c) p^q
d) pvq
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:
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.
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.
06 - Elabore um algoritmo que leia um nmero inteiro, e apresente o seu antecessor e seu
sucessor.
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.
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
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
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
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
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
caso (varivel)
seja (valor1) faa (instruo1)
seja (valor2) faa (instruo2)
seja (valor3) faa (instruo3)
seno (instruo)
fim_caso
18
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.
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
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.
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
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.
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
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
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.
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
VETORES
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.
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
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
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:
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
ANOTAES
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
31
PROCEDIMENTOS
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
ESCOPO DE VARIVEIS
PASSAGEM DE PARMETROS
algoritmo calculadora1
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
algoritmo fatorial
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:
algoritmo fatorial
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).
ANOTAES
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
37
VISUALG
VISUALG http://www.apoioinformatica.inf.br
APRESENTAO DO SOFTWARE
MENU
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.
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.
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.
ANOTAES
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________
Bons Estudos!
Fabiano Taguchi
41
REFRENCIAS
LEAL, Gislaine Camila Lapasini. Algoritmos e Lgica de Programao I. 1 ed. Maring PR:
Cesumar, 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.