Buscar

VisuAlg V3

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

VISUALG3/dicas.ini
[Dicas]
NumDicas=18
MostrarDicas=0
MensagemV2=1
[Dica001]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
Linha002=\viewkind4\uc1\pard\f0\fs20 
Linha003=O \b Visualg\b0 pode corrigir a indentação de seu algoritmo automaticamente. Basta teclar \b Ctrl+G\b0.}
[Dica002]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
Linha002=\viewkind4\uc1\pard\f0\fs20 
Linha003=Digite \b dcn\b0 , \b dcc\b0 ou \b dcl\b0 e tecle \b Ctrl+Space\b0 para que o \b Visualg\b0 o ajude nas declarações de variáveis.}
[Dica003]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
Linha002=\viewkind4\uc1\pard\f0\fs20 
Linha003=Depois de executar um algoritmo, você pode teclar \b F7\b0 para ver quantas vezes cada linha foi executada.}
[Dica004]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
Linha002=\viewkind4\uc1\pard\f0\fs20 
Linha003=Use o comando \b pausa\b0 em uma linha para parar o algoritmo naquela linha.\par
Linha004=Você poderá examinar o valor das variáveis e examinar a "tela" do programa.\par
Linha005=Depois, tecle \b F9\b0 para continuar a execução.}
[Dica005]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
Linha002={\colortbl ;\red0\green0\blue255;}\viewkind4\uc1\pard\f0\fs20 Para reportar um problema ou dar uma sugestão sobre o\b Visualg\b0, envie e-mail para \cf1\b contato@apoioinformatica.inf.br.\cf0\b0}
[Dica006]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
Linha002={\colortbl ;\red0\green0\blue255;}\viewkind4\uc1\pard\f0\fs20 Visite 
Linha003=\cf1\b http://www.apoioinformatica.inf.br/visualg\cf0\b0 regularmente para obter atualiza\'e7\'f5es e mais exemplos para o \b Visualg\b0 .\par}
[Dica007]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}{\f1\fnil\fcharset2 Symbol;}}
Linha002=\viewkind4\uc1\pard\f0\fs20 O \b Visualg\b0 tem dois operadores de divis\'e3o:\par
Linha003=\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-720\li720\b /\b0 - para divis\'e3o real: 7 / 2 = 3.5\par
Linha004=\b{\pntext\f1\'B7\tab}\\\b0 - para divis\'e3o inteira: 7 \\ 2 = 3\par}
[Dica008]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}{\f1\fnil\fcharset2 Symbol;}}
Linha002=\viewkind4\uc1\pard\f0\fs20 O operador de exponencia\'e7\'e3o do Visualg \'e9 o \b ^\b0 (acento circunflexo);\par
Linha003=o operador de m\'f3dulo (resto da divis\'e3o inteira) \'e9 o \b %\b0 (sinal de percentual). Veja os exemplos:\par
Linha004=\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-720\li720 4 ^ 2 = 16\par
Linha005={\pntext\f1\'B7\tab}25 % 3 = 1 (25 dividido por 3 = 8, resto 1)\par}
[Dica009]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
Linha002=\viewkind4\uc1\pard\f0\fs20 
Linha003=O \b Visualg\b0 não diferencia maiúsculas de minúsculas no nome das variáveis.\par 
Linha004=Assim, \b SALARIOBRUTO\b0 e \b SalarioBruto\b0 se referem à mesma variável.}
[Dica010]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
Linha002=\viewkind4\uc1\pard\f0\fs20 
Linha003=Use o comando \b timer on\b0 em uma linha para executar o algoritmo em "câmera lenta" a partir daquele ponto.\par
Linha004=Use o comando \b timer off\b0 para voltar à execução normal.\par
Linha005=Esta dica é útil se você quer ver o fluxo de execução do algoritmo.}
[Dica011]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
Linha002=\viewkind4\uc1\pard\f0\fs20 
Linha003=Use a tecla \b F8\b0 para executar um algoritmo passo a passo (uma linha por vez).\par
Linha004=A qualquer momento você pode usar a tecla \b F9 \b0 para continuar a execução normal do algoritmo.}
[Dica012]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}{\f1\fnil\fcharset2 Symbol;}}
Linha002=\viewkind4\uc1\pard\f0\fs20 Para encerrar a execução de um algoritmo no \b Visualg\b0 voc\'ea pode:\par
Linha003=\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-720\li720 teclar \b Ctrl+F2\b0 durante uma pausa ou na execução passo a passo;\par
Linha004={\pntext\f1\'B7\tab}teclar \b ESC\b0 (ou clicar o bot\'e3o Cancelar) durante uma leitura de dados.\par
Linha005=\pard No simulador da tela do computador uma linha dizendo "Execução terminada pelo usuário" indicará que o programa foi interrompido.\par}
[Dica013]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}{\f1\froman\fcharset0 Times New Roman;}{\f2\fswiss\fcharset0 Courier New;}}
Linha002=\viewkind4\uc1\pard\sb100\sa100\lang1033\b\f0\fs20 Tipos de Dados\b0\f1\fs24\par
Linha003=\f0\fs20 O \b Visualg\b0 prev\'ea tr\'eas tipos de dados: num\'e9rico, caracter e l\'f3gico (booleano). As palavras-chave que os definem s\'e3o as seguintes (observe que elas n\'e3o t\'eam acentua\'e7\'e3o):\f1\fs24\par
Linha004=\pard\li360\ri360\sb100\sa100\f2\fs20 numerico\f0 : define vari\'e1veis do tipo inteiro ou real (para o Visualg todos os num\'e9ricos s\'e3o reais)\line\f2 caracter\f0 : define vari\'e1veis do tipo "string"\line\f2 logico\f0 : define vari\'e1veis do tipo booleano\f1\fs24\par
Linha005=\pard\sb100\sa100\f0\fs20 Os nomes das vari\'e1veis devem come\'e7ar por uma letra e depois conter letras, n\'fameros ou sublinhado, at\'e9 um limite de 30 caracteres. As vari\'e1veis podem ser do tipo simples ou vetores (nesta vers\'e3o, os vetores podem ser de uma ou duas dimens\'f5es). N\'e3o pode haver duas vari\'e1veis com o mesmo nome, \'e0 exce\'e7\'e3o, naturalmente, dos elementos de um vetor.\f1\fs24\par
Linha006=\pard\lang1046\f0\fs20\par}
[Dica014]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}{\f1\fswiss\fcharset0 Courier New;}{\f2\froman\fcharset0 Times New Roman;}}
Linha002=\viewkind4\uc1\pard\sb100\sa100\lang1033\f0\fs20 No \b Visualg\b0 as compara\'e7\'f5es com caracteres n\'e3o levam em conta se s\'e3o ma\'edusculos ou min\'fasculos. Assim, \f1 "ABC"\f0 \'e9 igual a \f1 "abc"\f0 .\par
Linha003=Valores l\'f3gicos obedecem \'e0 seguinte ordem : \f1 FALSO < VERDADEIRO\f0 .\f2\fs24\par
Linha004=\pard\lang1046\f0\fs20\par}
[Dica015]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}{\f1\fswiss\fcharset0 Courier New;}{\f2\froman\fcharset0 Times New Roman;}{\f3\fnil\fcharset2 Symbol;}}
Linha002=\viewkind4\uc1\pard\sb100\sa100\lang1033\f0\fs20 O \b Visualg\b0 implementa os tr\'eas comandos de repeti\'e7\'e3o usuais nas linguagens de programa\'e7\'e3o:\par
Linha003=\pard{\pntext\f3\'B7\tab}{\*\pn\pnlvlblt\pnf3\pnindent0{\pntxtb\'B7}}\fi-720\li720\sb100\sa100\f1 para..faca\f0 (similar ao \f1 for ... to ... do\f0 do Pascal);\par
Linha004=\f1{\pntext\f3\'B7\tab}enquanto...faca\f0 (similar ao \f1 while...do\f0 ), e\par
Linha005=\f1{\pntext\f3\'B7\tab}repita...ate\f0 (similar ao \f1 repeat...until\f0 ).\f2\fs24\par
Linha006=\pard\lang1046\f0\fs20\par}
[Dica016]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
Linha002=\viewkind4\uc1\pard\lang1033\f0\fs20 No menu Ajuda do \b Visualg\b0 , escolha a op\'e7\'e3o "A Linguagem do Visualg" para uma vis\'e3o geral das capacidades do interpretador.\par
Linha003=Voc\'ea tamb\'e9m pode teclar \b F1\b0 para ter acesso \'e0 ajuda on-line do programa.\par}
[Dica017]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}{\f1\froman\fcharset0 Times New Roman;}{\f2\fnil\fcharset0 Courier;}}
Linha002=\viewkind4\uc1\pard\sb100\sa100\lang1033\b\f0\fs20 Sugest\'e3o de Digita\'e7\'e3o\b0\f1\fs24\par
Linha003=\f0\fs20 A sugest\'e3o de digita\'e7\'e3o \'e9 acessada
atrav\'e9s das teclas \f2 Ctrl-J\f0 . V
Linha004=oc\'ea come\'e7a uma palavra, tecla \f2 Ctrl-J\f0 e o \b Visualg\b0 mostra uma lista sugerindo pa
Linha005=lavras-chave que completam o que voc\'ea digitou. Voc\'ea ent\'e3o pode dar um duplo-clique sobr
Linha006=e a op\'e7\'e3o desejada, ou selecion\'e1-la com as setas e teclar \f2 Enter\f0 . Ao aparecer a lista, s
Linha007=e voc\'ea continuar digitando, o \b Visualg\b0 continua procurando palavras que completam o que voc\'ea digitou
Linha008=. Se voc\'ea teclar \f2 Esc\f0 ou clicar fora da lista, ela desaparece.\par}
[Dica018]
Linha001={\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fswiss\fcharset0 Arial;}{\f1\froman\fcharset0 Times New Roman;}{\f2\fmodern\fprq1\fcharset0 Courier;}}
Linha002=\viewkind4\uc1\pard\sb100\sa100\lang1033\b\f0\fs20 Automatizando a Entrada de Dados\par
Linha003=\b0\'c0s vezes precisamos repetir testes em um programa com uma s\'e9rie igual de dados v\'e1rias vezes at\'e9 chegar a uma vers\'e3o correta.
Linha004=\line Neste caso, o \b Visualg\b0 permite que voc\'ea armazene estes dados em um arquivo-texto na ordem exata e
Linha005=m que eles ser\'e3o pedidos no programa, e quando for ser executado um comando leia, o \b Visualg\b0 obter\'e1 os d
Linha006=ados deste arquivo, e n\'e3o atrav\'e9s de digita\'e7\'e3o. Esta característica funciona da seguinte maneira:
Linha007=\line 1) se o arquivo cujo nome for dado \b não existir\b0 , o \b Visualg\b0 fará a leitura de dados via digitação e armazenará os dados neste arquivo, na ordem com que forem fornecidos;
Linha008=\line 2) se o arquivo \b existir\b0 , o \b Visualg\b0 obterá os dados deste arquivo até o seu fim, e então voltará a pedir os dados via digitação;
Linha009=\line 3) apenas um comando arquivo pode ser empregado (se preciso) em cada algoritmo, e ele deve estar na se\'e7\'e3o de declara\'e7\'f5es;
Linha010=\line 4) caso não seja fornecido um caminho, o \b Visualg\b0 vai procurar o arquivo na pasta de trabalho corrente (geralmente é a pasta onde o VISUALG.EXE está). O nome em si do arquivo deve ser completo, inclusive com extensão (por exemplo, .txt, .dat, etc.), porque este comando não prevê uma extensão padrão.\f1\fs24\par
Linha011=\f0\fs20 A sintaxe do comando \'e9 \par
Linha012=\f2 arquivo "dados.txt"}
VISUALG3/EDMUNDO.ALG
Algoritmo "semnome"
// Disciplina : [Linguagem e Lógica de Programação] 
// Professor(a): Antonio Carlos Nicolodi 
// Descrição : Aqui você descreve o que o programa faz! (função)
// Autor(a) : Nome do(a) aluno(a)
// Data atual : 04/09/2015
Var
nota1,nota2,nota3,nota4:inteiro
media:real
Inicio
escreva("Informe a Nota 1:")
leia (nota1)
escreva("Informe a Nota 2:")
leia (nota2)
escreva("Informe a Nota 3:")
leia (nota3)
escreva("Informe a Nota 4:")
leia (nota4)
media<-(nota1+nota2+nota3+nota4)/4
se (media<6) entao
escreva ("Reprovado! Sua média é:",media)
senao
se (media>=6) e (media<7) entao
escreva ("Reavaliação! Sua média é:",media)
senao
escreva ("Aprovado! Sua média é:",media)
fimse
fimse
fimalgoritmo
VISUALG3/Exemplos/bbsort.alg
algoritmo "Bubble Sort"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Algoritmo BUBBLESORT
// Função : Demonstração para o programa VisuAlg
// Autor : Claudio Morgado de Souza
// Data : 08/09/2002
Dos
var
 a, b : inteiro
 temp : real
 x : vetor[1..10] de real
inicio
// Leitura dos dados
aleatorio 0,100,3
para a de 1 ate 10 faca
 leia(x[a])
fimpara
// Ordenação
para a de 1 ate 10 faca
 para b de 1 ate 9 faca
 se x[b] > x[b+1] entao
 temp <- x[b]
 x[b] <- x[b+1]
 x[b+1] <- temp
 fimse
 fimpara
fimpara
// Impressão dos dados ordenados
para a de 1 ate 10 faca
 escreval(a:3," - ", x[a] : 10 : 3)
fimpara
fimalgoritmo
VISUALG3/Exemplos/bbsortp.alg
algoritmo "Bubble Sort"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Algoritmo BUBBLESORT
// Função : Demonstração para o programa VisuAlg 3.03
// Autor : Claudio Morgado de Souza
// Data : 08/09/2002
// Algoritmo BUBBLESORT
// Função : Demonstração para o programa VisuAlg 2.0
// Autor : Claudio Morgado de Souza
// Data : 08/09/2002
// Força a execução do programa na janela DOS
dos
var
 a, b : inteiro
 x : vetor[1..10] de real
procedimento troca( var a, b : real )
var t : real
inicio
 t <- a
 a <- b
 b <- t
fimprocedimento
inicio
// Leitura dos dados
// Gerar numeros aleatorios entre 0 e 100, com 3 casas decimais
aleatorio 0,100,3
para a de 1 ate 10 faca
 leia(x[a])
fimpara
// Ordenação
para a de 1 ate 10 faca
 para b de 1 ate 9 faca
 se x[b] > x[b+1] entao
 troca(x[b],x[b+1])
 fimse
 fimpara
fimpara
// Impressão dos dados ordenados
para a de 1 ate 10 faca
 escreval(a:3," - ", x[a] : 10 : 3)
fimpara
fimalgoritmo
VISUALG3/Exemplos/bbsortreg.alg
// Algoritmo BUBBLESORT Usando Registros
// Função : Demonstração para o programa VisuAlg 3.03
// Autor : Claudio Morgado de Souza
// Data : 27/02/2007
algoritmo "BubbleSortComRegistros"
const
 MAX_ITENS = 10
tipo
 tdados = registro
 codigo: inteiro
 nome: caractere
 fimregistro
var
 dados : vetor[1..MAX_ITENS] de tdados
procedimento leituradosdados
var i: inteiro
inicio
 //Caso você mesmo queira digitar os valores, comente as linhas
 // aleatorio on e aleatorio off abaixo
 aleatorio on
 para i de 1 ate MAX_ITENS faca
 escreva("Digite o codigo do ",i,"o registro:")
 leia(dados[i].codigo)
 escreva("Digite o nome do ",i,"o registro:")
 leia(dados[i].nome)
 fimpara
 aleatorio off
fimprocedimento
procedimento ordenapornome
var a,b: inteiro
 temp: tdados
inicio
 // Ordenação
 para a de 1 ate MAX_ITENS faca
 para b de 1 ate MAX_ITENS-1 faca
 se dados[b].nome > dados[b+1].nome entao
 // Atribuicao do registro inteiro
 temp <- dados[b]
 dados[b] <- dados[b+1]
 dados[b+1] <- temp
 
 fimse
 fimpara
 fimpara
fimprocedimento
procedimento ordenaporcodigo
var a,b: inteiro
 temp: tdados
inicio
 // Ordenação
 para a de 1 ate MAX_ITENS faca
 para b de 1 ate MAX_ITENS-1 faca
 se dados[b].codigo > dados[b+1].codigo entao
 // Atribuicao do registro campo a campo
 temp.codigo <- dados[b].codigo
 temp.nome <- dados[b].nome
 
 dados[b] <- dados[b+1]
 dados[b+1] <- temp
 
 fimse
 fimpara
 fimpara
fimprocedimento
procedimento imprime
var a: inteiro
inicio
 // Impressão dos dados ordenados
 escreval("Item - Codigo Nome")
 para a de 1 ate MAX_ITENS faca
 escreval(a:4," - ", dados[a].codigo : 6, " ", dados[a].nome)
 fimpara
fimprocedimento
inicio
 leituradosdados
 ordenapornome
 imprime
 ordenaporcodigo
 imprime
fimalgoritmo
VISUALG3/Exemplos/bubblrec.alg
// Disciplina: [Linguagem e Lógica de programaçao] 
// Algoritmo BUBBLESORT
// Função : Demonstração para o programa VisuAlg 3.03
// Autor : Claudio Morgado de Souza
// Data : 08/09/2002
// Autor : Claudio Morgado de Souza
// Data : (corrigido em 27/02/2007)
Algoritmo "BubbleSortComRegistros"
const
 MAX_ITENS = 10
tipo
 tdados = registro
 codigo: inteiro
 nome: caractere
 fimregistro
procedimento leituradosdados
var i: inteiro
inicio
 //Caso você mesmo queira digitar os valores, comente as linhas
 // aleatorio on e aleatorio off abaixo
 aleatorio on
 para i de 1 ate MAX_ITENS faca
 escreva("Digite o codigo do ",i,"o registro:")
 leia(dados[i].codigo)
 escreva("Digite o nome do ",i,"o registro:")
 leia(dados[i].nome)
 fimpara
 aleatorio off
fimprocedimento
procedimento ordenapornome
var a,b: inteiro
 temp: tdados
inicio
 // Ordenação
 para a de
1 ate MAX_ITENS faca
 para b de 1 ate MAX_ITENS-1 faca
 se dados[b].nome > dados[b+1].nome entao
 // Atribuicao do registro inteiro
 temp <- dados[b]
 dados[b] <- dados[b+1]
 dados[b+1] <- temp
 
 fimse
 fimpara
 fimpara
fimprocedimento
procedimento ordenaporcodigo
var a,b: inteiro
 temp: tdados
inicio
 // Ordenação
 para a de 1 ate MAX_ITENS faca
 para b de 1 ate MAX_ITENS-1 faca
 se dados[b].codigo > dados[b+1].codigo entao
 // Atribuicao do registro campo a campo
 temp.codigo <- dados[b].codigo
 temp.nome <- dados[b].nome
 
 dados[b] <- dados[b+1]
 dados[b+1] <- temp
 
 fimse
 fimpara
 fimpara
fimprocedimento
procedimento imprime
var a: inteiro
inicio
 // Impressão dos dados ordenados
 escreval("Item - Codigo Nome")
 para a de 1 ate MAX_ITENS faca
 escreval(a:4," - ", dados[a].codigo : 6, " ", dados[a].nome)
 fimpara
fimprocedimento
var
 dados : vetor[1..MAX_ITENS] de tdados
inicio
 leituradosdados()
 ordenapornome()
 imprime()
 ordenaporcodigo()
 imprime()
 // Leitura dos dados
fimalgoritmo
VISUALG3/Exemplos/buscabin.alg
algoritmo "buscabin"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Algoritmo BUBBLESORT
// Função : Demonstração para o programa VisuAlg 3.03
// Data : 08/09/2002
// Função : Exemplo de Busca Binaria
// Autor : Cláudio Morgado de Souza
// Data : (corrigido: 15/09/2002 )
// Força a entrada em modo DOS
dos
// Seção de Declarações
var
 li,ls,j,vbusca, ind : inteiro
 v : vetor[1..20] de inteiro
 achou : logico
inicio
// Preenche um vetor com 20 números aleatórios, entre 0 e 100
aleatorio 0, 100
para j de 1 ate 20 faca
 leia(v[j])
fimpara
aleatorio off
// Ordena o vetor, usando Bubblesort e reaproveitando as variáveis
para li de 1 ate 20 faca
 para ls de 1 ate 19 faca
 se v[ls] > v[ls+1] entao
 vbusca <- v[ls]
 v[ls] <- v[ls+1]
 v[ls+1] <- vbusca
 fimse
 fimpara
fimpara
// Busca binária
repita
 escreva( "Valor para busca (ESC ou menor que 0 termina) : ")
 leia( vbusca)
 se vbusca >= 0 entao
 li <- 1
 ls <- 20
 achou <- Falso
 enquanto (nao achou) e (li <= ls) faca
 ind <- (li+ls) \ 2
 se v[ind] = vbusca entao
 achou <- verdadeiro
 senao
 se v[ind] < vbusca entao
 li <- ind + 1
 senao
 ls <- ind - 1
 fimse
 fimse
 fimenquanto
 se achou entao
 escreval( "Valor encontrado na posição ", ind)
 senao
 escreval( "O valor ", vbusca, " não está na lista.")
 fimse
 // Pausa o programa. Tecle F9 neste ponto para continuar
 pausa
 fimse
ate vbusca < 0
fimalgoritmo
VISUALG3/Exemplos/buscaseq.alg
algoritmo "semnome"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Função : Demonstração para o programa VisuAlg 3.03
// Data : 08/09/2002
// Função : Busca Seqüencial
// Autor : Cláudio Morgado de Souza
// Data : 01/05/03 (correção)
dos
var
 j,k, vb : inteiro
 v : vetor[1..10] de inteiro
 achou : logico
procedimento preenchevetor
// Preenche o vetor com numeros aleatorios entre 0 e 100
var j : inteiro
inicio
para j de 1 ate 10 faca
 v[j] <- randi(100)
 escreval(j:5,v[j]:5)
fimpara
fimprocedimento
inicio
preenchevetor
escreva("Entre com o valor de busca (ESC termina) :")
leia(vb)
// Busca Seqüencial
j <- 1
repita
 se v[j] = vb entao
 achou <- verdadeiro
 senao
 J <- j+1
 fimse
ate (achou=verdadeiro) ou (j>10)
se achou entao
 escreval("Achei ", vb , " na posição ", j)
senao
 escreval("Nao achei.")
fimse
fimalgoritmo
VISUALG3/Exemplos/buscaseqreg.alg
algoritmo "BuscaSeqRegistro"
// Função : Busca Seqüencial com Registros - Demonstração do Visualg
// Autor : Cláudio Morgado de Souza
// Data : 25/02/2007
dos
tipo
 tlistafunc = registro
 codigo: inteiro
 salario: real
 fimregistro
 
var
 j,k, vb : inteiro
 dados : vetor[1..10] de tlistafunc
 achou : logico
procedimento preenchevetor
// Preenche o vetor com numeros aleatorios entre 0 e 100
var j : inteiro
inicio
para j de 1 ate 10 faca
 dados[j].codigo <- randi(100) // cria codigos aleartorios
 dados[j].salario <- int(rand * 100000)/100 // cria salarios aleatorios
 escreval(j:5,dados[j].codigo:5,dados[j].salario:10:2)
fimpara
fimprocedimento
inicio
preenchevetor
escreva("Entre com o valor de busca (ESC termina) :")
leia(vb)
// Busca Seqüencial
j <- 1
repita
 se dados[j].codigo = vb entao
 achou <- verdadeiro
 senao
 J <- j+1
 fimse
ate (achou=verdadeiro) ou (j>10)
se achou entao
 escreval("Achei o funcionario ", vb , " na posição ", j, " o salario é : ", dados[j].salario:10:2)
senao
 escreval("Nao achei.")
fimse
fimalgoritmo
VISUALG3/Exemplos/buscbinr.alg
algoritmo "buscabinr"
// Função : Exemplo de Busca Binaria Recursiva, Procedimentos, etc.
// Autor : Cláudio Morgado de Souza
// Data : 15/09/2002
// Força a entrada em modo DOS
dos
// Seção de Declarações
var
 v : vetor[1..20] de inteiro
 vbusca, ind : inteiro
funcao buscabinrec( vbusca, li,ls : inteiro ; var ind: inteiro ) : logico
// Busca binária
var achou : logico
inicio
 achou <- falso
 ind <- (li+ls) div 2
 se (li > ls) entao
 retorne falso
 senao
 se v[ind] = vbusca entao
 retorne verdadeiro
 senao
 se v[ind] < vbusca entao
 li <- ind + 1
 senao
 ls <- ind - 1
 fimse
 retorne buscabinrec( vbusca, li,ls,ind )
 fimse
 fimse
fimfuncao
procedimento troca( var a, b : inteiro )
var t : inteiro
inicio
 t <- a
 a <- b
 b <- t
fimprocedimento
procedimento ordena
var a,b : inteiro
inicio
// Ordena o vetor, usando Bubblesort e reaproveitando as variáveis
para a de 1 ate 20 faca
 para b de 1 ate 19 faca
 se v[b] > v[b+1] entao
 troca(v[b],v[b+1])
 fimse
 fimpara
fimpara
fimprocedimento
procedimento carregavetor
var j : inteiro
inicio
// Preenche o vetor com 20 números inteiros aleatórios, entre 0 e 100
para j de 1 ate 20 faca
 v[j] <- randi(100)
fimpara
fimprocedimento
procedimento exibevetor
var j : inteiro
inicio
para j de 1 ate 20 faca
 escreval(j:5,v[j]:5)
fimpara
fimprocedimento
inicio
carregavetor
ordena
exibevetor
repita
 escreva( "Valor para busca (ESC ou menor que 0 termina) : ")
 leia( vbusca)
 se vbusca >= 0 entao
 se buscabinrec(vbusca, 1,20,ind) entao
 escreval( "Valor encontrado na posição ", ind)
 senao
 escreval( "O valor ", vbusca, " não está na lista.")
 fimse
 fimse
ate vbusca < 0
fimalgoritmo
VISUALG3/Exemplos/CALCULOMEDIA2.ALG
Algoritmo "CalculoMedia2"
// Disciplina: Lógica de programação
// Professor : Antonio Carlos Nicolodi
// Descrição : calculo da média aritimética
// Autor : Professor Antonio
// Data atual: 01/04/2015
var
// Seção de Declarações
 Nota1, Nota2, Nota3, Nota4, Nota5 : Inteiro
 Media: Real
 Aluno : Caracter
Inicio
// Seção dos Comandos
 Escreva ("Digite o nome do aluno: ")
 Leia (Aluno)
 Escreva ("Digite a Primeira nota: ")
 Leia (Nota1)
 Escreva ("Digite a Segunda nota : ")
 Leia (Nota2)
 Escreva ("Digite a Terceira nota: ")
 Leia (Nota3)
 Escreva ("Digite a Quarta nota : ")
 Leia (Nota4)
 Escreva ("Digite a Quint nota : ")
 Leia (Nota5)
 Media <- (Nota1+ Nota2+ Nota3+ Nota4+ Nota5) / 5
 Escreval (" ===================== ")
 Escreval (" ")
 Escreval ("A Média final é: ", Media)
 Escreval (" ")
 Se Media >= 7 entao
 Escreval("
O Aluno ",Aluno, " Passou !")
 Senao
 Escreval(" O Aluno ",Aluno, " Reprovou")
 fimse
Fimalgoritmo
VISUALG3/Exemplos/Calculo_media2.alg
Agoritmo "Calculo_Media2"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Função : calculo da média aritimética verificando o resultado for maior ou igual a 7; 
 se Sim mostre o aluno xxxx passou
 se Não mostre o aluno xxxx reprovou 
// Autor : Professor Antonio
// Data : 05/04/2015
// Seção de Declarações
var
 Nota1, Nota2, Nota3, Nota4, Nota5, Media: Real
 Aluno : Caracter
Inicio
// Seção de Comandos
Escreva ("Digite o nome do aluno: ")
 Leia (Aluno)
Escreva ("Digite a Primeira nota: ")
 Leia (Nota1)
 Escreva ("Digite a Segunda nota: ")
 Leia (Nota2)
 Escreva ("Digite a Terceira nota: ")
 Leia (Nota3)
Escreva ("Digite a Quarta nota: ")
 Leia (Nota4)
Media <- (Nota1+ Nota2+ Nota3+ Nota4+ Nota5) / 5
 Escreva ("A Média eh: ", Media)
Se Media >=7 entao
 Escreva(" O Aluno ",Aluno, "Passou")
Senao
 Escreva(" O Aluno ",Aluno, "Reprovou")
fimse
Fimalgoritmo
VISUALG3/Exemplos/Calculo_media2.alg.ALG
Agoritmo "Calculo_Media2"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Professor: Antonio Carlos Nicolodi
// Função : calculo da média aritimética verificando o resultado for maior ou igual a 7; 
 se Sim mostre o aluno xxxx passou
 se Não mostre o aluno xxxx reprovou 
// Autor : Professor Antonio
// Data : 05/04/2015
// Seção de Declarações
var
 Nota1, Nota2, Nota3, Nota4, Nota5, Media: Real
 Aluno : Caracter
Inicio
// Seção de Comandos
Escreva ("Digite o nome do aluno: ")
 Leia (Aluno)
Escreva ("Digite a Primeira nota: ")
 Leia (Nota1)
 Escreva ("Digite a Segunda nota: ")
 Leia (Nota2)
 Escreva ("Digite a Terceira nota: ")
 Leia (Nota3)
Escreva ("Digite a Quarta nota: ")
 Leia (Nota4)
Media <- (Nota1+ Nota2+ Nota3+ Nota4+ Nota5) / 5
 Escreva ("A Média eh: ", Media)
Se Media >=7 entao
 Escreva(" O Aluno ",Aluno, "Passou")
Senao
 Escreva(" O Aluno ",Aluno, "Reprovou")
fimse
Fimalgoritmo
VISUALG3/Exemplos/CALENDARIO.ALG
Algoritmo "CALENDARIO"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Professor: Antonio Carlos Nicolodi
// Função : Mostra um calendário a partir de uma data
// Autor : Antonio Carlos Nicolodi
// Data : 19/05/2015
var
// Seção de Declarações das variáveis 
 AM : vetor[1..6, 1..7] DE CARACTER // A matriz 6X7
 vt : vetor[0..6] de caracter // valor da tabela
dia,mes,ano : INTEIRO
 i,j,k,t,d : INTEIRO
linha,coluna: INTEIRO
 Ultimo : Inteiro
 a,y,m,q : REAL
aa,yy,mm,qq : REAL
 Flag : Logico
pd,sx,xm,xs : CARACTER
//
// Funçoes do programa
//
Funcao Data_ok(xm : Caracter) : Logico
Var
Bisext,Resp : Logico
dia,mes,ano : Inteiro
xBar1,xbar2 : Inteiro
Tamh,Ultimo : Inteiro
B1,B2,Barra : caracter
Inicio
// Valores iniciais das variáveis
 Resp:= Verdadeiro
 Tamh:= Compr(xm)
 Barra:= "/"
 Bisext:= Falso
 Se Tamh = 10 Entao
 Dia := CaracpNum(copia(xm,1,2))
 B1 := copia(xm,3,1)
 Mes := CaracpNum(copia(xm,4,2))
 B2 := copia(xm,6,1)
 Ano := CaracpNum(copia(xm,7,4))
 Senao
 Resp:= Falso
 Fimse
// Compara se o ano está (foi) digitado corretamente
 Se Resp Entao
 xBar1 := Pos(B1,Barra)//volta 0 se não achar 1ª Barra
 xBar2 := Pos(B2,Barra)//volta 0 se não achar 2ª Barra
 Se ((xBar1 > 0) e (xBar2 > 0)) entao // verifica
 Resp := Verdadeiro
 Senao
 Resp := Falso
 Fimse
 SE ((Ano < 1900) ou (Ano>2350)) Entao
 Resp := Falso
 Senao
 Bisext := ((Ano mod 4) = 0)
 FimSe
 SE ((Mes < 1) ou (Mes>12)) Entao
 Resp := Falso
 FimSe
// Compara se o mes está (foi) digitado corretamente
 Ultimo := 31
 SE (Mes = 2) Entao
 Ultimo := 28
 Se Bisext Entao
 Ultimo := Ultimo + 1 // Ou seja 29
 Fimse
 Fimse
// Compara se o dia está (foi) digitado corretamente
 SE ((Dia < 1) ou (Dia> Ultimo)) Entao
 Resp := Falso
 FimSe
 Fimse
// Retorna Verdadeiro ou Falso
 Retorne Resp
Fimfuncao
Funcao StrZero(Numero,Qtde: Inteiro) : Caracter
Var
 Resp : Caracter
 i : inteiro
Inicio
// Preenche a resposta com Quantidade - 1 zeros a esquerda
 Para i de 1 ate Qtde-1 faca
 Resp := "0" + Resp
 Fimpara
 SE Numero < 10 entao
// Se o numero for menor que 10 coloca um zero na frente.
 Resp := Resp + NumpCarac(Numero)
 SENAO
// Transforma em caracter
 Resp := NumpCarac(Numero)
 FIMSE
// Retorna a resposta 01,02,03...09,10,11,12..31
 Retorne Resp
Fimfuncao
inicio
// Preenche a variável com os últimos dias de cada mes
 sx := "31,28,31,30,31,30,31,31,30,31,30,31"
// Preenche o vetor com os dias da semana
 vt[0] := "Dom"
 vt[1] := "Seg"
 vt[2] := "Ter"
 vt[3] := "Qua"
 vt[4] := "Qui"
 vt[5] := "Sex"
 vt[6] := "Sab"
// Entra em um laço (loop) pra pedir a data correta
 Flag := Verdadeiro
 Enquanto Flag Faca
 LimpaTela
 Escreva("Digite A DATA 99/99/9999 dia,mes,ano : ")
 Leia(xm)
 Se Nao(Data_ok(xm)) Entao
 Escreval("Data Invalida !!! - Tecle <ENTER>")
 Leia(xm)
 Flag := Verdadeiro
 senao
 Flag := Falso
 fimse
 FimEnquanto
//Desmonta a data em pedaços (dia, mês, ano) conf. a mascara
 Dia := CARACPNUM(COPIA(XM,1,2))
 Mes := CARACPNUM(COPIA(XM,4,2))
 Ano := CARACPNUM(COPIA(XM,7,4))
// Calcula o primeiro dia do mes para montar o calendário
 A := int((14 - Mes) / 12)
 Y := Ano - A
 M := Mes + (12 * A) - 2
// q := Dia+int((31*M)/12)+y+int(y/4)-int(y/100)+int(y/400)
 q := 01+int((31*M)/12)+y+int(y/4)-int(y/100)+int(y/400)
// mm:= int((31 * M)/12)
// qq:= int(y/4)
// aa:= int(y/100)
// yy:= int(y/400)
// q := Dia + mm + y + qq - aa + yy
// Observação PRA ACHAR O MOD (tem q ser inteiro)
// nessa fórmula vai retornar de 0-6
 d := Int(q) // Transroma o 'q' em inteiro = int(q)
 d := (d mod 7) //(resto da divisão por 7)
 xs := vt[d] // 'd' é real mas no vetor tem q ser
 // um valor inteiro
// Formula pra calcular a posição do ultimo dia/mês
 K := (Mes * 3) - 2
 Ultimo := CaracPNum(Copia(sx,K,2))
// Monta a matriz vazia
 para i de 1 ate 6 faca
 para j de 1 ate 7 faca
 am[i,j] := "__"
 fimpara
 fimpara
// Preenche a matriz com os dias
 T := 1
 Linha := 1
 Coluna := d + 1 //acrescenta de 1 (Um) p/ posicionar certo
 Enquanto T <= Ultimo faca
 Se T = 1 Entao
 Pd:= "1º"
 senao
 Pd:= StrZero(T,2)
 Fimse
 SE ((T > 1) e (T = DIA)) Entao
 Pd := "><"
 Fimse
 am[Linha,Coluna] := Pd // carrega o número do dia
 T := T + 1
 Coluna := Coluna + 1
 SE Coluna > 7 entao
 Coluna := 1
 Linha := Linha + 1
 SE Linha > 6 entao
 Linha := 1
 FIMSE
 FIMSE
 FIMENQUANTO
 LimpaTela
// Mostra o cabeçalho do calendário
 Escreval("Data: ",xm)
 Para i de 0 ate 6 faca
 Escreva(vt[i]," ")
 FimPara
// Mostrar o calendário na tela
 para i de 1 ate 6 faca
 Escreval(" ")
 para j de 1 ate 7 faca
 Escreva(" ",am[i,j]," ")
 fimpara
 fimpara
 Escreval(" ")
//
fimalgoritmo
VISUALG3/Exemplos/caracfun.alg
Algoritmo "semnome"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Professor: Antonio Carlos Nicolodi
// Função : Demonstrar o uso das varias funcoes de caracteres do Visualg 3.03
// Autor :
// Data : 31/12/2003
// Seção de Declarações
var t : caracter
funcao replicar(s : caracter ; n : inteiro ) : caracter
// Replica a cadeia de caracteres S, N vezes
var t : caracter
 J : inteiro
inicio
 t <- ""
 para j de 1 ate n faca
 t <- t + s
 fimpara
 retorne t
fimfuncao
funcao esquerda(s : caracter ; n : inteiro) : caracter
inicio
 retorne copia(s,1,n)
fimfuncao
funcao direita(s : caracter ; n : inteiro) : caracter
inicio
 retorne copia(s,compr(s)-n+1 ,n)
fimfuncao
funcao numpcaraczero( v, c : inteiro) : caracter
inicio
 retorne direita( replicar("0",c) + numpcarac(v),c)
fimfuncao
procedimento insere( var s : caracter ; subs : caracter ; posic : inteiro )
// Insere a cadeia de caracteres SUBS na variavel S, a partir de POSIC
var x,y : caracter
inicio
 x <- esquerda(s,posic-1)
 y <- direita(s,compr(s)-posic+1)
 s <- x + subs + y
fimprocedimento
inicio
escreval(numpcaraczero(12,6))
t <- "RioJaneiro"
insere(t," de ",4)
escreva(t)
fimalgoritmo
VISUALG3/Exemplos/CARACOL.ALG
Algoritmo "Caracol"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Professor: Antonio Carlos Nicolodi
// Função: Calcula os passos de um caracol para subir o poço
// Autor : Professor Antonio
// Data : 05/04/2015 
Var 
 Sobe, Desce: Real 
 Dias, Total : Inteiro
 
Inicio
 Sobe <- 0.0
 Desce <- 0.5
 Dias <- 0
 Total <- 10
 Limpatela		
 Escreval("Cálcular os passos de um Caracol")
 Escreval("================================")
 Escreval(" ")
 Para Dias de 0 ate Total faca
 se Sobe <= Total entao
 Sobe <- Sobe + 2 - Desce
 Escreval("Sobe = ",Sobe)
 senao
 interrompa
 fimse
 fimpara
 Escreval(" ")
 Escreval("O Caracol levou ",Dias," dias")
 Escreval(" ")
 
fimAlgoritmo
VISUALG3/Exemplos/Caracol2.ALG
Algoritmo "Caracol"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Professor: Antonio Carlos Nicolodi
// Função: Calcula os passos de um caracol para subir o poço
// Autor : Antonio Carlos Nicolodi
// Data : 05/04/2015 
Var 
 Sobe, Desce: Real 
 Dias, Total : Inteiro
 
Inicio
 Sobe <- 0.0
 Desce <- 0.5
 Dias <- 0
 Total <- 10
 Limpatela		
 Escreval("Um dia um caracol estava andando e caio em um poço")
 Escreval("Cálcular o tempo que ele levaria pra sair desse poço")
 Escreval("========================================================")
 Escreval(" ")
 Para Dias de 0 ate Total faca
 se Sobe <= Total entao
 Sobe <- Sobe + 2 - Desce
 Escreval("Subiu 2 mts p/dia e baixou ",Desce," mts a noite, ficando ",Sobe," mts")
 senao
 interrompa
 fimse
 fimpara
 Escreval(" ")
 Escreval("O Caracol levou ",Dias," dias")
 Escreval(" ")
 
fimAlgoritmo
VISUALG3/Exemplos/cntsort.alg
Algoritmo "countsort"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Função : Demonstração do método COUNTSORT de ordenação.
// Autor : Cláudio Morgado de Souza
// Data : 08/03/2003
// Seção de Declarações
var
v1 : vetor[1..100] de inteiro
v2 : vetor[1..20] de inteiro
j, i, k : inteiro
inicio
// Liga a geracao de dados aleatorios de entrada, limitando-os de 1 a 100 (inclusive)
aleatorio 1,100
// Desliga o eco da leitura de dados na "tela" do computador.
eco off
para j de 1 ate 20 faca
 leia(v2[j])
fimpara
// Conta quantas vezes cada valor de 1 a 100 aparece em v2[]
para j de 1 ate 20 faca
 v1[v2[j]] <- v1[v2[j]] + 1
fimpara
// Inicia a contagem do tempo para a ordenação
cronometro on
k <- 1
para i de 1 ate 100 faca
 para j de 1 ate v1[i] faca
 v2[k] <- i
 k <- k + 1
 fimpara
fimpara
// Termina a contagem de tempo
cronometro off
// Escreve o vetor ordenado
para j de 1 ate 20 faca
 escreval("v2[",j,"] = ", v2[j])
fimpara
fimalgoritmo
VISUALG3/Exemplos/combin.alg
Algoritmo "semnome"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Função : Calcular combinacao de n p a p
// Autor : Cláudio Morgado de Souza
// Data : 14/09/2002
// Seção de Declarações 
var
 n,p,t, u : inteiro
inicio
// Seção de Comandos 
escreva("Número : ")
leia(n)
escreva("Taxa : ")
leia(p)
u <- 1
para t de n-p+1 ate n faca
 u <- u * t
fimpara
para t de 2 ate p faca
 u <- u div t
fimpara
escreval( "Combinação de" , n , " elementos", p , " a" , p , " =" , u )
fimalgoritmo
VISUALG3/Exemplos/Cronometro.alg
Algoritmo "Cronometro"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Professor: Antonio Carlos Nicolodi
// Autor : Wallace S. Maia
// Data : 02/04/2004
// Seção de Declarações 
var
 Hora, Minuto, Segundo: inteiro
funcao replicar(s : caracter ; n : inteiro ) : caracter
// Replica a cadeia de caracteres S, N vezes
var t : caracter
 J : inteiro
inicio
 t <- ""
 para j de 1 ate n faca
 t <- t + s
 fimpara
 retorne t
fimfuncao
funcao direita(s : caracter ; n : inteiro) : caracter
inicio
 retorne copia(s,compr(s)-n+1 ,n)
fimfuncao
funcao numpcaraczero( v, c : inteiro) : caracter
inicio
 retorne direita( replicar("0",c) + numpcarac(v),c)
fimfuncao
inicio
 Hora <- 0
 Minuto <- 0
 Segundo <- 0
 enquanto Hora < 25 faca
 timer 1000
 timer 0
 segundo <- segundo + 1
 se segundo > 59 entao
 Segundo <- 0
 Minuto <- Minuto + 1
 se Minuto > 59 entao
 Minuto <- 0
 Hora <- Hora + 1
 se Hora > 24 entao
 Hora <- 0
 fimse
 fimse
 fimse
 limpatela
 escreva(numpcaraczero(Hora,2),":",numpcaraczero(Minuto,2),":",numpcaraczero(Segundo,2))
 fimenquanto
fimalgoritmo
VISUALG3/Exemplos/dados.txt
Rio
10
20
5
8
3
-1
Sao Paulo
9
5
3
2
-1
Minas
3
4
9
-1
Fim
VISUALG3/Exemplos/decomp.alg
Algoritmo "decompor"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Função : Decompõe um número em seus fatores primos
// Autor : Cláudio Morgado de Souza
// Data : 31/10/2002
// Seção de Declarações 
var j, valor : inteiro
 p, ex : vetor [1..10] de inteiro
inicio
// Seção de Comandos
p[1] <- 2
p[2] <- 3
p[3] <- 5
p[4] <- 7
p[5] <- 11
p[6] <- 13
p[7] <- 17
p[8] <- 19
p[9] <- 23
p[10] <- 29
para j de 1 ate 10 faca
 ex[j] <- 0
fimpara
repita
 leia(valor)
ate valor > 0
para J de 1 ate 10 faca
 repita
 se valor mod p[j] = 0 entao
 valor <- valor div p[j]
 ex[j] <- ex[j] + 1
 fimse
 ate valor mod p[j] <> 0
fimpara
para j de 1 ate 10 faca
 escreval( p[j], ex[j] )
fimpara
fimalgoritmo
VISUALG3/Exemplos/decpoutras.alg
Algoritmo "Decimal para Outras Bases"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Professor: Antonio Carlos Nicolodi
// Função :
// Autor : Cláudio
// Data : 14/4/2003
// Seção de Declarações 
Var
 opcao, res : caracter
 digitos : vetor[1..16] de caracter
 valor, J : inteiro
funcao menu : caracter
var opcao : caracter
inicio
 limpatela
 escreval( "Programa de Conversão de Bases")
 escreval( "Da Base 10 para Binária, Octal ou Hexa")
 escreval( "--------------------------------------")
 escreval
 escreval( "Opções")
 escreval( " B - Binária")
 escreval( " O - Octal")
 escreval( " H - Hexa")
 escreval( " F - Fim")
 escreval
 repita
 escreva("Escolha uma base : ")
 leia(opcao)
 ate (Opcao = "F") ou (Opcao="B") ou (Opcao="O") ou (Opcao="H")
 retorne opcao
fimfuncao
inicio
// Seção de Comandos
repita
 escolha menu
 caso "B"
 caso "O"
 caso "H"
fimescolha
 se Opcao <> "F" entao
 escreva("Tecle ENTER para continuar")
 leia(res)
 limpatela
 fimse
ate Opcao = "F"
fimalgoritmo
VISUALG3/Exemplos/decpoutrasproc.alg
Algoritmo "Decimal para Outras Bases"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Professor: Antonio Carlos Nicolodi
// Função :
// Autor : Cláudio
// Data : 14/4/2003
// Seção de Declarações 
dos
Var
 opcao, res : caracter
 digitos : vetor[1..16] de caracter
 valor, J : inteiro
procedimento leropcao
inicio
 repita
 escreva("Escolha uma base : ")
 leia(opcao)
 ate (Opcao = "F") ou (Opcao="B") ou (Opcao="O") ou (Opcao="H")
fimprocedimento
procedimento menu
inicio
 limpatela
 escreval( "Programa de Conversão de Bases")
 escreval( "Da Base 10 para Binária, Octal ou Hexa")
 escreval( "--------------------------------------")
 escreval
 escreval( "Opções")
 escreval( " B - Binária")
 escreval( " O - Octal")
 escreval( " H - Hexa")
 escreval( " F - Fim")
 escreval
 leropcao
fimprocedimento
inicio
// Seção de Comandos
repita
 menu
 escolha Opcao
 caso "B"
 caso "O"
 caso "H"
 fimescolha
 se Opcao <> "F" entao
 escreva("Tecle ENTER para continuar")
 leia(res)
 limpatela
 fimse
ate Opcao = "F"
fimalgoritmo
VISUALG3/Exemplos/dectobin.alg
Algoritmo "dectobin"
// Algoritmo : DECIMAL PARA BINARIO
// Disciplina: [Linguagem e Lógica de programaçao] 
// Função : Demonstração para o programa VisuAlg 3.03
// Autor : Claudio Morgado de Souza
// Data : 08/09/2002
// Seção de Declarações
var
x : caracter
y,d : inteiro
inicio
// Seção de Comandos
escreva("Entre com um número inteiro :")
leia(y)
d <- y
enquanto y > 0 faca
 se (y mod 2) = 0 entao
 x <- "0" + x
 senao
 x <- "1" + x
 fimse
 y <- y div 2
fimenquanto
escreval("A representação binária de", d, " é ", x)
fimalgoritmo
VISUALG3/Exemplos/dectohex.alg
Algoritmo "dectohex"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Função : Demonstração para o programa VisuAlg 3.03
// Autor : Claudio Morgado de Souza
// Data : 08/09/2002
// Função : Demonstração para o programa VisuAlg, usando a estrutura
// escolha...caso...fimescolha
// Autor : Claudio Morgado de Souza
// Data : 13/04/2003
// Seção de Declarações
var
 x : caracter
 y,d : inteiro
inicio
// Seção de Comandos
escreval("Programa de Conversão Decimal para Hexadecimal")
escreva("Entre com um número inteiro:")
leia(y)
d <- y
se y < 0 entao
 y <- 65536 + y
fimse
enquanto y > 0 faca
 escolha y mod 16
 caso 0
 x <- "0" + x
 caso 1
 x <- "1" + x
 caso 2
 x <- "2" + x
 caso 3
 x <- "3" + x
 caso 4
 x <- "4" + x
 caso 5
 x <- "5" + x
 caso 6
 x <- "6" + x
 caso 7
 x <- "7" + x
 caso 8
 x <- "8" + x
 caso 9
 x <- "9" + x
 caso 10
 x <- "A" + x
 caso 11
 x <- "B" + x
 caso 12
 x <- "C" + x
 caso 13
 x <- "D" + x
 caso 14
 x <- "E" + x
 caso 15
 x <- "F" + x
 fimescolha
 y <- y div 16
fimenquanto
escreval( "A representação hexadecimal de", d, " é ", x,"h")
fimalgoritmo
VISUALG3/Exemplos/escolha.alg
Algoritmo "semnome"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Função :
// Autor : Cláudio
// Data : 29/12/2003
// Seção de Declarações 
var
nota : inteiro
inicio
 escreva("Entre com a nota do aluno:")
 leia(nota)
 escolha nota
 caso 0,1,2,3
 escreval("Reprovado.")
 caso 5 ate 7, 4
 // A lista não precisa estar em uma ordem específica
 // Só na cláusula ATE o primeiro valor precisam ser menor que o segundo
 escreval("Em final.")
 caso 8 ate 10
 escreval("Aprovado")
 outrocaso
 escreval("Nota inválida.")
 fimescolha
fimalgoritmo
VISUALG3/Exemplos/estcivil.alg
Algoritmo "estcivil"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Algoritmo : ESTCIVIL
// Função : Calcula a distribuição dos estados civis numa lista de 20 valores
// O estado civil está codificado da seguinte maneira:
// C - Casado, S - Solteiro, V - Viúvo
// Exemplifica o uso do comando escolha...caso...fimescolha
// Autor : Cláudio morgado de Souza
// Data : 14/09/2002
// Seção de Declarações 
var
 ec : caracter
 x,cs,cc,cv : numerico
inicio
// Seção de Comandos
cs <- 0
cv <- 0
cc <- 0
para x de 1 ate 20 faca
 repita
 escreva("Item ",x," Estado Civil (s/c/v):")
 leia(ec)
 ate (ec="s") ou (ec="c") ou (ec="v")
 escolha ec
 caso "c"
 cc <- cc + 1
 caso "s"
 cs <- cs + 1
 outrocaso
 cv <- cv + 1
 fimescolha
fimpara
escreval("Solteiros : ", cs)
escreval("Casados : ", cc)
escreval("Viúvos : ", cv)
fimalgoritmo
VISUALG3/Exemplos/EXEMPLO1.alg
Algoritmo "EXMPLO1"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Professor : Antonio Carlos Nicolodi 
// Função :
// Autor : Antonio
// Data : 01/06/2015
var
// Seção de Declarações das variáveis 
 A,B,C,X,J,K,TEMP : INTEIRO
 XVET : VETOR[1..3] DE CARACTER
inicio
// Seção de Comandos, procedimento, funções, operadores, etc... 
 ESCREVAL("Digite 3 numeros inteiro!")
 ESCREVA("Primeiro numero: ")
 LEIA(A)
 ESCREVA("Segundo numero: ")
 LEIA(B)
 ESCREVA("Terceiro numero: ")
 LEIA(C)
 
 xvet[1] := A
 xvet[2] := B
 xvet[3] := C
 PARA J DE 1 ATÉ 3 FAÇA
 PARA K DE J ATÉ 3 FAÇA
 SE xvet[J] > xvet[K] ENTÃO
 TEMP := xvet[J]
 xvet[J] := xvet[K]
 xvet[K] := TEMP
 FIMSE
 FIMPARA
 FIMPARA
 ESCREVAL("ESCOLHA AS OPÇOES ABAIXO")
 ESCREVAL("1 - ORDEM CRESCENTE")
 ESCREVAL("2 - ORDEM DECRESCENTE")
 ESCREVAL("3 - ORDEM DE ENTRADA")
 ESCREVA("Digite: ")
 LEIA(X)
 SE X >= 1 E X <= 3 ENTÃO
 SE X = 1 ENTÃO
 ESCREVAL("ORDEM ALFABÉTICA CRESCENTE !!!")
 PARA J DE 1 ATÉ 3 FAÇA
 ESCREVAL(J," VALOR ",xvet[J])
 FIMPARA
 FIMSE
 SE X = 2 ENTÃO
 ESCREVAL("ORDEM ALFABÉTICA DECRESCENTE !!!")
 PARA J DE 3 ATÉ 1 PASSO -1 FAÇA
 ESCREVAL(J," VALOR ",xvet[J])
 FIMPARA
 FIMSE
 SE X = 3 ENTÃO
 ESCREVAL("ORDEM DE ENTRADA !!!")
 ESCREVAL(1," VALOR ",A)
 ESCREVAL(2," VALOR ",B)
 ESCREVAL(3," VALOR ",C)
 FIMSE
 FIMSE
fimalgoritmo
VISUALG3/Exemplos/EXEMPLO1.alg.ALG
algoritmo "EXMPLO1"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Professor : Antonio Carlos Nicolodi
// Função :
// Autor : Antonio
// Data : 01/06/2015
var
// Seção de Declarações das variáveis 
 A,B,C,TEMP : REAL
 X,J,K : INTEIRO
 XVET : VETOR[1..3] DE REAL
inicio
// Seção de Comandos, procedimento, funções, operadores, etc... 
 ESCREVAL("Digite 3 numeros inteiro!")
 ESCREVA("Primeiro numero: ")
 LEIA(A)
 ESCREVA("Segundo numero: ")
 LEIA(B)
 ESCREVA("Terceiro numero: ")
 LEIA(C)
 
 xvet[1] := A
 xvet[2] := B
 xvet[3] := C
 PARA J DE 1 ATÉ 3 FAÇA
 PARA K DE J ATÉ 3 FAÇA
 SE (xvet[J] > xvet[K]) ENTÃO
 TEMP := xvet[J]
 xvet[J] := xvet[K]
 xvet[K] := TEMP
 FIMSE
 FIMPARA
 FIMPARA
 ESCREVAL("ESCOLHA AS OPÇOES ABAIXO")
 ESCREVAL("1 - ORDEM CRESCENTE")
 ESCREVAL("2 - ORDEM DECRESCENTE")
 ESCREVAL("3 - ORDEM DE ENTRADA")
 ESCREVA("Digite: ")
 LEIA(X)
 SE (X >= 1) E (X <= 3) ENTÃO
 SE (X = 1) ENTÃO
 ESCREVAL("ORDEM ALFABÉTICA CRESCENTE !!!")
 PARA J DE 1 ATÉ 3 FAÇA
 ESCREVAL(J," VALOR ",xvet[J])
 FIMPARA
 FIMSE
 SE (X = 2) ENTÃO
 ESCREVAL("ORDEM ALFABÉTICA DECRESCENTE !!!")
 PARA J DE
3 ATÉ 1 PASSO -1 FAÇA
 ESCREVAL(J," VALOR ",xvet[J])
 FIMPARA
 FIMSE
 SE (X = 3) ENTÃO
 ESCREVAL("ORDEM DE ENTRADA !!!")
 ESCREVAL(1," VALOR ",A)
 ESCREVAL(2," VALOR ",B)
 ESCREVAL(3," VALOR ",C)
 FIMSE
 FIMSE
fimalgoritmo
VISUALG3/Exemplos/EXTENSO4.ALG
algoritmo "Extenso4"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Professor: Antonio Carlos Nicolodi
// Função: Calcula os passos de um caracol para subir o poço
// Autor : Antonio Carlos Nicolodi
// Data : 20/04/2015 
var
 ate20: vetor[1..19] de literal
 dezena: vetor[1..9] de literal
 centena: vetor[1..9] de literal
 Milhar: vetor[1..3] de literal
 XPARTES: vetor[1..4] de literal
 MONTAGEM, XPRIM, XSECN, XTERC, XDECIMAL, STRING: Caracter
 xval, i, x, valor, XCOMPt: Inteiro
inicio
 Textos <- ""
 Escreva("Informe o valor: ")
 leia (valor)
 STRING := NUMPCARAC(VALOR)
 XCOMPt := COMPR(VALOR)
 XVAL := 11 - XCOMPt
 xdecimal := DECIMAL(STRING)
 STRING := ESPACO(XVAL)+STRING
 MONTAGEM := ""
 XPRIM := COPIA(STRING,1,3) // CENTENAS/DEZENA/UNIDADE DE MILHOES
 XSECN := COPIA(STRING,1,3) // CENTENAS/DEZENA/UNIDADE DE MILHARES
 XTERC := COPIA(STRING,1,3) // CENTENAS/DEZENA/UNIDADE DE UNIDADE
 
 xPARTES[1] := XPRIM
 xPARTES[2] := XSECN
 xPARTES[3] := XTERC
 xPARTES[4] := XDECIMAL
 PARA I DE 1 TO 4 FACA
 SE (nao Vazio(xprim)) entao
 X := 1
 ENQUANTO (X < 4) FACA
 CAR := COPIA(XPRIM,X,1)
 Escolha X
 Caso 1:
 SE (E_NUM(CAR) E (X = 1)) ENTAO
 Ccc := CaracpNum(Car)
 Car := Centena[Ccc]
 FIMSE
 Montagem1 := Montagem1 + Car
 X := X + 1
 FIMENQUANTO
 Escreval(Textos)
fimalgoritmo
 
 
// FUNCOES GERAIS
Funcao Vazia(STRING : caracter) : logico
Var
 sVAZ : caracter
 nVAZ : inteiro
 vVAZ : logico
inicio
 vVAZ <- Falso
 sVAZ <- STRING
 sVAZ <- Ltrim(Rtrim(sVAZ))
 nVAZ <- Compr(sVAZ)
 se nVAZ = 0 entao
 vVAZ <- Verdadeiro
 fimse
Retorne vVAZ
Fimfuncao
Funcao E_Num(String: Caracter) : Logico
Var xpos : Inteiro
 xverd: Logico
 indx : Caracter
Inicio
 se Compr(String) < 1 entao
 String := " "
 fimse
 xpos := 0
 xverd := Falso
 indx := "0123456789"
 xpos := POS(String,indx)
 se xpos > 0 entao
 xverd := Verdadeiro
 fimse
Retorne xverd
Fimfuncao
//
Funcao Espaco(Qtde: Inteiro) : Caracter
Var xCar : caracter
 indx : Inteiro
Inicio
 se Qtde < 1 entao
 Qtde := 1
 fimse
 xCar := ""
 Para indx de 1 ate Qtde faca
 xCar := xCar + " "
 Fimpara
Retorne xCar
Fimfuncao
Funcao Decimal(Valor: Caracter) : Caracter
Var xCar, xRET : caracter
 indx : Inteiro
 R_Valor, R_V: Real
Inicio
 se Vazio(Valor) entao
 XRET := "00"
 fimse
 xCar := ""
 R_valor := CaracpNum(Valor)
 indx := Int(R_valor)
 R_v := Int(((R_valor - indx)+0.001)*100)/100
 xRet := NumpCarac(R_v)
Retorne xRet
Fimfuncao
// FUNCAO EXCLUSIVA DESSE PROGRAMA
Funcao AbaixoMil(Valor: Real ) : Caracter
Var
 xcomp : inteiro
 xtext_vazio : Logico
Inicio
 xtext_vazio <- Falso
 Val <- Int(Valor)
 xcomp <- compr(Textos)
 se xcomp = 0 entao
 xtext_vazio <- Verdadeiro
 fimse
 se val = 0 entao
 se nao MaiorQ entao
 Textos <- "Zero"
 fimse
 senao
 se ((Val > 0) e (val < 20)) entao
 se val = 1 entao
 se nao MaiorQ entao
 Textos <- "Hum"
 senao
 se nao xtext_vazio entao
 Textos <- Textos+" e um"
 senao
 Textos <- " um"
 fimse
 fimse
 senao
 se nao xtext_vazio entao
 Textos <- Textos + " e " + ate20[val]
 senao
 Textos <- ate20[val]
 fimse
 val <- p - val
 fimse
 senao
 se (val < 100) entao
 i <- Int(val / 10)
 Textos <- Textos + dezena[i]
 val <- Int(val % 10)
 se (val > 0) entao
 se nao xtext_vazio entao
 Textos <- Textos + " e " + ate20[val]
 senao
 Textos <- ate20[val]
 fimse
 fimse
 senao
 se (val = 100) entao
 Textos <- "Cem"
 senao
 i <- Int(val / 100)
 se i > 0 entao
 Textos <- centena[i]
 xmul <- Int(val - (i * 100))
 val <- xmul
 i <- Int(val / 10)
 se i > 0 entao
 xmul <- Int(val - (i * 10))
 se nao xtext_vazio entao
 Textos <- Textos + " e " + ate20[val]
 senao
 Textos <- ate20[val]
 fimse
 val <- xmul
 se (val > 0) entao
 se nao xtext_vazio entao
 Textos <- Textos + " e " + ate20[val]
 senao
 Textos <- ate20[val]
 fimse
 fimse
 fimse
 fimse
 fimse
 fimse
 fimse
 fimse
Retorne Textos
Fimfuncao
// ate20[0] <- "zero"
 ate20[1] <- "um"
 ate20[2] <- "dois"
 ate20[3] <- "três"
 ate20[4] <- "quatro"
 ate20[5] <- "cinco"
 ate20[6] <- "seis"
 ate20[7] <- "sete"
 ate20[8] <- "oito"
 ate20[9] <- "nove"
 ate20[10] <- "dez"
 ate20[11] <- "onze"
 ate20[12] <- "doze"
 ate20[13] <- "treze"
 ate20[14] <- "quatorze"
 ate20[15] <- "quinze"
 ate20[16] <- "dezesseis"
 ate20[17] <- "dezessete"
 ate20[18] <- "dezoito"
 ate20[19] <- "dezenove"
 dezena[1] <- "dez"
 dezena[2] <- "vinte"
 dezena[3] <- "trinta"
 dezena[4] <- "quarenta"
 dezena[5] <- "cinquenta"
 dezena[6] <- "sessenta"
 dezena[7] <- "setenta"
 dezena[8] <- "oitenta"
 dezena[9] <- "noventa"
 centena[1] <- "Cento"
 centena[2] <- "Duzentos"
 centena[3] <- "trezentos
 centena[4] <- "quatrocentos"
 centena[5] <- "quinhentos"
 centena[6] <- "seiscentos"
 centena[7] <- "setecentos"
 centena[8] <- "oitocentos"
 centena[9] <- "novecentos"
// CENTAVOS ,99
 Milhar[1] <- "mil" // 999
 Milhar[2] <- "milhão" // 999.999
 Milhar[3] <- "Bilhão" // 999.999.999
VISUALG3/Exemplos/fatorial.alg
Algoritmo "semnome"
// Função : Demonstrar a capacidade de recursividade do Visualg versão 3.03
// bem como o uso de variáveis locais
// Autor : Cláudio Morgado de Souza
// Data : 29/12/2003
// Seção de Declarações 
var valor : inteiro
procedimento obtervalor
var x : inteiro
inicio
escreva("Digite um número:")
leia(x)
valor <- x
fimprocedimento
funcao fatorial(v:inteiro) : inteiro
inicio
se v <= 2 entao
 retorne v
senao
 retorne v * fatorial(v-1)
fimse
fimfuncao
inicio
// Corpo principal do programa
obtervalor
escreva("O fatorial de ",valor," é ",fatorial(valor))
fimalgoritmo
VISUALG3/Exemplos/fatorial2.alg
Algoritmo "semnome"
// Função : Demonstrar a capacidade de recursividade do Visualg versão 3.03
// bem como o uso parametros passados por referencia
// Autor : Cláudio Morgado de Souza
// Data : 29/12/2003
// Seção de Declarações 
var valor : inteiro
procedimento obtervalor(var x : inteiro)
inicio
escreva("Digite um número:")
leia(x)
fimprocedimento
funcao fatorial(v:inteiro) : inteiro
inicio
se v <= 2 entao
 retorne v
senao
 retorne v * fatorial(v-1)
fimse
fimfuncao
inicio
// Corpo principal do programa
obtervalor(valor)
escreva("O fatorial de ",valor," é ",fatorial(valor))
fimalgoritmo
VISUALG3/Exemplos/inssort.alg
algoritmo "sort_insercao"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Função : Algoritmo de SORT por inserção
// Autor : Cláudio Morgado de Souza
// Data : 7/6/2003
// Seção de Declarações 
var
 v : vetor [1..20] de inteiro
 j,k,i,temp : inteiro
inicio
// Seção de Comandos
 aleatorio 1,100
 eco off
 para j de 1 ate 20 faca
 leia(v[j])
 fimpara
 para j de 1 ate 19 faca
 k <- j
 para i de (j+1) ate 20 faca
 se v[i] < v[k] entao
 k <- i
 fimse
 fimpara
 se k > j entao
 temp <- v[j]
 v[j] <- v[k]
 v[k] <- temp
 fimse
 fimpara
 para j de 1 ate 20 faca
 escreval(v[j])
 fimpara
fimalgoritmo
VISUALG3/Exemplos/interrompa.alg
Algoritmo "interrompa"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Função : Demonstrar o uso dos comandos interrompa e fimrepita
// Autor :
// Data : 04/01/2004
// Seção de Declarações 
var x : inteiro
inicio
x <- 0
repita
 x <- x + 1
 escreva(x)
 se x = 10 entao
 interrompa // não estruturado, mas usado por alguns autores...
 fimse
fimrepita
escreval()
// O trecho acima é o mesmo que:
x <- 0
repita
 x <- x + 1
 escreva(x)
ate x = 10
fimalgoritmo
VISUALG3/Exemplos/Jogo_velha.alg
Algoritmo "semnome"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Data : 24/4/2015
// Seção de Declarações
var
i,xc,xl : inteiro
l,f : logico
s,x,xcl : caracter
A11,A12,A13,A21,A22,A23,A31,A32,A33 : LITERAL
Funcao Randomico(Num : inteiro) : Inteiro
VAR
 Ds : Inteiro
Inicio
ECO OFF
Aleatorio on
Aleatorio 1,3
Leia(Ds)
Aleatorio off
Retorne Ds
ECO ON
Fimfuncao
Procedimento Erro
Var
D : Literal
Inicio
Escreval("Campo já está ocupado !!!")
Leia(D)
FimProcedimento
Procedimento Acha_O
Var
Inicio
Enquanto f faca
 xcl <- ""
 i <- 3
 xc <- i
 xcl <- xcl + Numpcarac(i)
 i <- 3
 xl <- i
 xcl <- xcl + Numpcarac(i)
 S <- xcl
 x <- "O"
 se S = "11" entao
 se A11 = "_" entao
 A11 <- X
 f <- Falso
 fimse
 fimse
 se S = "12" entao
 se A12 = "_" entao
 A12 <- X
 f <- Falso
 fimse
 fimse
 se S = "13" entao
 se A13 = "_" entao
 A13 <- X
 f <- Falso
 fimse
 fimse
 se S = "21" entao
 se A21 = "_" entao
 A21 <- X
 f <- Falso
 fimse
 fimse
 se S = "22" entao
 se A22 = "_" entao
 A22 <- X
 f <- Falso
 fimse
 fimse
 se S = "23" entao
 se A23 = "_" entao
 A23 <- X
 f <- Falso
 fimse
 fimse
 se S = "31" entao
 se A31 = "_" entao
 A31 <- X
 f <- Falso
 fimse
 fimse
 se S = "32" entao
 se A32 = "_" entao
 A32 <- X
 f <- Falso
 fimse
 fimse
 se S = "33" entao
 se A33 = "_" entao
 A33 <- X
 f <- Falso
 fimse
 fimse
fimenquanto
Fimprocedimento
Procedimento Mostra_tela
Var
Inicio
 limpatela
 Escreval(" Jogo da Velha em visualG ")
 Escreval(" ")
 Escreval(" ")
 Escreval(" 1 2 3 ")
 Escreval(" +-----+------+------+")
 Escreval("1 | ",A11," | ",A12," | ",A13," |")
 Escreval(" |-----+------+------|")
 Escreval("2 | ",A21," | ",A22," | ",A23," |")
 Escreval(" |-----+------+------|")
 Escreval("3 | ",A31," | ",A32," | ",A33," |")
 Escreval(" |-----+------+------|")
 Escreval(" ")
 Escreval(" ")
 Escreva(" Digite a linha e coluna: ")
FimProcedimento
inicio
// Seção de Comandos
l <- verdadeiro
A11 <- "_"
A12 <- "_"
A13 <- "_"
A21 <- "_"
A22 <- "_"
A23 <- "_"
A31 <- "_"
A32 <- "_"
A33 <- "_"
f <- Falso
enquanto l faca
 f <- (nao f)
 Acha_O
 Mostra_tela
 
 Leia(s)
 SE Compr(S) = 1 entao
 se (S = "F") entao
 l <- Falso
 Interrompa
 fimse
 senao
 SE Compr(S) = 2 entao
 se S = "11" entao
 se A11 = "_" entao
 A11 <- "X"
 senao
 Erro
 fimse
 fimse
 se S = "12" entao
 // A12 <- "X"
 se A12 = "_" entao
 A12 <- "X"
 senao
 Erro
 fimse
 fimse
 se S = "13" entao
 // A13 <- "X"
 se A13 = "_" entao
 A13 <- "X"
 senao
 Erro
 fimse
 fimse
 se S = "21" entao
 // A21 <- "X"
 se A21 = "_" entao
 A21 <- "X"
 senao
 Erro
 fimse
 fimse
 se S = "22" entao
 // A22 <- "X"
 se A22 = "_" entao
 A22 <- "X"
 senao
 Erro
 fimse
 fimse
 se S = "23" entao
 // A23 <- "X"
 se A23 = "_" entao
 A23 <- "X"
 senao
 Erro
 fimse
 fimse
 se S = "31" entao
 // A31 <- "X"
 se A31 = "_" entao
 A31 <- "X"
 senao
 Erro
 fimse
 fimse
 se S = "32" entao
 // A32 <- "X"
 se A32 = "_" entao
 A32 <- "X"
 senao
 Erro
 fimse
 fimse
 se S = "33" entao
 // A33 <- "X"
 se A33 = "_" entao
 A33 <- "X"
 senao
 Erro
 fimse
 fimse
 fimse
 Fimse
 Escreval(" ")
 Escreval(" ")
 Escreval(" ")
 Escreval(" escolha <Ann> ou <Bnn> ou <<F> para finalizar>")
fimenquanto
fimalgoritmo
VISUALG3/Exemplos/mediaar.alg
Algoritmo "mediaarit"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Algoritmo : MEDIA ARITMETICA (O famoso...)
// Função : Demonstração para o programa VisuAlg
// Autor : Cláudio M. de Souza
// Data : 08/09/2002// Seção de Declarações
var
 V1, V2, Media : real ;
inicio
// Seção de Comandos
// Se quiser usar valores fracionários, use , ou . para separar as casas
// decimais de acordo com a configuração de seu computador.
escreva("Qual o primeiro valor? ")
leia(V1)
escreva("Qual o segundo valor? ")
leia(V2)
Media <- (V1+V2) / 2
escreval("A média aritmetica é : ", Media : 10:3)
fimalgoritmo
VISUALG3/Exemplos/media_aluno.alg
algoritmo "semnome"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Professor: Antonio Carlos Nicolodi
// Autor : Marcio Roberto Cordeiro
// Data : 30/6/2004
// Seção de Declarações 
var
 nome_aluno : caracter
 n1,n2,n3,n4 : real
 soma : real
 media : real
inicio
 escreva("Digite o Nome do Aluno: ")
 leia(nome_aluno)
 escreva("Digite a primeira nota: ")
 leia(n1)
 escreva("Digite a segunda nota: ")
 leia(n2)
 escreva("Digite a terceira nota: ")
 leia(n3)
 escreva("Digite a quarta nota: ")
 leia(n4)
 soma <-(n1+n2+n3+n4)
 media<-(soma/4)
 escreva(media)
fimalgoritmo
VISUALG3/Exemplos/menorde3.alg
Algoritmo "menorde3"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Algoritmo : MENOR DE 3 USANDO 2 VARIÁVEIS (!)
// Função : Demonstração para o programa VisuAlg 3.03
// Autor : Cláudio M. de Souza
// Data : 09/09/2002// Seção de Declarações 
var Menor, V1 : real
inicio
// Seção de Comandos 
escreval( "Este programa calcula o menor de três números digitados.")
escreva("Qual o
primeiro valor ? ")
leia(Menor)
escreva("Qual o segundo valor ? ")
leia(V1)
se V1 < Menor entao
 Menor <- V1
fimse
escreva("Qual o terceiro valor ? ")
leia(V1)
se V1 < Menor entao
 Menor <- V1
fimse
escreval( "O menor valor digitado foi : " , Menor)
fimalgoritmo
VISUALG3/Exemplos/MENU_COM_CASE.alg
Algoritmo "TESTA_CASO"
// Disciplina : [Linguagem e Lógica de Programação]
// Professor(a): Antonio Carlos Nicolodi
// Descrição : Programa usado para testar ESCOLHA .. FAÇA .. CASO .. OUTROCASO .. FIMESCOLHA
// : PARA QUE FUNCIONE USE COM VARIÁVEIS DO TIPO "CARACTER" NA OPÇÃO.
// Autor(a) : TODOS OS ALUNOS DO BRASIL E DO MUNDO...
// Data atual : 18/08/2015
Var
 // Seção de Declarações das variáveis
 opcao : Caracter // Opção de escolha
 X,FLAG: LOGICO // variáveis de controle
Procedimento Inclusao
Inicio
 Escreval("Inclusão")
 Escreva("tecle <enter>")
 LEIA(X)
FimProcedimento
Procedimento Consulta
Inicio
 Escreval("Consulta")
 Escreva("tecle <enter>")
 LEIA(X)
FimProcedimento
Procedimento Exclusao
Inicio
 Escreval("Exclusão")
 Escreva("tecle <enter>")
 LEIA(X)
FimProcedimento
Procedimento Alterar
Inicio
 Escreval("Alterar")
 Escreva("tecle <enter>")
 LEIA(X)
FimProcedimento
Inicio
 // Seção de Comandos, procedimento, funções, operadores, etc...
X := VERDADEIRO
FLAG <- X
ENQUANTO FLAG FAÇA
 X := VERDADEIRO
 MUDACOR("Amarelo","FRENTE")
 limpatela
 Escreval("*** Menu ***")
 Escreval("1 - Inclusão")
 Escreval("2 - Consulta")
 Escreval("3 - Exclusão")
 Escreval("4 - Alterar ")
 Escreval("5 - Finaliza")
 Escreval(" ")
 Escreva("Digite a opção:")
 Leia(opcao)
 Escolha opcao
 Caso "1"
 Inclusao // chama o procedimento
 Caso "2"
 Consulta // chama o procedimento
 Caso "3"
 Exclusao // chama o procedimento
 Caso "4"
 Alterar // chama o procedimento
 Caso "5"
 FLAG := FALSO // muda a variável do controle para encerrar o loop
 OUTROCASO // caso a variável tenha algum valor acima de 5 ou abaixo de 1 
 Escreval("Opção inválida")
 Escreva("tecle <enter>")
 LEIA(X)
 Fimescolha
 
FIMENQUANTO
Fimalgoritmo
VISUALG3/Exemplos/Nome_inverso.alg
Algoritmo "Invertenome"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Professor: Antonio Carlos Nicolodi
// Função: Calcula os passos de um caracol para subir o poço
// Autor : Antonio Carlos Nicolodi
// Data : 05/04/2015 // Função :
// Autor :
// Data : 09/04/2015
// Seção de Declarações 
var
 s,c : caracter
 i,x : inteiro
inicio
// Seção de Comandos 
 Escreva("Digite um nome : ")
 Leia(s)
 x <- compr(s)
 c <- ""
 para i de x ate 1 passo -1 faca
 c <- c + copia(s,i,1)
 fimpara
 Escreva(" ")
 Escreval(c)
fimalgoritmo
VISUALG3/Exemplos/PADRAO.ALG
Algoritmo "PADRAO.ALG"
// Disciplina : [Linguagem e Lógica de programaçao]
// Professor(a): Antonio Carlos Nicolodi
// Descrição : Escreva um padrão de asteriscos na tela
// Autor(a) : para a aluna "Ingrid Oliveira"
// Data atual : 25/06/2015
Var
 // Seção de Declarações das variáveis
 X,Y,I,P : inteiro
 xMat : VETOR[1..4] de caracter
 xFLAG1,xFLAG2 : logico
 xTECLA : caracter
 xPADRAO: caracter
INICIO
// Seção de Comandos, procedimento, funções, operadores, etc...
 xFLAG1 := VERDADEIRO
 ENQUANTO xFLAG1 FAÇA
 LIMPATELA
 ESCREVAL("Digite um padrão de asteriscos na tela")
 ESCREVAL(" ")
 xFLAG2 := VERDADEIRO
 I := 1
 ENQUANTO xFLAG2 FAÇA
 ESCREVAL(" ")
 Escreva("Digite o ",I,"º padrão: ")
 LEIA(P)
 SE (P < 0) ENTÃO
 xFLAG2 := FALSO
 FIMSE
 xPadrao:= ""
 PARA Y := 1 ATÉ P FAÇA
 xPadrao := xPadrao + "*" // preenche a variável
 FIMPARA
 xMat[I]:= xPadrao // guarda a variável no vetor
 I := I + 1
 SE I > 3 ENTÃO
 xFLAG2 := FALSO
 FIMSE
 FIMENQUANTO
 
 LIMPATELA
 ESCREVAL(" ")
 ESCREVAL(" ============================== ")
 ESCREVAL(" ")
 PARA X := 1 ATÉ I-1 FAÇA
 P := compr(XMAT[X])
 ESCREVAL(" Padrão : ",P:2," = ",xMat[X])
 FIMPARA
 ESCREVAL(" ")
 ESCREVA("Continua? <S/N> ")
 LEIA(xTECLA)
 SE ((xTECLA = "n") OU (xTECLA = "N")) ENTÃO
 xFLAG1 := FALSO
 SENÃO
 XFLAG1 := VERDADEIRO
 FIMSE
 FIMENQUANTO
fimAlgoritmo
VISUALG3/Exemplos/PADRAO_velho.ALG
Algoritmo "PADRAO"
// Disciplina : [Linguagem e Lógica de programaçao]
// Professor(a):
// Descrição : Aqui você descreve o que o programa faz! (função)
// Autor(a) : Nome do(a) aluno(a)
// Data atual : 25/06/2015
Var
 // Seção de Declarações das variáveis
 X,Y,I,P : inteiro
 xmat : VETOR[1..31] de caracter
 FLAG1,FLAG2 : logico
 TECLA : caractere
 
INICIO
 // Seção de Comandos, procedimento, funções, operadores, etc...
 FLAG1 := VERDADEIRO
 ENQUANTO FLAG1 FAÇA
 LIMPATELA
 ESCREVAL("Digite um padrão de asteriscos na tela")
 ESCREVAL(" ")
 FLAG2 := VERDADEIRO
 I := 1
 ENQUANTO FLAG2 FAÇA
 ESCREVAL(" ")
 Escreva("Digite o ",I,"º padrão: ")
 LEIA(XMAT[I])
 SE (XMAT[I] < 0 ENTÃO
 FLAG2 := FALSO
 FIMSE
 I := I + 1
 SE I > 30 ENTÃO
 FLAG2 := FALSO
 FIMSE
 FIMENQUANTO
 LIMPATELA
 ESCREVAL(" ")
 ESCREVAL(" ============================== ")
 ESCREVAL(" ")
 PARA X := 1 ATÉ I FAÇA
 P := XMAT[X]
 ESCREVAL(" Padrão : ")
 PARA Y := 1 ATÉ P FAÇA
 ESCREVA("*")
 FIM
 ESCREVA(" => ",P)
 FIMPARA
 ESCREVAL(" ")
 ESCREVA("Continua? <S/N> ")
 LEIA(TECLA)
 SE (TECLA = "n" OU TECLA = "N" ENTÃO
 FLAG1 := FALSO
 FIMSE
 FIMENQUANTO
fimAlgoritmo
VISUALG3/Exemplos/passo.alg
Algoritmo "semnome"// Disciplina: [Linguagem e Lógica de programaçao] 
// Professor: Antonio Carlos Nicolodi
// Função : Ilustrar o uso do comando para..faca com cláusula PASSO
// Autor :
// Data : 18/11/2002
// Seção de Declarações 
var x : inteiro
inicio
// Seção de Comandos
para x de 10 ate 1 passo -1 faca
 escreval(x)
fimpara
fimalgoritmo
VISUALG3/Exemplos/randomicos.alg
Algoritmo "semnome"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Professor: Antonio Carlos Nicolodi
// Autor : Cláudio
// Data : 21/06/2015
// Seção de Declarações 
var
 i : inteiro
 x : real
 matriz : vetor[1..10] de real
inicio
// Seção de Comandos 
i := 1
repita
 x := randi(100)
 matriz[i] := x
 i := i + 1
ate i = 10
fimalgoritmo
VISUALG3/Exemplos/randomicos.alg.ALG
Algoritmo "semnome"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Professor: Antonio Carlos Nicolodi
// Função: Calcula os passos de um caracol para subir o poço
// Autor : Antonio 
// Data : 21/06/2015
// Seção de Declarações 
var
 i : inteiro
 x : real
 matriz : vetor[1..11] de real
inicio
// Seção de Comandos 
i := 1
repita
 x := randi(10)
 matriz[i] := x
 i := i + 1
ate i >= 10
para i de 1 ate 10 faca
 escreval(matriz[i])
fimpara
fimalgoritmo
VISUALG3/Exemplos/rqpaprox.alg
Algoritmo "RQPAprox"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Função :Raiz quadrada por aproximação
// Autor : Cláudio
// Data : 12/09/2002
// Seção de Declarações
var
 x, raiz, li, ls, mult, dif : real
inicio
// Seção de Comandos
escreva("Digite um numero maior que um : ")
leia(x)
se x > 1 entao
 li <- 0
 ls <- x
 raiz <- (li+ls) / 2
 mult <- raiz * raiz
 dif <- x - mult
 se dif < 0 entao
 dif <- -dif
 fimse
enquanto dif > 0.00001 faca
 se mult > x entao
 ls <- raiz
 senao
 li <- raiz
 fimse
 raiz <- (li+ls) / 2
 mult <- raiz * raiz
 dif <- x - mult
 se dif < 0 entao
 dif <- -dif
 fimse
 fimenquanto
 escreval("A raiz quadrada calculada de ", x : 10: 5 , " é ", raiz : 10 : 5 )
 escreval("A função raiz quadrada de ", x : 10: 5 , " é ", raizq(x) : 10 : 5 )
senao
 escreval("Falei maior que um... ")
fimse
fimalgoritmo
VISUALG3/Exemplos/Tabela_ASCII4.alg
Algoritmo "Tabela_ASCII"
// Disciplina: [Linguagem e Lógica de programaçao] 
// Professor: Antonio Carlos Nicolodi
// Autor : Antonio 
// Função : Monta e mostra uma tabela ASCII (com números em
// decimais / Hexadecimais / Binários / Octais e os Caracteres
// Data : 10/4/2015
// Seção de Declarações 
var
 xvet : Vetor[1..255] de caracter
 i : inteiro
 xcar,xs,xcf,xE : caracter
 xo,xh,xb : caracter
// funções (não Pré-definas) ou User Define Functions 
// em portugues: Funções Definidas pelo Usuário (programador da linguagem)
// funções e procedimentos UDFs do programa
// FUNÇÕES GERAIS PARA TODOS OS PROGRAMAS 
// retorna uma string com qqer caracteres na quantidade passada
Funcao Replicar(STRING : caracter; QTDE : inteiro) : caracter 
 var
 iREP : inteiro
 xREP : caracter
 inicio
 xREP <- ""
 para iREP de 1 ate QTDE faca
 xREP <- xREP + STRING
 fimpara
 Retorne xREP
Fimfuncao
// retorna uma string com caracteres "0" na quantidade passada
Funcao Zeros(QTDE : inteiro) : caracter
var
 iZER : inteiro
 rZER : Caracter
inicio
 rZER <- ""
 para iZER de 1 ate QTDE faca
 rZER <- rZER + "0"
 fimpara
 Retorne rZER
Fimfuncao
// retorna uma string c/ todos da Esquerda p/ Direita
Funcao Esquerda(STRING : caracter; QTDE : inteiro) : caracter 
var
 iESQ,xESQ : inteiro
 sESQ,cESQ : caracter
inicio
 xESQ <- Compr(cESQ)
 se QTDE > xESQ entao
 QTDE <- xESQ
 fimse
 sESQ <- ""
 para iESQ de 1 ate xESQ faca
 cESQ <- copia(STRING,iESQ,1)
 sESQ <- sESQ + cESQ
 QTDE <- QTDE - 1
 se QTDE < 1 entao
 interrompa
 fimse
 fimpara
 Retorne sESQ
Fimfuncao
// retorna uma string c/ todos da Direita p/ Esquerda
Funcao Direita(STRING : caracter; QTDE : inteiro) : caracter 
var
 iDIR,xDIR : inteiro
 sDIR,cDIR : caracter
inicio
 xDIR <- Compr(STRING)
 se QTDE > xDIR entao
 QTDE <- xDIR
 fimse
 sDIR <- ""
 para iDIR de xDIR ate 1 passo -1 faca
 cDIR <- copia(STRING,iDIR,1)
 sDIR <- cDIR + sDIR
 QTDE <- QTDE - 1
 se QTDE < 1 entao
 interrompa
 fimse
 fimpara
 Retorne sDIR
Fimfuncao
// retorna uma string compactada, retirando os espaços da Esquerda
Funcao Ltrim(STRING : caracter) : caracter
var
 iLTR,xLTR : inteiro
 sLTR,cLTR,eLTR : caracter
inicio
 xLTR <- Compr(STRING)
 sLTR <- ""
 iLTR <- 1
 eLTR <- Carac(32)
 cLTR <- copia(STRING,iLTR,1)
 Enquanto (cLTR = eLTR) faca
 iLTR <- iLTR + 1
 cLTR <- copia(STRING,iLTR,1)
 se iLTR > xLTR entao
 cLTR <- ""
 fimse
 Fimenquanto
 sLTR <- COPIA(STRING,iLTR,XLTR)
 Retorne sLTR
Fimfuncao
// retorna uma string compactada, retirando os espaços da Direita
Funcao Rtrim(STRING : caracter) : caracter
var
 iRTR,xRTR : inteiro
 sRTR,cRTR,eRTR : caracter
inicio
 xRTR <- Compr(STRING)
 sRTR <- ""
 iRTR <- 1
 eRTR <- Carac(32)
 cRTR <- copia(STRING,xRTR,iRTR)
 Enquanto (cRTR = eRTR) faca
 xRTR <- xRTR - 1
 cRTR <- copia(STRING,xRTR,iRTR)
 se xRTR < 1 entao
 cRTR <- ""
 fimse
 Fimenquanto
 sRTR <- COPIA(STRING,iRTR,XRTR)
 Retorne sRTR
Fimfuncao
// retorna uma string compactada, retirando os espaços da Direita e da Esq.
Funcao Alltrim(STRING : caracter) : caracter 
Var 
 sALL : caracter
inicio
 sALL <- STRING
 sALL <- Ltrim(Rtrim(sALL)) 
Retorne sALL
Fimfuncao
Funcao Vazia(STRING : caracter) : logico
Var 
 sVAZ : caracter
 nVAZ : inteiro
 vVAZ : logico
inicio
 vVAZ <- Falso
 sVAZ <- STRING
 sVAZ <- Ltrim(Rtrim(sVAZ)) 
 nVAZ <- Compr(sVAZ)
 se nVAZ = 0 entao
 vVAZ <- Verdadeiro
 fimse
Retorne vVAZ
Fimfuncao
// FUNÇÕES ESPECÍFICAS DESTE PROGRAMA 
// converte de decimal p/ Hexadecimal
Funcao Dec2Hex(STRING : caracter) : caracter 
var
 xHEX,letrasHEX,vHEX : caracter
 yHEX,dHEX,iHEX,mHEX,pHEX : inteiro
inicio
se Vazia(STRING) entao 
 yHEX <- 0
senao
 yHEX <- Caracpnum(STRING)
fimse
dHEX <- yHEX
letrasHEX <- "ABCDEF"
pHEX <- 0
vHEX <- ""
para iHEX de 1 ate 4 faca
 se yHEX > 0 entao
 mHEX <- (yHEX mod 16)
 se mHEX = 0 entao
 xHEX <- "0" + xHEX
 senao
 se mHEX > 9 entao
 pHEX <- (mHEX - 9)
 vHEX <- copia(letrasHEX,pHEX,1)
 xHEX <- vHEX + xHEX
 senao
 xHEX <- Numpcarac(mHEX)+xHEX
 fimse
 fimse
 yHEX <- yHEX div 16 //fimenquanto
 fimse
fimpara
Retorne xHEX
Fimfuncao 
// converte de decimal p/ Binario 
Funcao Dec2Bin(STRING : caracter) : caracter 
var
 xBIN : caracter
 yBIN,dBIN,iBIN,mBIN : inteiro
 
inicio
se Vazia(STRING) entao 
 yBIN <- 0
senao
 yBIN <- Caracpnum(STRING)
fimse
dBIN <- yBIN
para iBIN de 1 ate 9 faca
 se yBIN > 0 entao
 mBIN <- (yBIN mod 2)
 se mBIN = 0 entao
 xBIN <- "0" + xBIN
 senao
 xBIN <- "1" + xBIN
 fimse
 yBIN <- yBIN div 2
 fimse
fimpara
Retorne xBIN
Fimfuncao
// converte de decimal p/ Octal
Funcao Dec2Oct(String : caracter) : caracter 
var
 xOCT : caracter
 yOCT,dOCT,iOCT,mOCT : inteiro
 
inicio
se Vazia(STRING) entao 
 yOCT <- 0
senao
 yOCT <- Caracpnum(STRING)
fimse
dOCT <- yOCT
para iOCT de 1 ate 8 faca
 se yOCT > 0 entao
 mOCT <- (yOCT mod 8)
 se mOCT = 0 entao
 xOCT <- "0" + xOCT
 senao
 xOCT <- Numpcarac(mOCT) + xOCT
 fimse
 yOCT <- yOCT div 8
 fimse
fimpara
Retorne xOCT
Fimfuncao
// Seção de Comandos programa principal
inicio
 xo <- Replicar("0",3)
 xh <- Replicar("0",3)
 xb <- Replicar("0",8)
// monta o vetor com os 255 códigos em ASCII
 limpatela
 Escreval("=================================================")
 Escreval("================= A G U A R D E =================")
 Escreval("=================================================")
 Escreval(" ")
 para i de 1 ate 255 faca
 xcar <- "<Indisponível>"
 se i < 33 entao
 escolha i
 caso 8
 xcar <- ">Tecla TAB-><-"
 caso 9
 xcar <- ">Backspace<==="
 caso 10
 xcar <- "><Line feed ><"
 caso 13
 xcar <- ">Tecla <Enter>"
 caso 16
 xcar <- ">Seta Direita<"
 caso 17
 xcar <- ">Seta esquerda"
 caso 24
 xcar <- ">Seta Subir<|>"
 caso 25
 xcar <- ">Seta Descer<>"
 caso 26
 xcar <- "Fim de Arquivo"
 caso 27
 xcar <- ">Tecla <<ESC>>"
 caso 32
 xcar <- "Barra de Espaco"
 fimescolha
 senao
 xcar <- Carac(i)
 fimse
 xs <- Numpcarac(i)
 xcf <- Direita(Zeros(3)+xs,3)
 xo <- Direita(Zeros(4)+Dec2Oct(xs),4)

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais