Buscar

Apostila de Algoritmos - Professor Glauco Amorim

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 18 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 18 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 18 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

Glauco Amorim 1 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Programação de Computadores para 
Iniciantes 
 
Apostila de Construção de Algoritmos 
Professor Glauco Amorim 
glauco.amorim@gmail.com 
 
 
 
 
 
 
 
 
 
 
 
Atualizado em Fev/2009 
 
 
 
 
Glauco Amorim 2 
 
Capítulo 1 
Introdução à Construção de Algoritmos 
 
1.1 Definição: algoritmo é uma seqüência finita de ações que descrevem como um problema 
pode ser resolvido. 
 
Tipos de algoritmos: descrição narrativa, fluxograma e pseudo-código (Portugol). 
 
Quando as ações de um algoritmo obedecem à sintaxe de uma linguagem de programação, 
passamos a chamá-lo de programa. 
 
Exemplos: 
 
1. Receita culinária; 
2. Instruções para a operação de um equipamento; 
3. Partitura musical. 
 
Instruções são frases que indicam as ações a serem executadas. São compostas de um verbo 
imperativo mais um complemento. 
 
Exemplos: 
 
1. Bata duas claras em neve. 
2. Ligue os faróis. 
3. Abra a porta. 
 
Desenvolver um bom algoritmo é a principal chave para a programação de computadores. 
Só comece a codificar um programa após o algoritmo estar totalmente desenvolvido e testado. 
Existem qualidades que devem ser buscadas em qualquer algoritmo. São elas: 
 
1. Perfeitamente Definido: deve descrever exatamente quais são as instruções que devem ser 
executadas e em que seqüência. Deve ser tornado explícito o maior número possível de 
informações, pois a falta de alguma informação pode levar a uma interpretação errônea do 
algoritmo. 
2. Não Ambíguo: não deve deixar dúvidas sobre o que deve ser feito. A ambigüidade também 
pode levar a uma interpretação errônea do algoritmo. 
3. Eficaz: consegue resolver o problema em qualquer situação. Todas as situações de exceção 
que possam alterar o comportamento do algoritmo devem ser especificadas e tratadas. 
4. Eficiente: resolve o problema com o mínimo de recursos. Sempre devemos buscar aquele 
algoritmo que, dentre os diversos algoritmos que resolvam um mesmo problema, utilize a 
menor quantidade de recursos. No caso de algoritmos para processamento de dados, os 
recursos a serem considerados são espaço na memória (principal e auxiliar), tempo de 
processamento, entre outros. 
 
Vamos analisar um algoritmo (descrição narrativa) 
 
algoritmo lavar_cabelo 
 
 
Glauco Amorim 3 
1. molhe o cabelo 
2. coloque o xampu 
3. massageie 
4. enxágue 
5. repita 
 
Análise do algoritmo lavar_cabelo 
 
� não está definido quanto de xampu deve ser colocado; 
� não diz quanto tempo deve massagear; 
� não diz quando paramos a repetição; 
� não diz até quando enxaguar. 
 
Vamos ver uma versão melhorada do algoritmo descrito acima: 
 
algoritmo lavar_cabelo_2 
1. molhe o cabelo 
2. repita duas vezes 
 2.1. coloque a quantidade correspondente a uma tampa de xampu no cabelo 
 2.2. massageie o cabelo até fazer espuma 
 2.3. enxágue até tirar o xampu 
 
1.2 COMO CONSTRUIR ALGORITMOS 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
� Problema: questão proposta a ser resolvida. 
� Análise Preliminar: entender o problema com a maior precisão possível e identificar os 
dados. Identificar os resultados desejados. 
� Solução: desenvolver um algoritmo para resolver o problema. 
� Teste de Qualidade: execute o algoritmo desenvolvido com dados para os quais o 
resultado seja conhecido. O ideal é que o universo dos dados tenha todas as combinações 
possíveis. 
Note que a qualidade de um algoritmo pode ser limitada por fatores como o tempo para a 
sua confecção e recursos disponíveis. 
 
PROBLEMA 
 
ANÁLISE PRELIMINAR 
 
SOLUÇÃO 
 
TESTE DE QUALIDADE 
PRODUTO FINAL 
 
ALTERAÇÃO 
 
 
Glauco Amorim 4 
� Alteração: se o resultado do teste de qualidade não for satisfatório, altere o algoritmo e 
submeta-o a um novo teste de qualidade. 
� Produto Final: algoritmo concluído e testado, pronto para ser aplicado. 
 
 
1.3 TIPOS DE PROCESSAMENTO 
 
Em termos de algoritmos, existem três modos fundamentais de executar informações: 
 
a) Processamento Seqüencial: as instruções do algoritmo são executadas uma após a outra, 
sem que haja desvios na seqüência das instruções. Cada instrução é executada uma e somente 
uma vez. 
 
Exemplo: 
 
Problema: obtenha a média aritmética de cinco notas: 
 
Solução (descrição narrativa): 
 
1. Some as duas primeiras notas 
2. Some a terceira nota com o resultado da instrução 1 
3. Some a quarta nota com o resultado da instrução 2 
4. Some a quinta nota com o resultado da instrução 3 
5. Divida o resultado da instrução 4 por 5 (quantidade de notas) 
 
Teste de qualidade: se as notas são 10, 5, 7, 1, 2: 
 
1. 10 + 5 = 15 
2. 7 + 15 = 22 
3. 1 + 22 = 23 
4. 2 + 23 = 25 
5. 25/5 = 5 
 
 
b) Processamento Condicional: um conjunto de instruções (pode ser uma instrução apenas) é 
executado ou não. A sua execução depende de uma condição. Se a condição pela qual estamos 
perguntando tiver resposta afirmativa, o conjunto de intruções é executado. 
 
Exemplo: 
 
Problema: obtenha a média aritmética de cinco notas. Se a média for maior ou igual a sete, o 
aluno está aprovado, caso contrátio, está reprovado. 
 
Solução (descrição narrativa): 
 
1. Some as duas primeiras notas 
2. Some a terceira nota com o resultado da instrução 1 
3. Some a quarta nota com o resultado da instrução 2 
4. Some a quinta nota com o resultado da instrução 3 
 
 
Glauco Amorim 5 
5. Divida o resultado da instrução 4 por 5 (quantidade de notas) 
6. Se o resultado da instrução 5 for maior ou igual a 7 
7. Aprove o aluno 
8. Se o resultado da instrução 5 for menor do que 7 
9. Reprove o aluno 
 
Teste de qualidade: se as notas são 10, 5, 7, 1, 2: 
 
1. 10 + 5 = 15 
2. 7 + 15 = 22 
3. 1 + 22 = 23 
4. 2 + 23 = 25 
5. 25/5 = 5 
6. Resposta negativa 
8. Resposta positiva 
9. Aluno reprovado 
 
Observe que a pergunta da instrução 6 foi executada. Como a resposta foi negativa (a média é 
5, que é menor do que sete), o aluno não foi aprovado (a instrução 7 não foi executada). 
 
Porém, como podemos afirmar que a instrução 7 está subordinada à instrução 6? Por que a 
instrução 8 não está subordinada à instrução 6 ? 
 
Estas perguntas são respondidas pelo conceito de IDENTAÇÃO. Identar significa deslocar 
para a direita as instruções subordinadas. Por exemplo, a instrução 7 está identada em relação 
à instrução 6, logo a instrução 7 é subordinada à instrução 6. A instrução 8 não está identada 
em relação à instrução 6, logo não está subordinada a ela. Note que a instrução 9 está 
subordinada em relação à instrução 8. 
O conceito de identação torna a visualização do algoritmo mais simples. 
 
c) Processamento com Repetição: conjunto de instruções (pode ser apenas uma) que é 
executado um determinado número de vezes. Existem várias formas de determinar até quando 
as instruções devem ser repetidas (isso será falado futuramente). 
 
Exemplo: 
 
Problema: obtenha a média aritmética de cinco notas de todos os alunos da sala. 
 
Solução (descrição narrativa): 
 
1. Para cada aluno da sala faça 
2. Some as duas primeiras notas 
3. Some a terceira nota com o resultado da instrução 2 
4. Some a quarta nota com o resultado da instrução 3 
5. Some a quinta nota com o resultado da instrução 4 
6. Divida o resultado da instrução 5 por 5 (quantidade de notas) 
 
Observe que as instruções 2, 3, 4, 5 e 6 estão identadas em relação à instrução 1, logo estão 
subordinadas a ela. 
 
 
Glauco Amorim 6 
 
Teste de qualidade: se existem três alunos na sala e suas respectivas notas são: 
 
10, 5, 8, 1, 3 
4, 6, 7, 3, 10 
9, 3, 8, 8, 7 
 
2. 10 + 5 = 15 
3. 8 +15 = 23 
4. 1 + 23 = 24 
5. 3 + 24 = 27 
6. 27/5 = 5,4 
 
2. 4 + 6 = 10 
3. 7 + 10 = 17 
4. 3 + 17 = 20 
5. 10 + 20 = 30 
6. 30/5 = 6 
 
2. 9 + 3 = 12 
3. 8 + 12 = 20 
4. 8 + 20 = 28 
5. 7 + 28 = 35 
6. 35/5 = 7 
 
 
1.4 CONCEITO DE VARIÁVEL 
 
Um algoritmo para ser executado pelo computador possui as seguintes fases: 
 
1. Coleta das informações de que o algoritmo necessita (Entrada); 
2. Processamento; 
3. Apresentação dos resultados (Saída). 
 
Todo algoritmo trata com informações. No computador estas informações sempre estão 
representadas em variáveis. 
 
Quando um computador está executando um programa (e não um algoritmo) todas as 
informações necessárias precisam estar na memória. Para o programa poder usar estas 
informações, ele precisa saber onde elas estão, ou seja, seu endereço. 
 
Exemplo de endereços de memória: 10CF, 2A00, 0200 
 
É muito difícil (e muito sujeito a erros) trabalhar com estes endereços. A solução é fazer uma 
referência aquele endereço na memória, ou seja, dar um nome a ele. Como analogia, podemos 
pensar na Internet. Para acessar, por exemplo, um determinado site, você simplesmente digita 
o nome: www.uva.br e não o seu endereço numérico 191.221.113.001 (supondo que seja 
este). 
 
 
 
Glauco Amorim 7 
O nome escolhido para a variável deve sempre indicar a sua finalidade. Utilizando o exemplo 
acima, é muito mais fácil identificar o nome “uva” e saber que este nome está fazendo 
referência à Universidade Veiga de Almeida, do que colocar como nome, xxxx (www.xxx.br) 
e identificar o que ele significa. 
 
Exemplo de endereços de memória e nomes: 
 
Endereço Nome 
10CF Número de faltas 
2A00 Nome do Aluno 
0200 Média Final 
 
Depois de informarmos onde está a informação (via nome), devemos determinar agora qual é 
o seu domínio de valores, ou seja, qual é o conjunto de valores possíveis que podem ser 
representados em uma certa variável. A este domínio chamamos de tipo. 
 
Exemplo: 
 
Nome Tipo 
Número de faltas valores do tipo inteiro 
Nome do Aluno valores do tipo caracter 
Média Final valores do tipo real 
 
Os tipos básicos de informações que as linguagens de programação em geral fornecem são: 
 
a) inteiro: para o conjunto de números naturais (positivo ou negativo). 
b) real: para o conjunto de números reais (positivo ou negativo) 
c) caracter: para o conjunto alfanumérico (composto de letras e dígitos). 
d) lógico (booleano): composto de valores lógicos (verdadeiro, falso). 
 
Além do nome e do tipo, toda variável possui um conteúdo. 
 
Exemplo: 
 
Nome Tipo Conteúdo 
Número de faltas valores do tipo inteiro 2 
Nome do Aluno valores do tipo caracter Maria 
Média Final valores do tipo real 6,7 
 
Depois de tudo especificado, podemos trabalhar com as variáveis, ou seja, realizar 
determinadas operações com elas. Existem operações que podem ser aplicadas em variáveis 
de qualquer tipo e outras que são específicas. O principal exemplo de uma operação aceita por 
todas é a de atribuição. Esta operação permite que o conteúdo de uma variável seja alterado. 
Seu formato é: 
 
<nome_da_variável> ←←←← <expressão> 
 
Exemplo: sejam A e B duas variáveis de tipo inteiro: 
 
Operação A B 
os valores nas colunas A e B representam os conteúdos 
das variáveis A e B, respectivamente. 
 
 
Glauco Amorim 8 
A ← 2 2 
B ← A 2 2 
B ← B + 3 2 5 
 
 
 
 
 
 
 Seja A de tipo inteiro e B de tipo lógico: 
 
 
 
 
 
 
 
1.5 CONCEITO DE CONSTANTE 
 
Constante é, por definição, aquilo que não muda. Da mesma forma, em termos de algoritmos, 
constante é uma informação que não se altera. Por exemplo, PI (3,1415...) possui a mesma 
informação ao longo de qualquer algoritmo. Em contrapartida, se um algoritmo calcula o 
número total de funcionários de uma empresa, não podemos considerar a variável usada para 
armazenar o total como uma constante, pois seu conteúdo está sempre sendo modificado. 
Pode-se utilizar constantes no algoritmo, para isso basta especificá-la: 
 
const nome_da_constante = valor 
 
Exemplo: 
 
const PI = 3.1415 
 
No algoritmo, a constante PI não poderá ter seu valor alterado. Em todo o algoritmo seu 
conteúdo será de 3.1415. Isso significa que PI não pode receber outro valor, por exemplo: 
 
 
 
 
1.6 TIPOS DE INFORMAÇÃO 
 
a) Números: representam quantidades. Existem em geral dois tipos numéricos: 
 
� Inteiro: valores inteiros, positivos ou negativos. Exemplos: 0, 234, -567 
� Real: valores fracionários, positivos ou negativos. Exemplo: -1,2; +3,15 
 
Pode ser utilizada também uma notação exponencial do tipo xEy que significa dizer: número 
real x multiplicado por 10 elevado a um número inteiro y. Exemplos: -3,15E2; 6E-15 
 
 
Na terceira operação a expressão à direita do sinal de 
atribuição foi avaliada (B + 3 = 2 + 3 = 5) e em seguida 
o resultado foi atribuído à variável B. 
Atenção 
As operações específicas são apresentadas 
junto a cada tipo, porém, claramente, não 
podemos fazer as seguintes operações: 
Operação Motivo do Erro 
B ← B + 3 var. tipo lógico x expressão numérica 
A ← falso var. tipo inteiro x valor lógico 
B ← A var. tipo lógico x var. tipo inteiro 
A ← B var. tipo inteiro x var. tipo lógico 
 
PI ←←←← 5 
 
 
Glauco Amorim 9 
A ausência de sinal indica que um número é positivo. As linguagens de programação não 
permitem o uso de milhar, milhão etc. (1.000.000 → 1000000), e geralmente um ponto (e não 
uma vírgula) é usado para mostrar o início da parte fracionária (decimal) de um número (3,14 
→ 3.14). 
 
Operações 
As operações aplicáveis a números são: 
 
Operação Símbolo 
soma + 
subtração - 
multiplicação * 
divisão / 
exponenciação ** 
b) Caracteres: representam as letras, os dígitos numéricos e sinais especiais (pontuação etc). 
Geralmente podem ser agrupados para formar uma seqüência de caracteres (cadeia de 
caracteres). Exemplos: A, B_G, C3, Maria, Banana. Nunca começar com dígitos numéricos. 
 
Constantes do tipo caracter aparecem entre delimitadores especiais (aspas simples ‘ ’ ou 
duplas “ ”). Usaremos aspas duplas. 
 
Operação A B 
A ← “banana” banana 
B ← A banana banana 
B ← “A” banana A 
 
Se o caracter delimitador deve fazer parte de uma cadeia de caracteres, então ele deverá 
aparecer duplicado: A ← “ “banana” ” = “banana” 
 
Operações 
 
As linguagens em geral, não fornecem operações específicas. Por isso, quando for realizar 
alguma operação nos caracteres, você deverá procurar informar-se. 
 
c) Lógicos (booleanos): um valor lógico pode estar em apenas um de dois estados: verdadeiro 
(V) ou falso (F). Nem todas as linguagens permitem usar variáveis lógicas, porém os seus 
valores estão presentes em qualquer comparação. 
 
Operações Lógicas 
 
 
 
 
 
 
 
 
 
 
 
Operação A B C 
A ← 10 10 
B ← 2 10 2 
C ← A + B 10 2 12 
C ← A * B 10 2 20 
C ← A ** B 10 2 100 
 
Exemplo 
Se não fosse o uso de delimitadores, não seria 
possível diferenciar a segunda operação da 
terceira operação. 
As operações principais são: 
 
a) E � se algum estado for Falso, então Falso. 
 
b) OU � se algum estado for Verdadeiro, 
então Verdadeiro. 
 
c) NÃO � troca o estado 
A B A ou B A e B não A 
V V V V F 
V F V F F 
F V V F V 
F F F F V 
Exemplo 
 
 
Glauco Amorim 10 
 
1.7 EXPRESSÕES 
 
Uma das características importantes de um algoritmo é a capacidade de resolver expressões. 
Existem basicamente três tipos de expressões: 
 
a) Aritmética: operações entre valores de tipo numérico (inteiro ou real) e que têm como 
resultado um valor numérico. 
 
Operadores Símbolo 
adição + 
subtração - 
multiplicação * 
divisão / 
exponenciação ** 
 
 
b) Relacional: operações de comparaçãoentre dois valores de mesmo tipo, e que têm como 
resultado um valor lógico. 
 
Operadores Símbolo 
igual = 
diferente < > 
maior > 
menor < 
menor ou igual < = 
maior ou igual > = 
 
 
c) Lógica: operações lógicas entre valores lógicos, e que têm como resultado um valor lógico. 
 
Operadores 
E 
OU 
NÃO 
 
 
 
1.8 ENTRADA e SAÍDA 
 
Todo programa possui comandos que transportam informações entre a memória principal do 
computador e os seus períféricos. Em algoritmo, usaremos os seguintes comandos: 
 
� leia: transfere informações de um periférico (normalmente do teclado ou do disco) para a 
memória principal; 
� escreva: transfere informações da memória principal para um periférico (normalmente o 
vídeo, o papel – se for impresso, ou o disco). 
 
Exemplos: 
 
leia (numero) 
Exemplo 
Expressão Resultado 
A + 1 2 
B + (C – d) * 4 / 2 0 
 
Exemplo 
Expressão Resultado 
A < B verdadeiro 
A < > B verdadeiro 
5 < = 1 falso 
 
A = 1; B = 2; C = 3; D = 4 
A = “ABC”; B = “XYZ” 
Exemplo Expressão Resultado 
NÃO (A =5) falso 
(B = “XYZ”) E C verdadeiro 
(A = 4) OU (NÃO C) falso 
 
A = 5; B = “XYZ”; C = verdadeiro 
 
 
Glauco Amorim 11 
leia (A, B, SOMA) 
escreva (“Média =”, M) 
escreva (“Valor lido:”, N, “resultado =”, N ** 2 + 5) 
 
1.9 COMENTÁRIO 
 
Colocar comentários no algoritmo, ajuda a identificar o que está sendo utilizado, qual a 
operação que será realizada, qual o objetivo da estrutura usada etc. 
Para mostrar ao algoritmo que o conjunto de caracteres a seguir é um comentário, basta usar 
os símbolos abrir e fechar chaves: { }. Exemplo: 
 
{Este algoritmo calcula o salário reajustado} →→→→ comentário (entre chaves) 
algoritmo Salario 
... 
 
1.10 ESTRUTURA DO ALGORITMO 
 
Todo algoritmo deve ter um nome e deve ficar delimitado entre um espaço (início e fim). Por 
exemplo: 
 
algoritmo MeuAlgoritmo 
declare 
 {espaço para a declaração das variáveis} 
inicio 
 
 comando 1 
 comando 2 
 ... 
 comando n 
fim 
 
1.11 METODOLOGIA DE DESENVOLVIMENTO DE ALGORITMOS 
 
Uma das dificuldades naturais de um iniciante em programação é como começar a 
desenvolver um algoritmo para resolver um dado problema. Os passos seguintes, se seguidos, 
podem auxiliar nesta tarefa: 
 
passo 1: leia cuidadosamente a especificação do problema até o final. 
 (fazer anotações) 
 ENTENDEU ← falso 
 VEZES ← 0 
 
passo 2: levantar e analisar todas as entradas citadas na especificação do problema; 
passo 3: levantar e analisar todas as saídas exigidas na especificação do problema; 
passo 4: verificar se é necessário gerar valores internamente ao algoritmo e levantar as 
variáveis necessárias e os valores iniciais de cada uma (comentar); 
passo 5: levantar e analisar todas as transformações necessárias para, dadas as entradas e 
valores gerados internamente, produzir as saídas especificadas (comentar); 
 
 
Glauco Amorim 12 
passo 6: testar cada passo do algoritmo, verificando se as transformações intermediárias 
executadas estão conduzindo aos objetivos desejados. Utilizar, sempre que possível, valores 
de teste que permitam prever os resultados a priori; 
 
1.12 REGRAS PRÁTICAS PARA CONSTRUÇÃO DE ALGORITMOS LEGÍVEIS 
 
1. Algoritmos devem ser feitos para serem lidos por seres humanos. Tenha em mente que seus 
algoritmos deverão ser lidos e entendidos por outras pessoas (e por você mesmo) de tal forma 
que possam ser corrigidos, receber manutenção e serem modificados. 
2. Procure incorporar comentários no algoritmo, pelo menos para descrever o significado das 
variáveis utilizadas. Comentários podem ocorrer em qualquer parte do algoritmo, encerrados 
entre chaves {comentário}. 
3. Escreva os comentários no momento em que estiver escrevendo o algoritmo. Um algoritmo 
não documentado é um dos piores erros que um programador pode cometer e é sinal de 
amadorismo. Como o objetivo de se escrever comentários é facilitar o entendimento do 
algoritmo, eles devem ser tão bem concebidos quanto o próprio algoritmo. 
4. Os comentários deverão acrescentar alguma coisa, não apenas para frasear os comandos. O 
conjunto de comandos nos diz o que está sendo feito; os comentários deverão nos dizer o por 
quê. 
5. Use comentários no prólogo. Todo algoritmo ou procedimento deverá ter comentários no 
seu prólogo para explicar o que ele faz e fornecer instruções para seu uso. Alguns destes 
comentários seriam: 
a) uma descrição do que faz o algoritmo; 
b) como utilizá-lo; 
c) explicação do significado das variáveis mais importantes; 
d) estruturas de dados utilizadas; 
e) os nomes de quaisquer métodos especiais utilizados, juntamente com referências nas quais 
mais informações possam ser encontradas; 
f) autor 
g) data de escrita 
6. Escolha nomes de variáveis que sejam significativos, isto é, que traduzam o tipo de 
informação a ser armazenada na variável. 
Ex: NOTA, MATRICULA, CPF 
7. Procure alinhar os comandos de acordo com o nível a que pertençam, isto é, destaque a 
estrutura na qual estão contidos. Utilize o conceito de identação explicado na terceira seção 
(página 4). 
8. Utilize espaços em branco e parênteses para melhorar a legibilidade e evitar erros. Espaços 
em branco, inclusive entre linhas. 
 
 
 
 
Glauco Amorim 13 
Capítulo 2 
Estruturas Lógicas de um Algoritmo 
 
2.1 Blocos 
 
A seguir são descritos os blocos e os comandos básicos de controle do PORTUGOL. 
 
Blocos: um bloco pode ser definido como um conjunto de comandos com uma função bem 
definida. Ele serve também para definir os limites onde as variáveis declaradas em seu interior 
são conhecidas. 
 
algoritmo exemplo 
 
<declaração de variáveis> 
início 
 
 <comandos> 
fim 
 
 
2.2 Estruturas Lógicas de um Algoritmo 
 
Do ponto de vista lógico, um algoritmo é constituído por três estruturas lógicas: seqüencial, 
seletiva e repetitiva. Isto é, um algoritmo pode ser constituído por qualquer combinação 
dessas três estruturas. 
 
2.2.1 Estrutura Seqüêncial 
 
Conjunto de comandos (C) que serão executados numa seqüência linear de cima para baixo: 
 
C1 
C2 
C3 
. 
. 
. 
Cn 
 
2.2.2 Estrutura Condicional simples ou Alternativa Simples 
 
Quando a ação a ser executada depender de uma inspeção ou teste, teremos uma alternativa 
simples ou composta: 
 
se <condicao> entao 
 C1 
 C2 
 
 
Glauco Amorim 14 
 . 
 . 
 . 
 Cn 
fim-se 
 
Os comandos 1, 2, ..., n só serão executados se a <condição> for verdadeira. 
 
Exemplo: 
 se sexo = masculino então 
 escreva(“Homem!”) 
 fim-se 
 
2.2.3 Estrutura Condicional Composta ou Alternativa Composta: 
 
se <condicao> entao 
 C1 
 C2 
senao 
 C3 
 
C4 
 . 
 . 
 . 
 Cn 
fim-se 
 
Nos comandos acima, <condição> é qualquer expressão cujo resultado seja falso ou 
verdadeiro (ou seja, do tipo lógico). Exemplo: 
 
algoritmo ExemploCondicao 
 
declare A, B: inteiro 
 
inicio 
 A ← 1 
 B ← 2 
 se A > B entao 
 A ← 5 
 senao 
 A ← 10 
 fim-se 
fim 
 
 
2.2.4 Estrutura de Repetição 
 
Quando um conjunto de ações é executado repetidamente enquanto uma determinada 
condição permanecer válida. 
 
 
Glauco Amorim 15 
 
Repetição Com teste no início 
 
enquanto <condicao> faca 
 C1 
 C2 
 . 
 . 
 . 
 Cn 
fim-enquanto 
 
Enquanto o valor da <condicao> for verdadeiro, as ações dos comandos são executadas. 
Quando for falso, o comando é abandonado. Se já da primeira vez o resultado for falso, os 
comandos não são executados nenhuma vez. 
 
Exemplo: 
 
Algoritmo ExemploRepeticao1 
 
declare A, B, I, C: inteiro 
 
inicio 
 A ← 1 
 B ← 1 
 I ← 1 
 enquanto I ≤ 18 faca 
 C ← A + B 
 escreva (C) 
 A ← B 
 B ← C 
 I ← I + 1 
 fim-enquanto 
fim 
 
Repetiçãocom teste no final 
 
repita 
 C1 
 C2 
 . 
 . 
 . 
 Cn 
até <condicao> 
 
Neste caso os comandos C1, C2, ..., Cn são executados pelo menos uma vez. Quando a 
condição é encontrada, ela é testada. Se for verdadeira o comando seguinte será executado. Se 
for falsa, os comandos C1, C2, ..., Cn voltam a ser executados até que a condição se torne 
 
 
Glauco Amorim 16 
verdadeira. O comando repita-até é equivalente ao comando enquanto, veja o exemplo a 
seguir: 
 
Exemplo 
 
 
 
Glauco Amorim 17 
Algoritmo ExemploRepeticao2 
 
declare A, B, C, I: inteiro 
 
inicio 
 A ← 1 
 B ← 1 
 I ← 1 
 repita 
 C ← A + B 
 escreva (C) 
 A ← B 
 B ← C 
 I ← I + 1 
 ate I > 18 
fim 
 
Repetição com variável de controle 
 
para i de n ate x passo y faca 
 C1 
 C2 
 . 
 . 
 . 
 Cn 
fim-para 
 
A semântica do comando é a seguinte: i, n, x e y são variáveis quaisquer e que, de acordo com 
as regras da programação estruturada não devem ser modificadas nos comandos C1, C2, ..., Cn. 
O comando para é, na realidade, o comando enquanto utilizando uma variável de controle, 
escrito numa notação compacta. Neste caso existirá sempre uma inicialização da variável de 
controle, um teste para verificar se a variável atingiu o limite e um acréscimo na variável de 
controle. 
Os comandos do para serão executados de n até x incrementando a quantidade de passos y. 
 
Exemplo: 
 
Algoritmo ExemploRepeticao3 
declare 
 A, B, C, I: inteiro 
inicio 
 A ← 1 
 B ← 1 
 para I de 1 ate 18 passo 1 faca 
 C ← A + B 
 escreva (C) 
 A ← B 
 
 
Glauco Amorim 18 
 B ← C 
 fim-para 
fim 
 
Observe que: 
 
1. Assim como no comando enquanto, se o valor inicial (n) já for superior ao limite (x), os 
comandos C1, C2, ..., Cn não serão executados. 
 
2. Toda vez que o fim-para é encontrado, a variável de controle (n) é incrementada pelo passo 
(y) e o teste (n ≤ x) é realizado.

Outros materiais