You are on page 1of 34

Algoritmos com VisualG

O que é VisualG e como isso pode me ajudar a


fazer um programa de computador?
• Visualg é um programa grátis de edição, interpretação e execução de algoritmos, com uma
linguagem próxima ao portugol (português estruturado). É um programa de uso e distribuição
livres, utilizado em diversas instituições de ensino no Brasil para o ensino de lógica de
programação.
• O VisualG permite aos alunos iniciantes em programação o exercício dos seus conhecimentos
num ambiente próximo da realidade. Para quem está iniciando nota-se que a abstração de "rodar
o chinês", ou seja, de executar um programa apenas no papel, é um grande obstáculo (quase
intransponível para alguns) no aprendizado das técnicas de elaboração de algoritmos. Por outro
lado, submeter um iniciante aos rigores de uma linguagem de programação como Pascal o C. O
ideal seria uma linguagem mais simples, parecida com o "Portugol", de grande popularidade nos
meios acadêmicos e presente nos livros mais utilizados; com ela, os princípios básicos da
programação estruturada podem ser ensinados sem que a curva de aprendizagem fosse íngreme.
Além disso, esta ferramenta deve também ser capaz de simular o que acontece na tela do
computador com o uso dos famosos comandos "leia" e "escreva", bem como possibilitar a
verificação dos valores das variáveis, o acompanhamento passo a passo da execução de um
algoritmo (pelo seu grande valor didático), e até mesmo suportar um modo simples de depuração
Tela Principal do VisualG
Barra de tarefas
Contém os comandos mais utilizados no VisuAlg (estes comandos também podem ser acessados pelo menu ou
por atalhos no teclado).

Abrir (Ctrl-A): Abre um arquivo anteriormente gravado, substituindo o texto presente no editor. Se este tiver
sido modificado, o VisuAlg pedirá sua confirmação para salvá-lo antes que seja sobreposto.
Novo (Ctrl-N): Cria um novo "esqueleto" de pseudocódigo, substituindo o texto presente no editor. Se este tiver
sido modificado, o VisuAlg pedirá sua confirmação para salvá-lo antes que seja sobreposto.
Salvar (Ctrl-S): Grava imediatamente o texto presente no editor. Na primeira vez que um novo texto é gravado, o
VisuAlg pede seu nome e localização.
Imprimir: Imprime imediatamente na impressora padrão o texto presente no editor. Para configurar a
impressão, use o comando Imprimir do menu Arquivo (acessível também pelo atalho Ctrl-P).
Cortar (Ctrl-X): Apaga texto selecionado, armazenando-o em uma área de transferência.
Copiar (Ctrl-C): Copia o texto selecionado para a área de transferência.
Colar (Ctrl-V): Copia texto da área de transferência para o local em que está o cursor.
Gravar bloco de texto: Permite a gravação em arquivo de um texto selecionado no editor. A extensão sugerida para o
nome do arquivo é .inc.
Inserir bloco de texto: Permite a inserção do conteúdo de um arquivo. A extensão sugerida para o nome do arquivo
é .inc.
Desfazer (Ctrl-Z): Desfaz último comando efetuado.
Refazer (Shift-Ctrl-Z): Refaz último comando desfeito
Localizar (Ctrl-L): Localiza no texto presente no editor determinada palavra especificada.
Substituir (Ctrl-U): Localiza no texto presente no editor determinada palavra especificada, substituindo-a por outra.
Corrigir Indentação (Ctrl-G): Corrige automaticamente a indentação (ou tabulação) do pseudocódigo, tabulando
cada comando interno com espaços à esquerda.
Numerar linhas: Ativa ou desativa a exibição dos números das linhas na área à esquerda do editor. A linha e a coluna
do editor em que o cursor está em um determinado momento também são mostradas na barra de status (parte
inferior da tela). Por motivos técnicos, esta opção é automaticamente desativada durante a execução do
pseudocódigo, mas volta a ser ativada logo em seguida.
Mostrar variáveis modificadas: Ativa ou desativa a exibição da variável que está sendo modificada. Como o número
de variáveis pode ser grande, muitas podem estar fora da janela de visualização; quando esta característica está
ativada, o VisuAlg rola a grade de exibição de modo que cada variável fique visível no momento em está sendo
modificada. Este recurso é especialmente útil quando se executa um pseudocódigo passo a passo. Por questões de
desempenho, a configuração padrão desta característica é desativada, quando o pseudocódigo está sendo executado
automaticamente. No entanto, basta clicar este botão para executá-lo automaticamente com a exibição ativada. No
final da execução, a configuração volta a ser desativada.
Executar (F9): Inicia (ou continua) a execução automática do pseudocódigo.
Executar com timer (Shift-F9): Insere um atraso (que pode ser especificado no intervalo ao lado) antes da
execução de cada linha. Também realça em fundo azul o comando que está sendo executado, da mesma forma
que na execução passo a passo.
Intervalo do timer: Atraso em cada linha, para quando se deseja executar o pseudocódigo com timer.
Passo (F8): Inicia (ou continua) a execução linha por linha do pseudocódigo, dando ao usuário a oportunidade de
acompanhar o fluxo de execução, os valores das variáveis e a pilha de ativação dos subprogramas.
Parar (Ctrl-F2): Termina imediatamente a execução do pseudocódigo. Evidentemente, este botão fica desabilitado
quando o pseudocódigo não está sendo executado.
Liga/desliga breakpoint (F5): Insere/remove um ponto de parada na linha em que esteja o cursor. Estes pontos de
parada são úteis para a depuração e acompanhamento da execução dos pseudocódigos, pois permitem a
verificação dos valores das variáveis e da pilha de ativação de subprogramas.
Desmarcar todos os breakpoints (Ctrl-F5): Desativa todos os breakpoints que estejam ativados naquele momento.
Executar em modo DOS: Com esta opção ativada, tanto a entrada como a saída-padrão passa a ser
uma janela que imita o DOS, simulando a execução de um programa neste ambiente.
Gerar valores aleatórios: Ativa a geração de valores aleatórios que substituem a digitação de dados.
A faixa padrão de valores gerados é de 0 a 100 inclusive, mas pode ser modificada (basta alterar
intervalo ao lado). Para a geração de dados do tipo caractere, não há uma faixa pré-estabelecida: os
dados gerados serão sempre strings de 5 letras maiúsculas.
Intervalo dos valores aleatórios: Faixa de valores que serão gerados automaticamente, quando esta
opção estiver ativada.
Perfil (F7): Após a execução de um pseudocódigo, exibe o número de vezes que cada umas das suas
linhas foi executada. É útil para a análise de eficiência (por exemplo, nos métodos de ordenação).
Mostrar pilha de ativação (Ctrl-F3): Exibe a pilha de subprogramas ativados num dado momento.
Convém utilizar este comando em conjunto com breakpoints ou com a execução passo a passo.
Ajuda (F1): Possibilita acesso às páginas de ajuda e às informações sobre o VisuAlg.
Formato Básico do Pseudocódigo e Inclusão de Comentários
O formato básico do nosso pseudocódigo é o seguinte:
algoritmo "semnome"
// Função :
// Autor :
// Data :
// Seção de Declarações
var

inicio
// Seção de Comandos
fimalgoritmo
A primeira linha é composta pela palavra-chave algoritmo seguida do seu nome delimitado por aspas duplas. Este
nome será usado como título nas janelas de leitura de dados. A seção que se segue é a de declaração de variáveis,
que termina com a linha que contém a palavra-chave inicio. Deste ponto em diante está a seção de comandos, que
continua até a linha em que se encontre a palavra-chave fimalgoritmo. Esta última linha marca o final do
pseudocódigo: todo texto existente a partir dela é ignorado pelo interpretador.
O VisuAlg permite a inclusão de comentários: qualquer texto precedido de "//" é ignorado, até se atingir o final da
sua linha. Por este motivo, os comentários não se estendem por mais de uma linha: quando se deseja escrever
comentários mais longos, que ocupem várias linhas, cada uma delas deverá começar por "//"
Variáveis
• Identificador : Tipo

- Identificador deve seguir 6 regras


1. Deve começar com uma letra.
2. Os próximos caracteres porem ser letras ou números.
3. Não pode utilizar nenhum símbolo, exceto _ .
4. Não pode conter espaços em branco.
5. Não pode conter letras com acentos.
6. Não pode ter uma palavra reservada.
Tipos Primitivos de Variáveis
Inteiro: Armazena apenas números inteiros.
Ex: -35, 0, 5, 32...
Real: Armazena números reais.
Ex: -36.6, 0.3, 1.5, 3.1415...
Caractere: Tudo o que estiver escrito entre aspas.
Ex: “Nathan”, “Algoritmo”, “123”... (dentro das aspas pode usar acento)
Lógico: Guarda apenas dois valores “Verdadeiro” e “Falso”
Ex: Verdadeiro, Falso
Atribuições
variável: tipo
Ex: msg:caractere

msg <- “Olá Mundo!”

*como não podemos usar uma seta, usamos o sinal de menor seguido
de um hífem para fazer uma atribuição.
Comandos de Saída

Escreva (“msg”)

Escreva (msg)

Escreva (“mensagem”, msg)


Comandos de Entrada
Utilizando atribuições

algoritmo “Meu nome"


// Função :
// Autor :
// Data : 17/11/2018
// Seção de Declarações
var
nome: caractere
inicio
// Seção de Comandos
nome <- "Valore"
escreva ("Muito prazer, ", nome)

fimalgoritmo
Utilizando atribuições

algoritmo “Meu nome"


// Função :
// Autor :
// Data : 17/11/2018
// Seção de Declarações
var
nome: caractere

inicio
// Seção de Comandos
escreva ("Por favor informe seu nome: ")
leia (nome)
escreva (“Muito prazer, ", nome)

fimalgoritmo
Operadores Aritméticos

A <- 5
B <- 2
+ Adição A+B 7
- Subtração A-B 3
* Multiplicação A*B 10
/ Divisão A/B 2.5
\ Divisão inteira A\B 2
^ Exponenciação A^B 25
% Módulo (resto) A%B 1
Ordem de Precedência

() Parênteses

^ Exponenciação

*/ Multiplicação e Divisão

+- Adição e Subtração

3 + 2/2 = 4
(3 + 2)/2 = 2.5
Funções Aritméticas

Abs Valor Absoluto Abs (-10) 10


Exp Exponenciação Exp (3,2) 9
Int Valor Inteiro Int(3.9) 3
RaizQ RaIz Quadrada RaizQ(25) 5
Pi Retorna Pi Pi 3.14...
Sen Seno(Rad) Sen(0.523) 0.5
Cos Cosseno(Rad) Cos(0.523) 0.86
Tan Tangente(Rad) Tan(0.523) 0.57
GraupRad Graus para Rad GraupRad(30) 0.52
Exemplos:

algoritmo "semnome" // Autor : algoritmo "semnome" algoritmo "semnome"


// Função : // Data : 17/11/2018 // Função : // Função :
// Autor : // Seção de Declarações // Autor : // Autor :
// Data : 17/11/2018 var // Data : 17/11/2018 // Data : 17/11/2018
// Seção de Declarações A: real // Seção de Declarações // Seção de Declarações
var inicio var var
A: Inteiro // Seção de Comandos A: real A: real
inicio A <- Exp(9, 5) inicio inicio
// Seção de Comandos Escreva (A) // Seção de Comandos // Seção de Comandos
A <- Abs(-50) A <- RaizQ(81) A <- RaizQ(90)
Escreva (A) fimalgoritmo Escreva (A) Escreva (A)
fimalgoritmo fimalgoritmo
fimalgoritmo
algoritmo "semnome" algoritmo "semnome" algoritmo "semnome" algoritmo "semnome"
// Função : // Função : // Função : // Função :
// Autor : // Autor : // Autor : // Autor :
// Data : 17/11/2018 // Data : 17/11/2018 // Data : 17/11/2018 // Data : 17/11/2018
// Seção de Declarações // Seção de Declarações // Seção de Declarações // Seção de Declarações
var var var var
A: real A: real A: real angulo, seno: real
inicio inicio inicio inicio
// Seção de Comandos // Seção de Comandos // Seção de Comandos // Seção de Comandos
A <- Int(RaizQ(90)) A <- GraupRad(90) A <- Sen(GraupRad(90)) Escreva ("Informe um angulo: ")
Escreva (A) Escreva (A) Escreva (A) leia (angulo)
fimalgoritmo fimalgoritmo fimalgoritmo seno <- Sen(GraupRad(angulo))
Escreva ("O seno de ", angulo, " é igual a: ", seno)
fimalgoritmo
Operadores relacionais

> Maior que


< Menor que
>= Maior ou igual a
<= Menor ou igual a
= Igual a
<> Diferente de
Comparar Valores numéricos
algoritmo "semnome" algoritmo "semnome" algoritmo "semnome" algoritmo "semnome"
// Função : // Função : // Função : // Função :
// Autor : // Autor : // Autor : // Autor :
// Data : 17/11/2018 // Data : 17/11/2018 // Data : 17/11/2018 // Data : 17/11/2018
// Seção de Declarações // Seção de Declarações// Seção de Declarações // Seção de Declarações
var var var var
A, B, C: inteiro A, B, C: inteiro A, B, C: inteiro A, B, C: inteiro
inicio inicio inicio inicio
// Seção de Comandos // Seção de Comandos // Seção de Comandos // Seção de Comandos
A<-2 A<-2 A<-2 A<-2
B<-3 B<-3 B<-3 B<-3
C<-5 C<-5 C<-5 C<-5
Escreva(A>B) Escreva(A=B) Escreva(A>=2) Escreva(C=A+B)
fimalgoritmo fimalgoritmo fimalgoritmo fimalgoritmo
algoritmo "semnome" algoritmo "semnome" algoritmo "semnome" algoritmo "semnome"
// Função : // Função : // Função : // Função :
// Autor : // Autor : // Autor : // Autor :
// Data : 17/11/2018 // Data : 17/11/2018 // Data : 17/11/2018 // Data : 17/11/2018
// Seção de Declarações // Seção de Declarações// Seção de Declarações // Seção de Declarações
var var var var
A, B, C: inteiro A, B, C: inteiro A, B, C: inteiro A, B, C: inteiro
inicio inicio inicio inicio
// Seção de Comandos // Seção de Comandos // Seção de Comandos // Seção de Comandos
A<-2 A<-2 A<-2 A<-2
B<-3 B<-3 B<-3 B<-3
C<-5 C<-5 C<-5 C<-5
Escreva(C>=B^A) Escreva(C<=B^A) Escreva(B<=C%2) Escreva(1<=C%2)
fimalgoritmo fimalgoritmo fimalgoritmo fimalgoritmo
Operadores Lógicos
p q pEq
V V V
V F F
F V F
F F F

p q p OU q
V V V
V F V
F V V
F F F

p NÂO p
V F
F V
P (Paula) Q(Queila) pEq
  
  

P (Paula) Q(Queila) p OU q
  
  
algoritmo "semnome" algoritmo "semnome"
// Função : // Função :
// Autor : // Autor :
// Data : 17/11/2018 // Data : 17/11/2018
// Seção de Declarações // Seção de Declarações
var var
A, B, C: inteiro
inicio inicio
// Seção de Comandos // Seção de Comandos
escreva (verdadeiro ou falso) A<-2
fimalgoritmo B<-3
C<-5
Escreva((A=B) ou (C>A))
fimalgoritmo
ORDEM DE PRECEDENCIA

( )

Aritméticos • /

+-

Relacionais TODOS

OU
Lógicos
NÃO
Exercícios
1. Solicitar para o usuário informar 1 número e imprimir esse número na tela
2. Solicitar 2 números para o usuário e informar a soma entre eles.
3. Solicitar 2 números para o usuário e informar a média entre eles.
4. Faça um algoritmo que apresente 5 retornos Falsos e 5 verdadeiros.
5. Faça um algoritmo que apresente o valor absoluto de um número a sua escolha. (use 3
números diferentes para esse exercício)
6. Faça um algoritmo que apresente o valor exponencial de um numero a sua escolha. (use 6
números diferentes)
7. Faça um algoritmo que apresente o valor da raiz quadrada de um número a sua escolha. (use 5
números diferentes)
8. Faça um triangulo usando três valores informados pelo usuário e diga se o mesmo é equilátero
ou escaleno.
9. Verifique se o algoritmo anterior pode formar um triangulo.
10. Faça um algoritmo que informe a idade que a pessoa terá no ano atual.
11. Calcule quantos dólares podem ser comprados com o valor informado pelo usuário.
(Utilize o valor do dólar a 3,87)
12. Faça um algoritmo em que o usuário informe o valor da compra, o valor pago e o algoritmo retorne o
valor do troco.
13. Criar um programa que leia o nome de um vendedor e seu salário, mostrando o nome e seu salário
com acréscimo de 10%.
14. A loja Xô Flango está vendendo seus produtos em 5 (cinco) prestações sem juros. Faça um programa
que receba um valor de uma compra e mostre o valor das prestações.
15. Faça um algoritmo que leia duas notas e informe se o aluno foi aprovado (média >= 5) ou reprovado
(média <5).
16. Criar um programa que leia dois valores inteiros e efetue a troca desses valores na sua respectiva
variável, e imprima na tela os valores invertidos.
17. Ler uma temperatura em graus Celsius e apresentá-la convertida em graus Fahrenheit. A fórmula de
conversão é: (F=(9*C+160)/5), sendo F a temperatura em Fahrenheit e C a temperatura em Celsius.
18. Faça um programa que receba um valor que foi depositado e exiba o valor com rendimento após um
mês. Considere fixo o juro da poupança em 0,50% a. m.
19. Informar o valor do litro do Álcool e da Gasolina e mostrar para o usuário qual é o percentual do
álcool em relação a gasolina.
20. Faça um programa que receba o preço de custo de um produto e mostre o valor de venda.
Sabe-se que o preço de custo receberá um acréscimo de acordo com um percentual informado pelo
usuário.
Estrutura Condicional Simples
A Estrutura Condicional Simples executa um comando ou vários comandos
se a condição for verdadeira. Se a condição for falsa, a estrutura é finalizada
sem executar os comandos. O comando que define a estrutura é
representado pela palavra SE.
• Pseudocódigo:
INICIO ALGORITMO
SE condição ENTAO
comando
FIM SE
FIM ALGORITMO
O comando somente será executado se a condição for verdadeira
Estrutura de decisões “SE” e “SENAO”
Estrutura Condicional Composta

A Estrutura Condicional Composta segue o mesmo princípio da Estrutura Condicional Simples, com a diferença de
que quando a condição não é satisfeita, será executado o outro comando. O comando que define a estrutura é
representado pelas palavras SE e SE NÃO.

• Pseudocódigo:

INICIO ALGORITMO
SE condição ENTAO
comando A
SENAO
comando B
FIM SE
FIM ALGORITMO
SE-ENTÃO-SENÃO NA PRÁTICA!

Vejamos um exemplo de utilização desta estrutura com um algoritmo, para isso vamos utilizar o VisuAlg . Neste
algoritmo, vamos simular um caixa eletrônico quando vamos sacar dinheiro. O caixa eletrônico verifica se o valor
que desejamos sacar é menor que o saldo disponível. Assumiremos que há R$ 1000 de saldo disponível para o
saque.
algoritmo "SacarDinheiro"
var
SaldoDisponivel : REAL
ValorDoSaque : REAL
inicio

SaldoDisponivel := 1000
//Assumimos que há 1000 reais de saldo na conta
disponível para saque
ESCREVA ("Informe o valor do Saque: ")
LEIA (ValorDoSaque)
SE ValorDoSaque <= SaldoDisponivel ENTAO
SaldoDisponivel := SaldoDisponivel - ValorDoSaque
ESCREVAL ("Sacando R$ ", ValorDoSaque, ".")
SENAO
ESCREVAL ("O valor solicitado é maior que o valor
disponível para saque!")
FIMSE

ESCREVAL ("Saldo disponível: R$ ", SaldoDisponivel)

fimalgoritmo
Exercícios
1. Faça um algorítimo que leia um numero e imprima na tela se o numero é menor do que 10, se o numero é igual
ao numero 10 e se o numero é maior do que o numero 10.
2. Faça algorítimo que leia três notas de um aluno, e mostre na tela como a seguir:
Calcular e imprimir na tela a media do aluno
Se media for menor do que 3 ( Aluno reprovado )
Se media for mair ou igual a 3 e menor do que 5 ( Aluno ficou de recuperação )
Se media for maior maior ou igual a 5 ( Aluno aprovado )
3. Em uma papelaria, até 100 folhas, a cópia custa R$0,25, e acima de 100 folhas custa R$0,20. Dado o total de
cópias, informe o total a ser pago.
4. Faça um algoritmo que receba um número e mostre uma mensagem caso este número seja maior que 10.
5. Escrever um algoritmo que leia dois valores inteiro distintos e informe qual é o maior.
6. Faça um algoritmo que receba um número e diga se este número está no intervalo entre 100
e 200.
7. Em uma fábrica, uma máquina precisa de manutenção sempre que o número de peças defeituosas supera 10%
da produção. Dados o total de peças produzidas e o total de peças defeituosas, informe se a máquina precisa de
manutenção.
8. Dada a idade de um nadador, informe a sua categoria: Infantil (até 10 anos), Juvenil (até 17 anos) ou Sênior
(acima de 17 anos).
9. Em uma escola digitar suas 4 notas bimestrais, aprovação da
instituição, assim mostrando sua situação: aprovado ou reprovado.
10. Dados três números distintos, exiba-os em ordem crescente.
11. Ler um número e se for maior que 20, mostrar a metade desse
número.

You might also like