Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Lógica de Programação 
Aracele Garcia de Oliveira Fassbinder 
 
Curso Técnico em Informática 
 
 
 
 
 
 
 
 
 
 
Instituto Federal de Educação, Ciência e Tecnologia do Sul de Minas Gerais 
Muzambinho - MG 
2012 
 1 
Indicação de ícones 
Os ícones são elementos gráficos utilizados para ampliar as formas de linguagem e 
facilitar a organização e a leitura hipertextual. 
 
Atenção: indica pontos de maior relevância no texto. 
 
Saiba mais: oferece novas informações que enriquecem o 
assunto ou “curiosidades” e notícias recentes relacionadas ao 
tema estudado. 
 
Glossário: indica a definição de um termo, palavra ou 
expressão utilizada no texto. 
 
Mídias Integradas: sempre que se desejar que os estudantes 
desenvolvam atividades empregando diferentes mídias: 
vídeos, filmes, jornais, ambiente virtual de ensino e 
aprendizagem e outras. 
 
Atividades de aprendizagem: apresenta atividades em 
diferentes níveis de aprendizagem para que o estudante possa 
realizá-las e conferir o seu domínio do tema estudado. 
 
 
 2 
Sumário 
 
Palavra da professora-autora ........................................................................................ 4 
Apresentação da disciplina ............................................................................................ 5 
Projeto instrucional ........................................................................................................ 7 
Aula 1 - Introdução à Lógica de Programação ......................................................................... 9 
1.1 História da Computação ................................................................................................... 9 
1.2 Lógica de Programação, Algoritmos e Programas ......................................................... 12 
1.3 Desenvolvimento de Algoritmos .................................................................................... 16 
1.4 Editor e Interpretador de Pseudocódigos: VisuALG ...................................................... 19 
1.4.1Como obter o VisuALG?........................................................................................ 19 
1.4.2Executando o VisuALG ......................................................................................... 20 
1.4.3A linguagem do VisuALG...................................................................................... 21 
1.4.4Comando de Saída de Dados .................................................................................. 23 
1.4.5Seu primeiro algoritmo no VisuALG: Olá Mundo ................................................. 24 
1.4.6Comando de Entrada de Dados .............................................................................. 26 
1.5 Atividades propostas para a aula 1 ................................................................................. 28 
Aula 2 – Variáveis, Constantes, Tipos de Dados e Operadores ............................................ 29 
2.1 Variáveis e Constantes .......................................................................................................... 29 
2.2 Identificadores ....................................................................................................................... 30 
2.3 Tipos de Dados ...................................................................................................................... 31 
2.4 Declarações de Variáveis ...................................................................................................... 32 
2.5 Atribuição de Valores para Variáveis ................................................................................... 33 
2.6 Operadores ............................................................................................................................ 36 
2.7 Definição do Problema Base: ................................................................................................ 41 
2.8 Atividades propostas para a aula 2 ........................................................................................ 43 
Aula 3 – Estruturas Condicionais ou de Seleção .................................................................... 42 
3.1 Desvio e Seleção do Fluxo de Instruções .............................................................................. 42 
3.2 Se...entao...senao ................................................................................................................... 44 
3.2.1 Resolvendo o “problema base” no VisuALG ........................................................ 46 
3.2.2 Condição Composta e os operadores booleanos.................................................... 46 
3.2.2 Aninhamento da estrutura se ................................................................................. 48 
3.3 Caso...escolha ........................................................................................................................ 48 
3.3.1 Resolvendo o “problema base” no VisuALG ........................................................ 49 
 3 
3.4 Atividades propostas para a aula 3 ........................................................................................ 51 
Aula 4 – Estruturas de Repetição ............................................................................................ 52 
4.1 Contexto ................................................................................................................................ 52 
4.2 Para...faça .............................................................................................................................. 53 
4.3 Enquanto ............................................................................................................................... 54 
4.4 Repita .................................................................................................................................... 55 
4.5 Resolvendo o “problema base” ............................................................................................. 56 
4.6 Atividades propostas para a aula 4 ........................................................................................ 60 
Aula 5 - Variáveis Indexadas Homogêneas ............................................................................. 61 
5.1 Vetores e Matrizes ................................................................................................................. 61 
5.2 Variáveis Indexadas Unidimensionais (vetor) ...................................................................... 63 
5.2.1 Trabalhando com Vetores no VisuALG ................................................................ 64 
5.2.2 Resolvendo o problema base ................................................................................. 67 
5.3 Variáveis Indexadas Bidimensionais (matriz) ....................................................................... 70 
5.3.1 Trabalhando com Matrizes no VisuALG .............................................................. 72 
5.4 Atividades propostas para a aula 5 ........................................................................................ 74 
Aula 6 - Subalgoritmos ............................................................................................................. 75 
6.1 Modularização do Código ..................................................................................................... 75 
6.1.1 Funções .................................................................................................................. 76 
6.1.2 Procedimentos ....................................................................................................... 81 
6.2 Atividades propostas para a aula 6 ........................................................................................ 84 
Referências .................................................................................................................................. 85 
Currículo da professora-autora.................................................................................. 87 
 
 
 4 
Palavra da professora-autora 
Caro estudante, 
Após o estudo de vários assuntos relacionados ao mundo da Informática, chegou a hora 
de dar um passo essencial na sua formação: o estudo da Lógica de Programação. A 
Lógica de Programação é muito importante para todos aqueles que buscam 
compreender a melhor forma de se comunicar com os computadores! 
 
Este caderno sobre Lógica de Programação possui um papel fundamental na sua 
formação como "Técnico em Informática", pois ele traz o conteúdo necessário para que 
você consiga expressar a resolução de problemas de uma forma que o computador 
entenda, ou seja, através dos algoritmos implementados em uma determinada linguagem 
de programação. Aproveite ao máximo todo material contido aqui, dedique-se muito, 
pois estamos falando da introdução ao desenvolvimento de sistemas. Após todo este 
estudo, você terá condições de passar de um simples usuário de computador para um 
programador de sistemas, seja web, desktop ou para dispositivos móveis. 
 
A aprendizagem de programação de computadores existe muito esforço e prática. 
Para terminar, deixo a você algumas dicas úteis de como estudar algoritmos: 
 Faça a leitura deste caderno e procure ler materiais adicionais. 
 Pergunte sempre que estiver com dúvida. 
 Resolva os exercícios propostos e os complementares. 
 Comece a resolver os algoritmos pelos mais simples e avance quando estiver 
confiante de que aprendeu o conteúdo que lhe foi proposto. 
 Crie rotinas de estudo. 
 Um assunto é sequência do outro. Concentre-se em manter o mesmo ritmo de 
aprendizagem ao longo de toda a disciplina, a fim de obter melhores resultados. 
 A única maneira de aprender algoritmos é praticando, resolvendo todos eles. 
Não basta apenas ler o conteúdo e assistir as aulas. Fique atento sobre isso! 
 
Bons estudos! 
Um grande abraço! 
 
Professora Aracele Garcia de Oliveira Fassbinder 
 5 
Apresentação da disciplina 
Olá, car@ estudante! 
Através desta disciplina você descobrirá a importância de conhecer os fundamentos do 
desenvolvimento de sistemas. A Lógica de Programação é a base para as demais 
disciplinas do seu curso e é através dela que você conseguirá o embasamento necessário 
para conseguir escrever algoritmos em Linguagens de Programação importantes para o 
desenvolvimento de sistemas. 
 
O objetivo deste material é auxiliá-lo no conhecimento de conteúdos dos fundamentos 
da Lógica de Programação e desenvolvimento de algoritmos. Com ele, você perceberá a 
importância de conhecer esses conceitos para aplicá-los de maneira coerente na 
construção de algoritmos que automatizem tarefas feitas manualmente ou resolvem 
algum tipo de problema específico. 
 
Programar exige muito raciocínio, paciência e treino, muito treino. 
É importante lembrar que a aprendizagem é um processo contínuo. Além disso, cada 
pessoa aprende de uma maneira, ou seja, possui o seu próprio estilo de aprendizagem. 
Sendo assim, esta disciplina possui diversas atividades que contribuem para o 
desenvolvimento do seu raciocínio lógico e comunicação interpessoal. 
 
Para que você obtenha sucesso, será necessário que se envolva com as atividades 
propostas, buscando cumprir as tarefas, seguir as instruções, agir com organização e 
controle sobre o tempo previsto. Será preciso, também, participar de forma ética e ativa 
nos fóruns e encontros presenciais, com os colegas da turma e com o tutor presencial. 
O seu sucesso depende exclusivamente de você! Mas isso não significa que você está 
sozinho, conte sempre com os colegas, tutores e com a professora. Entre em contato 
através do ambiente virtual de aprendizagem, através de fóruns de dúvidas e chats. 
 
O estudo da da Aula 1 deste caderno é importantíssima ! 
Procure perceber os conceitos relacionados com a lógica de programação: a história do 
computador, instruções, algoritmos e a ferramenta que vamos utilizar para implementar 
os nossos algoritmos. O objetivo desta aula é que você perceba e identifique o que é a 
 6 
Lógica e a importância desse conceito para aprender algoritmos, ou seja, aprender a 
base da programação ! 
 
A segunda aula traz os tipos de dados possíveis de uso em nossos pseudocódigos, 
conceitos e regras para uso de variáveis, além de expressões e operações. Estes novos 
conceitos são importantes e precisamos conhecê-los antes de efetivamente começar a 
trabalhar com programação! 
 
Na terceira aula você continuará aprendendo sobre os pseudocódigos, mas trabalhará de 
forma específica com as Estruturas Condicionais. 
 
Na quarta aula você aprenderá a trabalhar com as Estruturas de Repetição, a fim de 
repetir blocos de comandos para resolver problemas que envolvem tarefas repetitivas. 
 
Na quinta aula você trabalhará com formas de armazenamento um pouco mais 
complexas que as variáveis aprendidas nas primeiras aulas. 
 
E, por fim, você aprenderá uma técnica muito útil para modularizar o seu código e 
deixá-lo mais legível. 
 
Esta é a base da Lógica de Programação, independente da Linguagem de Programação 
que será utilizada para desenvolver algoritmos. 
 
Fica aqui o desafio de concluirmos este estudo com SUCESSO! 
Profª. Aracele Garcia de Oliveira Fassbinder 
 
 7 
Projeto instrucional 
Disciplina: Lógica de Programação (carga horária: 60h). 
Ementa: Introdução à Computação, Lógica de Programação, Instruções, Algoritmos, 
comandos de entrada e saída de dados, dados, tipos de ados, estruturas sequenciais, 
estruturas condicionais, estruturas de repetição, variáveis indexadas homogêneas e 
subprogramação. 
AULA OBJETIVOS DE APRENDIZAGEM MATERIAIS 
CARGA 
HORÁRIA 
(horas) 
1. Introdução à 
Lógica de 
Programação 
Conhecer a história da 
Computação e compreender a 
sua evolução. 
 
Compreender a importância 
da Lógica e das Linguagens 
de Programação para o 
desenvolvimento de sistemas. 
 
 
 
 
 
 
 
 
Caderno e 
Ambiente Virtual 
de Ensino- 
Aprendizagem. 
 
http://eadinfo.muz.i
fsuldeminas.edu.br/ 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10 
2. Variáveis e 
Operadores 
Definir e compreender o uso 
de variáveis e constantes. 
 
Compreender o que são e 
quais são os tipos de dados 
básicos. 
 
Conhecer a definição e o 
correto uso de expressões e 
operadores. 
10 
3. Estruturas de 
Decisão 
Compreender o uso das 
estruturas condicionais ou de 
seleção no processo de 
criação de algoritmos. 
 
Resolver algoritmos que 
incluem o uso de estruturas 
condicionais. 
10 
4. Estruturas de 
Repetição 
Compreender o uso das 
estruturas de repetição no 
processo de criação de 
algoritmos. 
 
Resolver algoritmos que 
incluem o uso de estruturas 
de repetição e as estruturas já 
estudadas. 
 
 
 
10 
http://eadinfo.muz.ifsuldeminas.edu.br/
http://eadinfo.muz.ifsuldeminas.edu.br/
 8 
5. Variáveis 
Compostas 
Homogêneas: Vetores 
e Matrizes 
Compreender o uso das 
variáveis compostas 
homogêneas. 
 
Resolver algoritmos que 
incluem o uso de variáveis 
indexadas homogêneas. 
 
 
 
Caderno e 
Ambiente Virtual 
de Ensino- 
Aprendizagem. 
 
http://eadinfo.muz.i
fsuldeminas.edu.br 
 
10 
6. Subalgoritmos 
Compreender a aplicação da 
modularização do código 
para resolver problemas mais 
complexos. 
 
Resolver problemas que 
envolvam a modularização 
do código. 
10 
 
 
http://eadinfo.muz.ifsuldeminas.edu.br/
http://eadinfo.muz.ifsuldeminas.edu.br/
 9 
Aula 1 - Introdução à Lógica de Programação 
Objetivos 
Conhecer a história da Computação e compreender a sua evolução. 
Compreender a importância da Lógica e das Linguagens de Programação para o 
desenvolvimento de sistemas. 
1.1 História da Computação 
Por volta de 4000-1200 anos a.C., habitantes da primeira civilização conhecida na 
Suméria mantém um registro de transações comerciais emtábuas de argila. 
A necessidade de contar e quantificar coisas mais complexas que os cálculos que 
utilizavam somente os dedos e recursos primários foram apoiados pelo desenvolvimento 
do Ábaco, inventado na Babilônia, por volta de 3000-2400 a.C. 
 
Figura 1.1 - Ábaco Russo 
Fonte: Wikipedia (Ábaco), 2012 
A evolução constante da matemática e das ciências exatas fez com que Blaise Pascal 
criasse, por volta de 1640 d.C., um somador baseado no mecanismo de engrenagem, o 
qual é chamado de “Pascalene” ou “Pascalina”, a primeira máquina somadora mecânica. 
Pascal, que aos 18 anos trabalhava com seu pai em um escritório de coleta de impostos 
na cidade de Rouen, desenvolveu a máquina para auxiliar o seu trabalho de 
contabilidade. Entretanto, apenas em 1672, o alemão Gottfried Leibniz conseguiu o que 
Pascal não tinha conseguido: criar uma calculadora mais completa, que efetuava a soma 
e a divisão, além da raiz quadrada. 
 10 
 
Leia mais sobre a história dos computadores e da computação. Acesse: 
http://www.tecmundo.com.br/mac-os-x/1697-a-historia-dos-computadores-e-da-
computacao.htm#ixzz2FIrZSpgE 
 
Figura1.2 - Máquina de Pascal 
Fonte: A era da Tecnologia, 2012 
A Máquina de Pascal e todas as outras que apareceram antes ou depois dela estavam 
longe de serem consideradas um computador, pois não podiam ser programadas, isto 
quer dizer que a entrada era feita apenas de números, mas não de instruções a respeito 
do que fazer com estes números. 
Até que, por volta de 1833, Charles Babbage, hoje conhecido como o "Pai do 
Computador", iniciou o projeto Máquina Analítica com Cartões Perfurados, que é 
considerado um dos primeiros modelos teóricos de um computador, pois era possível 
passar instruções para que a máquina as reproduzisse automaticamente, com pouca 
intervenção humana. 
 
Figura 1.3 - Máquina Analítica de Charles Babbage 
Fonte: DMA Departamento de Matemática Aplicada, 2012 
http://www.tecmundo.com.br/mac-os-x/1697-a-historia-dos-computadores-e-da-computacao.htm#ixzz2FIrZSpgE
http://www.tecmundo.com.br/mac-os-x/1697-a-historia-dos-computadores-e-da-computacao.htm#ixzz2FIrZSpgE
 11 
Os primeiros programas para computador foram baseados nos estudos publicados pela 
matemática Ada Augusta Byron King (1815-1852), mais conhecida como Condessa de 
Lovelace ou Ada Lovelace. Ela foi pioneira na área de Lógica de Programação e é 
principalmente conhecida por ter escrito um programa que poderia utilizar a máquina 
analítica de Charles Babbage. Este programa utilizava os conceitos de subprogramação 
e repetições. Ela também iniciou o desenvolvimento do que hoje conhecemos como 
desvios condicionais. Os trabalhos iniciados por Ada inspiraram o trabalho de Alan 
Turing que, em 1940, construiu o primeiro computador moderno. 
 
Figura 1.4 - Primeira efetiva programadora de computadores 
Fonte: American University in Bulgaria, 2012 
Os acontecimentos seguintes envolveram diversos matemáticos, lógicos, físicos e 
engenheiros. Os trabalhos consistiam, em sua maioria, em continuar uma linha de 
trabalho já iniciada por outra pessoa ou na criação de um novo trabalho que viesse a 
refutar algum outro. 
Refutar significa encontrar um raciocínio ou um argumento que contradiz o 
que outra pessoa está dizendo. 
Citaremos alguns nomes influentes para a história dos computadores e da lógica de 
programação, mas deixaremos para você a busca por novas informações. Tente 
pesquisar sobre George Boole (Lógica Simbólica), Cantor (Teoria dos Conjuntos), 
Gottlob Fregue (Lógica, Teoria da Linguagem) e outros lógicos e matemáticos, tais 
como G. Peano, Bertrand Russel, Whitehead, Godel, Alonso Church, Alan Turing 
(Teoria da Computabilidade e Máquina de Turing), Isaac Asimov (Robot). 
 12 
Além disso, procure conhecer mais sobre a história dos computadores modernos, 
pesquise por Bell Labs, Colossus, Mark I, IBM, ENIAC, Grace Murray (programadora 
do Mark I) e Edsger Dijkstra (construiu um algoritmo eficiente para caminhos curtos), 
dentre outros. 
Saiba mais sobre a História da Computação através do livro digital “História da 
Computação – o caminho do pensamento e da tecnologia”, escrito por Cléuzio Fonseca 
Filho e disponibilizado aqui: 
http://www.pucrs.br/edipucrs/online/historiadacomputacao.pdf 
Biografia de Alan Turing em http://informatica.hsw.uol.com.br/alan-turing.htm 
 
1.2 Lógica de Programação, Algoritmos e Programas 
A Lógica é a Ciência que estuda o raciocínio. Raciocínio pode ser definido como uma 
forma de processar informações simbólicas a fim de atingir um determinado objetivo ou 
conhecimento. A Lógica relaciona-se intimamente com três grandes áreas de 
conhecimento, tais como a Matemática, a Informática, a Filosofia e a Linguística. 
Vários dos fundadores da moderna Ciência da Computação foram lógicos. A 
Inteligência Artificial Simbólica tem na Lógica um de seus principais pilares. Toda a 
Matemática utiliza-se, em sua expressão linguística, de conceitos puramente lógicos; 
não é possível daí entender Matemática seriamente sem entender em detalhes a Lógica, 
pelo menos em suas bases elementares.(FASSBINDER, 2010) 
A Lógica, quando aplicada na Matemática, para estudar o raciocínio matemático, pode 
ser chamada de Lógica Matemática. No caso da área de Informática, temos a Lógica de 
Programação, a qual é uma aplicação da lógica para escrevermos Algoritmos, 
representados em uma determinada Linguagem de Programação que o computador 
entenda e, assim, fazer com que o computador resolva algum problema ou automatize 
alguma tarefa. 
http://www.pucrs.br/edipucrs/online/historiadacomputacao.pdf
http://www.pucrs.br/edipucrs/online/historiadacomputacao.pdf
http://informatica.hsw.uol.com.br/alan-turing.htm
 13 
A Lógica de Programação permite que criemos uma sequência de instruções ou passos a 
serem seguidos pelo computador a fim de obtermos uma solução para um problema. 
Desta forma, 
LÓGICA DE PROGRAMAÇÃO é a técnica de encadear os pensamentos para se atingir 
um objetivo. Estes pensamentos podem ser descritos como uma sequência de instruções. 
INSTRUÇÕES são conjuntos de regras ou normas definidas para a realização de uma 
tarefa. Em informática, instrução é a informação que indica a um computador uma ação 
elementar a ser executada. 
Antes de falarmos o que é um algoritmo, pense na seguinte situação “Comer uma 
maça”. Esta tarefa bem simples exige uma sequência de instruções logicamente 
ordenadas para que, ao final, o objetivo seja alcançado, ou seja, que você consiga comer 
a maça! 
 
Figura 1.5 - Sequência de instruções para comer uma maça 
Fonte: Comidas e Bebidas, 2012 
Uma sugestão de instruções válidas e ordenadas para que você consiga comer uma 
maça: 
1. Pegar a maça 
2. Lavar a maça 
3. Pegar uma faca 
4. Descascar a maça com a faca 
5. Comer a maça 
6. Jogar o caroço e as sementes no lixo 
 
Não tem como você jogar o caroço e as 
sementes no lixo sem antes ter 
descascado e comido a maça! 
Você percebe a importância de raciocinar 
sobre as instruções e como elas devem 
ser ordenadas para que o resultado final 
seja alcançado com sucesso? 
 14 
Agora podemos definir um dos conceitos mais importantes da área de desenvolvimento 
de programas para quaisquer tipos de dispositivos, sejam eles computadores, tabletes, 
celulares, televisão digital, carros, equipamentos domésticos, dentre outros: o 
ALGORITMO! 
Um ALGORITMO é um conjunto de instruções, logicamente ordenadas, para a 
obtenção de um objetivo específico. 
Leia mais sobre a definição de algoritmo através do artigo “O que é um 
algoritmo de computador”, disponível no portal HowStuffWorks. Acesse: 
http://informatica.hsw.uol.com.br/questao717.htm 
A noção de algoritmo é muito simples e não é específica da área de informática. Os 
algoritmos fazem parte da sua vida, mesmo que você não tenha consciência disso! 
Todas as situações descritas abaixo fazem parte da vida das pessoas e elas, 
mentalmente, criamum algoritmo para resolvê-las. 
 Explicar para uma pessoa como ela faz para chegar a um determinado lugar. 
o Você precisa saber a origem da pessoa. A partir disso, você verifica todos 
os passos lógicos para que ela consiga chegar ao seu destino. 
 Fazer um bolo seguindo uma receita. 
o Você precisa identificar os ingredientes (a entrada do seu algoritmo) e 
seguir alguns passos básicos, tais como pegar uma vasilha, colocar os 
ingredientes, batê-los com uma batedeira, pegar uma forma, untar a 
forma, colocar a massa, ligar o forno, colocar a forma e esperar um 
tempo até que o bolo fique pronto. 
 Sair para trabalhar. 
o Você espera o despertador tocar. Se ele tocar você o desliga. Aí você vai 
até o banheiro, escova os dentes, troca de roupa, toma café. Se estiver 
chovendo, então você pega um guarda-chuva, sai de casa e pensa um 
caminho para chegar ao trabalho. 
http://informatica.hsw.uol.com.br/questao717.htm
 15 
 A ordem das instruções é importante para se atingir o resultado desejado. 
Além disso, o algoritmo sempre deve ter um fim, para que o objetivo esperado seja 
alcançado. Agora, o mais importante de tudo: cada pessoa raciocina de uma forma, ou 
seja, cada pessoa desenvolve algoritmos de acordo com os seus pensamentos, suas 
experiências de vida e sua compreensão sobre o problema. Desta forma, teremos 
algoritmos diferentes, mas que conseguem resolver o mesmo problema proposto! 
Os algoritmos serão utilizados para desenvolvermos programas que resolvem problemas 
específicos ou automatizam tarefas até então realizadas de forma manual. 
Automação é um processo em que uma tarefa deixa de ser desempenhada pelo 
homem e passa a ser realizada por máquinas, não importando se estas máquinas são 
mecânicas ou eletrônicas. (SALIBA, 1993) 
Para que uma tarefa seja automatizada devem-se conhecer todas as etapas necessárias 
para promover essa automatização e, além disso, o dispositivo que desempenhará este 
processo deve estar apto a garantir a repetição da tarefa, conforme programação 
definida. Para que isso aconteça, você deve ter em mente o seguinte: 
 Programas são escritos em determinadas Linguagens de Programação. 
 Existem diversas Linguagens de Programação. Então você deve escolher aquela 
que pode ser entendida pelo dispositivo que desempenhará a tarefa que está 
sendo automatizada. 
 Você pode escrever programas para computadores, dispositivos móveis, carros, 
microondas, geladeiras, televisões digitais, dentre outros. 
Artigo “Os 10 tipos de computadores”, disponível no portal HowStuffWorks 
http://informatica.hsw.uol.com.br/10-tipos-de-computador.htm 
http://informatica.hsw.uol.com.br/10-tipos-de-computador.htm
 16 
De forma bastante geral, neste caderno, trataremos algoritmo, programa, 
software e sistemas como termos parecidos e que possuem a mesma essência: são 
escritos em uma linguagem de programação que o computador ou outro equipamento 
entenda, são constituídos de instruções lógicas ordenadas, possuem um fim e, 
principalmente, realizam uma determinada tarefa ou resolvem um determinado 
problema. 
Leia mais sobre as definições de algoritmo, programa, software e sistema em: 
 http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_de_computadores 
 http://pt.wikipedia.org/wiki/Programa_de_computador 
 http://pt.wikipedia.org/wiki/Software 
 http://pt.wikipedia.org/wiki/Sistema 
1.3 Desenvolvimento de Algoritmos 
A primeira preocupação no momento de desenvolver um algoritmo é dividir o problema 
apresentado nas três fases fundamentais de qualquer resolução lógica: 
ENTRADA PROCESSAMENTO SAÍDA 
Imagine o seguinte problema: 
Você precisa calcular a média final dos alunos da disciplina de Lógica de Programação, 
sendo que eles realizarão três provas parciais (P1, P2, P3), onde a média aritmética 
simples é obtida através da fórmula (P1 + P2 + P3)/3. 
Problema 
Calcular a média aritmética simples dos alunos da disciplina de 
Lógica de Programação. 
Solução Esperada A média final dos alunos. 
Dados de Entrada P1, P2, P3 
Processamento O cálculo desta fórmula: Média= (P1 + P2 + P3)/3 
Dados de Saída A média final dos alunos. 
http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_de_computadores
http://pt.wikipedia.org/wiki/Programa_de_computador
http://pt.wikipedia.org/wiki/Software
http://pt.wikipedia.org/wiki/Sistema
 17 
A próxima etapa consiste em programar este algoritmo em uma Linguagem de 
Programação que o computador entenda. 
Ou seja, uma Linguagem de Programação é uma forma de codificar o seu algoritmo 
para que seja possível manter uma comunicação com o computador. Desta forma, ele 
poderia executar todo aquele algoritmo que foi desenvolvido por um programador. 
Programador é o nome que recebe uma pessoa que programa ou desenvolve 
sistemas, escreve algoritmos, etc... 
Imagine a seguinte situação: uma conversa entre duas pessoas: 
 
Figura 1.6 - Ilustrando a ideia de Linguagens de Programação 
Fonte: Zun, 2012 
 Imagine que a menina seja o seu programa e o menino seja o computador, mas 
vocês estão tentando se comunicar! 
 Quando a menina diz “Olá, tudo bem?!”, este é o algoritmo que ela criou. Ele 
tem um fim, segue uma ordem (a ordem das palavras e da gramática da 
linguagem utilizada) e possui um objetivo: cumprimentar você. 
 O Português é a linguagem de Programação que a menina utilizou para se 
comunicar com você, pois você também entende esta língua! 
Então, da mesma forma que usamos linguagens para nos comunicarmos com outras 
pessoas e estas linguagens possuem regras que devemos seguir para conseguirmos nos 
comunicar, isso também acontece com os algoritmos (programas, sistemas, softwares, 
etc...) e os computadores (dispositivos móveis, etc...). 
 18 
A Linguagem de Programação que utilizaremos para criar os nossos algoritmos neste 
caderno é conhecida como “Portugol”. É uma linguagem simples, fácil de ser 
compreendida, muito utilizada no ensino de programação e é baseada na língua 
portuguesa. 
Alguns autores da área de Lógica de Programação não consideram Portugol 
como uma linguagem de programação completa. Muitas a chamam de pseudo-
linguagem. Ela é realmente muito utilizada no ensino introdutório de algoritmos e 
programação, mas para desenvolver programas mais robustos você vai ter que optar por 
outras linguagens, tais como Java, C, C++, dentre outras. 
Mas os computadores não entendem o Português, certo? A linguagem que os 
computadores entendem é a binária. Desta forma, existe um programa de fins 
específicos, conhecido por “Compilador”, que traduz o seu algoritmo escrito em uma 
linguagem de programação para a linguagem de máquina entendida pelos 
computadores! 
Leia mais sobre o que são compiladores. Acesse: 
http://pt.wikipedia.org/wiki/Compiladores 
É comum, quando se trabalha com programação, fazermos uso de um ambiente 
específico para a escrita e testes de algoritmos. Ambientes mais complexos e robustos 
são chamados de IDE (Integrated Development Environment) ou Ambiente de 
Desenvolvimento Integrado. Este tipo de ambiente possui diversos recursos acoplados e 
disponíveis para os programadores, tais como editor, compilador, linker, depurador, 
modelagem, testes, dentre outros. 
Saiba mais sobre Ambientes de Desenvolvimento Integrado. Acesse: 
http://pt.wikipedia.org/wiki/Ambiente_de_Desenvolvimento_Integrado 
http://pt.wikipedia.org/wiki/Compiladores
http://pt.wikipedia.org/wiki/Ambiente_de_Desenvolvimento_Integrado
 19 
Neste caderno, faremos uso do VisuALG, que não pode ser classificado como um IDE, 
pois é um ambiente simples para programação de algoritmos em Portugol. O VisuALG 
é um editor e interpretador de Pseudocódigos, desenvolvido pela empresa Apoio 
Informática sob domínio público, em uma versão freeware. 
Você poder ler mais informações sobre o VisuALG acessando o site da 
empresa Apoio Informática: http://www.apoioinformatica.inf.br/o-visualg 
A partir de agora começaremos a parte práticado conteúdo deste caderno. Vamos 
perceber a forma correta de fazer uso do VisuALG e também vamos compreender a 
linguagem que usaremos para construir nossos algoritmos. 
O conteúdo desta aula não tem a pretensão de ser totalmente original. Algumas 
figuras e explicações fazem parte do material disponibilizado pela empresa Apoio 
Informática. Acesse: http://www.apoioinformatica.inf.br/a-tela-principal. 
1.4 Editor e Interpretador de Pseudocódigos: VisuALG 
É um programa criado pela empresa Apoio Informática e é muito útil para quem está 
iniciando seus aprendizados em Lógica de Programação ou na construção de 
Algoritmos Computacionais. 
Nele você pode digitar os comandos em Portugol e ver seu programa funcionando! 
1.4.1 Como obter o VisuALG? 
A versão 2.5, disponível neste endereço abaixo, é uma versão stand-alone, que não 
precisa ser instalada e funciona até dentro de pendrives ! 
Segundo a Wikipédia, são chamados stand alone, ou stand-alone (literalmente 
"ficam em pé por si só") os programas completamente auto-suficientes: para seu 
funcionamento não necessitam bibliotecas ou outros arquivos auxiliares. 
http://www.apoioinformatica.inf.br/o-visualg
http://www.apoioinformatica.inf.br/a-tela-principal
http://www.apoioinformatica.inf.br/
 20 
Você pode obter a versão stand-alone aqui: http://www.guanabara.info/2007/09/visualg-v25/ 
A versão do VisuALG que será utilizada também estará disponível para você através do 
ambiente virtual de ensino e aprendizagem. 
Basta fazer o download do arquivo, salvá-lo no seu computador e clicar duas vezes 
sobre o mesmo para que a tela inicial apareça. 
1.4.2 Executando o VisuALG 
Basta dar dois cliques no arquivo VisuAlg25.exe. 
Imediatamente aparecerá a tela principal do VisuALG: 
 
Figura 1.7 - Tela Principal do VisuALG 
Fonte: Elaborado pela Autora 
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. 
http://www.guanabara.info/2007/09/visualg-v25/
 21 
A Barra de Tarefas contém os comandos mais utilizados no VisuALG (estes comandos 
também podem ser acessados pelo menu ou por atalhos no teclado). 
 
Figura 1.8 - Barra de Tarefas do VisuALG 
Fonte: Apoio Informática: a Tela do VisuALG, 2012 
Veja mais explicações sobre a barra de tarefas do VisuALG. Acesse: 
http://www.apoioinformatica.inf.br/a-tela-principal 
1.4.3 A linguagem do 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". 
A linguagem do VisuAlg permite apenas um comando por linha. 
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 reservadas e nomes identificadores de 
variáveis. 
Em qualquer linguagem de programação, se uma palavra é reservada, ou seja, se ela é 
própria da linguagem de programação, então você não pode utilizá-la fora daquele 
http://www.apoioinformatica.inf.br/a-tela-principal
 22 
contexto para o qual ela foi criada Veja a lista de palavras reservadas da linguagem do 
VisuALG: 
Figura 1.9 - Palavras Reservadas da Linguagem do VisuALG 
Fonte: TONET, 2012, p. 49 
O formato básico do pseudocódigo, ou seja, dos algoritmos que podem ser criados no 
VisuALG é o seguinte: 
 
Onde: 
 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. 
 A seção seguinte é a de declaração de variáveis, que termina com a linha que 
contém a palavra-chave inicio. 
 23 
 Deste ponto em diante está a seção de comandos, que continua até a linha em 
que se encontra 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 uma linha: quando se deseja escrever comentários mais longos, 
que ocupem várias linhas, cada uma delas deverá começar por "//". 
1.4.4 Comando de Saída de Dados 
escreva (<lista-de-expressões>) 
O comando acima escreve no dispositivo de saída padrão o conteúdo de cada uma das 
expressões que compõem <lista-de-expressões>. As expressões dentro desta lista 
devem estar separadas por vírgulas; depois de serem avaliadas, seus resultados são 
impressos na ordem em que aparecem. 
É possível especificar o número de espaços no qual se deseja escrever um determinado 
valor. Por exemplo, o comando escreva(x:5) escreve o valor da variável x em 5 espaços, 
alinhado-o à direita. Para variáveis reais, pode-se também especificar o número de casas 
fracionárias que serão exibidas. Por exemplo, considerando y como uma variável real, o 
comando escreva(y:6:2)escreve seu valor em 6 espaços colocando 2 casas decimais. 
escreval (<lista-de-expressões>) 
Idem ao anterior, com a única diferença que pula uma linha em seguida. 
Releia este item sempre que estiver com dúvidas sobre o comando de escrita 
do VisuALG. Inicialmente, você pode ficar um pouco confuso sobre esta ideia de lista 
de expressões, mas após a aula 2 você compreenderá que é possível escrever valores 
armazenados em variáveis, valores diretos, textos que aparecem entre as duplas e a 
concatenação entre textos que aparecem entre aspas duplas, valores diretos e valores 
armazenados em variáveis. Exemplos: escreval (2), escreval(2+2), escreval(“Olá”), 
escreval(nome), escreval(“Olá ", nome). 
 24 
1.4.5 Seu primeiro algoritmo no VisuALG: Olá Mundo 
Vamos criar o primeiro algoritmo no VisuALG? 
Popularmente, quando se está aprendendo uma nova linguagem de programação o 
primeiro algoritmo criado é chamado de Hello, World! Em português, Olá Mundo. 
Saiba mais sobre o primeiro programa Hello, World e a implementação do 
mesmo em diversas linguagens de programação. Acesse: 
http://pt.wikipedia.org/wiki/Programa_Ol%C3%A1_Mundo 
Para criar um novo algoritmo, clique no menu Arquivo e escolha a opção novo ou 
clique no ícone novo. Entretanto, toda vez que você inicia o VisuALG, ele já abre com 
um novo arquivo de algoritmo para ser digitado. 
 
Para exibir as linhas no VisuALG, clique no menu Exibir e escolha a opção 
Número de Linhas. 
 
 
Barra de menus 
Neste espaço você digita os seus 
algoritmos. O esqueleto do 
algoritmo já vem definido ao 
abrir o VisuALG ou ao criar um 
novo arquivo. 
Para salvá-lo: clique no menu 
Arquivo e escolha a opção 
Salvar. 
Para executá-lo: clique no 
menu Algoritmo e escolha a 
opção Executar. 
http://pt.wikipedia.org/wiki/Programa_Ol%C3%A1_Mundo
 25 
Digite o código abaixo: 
Digite apenas o nome do algoritmo, complete a função, o autor e acrescente o 
comando da linha 10. Os demais textos aparecem automaticamente quando você abre o 
VisuALG ou clica no menu Arquivo e escolhe a opção novo. Os textos que aparecem na 
cor verde, iniciados por //, são os comentários da linguagem, servem para deixar o 
código mais legível, mas são desconsiderados no momento de execução do algoritmo. 
 
Para executar qualquer algoritmo no VisuALG, basta acessar o menu Algoritmo e clicar 
na opção Executar. Um atalhopara a execução de algoritmos é o F9. 
O resultado aparece neste prompt com a cor preta: 
 
 26 
1.4.6 Comando de Entrada de Dados 
Através de comandos de entrada é possível que o usuário digite valores que serão salvos 
em variáveis. A explicação sobre variáveis será feita na próxima aula! 
Utilize o comando abaixo quando você precisar que o usuário digite algum valor: 
leia (<lista-de-variáveis>) 
O comando leia recebe valores digitados pelo usuário, atribuindo-os às variáveis cujos 
nomes estão em <lista-de-variáveis> (é respeitada a ordem especificada nesta lista). 
Observe o exemplo abaixo: 
 
Abra o VisuALG e digite: 
 o nome do algoritmo: “Exemplo com comando de entrada – leia”; 
 declare a variável numero. Observe que não existe acentuação nas palavras 
reservadas e nos identificadores da linguagem do VisuALG. A única 
acentuação que pode existir é aquela que aparece em palavras que estão entre 
aspas duplas, assim como em “Exemplo de código”, “Média”, “O número 
digitado é”, etc... 
 digite os comandos que estão nas linhas 10, 11 e 12. 
o O comando da linha 10 faz com que apareça no prompt a frase “Digite 
um número”. 
 27 
o O comando da linha 11 faz com que o cursor do mouse fique piscando no 
prompt, aguando o usuário digitar um valor. Quando o usuário digita o 
valor e tecla <enter>, este valor é armazenado na variável numero. 
o O comando da linha 12 exibe no prompt a frase “O número digitado é” 
concatenado com o valor armazenado na variável numero. A 
concatenação é feita através da vírgula. Desta forma, se o número 
digitado é 8, a frase que aparece no prompt é O número digitado é 8. 
Tecle F9 para executar o algoritmo. O resultado aparece a seguir: 
 
 
Se você estiver no prompt e teclar Esc, o programa será imediatamente interrompido. 
Daí, basta clicar no ícone fechar (um x no canto superior direito do prompt) e você 
consegue voltar para a tela principal do VisuALG. 
Todas as aulas possuem atividades complementares. Elas estão localizadas no 
anexo deste caderno. 
 
 
 
 28 
1.5 Atividades propostas para a aula 1 
 
1. Escreva, a seguir, o que você entende por lógica. 
________________________________________________________________
_____________________________________________________________ 
2. Escreva no espaço abaixo pelo menos mais dois exemplos de algoritmos que 
você encontrou em seu dia a dia: 
________________________________________________________________
________________________________________________________________ 
3. Descrever as tarefas a seguir de tal maneira que qualquer pessoa que leia as suas 
instruções, saiba exatamente como agir. 
a. Tomar banho 
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________ 
b. Trocar uma lâmpada 
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________ 
 29 
 
Aula 2 – Variáveis, Constantes, Tipos de Dados e Operadores 
Objetivos 
Definir e compreender o uso de variáveis e constantes. 
Compreender o que são e quais são os tipos de dados básicos. 
Conhecer a definição e o correto uso de expressões e operadores. 
Antes de começarmos a programar algoritmos, devemos conhecer os conceitos que 
serão apresentados a seguir. 
2.1 Variáveis e Constantes 
Através das variáveis e das constantes podemos guardar as informações que são 
utilizadas enquanto o programa está sendo executado. Elas são regiões da memória 
RAM (Random Access Memory) do computador às quais associamos um nome 
(identificador) e guardamos um determinado conteúdo. Além disso, cada variável ou 
constante possui o tipo de conteúdo que ela pode armazenar. 
A diferença entre as constantes e as variáveis é que as constantes mantêm seu valor 
inalterado durante todo o desenvolvimento da programação, enquanto que as variáveis 
podem ter seu valor alterado a qualquer momento. 
 Para saber mais sobre o funcionamento da Memória RAM, acesse o site 
http://informatica.hsw.uol.com.br/memoria-ram.htm 
Fazendo uma comparação com a sua vida pessoal, imagine o seu guarda-roupas. Ele 
possui diversas divisões, não é mesmo? 
Imagine, também, que ele possua várias gavetas e que elas estejam organizadas da 
seguinte forma: uma gaveta para as camisetas, outra gaveta para as roupas íntimas e, por 
fim, uma gaveta para as meias. 
http://informatica.hsw.uol.com.br/memoria-ram.htm
 30 
Fazendo uma comparação desta situação pessoal com as variáveis, temos que: 
 O seu guarda-roupas é como se fosse a memória RAM do computador. 
 Cada gaveta é como se fosse uma pequena área dentro da memória RAM que 
guarda um determinado conteúdo, ou seja, as variáveis ou as constantes. 
 Os tipos de roupas guardadas é como se fossem os tipos das variáveis e das 
constantes, ou seja, o valor que elas podem armazenar. 
 E, cada roupa guardada em cada gaveta, é como se fosse o conteúdo ou valor 
armazenado em cada variável ou constante. 
As variáveis são úteis para guardar valores enquanto o algoritmo está sendo executado. 
Quando você fecha o VisuALG ou cancela a execução, todos os valores armazenados 
nas variáveis se perdem. Para que isso não aconteça, você precisa guardar os dados em 
um arquivo texto ou em um banco de dados, mas isso é conteúdo para outras 
disciplinas. 
Leia mais sobre memória principal e memória secundária. Acesse: 
http://pt.wikipedia.org/wiki/Mem%C3%B3ria_%28computador%29 
2.2 Identificadores 
São os nomes das variáveis e constantes utilizadas na construção de algoritmos. O 
acesso a estas variáveis ou constantes é feito através de seus respectivos identificadores. 
Normalmente, as regras de criação de um identificador para variáveis e constantes são: 
 O primeiro caractere deve ser uma letra (maiúscula ou minúscula). 
o Exemplos: total, idade, Nome, dataNascimento, etc... 
 Não utilize espaços nos nomes. Substitua-os com o caractere “_”. 
o Exemplos: data_nascimento, dias_uteis, ano_nascimento, etc... 
 Não utilize caracteres de acentuação e nem cedilha. 
o Exemplos: media, acoesParaProximoAno, acoes_para_proximo_ano, 
total_funcionarios, etc... 
http://pt.wikipedia.org/wiki/Mem%C3%B3ria_%28computador%29
 31 
Várias Linguagens de Programação fazem diferenciação entre letras 
maiúsculas e minúsculas. Quando isso acontece, dizemos que a linguagem é Case 
Sensitive. Desta forma, nome e Nome serão consideradas duas variáveis diferentes, da 
mesma forma que dataNascimento e datanascimento. No VisuALG isso não acontece, 
mas é muito importante que você mantenha um padrão para a escrita de identificadores 
e variáveis e constantes. 
Identificadores válidos: nome, telefone, idade_filho, idadeFilho, nota1, n1, Est_Civil 
Identificadores inválidos: 3Endereco, Estado Civil, PARA, algoritmo, 
numero/complemento 
O identificador PARA é inválido, pois é uma palavra reservada. Em qualquer 
linguagem de programação, se uma palavra é reservada, ou seja, se ela é própria da 
linguagem de programação, então você não pode utilizá-la fora daquele contexto para o 
qual ela foi criada. Neste caso, PARA servirá pra definir uma estrutura de repetição, 
sendo assim, você não pode utilizá-la pra nomear uma variável. 
2.3 Tipos de Dados 
Salvetti & Barbosa (1998) ressaltam que um programa de computador é descrito em 
uma linguagem de programação. Geralmente, cada linguagem de programação tem seus 
próprios tipos de dados, isto é, conjunto de valores, operações e relações já 
implementadas (disponíveis para uso). Na implementação surge o conceito de domínio,isto é, da limitação do conjunto de valores dos elementos representados. 
Neste caderno, as explicações sobre os tipos de dados do VisuALG não têm a 
pretensão de serem inéditas, pois elas estão baseadas nas explicações sobre a linguagem 
do VisuALG, disponível no site da empresa Apoio Informática. 
O VisuALG prevê quatro tipos de dados: inteiro, real, caracter, literal (conjunto de 
caracteres) e lógico (ou booleano). 
 32 
As palavras-chave ou palavras reservadas que os definem são as seguintes (observe que 
elas não têm acentuação): 
 inteiro: define variáveis numéricas do tipo inteiro, ou seja, sem casas decimais. 
o 3, 6, 10, 1000, 35 
 real: define variáveis numéricas do tipo real, ou seja, com casas decimais. 
o 3.5, 7, 8.90, 56.78 
 Literal: define variáveis do tipo string, ou seja, cadeia de caracteres. 
o “Maria”, “José”, “Escreva o seu nome:”, “Idade:” 
 logico: define variáveis do tipo booleano, ou seja, com valor VERDADEIRO ou 
FALSO. 
O VisuALG permite também a declaração de variáveis estruturadas através da palavra-
chave vetor, como será explicado na aula 06. 
2.4 Declarações de Variáveis 
Os nomes das variáveis devem começar por uma letra e depois conter letras, números 
ou underline, até um limite de 30 caracteres. As variáveis podem ser simples ou 
estruturadas (na versão atual, os vetores podem ser de uma ou duas dimensões). 
Não podem existir duas variáveis com o mesmo nome. 
Toda variável deve ser declarada na seção var antes de ser utilizada. 
A seção de declaração de variáveis começa com a palavra-chave var, e continua com a 
seguinte sintaxe: 
 
 
 
 
 33 
Exemplos: 
var 
a: inteiro 
valor1, valor2: real 
nome_do_aluno: literal 
sinalizador: logico 
Note que não há a necessidade de ponto e vírgula após cada declaração: basta pular 
linha. 
Veja as declarações de variáveis exemplificadas acima, mas dentro de um contexto real, 
ou seja, dentro de um algoritmo no ambiente do VisuALG. 
 
Pronto! Com as variáveis declaradas, agora precisamos armazenar valores nelas e 
começar a desenvolver algoritmos mais completos. 
2.5 Atribuição de Valores para Variáveis 
Basicamente, existem duas formas de se armazenar valores em variáveis: 
1. O usuário digita um valor através do prompt, tecla enter e o valor digitado é 
armazenado na variável através do comando de leitura leia. 
 
 34 
Exemplos: 
 Leia(nome) 
 Leia(idade) 
Vamos relembrar o código criado na última aula, quando exemplificamos o uso do 
comando leia para entrada de dados. 
Crie um novo algoritmo no VisuALG, digite o código abaixo e tecle F9 para ver o 
resultado. 
 
Observando o prompt de execução deste algoritmo, você deve perceber o seguinte: o 
cursor pisca, esperando que o usuário digite algo. Quando o usuário digitar um número 
e teclar <enter>, o valor digitado será armazenado na variável numero. Desta forma, o 
programador pode fazer o que precisar com esta variável, pois ela já possui um valor 
associado. 
Que tal observarmos alguns exemplos para tornar ainda mais clara essa ideia? 
Vamos lá... 
Atividade: Sendo dada uma lista de alunos com o código de matrícula e nome do aluno, 
faça um algoritmo que peça ao usuário para entrar com os valores de matrícula e nome 
do aluno e, ao final, exiba estas informações. Veja uma proposta de algoritmo já com o 
prompt de execução do mesmo: 
 35 
 
2. Outra forma de armazenar um valor em uma variável é utilizar o comando de 
atribuição. 
A atribuição de valores para variáveis é feita com o operador <-. 
Do seu lado esquerdo fica o identificador da 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. 
Exemplos: 
 a <- 3 
 Valor1 <- 1.5 
 Valor2 <- Valor1 + a 
 Valor3 <- (a * 3) 
 nome_do_aluno <- "José da Silva" 
 sinalizador <- FALSO 
Atividade: Crie um novo algoritmo no Visualg, declare a variável inteira idade, atribua 
o valor 30 para esta variável e exiba a seguinte frase: “A sua idade é 30”. Salve o 
algoritmo como “algoritmo_exemplo_comando_atribuicao” e tecle F9 para executá-lo. 
 36 
 
Observe: Novamente utilizamos a vírgula para concatenar valores. Neste caso, 
concatenamos a frase literal “A sua idade é” e o valor armazenado na variável idade. 
Observe que existe um espaço após o “é”. Se você esquecer-se de colocar este espaço, o 
resultado final será “A sua idade é30”. Percebe? Com a concatenação de valores 
conseguimos criar frases mais elaboradas. 
2.6 Operadores 
Os operadores são fundamentais para a resolução de problemas através de algoritmos, 
bem como já acontece com a matemática. Através deles conseguimos criar expressões 
mais completas e realizar cálculos mais reais. 
Existem alguns que são fundamentais para o desenvolvimento de programas, como os 
aritméticos, os relacionais e os lógicos. 
Operadores Aritméticos da linguagem do VisuALG: 
São aqueles cujo resultado da avaliação é do tipo numérico, seja ele inteiro seja real. 
Somente o uso de operadores aritméticos e de variáveis numéricas é permitido em 
expressões deste tipo. 
 
 37 
Operadores de Caracteres da linguagem do VisuALG: 
 
Operadores Relacionais da linguagem do VisuALG: 
Os operadores relacionais realizam a comparação entre dois operandos ou duas 
expressões e resultam em valores lógicos (VERDADEIRO ou 
FALSO).
 
Operadores Lógicos da linguagem do VisuALG: 
Os operadores lógicos atuam sobre expressões e também resultam em valores lógicos 
verdadeiro ou falso. 
 
A tabela abaixo, conhecida por tabela-verdade, mostra os resultados das aplicações dos 
operadores lógicos conforme os valores dos operadores envolvidos. 
 O operador lógico “e” só é verdadeiro se ambos os operandos também são 
verdadeiros. 
 O operador lógico “ou” só é falso se ambos os operandos também são falsos. 
 O operador lógico “não” inverte os valores, ou seja, se uma variável lógica é 
verdadeira, o operador lógico “não”, aplicado a esta variável, retornará o valor 
falso. 
 38 
 
Observe os valores da primeira linha. Suponha que A seja uma variável lógica que 
armazena um valor ou uma expressão que retorne verdadeiro. Suponha que B também 
seja verdadeiro. Neste caso, o resultado de A e B (terceira coluna) será verdadeiro, pois 
o operador lógico “e” só é verdadeiro quando ambos os operandos também são 
verdadeiros, caso contrário ele é falso. O resultado de A ou B(quarta coluna) será 
verdadeiro, pois o operador lógico “ou” só é falso quando ambos os operandos também 
são faltos, em qualquer outro caso, o resultado será sempre verdadeiro. 
De acordo com a necessidade, as expressões podem ser unidas pelos operadores lógicos. 
Exemplo: (1+4>3) e (2<>2) resulta FALSO, pois VERDADEIRO e FALSO resulta 
FALSO. 
Ordem na Avaliação de Expressões 
A execução das expressões acontece da esquerda para direita, mas além dos parênteses, 
que possuem uma prioridade maior, existem prioridades entre os operadores envolvidos 
na expressão. 
Atenção nesta ordem. Ela pode influenciar no resultado de um algoritmo, assim como já 
acontece na matemática: 
 39 
Figura 2.1 - Prioridade de resolução das expressões 
Fonte: TONET, 2012, p. 07 
Exemplos: 
 (3 + 3)/3 resulta o valor 2 
 3 + 3/3 resulta o valor 4 
 (2>3) ou (3<2) e (2<3) resulta Falso 
 (2>3) e (3<2) ou (2<3) resulta Verdadeiro 
Vamos praticar? 
Atividade: Faça um algoritmo que leia dois valores inteiros, calcule e exiba a sua média 
aritmética. 
Problema 
Faça um algoritmo que leia dois valores inteiros, calcule e exiba a 
sua média aritmética. 
Solução Esperada A média aritmética dos dois valores lidos. 
Dados de Entrada valor1, valor2 
Processamento media <- (valor1 + valor2)/ 
Dados de Saída O valor armazenado na variável media 
Uma proposta de algoritmo para resolver este problema: 
 40 
 
Crie um novo algoritmo, digite o códigoacima (exceto as partes que já aparecem no 
editor do VisuALG), salve o algoritmo como algoritmo_calcula_media e tecle F9 para 
executá-lo. 
Atividade: Faça um algoritmo que lê o valor do raio e calcule a área do círculo 
correspondente. 
Problema 
Faça um algoritmo que lê o valor do raio e calcule a área do 
círculo correspondente. 
Solução Esperada O cálculo da área do círculo correspondente 
Dados de Entrada Valor do raio 
Processamento area <- Pi*R2 
Dados de Saída O valor armazenado na variável area 
Uma proposta de algoritmo para resolver este problema: 
 
Crie um novo algoritmo, digite o código acima (exceto as partes que já aparecem no 
editor do VisuALG), salve o algoritmo como algoritmo_calcula_area e tecle F9 para 
executá-lo. 
 41 
2.7 Definição do Problema Base: 
De forma bem geral, você precisa compreender que os programadores possuem alguns 
tipos de estruturas que podem ser utilizadas e combinadas entre si pra que seja possível 
organizar o raciocínio e escolher as instruções que formarão o algoritmo que resolverá 
algum problema. São elas: 
 Estruturas Sequenciais 
 Estruturas Condicionais 
 Estruturas de Repetição 
 
 
Figura 2.2 - Comparando as ferramentas que o programador precisa para poder desenvolver algoritmos 
Fonte: Simone Abrero, 2012 e Atualização Farmacêutica, 2012 
Da mesma forma que o pedreiro possui a caixa de ferramentas pra trabalhar e 
o médico usa a maleta com os instrumentos que ele também necessita pra exercer a sua 
função, imagine que essas estruturas (sequencial, condicional e repetição) ajudam a 
preencher a caixa de ferramentas do programador. Você precisa aprender como 
funcionam estas estruturas, como elas podem ser utilizadas e quais são os comandos ou 
instruções relacionadas com cada uma. 
A estrutura sequencial será apresentada a seguir. As duas últimas estruturas, condicional 
e repetição, serão explicadas nas aulas seguintes. 
Para que você consiga perceber a evolução do conhecimento relacionado ao 
desenvolvimento de algoritmos, as principais explicações sobre cada estrutura serão 
baseadas no que chamaremos de “Problema Base”. Este problema base será construído 
a seguir e sofrerá modificações nas próximas aulas. Ou seja, começaremos a resolução 
do nosso problema base com os recursos que temos atualmente, ou seja, a estrutura 
 42 
sequencial, que é a mais simples de todas. O algoritmo será melhorado a partir do 
momento em que aprendemos as demais estruturas. 
Problema Base: imagine um cenário relacionado com alunos, notas e disciplinas. 
Alguns pontos podem ser definidos a partir deste cenários: 
 Alunos possuem nomes, matrículas, notas e disciplinas. 
 Existem critérios de aprovação para cada disciplina. Desta forma, um aluno é 
aprovado na disciplina se consegue atingir estes critérios. 
A Estrutura Sequencial admite uma instrução após a outra. 
Desta forma, para começarmos a resolver o nosso problema base utilizando uma 
estrutura sequencial, devemos apenas utilizar uma instrução após a outra. 
Veja este exemplo: 
Problema 
Faça um algoritmo que lê o nome e a nota de um aluno e exiba 
essas informações neste formato: Aluno(a): YYY – Nota: XX 
Solução Esperada Nome e nota do aluno exibidas no prompt. 
Dados de Entrada Nome e Nota 
Processamento 
Leitura do nome e da nota. Escrita do nome e da nota em um 
formato específico. 
Dados de Saída Dados do aluno exibidos em um formato específico. 
Segue uma proposta de algoritmo para resolver este problema através de Estrutura 
Sequencial, ou seja, um comando após o outro: 
 
 43 
Crie um novo algoritmo, digite o código acima (exceto as partes que aparecem 
automaticamente quando você cria um novo arquivo ou abre o VisuALG) e tecle F9 
para executá-lo. 
Digite um nome. Tecle <enter>. Digite uma nota. Tecle <enter>. Veja o resultado que 
aparece no prompt (tela preta). 
2.8 Atividades propostas para a aula 2 
 
1. Resolva as expressões lógicas, determinando se o resultado é verdadeiro ou 
falso: 
a. (6<8)ou(3>7)= 
b. não (2<3)= 
c. (5>=6 ou 6<7 ou não(a+5-6=8) {onde a = 5} 
d. (34>9 e 5+u = 34) ou (5=15/3 e 8>12) = ((u = 29) e 8>12) {onde u = 29} 
e. 2>3= 
2. Classifique os conteúdo das variáveis abaixo de acordo com seu tipo, 
assinalando com N os dados numéricos, com L os lógicos, com C os literais. 
( ) VERDADEIRO ( ) -545 ( ) " 444 " 
( ) "Joaquim" ( ) "VERDADEIRO" ( ) 0.000078 
( ) -49 ( ) +342 ( ) 569 
( ) 5.3 ( ) 2045 ( ) FALSO 
( ) 0 ( ) "abc" ( ) "João" 
3. Assinale com um X os nomes de identificadores de variáveis válidos: 
( ) leia ( ) enquanto ( ) escreva 
( ) ABC DE ( ) etc. ( ) b316 
( ) A123 ( ) Aa ( ) guarda_chuva 
( ) -_ad ( ) A&a ( ) guarda-chuva 
( ) 123a ( ) –a ( ) 3cd1 
 
 
 
 44 
 
4. Considere as declarações de variáveis apresentadas abaixo: 
var 
NOME, COR, TESTE, DIA: literal 
SOMA, NUM: inteiro 
Salario: real 
X:lógico 
 
a. ( ) Salario <- “insuficiente” 
b. ( ) Salario <- 150 
c. ( ) Salario <- 5.000 
d. ( ) X <- (NOME = COR) 
e. ( ) SOMA + 2 <- NUM 
f. ( ) DIA <- "seGUNDA" 
g. ( ) NUM <- "*ABC*" 
h. ( ) X <- X + 1 
i. ( ) COR <- "PRETO" 
j. ( ) TESTE <- SOMA 
k. ( ) NUM <- SOMA 
l. ( ) SOMA <- NUM + 2 * X 
m. ( ) NOME <- “5”
5. Analise o seguinte algoritmo e descreva o que ele faz. 
 
 42 
Aula 3 – Estruturas Condicionais ou de Seleção 
Objetivos 
Compreender o uso das estruturas condicionais ou de seleção no processo de criação de 
algoritmos. 
Resolver algoritmos que incluem o uso de estruturas condicionais. 
3.1 Desvio e Seleção do Fluxo de Instruções 
A nossa vida não é uma sequencia perfeita, sem desvios e sem obstáculos, você 
concorda? 
Ao acordarmos, podemos olhar para o céu e pensar: “parece que vai chover. Caso 
chova, seria bom ter um guarda-chuva na bolsa”. Outro exemplo: ao sair de casa e ir 
para o trabalho, você pode pensar “se o trânsito estiver bom, então vou fazer o caminho 
que sempre faço para chegar ao trabalho. Senão, vou optar por outro caminho, para 
evitar o congestionamento”. E como estas, existem inúmeras outras situações nas quais 
trabalhamos com condições e devemos tomar decisões. Estas decisões nos fazem 
seguir caminhos ou fluxos diferentes, mas que contribuem para alcançarmos o 
objetivo final. 
Desta forma, se desenvolvermos algoritmos em uma linguagem em que o computador 
entenda, para automatizar alguma tarefa do dia a dia ou resolver algum problema para 
nós humanos, não podemos esperar que estes algoritmos também sejam perfeitamente 
lineares, sem desvios, sem obstáculos e sem tomadas de decisão e seleção ! 
As Estruturas Condicionais ou de Seleção são fundamentais para que seja possível 
construirmos programas que consigam tratar situações mais complexas do nosso dia a 
dia. 
Voltemos ao nosso problema base. Na estrutura sequencial, foi possível ler o nome e a 
nota de um aluno. Isso é muito trivial, considerando que existem critérios de aprovação 
que são estabelecidos pela escola onde o aluno está. Desta forma, se assumirmos que 
um aluno será aprovado em uma determinada disciplina, caso a sua nota seja maior ou 
igual a 6,0 (seis), temos uma condição ou critério de aprovação do mesmo. Caso 
 43 
contrário, o aluno estará reprovado. Assim, devemos verificar o valor atual da nota do 
aluno e realizar um teste, ou seja: 
 Devemos ter o valor da sua nota armazenado em uma variável, por exemplo, na 
variável nota. 
 Com este valor armazenado, podemos testar ou verificar se ele está aprovado ou 
não, mediante a implementação de uma condição. 
 Se o valor armazenado na variável nota for maior ou igual a 6,0 (seis), então o 
aluno está aprovado. Caso contrário, o aluno está reprovado. 
Observe que a resposta do teste ou da condição deve sempre ser um valor verdadeiro 
(True) ou Falso (False). Veja o fluxograma abaixo. 
 
Figura 3.1 - Fluxo do algoritmo quando existe uma estrutura condicional 
Fonte: Elaborado pela autora 
Existem, basicamente, 2(dois) tipos de instruções condicionais ou de seleção. São elas: 
 Se...entao...senao 
 Caso..escolha 
 44 
3.2 Se...entao...senao 
Sintaxe para o se...entao...senao: 
 
ou 
 
Nas linguagens de programação existentes, conforme as suas sintaxes, as 
estruturas condicionais, assim como as outras estruturas, podem ser escritas de uma 
outra forma. Você tem que verificar o manual de cada linguagem de programação e 
descobrir como fazer para usar ou escrever estas instruções. 
A cláusula se executa um bloco de instruções caso uma determinada condição seja 
verdadeira. A cláusula senao executa um bloco de instruções caso a condição seja falsa. 
Não é necessário que todo se seja acompanhado de um senao, mas todo senao só pode 
existir após um se. 
Na criação de algoritmos, a acentuação é ignorada. Ou seja, o senão não deve 
receber o acento. Desta forma, no conteúdo deste caderno, utilizaremos as acentuações 
corretas para fazer as devidas explicações, mas no momento de codificar os algoritmos, 
você deve ficar atento para não utilizar a acentuação destas palavras reservadas. 
 
 45 
Palavra Reservada: palavras que não podem ser utilizadas como nomes de 
variáveis ou constantes por serem reservadas para uso da gramática da linguagem de 
programação utilizada. Exemplos de palavras reservadas na linguagem do VisuALG: 
algoritmo, var, literal, real, inteiro, inicio, escreva, escreval, leia, se, entao, senao, fimse, 
fimalgoritmo, dentre outras. 
A sintaxe abaixo trata apenas o valor verdadeiro da condição. Ou seja, nada acontece se 
o resultado da condição é falso. 
 
Já neste sintaxe de instrução condicional o tratamento é mais completo, pois existem 
instruções que devem ser executadas caso a condição seja verdadeira (bloco abaixo do 
então) e existem outras instruções que serão executadas caso a condição seja falsa 
(bloco após o senão). 
 
Observe que podem existir uma ou mais instruções caso a condição seja 
verdadeira ou falsa. Ou seja, um bloco de instruções é composto por uma ou mais 
instruções. Além disso, estas instruções podem ser estruturas sequenciais, estruturas 
condicionais ou estruturas de repetição. As estruturas de repetição serão vistas na 
próxima aula. 
 
 46 
3.2.1 Resolvendo o “problema base” no VisuALG 
Voltemos ao nosso problema base: “aprovação de um aluno”. Se tomarmos que um 
aluno será aprovado em uma determinada disciplina caso a sua nota seja maior ou igual 
a 6,0 (seis), temos uma condição de aprovação. Caso contrário, temos uma situação de 
reprovação. 
Os valores de entrada são: o nome e a nota do aluno. A nota do aluno assume o tipo 
“real”, pois valores do tipo 7.5 ou 3.4 podem ser aceitos. 
Abra o VisuALG e digite o código abaixo. Salve-o como 
algoritmo_problema_base_condicional, execute e analise o resultado. 
 
3.2.2 Condição Composta e os operadores booleanos 
Agora pense na seguinte situação: um aluno será aprovado caso a nota final seja maior 
ou igual a 6,0 (seis) e a sua frequência seja maior que 75 da carga horária da disciplina 
(por cento). 
Neste caso, os dados de entrada são: o nome do aluno, a sua nota e a sua frequência. 
A condição é composta, pois dependerá do valor da nota e do valor da frequência. Neste 
momento, uma expressão booleana ou lógica é muito útil. 
 47 
Uma expressão booleana é qualquer expressão que retorne true ou false e pode 
ser criada com os operadores de comparação e/ou lógicos. Saiba mais sobre operadores 
lógicos lendo este material http://pt.wikipedia.org/wiki/Operador_l%C3%B3gico 
Você consegue perceber o uso do operador lógico e na condição proposta para o nosso 
problema base? 
Observe as seguintes possibilidades para a condição apresentada. O aluno será aprovado 
apenas se o resultado da condição nota>=6 for verdadeira e o resultado da condição 
frequência>=75 também for verdadeira, pois e foi o operador lógico utilizado. 
Quadro 3.1 - Possibilidades para a condição de aprovação do exemplo proposto 
Nota>=6 Frequência>=75 Resultado da condição Nota>=6 e Frequência>=75 
V V V 
V F F 
F V F 
F F F 
Fazendo uma modificação no algoritmo criado anteriormente, temos o seguinte código. 
 
http://pt.wikipedia.org/wiki/Operador_l%C3%B3gico
 48 
3.2.2 Aninhamento da estrutura se 
A estrutura de decisão se pode ser apresentada de forma aninhada, ou seja, com um se 
dentro de outro. 
Considere o seguinte exemplo: leia um número inteiro e verifique se ele é um número 
positivo, negativo ou é o zero. Uma possível solução algorítmica para este problema 
encontra-se a seguir: 
 
No VisuALG, se existe um aninhamento da estrutura se, aquele se que vier 
após o senao deve ser colocado na linha seguinte. Por exemplo, observe o código 
colocado na linha 10. 
Teoricamente, não existe um limite para uma estrutura aninhada, mas quanto maior o 
aninhamento, mais difícil fica para entendermos o código desenvolvido. 
Para resolver este problema, podemos utilizar a estrutura condicional caso...escolha. 
Esta estrutura será descrita a seguir. 
3.3 Caso...escolha 
A estrutura caso...escolha trabalha com múltiplas opções de valores para a expressão 
que está sendo avaliada. 
 
 49 
Sintaxe para o caso...escolha: 
 
Esta estrutura é muito usada em: 
 algoritmos com chamadas de funções ou menus, o que torna o código mais fácil de 
ser entendido, se compararmos com o uso de estruturas se aninhadas. 
 a opção senao é opcional. 
 o rótulo é definido através de literais ou constantes numéricas inteiras, embora este 
item varie entre as linguagens de programação. 
3.3.1 Resolvendo o “problema base” no VisuALG 
Suponha que o professor de educação física do nosso problema base pretenda classificar 
seus alunos atletas em categorias e ele quer automatizar esta tarefa construindo um 
algoritmo. Para isso, ele criou uma tabela que contém a faixa etária do aluno atleta e a 
sua categoria. A tabela está demonstrada abaixo: 
IDADE DO ALUNO CATEGORIA 
05 A 10 Infantil 
11 a 15 Juvenil 
16 a 20 Júnior 
21 a 25 Profissional 
A função do algoritmo é solicitar para o usuário, que neste caso é o professor de 
educação física, que entre com o nome e a idade (inteira) de um aluno. O algoritmo 
deve verificar qual é a categoria relacionada com a idade do aluno e exibi-la na tela. 
 
 
 50 
Vamos implementar uma solução para este problema no VisuALG? 
 
Observe que no código acima nós estamos armazenando o resultado dentro da 
variável categoria. Uma outra possibilidade seria escrever diretamente o nome da 
categoria associada à idade do aluno atleta. 
 
 
 
 
 
 
 
 51 
3.4 Atividades propostas para a aula 3 
 
1. Escreva um programa que leia um número inteiro. Se o número lido for positivo, 
escreva uma mensagem indicando se ele é par ou ímpar. Se o número for 
negativo, escreva a seguinte mensagem “Este número não é positivo”. 
2. Faça um algoritmo que receba o valor do salário de uma pessoa e o valor de um 
financiamento pretendido. Caso o financiamento seja menor ou igual a 5 vezes o 
salário da pessoa, o algoritmo deverá escrever "Financiamento Concedido"; 
senão, ele deverá escrever "Financiamento Negado". Independente de conceder 
ou não o financiamento, o algoritmo escreverá depois a frase "Obrigado por nos 
consultar." 
3. Faça um programa que gere o balanço de um edifício segundo as especificações: 
Dados de entrada: total de apartamentos, total de moradores e valor do 
condomínio por apartamento. 
Cálculos: média de moradores por apartamento e total arrecadado. 
Resultado do programa: deve ser impresso na tela com o seguinte formato: 
 
 *********************************************************** 
 * EDIFíCIO BOA VISTA * 
 *********************************************************** 
 * TOTAL DE APARTAMENTOS : ....... * 
 * TOTAL DE MORADORES : ....... * 
 * VALOR DO CONDOMINIO : ....... ************************************************************ 
 * BALANCO FINAL * 
 *********************************************************** 
 * MEDIA DE MORADORES/APTO : ....... * 
 * TOTAL ARRECADADO : ....... * 
 *********************************************************** 
 
 
 52 
Aula 4 – Estruturas de Repetição 
Objetivos 
Compreender o uso das estruturas de repetição no processo de criação de algoritmos. 
Resolver algoritmos que incluem o uso de estruturas de repetição e as estruturas já 
estudadas. 
4.1 Contexto 
Imagine as seguintes situações: 
a) Uma professora precisa corrigir as avaliações de uma turma e verificar se eles 
foram aprovados em sua disciplina. Ela precisa repetir esta ação n vezes. Ou 
seja, se existirem 30 alunos nesta turma, ela repetirá 30 vezes a ação de corrigir 
as atividades. 
b) Para cada dia de trabalho você olha para o céu, antes de sair de casa, e verifica 
se vai chover. Se for chover, você coloca o guarda-chuva na bolsa. Observe que, 
se você trabalhar 20 dias por mês, você repetirá 20 vezes a ação de verificar se 
vai chover, não é verdade? Pode ser que não chova todas as vezes que você 
verificar, ou seja, não será todo dia que você colocará o guarda-chuva na bolsa, 
mas todos os dias você verificará se irá chover. 
Onde queremos chegar? 
Novamente, se desenvolvemos algoritmos em uma linguagem em que o computador 
entenda, para automatizar alguma tarefa do dia a dia ou resolver algum problema para 
nós humanos, não podemos esperar que estes algoritmos realizem apenas uma atividade 
em cada vez que ele for executado, não é mesmo?! 
Em todos algoritmos implementados até agora, sempre foi possível resolvê-los com 
uma sequência única de instruções e todos eram executados apenas uma única vez. 
No momento de verificar se um aluno foi aprovado, o nosso código estava 
implementado para fazer a verificação de apenas um aluno, certo? E se quiséssemos 
verificar para 30 alunos? E se quiséssemos verificar enquanto existissem alunos para 
serem verificados? Teríamos que fechar e executar o algoritmo novamente? Teríamos 
 53 
que repetir o bloco de instruções inúmeras vezes? Esta não é a opção mais viável. 
Queremos que na mesma execução de algoritmo seja possível verificar a aprovação de 
quantos alunos existirem ou quantos alunos quisermos verificar! 
As Estruturas de Repetição são fundamentais para que seja possível construirmos 
programas que consigam tratar situações que envolvem repetição. 
Existem, basicamente, 3 (três) tipos de instruções de repetição. 
São elas : 
 Para...faça 
 Enquanto...faça 
 Repita...até 
Nas linguagens de programação existentes, conforme as suas sintaxes, as 
estruturas de repetição, assim como as outras estruturas, podem ser escritas de uma 
outra forma. Você tem que verificar no manual de cada linguagem de programação, pra 
saber como usar ou escrever estas instruções. Além disso, no momento de implementar 
estas instruções no seu algoritmo, os acentos devem ser ignorados! Você deve usar: 
para...faca, enquanto...faca, repita...ate. 
4.2 Para...faça 
Sintaxe para o para...faca: 
 
Na estrutura para..faca, a <variável de controle> é inicializada com <valor inicial> e no 
início de cada iteração, seu valor é comparado com <valor final>. Se o valor da 
<variável de controle> for menor ou igual ao <valor final>, a <lista de comandos> é 
executada e após ser executado o último comando da lista, a <variável de controle> é 
 54 
incrementada. Isto se repete até que o valor da <variável de controle> seja maior que o 
<valor final>, quando então é executado o comando imediatamente após a palavra 
<fimpara>. A instrução <passo> é opcional e será útil quando o <incremento> do laço 
de repetição for diferente de 1. 
A estrutura para...faca deve ser utilizada quando você sabe o número exato de 
vezes que o bloco de comandos deve ser repetido. O número de repetições pode estar 
armazenado em uma constante ou em uma variável. 
4.3 Enquanto 
Sintaxe para o enquanto...faca: 
 
Na estrutura enquanto...faca, a <expressão lógica ou relacional> é avaliada e, se ela for 
verdadeira, a <lista de comandos> é executada. Ou seja, a <lista de comandos> será 
repetida enquanto a <expressão lógica ou relacionado> for verdadeira (true), pois 
quando ela for falsa, a execução do algoritmo vai para a próxima instrução que esteja 
após a palavra <fimenquanto> 
Exemplos de expressões relacionais: 
 Enquanto (idade<18) faca 
 Enquanto (opção= “continuar”) faca 
 Enquanto (i >=6) faca 
Exemplos de expressões lógicas 
 Enquanto ((nota>=6) e (frequência>=75)) faca 
 Enquanto ((opcao="c") ou (opção=”C”)) faca 
 Enquanto nao(opcao="s") faca 
 55 
Em todos os casos acima, as variáveis de controle devem ser alteradas em 
algum momento e em alguma instrução que esteja dentro do enquanto...fimenquanto. 
Caso contrário, o algoritmo entra em um loop infinito e nunca termina! 
4.4 Repita 
Sintaxe para o repita...ate: 
 
Na estrutura de repetição repita...ate, a <lista de comandos> é executada até que a 
<expressão lógica ou relacional> seja verdadeira. Ou seja, enquanto a <expressão lógica 
ou relacional> não for alcançada, enquanto ela for falsa, a <lista de comandos> será 
repetida. Quando a <expressão lógica ou relacional> for verdadeira, então a execução 
do algoritmo sai da estrutura de repetição e executa a próxima instrução que estiver após 
a palavra ate. 
Normalmente, existem uma ou mais variáveis que compõem a <expressão lógica ou 
relacional> que será testada ao final de cada iteração. Essas variáveis podem ser 
inicializadas antes do início do laço e terão seus valores modificados dentro do mesmo. 
Esta modificação acontece após um cálculo ou após a digitação de um valor pelo 
usuário. Desta forma, quando essas variáveis assumirem os valores que tornam a 
<expressão lógica ou relacional> verdadeira, o laço é terminado e o algoritmo segue a 
sua execução com as instruções que aparecerem após o mesmo. 
Observe que o teste de saída do enquanto...faca é feito no início. Já o teste de 
saída do repita...ate é feito no fim de suas respectivas estruturas. Isso significa que a 
<lista de comandos> na estrutura repita...ate será executada pelo menos uma vez. O que 
pode não acontecer na estrutura enquanto...faca se, logo no primeiro teste, a <expressão 
lógica ou relacional> for atendida. 
 56 
4.5 Resolvendo o “problema base” 
Voltemos ao nosso problema base: “aprovação de um aluno”. Utilizando apenas a 
estrutura sequencial foi possível ler o nome e a nota de um aluno. Com o uso da 
estrutura condicional foi possível verificar/testar se o aluno seria aprovado ou não, 
mediante um critério. Agora, queremos verificar se n alunos serão aprovados ou 
reprovados. 
Primeiro, vamos pensar sobre qual estrutura de repetição deve ser utilizada. 
a) Suponha que desejamos verificar a aprovação dos 5 alunos de uma turma. Desta 
forma, sabemos, a priori, que o número de vezes que a lista de comandos 
deve ser repetida será 5. Podemos, neste caso, usar a estrutura para...faca, 
conforme pode ser observado no código abaixo. 
O código abaixo é o mesmo utilizado para demonstrar a resolução do 
problema base com o uso da estrutura condicional se...entao...senao. Ele foi modificado 
para ser repetido através da estrutura para...faca. 
Alterações feitas no código original, que só calculava a aprovação de um aluno: 
 Alteração nos comentários que explicam o que o algoritmo faz. 
 Declaração da variável de controle i. 
 Inclusão da estrutura para...faca. 
 Todo o código que precisa ser repetido deve ficar entre o para...faca e o fimpara. 
 57 
 
b) Suponha que desejamos verificar a aprovação dos n alunos de uma turma, mas 
pelo menos um aluno deve ser verificado. Desta forma, não sabemos, a priori, 
quantas vezes as instruções serão repetidas. Podemos, neste caso,usar a 
estrutura repita..até, conforme pode ser observado no código abaixo. 
O código abaixo é o mesmo utilizado para demonstrar a resolução do 
problema base com o uso da estrutura condicional se...entao...senao. Ele foi modificado 
para ser repetido através da estrutura repita...ate. 
 58 
 
Alterações feitas no código original, que só calculava a aprovação de um aluno: 
 Alteração nos comentários que explicam o que o algoritmo faz. 
 Inclusão da variável de opcao. 
 Inclusão da estrutura repita...ate. 
 Todo o código que precisa ser repetido deve ficar entre o repita e o ate. 
c) Finalmente, suponha que desejamos verificar a aprovação dos n alunos de uma 
turma, mas não existe um critério de que ao menos um aluno seja verificado. 
Desta forma, não sabemos, a priori, quantas vezes as instruções serão repetidas. 
Podemos, neste caso, usar a estrutura enquanto..faca, conforme pode ser 
observado no código abaixo. 
 59 
 
Observe algo muito importante: a expressão de condição do enquanto pode 
envolver uma ou mais variáveis (no caso acima envolve apenas a variável opção). O 
valor anterior destas variáveis decidirá se o laço será iniciado ou não. Uma vez 
dentro do laço, estas variáveis que formam a condição do enquanto devem sofrer 
alterações em seus valores. Caso contrário, o algoritmo entrará em um loop infinito 
e ficará executando até que você feche o VisuALG. 
 60 
 
4.6 Atividades propostas para a aula 4 
 
1. Elabore um programa para achar todos os números ímpares entre 10 e 1000. 
2. Faça um programa que leia as variáveis C e N, respectivamente código e número 
de horas trabalhadas de um operário. Calcule o salário sabendo-se que ele ganha 
R$ 10,00 por hora. Quando o número de horas exceder a 50, calcule o excesso 
de pagamento armazenando-o na variável E, caso contrário zerar tal variável. A 
hora excedente de trabalho vale R$ 20,00. No final do processamento imprimir o 
salário total e o salário excedente. O programa só deve parar de rodar quando o 
usuário responder "S" na seguinte pergunta, "Deseja encerrar o programa?". 
3. Escreva um programa que calcule e exiba a média da nota dos alunos de uma 
turma em uma prova. O número de alunos é desconhecido. Os dados de um 
aluno são: número de matrícula e a sua nota na prova em questão. 
4. Este programa deve apresentar um menu em tela com a relação dos candidatos e 
opção para sair. A cada voto, conta-se um ponto para o candidato. Cada vez que 
o eleitor digitar uma opção errada, deve anular o voto e contar um para votos 
nulos. Após todos terem votado, o programa deve apresentar em tela qual dos 
candidatos foi o vencedor e o total de votos nulos. 
5. Leia para N pessoas quaisquer as seguintes informações: 
a. Idade, Peso, Sexo. 
b. Este programa deve fornecer como saída: 
i. A média dos pesos dos homens 
ii. A média da idade das mulheres 
iii. Quantas mulheres acima de 25 anos 
iv. Total de pessoas. 
 61 
Aula 5 - Variáveis Indexadas Homogêneas 
Objetivos 
Compreender o uso das variáveis compostas homogêneas. 
Resolver algoritmos que incluem o uso de variáveis indexadas homogêneas. 
5.1 Vetores e Matrizes 
Para todos os algoritmos que nós programamos até agora, incluindo o “problema base”, 
foi necessário declarar as variáveis antes de utilizá-las. Ao trabalharmos com estruturas 
de repetição, estas variáveis foram utilizadas para guardar dados específicos, mas a cada 
nova iteração, os dados guardados anteriormente eram substituídos por novos dados. 
Observe o código abaixo, que recebe o nome, a nota e a frequência de um aluno, mas 
também verifica se ele foi aprovado, segundo um critério de aprovação. Este código foi 
utilizado anteriormene para explicar o uso de estruturas de repetição no problema base. 
 
Suponha que, na primeira iteração, os valores sejam: 
i nome nota Frequência resultado 
1 Maria 6 78 Aprovado(a) 
Agora observe que, na segunda iteração, as variáveis são as mesmas, mas os valores 
armazenados nelas são diferentes. Desta forma, como nós guardamos os valores dentro 
das mesmas variáveis e para cada iteração, aqueles inseridos anteriormente serão 
perdidos assim que você digitar os novos valores para nome, nota e frequência: 
 62 
i nome nota Frequência resultado 
1 Maria 6 78 Aprovado(a) 
2 José 5 56 Reprovado(a) 
Segundo Tonet (2012) a declaração de variáveis, uma a uma, é suficiente para a 
codificação algorítmica da solução de uma ampla gama de problemas, mas é 
insuficiente para resolver um grande número de problemas computacionais. Imagine, 
por exemplo, como faríamos para construir um algoritmo que lesse os nome de 500 
pessoas e imprimisse um relatório destes mesmos nomes, mas ordenados 
alfabeticamente. Não seria uma tarefa simples, pois teríamos que definir 500 variáveis 
do tipo literal, como é mostrado abaixo: 
 
Uma alternativa para contornar este problema é usar as variáveis indexadas 
homogêneas, também conhecidas por variáveis indexadas unidimensionais (vetor) e 
variáveis indexadas bidimensionais (matriz). 
São homogêneas, pois continuam guardando o mesmo tipo de dado. Por exemplo, se um 
vetor do tipo inteiro é declarado, então ele só consegue guardar valores inteiros. O 
mesmo vale para a matriz. 
São indexadas, pois as posições são referenciadas ou acessadas através de índices. Na 
linguagem do VisuALG, o índice inicial do vetor é o 1(um). O mesmo vale para a 
matriz, mas a posição é referenciada pelo índice da linha e da coluna na qual ela se 
encontra. De qualquer forma, os índices da matriz também iniciam-se em 1 (um). 
 63 
5.2 Variáveis Indexadas Unidimensionais (vetor) 
Ascencio & Campos (2002) definem vetor como uma variável composta homogênea 
unidimensional formada por uma sequência de variáveis, todas do mesmo tipo, com o 
mesmo identificador (mesmo nome) e alocadas sequencialmente na memória. 
Quando definimos uma variável indexada unidimensional(vetor) devemos 
definir a capacidade máxima de armazenamento que ela aceita, ou seja, a quantidade de 
elementos (valores) que ela suportará. Pode acontecer que você implemente um 
algoritmo que não faça uso de todas as posições do vetor, desta forma, as posições 
inutilizadas ficarão vazias. Caso você tente acessar uma posição que não existe, ou seja, 
uma posição que vai além do tamanho máximo do vetor, aparecerá uma mensagem 
dizendo que a posição X não foi encontrada. 
Graficamente, pode-se pensar que um vetor possui as seguintes formas visuais: 
a) Uma linha e várias colunas (esta é a visualização mais comum para um vetor): 
 
b) Uma coluna e várias linhas: 
 
 
 
A forma visual de vetor apresentada na letra “a” possui 07 (sete) posições, ou seja, ele 
pode armazenar até 07 (sete) valores de mesmo tipo. Se este é um vetor que guarda 
informações sobre nomes, então ele pode guardar até 07 nomes diferentes, um em cada 
célula ou posição. Cada nome será referenciado através de um índice. 
Suponha que o vetor seja populado da seguinte forma: 
1 2 3 4 5 6 7 
Maria José Isabel Marcelo João Ana Joaquim 
 64 
A posição (ou índice) 01 guarda o valor “Maria”. 
A posição (ou índice) 02 do vetor guarda o valor “José”, e assim por diante. 
Sabendo que as variáveis possuem a mesma identificação, ou seja, o nome do vetor é o 
mesmo, então só é possível referenciar cada posição do vetor através de um índice. 
Em grande parte das Linguagens de Programação utilizadas para o 
desenvolvimento de sistemas computacionais, os índices de um vetor começam com 
zero. Desta, forma, o vetor apresentado anteriormente seria referenciado da seguinte 
forma: 
0 1 2 3 4 5 6 
Maria José Isabel Marcelo João Ana Joaquim 
A posição (ou índice) 0 guarda o valor “Maria”. 
O vetor continua com 07 posições, ou seja, guardando 07 valores, mas os índices vão de 
0 até 6. 
5.2.1 Trabalhando com Vetores no VisuALG 
Para trabalhar com vetores você deve declará-los, assim como fizemos com as outras 
variáveis dosnossos algoritmos. 
A sintaxe para declaração de um vetor dependerá da linguagem de 
programação que você estiver usando para construir os seus algoritmos. 
Neste caderno, utilizamos a seguinte sintaxe para declarar ou definir um vetor: 
 
 
 65 
 
onde: 
 <identificador> é o nome do vetor 
 vetor é uma palavra reservada que só pode ser utilizada para o contexto de 
declaração e acesso de vetores 
 <tamanho> é valor numérico inteiro que define a quantidade de posições do 
vetor 
 <tipo> é o tipo de valores que serão armazenados no vetor, tais como inteiro, 
literal, real, caractere, lógico. 
 Exemplos: 
o Declare um vetor de 5 posições para guardar nomes: 
 nomes:vetor[1..5] de literal 
o Declare um vetor de 10 posições para guardar idades: 
 idades:vetor[1..10] de inteiro 
o Declare um vetor de 20 posições para guardar o resultado do critério de 
aprovação de 20 alunos, sendo que os possíveis valores serão apenas 
verdadeiro ou falso. 
 aprovacoes:vetor[1..20] de logico 
Com o vetor declarado, podemos realizar as seguintes ações básicas: 
 Inserir dados em uma posição do vetor. 
 Exibir informações de uma posição do vetor. 
 Percorrer o vetor, inserindo valores em cada uma das posições. 
 Percorrer o vetor, exibindo os valores armazenados em suas posições. 
Para armazenar um valor dentro de uma posição do vetor você deve utilizar o 
comando com a sintaxe abaixo: 
 
 
 66 
 
onde: 
 <identificador> é o nome do vetor, utilizado durante a sua declaração. 
 <posição> é o índice do vetor e serve para referenciar a posição ou célula do 
vetor que receberá um valor. 
 <- é o sinal de atribuição de valor, ou seja, neste caso ele coloca o <valor> que 
está do lado direito do operador <- para dentro da posição do vetor que está 
sendo definida no lado esquerdo do mesmo. 
 <valor> é o valor que deve ser armazenado em uma posição do vetor. Observe 
que este valor deve respeitar o tipo utilizado na declaração do vetor. Se o vetor 
só aceita valores do tipo literal, então você deve apenas atribuir este tipo de 
valor para o seu vetor. 
o Exemplos: 
 nomes[3]<- “Maria” 
 O literal “Maria” será armazenado na posição 3 do vetor. 
o Pensando na visualização de vetor apresentada anteriormente, o resultado 
final será este: 
 Maria 
Outros exemplos de atribuição de valores em vetores: 
o idades[1]<-24 
o aprovacoes[1]<-falso 
o idades[1] <- outras_idades[3] 
 este último exemplo demonstra que é possível pegar o valor 
armazenado em um vetor e guardar este valor dentro de uma 
posição de outro vetor, desde que ambos os vetores sejam de 
mesmo tipo e estejam declarados. 
Para exibir um valor armazenado em uma posição do vetor você pode utilizar o 
comando que possui a seguinte sintaxe: 
 67 
 
Observe que é a mesma sintaxe utilizada anteriormente, para guardar um valor 
em uma posição do vetor, mas sem o uso do sinal de atribuição ( <- ). 
Desta forma, para imprimir o valor armazenado na posição 3, observe o 
comando abaixo: 
escreval(“Nome:”, nomes[3]) 
O resultado será Nome: Maria, pois concatenamos o literal “Nome:” e o valor 
literal armazenado na posição 3 do vetor nomes, ou seja, “Maria”. 
Agora, pense na seguinte situação: precisamos resolver um problema que 
envolve muitos valores. Para cada valor deve acontecer um cálculo ou um bloco de 
comandos específicos. Neste caso, precisaríamos utilizar estruturas de repetição para 
tratar o bloco de comandos que será repetido e devemos utilizar vetores para guardar 
todos os valores. As estruturas de repetição serão utilizadas para percorrer o vetor 
guardando os valores necessários. Além disso, elas podem ser utilizadas para percorrer 
o vetor exibindo ou testando os valores armazenados no mesmo. 
Exemplificaremos esta situação, de forma prática, através da resolução do 
problema base. Acompanhe a seguir: 
5.2.2 Resolvendo o problema base 
Voltemos ao nosso problema base. Utilizando apenas a estrutura sequencial foi possível 
ler o nome e a nota de um aluno. Com o uso da estrutura condicional foi possível 
verificar/testar se o aluno seria aprovado ou não, mediante um critério. E, com o uso de 
laços de repetição, foi possível verificar a aprovação de n alunos. Entretanto, toda vez 
que digitamos um nome, uma nota ou uma frequência, os valores anteriores eram 
perdidos, ou seja, substituídos pelos novos valores (nome, nota e frequência) digitados 
pelo usuário. 
Vamos utilizar um vetor para resolver este problema. 
 68 
Na verdade, precisaremos de 4(quatro) vetores: 
 Um para guardar os nomes 
 Um para guardar as notas 
 Um para guardar as frequências 
 E, por fim, outro vetor para guardar a situação dos alunos (aprovado ou 
reprovado) 
Este é o código original apresentando (sem o uso de vetor) 
 
Alterando o código acima para fazer uso de vetores: 
 69 
 
Algumas explicações sobre o código acima: 
 As linhas 6-10 possuem as declarações de variáveis. Temos uma variável 
simples (i), que é a variável de controle utilizada nas duas estruturas de repetição 
“para”. 
 A primeira estrutura de repetição está percorrendo os vetores e guardar os 
respectivos valores (nomes, notas, frequências e situações). 
 A segunda estrutura de repetição serve para percorrer o vetor situações exibindo 
as informações ali armazenadas. 
 Observe que os nomes (identificadores) dos vetores estão no plural. Isso não é 
um padrão, mas serve para exemplificar que este tipo de variável guarda muitos 
nomes, notas, frequências e assim por diante. 
 
 70 
5.3 Variáveis Indexadas Bidimensionais (matriz) 
Graficamente, pode-se pensar que uma matriz bidimensional possui a seguinte forma 
visual: 
a) Várias linhas e várias colunas 
 
 
 
A forma visual de matriz apresentada anteriormente possui 21 (vinte e uma) posições, 
ou seja, ela pode armazenar até 21 (vinte e um) valores de mesmo tipo. Se esta é uma 
matriz que guarda informações sobre nomes, então ela pode guardar até 21 nomes 
diferentes, um em cada célula ou posição. Cada nome será referenciado através de um 
índice composto de informações sobre a linha e sobre a coluna da posição que deve ser 
acessada. Dizemos que esta matriz é 3x7, ou seja, ela possui 3 linhas e 7 colunas. 
Suponha que a matriz seja populada da seguinte forma: 
 1 2 3 4 5 6 7 
1 Maria José Isabel Marcelo João Ana Joaquim 
2 Carol Pedro Ana C. Rosa Marília Bruna Rafael 
3 Isabela Luana João José Cristina Rose Júlia 
A posição (ou índice) linha 1 e coluna 3 guarda o valor “Isabel”. 
A posição (ou índice) linha 2 e coluna 4 guarda o valor “Rosa”, e assim por diante. 
Sabendo que as variáveis possuem a mesma identificação, ou seja, o nome da matriz é o 
mesmo, então só é possível referenciar cada posição da matriz através de um índice que 
contenha informações sobre a linha e a coluna. 
Neste caderno, utilizamos a seguinte sintaxe para declarar ou definir uma matriz: 
 71 
 
onde: 
 <identificador> é o nome do vetor 
 vetor é uma palavra reservada que só pode ser utilizada para o contexto de 
declaração e acesso de vetores. Neste caso, vetores bidimensionais (matrizes). 
 <tamanho1> é a quantidade de linhas 
 <tamanho2> é a quantidade de colunas 
o Os tamanho1 e tamanho2 seguem o padrão [vi..vf], ondo vi é o valor do 
tamanho inicial e vf é o valor do tamanho final. 
 <tipo> é o tipo de valores que serão armazenados no vetor, tais como inteiro, literal, 
real, caractere, lógico. 
 Para armazenar um valor dentro da matriz você deve utilizar o comando com a sintaxe 
abaixo: 
 
onde: 
 <identificador> é o nome do vetor, utilizado durante a sua declaração. 
 <posição 1> e <posição 2> são os valores da linha e da coluna, respectivamente, 
e servem para referenciar a posição ou célula da matriz que receberá um valor. 
o Exemplo: nomes[1,3]<- “Maria” 
o O literal “Maria” será armazenado na posição 1,3 da matriz, ou seja, posição 
cuja linha é 1 e cujacoluna é 3. 
o Pensando na visualização de matriz apresentada anteriormente, o resultado final 
será este: 
 1 2 3 4 5 6 7 
1 Maria José Maria Marcelo João Ana Joaquim 
2 Carol Pedro Ana C. Rosa Marília Bruna Rafael 
3 Isabela Luana João José Cristina Rose Júlia 
 72 
Para exibir um valor armazenado em uma posição da matriz você pode utilizar o 
comando que possui a seguinte sintaxe: 
 
Observe que é a mesma sintaxe utilizada anteriormente, para guardar um valor 
em uma posição da matriz, mas sem o uso do sinal de atribuição ( <- ). 
Desta forma, para imprimir o valor armazenado na posição cuja linha é 1 e cuja 
coluna é 3, observe o comando abaixo: 
escreval(“Nome:”, nomes[1,3]) 
Desta forma, o resultado será Nome:Maria, pois concatenamos o literal 
“Nome:” e o valor armazenado na posição cuja linha é 1 e coluna é 3 ou seja, “Maria”. 
5.3.1 Trabalhando com Matrizes no VisuALG 
Observe a seguinte situação: 
Atividade: Implemente um algoritmo que solicite as notas de um aluno e os respectivos 
pesos para cada um dos 4 bimestres. Estes valores deverão estar armazenados em uma 
única matriz. Ao final, exiba a média aritmética ponderada dessas notas. As notas 
podem variar de 0 até 10. 
A média aritmética ponderada de n números é a soma dos produtos de cada 
número multiplicados por seus respectivos pesos, dividida pela soma de seus pesos. 
Exemplo: Suponha os 3 números e seus respectivos pesos: 3(peso 2), 5(peso 3), 
2(peso5). A média aritmética ponderada é (3x2 + 5x3 + 2x5)/ (2 + 3 + 5). O resultado 
será (6 + 15 + 10)/10 = 31/10 = 3,1 
Uma solução seria criar uma matriz 4x2, ou seja, com 4 linhas e 2 colunas. Cada linha 
receberá a nota do aluno e o peso da nota para o respectivo bimestre, conforme ilustrado 
abaixo: 
 73 
 notas pesos 
1º Bimestre 
2º Bimestre 
3º Bimestre 
4º Bimestre 
Desta forma, precisamos declarar uma matriz que guarde as notas e os pesos de um 
aluno. Como vimos, a matriz é uma variável bidimensional indexada e homogênea, 
então ela deve receber valores de mesmo tipo. Para este caso, estamos trabalhando com 
valores inteiros, mas que também poderiam ser do tipo real. 
Observe no algoritmo proposto que fixamos que as notas de cada bimestre serão 
armazenadas na coluna 1 e as pesos de cada bimestre serão armazenados na coluna 2. 
As variáveis numerador e denominador têm seus valores acumulados a cada nova 
iteração, pois ao final do laço de repetição, elas servirão para calcularmos o valor da 
média aritmética ponderada de notas de um aluno. 
Veja uma proposta de algoritmo para resolver este 
problema:
 
 74 
5.4 Atividades propostas para a aula 5 
 
1. Uma agência de publicidade pediu à agência de modelos Luz & Beleza para 
encontrar uma modelo que tenha idade entre 18 e 20 anos para participar de uma 
campanha publicitária milionária de produtos de beleza. Foram inscritas 5 
candidatas e, ao se inscreverem, forneceram nome e idade. Tais informações 
foram armazenadas em 2 vetores distintos. Faça um programa para imprimir o 
vetor que contém os nomes das candidatas aptas a concorrer a uma vaga para a 
campanha milionária. 
2. Dada uma sequência de n números armazenados em um vetor de inteiros, 
imprima os valores deste vetor na ordem inversa que foi realizada a leitura. 
3. Dados dois vetores x e y, ambos com n elementos, determinar o produto escalar 
desses vetores. Ou seja, realizar a soma de todos os resultados da multiplicação 
de x[i] por y[i]. (Multiplicação de vetores). 
 75 
Aula 6 - Subalgoritmos 
Objetivos 
Compreender a aplicação da modularização do código para resolver problemas mais 
complexos. 
Resolver problemas que envolvam a modularização do código. 
6.1 Modularização do Código 
Em geral, problemas complicados exigem algoritmos maiores e com mais linhas de 
código. Além disso, se estes problemas possuem diversos trechos de códigos que serão 
repetidos em alguns momentos do código, a repetição destes blocos de comandos ao 
longo do desenvolvimento do algoritmo pode prejudicar o seu entendimento. 
Existe uma técnica conhecida como “Dividir para Conquistar”. Esta técnica pode ser 
aplicada em diversas áreas de estudo e possui este fundamento: dividir um problema 
maior em problemas menores, até que este problema maior possa ser resolvido. 
No caso da área de desenvolvimento de algoritmos, esta técnica pode ajudar nas 
seguintes situações: 
 Contribui para o reuso do código, uma vez que existirão chamadas para os 
subalgoritmos e a repetição de códigos será praticamente nula. 
 Ajuda a deixar o código mais organizado e legível, ou seja, mais fácil de ser 
compreendido por qualquer pessoa. 
 Facilita no momento de fazer alguma manutenção no código ou descobrir erros. 
 Serve para que vários membros de uma equipe de desenvolvimento consigam 
atuar no mesmo projeto, cada um trabalhando em um módulo diferente, dentre 
outras situações. 
Desta forma, subalgoritmos, sub-rotinas, subprogramas ou módulos são blocos de 
instruções que realizam tarefas específicas e podem ser chamados a partir do programa 
principal ou a partir de outros subalgoritmos, quantas vezes forem necessárias. 
Com a modularização do código original, surgem dois conceitos importantes: 
 76 
 O programa principal 
 Os tipos de subprogramas: 
o Funções 
o Procedimentos 
A diferença entre procedimentos e funções está unicamente no tipo de retorno: funções 
retornam valores após a execução da sua lista de instruções, mas os procedimentos não 
retornam. 
As “funções” e os “procedimentos” aparecem, principalmente, em linguagens 
baseadas na programação estruturada. Em outros paradigmas de programação, tal como 
o paradigma orientado a objetos, este conceito não existe da forma como explicamos 
anteriormente. Sendo assim, quando você for estudar o desenvolvimento de algoritmos 
em uma linguagem baseada em outro paradigma de programação, você deve verificar 
todos os conceitos associados e perceber de que forma a subprogramação acontece. 
Além disso, a sintaxe e a forma de funções de determinadas linguagens de programação 
também devem ser verificadas. 
6.1.1 Funções 
Uma função, em matemática, significa associar para cada valor x um elemento y 
correspondente, também denotado por ƒ(x)=y. 
Uma função, em Lógica de Programação, é um subalgoritmo que pode ou não receber 
uma informação, mas sempre retorna um valor ou uma informação. A chamada de uma 
função é feita através da citação do seu nome seguido, opcionalmente, de seus 
argumentos iniciais entre parênteses. As funções podem ser predefinidas, ou seja, 
próprias da linguagem ou criadas pelo programador de acordo com o seu interesse. 
A criação de uma Função deve ser declarada, com os demais objetos, no início do 
programa. Este tipo de subalgoritmo sempre retorna um e apenas um valor ao algoritmo 
que lhe chamou. Cada função tem associada ao seu valor de retorno um tipo explícito. 
 77 
 
Onde: 
 <identificador> é o nome da função 
 Passagem de parâmetros por referência: utiliza-se a construção VAR antes dos 
identificadores para indicar a passagem por referência. Os identificadores são 
separados por vírgula. 
 <parâmetros>: Entre um mesmo tipo de dados são separados por vírgula. Entre 
tipos de dados diferentes a separação é feita com ponto-e-vírgulas ';'. 
 <tipo de retorno da função>: Real, Inteiro, Lógico ou Literal. 
 <declaração de variáveis locais> idêntica à declaração de variáveis globais. As 
variáveis declaradas localmente tem validade dentro do escopo da função. 
 <retorne> local onde é colocado a variável de retorno. 
Sempre declare as variáveis globais antes da função. A função sempre fica 
dentro do escopo Algoritmo e Fim Algoritmo. Procure não Declarar variáveis globais 
com o mesmo nome das variáveis locais da função. 
Veja este algoritmo criado para realizar a soma entre dois números. Criou-se uma 
função que recebe dois valores reais e devolve a soma destesnúmeros para o programa 
principal, onde o resultado da soma é exibido para o usuário: 
 78 
 
Digite o algoritmo acima, salve-o como exemplo_funcao e tecle F9 para executá-lo. 
O VisuALG possui diversas funções predefinidas e você pode usá-las em seus 
algoritmos. 
Dica: Para acessar as funções do VisuALG, basta teclar Ctrl + j. 
A seguinte tela será exibida: 
 
 
Figura 6.1 - Funções predefinidas do VisuALG, obtidas quando tecla-se Ctrl + j 
Fonte: Elaborado pela autora 
 79 
Observe que as funções predefinidas são aquelas que possuem abre e fecha parênteses 
após a definição da função, tal como em Abs(valor:real): real. 
Isso significa que a função predefinida Abs é uma função, recebe um valor real e 
devolve outro valor real. Já a função Asc (s: caracter): inteiro recebe um caracter e 
devolve um valor inteiro. 
Segue abaixo uma lista de funções predefinidas e as respectivas funcionalidades. 
Funções predefinidas do VisuALG Explicação 
Abs (valor : real) : real 
Devolve o valor absoluto de um número, 
que é o valor desse mesmo número 
independentemente do seu sinal. 
Exemplo: o valor absoluto de -3 é 3 
Asc (s : caracter) : inteiro Retorna o código ASCII 
Compr (c : caracter) : inteiro 
Retorna a dimensão do caractere. 
Compr("abc") devolve 3 
Compr("e") devolve 1 
Copia (c : caracter , posini, posfin : 
inteiro) : caracter 
Copia um determinado trecho do 
caractere. 
Copia ("teste", 4 , 2) devolve te 
Int (valor : real) : inteiro Converte o valor em inteiro 
Maiusc (c : caracter) : caracter 
Converte em Maiúscula 
Maiusc(“teste”) devolve TESTE 
Maiusc(“a”) devolve A 
Minusc (c : caracter) : caracter Converte em Minúscula 
Pos (subc, c : caracter) : inteiro 
Retorna a posição do Caractere subc 
dentro do texto c. 
Pos(e, “teste”) devolve 
Quad (valor : real) : real 
Devolve um valor elevado quadrado. 
Quad(4) devolve 16 
Raizq (valor : real) : real 
Devolve a raiz quadrada de um valor. 
Raizq(16) devolve 4 
 80 
Saiba mais sobre o código ASCII (American Standard Code for Information 
Interchange) em http://pt.wikipedia.org/wiki/ASCII 
O algoritmo abaixo faz uso de algumas funções predefinidas no VisuALG: 
 
Linha Explicação 
6 O valor literal “José Silva” é armazenado na variável nome. 
7 
A função Compr recebe a variável nome e devolve o seu tamanho. Este valor 
para tamanho é armazenado na variável quant_caracteres. 
8 
A função Pos recebe o caractere espaço em branco e a variável onde a 
primeira ocorrência do mesmo será procurada. O resultado será armazenado 
na variável local_espaco. 
9 
A função Copia recebe uma variável nome, o valor inicial (local_espaco + 1) 
e a quantidade de caracteres após o valor inicial que deve ser devolvido. O 
resultado será armazenado na variável sobrenome. 
 
Modifique o algoritmo acima para que o nome seja digitado pelo usuário e 
armazenado na variável nome através do comando de leitura, o leia(). 
 
http://pt.wikipedia.org/wiki/ASCII
 81 
6.1.2 Procedimentos 
Na linguagem de programação do VisuALG, procedimento é um subprograma que não 
retorna nenhum valor. Sua declaração, que deve estar entre o final da declaração de 
variáveis e a linha início do programa principal, segue a sintaxe abaixo: 
 
onde: 
 <identificador> é o nome do procedimento. 
 [var] significa que a passagem de parâmetros é opcional, mas se existir, as 
variáveis devem ser declaradas com o uso da palavra reservada var. Os 
parâmetros são separados por vírgulas. 
 <parâmetros> são os valores que o procedimento deve receber ao ser chamado. 
Entre um mesmo tipo de dados são separados por vírgula. Entre tipos de dados a 
separação é feita com ponto e vírgula ';'. 
Exemplificaremos o uso de procedimentos através do problema abaixo: 
Atividade: Implemente um algoritmo, de forma modular, que receba 4 valores inteiros e 
os ordene em ordem crescente. 
Entrada: 4 números inteiros. 
Processo: ordenar estes 4 números em ordem crescente. 
Saída: exibir os 4 números ordenados. 
Este tipo de problema exige o uso de variáveis auxiliares, veja a imagem abaixo. 
 82 
Número1 Número2 Número3 Número4 
7 6 8 9 
Como fazer para trocar o valor armazenado na variável Número2 com o valor 
armazenado na variável Número1? 
Você deverá criar uma variável auxiliar para guardar um dos dois valores, caso 
contrário, um valor será perdido. 
No exemplo abaixo, a variável auxiliar está recebendo o valor armazenado na variável 
Número2. 
Variável Auxiliar 
6 
Desta forma, a variável Número2 pode receber o valor armazenado na variável 
Número1: 
Número1 Número2 Número3 Número4 
 7 8 9 
Para completar o processo de ordenação, o valor armazenado na variável auxiliar já 
pode ser armazenado na variável Número1: 
Número1 Número2 Número3 Número4 
6 7 8 9 
 
Uma proposta de algoritmo para resolver este problema será apresentada a seguir: 
 83 
 
Linha Explicação 
4-11 Definição e implementação do procedimento. 
6 
A variável local aux foi declarada. Ela pode ser utilizada apenas dentro do 
procedimento. Ela servirá como uma variável auxiliar e temporária, enquanto 
a troca de valores está sendo realizada nas linhas 8, 9 e 10 
14 
O usuário deve digitar 4 valores inteiros, os quais serão armazenados nas 
respectivas variáveis A, B, C e D. 
15 
Enquanto os valores armazenados em A, B, C e D não estiverem ordenados, o 
bloco de comandos especificados entre o enquanto e fimenquanto serão 
executados. 
29 Os valores ordenados serão exibidos para o usuário 
 
 84 
Observe o resultado através do console: 
 
 
6.2 Atividades propostas para a aula 6 
 
1. Escreva um programa que verifique se um número é par ou ímpar através de 
uma função chamada VERIFICA. A função deve receber um número inteiro (n), 
verificar se o número é par ou ímpar e deve retornar se o número (n) é par (1) ou 
ímpar (0). No programa principal, teste este retorno. Se o retorno for 1, exiba 
“Par”, mas se for 0, exiba “Ímpar”. 
2. Escreva um programa que calcule e retorne o valor da hipotenusa através da 
função HIPOTENUSA. A função recebe o valor da base e da altura de um 
triângulo. Fórmulas: hipotenusa
2
 = base
2 
+ altura
2
 
area=(base * altura)/2 
3. Escreva um programa que calcule e retorne o salário atualizado através da 
função REAJUSTE. A função deve receber o valor do salário e o índice de 
reajuste. 
 85 
Referências 
ASCENSIO, Ana Fernanda Gomes e CAMPOS, Edilene Aparecida Veneruchi. 
Fundamentos da Programação de Computadores – Algoritmos, Pascal e C/C++. 
Porto Alegre, Prentice Hall, 2002. 
FASSBINDER, Aracele Garcia de Oliveira. Uma Apresentação dos Principais 
Sistemas relacionados à Lógica Clássica. Florianópolis, 2010. 307 f. Dissertação 
(Mestrado em Ciência da Computação) – Centro Tecnológico, Universidade Federal de 
Santa Catarina, Florianópolis, 2010. 
LOPES, Anita; GARCIA, Guto. Introdução à Programação: 500 Algoritmos 
resolvidos. Rio de Janeiro, Campus, 2002. 
SALIBA, Walter Luiz Caram. Técnicas de Programação: Uma abordagem 
estruturada. São Paulo, Makron Books, 1993. 
SALVETTI, Dirceu Douglas; BARBOSA, Lisbete Madsen. Algoritmos. São Paulo, 
Makron Books, 1998. 
TONET, Bruno. Introdução aos algoritmos. Caxias do Sul: Núcleo de apoio à 
aprendizagem de programação. 2012. 
Páginas de Internet: 
APOIO INFORMÁTICA. VisuALG. Disponível em 
<http://www.apoioinformatica.inf.br/o-visualg>. Acesso em 16 dez. 2012. 
Apoio Informática: A tela do VisuALG. http://www.apoioinformatica.inf.br/a-tela-
principal Acesso em 18 dez. 2012 
Atualização Farmacêutica, 2012. http://atualizacaofarmaceutica.com Acesso em 18 dez. 
2012. 
A era da Tecnologia. 
http://aeradatecnologia.files.wordpress.com/2011/06/pascalina2.jpg Acesso em 18 dez. 
2012. 
American University in Bulgaria. http://cssu-bg.org/WomenInCS/ada_lovelace.php 
Acesso em 18 dez. 2012. 
Comidase Bebidas. 
http://comidasebebidas.uol.com.br/album/maca_do_amor_album.htm Acesso em 18 
dez. 2012. 
DMA Departamento de Matemática Aplicada. 
http://www.dma.eui.upm.es/historia_informatica/Doc/Maquinas/MaqAnaliticaBabbage.
htm Acesso em 18 dez. 2012. 
http://aeradatecnologia.files.wordpress.com/2011/06/pascalina2.jpg
http://www.dma.eui.upm.es/historia_informatica/Doc/Maquinas/MaqAnaliticaBabbage.htm
http://www.dma.eui.upm.es/historia_informatica/Doc/Maquinas/MaqAnaliticaBabbage.htm
 86 
Simone Abrero. http://simoneabrero.blogspot.com/2010/09/reforma-me-deixando-
louca.html Acesso em 18 dez. 2012 
Wikipedia http://pt.wikipedia.org/wiki/%C3%81baco Acesso em 18 dez. 2012 
Zun. http://www.zun.com.br/emprego-de-pronomes-relativos/ Acesso em 18 dez. 2012. 
 
 
 
 
http://www.zun.com.br/emprego-de-pronomes-relativos/
 87 
Currículo da professora-autora 
 
 
 
 
 
 
 
Aracele Garcia de Oliveira Fassbinder é graduada em 
Ciência da Computação pelo Centro Universitário de 
Formiga – UNIFOR-MG(2001-2004). Especialista em 
Administração de Sistemas de Informação pela 
Universidade Federal de Lavras – UFLA (2006-2007). 
Mestre em Ciência da Computação pela Universidade 
Federal de Santa Catarina – UFSC (2008-2010). 
Especialista em Design Instrucional para EaD Virtual pela 
Universidade Federal de Itajubá – Unifei (2011-2012). 
É professora efetiva do IFSULDEMINAS – Câmpus 
Muzambinho, atua nos cursos técnicos em informática e 
no curso de Ciência da Computação. Atualmente é 
coordenadora do Curso Técnico em Informática Integrado 
ao Ensino Médio. 
Acesse o Currículo Lattes completo em: 
http://lattes.cnpq.br/4653358157110108: 
 
 
 
http://lattes.cnpq.br/4653358157110108

Mais conteúdos dessa disciplina