Trabalho Tobogã de Bolinhas no Visualg (comentado)
Por: joaomezencio • 8/5/2015 • Trabalho acadêmico • 1.965 Palavras (8 Páginas) • 348 Visualizações
algoritmo "Trabalho Prático"
var
N, L, H, I: inteiro //N Linhas, L Distância, H Altura, I Índice
DX, DY, T: real //Distância de X, Y e auxiliar
DIST_MENOR, DIST_PTRETA: real //Valor da menor distância e da distância de ponto e reta atual
VET_DSPTLADOS:vetor[1..50] de real //Vetor de distância da reta
TEXTO: caractere //Entrada dos números, utilizado na função linhanumpvetor
VET_NUMEROS: vetor[1..50] de inteiro //Vetor dos números convertidos pela função linhanumpvetor
VET_NM_I : inteiro //Tamanho/Índice do vetor de números convertidos
ALETA: vetor[1..50,1..4] de inteiro //Matriz que contém coordenadas das aletas(Linha = aleta, Coluna = coordenada)
VET_PTPROXIMO:vetor[1..10,1..2] de real //Matriz com os pontos próximos
VET_DTPTRETA:vetor[1..50] de real //Vetor de distância de ponto e reta
procedimento limpa_aletas()
var
VET_X, VET_Y : inteiro //Índice X e Y da matriz
inicio
para VET_X de 1 ate 50 faca //Percorre as linhas da matriz
para VET_Y de 1 ate 4 faca //Percorre as colunas da matriz
se ALETA[VET_X, VET_Y] <> 0 entao //Se o valor for diferente de 0 (número inicial)
ALETA[VET_X, VET_Y] <- 0 //Então anula seu valor com 0
fimse
fimpara
fimpara
fimprocedimento
//Procedimento responsável por limpar o vetor VET_NUMEROS
procedimento limpa_numeros()
var VET_IND : inteiro //Índice do vetor
inicio
para VET_IND de 1 ate 50 faca //Percorre todo o vetor
se VET_NUMEROS[VET_IND] <> 0 entao //Se o valor for diferente de 0 (número inicial)
VET_NUMEROS[VET_IND] <- 0 //Então anula seu valor com 0
fimse
fimpara
VET_NM_I <- 0 //Coloca o tamanho do vetor como 0, pois não está preenchido
fimprocedimento
//Procedimento responsável por converter a linha em números
procedimento linhanumpvetor(VET_TAMANHO: inteiro) //VET_TAMANHO: variável para verificação do total de números na entrada
var TEXTO, TEXTO_PARTE, TEXTO_LETRA : caractere //TEXTO: texto da entrada; TEXTO_PARTE: auxiliar da cópia; TEXTO_LETRA: cópia do texto (letra[posição]) do texto
TEXTO_TAMANHO, TEXTO_INDICE : inteiro //TEXTO_TAMANHO: variável que armazena o comprimento do texto; TEXTO_INDICE: Índice do vetor
inicio
leia(TEXTO)
TEXTO_TAMANHO <- compr(TEXTO) //Armazena o comprimento do texto na variável TEXTO_TAMANHO
para TEXTO_INDICE de 1 ate TEXTO_TAMANHO faca //Percorre todo texto como um vetor (nativamente, sendo um texto como vetor de caracteres)
TEXTO_LETRA <- copia(TEXTO, TEXTO_INDICE, 1) //Faz a cópia do texto (letra[posição])
se (TEXTO_LETRA = " ") ou (TEXTO_INDICE = TEXTO_TAMANHO + 1) entao //Verifica se a letra copiada é um espaço, ou se o índice é o comprimento do texto + 1
se TEXTO_PARTE <> "" entao //Verifica se parte do texto não estiver em branco, para assim realmente ser um número
VET_NM_I <- VET_NM_I + 1 //Incrementa o tamanho do vetor
VET_NUMEROS[VET_NM_I] <- caracpnum(TEXTO_PARTE) //Coloca o número convertido no vetor referente
TEXTO_PARTE <- "" //Limpa a parte do texto para nova conversão
fimse
senao
TEXTO_PARTE <- TEXTO_PARTE + TEXTO_LETRA //Senão, concatenua a parte do texto com a letra processada
fimse
fimpara
se TEXTO_PARTE <> "" entao //Faz a última verificação, evitando que um número ou parte dele falte, e executa os mesmos comandos
VET_NM_I <- VET_NM_I + 1
VET_NUMEROS[VET_NM_I] <- caracpnum(TEXTO_PARTE)
TEXTO_PARTE <- ""
fimse
se VET_NM_I <> VET_TAMANHO entao //Verifica se o tamanho do vetor é o tamanho informado, se não for, repete o procedimento com o mesmo argumento
limpa_numeros()
linhanumpvetor(VET_TAMANHO)
fimse
fimprocedimento
inicio
enquanto verdadeiro faca //Faz um laço de repetição infinito
DIST_MENOR <- 1000 //Inicia a distância menor
N <- 0 //Atribui o valor padrão ao número de aletas
L <- 0 //Atribui o valor padrão a largura
H <- 0 //Atribui o valor padrão a altura
enquanto (N <= 1) ou (N > 50) faca //Repete o laço estar entre [1...50]
linhanumpvetor(1) //Usa o procedimento de conversão
N <- VET_NUMEROS[1] //Lê o valor do número de aletas no vetor convertido
...