































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Apostilas de Tecnologia em Telemática sobre o estudo da Apresentação do VisuaAlg, Instalação e Requerimentos de Hardware, Tela Principal do VisuAlg.
Tipologia: Notas de estudo
1 / 71
Esta página não é visível na pré-visualização
Não perca as partes importantes!
































































A idéia de escrever este programa nasceu a partir de uma necessidade: uma ferramenta que permitisse aos alunos iniciantes em programação o exercício dos seus conhecimentos num ambiente próximo da realidade. Em minha experiência como professor desta disciplina, tenho notado que a abstração de "rodar o chinês", ou seja, de executar um programa apenas no papel, é um grande obstáculo (quase intransponível para alguns) no aprendizado das técnicas de elaboração de algoritmos. Por outro lado, submeter um iniciante aos rigores de uma linguagem de programação como Pascal ou ao “esoterismo” do C também me parecia exagerado. O ideal seria uma linguagem mais simples, parecida com o "Portugol", de grande popularidade nos meios acadêmicos e presente nos livros mais utilizados; com ela, os princípios básicos da programação estruturada poderiam ser ensinados sem que a curva de aprendizagem fosse íngreme. Além disso, esta ferramenta deveria também ser capaz de simular o que acontece na tela do computador com o uso dos famosos comandos "leia" e "escreva", bem como possibilitar a verificação dos valores das variáveis, o acompanhamento passo a passo da execução de um algoritmo (pelo seu grande valor didático), e até mesmo suportar um modo simples de depuração. Aliado a tudo isto, deveria estar um editor de texto com recursos razoáveis (tais como abrir e salvar arquivos) e que dispusesse de todos os principais recursos de um ambiente gráfico.
O VisuAlg é para mim a concretização desta idéia. Espero que, colocando-o em domínio público (numa versão freeware ), possa ajudar professores e alunos de programação, e também ser ajudado por eles através de sugestões e críticas que visem sempre a sua melhoria. A idéia básica é manter o VisuAlg simples: deve ser como as rodinhas de apoio que uma criança usa ao aprender a andar de bicicleta, e que são retiradas quando deixam de ser necessárias. Isto não quer dizer que o VisuAlg não possa ou deva ser melhorado: conto com a colaboração de todos que vierem a utilizá-lo.
O VisuAlg é um programa simples, que não depende de DLLs, OCXs ou outros componentes. Sua instalação não copia arquivos para nenhuma outra pasta a não ser aquela em que for instalado, e exige cerca de 1 MB de espaço em disco. Pode ser executado sob Windows 95 ou posterior, e tem melhor aparência com resolução de vídeo de 800x600 ou maior.
A Tela Principal do VisuAlg O menu do programa A linguagem de programação do VisuAlg Referências da linguagem do VisuAlg Auto-digitação e sugestão de digitação
A tela do VisuAlg compõe-se da barra de tarefas, do editor de textos (que toma toda a sua metade superior), do quadro de variáveis (no lado esquerdo da metade inferior), do simulador de saída (no correspondente lado direito) e da barra de status. Quando o programa é carregado, já apresenta no editor um "esqueleto" de pseudocódigo, com a intenção de poupar trabalho ao usuário e de mostrar o formato básico que deve ser seguido. Explicaremos a seguir cada componente da interface do VisuAlg.
Contém os comandos mais utilizados no VisuAlg (estes comandos também podem ser acessados pelo menu ou por atalhos no teclado).
Executar (F9): Inicia (ou continua) a execução automática do pseudocódigo. Executar com timer (Shift-F9): : Insere um atraso (que pode ser especificado no intervalo ao lado) antes da execução de cada linha. Também realça em fundo azul o comando que está sendo executado, da mesma forma que na execução passo a passo. Intervalo do timer : Atraso em cada linha, para quando se deseja executar o pseudocódigo com timer. Passo (F8): Inicia (ou continua) a execução linha por linha do pseudocódigo, dando ao usuário a oportunidade de acompanhar o fluxo de execução, os valores das variáveis e a pilha de ativação dos subprogramas. Parar (Ctrl-F2): Termina imediatamente a execução do pseudocódigo. Evidentemente, este botão fica desabilitado quando o pseudocódigo não está sendo executado. Liga/desliga breakpoint (F5): Insere/remove um ponto de parada na linha em que esteja o cursor. Estes pontos de parada são úteis para a depuração e acompanhamento da execução dos pseudocódigos, pois permitem a verificação dos valores das variáveis e da pilha de ativação de subprogramas. Desmarcar todos os breakpoints (Ctrl-F5): Desativa todos os breakpoints que estejam ativados naquele momento. Executar em modo DOS: Com esta opção ativada, tanto a entrada como a saída-padrão passa a ser uma janela que imita o DOS, simulando a execução de um programa neste ambiente. Gerar valores aleatórios: Ativa a geração de valores aleatórios que substituem a digitação de dados. A faixa padrão de valores gerados é de 0 a 100 inclusive, mas pode ser modificada (basta alterar intervalo ao lado). Para a geração de dados do tipo caractere, não há uma faixa pré-estabelecida: os dados gerados serão sempre strings de 5 letras maiúsculas. Intervalo dos valores aleatórios: Faixa de valores que serão gerados automaticamente, quando esta opção estiver ativada. Perfil (F7): Após a execução de um pseudocódigo, exibe o número de vezes que cada umas das suas linhas foi executada. É útil para a análise de eficiência (por exemplo, nos métodos de ordenação). Mostrar pilha de ativação (Ctrl-F3): Exibe a pilha de subprogramas ativados num dado momento. Convém utilizar este comando em conjunto com breakpoints ou com a execução passo a passo. Ajuda (F1): Possibilita acesso às páginas de ajuda e às informações sobre o VisuAlg.
É formado por uma grade na qual são mostrados o escopo de cada variável (se for do programa principal, será global; se for local, será apresentado o nome do subprograma onde foi declarada), seus nomes (também com os índices, nos casos em que sejam vetores), seu tipo ("I" para inteiro, "R" para real, "C" para caractere e "L" para lógico) e o seu valor corrente. A versão atual do VisuAlg permite a visualização de até 500 variáveis (contando individualmente cada elemento dos vetores).
Situada na parte inferior da tela, esta barra contém dois painéis: o primeiro mostra a linha e a coluna onde o cursor está, e o segundo mostra a palavra Modificado no caso em que o
pseudocódigo tenha sido alterado desde que foi carregado ou salvo pela última vez. Nesta barra, há ainda um terceiro painel disponível, que ainda não tem um uso específico na atual versão.
Executar: Inicia (ou continua) a execução automática do pseudocódigo. Passo a passo: Inicia (ou continua) a execução linha por linha do pseudocódigo, dando ao usuário a oportunidade de acompanhar o fluxo de execução, os valores das variáveis e a pilha de ativação dos subprogramas. Executar com timer : Insere um atraso (que pode ser especificado) antes da execução de cada linha. Também realça em fundo azul o comando que está sendo executado, da mesma forma que na execução passo a passo. Parar: Termina imediatamente a execução do pseudocódigo. Evidentemente, este item fica desabilitado quando o pseudocódigo não está sendo executado. Liga/desliga breakpoint : Insere/remove um ponto de parada na linha em que esteja o cursor. Estes pontos de parada são úteis para a depuração e acompanhamento da execução dos pseudocódigos, pois permitem a verificação dos valores das variáveis e da pilha de ativação de subprogramas. Desmarcar todos os breakpoints : Desativa todos os breakpoints que estejam ativados naquele momento. Executar em modo DOS: Com esta opção ativada, tanto a entrada como a saída-padrão passa a ser uma janela que imita o DOS, simulando a execução de um programa neste ambiente. Gerar valores aleatórios: Ativa a geração de valores aleatórios que substituem a digitação de dados. A faixa padrão de valores gerados é de 0 a 100 inclusive, mas pode ser modificada. Para a geração de dados do tipo caractere, não há uma faixa pré-estabelecida: os dados gerados serão sempre strings de 5 letras maiúsculas. Perfil: Após a execução de um pseudocódigo, exibe o número de vezes que cada umas das suas linhas foi executada. É útil para a análise de eficiência (por exemplo, nos métodos de ordenação). Pilha de ativação: Exibe a pilha de subprogramas ativados num dado momento. Convém utilizar este comando em conjunto com breakpoints ou com a execução passo a passo.
Linguagens: Permite a tradução automático do pseudocódigo presente no editor para outras linguagens de programação. Atualmente, apenas a tradução para Pascal está implementada, mas ainda em fase de testes.
Ferramentas: Neste menu, é possível configurar algumas opções do VisuAlg: cores e tipos de letras na exibição do pseudocódigo, número de espaços para indentação automática, etc.
Ajuda: Entre outras coisas, possibilita acesso às páginas de ajuda e às informações sobre o VisuAlg.
A linguagem que o VisuAlg interpreta é bem simples: é uma versão portuguesa dos pseudocódigos largamente utilizados nos livros de introdução à programação, conhecida como "Portugol". Tomei a liberdade de acrescentar-lhe alguns comandos novos, com o intuito de criar facilidades específicas para o ensino de técnicas de elaboração de algoritmos. Inicialmente, pensava em criar uma sintaxe muito simples e "liberal", para que o usuário se preocupasse apenas com a lógica da resolução dos problemas e não com as palavras-chave, pontos e vírgulas, etc. No entanto, cheguei depois à conclusão de que alguma formalidade seria não só necessária como útil, para criar um sentido de disciplina na elaboração do "código-fonte".
A linguagem do VisuAlg permite apenas um comando por linha : desse modo, não há necessidade de tokens separadores de estruturas, como o ponto e vírgula em Pascal. Também não existe o conceito de blocos de comandos (que correspondem ao begin e end do Pascal e ao { e } do C), nem comandos de desvio incondicional como o goto. Na versão atual do VisuAlg, com exceção das rotinas de entrada e saída, não há nenhum subprograma embutido, tal como Inc() , Sqr() , Ord() , Chr() , Pos() , Copy() ou outro.
Importante: para facilitar a digitação e evitar confusões, todas as palavras-chave do VisuAlg foram implementadas sem acentos, cedilha, etc. Portanto, o tipo de dados lógico é definido como logico, o comando se..então..senão é definido como se..entao..senao, e assim por diante. O VisuAlg também não distingue maiúsculas e minúsculas no reconhecimento de palavras-chave e nomes de variáveis.
O formato básico do nosso pseudocódigo é o seguinte:
algoritmo "semnome" // Função : // Autor : // Data : // Seção de Declarações inicio // Seção de Comandos fimalgoritmo
A primeira linha é composta pela palavra-chave algoritmo seguida do seu nome delimitado por aspas duplas. Este nome será usado como título nas janelas de leitura de dados (nas futuras versões do VisuAlg, talvez utilizemos este dado de outras formas). A seção que se segue é a de declaração de variáveis, que termina com a linha que contém a palavra-chave inicio. Deste ponto em diante está a seção de comandos, que continua até a linha em que se encontre a palavra-chave fimalgoritmo. Esta última linha marca o final do pseudocódigo: todo texto existente a partir dela é ignorado pelo interpretador.
O VisuAlg permite a inclusão de comentários: qualquer texto precedido de "//" é ignorado, até se atingir o final da sua linha. Por este motivo, os comentários não se estendem por mais de
[0,9], [0,10], [1,8], [1,9], [1,10], ... até [4,10]. O número total de variáveis suportado pelo VisuAlg é 500 (cada elemento de um vetor é contado individualmente).
Constantes e Comando de Atribuição
O VisuAlg tem três tipos de constantes:
A atribuição de valores a variáveis é feita com o operador <-. Do seu lado esquerdo fica a variável à qual está sendo atribuído o valor, e à sua direita pode-se colocar qualquer expressão (constantes, variáveis, expressões numéricas), desde que seu resultado tenha tipo igual ao da variável.
Alguns exemplos de atribuições, usando as variáveis declaradas acima:
a <- 3 Valor1 <- 1. Valor2 <- Valor1 + a vet[1] <- vet[1] + (a * 3) matriz[3,9] <- a/4 - 5 nome_do_aluno <- "José da Silva" sinalizador <- FALSO
Nesta página estão todas as palavras-chave da linguagem de programação do VisuAlg. Em cada uma delas, há um link para sua correspondente seção dentro das páginas de ajuda.
aleatorio algoritmo arquivo asc ate carac caracpnum caractere caso compr copia cronometro debug e eco
enquanto entao escolha escreva escreval faca falso fimalgoritmo fimenquanto fimescolha fimfuncao fimpara fimprocedimento fimrepita fimse
funcao inicio int inteiro interrompa leia limpatela logico maiusc minusc mod nao numpcarac ou outrocaso
para passo pausa pos real procedimento repita retorne se senao timer var vetor verdadeiro xou
eof, eon - Inserem os comandos eco off ou eco on, respectivamente.
esc - Insere o comando escreva.
escl - Insere o comando escolha (sem a cláusula outrocaso).
escolha * caso fimescolha
esco - Insere o comando escolha (com a cláusula outrocaso).
escolha * caso outrocaso fimescolha
enq - Insere o comando enquanto.
enquanto * faca fimenquanto
fal - Insere a linha fimalgoritmo.
ini - Insere a linha inicio.
int - Insere o comando interrompa.
lep - Insere o comando leia.
leia (*)
par - Insere o comando para.
para * de 1 ate faca fimpara
parp - Insere o comando para com passo.
para * de ate passo faca fimpara
rep - Insere o comando repita.
repita
ate
repf - Insere o comando repita com fimrepita.
repita
fimrepita
see - Insere o comando se sem a alternativa senao.
se * entao fimse
ses - Insere o comando se completo.
se * entao senao fimse
tim - Insere os comandos timer on e timer off.
timer on
timer off
tof, ton - Inserem os comandos timer on ou timer off, respectivamente.
A sugestão de digitação é disponibilizada através das teclas Ctrl-J. Basta começar a digitação de uma palavra e teclar Ctrl-J para que o VisuAlg mostre uma lista com sugestões de palavras- chave que completam o que foi digitado. Para escolher, é necessário dar um duplo-clique sobre a opção desejada, ou então selecioná-la com as setas e teclar Enter. Se o usuário continua escrevendo depois que o VisuAlg apresentou a lista de sugestões, o programa continuará procurando palavras que ainda complementem o que foi digitado. Ao se teclar Esc ou clicar "fora da lista", ela desaparece.
var a, b, c : real
inicio
a <- 2 b <- 9 escreval( b - a ) // será escrito 7 na tela escreval( abs( a - b ) ) // também será escrito 7 na tela c <- raizq( b ) // c recebe 3, a raiz quadrada de b, que é 9 // A fórmula da área do círculo é pi (3.1416) vezes raio ao quadrado... escreval("A área do circulo com raio " , c , " é " , pi * quad(c) ) // Um pouco de trigonometria... escreval("Um ângulo de 90 graus tem " , grauprad(90) , " radianos" ) escreval( exp(a,b) ) // escreve 2 elevado à 9ª, que é 512 // escreve 1, que é a parte inteira de 1.8, resultado de 9/(3+2) escreval( int( b / ( a + c ) ) )
fimalgoritmo
Funções para manipulação de cadeias de caracteres
(strings)
Asc (s : caracter) : Retorna um inteiro com o código ASCII do primeiro caracter da expressão. Carac (c : inteiro) : Retorna o caracter cujo código ASCII corresponde à expressão. Caracpnum (c : caracter) : Retorna o inteiro ou real representado pela expressão. Corresponde a StrToInt() ou StrToFloat() do Delphi, Val() do Basic ou Clipper, etc. Compr (c : caracter) : Retorna um inteiro contendo o comprimento (quantidade de caracteres) da expressão. Copia (c : caracter ; p, n : inteiro) : Retorna um valor do tipo caracter contendo uma cópia parcial da expressão, a partir do caracter p, contendo n caracteres. Os caracteres são numerados da esquerda para a direita, começando de 1. Corresponde a Copy() do Delphi, Mid$() do Basic ou Substr() do Clipper. Maiusc (c : caracter) : Retorna um valor caracter contendo a expressão em maiúsculas. Minusc (c : caracter) : Retorna um valor caracter contendo a expressão em minúsculas. Numpcarac (n : inteiro ou real) : Retorna um valor caracter contendo a representação de n como uma cadeia de caracteres. Corresponde a IntToStr() ou FloatToStr() do Delphi, Str() do Basic ou Clipper. Pos (subc, c : caracter) : Retorna um inteiro que indica a posição em que a cadeia subc se encontra em c, ou zero se subc não estiver contida em c. Corresponde funcionalmente a Pos() do Delphi, Instr() do Basic ou At() do Clipper, embora a ordem dos parâmetros possa ser diferente em algumas destas linguagens.
A seguir temos alguns exemplos que ilustram o uso destas funções.
algoritmo "exemplo_funcoes2"
var a, b, c : caracter
inicio
a <- "2" b <- "9" escreval( b + a ) // será escrito "92" na tela escreval( caracpnum(b) + caracpnum(a) ) // será escrito 11 na tela
escreval( numpcarac(3+3) + a ) // será escrito "62" na tela c <- "Brasil" escreval(maiusc(c)) // será escrito "BRASIL" na tela escreval(compr(c)) // será escrito 6 na tela b <- "O melhor do Brasil" escreval(pos(c,b)) // será escrito 13 na tela escreval(asc(c)) // será escrito 66 na tela - código ASCII de "B" a <- carac(65) + carac(66) + carac(67) escreval(a) // será escrito "ABC" na tela
fimalgoritmo
Exemplos: "Rio de Janeiro" "Computador" "A" "?" "Fora!" "1234"
Nos nossos exemplos daremos a todas as variáveis que armazenam valores literais o tipo caracter.
Nos nossos exemplos daremos a todas as variáveis que armazenam valores lógicos o tipo logico (assim mesmo, sem acento).
E como os dados estão representados nos algoritmos? De duas maneiras: como constantes , ou seja, o dado escrito como ele é, como nos exemplos acima, e armazenados em variáveis.
Variáveis são locais de armazenamento temporário para os dados. É um conceito parecido com
Toda linguagem de programação tem regras para a formação de nomes de variáveis, e nós também teremos: neste curso, os nomes de variáveis deverão começar com uma letra, e depois poderão ter qualquer combinação de letras, números e sublinhado ("_"). Não pode haver espaços no interior dos nomes, e não haverá diferenciação entre maiúsculas e minúsculas (ou seja, os nomes "Salario", "SALARIO", e "salario" se referem à mesma variável. Exemplos: Nomes Válidos: Valor1, Valor2, Nota_do_Aluno, Salario Nomes Inválidos: 1Valor, 2Valor, _Salario, Nota.do.Aluno, Media- Aritmetica
Na próxima lição estudaremos os comandos básicos para a construção de algoritmos.
Lição 2 - Comandos Básicos
O primeiro passo para a construção de um algoritmo é a declaração das variáveis que serão usadas nele. Quase todas as linguagens de programação exigem a declaração das variáveis de um programa. Em algumas isto é facultativo, mas é sempre uma boa técnica declarar variáveis, por vários motivos. Em um algoritmo isto não é necessário, pois na realidade o algoritmo não é uma linguagem de programação. Entretanto, para melhorar o entendimento do algoritmo e também para treinar as técnicas corretas, vamos assumir que a declaração de variáveis é "obrigatória".
Para declarar uma variável, colocamos, no início do algoritmo, a palavra chave declare e seu nome, seguido por dois pontos e seu tipo:
declare Salario : Numerico declare Nome : Literal declare AlunoAusente : Logico
Se tivermos mais de uma variável do mesmo tipo, podemos colocar todas, separadas por vírgulas, na mesma declaração:
declare Peso, Altura, Idade : Numerico
Como todas (ou quase todas) as linguagens de programação têm seus comandos e sintaxe baseados no Inglês, vamos eliminar nos comandos e variáveis de nossos exemplos os acentos, til, cedilha, etc. Os dados do tipo literal ou mensagens para o usuário, no entanto, serão escritos corretamente.
Quando declaramos uma variável, criamos uma área de armazenamento para os dados, mas ela ainda está "sem valor". Para que ela seja útil, deve ter valores colocados por nós ou pelo usuário, através de digitação. Quando o próprio programa coloca dados nas variáveis faz o que se chama "atribuição de valores". Isto é feito pelo operador "<-" (uma seta apontando para a esquerda). Por exemplo:
Peso <- 78
Este comando atribui à variável Peso o valor 78. O valor que ela tinha anteriormente é "apagado", e não pode ser recuperado mais.
Nome <- "João da Silva"
Este comando atribui à variavel Nome o valor "João da Silva".
É importante lembrar que só se podem atribuir a uma variável valores do mesmo tipo da variável. Nos exemplos acima, a variável Salário é do tipo numérico; então, o seguinte comando seria inválido :
Salário <- "Insuficiente"