Baixe o app para aproveitar ainda mais
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)
Compartilhar