APOSTILA_ALGORITMOS_ICC2

Embed Size (px)

Citation preview

Apostila de

DISCIPLINA:ICC II Apostila de Algoritmos

ALGORITMOS

Prof. Celso Cardoso Neto

Disciplina: [email protected] 2014

NDICE1. INTRODUO

2. DEFINIO DE ALGORITMOS

3. LINGUAGEM DE PROGRAMAO

4. TRADUO DE UMA LINGUAGEM DE PROGRAMAO

5. VISUALG

1. INTRODUO

A automatizao de tarefas um aspecto marcante da sociedade moderna. O aperfeioamento tecnolgico alcanado, com respeito a isto, tem como elementos fundamentais a anlise e a obteno de descries da execuo de tarefas em termos de aes simples o suficiente, tal que pudessem ser automatizadas por uma mquina especialmente desenvolvida para este fim, O COMPUTADOR.

Em cincia da computao h um processo de desenvolvimento simultneo e interativo de mquinas (hardware) e dos elementos que gerenciam a execuo automtica (software) de uma dada tarefa. E essa descrio da execuo de uma tarefa, como considerada acima, chamada algoritmo.

O objetivo desse curso a Lgica de Programao dando uma base terica e prtica, suficientemente boa, para que, o aluno domine os algoritmos e esteja habilitado a aprender uma linguagem de programao. Ser mostrado tambm um grupo de algoritmos clssicos para tarefas cotidianas, tais como : ordenao e pesquisa.

2. DEFINIO DE ALGORITMO

Se buscarmos na literatura, veremos que iremos encontrar um grande quantidade de conceitos relacionados definio de ALGORITMO. A seguir so listadas vrias dessas definies.

"O conceito central da PROGRAMAO e da CINCIA DA COMPUTAO o conceito de algoritmos, isto , programar basicamente construir algoritmos."

a descrio, de forma lgica, dos passos a serem executados no cumprimento de determinada tarefa.

"O algoritmo pode ser usado como uma ferramenta genrica para representar a soluo de tarefas independente do desejo de automatiz-las, mas em geral est associado ao processamento eletrnico de dados, onde representa o rascunho para programas (Software)."

"Serve como modelo para programas, pois sua linguagem intermediria linguagem humana e s linguagens de programao, sendo ento, uma boa ferramenta na validao da lgica de tarefas a serem automatizadas."

"Um algoritmo uma receita para um processo computacional e consiste de uma srie de operaes primitivas, interconectadas devidamente, sobre um conjunto de objetos. Os objetos manipulados por essas receitas so as variveis."

O algoritmo pode ter vrios nveis de abstraes de acordo com a necessidade de representar ou encapsular detalhes inerentes s linguagens de programao. Ex: Certamente um algoritmo feito com o objetivo de servir como modelo para uma linguagem de 3 gerao diferente daquele para uma linguagem de IV gerao. Mas isso no impede que a ferramenta em si possa ser usada em ambos o caso.

Como qualquer modelo, um algoritmo uma abstrao da realidade. A abstrao o processo de identificar as propriedades relevantes do fenmeno que esta sendo modelado. Usando o modelo abstrato, podemos nos centrar unicamente nas propriedades relevantes para ns, dependendo da finalidade da abstrao, e ignorar as irrelevantes.

a forma pela qual descrevemos solues de problemas do nosso mundo, afim de, serem implementadas utilizando os recursos do mundo computacional. Como este possu severas limitaes em relao ao nosso mundo, exige que, sejam impostas algumas regras bsicas na forma de solucionar os problemas, para que, possamos utilizar os recursos de HARDWARE e SOFTWARE disponveis. Pois, os algoritmos, apesar de servirem para representar a soluo de qualquer problema, no caso do Processamento de Dados, eles devem seguir as regras bsicas de programao para que sejam compatveis com as LINGUAGENS DE PROGRAMAO.

Segundo Wirth, programas so formulaes concretas de algoritmos abstratos, baseados em representaes e estruturas especficas de dadosDe forma bem simples, um algoritmo pode ser definido como um conjunto de passos lgicos, bem definidos, que descreve a soluo de um problema. Ao pensarmos na soluo de um problema, encontramos aes imperativas que so expressas por comandos. Os algoritmos no so aplicados apenas ao mundo da Informtica; pelo contrrio, usamos at sem perceber algoritmos em todos os momentos de nossa vida. Uma receita de cozinha claramente um algoritmo.

EXEMPLO 1 : Faa um algoritmo para Ir de casa para o trabalho de nibus

Soluo 1

Algoritmo Trajeto_Casa

incio

1) Andar at o ponto de nibus

2) Aguardar o nibus

3) Ao avistar o nibus correto, fazer sinal

4) Entrar no nibus pela porta traseira

5) Pagar passagem

6) Escolher um assento e sentar

7) Quando chegar prximo do local a saltar, dar o sinal para descida

8) No ponto, descer do nibus, pela porta dianteira

9) Andar at o trabalho

fim

Observa-se que esse algoritmo foi resolvido em 9 passos. No entanto, fato que se n pessoas buscarem solues para o mesmo problema, provavelmente, teremos n respostas diferentes. Isto decorre normalmente, da abstrao do problema, da viso do problema sob ngulos diferentes, com maior ou menor riqueza de detalhes.

Por outro lado, devemos percebe-se que o algoritmo descrito revela uma situao perfeita, sem condicionais, sem excees. Assim como na nossa rotina, improvvel termos situaes perfeitas, essas excees tambm ocorrem nos programas de computador.

Vamos refazer este algoritmo de forma a introduzir algumas condies.

Soluo 2

Algoritmo Trajeto_Casa

incio

1) Andar at o ponto de nibus

2) Aguardar o nibus3) Quando avistar o nibus correto, fazer sinal

se o nibus no parar, ento

Em pensamento, xingar o motorista

Reclamar para si que vai chegar atrasado

se estiver muito atrasado ento

Pegar uma Van

Senao

Voltar para o Passo 2

fimse

senao

se Pessoa >= 65 anos ento

Entrar pela porta dianteira

senao

Entrar pela porta traseira

Pagar passagem

se houver troco ento

Aguardar troco

fim-se

fim-se

se houver lugar disponvel ento

Sentar

senoEscolher o melhor lugar em p e ali permanecer

fim-se

fim-se

4) Quando chegar prximo do local a saltar, dar o sinal para descida

5) No ponto, descer do nibus, pela porta dianteira

6) Andar at o trabalho

fim

Com certeza, a brincadeira que fiz da condio Se o nibus no parar deve ter levado vocs a pensarem em inmeras novas condies, como por exemplo: qual seria a sua reao, se num dia de chuva, o nibus passasse por sobre uma poa e lhe sujasse toda a roupa ?

Veja quo complexo pode se tornar um simples algoritmo. Devemos lembrar que detalhes so essenciais na confeco de um algoritmo, todavia, eles devem estar de acordo com o contexto. Alm disso, importante que venhamos a relatar apenas os detalhes relevantes.

Por exemplo, a soluo 2 est apropriada para ensinarmos uma pessoa que no est acostumada a andar de nibus. Todavia, este algoritmo causaria problemas se estivssemos programando um rob. Considerando esta situao, deveramos ser mais precisos no passo Quando chegar prximo do local a saltar, dar o sinal de descida. Nesse caso, deveramos dizer A x metros do local a saltar, dar o sinal de descida ou Na altura x da Rua y ....

Assim, lembrem-se de usar o BOM SENSO!

Podemos pensar tambm num algoritmo como um mecanismo de transformao de entradas em sadas. Assim, um algoritmo ao ser executado, receber algumas entradas, que sero processadas e nos devolver algumas sadas.

Fluxo de Controle em Algoritmos

Um algoritmo um texto esttico, onde temos vrios passos que so lidos e interpretados de cima para baixo. Para que venhamos a obter o(s) resultado(s) deste algoritmo, necessitamos execut-lo, o que resulta em um processo dinmico.

No fluxo de controle identificamos em cada passo da execuo qual o prximo comando a ser executado.

A compreenso da lgica de programao de um algoritmo est diretamente ligada a compreenso de seu fluxo de controle. A partir de uma compreenso correta, podemos traar as diversas execues possveis de um algoritmo. Se testarmos todas essas possibilidades, e obtivermos resultados corretos, podemos ter certeza de estar entregando um produto final confivel.

Os iniciantes no mundo da programao encontram alguma dificuldade em diminuir a distncia conceitual que separa a representao esttica de um algoritmo do(s) processo(s) dinmico(s) de sua execuo.

importante frisar que quando nos propomos a

entender um algoritmo, lidamos fisicamente com um texto, mas mentalmente temos processos.

Criando Algoritmos

Toda linguagem composta de sintaxe e semntica, onde a sintaxe corresponde forma e a semntica corresponde ao contedo.

importante que se aprenda a sintaxe dos comandos, mas a principal preocupao deve ser de como usar esses comandos.

Regras para criao de bons algoritmos1. Use comentrios com freqncia. Isto torna o algoritmo mais legvel e facilita o entendimento da lgica empregada. Seus algoritmos devero ser lidos e entendidos por outras pessoas (e por voc mesmo) de tal forma que possam ser corrigidos e receber manuteno.

Obs: No se esquea de atualizar os comentrios, em caso de manuteno. Pior do que um programa sem comentrios, um programa com comentrios errados.

2. Use comentrios, tambm, no cabealho do algoritmo, incluindo, principalmente:

descrio do que faz o algoritmo

autor

data de criao

3. Escolha nomes de variveis significativos, todavia evite nomes muito longos.

Ex:Prefira SalBruto ou SalarioBruto ao invs de SB ou VAR1

Prefira TotAlunosAprovDireta ao invs de

TotalAlunosAprovacaoDireta4. Destaque as palavras-chave das estruturas de controle e comandos com sublinhado.

Ex:se media >= 7 ento

...

senao

...

fim-se

5. Utilize espaos e linhas em branco para melhorar a legibilidade.

6. Coloque apenas um comando por linha. Vrios comandos em uma linha causam ilegibilidade e dificulta a depurao.

7. Utilize parnteses para aumentar a legibilidade e prevenir-se de erros.

8. Use identao nos comandos de acordo com o nvel que estejam, ou seja, alinhe comandos de mesmo nvel e desloque comandos de nvel inferior.

Ex.:

incio

comando 1;

se condicao1 ento

comando2;

comando3;

senao

comando4;

comando5;

fimse

comando6;

fimMtodo para desenvolvimento de algoritmos1. Faa uma leitura de todo o problema at o final, a fim de formar a primeira impresso. A seguir, releia o problema e faa anotaes sobre os pontos principais.

2. Verifique se o problema foi bem entendido. Questione, se preciso, ao autor da especificao sobre suas dvidas. Releia o problema quantas vezes for preciso para tentar entend-lo.

3. Extraia do problema todas as suas sadas.

4. Extraia do problema todas as suas entradas.

5. Identifique qual o processamento principal.

6. Verifique se ser necessrio algum valor intermedirio que auxilie a transformao das entradas em sadas. Esta etapa pode parecer obscura no incio, mas com certeza no desenrolar do algoritmo, estes valores aparecero naturalmente.

7. Teste cada passo do algoritmo, com todos os seus caminhos para verificar se o processamento est gerando os resultados esperados.

Crie valores de teste para submeter ao algoritmo.

8. Reveja o algoritmo, checando as boas normas de criao.

Conselho: S tente conseguir o timo, depois de realizar o bom!

3. LINGUAGEM DE PROGRAMAO

O estudo das tcnicas para construo de algoritmos est diretamente relacionado ao estudo das linguagens de programao.

O estudo das linguagens de programao visam:

Maior habilidade em resolver problemas: uma maior compreenso de uma LP pode aumentar nossa habilidade em pensar em como equacionar os problemas. Tanto melhor se dominarmos os vrios modelos de LP.

Melhor uso de uma LP: compreenso das funes e implementao das estruturas de uma LP nos levam a usar a LP de modo a extrair o mximo de sua funcionalidade e eficincia.

Melhor escolha de uma LP: adequao ao problema.

Maior facilidade em aprender novas LPs: conceitos chaves comuns s LPs.

Melhor designer de LPs: linguagens de interfaces de sistemas, extenso de LP via operadores e tipos de dados.

HISTRICO

Vejamos um pouco da histria de algumas linguagens de programao que introduziram conceitos importantes para as futuras LPs e que ainda esto em uso. Essas linguagens esto classificadas em trs perodos, de acordo com a poca em que surgiram.

1955 - 1965

FORTRAN (FORmula TRANslation)

COBOL (COmmon Business Oriented Language)

ALGOL 60 (ALGorithmic Oriented Language)

LISP (LISt Processing)

APL (A Programming Language)

BASIC (Beginners All-purpose Symbolic Instruction Code)

1965 - 1971 (LP's baseadas em ALGOL)

PL/I (Programming Language I)

SIMULA 67

ALGOL 68

PASCAL

Linguagens dos anos 80 (criadas na dcada de 70)

PROLOG (PROgramming in LOGic)

SMALL TALK

C

MODULA 2

ADA

Outras

Visual Basic

Delphi

Java X JavaScript

4. TRADUO DE UMA LINGUAGEM DE PROGRAMAO

Existem dois mtodos para se traduzir um programa escrito em uma determinada linguagem de programao para a linguagem de mquina: Interpretao e Compilao.

a) INTERPRETAO

Um interpretador traduz o programa fonte um comando por vez e chama uma rotina para executar esse comando. A vantagem que o interpretador no traduz comandos que podem no ser executados e pode relatar erros na linguagem original em cada ponto de execuo. Na prtica as linguagens interpretadas servem para a realizao de uma prototipagem rpida.

b) COMPILAO

Um Compilador traduz o programa fonte inteiro, produzindo um outro programa equivalente, em linguagem executvel. A vantagem que o compilador precisa traduzir um comando apenas uma nica vez, no importando quantas vezes ele ser executado. Na prtica o compilador usado para gerar o cdigo definitivo (eficiente) de um programa.

O processo de compilao - Fases Principais da Compilao:

5. VISUALG - Editor e Interpretador de PseudocdigosO Visualg 2.0 um programa que interpreta e executa algoritmos como um "programa" normal de computador, baseado em uma linguagem parecida com o "Portugol".

5.1 - Objetivos

Esta ferramenta permite aos alunos iniciantes em programao o exerccio dos seus conhecimentos num ambiente prximo da realidade. Para quem est iniciando nota-se que a abstrao de "rodar o chins", ou seja, de executar um programa apenas no papel, um grande obstculo (quase intransponvel para alguns) no aprendizado das tcnicas de elaborao de algoritmos. Por outro lado, submeter um iniciante aos rigores de uma linguagem de programao como Pascal ou ao esoterismo do C tambm exagerado. O ideal seria uma linguagem mais simples, parecida com o "Portugol", de grande popularidade nos meios acadmicos e presente nos livros mais utilizados; com ela, os princpios bsicos da programao estruturada podem ser ensinados sem que a curva de aprendizagem fosse ngreme. Alm disso, esta ferramenta deve tambm ser capaz de simular o que acontece na tela do computador com o uso dos famosos comandos "leia" e "escreva", bem como possibilitar a verificao dos valores das variveis, o acompanhamento passo a passo da execuo de um algoritmo (pelo seu grande valor didtico), e at mesmo suportar um modo simples de depurao. Aliado a tudo isto, existe um editor de texto com recursos razoveis (tais como abrir e salvar arquivos) e que dispe de todos os principais recursos de um ambiente grfico.

5.2 Instalao e Requerimentos de Hardware

O VisuAlG um programa simples, que no depende deDLLs, OCXs ou outros componentes.

Sua instalao no copia arquivos para nenhuma outra pasta a no ser aquela em que for instalado, e exige cerca de 1 MB de espao em disco. Pode ser executado sob Windows 95 ou posterior, e tem melhor aparncia com resoluo de vdeo de 800x600 ou maior.

5.3 A Tela Principal do VisuAlG A tela do VisuAlG compe-se da barra de tarefas, doeditor de textos (que toma toda a sua metade superior), do quadro de variveis (no lado esquerdo da metade inferior),do simulador de sada (no correspondente lado direito) e da barra de status. Quando o programa carregado, j apresenta no editor um "esqueleto" de pseudocdigo, com a inteno de poupar trabalho ao usurio e de mostrar o formato bsico que deve ser seguido. Explicaremos a seguir cada componente da interface do VisuAlG.

A Barra de Tarefas

Contm os comandos mais utilizados no VisuAlG (estes comandos tambm podem ser acessados pelo menu ou por atalhos no teclado).

Abrir (Ctrl-A): Abre um arquivo anteriormente gravado, substituindo o texto presente no editor. Se este tiver sido odificado, o VisuAlG pedir sua confirmao para salv-lo antes que seja sobreposto.

Novo (Ctrl-N): Cria um novo "esqueleto" de pseudocdigo, substituindo o texto presente no editor. Se este tiver sido modificado, o VisuAlG pedir sua confirmao para salv-lo antes que seja sobreposto.

Salvar (Ctrl-S): Grava imediatamente o texto presente no editor. Na primeira vez que um novo texto gravado, o VisuAlG pede seu nome e localizao.

Imprimir: Imprime imediatamente na impressora padro o textopresente no editor. Para configurar a impresso, use o comando Imprimir do menu Arquivo (acessvel tambm pelo atalho Ctrl-P).

Cortar (Ctrl-X): Apaga texto selecionado, armazenando-o em uma reade transferncia.

Copiar (Ctrl-C): Copia o texto selecionado para a rea de transferncia.

Colar (Ctrl-V): Copia texto da rea de transferncia para o local em que est o cursor.

Gravar bloco de texto: Permite a gravao em arquivo de um texto selecionado no editor. A extenso sugerida para o nome do arquivo .inc.

Inserir bloco de texto: Permite a insero do contedo de um arquivo. A extenso sugerida para o nome do arquivo .inc.

Desfazer (Ctrl-Z): Desfaz ltimo comando efetuado.

Refazer (Shift-Ctrl-Z): Refaz ltimo comando desfeito.

Localizar (Ctrl-L): Localiza no texto presente no editor determinada palavra especificada.

Substituir (Ctrl-U): Localiza no texto presente no editor determinada palavra especificada, substituindo-a por outra.

Corrigir Indentao (Ctrl-G): Corrige automaticamente a indentao(ou tabulao) do pseudocdigo, tabulando cada comando interno com espaos esquerda.

Numerar linhas: Ativa ou desativa a exibio dos nmeros das linhas na rea esquerda do editor. A linha e a coluna do editor em que o cursor est em um determinado momento tambm so mostradas na barra de status(parte inferior da tela). Por motivos tcnicos, esta opo automaticamente desativada durante a execuo do pseudocdigo, mas volta a ser ativada logo em seguida.

Mostrar variveis modificadas: Ativa ou desativa a exibio da varivel que estsendo modificada. Como o nmero de variveis pode ser grande, muitas podem estar fora da janela de visualizao; quando esta caracterstica est ativada, o VisuAlG rola a grade de exibio de modoque cada varivel fique visvel no momento em estsendo modificada. Este recurso especialmente til quando se executa um pseudocdigo passo a passo. Por questes de desempenho, a configurao padro desta caracterstica desativada,quando o pseudocdigo est sendo executado automaticamente. No entanto, basta clicar este boto para execut-lo automaticamente com a exibio ativada. No final da execuo, a configurao volta a ser desativada.

Executar (F9): Inicia (ou continua) a execuo automtica do pseudocdigo.

Executar com timer(Shift-F9): Insere um atraso (que pode ser especificado no intervalo ao lado) antes da execuo de cada linha. Tambm reala em fundo azul o comando que est sendo executado, da mesma forma que na execuo passo a passo. Intervalo do timer: Atraso em cada linha, para quando se deseja executar o pseudocdigo com timer. Passo (F8): Inicia (ou continua) a execuo linha por linha do pseudocdigo, dando ao usurio a oportunidade de acompanhar o fluxo de execuo, os valores das variveis e a pilha de ativao dos subprogramas. Parar (Ctrl-F2): Termina imediatamente a execuo do pseudocdigo. Evidentemente, este boto fica desabilitado quando o pseudocdigo no est sendo executado. Liga/desliga breakpoint(F5): Insere/remove um ponto de parada na linha em que esteja o cursor. Estes pontos de parada so teis para a depurao e acompanhamento da execuo dos pseudocdigos, pois permitem a verificao dos valores das variveis e da pilha de ativao de subprogramas. Desmarcar todos os breakpoints(Ctrl-F5): Desativa todos os breakpoints que estejam ativados naquele momento. Executar em modo DOS: Com esta opo ativada, tanto a entrada como a sada-padro passa a ser uma janela que imita o DOS, simulando a execuo de um programa neste ambiente. Gerar valores aleatrios: Ativa a gerao de valores aleatrios que substituem a digitao de dados. A faixa padro de valores gerados de 0 a 100 inclusive, mas pode ser modificada (basta alterar intervalo ao lado). Para a gerao de dados do tipo caractere, no h uma faixa pr-estabelecida: os dados gerados sero sempre strings de 5 letras maisculas. Intervalo dos valores aleatrios: Faixa de valores que sero gerados automaticamente, quando esta opo estiver ativada. Perfil (F7): Aps a execuo de um pseudocdigo, exibe o nmero de vezes que cada umas das suas linhas foi executada. til para a anlise de eficincia (por exemplo, nos mtodos de ordenao). Mostrar pilha de ativao (Ctrl-F3): Exibe a pilha de subprogramas ativados num dado momento. Convm utilizar este comando em conjunto com breakpoints ou com a execuo passo a passo. Ajuda (F1): Possibilita acesso s pginas de ajuda e s informaes sobre o VisuAlG. Quadro de Variveis formado por uma grade na qual so mostrados o escopo de cada varivel (se for do programa principal, ser global; se for local, ser apresentado o nome do subprograma onde foi declarada), seus nomes (tambm com os ndices, nos casos em que sejam vetores), seu tipo ("I" para inteiro, "R" para real, "C" para caractere e "L" para lgico) e o seu valor corrente. A verso atual do VisuAlG permite a visualizao de at 500 variveis (contando individualmente cada elemento dos vetores).

A Barra de StatusSituada na parte inferior da tela, esta barra contm dois painis: o primeiro mostra a linha e a coluna onde o cursor est, e o segundo mostra a palavra Modificado no caso em que o pseudocdigo tenha sido alterado desde que foi carregado ou salvo pela ltima vez. Nesta barra, h ainda um terceiro painel disponvel, que ainda no tem um uso especfico na atual verso.5.4 Menu do VisuAlG

Este menu compe-se de 7 partes:

Arquivo: Possui os comandos para se abrir, salvar e imprimir algoritmos:

Novo: Cria um novo "esqueleto" de pseudocdigo, substituindo o texto existente no editor. Se este texto anterior tiver sido modificado, o VisuAlG pedir sua confirmao para salv-lo antes que seja sobreposto. Abrir: Abre o texto de um pseudocdigo anteriormente gravado, substituindo o texto existente no editor. Se este tiver sido modificado, o VisuAlG pedir sua confirmao para salv-lo antes que seja sobreposto. Salvar: Salva imediatamente o texto presente no editor. Caso seja a primeira vez que um novo texto gravado, o VisuAlG pedir o nome do arquivo e sua localizao. Salvar como: Permite salvar o texto presente no editor exibindo antes uma janela na qual se pode escolher o nome do arquivo e sua localizao. Enviar por email: Permite o envio por email do texto presente no editor. Imprimir: Permite a impresso do algoritmo corrente, mostrando antes a janela de configurao de impresso (o correspondente boto da barra de tarefas imprime imediatamente o texto do pseudocdigo na impressora padro). Sair: Abandona o VisuAlG.

Alm destes comandos, h ainda a lista dos 5 ltimos algoritmos utilizados, que podem ser abertos diretamente ao se escolher o seu nome. Editar: Alm dos conhecidos comandos de um editor de texto (copiar, cortar, colar, desfazer, refazer, selecionar tudo, localizar, localizar de novo, substituir), h tambm as seguintes opes: Corrigir indentao: Corrige automaticamente a endentao do pseudocdigo, tabulando cada comando interno com espaos esquerda. Gravar bloco de texto: Permite a gravao em arquivo de um texto selecionado no editor. A extenso sugerida para o .inc.

Inserir bloco de texto: Permite a insero do contedo de um arquivo. A extenso sugerida para o nome do arquivo .inc. Exibir: Possui os comandos para ativar/desativar as seguintes caractersticas:

Nmero de linhas: Ativa/desativa a exibio da numerao das linhas na rea esquerda do editor. A numerao corrente da posio do cursor tambm mostrada na primeira parte da barra de status, situada na parte inferior da tela. Por motivos tcnicas, a numerao desativada durante a execuo do pseudocdigo, voltando situao anterior logo em seguida. Variveis modificadas: Ativa/desativa a exibio da varivel que est sendo modificada. Como o nmero de variveis pode ser grande, muitas podem estar fora da janela de visualizao; quando esta caracterstica est ativada, o VisuAlG rola a grade de exibio de modo que cada varivel fique visvel no momento em est sendo modificada. Este recurso especialmente til quando se executa um pseudocdigo passo a passo. Por questes de desempenho, a configurao padro desta caracterstica desativada, quando o pseudocdigo est sendo executado automaticamente. No entanto, basta clicar este boto para execut-lo automaticamente com a exibio ativada. No final da execuo, a configurao volta a ser desativada. Pseudocdigo: Contm os comandos relativos execuo do algoritmo:

Executar: Inicia (ou continua) a execuo automtica do pseudocdigo. Passo a passo: Inicia (ou continua) a execuo linha por linha do pseudocdigo, dando ao usurio a oportunidade de acompanhar o fluxo de execuo, os valores das variveis e a pilha de ativao dos subprogramas. Executar com timer: Insere um atraso (que pode ser especificado) antes da execuo de cada linha. Tambm reala em fundo azul o comando que est sendo executado, da mesma forma que na execuo passo a passo. Parar: Termina imediatamente a execuo do pseudocdigo. Evidentemente, este item fica desabilitado quando o pseudocdigo no est sendo executado. Liga/desliga breakpoint: Insere/remove um ponto de parada na linha em que esteja o cursor. Estes pontos de parada so teis para a depurao e acompanhamento da execuo dos pseudocdigos, pois permitem a verificao dos valores das variveis e da pilha de ativao de subprogramas. Desmarcar todos os breakpoints: Desativa todos os breakpointsque estejam ativados naquele momento. Executar em modo DOS: Com esta opo ativada, tanto a entrada como a sada-padro passa a ser uma janela que imita o DOS, simulando a execuo de um programa neste ambiente. Gerar valores aleatrios: Ativa a gerao de valores aleatrios que substituem a digitao de dados. A faixa padro de valores gerados de 0 a 100 inclusive, mas podeser modificada. Para a gerao de dados do tipo caractere, no h uma faixa pr-estabelecida: os dados gerados sero sempre strings de 5 letras maisculas. Perfil: Aps a execuo de um pseudocdigo, exibe o nmero de vezes que cada umas das suas linhas foi executada. til para a anlise de eficincia (por exemplo, nos mtodos de ordenao). Pilha de ativao: Exibe a pilha de subprogramas ativados num dado momento. Convm utilizar este comando em conjunto com breakpointsou com a execuo passo a passo.

Linguagens: Permite a traduo automtico do pseudocdigo presente no editor para outras linguagens de programao. Atualmente, apenas a traduo para Pascal est implementada, mas ainda em fase de testes. Ferramentas: Neste menu, possvel configurar algumas opes do VisuAlG: cores e tipos de letras na exibio do pseudocdigo, nmero de espaos para indentao automtica, etc. Ajuda: Entre outras coisas, possibilita acesso s pginas de ajuda e s informaes sobre o VisuAlG.5.5 A Linguagem de Programao do VisuAlg

Introduo

A linguagem que o VisuAlG interpreta bem simples:

uma verso portuguesa dos pseudocdigos largamente utilizados nos livros de introduo programao, conhecida como "Portugol". Foram acrescentados alguns comandos novos, com o intuito de criar facilidades especficas para o ensino de tcnicas de elaborao de algoritmos. Inicialmente, pensava-se em criar uma sintaxe muito simples e "liberal", para que o usurio se preocupasse apenas com a lgica da resoluo dos problemas e no com as palavras-chave, pontos e vrgulas, etc. No entanto, cheguei depois concluso de que alguma formalidade seria no s necessria como til, para criar um sentido de disciplina na elaborao do "cdigo-fonte".

A linguagem do VisuAlG permite apenas um comando por linha: desse modo, no h necessidade de tokens separadores de estruturas, como o ponto e vrgula em Pascal. Tambm no 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 go to.

Na verso atual do VisuAlG, com exceo das rotinas de entrada e sada, no h nenhum subprograma embutido, tal como Inc(), Sqr(), Ord(), Chr(), Pos(), Copy() ou outro.Importante: para facilitar a digitao e evitar confuses, todas as palavras-chave do VisuAlG, foram implementadas sem acentos, cedilha, etc. Portanto, o tipo de dados lgico definido como logico, o comando se..ento..seno definido como se..entao..senao, e assim por diante. O VisuAlG tambm no distingue maisculas e minsculas no reconhecimento de palavras-chave e nomes de variveis. Formato Bsico do Pseudocdigo e Incluso de ComentriosO formato bsico do nosso pseudocdigo o seguinte:algoritmo"semnome"

// Funo :

// Autor :

// Data :

// Seo de Declaraes

inicio

// Seo de Comandos

FimalgoritmoA primeira linha composta pela palavra-chave algoritmo seguida do seu nome delimitado por aspas duplas. Este nome ser usado como ttulo nas janelas de leitura de dados (nas futuras verses do VisuAlG, talvez seja utilizado este dado de outras formas). A seo que se segue a de declarao de variveis, que termina com a linha que contm a palavra-chave inicio. Deste ponto em diante est a seo de comandos, que continua at a linha em que se encontre a palavra-chave fimalgoritmo. Esta ltima linha marca o final do pseudocdigo: todo texto existente a partir dela ignorado pelo interpretador.

O VisuAlG permite a incluso de comentrios: qualquer texto precedido de "//" ignorado, at se atingir o final da sua linha. Por este motivo, os comentrios no se estendem por mais de uma linha: quando se deseja escrever comentrios mais longos, que ocupem vrias linhas, cada uma delas dever comear por "//". Tipos de DadosO VisuAlG prev quatro tipos de dados: inteiro, real, cadeia de caracteres e lgico(ou booleano). As palavras-chave que os definem so as seguintes (observe que elas no tm acentuao):

inteiro: define variveis numricas do tipo inteiro, ou seja, sem casas decimais.

real: define variveis numricas do tipo real, ou seja,com casas decimais.

caractere: define variveis do tipo string, ou seja, cadeia de caracteres.

logico: define variveis do tipo booleano, ou seja, com valor VERDADEIRO ou FALSO.

O VisuAlG permite tambm a declarao de variveis estruturadas atravs da palavra-chave vetor, como ser explicado a seguir. Nomes de Variveis e sua declarao Os nomes das variveis devem comear por uma letra e depois conter letras, nmeros ou underline, at um limite de 30 caracteres. As variveis podem ser simples ou estruturadas (na verso atual, os vetores podem ser de uma ou duas dimenses). No pode haver duas variveis com o mesmo nome, com a natural exceo dos elementos de um mesmo vetor. A seo de declarao de variveis comea com a palavra-chave var, e continua com as seguintes sintaxes:

:

: vetor "[""]" de

Na , os nomes das variveis esto separados por vrgulas. Na , os so separados por vrgulas, e tm a seguinte sintaxe:: ..

Na verso atual do VisuAlG, tanto como devem ser inteiros. Alm disso, exige-se evidentemente que seja maior do que . Exemplos:

var a: inteiro

Valor1, Valor2: real

vet: vetor [1..10] de real

matriz: vetor [0..4,8..10] de inteiro

nome_do_aluno: caractere

sinalizador: logico

Note que no h a necessidade de ponto e vrgula aps cada declarao: basta pular linha. A declarao de vetores anloga linguagem Pascal: a varivel vet acima tem 10 elementos, com os ndices de [1] a [10], enquanto matriz corresponde a 15 elementos com ndices [0,8], [0,9], [0,10], [1,8], [1,9], [1,10], ... at [4,10]. O nmero total de variveis suportado pelo VisuAlg 500 (cada elemento de um vetor contado individualmente).

Constantes e Comando de AtribuioO VisuAlG tem trs tipos de constantes:

Numricos: so valores numricos escritos na forma usual das linguagens de programao. Podem ser inteiros ou reais. Neste ltimo caso, o separador de decimais o ponto e no a vrgula, independente da configurao regional do computador onde o VisuAlg est sendo executado. O VisuAlG tambm no suporta separadores de milhares.

Caracteres: qualquer cadeia de caracteres delimitada por aspas duplas (").

Lgicos: admite os valores VERDADEIRO ou FALSO. A atribuio de valores a variveis feita com o operador