0% acharam este documento útil (0 voto)
12 visualizações15 páginas

Subprogramas - VisualG

O documento aborda a utilização de algoritmos com VisualG 3.0, incluindo a leitura de arquivos, manipulação de vetores e modularização através de procedimentos e funções. Exemplos práticos demonstram a entrada de dados, a soma de elementos e técnicas de depuração. Além disso, são discutidas funcionalidades como geração de valores aleatórios e listas de sorteio.

Enviado por

Fábio Martins
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
12 visualizações15 páginas

Subprogramas - VisualG

O documento aborda a utilização de algoritmos com VisualG 3.0, incluindo a leitura de arquivos, manipulação de vetores e modularização através de procedimentos e funções. Exemplos práticos demonstram a entrada de dados, a soma de elementos e técnicas de depuração. Além disso, são discutidas funcionalidades como geração de valores aleatórios e listas de sorteio.

Enviado por

Fábio Martins
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Algoritmos com

VisualG 3.0
Introdução

Prof. Cláudio Fleury - Mar/19


Arquivo de Dados
• Entrada
– Entre as palavras-chave Algoritmo e Var declare o
local e nome do arquivo que será lido:
arquivo "local\nome_do_arquivo.ext"

– A leitura do arq. simula a entrada de dados via teclado


leia(NOME)
• Ao invés de aguardar uma entrada via teclado, o arquivo será
lido, e o resultado dessa leitura será atribuído à variável NOME
• Se o arquivo não existir então a entrada de dados volta a ser
direcionada para o teclado, e os dados digitados pelo
usuário passam a ser gravados no arquivo
Vetores
• Variáveis compostas homogêneas
– Mais de um dado numa mesma variável
– Dados apenas de um único tipo de dado
• Cada elemento do vetor é acessado pelo nome da
variável e um índice apresentado entre [ ]
– Ex.: diasMes[1] = 31
diasMes[2] = 28
...
diasMes[12] = 31
• Declaração
var nomevet : vetor [indinic..indfim] de tipodado
Ex.: var diasMes: vetor [1..12] de inteiro
Vetores
• Exemplo
Algoritmo "reveilon"
// Disciplina : uP's/uC's
// Professor : Kaw
// Descrição : mostra a qtde de dias decorridos entre o Reveilon e a data atual
// Data atual : 22/03/2019

arquivo "dias_do_meses.txt"
Var
DIASMES: vetor [1..12] de inteiro
I, DIA, MES, SOMA: inteiro
Inicio
para I de 1 ate 12 faca
escreva("Dias do mês ",I,": ")
leia(DIASMES[I])
fimpara
escreva("Digite dia e mês da data de hoje: ") // considerando ano não bissexto
leia(DIA)
leia(MES)
SOMA <- 0
para I de 1 ate MES-1 faca
SOMA <- SOMA + DIASMES[I]
fimpara
SOMA <- SOMA + DIA
escreval("Dias decorridos desde o Reveilon de 2019:",SOMA:3)
Fimalgoritmo
Modularização
• Divisão do algoritmo em partes menores:
módulos/subprogramas
• Módulos possíveis no Visualg
– Procedimento (subrotina): não retorna valor
• Declaração: procedimento nomeProc([parâmetros])
• Chamada: nomeProc(argumentos)

– Função: retorna um único valor


• Declaração: funcao nomeFun([parâmetros]): tipoRetorno
• Chamada: varTipoRetorno <- nomeFun(argumentos)
Modularização
• Escopo de Variáveis
– Global
• Declaradas na sentença var do Algoritmo
• Podem ser acessadas por qualquer parte do algoritmo,
inclusive pelos módulos
• Existem durante todo o tempo em que o Algoritmo é executado
– Local
• Declaradas na sentença var dos módulos
• Podem ser acessadas apenas no módulo na qual foi declarada
• Só existem durante a execução do módulo, sendo descartadas
ao término da execução do módulo
Exemplo-1: Entra de dados de matriz e mostra soma de seus elementos

Modularização
Algoritmo "modularizado"
arquivo "matriz_3x4.txt"
var
MAT: vetor [1..3,1..4] de real // variável global
I, DIA, MES, SOMA: inteiro // variáveis globais

procedimento entraDados
var I, J: inteiro // variáveis locais
inicio
para I de 1 ate 3 faca
para J de 1 ate 4 faca
escreva("MAT(",I,",",J,") = ")
leia(MAT[I,J])
fimpara
fimpara
fimprocedimento

funcao somaMatriz: real


var L, C: inteiro // variáveis locais
SOMA: real // variável local
inicio
SOMA <- 0
para L de 1 ate 3 faca
para C de 1 ate 4 faca
SOMA <- SOMA + MAT[L,C]
fimpara
fimpara
retorne SOMA
fimfuncao

Inicio
entraDados()
escreval("Soma dos elementos da Matriz = ", somaMatriz)
fimAlgoritmo
Modularização
Algoritmo "modularizado2"
// Disciplina : uP's/uC's
// Professor : Kaw
// Descrição : algoritmo modularizado com subrotinas/funções com parâmetros
// Data atual : 22/03/2019

Var
X, Y, Z: real
Exemplo-2: Entra de dados e mostra de sua soma

procedimento entraDados(var v1,v2,v3: real) // parâmetros por referências


inicio
escreva("Valor 1: ")
leia(v1)
escreva("Valor 2: ")
leia(v2)
escreva("Valor 3: ")
leia(v3)
fimprocedimento

funcao somaValores(A,B,C: real): real // parâm.s por valor


var SOMA: real // variável local
inicio
SOMA <- A + B + C
retorne SOMA
fimfuncao

Inicio
entraDados(X,Y,Z)
escreval("Soma dos valores = ", somaValores(X,Y,Z))
Fimalgoritmo
Depuração (debug)
• Correção do Algoritmo
– Acompanhamento da execução de cada
comando do Algoritmo e das mudanças de
suas variáveis
– O próximo comando a ser executado aparece
numa barra em azul escuro
• Teste de Mesa
– Passo a passo (comando a comando): F8
– Janela de variáveis
Depuração Lenta (debug)
• Passo a passo: [F8]
– Executa um comando do algoritmo por vez em
resposta a cada pressionamento da tecla [F8]
– Janela de variáveis

Números inteiros de 1 a 100


com 10 valores por linha.
Depuração Rápida (debug)
• Breakpoint (ponto de parada)
– Linha de comando na qual a execução será pausada
para avaliação das variáveis
– Marcando/desmarcando o ponto de parada
• Posicione o cursor na linha desejada
• Pressione ou a tecla [F5]
– Desmarcando todos pontos de parada
• Pressione ou pressiona as teclas [Ctrl][F5]
– Pode-se marcar tantos pontos de parada quantos se
queira
Timer e Valores Aleatórios
• Execução com Timer [Shift][F9]
– Marcação de tempo para execução do algoritmo
– Intervalo de tempo entre a execução de um comando e o
seguinte (passo a passo temporizado, usuário não precisa
pressionar F8)

• Geração de Valores Aleatórios


– Entrada de dados para testes dos algoritmos
• São gerados dados aleatoriamente para cada comando
leia()
• Ative o botão "varinha mágica" e ajuste a faixa de
intervalo de valores para a geração aleatória
Timer e Valores Aleatórios
•Exemplo
Algoritmo "espelho"
// Disciplina : uP's/uC's
// Professor : Kaw
// Descrição : reproduz uma qtde de valores entrados em ordem
reversa num vetor
// Data atual : 22/03/2019

Var
VET: vetor [0..19] de real
I : inteiro

Inicio
aleatorio 10, 50 // gera valores aleatórios entre 10 e 50
para I de 0 ate 9 faca
escreva("Digite o ",I+1,"o. valor: ")
leia(VET[I])
fimpara
aleatorio off // desliga a geração de valores aleatórios
para I de 10 ate 19 faca
VET[I] <- VET[19-I]
fimpara
para I de 0 ate 19 faca
escreval(I+1,"o. valor: ", VET[I])
fimpara
fimalgoritmo
Lista de Sorteio
• O comando lista define uma lista de itens que serão
sorteados, ou seja, por padrão o
comando aleatorio sorteia números,
mas é possível determinar um elemento aleatório a partir
de listas criadas pelo usuário...

• Para criar uma lista de valores: acesse o Menu


Manutenção/Configurações/Listas
Lista de Sorteio
• Exemplo
Algoritmo "uso_de_lista"
// Disciplina : uP's/uC's
// Professor : Kaw
// Data atual : 22/03/2019
Var
ESTADO : caracter
I : inteiro
Inicio
lista "ESTADOS"
aleatorio on
para I de 1 ate 5 faca
leia(ESTADO)
escreval(ESTADO)
fimpara
aleatorio off
Fimalgoritmo

Você também pode gostar