Buscar

Tecnicas_de_Programa__o

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
1
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
Técnicas de
Programação
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
2
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
CAPÍTULO 01
A LÓGICA NA PROGRAMAÇÃO DE 
COMPUTADORES
A lógica é, filosoficamente, a ciência do pensamento 
correto. Isso não nos dá a segurança de afirmar que 
tudo que é lógico é verdadeiro. Mesmo que tudo que 
se permita afirmar dentro da lógica seja supostamente 
verdadeiro em determinado contexto, quando aplicada 
a elementos do mundo real pode invalidar-se e tomar-se 
falsa. Desta forma, a lógica seria uma forma de organizar 
o raciocínio, de colocar ordem no pensamento, e assim 
sendo, são várias as técnicas desenvolvidas ao longo dos 
anos por matemáticos e lógicos a fim de desenvolverem 
teorias e axiomas que pudessem ser representados em 
notação computacional para poderem ser programáveis e 
assim dotar as máquinas de certa inteligência lógica.
Boole (1815-1864) e Morgan (1806-1971) foram 
os primeiros estudiosos a empregarem a lógica na 
representação dos processos de raciocínio, o que viria 
a se chamar posteriormente de Álgebra de Boole, 
porém, esses trabalhos estavam mais próximos de 
outras teorias matemáticas do que propriamente da 
lógica. Foi o matemático alemão Gõttlob Frege em sua 
obra Begriffsschrift (1879) que propôs uma ferramenta 
para formalizar princípios lógicos que nos dias atuais 
denominamos de cálculo de predicados. Esse sistema 
apresentou uma notação consistente onde é possível 
representar todos os conceitos matemáticos e formalizar 
de forma exata o raciocínio dedutivo sobre tais conceitos. 
Esta obra marca o nascimento da lógica moderna.
Durante o quarto de século seguinte, Frege empregou 
seu cálculo lógico em pesquisas sobre fundamentos 
da matemática e outros os matemáticos começaram 
a explorar novas áreas que demandavam profundo 
entendimento lógico assim como procedimentos 
sistemáticos de prova de teoremas mais poderosos e 
eficientes dos que já existiam até o momento.
Novos trabalhos surgiram, como o de David Hilbert 
(1899), que transformou a geometria euclidiana em 
axiomas, tornando-a mais consistente e com superior 
rigor formal; Giuseppe Peano (1889) reduziu a aritmética 
comum a puro simbolismo formal, atingindo novo nível 
de precisão, sem ambiguidade de sentido e sem hipóteses 
ocultas e também desenvolveu a lógica simbólica; 
Georg Cantor (1870) pro pôs a exploração intuitiva 
da teoria geral dos conjuntos e a teoria dos números 
transfinitos.
O relacionamento entre lógica e matemática foi 
investigado amplamente por Alfred North Whitehead e 
Bertrand Russel, que em sua obra Principia Mathematica 
(1910) demonstraram que a lógica é um instrumento 
adequado para a representação formal de grande parte 
da matemática.
Em 1930, a área teve um grande avanço, nos estudos 
independentes do matemático alemão Kurt Gõdel e 
o francês Jacques Herbrand. Ambos demonstraram, 
simultaneamente, em suas teses de doutorado, que toda 
fórmula logicamente válida pode ser demonstrada no 
cálculo de predicados de primeira ordem, ou seja, existe 
uma derivação formal para esta fórmula, que é uma lista 
finita de passos em que cada passo é obtido através de 
um axioma, ou de regras de inferência básicas aplicadas a 
passos anteriores. Em 1931 Gõdel apresentou um estudo 
de maior impacto sobre lógica matemática, chamado 
Teorema da Incompletude, demonstrando que seria 
impossível estabelecer uma base axiomática completa 
para toda a matemática, enquanto os outros matemáticos 
tentavam fazê-lo. Ele demonstrou que em qualquer 
sistema matemático estritamente lógico há proposições 
cuja verdade ou falsidade não podem ser demonstradas 
com os axiomas do sistema. Em 1934, Alfred Tarski 
apresentou a primeira teoria semântica rigorosamente 
formal do cálculo de predicados, e caracterizou 
matematicamente os conceitos de “verdade”, constante 
lógica e consequência lógica para sentenças de linguagens 
formalizadas clássicas. Outros matemáticos também 
engrandeceram os estudos sobre o cálculo de predicados, 
como Alan Turing e Alonzo Chur aproximando-o à forma 
como hoje é conhecido e estudado. Tarski é considerado 
um dos maiores lógicos da história, juntamente com 
Aristoteles, Frege e Kurt Gõdel.
Em 1939, com o início da Segunda Guerra Mundial, toda a 
fundamentação teórica da logica computacional já estava 
pronta. Porém, apenas alguns métodos muito simplistas 
podiam ser resolvidos manualmente, com lápis e papel, 
muitos deles, por serem mais complexos, demandavam 
uma maneira prática e mecânica para efetuar o grande 
volume de cálculos dos procedimentos de prova. 
Inicialmente os recursos financeiros eram destinados a 
pesquisas teóricas para o desenvolvimento de técnicas de 
assassinato em massa, foi só a partir da metade dos anos 
50 que a tecnologia de desenvolvimento de computadores 
começaram a oferecer aos pesquisadores o potencial do 
cálculo mecânico, podendo assim eles se beneficiarem 
deste advento para a realização de experiências mais 
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
3
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
significativos com o cálculo de predicados.
Em 1958 uma forma simplificada do cálculo de predicados 
denominada forma clausal começou a despertar o 
interesse dos estudiosos do assunto. Tal forma empregava 
um tipo particular muito simples de sentença lógica 
de nominada cláusula - uma (possivelmente vazia) 
disjunção de literais. Em 1960 Dag Prawitz propôs um 
novo tipo de operação sobre os objetos do cálculo de 
predicados, conhecido por unificação. A unificação se 
revelou fundamental para o desenvolvimento de sistemas 
simbólicos e de programação em lógica.
Os primórdios da ciência da computação, e o início da 
programação em lógica em sistemas computacionais 
ocorreram no final dos anos 50 e início dos anos 60, com 
o intuito de automatizar o processo de demonstração 
de teoremas. Entretanto isso só foi possível a partir da 
descoberta do Princípio da Resolução por Alan Robinson 
(1965), onde “resolução é uma regra de inferência que 
permite a computação das proposições inferidas a partir 
de proposições dadas, constituindo, assim um método 
com potencial aplicação na demonstração automática 
e teoremas” (Sebesta, 2002). A resolução foi idealizada 
para ser aplicada a proposições na forma clausal. Cordell 
C. Green (1969) foi um dos primeiros estudiosos a 
empregar o Princípio da Resolução com a programação 
de computadores, que mostrou como o mecanis mo para 
a extração de respostas em sistemas de resolução poderia 
ser empregado para sin tetizar programas convencionais.
Em 1974, Robert Kowalski designa o uso da lógica como 
linguagem de programação de computadores, e nasce 
o termo programação em lógica (logicprogramming, 
originalmente em inglês). Ele identificou, em um 
procedimento de prova de teoremas, um procedi mento 
computacional, dando desta forma uma interpretação 
procedimental da lógica e estabelecendo regras e 
condições para permitir o entendimento como uma 
linguagem de programação de uso geral.
Este foi o salto crucial que permitiu que todos os esforços 
dos matemáticos e lógicos relacionados com a prova de 
teoremas fossem adaptados a técnicas computacionais 
num esforço em se desenvolver linguagens computacionais 
baseadas em lógica, e que pudessem criar programas 
para dotar as máquinas com capacidade de pensar, 
ou seja, a inteligência artificial, porém isso se tornou 
mais difícil do que o esperado, devido a complexidade 
do raciocínio humano. Desta forma, surgiu o primeiro 
interpretador experimental desenvolvido por um grupo 
de pesquisadores liderados por Alain Colmerauer na 
Universidadede Aix-Mar seille (1972) batizado de Prolog, 
um acrônimo para Programmation em Logique.
Algaritmos Computacionais
Introdução
Desde os primórdios da existência huma na, o homem 
tem procurado mecanismos para tornar o trabalho menos 
maçante e a sua pro dução mais rendável. O advento do 
computador é sem dúvida uma das máquinas que mais 
auxilia a produção do homem ajudando-o a diminuir os 
esforços e ganhar tempo, por ser uma máquina rápida e 
segura.
Apesar de o computador ser uma máquina de grande 
auxílio, ele não consegue por si só gerar programas úteis 
aos humanos por não ter a propriedade de ser dotado de 
inteligência e criatividade. São os humanos que devem 
passar-lhe instruções para que ele se torne util. Essas 
instruções devem ser passadas detalhadamente e são 
chamadas de programas.
Os computadores só conseguem gerar rela tórios, gráficos, 
imprimi-los, editar textos e planilhas, realizar cálculos 
complexos rapidamente, entre outras funções, por meio 
de programas.
A principal finalidade dos computadores é o 
processamento de dados, para tanto, eles devem receber, 
manipular e armazenar dados. O recebimento é realizado 
através de dispositivos de entrada, como o teclado, o 
mouse, o scanner entre outros, realizar processamentos 
com esses dados adquiridos, como um cálculo, uma 
geração de relatório, e emitir uma resposta ao usuário 
através dos dispositivos de saída, como o monitor e a 
impressora, entre outros (ASCENCIO; CAMPOS, 2002).
Ainda existem alguns dispositivos que funcionam 
como entrada e saída, como é o caso das impressoras 
multifuncionais que possuem ao mesmo tempo, scanner 
e impressora e os monitores touchscreen.
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
4
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
Figura 1.1 - Processamento de dados e dispositivos de entrada e salda. Fonte: do autor, 2016.
Para que o computador possa completar corretamente 
uma determinada tarefa, ele deve trabalhar em conjunto 
com o hardware e o software. O hardware é composto 
da parte física do computador, como seus componentes 
e periféricos, e o software é a parte dos programas que 
dão funcionalidade ao computador, desde o sistema 
operacional até os programas de aplicação.
Qualquer pessoa pode se tornar um programador de 
computadores, basta aprender as técnicas necessárias 
para fazê-lo, e requer raciocínio lógico e criatividade. 
Quando há o interesse em desenvolver um programa 
que efetue determinada tarefa, este pode ser um único 
programa, ou um conjunto de programas interligados 
entre si, como é o caso do sistema operacional. Para 
começarmos a desenvolvê-los, temos que dominar uma 
linguagem de programação, que são regras e termos 
entendíveis por nós humanos, mas que são também 
processáveis pelo computador.
 
A criação de um programa deve seguir algumas etapas:
 » análise: nesta etapa deve ser feito um levantamento 
dos requisitos do sistema para saber quais são os 
dados de entrada, quais os processamentos que o 
mesmo deve efetuar, e quais são os dados de saída 
que o programa deve emitir;
 » algoritmo: utilização de ferramentas de auxílio 
ao desenvolvimento, como descrição narrativa, 
fluxograma ou português estruturado para descrever 
o problema e suas soluções;
 » codificação: transformação do algoritmo seguindo 
as regras de alguma linguagem de programação 
escolhida pelo usuário.
O programa passa a existir efetivamente quando 
o algoritmo é codificado segundo as regras de uma 
determinada linguagem de programação, que pode ser 
escolhida pelo programador, levando-se em consideração 
os benefícios de sua aplicação.
Conceito de Algoritmos
Segundo a definição do Dicionário Aurélio, algoritmo 
é um “conjunto bem definido de regras e operações 
bem definidas e ordenadas, destinadas a solução de um 
problema, ou uma classe de problemas, em um número 
finito de etapas”.
Algoritmos são padrões de ações que de vem ser 
respeitadas para se atingir com sucesso um objetivo ou 
a resolução de um problema de acordo com um grupo de 
ações pré-estabelecidas, caso algum desses padrões não 
seja obedecido, o resultado pode não ser o desejado.
Embora estejamos conhecendo o termo agora, 
executamos diversos algoritmos no nosso dia a dia, desde 
o momento que acordamos até o momento que vamos 
dormir. Por exemplo, o próprio ato de escovar os dentes 
ao se levantar é considerado um algoritmo, pois você deve 
seguir algumas etapas para completar a tarefa, como:
 » Passo 1- pegar a escova de dente.
 » Passo 2 - pegar a pasta de dente.
 » Passo 3 - passar a pasta na escova.
 » Passo 4 - coloca a escova na boca e esfregar todos os 
dentes.
 » Passo 5 - tirar a escova da boca.
 » Passo 6 - enxaguar a boca.
Para que um algoritmo seja útil, necessário que tanto quem 
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
5
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
escreveu como quem o executará tenha conhecimento 
da linguagem adotada e conheça os termos utilizados na 
instruções. O algoritmo do exemplo acima só será útil para 
quem entenda a língua portuguesa e tenha conhecimento 
do significado dos verbos pegar, passar, colocar, tirar e 
enxaguar.
Se precisarmos passar no banco para sacar dinheiro nos 
terminais de autoatendimento precisaremos efetuar 
algumas- tarefas sequenciais, que é o algoritmo de saque:
 » Passo 1- ir até o banco, nos terminais de 
autoatendimento.
 » Passo 2 - inserir o cartão.
 
 » Passo 3 - digitar a senha numérica.
 » Passo 4 - digitar as letras de segurança.
 » Passo 5 - digitar a quantia desejada.
 » Passo 6 - se o saldo for maior do que a quantia 
desejada, sacar. Caso contrário, emitir uma mensagem 
de impossibilidade de saque.
 » Passo 7 - retirar o cartão.
 » Passo 8 - sair do banco.
Você pode estar pensando que realiza essas tarefas de 
outra forma, não há problema algum em pensar isso, 
realmente um mesmo problema pode ser resolvido de 
diversas formas, não estando necessariamente errado. 
O que deve acontecer é que os passos descritos, mesmo 
que diferentemente, devem levar a pessoa a executar 
tais ações. Portanto, podem existir vários algoritmos para 
resolver o mesmo problema.
Um algoritmo não é a solução de um problema, pois se 
fosse dessa forma, cada problema apresentaria um único 
algoritmo, este é sim, um caminho a ser seguido para a 
resolução de um determinado problema, e diferentes 
caminhos podem estar corretos.
A seguir, seguem alguns conceitos de algoritmos de outros 
autores:
“Algoritmo é urna sequencia de passos que visa atingir um 
objetivo bem definido” (FORBELLONE; EBERSPACHER, 1999).
“Algoritmo são regras formais para a obtenção de um resultado 
ou da solução de um problema, englobando fórmulas de 
expressões aritméticas” (MANZANO, 2000).
“Ação é um acontecimento que, a partir de um estado inicial, 
após um período de tempo finito, produz um estado final 
previsível e bem definido. Por tanto, um algoritmo é a descrição 
de um conjunto de comandos que, obedecidos, resultam numa 
sucessão finita de ações” (FARRER; BECKER, 1999).
Computacionalmente, um algoritmo é um conjunto de 
regras e um número finito de passos que se organizados 
corretamente levam à construção de um programa de 
computador que realize uma tarefa específica.
ANOTAÇÕES
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
6
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
MÉTODOS PARA A CONSTRUÇÃO DE 
ALGORITMOS
Antes de começar a construir qualquer algoritmo, é 
necessário se atentar a alguns procedimentos que 
ajudarão na escrita e na eficiência do seu algoritmo. São 
eles:
a) Leia atentamente o problema a ser resolvido, 
destacando os principais pontos;
b) Defina quais serão os dados de entrada;
c) Defina quais serão o processamento peloqual esses 
dados terão que passar. Se haverá cálculos, quais as 
fórmulas, e quais restrições para esses dados, se houver.
d) Defina os dados de saída, ou seja, os dados que estarão 
disponíveis para o usuário após o processamento.
e) Construa o algoritmo com alguma forma de 
representação descrita na próxima aula;
f) Teste o algoritmo realizando simulações.
Formas de representação de algoritmos
Os algoritmos podem ser representados de várias formas, 
como em uma língua (português ou inglês), seguindo a 
forma como um manual de instruções, a bula de um 
medicamento, em receitas culinárias, etc. Através de 
representações gráficas, como diagramas ou fluxogramas, 
que substitui muitas palavras, é fácil e entender e fica 
mais compacto.
Cada uma das formas de representação possuem suas 
vantagens e desvantagens, o programador quem irá 
decidir qual forma utilizar, de acordo com os benefícios 
e até mesmo com a sua habilidade e facilidade da forma 
que mais lhe agradar.
As principais formas de representação de algoritmos são: 
Descrição Narrativa, Diagrama de Nassi-Shneiderman 
(Diagrama de Chapin), Fluxograma (Diagrama de fluxo) 
e Pseudocódigo (Português Estruturado, Portugal ou 
Pseu do linguagem).
Descrição Narrativa
A descrição narrativa utiliza a descrição dos passos a 
serem executados pelo algoritmo, feita diretamente em 
linguagem natural (no nosso caso a língua portuguesa). 
Os passos são listados um após o outro, na sequencia em 
que devem ser executados, cada um em uma nova linha 
de texto.
 » Vantagem: não é necessário aprender nenhum recurso 
adicional, pois é escrito em linguagem natural.
 » Desvantagem: a língua natural permite diferentes 
interpretações o que pode ocasionar um erro na 
transcrição do algoritmo para uma linguagem de 
programação.
Exemplo de algoritmo para calcular a média de dois 
números, utilizando a descrição narrativa:
 » Passo 1- receber os dois números.
 » Passo 2 - somar os dois números.
 » Passo 3 - pegar o resultado da soma e dividir por 2.
 » Passo 4 - mostrar o resultado da divisão.
Fluxograma (Diagrama de fluxo)
Os fluxogramas são uma representação gráfica que 
utilizam formas geométricas padronizadas ligadas por 
setas de fluxo, para indicar as diversas ações (instruções) 
e decisões que devem ser seguidas para a resolução do 
problema.
Eles permitem visualizar os caminhos (fluxos) e as etapas 
de processamento de dados possíveis e, dentro destas, os 
passos para a resolução do problema.
 » Vantagem: é mais fácil de interpretar, pois é formado 
por desenhos.
 » Desvantagem: é necessário aprender a simbologia 
dos fluxogramas, para que serve cada elemento e 
a transcrição do algoritmo para uma linguagem de 
programação é mais difícil por ele não apresentar os 
detalhes.
CAPÍTULO 02
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
7
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
Tabela 1 - Conjunto de símbolos utilizados nos fluxogramas
Fonte: do autor, 2016.
Exemplo de algoritmo para calcular a média de dois números, utilizando o Fluxograma:
Figura 2.1 - Fluxograma de um algoritmo para calcular a média de dois números. Fonte: do autor, 2016.
Diagrama de Nassi-Shneiderman (Diagrama de 
Chapin)
Os Diagramas de N a s s i - S h n e i d e r m a n , 
também conhecidos como Diagrama de Chapin surgiram 
nos anos 70 como uma maneira de ajudar nos esforços da 
abordagem de pro gramação estruturada.
A ideia básica deste diagrama é represen tar as ações de 
um algoritmo dentro de um retângulo, subdividindo-o 
em retângulos menores, que representam os diferentes 
blo cos de sequencia de ações do algoritmo.
As vantagens e desvantagens são equiva às da descrição 
narrativa.
Exemplo de algoritmo para calcular a mé dia de dois 
números, utilizando o Diagrama de Nassi-Shneiderman:
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
8
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
Quadro 1- Exemplo do Algoritmo para calcular a média de dois números utilizando o 
Diagrama do Nassi - Shneiderman.
Inicio
receber os dois números.
somar os dois números.
pegar o resultado da soma e dividir por 2
mostrar o resultado da divisão.
Fim.
Pseudocódigo (Português Estruturado, 
Pseudolinguagem ou Portugol)
o pseudocódigo, conhecido também como portugol, 
português estruturado ou pseudolinguagem, consiste 
em escrever os passos para a resolução do problema por 
meio de regras predefinidas.
 » Vantagem: a passagem do algoritmo para qualquer 
linguagem de programação é quase imediata, 
bastando conhecer as palavras reservadas da 
linguagem de programação que será utilizada.
 » Desvantagem: é necessário conhecer as regras do 
pseudocódigo.
Exemplo de algoritmo para calcular a média de dois 
números, utilizando o pseudocódigo:
ALGORITMO
DECLARE N1,N2, M REAL
ESCREVA “Digite dois numeros” 
LEIA N1, N2
M ← (N1*N2)/2 
ESCREVA “Média = ”, M
FIM_ ALGORITMO
Iremos desenvolver algoritmos utilizando o pseudocódigo 
e suas regras serão apresenta das nas próximas aulas.
Variáveis e Constantes
As variáveis e constantes são conceitos fundamentais 
para a construção de algoritmos e programas de 
computadores, pois são através deles que um algoritmo 
armazena os da dos do problema.
Todo dado que tenha que ser alterado durante o 
programa, no decorrer de certo período de tempo, deverá 
ser tratado como uma variável, e tem que ser definido no 
algoritmo.
Quando um dado não tem que alterar seu valor durante 
a execução de um programa, ele pode ser tratado como 
uma constante, e tem que ser definido no algoritmo.
Uma variável e uma constante são fisicamente um 
espaço reservado na memória RAM (memória de acesso 
randômico) do computa dor para armazenar dados 
durante a execução de um programa. Elas possuem um 
nome e um tipo, e no caso da variável, pode ter seu 
conteúdo alterado durante a execução de um programa.
Como exemplo, considere o desenvolvimento de um 
algoritmo que calcule o raio de um círculo. A fórmula para 
o cálculo da área de um círculo é: onde o valor de π é 
sempre 3,14 e r é o raio do círculo. Sendo assim, r é um 
valor que irá variar durante a execução do programa e, 
portanto deverá ser tratada como variável. O valor de é 
um dado constante, ele sempre será 3,14 e não mudará 
durante a execução do programa e, portanto deverá ser 
tratado como constante.
Para manipularmos corretamente as variáveis e constantes 
em um algoritmo, temos que atribuir-lhes nomes próprios, 
chamados de identificadores. A atribuição de nomes para 
as variáveis e constantes devem seguir algumas regras:
1. Devem começar por um caractere alfabético, nunca 
podem começar com números;
2. Podem ser seguidos de outros caracteres alfabéticos e/
ou numéricos;
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
9
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
3. Não é permitido o uso de caracteres especiais, como: 
!@#$%”&*(), etc, exceto o sublinhado, que é possível 
utilizar.
Exemplos de identificadores válidos:
a)Num1
b) X
c) raio
d)num2
e)base_triangulo
Exemplos de identificadores inválidos:
a) 1num
b) n 3
e) raio/2
d) variável nome
e) <4
Tipos Primitivos de Dados
As variáveis ou constantes de um algoritmo armazenarão 
tipos de dados que podem ser: textual, numérico 
inteiro, numérico real ou lógico (para armazenar 
valores verdadeiro/falso ou estados ligado/desligado). 
É necessário informar ao algoritmo o tipo de dado que 
será armazenado em uma determinada variável, pois, 
quando o algoritmo for traduzido para uma linguagem de 
computador, é o tipo de dado que informará à memória 
RAM, a quantidade em bytes que deverá ser reservado 
para o armazenamento daquela variável.
Abaixo serão detalhados os tipos primitivos de dados em 
algoritmo:
 » Inteiro: compreendemos dados numéricos que 
pertençam ao conjunto de números inteiros, sejam 
eles negativos, nulos ou positivos. Esse tipo de dado, 
quando armazenado na memória do computador, 
ocupa 2 bytes.
Exemplos: -4, 0, 128.
 » Real: compreendem os dados numéricos que 
pertençam ao conjunto de números reais (com parte 
decimal), sejam eles negativos, nulos ou positivos. 
Esse tipo de dado, quando armazenado na memória 
do computador, ocupa 4 bytes.
Exemplos: -16,8 0,02 145,23
Caractere: compreendem os dados textuais que pertençam 
ao conjunto de caracteres alfanuméricos (números, letras 
e caracteres especiais), porém que contenham apenas um 
único caractere. Esse tipo de dado, quando armazenado 
na memória do computador, ocupa 1byte.
Exemplos: “s”,”n”,”2”.
 » literal: compreendem os dados textuais que 
pertençam ao conjunto de caracteres alfa numéricos 
(números, letras e caracteres especiais) formado por 
uma cadeia de caracteres. Esse tipo de dado, quando 
armazenado na memória do computador, ocupa 1 
byte para cada caractere.
Exemplos: “escolha a opção desejada”, “Eveline 
Rodrigues”, “sim”.
 » Lógico: compreendem os dados que só terão dois 
valores possíveis, como: verdadeiro/ falso. São 
também chamados de dados Booleanos (devido 
à álgebra de Boole). Esse tipo de dado, quando 
armazenado na memória do computador, ocupa 
apenas 1byte.
Exemplos: verdadeiro, falso.
Declaração de Variáveis
Toda variável é responsável por armazenar um dado, e, 
portanto ela deve ser identificada pelo algoritmo através 
do seu nome e também deve possuir um tipo. Para tanto, 
quando for necessária uma determinada variável em um 
algoritmo, você deve declarar a variável.
A declaração de uma variável indica o tipo de dado que ela 
pode armazenar no decorrer da execução do algoritmo.
Para declaramos uma variável, temos que criar um 
identificador válido, como visto na seção acima, que será 
o nome da variável no algoritmo, e também temos que 
definir o tipo de dado que a variável pode armazenar.
A sintaxe para a declaração de uma variável é:
DECLARE <identificador> <tipo>
Onde <identificador> é o nome da variável que você irá 
declarar seguindo as regras de nomes e <tipo> é um tipo 
de dado que pode ser inteiro, real, caractere ou lógico. 
A palavra reservada DECLARE é para indicar que a seguir 
vem o bloco de declaração de variáveis em um algoritmo.
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
10
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
LINERIZAÇÃO E MODULARIZAÇÃO DE 
EXPRESSÕES
Linearização de Expressões
Para a construção de algoritmos todas as expressões 
aritméticas devem ser linearizadas, ou seja, colocadas em 
linha e deverá ser feito um mapeamento dos operadores 
da aritmética tradicional, convertendo-os para os 
operadores do português estruturado.
Desta forma, a notação tradicional abaixo:
Computacionalmente, passa a ser: 
2*((1/5+(4-1))*4)
Um exemplo de conversão é o operador de multiplicação, 
que no português estruturado é utilizado o símbolo *.
A tabela 1 mostra os operadores aritméticos empregados 
pelo português estruturado, que permitem a construção 
de expressões matemáticas utilizando soma, subtração, 
multiplicação e divisão, são eles:
Tabela 1- Operadores aritméticos do português 
estruturado.
Operadores aritméticos
Função Operador
Soma +
Subtração -
Multiplicação *
Divisão /
Divisão inteira (truncada) \
Resto da divisão inteira %
Exponenciação ^
Fonte: do autor, 2016.
Exemplos:
a<- 10+5
muItipIicação <-x*y
soma <-a+b
Modularização de Expressões
A modularização é a divisão de uma expressão aritmética 
em unidades menores, melhorando a compreensão dos 
cálculos que terão precedência sobre outros.
Computacionalmente, utilizamos apenas os parênteses 
“()” para separarmos módulos em uma expressão. 
A mesma expressão pode conter vários parênteses, 
substituindo o uso de colchetes e chaves na matemática.
Os parênteses indicam quais sub-expressões, dentro de 
uma expressão, serão executadas primeiro. A princípio, a 
execução ocorre da esquerda para a direita, porém, além 
dos parênteses há também a precedência de operadores 
envolvidos na expresão.
A prioridade dos operadores em uma ex pressão 
matemática é mostrada na tabela 2:
Tabela 2 - Prioridade de operadores aritmético sem 
uma expressão matemática
Prioridade de operadores
Operador aritmético Prioridade
Exponenciação 3(maior)
Multiplicação 2
Divisão 2
Adição 1
Subtração 1 (menor)
Fonte: do autor, 2016.
Exemplo:
(4+4)/2 resulta 4 e 4 + 4/2 resulta 6.
12.{[ (4 1)].4}
5
+ −
CAPÍTULO 03
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
11
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
Exemplo:
(7>1) ou (3<4) e (5<2)
O resultado da expressão acima é falso. 
(7>1) e (3<4) ou (5<2)
O resultado da expressão acima é verdadeiro.
Entre as categorias de operadores também há prioridades, 
conforme mostrado na tabela 4:
Tabela 3 - Prioridade de operadores lógicos em uma ex-
pressão matemática.
Prioridade de operadores
Operador lógico Prioridade
E 3
OU 2
NÃO 1
Fonte: do autor, 2016.
Tabela 4 - Prioridade entre as categorias de operadores 
em uma expressão matemática
Operador Prioridade
Operadores aritméticos 3
Operadores relacionais 2
Operadores lógicos 1
Fonte: do autor, 2016.
Exemplo:
3*7>3 ou 6+2<12 e 2 < 8-4 // resulta em erro.
(3*7>3) ou (6+2<12) e (2<8-4) // certo seria assim.
Operadores relacionais e Lógicos
Quando queremos fazer comparações entre valores ou 
entre expressões, sejam elas matemáticas ou lógicas, 
devemos utilizar os operadores relacionais.
Operadores relacionais definem relações de igualdade, 
maior, maior ou igual, menor, menor ou igual e diferente.
Os operadores relacionais são mostrados na tabela 5:
Tabela 5 - Operadores relacionais do português 
estruturado.
Operadores relacionais
Função Operador
maior que >
menor que <
maior ou igual > =
menor ou igual < =
igual =
diferente < >
Fonte: do autor, 2016.
O resultado de uma expressão relacional é sempre um 
nível (verdadeiro ou falso).
Exemplos: 
2+6 = 4+4
8=8
Resultado: verdadeiro 
2+6 > 4+4
8>8
Resultado: falso
Os operadores lógicos atuam sobre expressões e também 
possuem resultado verdadeiro ou falso.
Eles servem para unir duas ou mais expressões cujo 
resultado final é apenas um único valor (verdadeiro ou 
falso).
Os operadores lógicos são mostrados na tabela 6:
 
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
12
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
Tabela 6- Operadores lógicos do português estruturado.
Operadores lógicos
Operadores lógicos Português estruturado
Multiplicação lógica E
Adição lógica OU
Negação NÃO
Fonte: do autor, 2016.
A multiplicação lógica (E) resulta verdadeiro se todas as 
expressões envolvidas forem verdadeiras.
A adição lógica (OU) resulta verdadeira se uma e apenas 
uma das expressões for verda deira.
A negação (NÃO) nega uma afirmação, invertendo o seu 
nível: se a expressão for verdadeira, ela torna-se falsa e se 
a expressão for falsa, ela torna-se verdadeira.
De acordo com a necessidade, as expressões podem ser 
unidas através de operadores lógicos.
Faz-se necessário conhecer a tabela-verdade, que é o 
conjunto de todas as possibilidades combinatórias entre 
os valores das variáveis lógicas.
A tabela-verdade é mostrada na tabela 7:
Tabela 7- Tabela - verdade
A B A E B A OU B NÃO A NÃO B
V V V V F F
V F F V F V
F V F V V F
F F F F V V
Fonte: do autor, 2016.
Dados valores iniciais para as expressões A e B, como V 
para verdadeiro, e F para falso, são mostradas todas as 
combinações possíveis entre os pares de expressões A e 
B, para os operadores lógicos E, OU e NÃO.
Exemplos:
(8<6) E (4=4)
Resultado: falso, pois apenas uma expressão é verdadeira.
(2<5) E (4=4)
Resultado: verdadeiro, pois ambas as ex pressões são 
verdadeiras.
(2>6) ou (4>=4)
Resultado: verdadeiro, pois sendo apenas uma expressão 
verdadeira com o operador OU, o resultado é verdadeiro.
(2>6) ou (8<4)
Resultado: falso, pois ambas as expressões são falsas.
((2>6) OU (8<4)) E (2=2)
Resultado: falso, pois sendo apenas uma ex pressão falsa 
com o operador E, o resultado é falso.
((2>6) E (8<4)) OU (2=2)
Resultado: verdadeiro, pois sendo apenas uma expressão 
verdadeira com o operador OU, o resultado é verdadeiro.
NÃO (2>6)
Resultado: verdadeiro, pois nega a expres são que é falsa.
NÃO (4<5)
Resultado: falso, pois nega a expressão que é verdadeira.
ANOTAÇÕES
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
13
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
VISUAL G: PROGRAMA DE APOIO PARA 
CONSTRUÇÃO DE ALGORITMOS
Utilizaremos como programa de apoio para 
escrevermos e testarmos os algoritmos o programa 
VisuAlg. Você pode obtê-lo gratuitamente pelo link: 
http://ultraDownloads.com.br/Download/Visualg/
O VisuAlg (Visualizador de Algoritmo) é um programa 
onde você pode escrever seus algoritmos. Ele interpreta as 
instruções contidas no seu algoritmo e ao final o executa. 
Assim você tem a possibilidade de vê-lo funcionando. Isso 
lhe permite realizar vários testes e conferir se a lógica do 
seu algoritmo está solucionando o problema proposto. A 
figura 4.1 mostra a tela do VisuAlg:
Figura 4.1 - Tela do programa VisuAlg. Fonte: do autor: 2016.
Como dito anteriormente, para que um algoritmo seja 
útil, é necessário que tanto quem o escreve como quem 
o executa tenha conhecimento da linguagem adotada e 
conheça os termos utilizados na instruções. Desta forma, 
em algoritmos computacionais, a notação uti lizada 
deve ser entendível por quem escreve e executável pelo 
computador.
Após a escrita do algoritmo, é possível testá-lo através 
do menu Arquivo, opção Executar, ou simplesmente pela 
tecla de atalho F9, como pode ser visto na figura 4.2:
CAPÍTULO 04
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
14
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
Figura 4.2 - Execução de um algoritmo no programa VisuAlg. Fonte: do autor: 2016.
A linguagem utilizada pelo VisuAlg é próxima do português 
estruturado e será abordada ao longo das próximas aulas.
Para facilitar a digitação e evitar confusões, todas as 
palavras-chave do VisuAlg foram implementadas sem 
acentos, cedilha, etc. Por tanto, o tipo de dados lógico 
é definido como logico, o comando se..então..senão é 
definido como se..então..senão, e assim por diante. O 
VisuAlg também não distingue maiúsculas e minúsculas 
no reconhecimento de palavras -chave e nomes de 
variáveis.
Formato básico de um pseudocódigo
Os primeiros elementos que compõem o português 
estruturado e que são elementos obrigatórios em 
qualquer algoritmo são escritos a seguir:
Algoritmo “<nome do algoritmo>”
var
< declaração de variáveis>
inicio
< lista de comandos>
Fimalgoritmo
Onde as palavras algoritmo e fimalgoritmo fazem parte 
da linguagem e delimitam o início e fim do algoritmo; 
a <declaração de variáveis> é seção onde declaramos 
as variáveis, colocando seu nome e tipo; inicio indica o 
início da seção de comandos; <lista de comandos> é uma 
indicação do local onde você deve digitar as instruções, 
que deve ficar entre as palavras reservadas inicio e 
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
15
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
fimalgoritmo.
O VisuAlg permite a inclusão de comentários: qualquer 
texto digitado após “//” é ignorado, até atingir o final da 
sua linha. Se for necessário utilizar mais de uma linha de 
comentário, cada linha deverá começar por “//”.
As palavras que fazem parte da linguagem são conhecidas 
como palavras reservadas e você não pode utilizá-las 
em outras seções do código de um algoritmo a não ser 
naquele onde seu uso foi previsto.
Abaixo segue uma tabela (tabela 1) com todas as palavras 
reservadas da linguagem:
Tabela 1 - Lista de palavras reservadas do VisuAlg. 
aleatorio fimescolha passo
algoritmo fimfuncao pausa
arquivo fimpara pos
asc fimprocedimento real
ate fimrepita procedimento
carac fimescolha repita
caracpnum fimse retorne
caractere fimfuncao se
caso funcao senao
compr inicio timer
copia int var
cronometro inteiro vetor
debug interrompa verdadeiro
e leia xou
eco limpatela maiusc
enquanto logico minusc
então maiusc mod
escolha minusc nao
escreva mod numpcarac
escreval nao passo
faca numpcarac pausa
falso ou pos
fimalgoritmo outrocaso real
fimenquanto para
Fonte: do autor, 2016.
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
16
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
Programação Sequencial
A estrutura sequencial é a estrutura mais simples que 
utilizamos na construção de al goritmos estruturados. 
Ela é formada por um conjunto de instruções que serão 
executados em uma sequencia linear de cima para baixo e
da esquerda para a direita, na mesma ordem em que 
foram escritas. O comando seguinte é executado apenas 
quando o comando anterior termina a sua execução.
A sintaxe básica para uma estrutura sequencial é a 
seguinte:
ALGORITMO
DECLARE 
 
bloco de instruções
FIM_ALGORITMO
As variáveis são declaradas após a palavra DECLARE.
Comando de atribuição em algoritmo
O comando de atribuição é utilizado para atribuir valores 
ou operações matemáticas a variáveis, e é representado 
no Visualg pelo símbolo <-. O tipo do dado atribuído 
para a variável deve ser compatível com o tipo declarado 
previamente para a variável.
Exemplos:
 a <-10
resposta <- falso
peso <- 56.8
materia <- “algoritmo”
soma <- resultado
Comando de entrada em algoritmo
O comando de entrada é utilizado para receber os 
dados digitados pelo usuário. Os dados recebidos são 
armazenados em variáveis.
Isso permite que o programa receba dados externos, ou 
seja, dados que o usuário envia para ele. Esse comando é 
representado pela palavra LEIA.
Exemplos:
LEIA a
Um valor digitado pelo usuário será armazenado na 
variável a.
LEIA materia
Um ou vários caracteres digitados pelo usuário serão 
armazenados na variável materia.
LEIA resposta
Um dado lógico digitado pelo usuário será armazenado 
na variável resposta.
Comando de saída em algoritmo
O comando de saída é utilizado para mostrar os dados 
no monitor do computador ou imprimi-los em uma 
impressora. Esse comando é representado pela palavra 
ESCREVA e ele pode mostrar o conteúdo de variáveis, 
constantes, expressões ou mensagens.
Exemplos:
ESCREVA a
Mostra o valor armazenado na variávela.
ESCREVA “ A matéria escolhida foi:”, matéria
Mostra a frase “A matéria escolhida foi:”, seguida Mostra 
o valor armazenado na variável matéria.
ESCREVAresposta
Mostra o valor armazenado na variável res posta.
ESCREVA(a+b)
Mostra o valor resultante do cálculo das variáveis a+b.
Com os comandos de atribuição, entrada e saída já é 
possível desenvolver algoritmos simples.
O algoritmo abaixo mostra a resolução de um algoritmo 
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
17
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
que recebe o nome de uma pessoa e mostra-o.
Exemplo:
algoritmo
var
norne: literal
inicio
escreva(“Digite o seu nome:”)
leia(nome)
escreva(nome)
fimalgoritmo
O algoritmo abaixo mostra a resolução de um algoritmo 
que recebe o peso e a altura de um atleta, calcula o IMC 
e mostra.
Exemplo:
algoritmo
var
peso, altura, imc: real
inicio
escreva(“Digite o peso:”)
leia(peso)escreva (“Digite a altura:”)
leia(altura)
imc <- peso / (altura*altura)
escreva(“O seu IMC é”, imc)
fimalgoritmo
O algoritmo abaixo mostra a resolução de um algoritmo 
que faz um cadastro dos seguintes dados de um animal 
para um pet shop: o nome do dono do cão, o nome do 
cão, a sua raça, a sua idade e seu peso. Depois de lidos os 
dados, eles são mostrados.
Exemplo:
Algoritmo
var
nomedono, nomecao, raca : literal
idade: inteiro
peso: real
inicio
escreva(“Digite o norne do dono:”)
leia(nornedono)
escreva(“Digite o nome do cão:”)
leia(nomecao)
escreva(“Digite a raca:”)
leia (raca)
escreva(“Digite a idade:”)
leia(idade)
escreva(“Digite o peso:”)
leia(peso)
escreval(nomedono)
escreval(nomecao)
escreval(raca)
escreval(idade)
escreval(peso)
fimalgoritmo
Como pode ser observado no código acima, variáveis do 
mesmo tipo podem ser declaradas na mesma linha entre 
vírgulas e o comando escreval () serve para pular linha 
após a escrita.
Programação com Decisão
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
18
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
Estrutura Condicional Simples
Em vários momentos de nossas vidas, precisamos tomar 
decisões baseadas em condições, por exemplo: “se eu 
concluir o curso então terei grandes chances de trabalhar 
em uma empresa multinacional”. A condição no exemplo
acima é “eu concluir o curso” e caso isso aconteça (a 
condição seja verdadeira) ocorrerá a situação descrita 
a seguir: “terei grandes chances de trabalhar em uma 
empresa multinacional”. Portanto, só irei trabalhar em 
uma grande empresa multinacional SE eu passar no curso.
Analogamente, nos algoritmos também podemos 
empregar o uso de condições, para fazer com que o fluxo 
de execução mude de acordo com alguma situação que 
tenha ou não ocorrido e para executar instruções que 
dependam daquela condição.
Nos algoritmos a condição é uma expressão lógica, que se 
torna verdadeira quando é satisfeita ou falsa quando não 
é satisfeita. Assim, as ações a serem executadas são uma 
ou várias instruções e só serão realizadas caso a condição 
seja verdadeira.
Vamos colocar a frase acima mais próxima do português 
estruturado:
se “eu concluir o curso” então
“Terei grandes chances de trabalhar em uma empresa 
multinacional”
fimse
As palavras grifadas são as palavras reservadas que 
constroem uma estrutura condicional nos algoritmos.
A sintaxe para criar uma estrutura condicional simples é:
 secondição entao
comando 1
comando 2
 .
 .
 .
comandoN
fimse
O(s) comando(s) só será(ão) executado(s) se a condição 
for verdadeira. Caso a condição seja falsa, esses comandos 
são desprezados e o algoritmo continua a sua execução a 
partir da primeira linha depois do fimse. Uma condição 
é uma expressão lógica que resulta em dois valores 
verdadeiro ou falso.
Você pode colocar apenas um ou vários comandos dentro 
de um bloco de estrutura condicional simples. Não há 
limite na quantidade de comandos.
As condições são expressões lógicas, ou seja, são formadas 
por comparações entre variáveis ou entre variáveis e 
valores. São comparações de igualdade, diferença, maior, 
maior ou igual, menor, menor ou igual e, portanto utilizam 
os operadores relacionais.
Exemplos:
se ( a > 10) então
Essa expressão lógica testa se o valor da variável a é maior 
do que 10.
se ( a > 10) então
Essa expressão lógica testa se o valor da variável a é maior 
do que o valor da variável b.
O algoritmo abaixo recebe o nome e a idade de uma 
pessoa. Há uma condição: se (ida de> = 18) que testa se 
o valor da variável idade é maior ou igual a 18. Caso a 
expressão seja verdadeira, a mensagem “você pode tirar 
carta” é exibida. Caso a expressão seja falsa, o algoritmo 
prossegue a partir do primeiro comando depois da palavra 
reservada fimalgoritmo.
Exemplo:
algoritmo
var
nome: literal
idade: inteiro
inicio
escreva(“Digite seu nome:”)
leia(nome)
escreva(“Digite sua idade:”)
leia(idade)
se(idade>=18) entao
escreva(“Você pode tirar carta”)
fimse
fimalgoritmo
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
19
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
O algoritmo abaixo recebe duas notas e calcula a média 
dessas notas. Há uma condição: se (media>=7) que testa 
se o valor da variável media é maior ou igual a 7. 
Caso a expressão seja verdadeira, a mensagem “você está 
aprovado” é exibida. Caso a expressão seja falsa, o 
algoritmo prossegue a partir do primeiro comando depois 
da palavra reservada fimalgoritmo.
Exemplo:
algoritmo
var
nota1,nota2,media:real
inicio
escreva(“Digite a 1ª nota:”)
leia(nota1)
escreva(“Digite a 2ª nota:”)
leia(nota2)
media<-(nota1+nota2)/2
se(media>=7) entao
escreva(“Você está aprovado”)
fimse
fimalgoritmo
Mas você deve estar pensando: e se o aluno estiver 
reprovado? O algoritmo não faz nada? Neste algoritmo, não 
foram previstos um bloco de comandos que executassem 
quando a condição fosse falsa. Essa construção é possível 
e extremamente útil.
A estrutura que possui resposta tanto para expressões 
lógicas verdadeiras, quanto falsas, é chamada de estrutura 
condicional composta, e será estudada na próxima aula.
ANOTAÇÕES
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
20
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
LAÇOS DE SELEÇÃO (OU CONDIÇÃO)
Estrutura Condicional Composta
Na aula anterior vimos como construir um bloco de 
estrutura condicional simples, onde são previstos apenas 
comandos para serem executados se a expressão lógica 
for verdadeira.
Porém na maioria dos casos, o algoritmo também deve 
fornecer resposta ou executar determinados comandos 
caso a condição seja falsa.
A sintaxe para criar uma estrutura condicional composta 
é mostrada a seguir:
se condicão entao
comando ou lista de comandos
senao
comando ou lista de comandos
fimse
Utilizando o senão, o algoritmo da maioridade ficaria 
assim: Exemplo:
algoritmo
var
nome: literal
idade: inteiro
escreva(“Digite seu nome:”)
leia(nome)
escreva(“Digitesua idade:”)
leia(idade)
se(idade>=18) entao
 escreva (“Você pode tirar carta”)
senao
 escreva(“Você deve ter 18 anos para tirar carta”)
fimse
fimalgoritmo 
No algoritmo acima, se a condição: se(idade>=18) 
for verdadeira, a mensagem “você pode tirar carta” é 
executada. Senão, caso a condição seja falsa, a mensagem 
“você deve ter 18 anos para tirar carta” é executada.
Utilizando o senão, o algoritmo dos aprova dos ficaria 
assim:
Exemplo:
algoritmo
var
nota1,nota2,media:real
inicio
escreva(“Digite a 1ª nota:”)
leia(nota1)
escreva(“Digite a 2ª nota:”)
leia(nota2)
media<-(nota1+nota2)/2
se(media>=7) entao
 escreva(“Você está aprovado”)
senao
 escreva(“Você está reprovado”)
fimse
fimalgoritmo
No algoritmo acima, se a condição: se (me dia>=7) 
for verdadeira, a mensagem “você está aprovado” é 
executada. Senão, caso a condição seja falsa, a mensagem 
“você está reprovado” é executada.
Ainda podemos construir blocos de estrutura condicional 
com duas ou mais condições conectando-as através dos 
operadores lógicos E e OU. Suponha o seguinte problema: 
para que um aluno seja aprovado em uma escola, durante 
o ano letivo, ele deve ter média igual ou superior a 7.0 
e frequência igual ou superior a 75%. De nada adianta o 
CAPÍTULO 05
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
21
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
aluno ter 10.0 de média e ter frequência inferior a 75%. 
O mesmo acontece se o aluno tiver 100% de frequência e 
notas abaixo da média. Vamos analisar o algoritmo para 
esse caso:
Exemplo:
algoritmo
var
bim1,bim2,bim3,bim4,media,freq:real
inicio
escreva(“Digitea nota do 1ª bimestre:”)
leia(bim1)
escreva(“Digite a nota do 2ª bimestre:”)
leia(bim2)
escreva(“Digite a nota do 3ª bimestre:”)
leia(bim3)
escreva(“Digite a nota do 4ª bimestre:”)
leia(bim4)
escreva (“Digite a frequencia do aluno:”)
leia(freq)
media<-(bim1+bim2+bim3+bim4)/4
se(media>=7) e (freq>=75) entao
 escreva(“Você está aprovado)
senao
escreva(“Você está reprovado”)
fimse
fimalgoritmo
O algoritmo acima resolveu o problema da média acima 
de 7.0 e da frequência acima d 75% com duas condições 
conectadas pelo operador lógico E.
Somente se ambas as condições: se(media>= 7) e se(freq>= 
75) forem verdadeiras o aluno “está aprovado”. Caso 
contrário, se quaisquer umas das condições forem falsas, 
o resultado também é falso, e o aluno “está re provado”. 
Como vimos anteriormente, com o opera dor lógico E, 
somente se ambas as condições forem verdadeiras o 
resultado é verdadeiro. Em quaisquer outras circunstâncias 
o resultado é sempre falso.
Não há limites para a quantidade de condições em uma 
estrutura condicional, o que irá delimitar a quantidade é 
o problema em questão.
Estrutura Condicional Composta Escolha-Caso
Quando precisarmos comparar o conteúdo de uma 
variável com uma lista de possíveis valores que esta pode 
assumir no programa, a estrutura mais apropriada é a 
estrutura condicional composta escolha-caso.
O conteúdo de uma variável é comparado com uma lista 
de valores constantes incluídos pelo programador. Para 
cada elemento da lista pode ser incluída a execução de um 
ou mais comandos, que será executado caso o resultado 
da comparação seja uma igualdade. Esses comandos são 
mutuamente exclusivos, ou seja, quando um comando for 
executado, os demais não o serão.
Recomenda-se utilizar esta estrutura quando o programa 
tiver que apresentar várias opções, como é o caso da 
escolha de itens em um menu.
A sintaxe para criar uma estrutura condicional composta 
escolha-caso é mostrada a seguir:
escolha(variavel)
caso valor1
comando ou lista de comandos
caso valor2
comando ou lista de comandos
outrocaso
comando ou lista de comandos
fimescolha
A estrutura escolha (variável) avalia o valor de uma 
variável para decidir qual caso será executado.
Cada caso está associado a um possível valor que a 
variável pode assumir.
Quando nenhum caso for executado, pois o valor da 
variável não foi previsto em nenhum dos casos, então será 
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
22
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
executado o comando outrocaso.
O comando fimescolha é utilizado para estipular o fim da 
estrutura escolha-caso.
A variável testada na estrutura escolha-caso só 
poderá ser do tipo inteiro, caractere ou literal.
Outra construção possível com a estrutura escolha-caso é 
colocar uma lista de valores entre vírgula, como a seguir:
escolha(variavel)
caso valorl,valor2,valor3 
comando ou lista de comandos caso 
valor4,valor5,valor6 
comando ou lista de comandos 
outrocaso
comando ou lista de comandos
fimescolha
Neste caso, a estrutura escolha (variável) avalia o valor de 
uma variável para decidir qual caso será executado.
Cada caso possui uma lista de valores possíveis para 
aquela variável, sendo executado sempre que o valor for 
igual a qualquer um dos valores previstos entre vírgula.
No algoritmo abaixo são lidos dois números inteiros e é 
apresentado um menu de opções para o usuário, onde ele 
tem que digitar o número 1para escolher a operação de 
soma dos números, o número 2 para escolher a operação 
de subtração dos números, o número 3 para escolher a 
operação de multiplicação dos números e o número 4 para 
escolher a operação de divisão dos números. A estrutura 
escolha-caso(op) testa o valor presente na variável op e 
caso seja as opções de 1 a 4 realiza os cálculos relativos a 
cada opção. O comando outrocaso é executado quando a 
opção digitada pelo usuário é diferente daquelas previstas 
no menu. No final o resultado da operação é mostrado 
para o usuário.
Exemplo:
continuação...
algoritmo
var
n1,n2,op:inteiro
result:real
inicio
escreva(“Digite o 1° número:”)
leia(n1)
escreva(“Digite o 2° número:”)
leia(n2)
escreva(“Digite:1 - somar 2 - subtrair 3 - 
multiplicar 4 - dividir”)
leia(op)
escolha(op)
caso1
result<-n1+n2
caso2
result<- n1-n2
caso3
result<- n1*n2
caso4
result<-n1/n2
outrocaso
 escreval(“opção invalida”)
fimescolha
escreva(“Resultado:”,result)
fimalgoritmo
No algoritmo abaixo a variável testada pela estrutura 
escolha-caso é uma variável do tipo literal ou caractere. 
É lida uma senha do usuário. A senha é do tipo literal, e 
por isso é testada entre aspas (caso “abc”). Caso a senha 
seja “abc” é mostrada a mensagem “Acesso total ao 
sistema 11 ao usuário; caso a senha seja “def” é mostrada 
a mensagem “Acesso parcial ao sistema” ao usuário e 
finalmente, caso a senha não seja nenhuma das opções 
anteriores é mostrada a mensagem “Você não tem acesso 
ao sistema”.
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
23
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
Exemplo:
algoritmo
var
senha: literal
inicio
escreva(“Digite a senha:”)
leia(senha)
escolha(senha)
caso”abc”
escreval(“Acesso total ao sistema”)
caso “def”
escreval(“Acesso parcial ao sistema”)
outrocaso
escreva(“Você não tem acesso ao sistema”)
fimescolha
fimalgoritmo
Você pode testar o mesmo algoritmo trocando o tipo 
da variável senha para caractere e testando a senha 
com apenas um caractere que a estrutura escolha-caso 
também irá executar corretamente.
ANOTAÇÕES
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
24
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
LAÇO DE REPETIÇÃO
Os laços de repetição, conhecidos também por estruturas 
de repetição, servem para você repetir um trecho do 
algoritmo sem ter que digitá-lo várias vezes, o que 
aumentaria consideravelmente o tamanho do algoritmo.
O laço de repetição para é utilizado quando se sabe 
previamente o número de vezes que um determinado 
trecho do algoritmo deve ser repetido. Este tipo de laço 
é dotado de estruturas que permitem a contagem de 
vezes em que foi executado até que se atinja um limite 
estipulado.
Recomenda-se utilizar este laço de repetição quando se 
sabe de antemão a quantidade de vezes que ele deve 
executar.
A sintaxe para criar um laço de repetição para é mostrada 
a seguir:
para i de valori ate valorf faca
comando ou lista de comandos
fimpara
A variável i é uma variável de controle do laço, e deve 
ser uma variável do tipo inteiro. Esta variável não precisa 
necessariamente se chamar i, ela pode ter outro nome, 
portanto é comum em algoritmo e nas linguagens de 
programação nomear a variável do laço para como i.
A variável i é uma variável de controle do laço para, e 
esta recebe um valor inicial (valori) e é incrementada 
automaticamente a cada repetição, até atingir o valor final 
(valorf) definido pelo programador, executando assim 
uma quantidade predeterminada de vezes. O processo 
de repetição é executado enquanto a variável i tenha um 
valor menor ou igual ao valor da variável valorf. O laço é 
finalizado quando a variável i ultrapassar o valor de valorf.
Desta forma, o comando ou a lista de comandos são 
executados tantas vezes quanto for estipulado no laço 
para.
O comando fimpara é utilizado para estipular o fim do 
laço de repetição para, é ele quem delimita o bloco de 
comandos que fica dentro do laço.
O laço de repetição para é utilizado quando se sabe 
antecipadamente a quantidade de vezes que um 
comando ou um conjunto de comandos deve ser 
executado.
No algoritmo abaixo são lidos 10 nomes e idades 
diferentes. Para isto, foram declaradas a variável nome 
como literal e as variáveis idade e i como inteiro também.
Exemplo:
algoritmovar
nome:literal
i,idade:inteiro
inicio
para i de 1 ate 10 faca
 escreva(“Digite o nome:”)
 leia(nome)
 escreva(“Digite a idade:”)
 leia(idade)
fimpara
fimalgoritmo
Se fossemos resolver o algoritmo acima sem a estrutura 
de repetição para, o algoritmo teria que escrever e ler 
10 vezes cada variável: nome e idade. O tamanho do 
algoritmo ficaria muito extenso, com 40 linhas apenas 
para as leituras das duas variáveis.
O laço de repetição para é inicializado através da sua 
variável de controle i com o valor 1,e será incrementada 
até o valor 10, ou seja, a execução do laço para só termina 
quando a variável de controle i for maior do que 10.
O comando fimpara termina a execução do laço de 
repetição para.
O algoritmo mostrado abaixo é um exemplo de um 
algoritmo envolvendo cálculos. O algoritmo deve contar 
e mostrar o resultado de todos os números pares de 1 até 
100.
CAPÍTULO 06
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
25
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
Exemplo:
algoritmo
var
i,cont:inteiro
inicio
cont<-0
para i de 1 ate 100 faca
 se ((i mod 2)=0) entao
 cont<-cont+i
fimse
fimpara
 escreva(“Contagem dos números pares:”, cont)
fimalgoritmo
No algoritmo acima, foram declaradas duas variáveis: 
a variável cont do tipo inteiro servirá para armazenar a 
contagem dos números pa res, e a variável contadora i 
para auxiliar o laço de repetição para.
O laço de repetição para foi inicializado com 1 e executará 
até 100. Isso significa que o laço executará 100 vezes.
O comando se((i mod 2) = 0)é responsável para testar 
se o valor da variável contadora i, em um determinado 
momento, é par. Caso o resto da divisão (comando mod) 
da variável por 2 seja igual a 0, isso significa que a variável 
é par, e então há o cálculo da soma dessa variável com 
uma variável acumuladora cont, que é inicializada com 0 e 
servirá para armazenar a contagem de todos os números 
pares.
Uma variável acumuladora tem a seguinte sintaxe:
cont <- cont + i
Ela deve ser sempre inicializada com o valor 0, e sempre 
que tal condição seja satisfeita, ela irá acumular o seu 
valor prévio somado ao valor de outra variável,desta 
forma acumulando o resultado de uma soma, como é o 
caso do nosso exemplo.
A execução do laço para só termina quando a variável de 
controle i for maior do que 100.
Ao final do laço de repetição para, o valor da variável 
acumuladora é escrito, apresentado para o usuário a 
soma de todos os números pares.
Laço de Repetição Enquanto
O laço de repetição enquanto é uma estrutura que efetua 
um teste lógico (ou condição) no início, sendo assim, a sua 
execução está condicionada à veracidade desse teste e só 
executará se a condição for verdadeira. O laço é executado 
retornando novamente ao teste lógico e assim o processo 
será repetido enquanto a condição testada for verdadeira. 
Se a condição for falsa logo no primeiro teste, o laço não 
executa.
Este laço é mais indicado em casos onde não se sabe a 
quantidade de vezes que um determinado trecho de 
código deve ser repetido, e sim quando a sua repetição 
está condicionada à veracidade de um teste lógico.
A sintaxe para criar um laço de repetição enquanto é 
mostrada a seguir:
enquanto condição faca
 comando ou lista de comandos
fimenquanto
O comando enquanto é seguido de uma condição, ou 
teste lógico, e depois da palavra faca, seguido por um 
comando ou lista de comandos e finalizando com a 
palavra fimenquanto.
O laço permanece em execução enquanto a condição for 
verdadeira, terminando a sua execução quando a mesma 
se tornar falsa.
Devemos nos atentar à variável testada pela condição do 
laço enquanto. Se o valor da variável testada na condição 
não for alterado dentro do próprio laço enquanto, o laço 
pode executar sem parar, pois a condição de teste nunca 
ficará falsa, e dessa forma dizemos que o laço fica em loop 
infinito.
Um exemplo de execução de um laço enquanto, com loop 
infinito:
Exemplo:
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
26
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
algoritmo
var
resp: literal
num:real
inicio
resp<- “nao”
enquanto resp = “nao” faca
 num<- rand()
escreval(“Numero randômico:”,num)
fimenquanto
fimalgoritmo
O algoritmo acima foi desenvolvido para escrever na tela 
valores gerados randomicamente pela função rand(). Existe 
um laço enquanto que executa baseado na veracidade da 
condição resp = “nao”. Observe que a variável resp, que 
será testada pela condição, deve ser inicializada antes de 
ser utilizada, como foi o caso do exemplo:resp<- “nao” ou 
deve ter seu valor lido pelo usuário. Neste caso, a variável 
respfoi inicializada com o valor “nao”, pois é o valor que 
lhe dará acesso de entrada no laço.
O laço enquanto irá repetir enquanto o valor de resp for 
igual a “nao”. Acontece que o valor da variável respnão 
é alterado dentro do laço, portanto seu valor será 
sempre “nao” e isso acarretará um loop infinito, ou seja, 
o programa não deixa nunca de executar o laço, pois a 
condição testada no início nunca fica falsa.
Podemos corrigir o programa acima, com o exemplo a 
seguir:
Exemplo:
inicio
resp<- “nao”
enquanto resp= “nao” faca
 num <- rand()
escreval(”Numero randômico:”,num)
 escreval(”Deseja sair? (sim/nao)”)
 leia(resp)
fimenquanto
fimalgoritmo
algoritmo
var
resp : literal
num: real
continua
Observe que adicionamos os comandos
escreval(“Deseja sair? (sim/não)”)
leia(resp)
Desta forma, o usuário tem a opção de responder 
“sim” - quero sair do programa - e a execução do laço 
termina, pois a condição testada fica falsa.
Veja o exemplo de um algoritmo cuja condição de parada 
é invalidada pelos comandos internos ao laço enquanto. 
O algoritmo deve ler uma quantidade indeterminada de 
números e a condição de parada é quando o programa ler 
5 números negativos.
Exemplo:
algoritmo
var
cont,num : inteiro
inicio
cont <- 0
enquanto cont < 5 faca
 escreval(”Digite um numero”)
 leia(num)
 se(num < 0) entao
 cont <- cont + 1
fimse
fimenquanto
continua
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
27
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
escreval(”Quantidade de numeros negativos: “,cont)
fimalgoritmo
No algoritmo acima, foram declaradas duas variáveis, a 
variável cont é uma variável contadora e serve para contar 
a quantidade de números negativos (os contadores são 
explicados detalhadamente na próxima aula). A variável 
num serve para armazenar o número lido. A condição de 
entrada no laço enquanto é o contador ser menor do que 
5. Para isso, deve-se inicializar a variável contadora com 
o valor 0. Depois de lido o número dentro do laço, há um 
teste se (num < 0) que irá verificar se o número digitado é 
negativo, caso seja, a variável contadora irá atualizar em 
1 o seu valor.
O laço só termina a sua execução quando forem lidos 5 
números negativos.
Neste exemplo, a variável testada na condição do laço 
enquanto (cont) é atualizada por uma expressão aritmética 
cont <- cont + 1 dentro do próprio laço, evitando loop 
infinito.
Contadores e Acumuladores
Foi utilizado na aula anterior o conceito de contador, 
portanto é necessário aprender sobre os contadores 
e também os acumuladores, pois são mecanismos de 
contagem muito utilizados dentro de laços de repetição.
Contador
O contador é utilizado para contar o número de vezes 
que um determinado evento ocorre. Obrigatoriamente é 
utilizado dentro de laços de repetição que não possuem 
quantidade fixa de execuções, como o caso dos laços de 
repetição repita e o enquanto.
Um contador é sempre inicializado em 0 e é somado com 
a constante1, mas também pode ser somado a outras 
constantes.
A sua sintaxe é:
variavel <-0
variavel <- variavel + constante
Onde variável deve ser uma variável numérica do tipo 
inteiro ou real e primeiramente deve-se inicializa-la com 
0, para garantir que seu valor inicial seja conhecido. 
A constante determina o valor do incremento, que 
normalmente é 1, mas que não impede de ser outra 
constante.
Abaixo segue um exemplo de um contador chamado cont:
Exemplo:
cont <- 0
cont <- cont+1
Ele é inicializado com o valor 0 e na próxi ma linha, a 
instrução cont <- cont + 1 soma o seu conteúdo anterior 
com o valor 1. Assim, a cada execução dessa instrução, a 
variável é somadacom o valor 1. Um exemplo gráfico do 
funcionamento do contador por ser visto na tabela 10:
Tabela 1- Demonstração do funcionamento do 
contador.
cont con<-cont+1
0 0<-0+1
1 1<-1+1
2 2<-2+1
3 3<-3+1
4
Fonte: do autor, 2016.
O exemplo abaixo mostra o uso do conta dor dentro de um 
laço de repetição enquanto. O contador cont é inicializado 
com o valor 0, o laço executa enquanto o número digitado 
pelo usuário for diferente de -1, e o contador dentro do 
laço servirá para contar quantos números o usuário 
digitou.
Exemplo:
algoritmo
num,cont:inteiro
inicio
//Seção de Comandos
cont <-0
escreva(“Digite um número:(-1 para sair):”)
continua
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
28
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
leia(num)
enquanto num<> -1 faca
escreval(“Você digitou:”,num)
escreva(“Digite outro número(-1 para sair):”)
leia(num)
cont<-cont+1
fimenquanto
escreva(“Você digitou”,cont,”números antes de digitar 
-1 para sair.”)
fimalgoritmo
Acumulador (ou Somador)
O acumulador é utilizado para obter somatória de uma 
variável. Obrigatoriamente é utilizado dentro de laços de 
repetição, que neste caso podem ser os laços de repetição 
para, repita e o enquanto.
Um acumulador é sempre inicializado em 0 e seu valor é 
somado com o valor de outra variável, que é o valor a ser 
acumulado.
A sua sintaxe é:
variavel1<-0
variavel1<- variavel1 + variavel2
Onde variável1 deve ser uma variável nu mérica do tipo 
inteiro ou real e primeiramente deve-se inicializa-la com 
0 para garantir que seu valor inicial seja conhecido, e a 
variavel2 indica uma segunda variável que será o valor a 
ser acumulado (somado).
Abaixo segue um exemplo de um acumula dor chamado 
ac:
Exemplo:
ac<-0
ac<- ac + nota
Ele é inicializado com o valor 0 e na próxima linha, a 
instrução ac<- ac + nota soma o seu conteúdo anterior 
com o conteúdo da va riável nota. Assim, a cada execução 
dessa ins trução, a variável ac tem seu valor acumulado 
(somado) ao valor de nota.
O exemplo abaixo mostra o uso do acumu lador dentro de 
um laço de repetição para. o acumulador ac é inicializado 
com o valor 0, o laço executa 4 vezes e o acumulador 
dentro do laço tem a função de somar as quatro notas 
digitadas pelo usuário para o cálculo da média aritmética.
Exemplo:
algoritmo
var
i:inteiro
nota,media,ac:real
inicio
//Seção de Comandos
ac<-0
para i de 1 ate 4 faca
 escreva(“Digite a “,i,” a nota:”)
 leia(nota)
 ac<-ac+nota
fimpara
media<-ac/4
escreva(“A sua média bimestral é:”, media)
fimalgoritmo
A tabela 2 demonstra uma simulação do algoritmo acima:
Tabela 2 - Demonstração do funcionamento do 
acumulador.
ac nota ac<-ac+nota
0 9 0<-0+9
9 7.5 9<-9+7.5
16.5 8.5 16. 5< -16.5+8.5
25 10 25<-25+10
35
Fonte: do autor, 2016.
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
29
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
Como pode ser observado na tabela #, o valor do 
acumulador começa em 0 e é somado à variável nota, que 
é 9. Tem-se então: 0 + 9 = 9. O próximo valor armazenado 
na variável ac é 9 que deve ser somado à próxima nota, 
temos então: 9 + 7.5 = 16.5. As somas ocor rem até a 
quarta execução do laço de repetição para, onde o valor 
da variável acumuladora ac é somado à ultima nota, 
assim: 25 + 10 = 35.
Ao final da execução do laço para, a variável acumuladora 
possui o valor 35. Este valor é a soma de todas as notas, 
que deve então ser dividido por 4 para obter a média 
aritmética.
Laço de Repetição Repita
O laço de repetição repita é uma estrutura que permite 
que um comando ou um conjunto de comandos sejam 
executados até que o resultado do teste lógico seja 
verdadeiro.
Este laço também é indicado em casos onde não se sabe 
a quantidade de vezes que um determinado trecho de 
código deve ser repetido, e sim quando a sua repetição 
está condicionada à veracidade de um teste lógico.
Neste caso o laço é executado pelo menos uma vez, pois 
a condição é testada no final do laço. Se o resultado da 
condição for falso o laço é executado novamente até que 
o resultado da condição seja verdadeiro.
Este laço difere do enquanto pelo fato dele executar pelo 
menos uma vez antes de passar pela condição de teste, 
já o laço enquanto, não executa nenhuma vez caso a 
condição de teste seja falsa.
A sintaxe para criar um laço de repetição repita é mostrada 
a seguir:
repita
 comando ou lista de comandos
ate condição
O comando repita aparece no início do laço, seguido pelo 
comando ou lista de comandos. O último comando do 
laço é o ate seguido da condição, que é um teste lógico.
O laço permanece em execução até que a condição se 
torne verdadeira, quando para de executar.
Vamos transcrever o exemplo do algoritmo que foi 
desenvolvido com o laço enquanto para o laço repita. O 
algoritmo deve ler uma quantidade indeterminada de 
números e a condição de parada é quando o programa ler 
5 números negativos.
O algoritmo com o laço repita irá ler pelo menos um 
número, pois ele executa pelo menos uma vez até testar a 
sua condição, que fica no final do laço.
Exemplo:
algoritmo
var
cont,num:inteiro
inicio
//Seção de Comandos
cont<-0
repita
 escreval(“Digite um numero”)
 leia(num)
 se(num < 0) entao
 cont <- cont+1
fimse
ate cont >4
escreval(“Quantidade de números negativos:”,cont)
fimalgoritmo
No algoritmo acima, foram declaradas duas variáveis, a 
variável cont é uma variável contadora e serve para contar 
a quantidade de números negativos. A variável num serve 
para armazenar o número lido. O laço é executado pelo 
menos uma vez, mas como a condição de parada do laço 
é a leitura de 5 números negativos, isso não vai acarretar 
problemas. A condição de parada do laço repita é o 
contador ser maior do que 4 (ele ser 5). Para isso, deve-se 
inicializar a variável contadora com o valor 0. Depois de 
lido o número dentro do laço, há um teste se (num < 0)
que irá verificar se o número digitado é negativo, caso 
seja, a variável contadora irá atualizar em 1 o seu valor.
O laço só termina a sua execução quando forem lidos 5 
números negativos.
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
30
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
Neste exemplo, a variável testada na condição do laço 
enquanto (cont) é atualizada por uma expressão aritmética 
cont <- cont + 1 dentro do próprio laço, evitando loop 
infinito.
Outro exemplo com o laço repita pode ser observado a 
seguir, mostrando que a condição de teste realizada no 
final pode envolver duas condições unidas pelo operador 
lógico e ou pelo operador lógico ou:
Exemplo:
algoritmo
var
preco, npreco:real
produto:literal
resp:caractere
inicio
resp<- “s”
repita
 escreval(“Digite o nome do produto”)
 leia(produto)
 escreval(“Digite o preço do produto”)
 leia(preco)
npreco<-preco*1.3
 escreval(“O novo preço de ”,produto,”é = “,npreco)
 escreval(“Deseja continuar S/N”)
 leia(resp)
ate(resp=“N”) ou (resp= “n”)
fimalgoritmo
O algoritmo acima realiza a leitura do nome de um produto 
e seu preço, calcula o reajuste do preço desse produto em 
30% e mostra para o usuário. O algoritmo fica repetindo 
até que o usuário digite “n” OU “N” para sair.
Foram declaradas as variáveis preco e produto para 
serem lidas pelo usuário; npreco para armazenar o valor 
de um cálculo aritmético de aumento de 30% do preço e 
resp para armazenar a resposta do usuário em querer ou 
não continuar a execução do programa.
Note que há duas condições depois do até do laço repita:
ate (resp = “N”) ou (resp = “n”)
Essas condições estão unidas pelo opera dor lógico ou o 
que quer dizer que, se o usuário digitar o caractere “n” OU 
o caractere “N” a execução do laço é interrompida.
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
31
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
VETORES
A declaração de variáveis únicas é eficiente na 
construção de algoritmos para entrada/saída de dados 
e armazenamento de cálculos, porém é insuficiente em 
muitos problemas com putacionais, como é o caso, por 
exemplo, se você desejar ler o nome e a nota de 40 alunos 
de uma sala de aula. Você teria que declarar 40 variáveis e 
armazenar uma a uma? Isso se torna inviável.
É aí que os vetores, conhecidos também como variáveis 
indexadas unidimensionais, en tram em cena. Eles 
correspondem a posições sequenciais de memória, 
identificadas por um único nome cujo conteúdo é de um 
mesmo tipo - assim como as variáveis únicas - mas são 
individualizadas por índices.
Dessa forma é possível, armazenar em uma única 
estrutura, vários valores diferentes.
O nome que deve ser dado a uma variável composta é um 
identificador que obedece às mesmas regras deformação 
de identificadores de variáveis únicas. O nome irá se 
referir a to dos os elementos da variável composta, onde 
cada uma delas será diferenciada apenas pelo número do 
índice, que é a sua localização den tro da estrutura.
A sintaxe de declaração de um vetor é a seguinte:
identificador: vetor [índice-inicial..índice-final] de tipo
Onde identificador é o nome do vetor; a palavra vetor é uma 
palavra reservada da pseudolinguagem e deve ser utilizada 
para in dicar que é um vetor; o índice-inicial..índice -final 
devem vir entre colchetes, da seguinte forma[0 ..n-1] 
começando por 0 e indicar o ta manho final em n-1; de é 
uma palavra reser vada que deve ser incluída antes do tipo 
(que podem ser inteiro, real, caractere ou literal).
A declaração de um vetor chamado nome, com 5 posições 
é:
nome: vetor[0..4] de literal
Onde nome indica o identificador do vetor que terá 5 
posições iniciando o índice em 0 e terminando em 4 (n-1), 
e será do tipo inteiro.
Este vetor possui a seguinte estrutura:
Onde a primeira posição do vetor é representada pelo 
índice 0, a segunda posição representada pelo índice 
1 e assim sucessivamente, até n-1. No exemplo acima, 
declaramos um vetor nome para armazenar nomes de 
pessoas com 5 posições, então a primeira posição inicia-se 
em 0 e termina em 4 (n-1).
Para referenciar um elemento em particular, é necessário 
colocar o nome da variável, seguido do índice, entre 
colchetes.
Nas próximas linhas é demonstrado o preenchimento do 
vetor nome, com 5 nomes diferentes:
Exemplo:
nome[0]<- “Julio”
nome[1]<- “Nara”
nome[2]<- “Hilton”
nome[3]<- “Lucimara”
nome[4]<- “Emerson”
É preciso colocar o nome do vetor seguido do índice, o 
comando de atribuição e o valor. Como neste exemplo o 
vetor é do tipo literal, o valor deve vir entre aspas. Após 
esta atribui ção, o vetor ficará assim:
Para realizar a atribuição em um vetor numérico, não se 
deve utilizar as aspas.
O exemplo abaixo demonstra a declaração e o 
preenchimento de um vetor numérico, chamado nota, do 
tipo real:
Exemplo:
nome
Julio Nara Hilton Lucimara Emerson
0 1 2 3 4
nota: vetor[0 ..2] de real 
nota[0] <-9.5
nota[1] <-9
nota[2] <-6.5
nome
0 1 2 3 4
CAPÍTULO 07
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
32
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
No exemplo acima, foi colocado o nome do vetor seguido 
do índice, o cornando de atribulção e o valor, mas neste 
caso sem aspas, por se tratar de valores reais. Assim como 
os reais, os inteiros também não devem vir entre aspas.
Após esta atribuição, o vetor ficará assim:
nota 9.5 9 6.5
0 1 2
Após as atribuições, o vetor fica preenchido e já é possivel 
escrever na tela os valores armazenados.
0 exemplo a seguir escreve na tela o conteúdo de uma 
determinada posição de um vetor:
Exemplo:
escreva(nota[1])
No exemplo acima, a nota 9, que ocupa a segunda posição 
do vetor, seria impressa na tela.
Suponha que você tenha um vetor com muitas posições e 
queira ler e imprimir seus valores de forma mais rápida, 
pois nos casos acima, você teria que ler cada elemento 
do vetor individualmente. Neste caso o mais indica do é 
utilizar o laço de repetição para.
O laço de repetição para é ideal para a leitura e escrita dos 
elementos de um vetor, pois é o laço onde o programador 
pode definir a quantidade de vezes que ele irá executar 
e essa quantidade é exatamente o número total de 
elementos de um vetor.
Armazenamento e Leitura de Dados de um Vetor
Como foi visto na aula anterior, é possível fazer a leitura 
de dados de um vetor com o laço de repetição para. Este 
laço, através de sua estrutura, permite ser inicializado com 
o índice do primeiro elemento do vetor e ser finalizado 
com o índice do último elemento.
Como exemplo, o algoritmo abaixo fará a leitura de 5 
nomes digitados pelo usuário, armazenando num vetor 
chamado nome.
Exemplo:
algoritmo
var
i:inteiro
nome: vetor[0..4] de literal
continua
inicio
para i de 0 ate 4 faca
 escreval(“Digite o”, i+1, “o nome:”)
 leia(nome[i])
fimpara
fimalgoritmo
O exemplo acima declara a variável i para funcionar como 
o contador do laço de repetição para e ao mesmo tempo 
como a variável do índice do vetor. Foi declarado um vetor 
identificado por nome que possui 5 posições, onde a 
primeira posição começa com o índice 0 e a última possui 
o índice 4 (n-1). O laço de repetição para foi inicializado da 
seguinte forma:
para i de 0 ate 4 faca
Onde i é a variável contadora do laço para e será 
inicializada com o valor 0 e contará até o seu valor atingir 
o valor 4, executando desta forma, 5 vezes os comandos 
dentro do laço.
Observe os dois comandos a seguir:
escreval(“Digite o ”, i+1, “o nome:”)
leia(nome[i])
Onde o comando escreval informa ao usuário para digitar 
o i-ésimo+ 1 nome, onde no local de i, será mostrado na 
tela o valor corrente do contador somado com 1(isso se 
deve ao fato do contador ser iniciado em 0). O comando 
leia fará a leitura do valor corrente digitado pelo usuário 
e armazenará no vetor nome, na posição corrente do 
contador, igualmente, i.
A tabela 1 mostra o teste de mesa realizado para a leitura 
dos elementos do vetor:
Tabela 1 - Teste de mesa da leitura dos elementos do 
vetor.
i escreval nome[i]
0 Digite o 1° nome Julio
1 Digite o 2° nome Nara
2 Digite o 3° nome Hilton
3 Digite o 4° nome Lucimara
4 Digite o 5° nome Emerson
Fonte: do autor, 2016.
MUNDI - UNIVERSO EDUCACIONAL Módulo I - Técnicas de Programação
33
COPYRIGHT © 2007 by@ MUNDI LTDA. PROPRIEDADE INTELECTUAL PROTEGIDA. PROIBIDA SUA REPRODUÇAO TOTAL OU PARCIAL 
Uma vez armazenados os valores em um vetor, este pode 
ser escrito sequencialmente, com a ajuda de um laço de 
repetição para. Anteriormente, com o uso de variáveis 
únicas, a cada leitura na mesma variável o valor anterior 
era sobrescrito, com vetores esse problema é eliminado, 
pois há os índices que armazenam para a mesma variável, 
em posições diferentes, valores diferentes.
Como exemplo, o trecho de algoritmo abaixo fará a escrita 
dos 5 nomes digitados pelo usuário.

Outros materiais