SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
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

1
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

2
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

ANÁLISE PRELIMINAR

SOLUÇÃO

TESTE DE QUALIDADE

ALTERAÇÃO

PRODUTO FINAL

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.

Glauco Amorim

3
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

4
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

5
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

6
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
10CF
2A00
0200

Nome
Número de faltas
Nome do Aluno
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
Número de faltas
Nome do Aluno
Média Final

Tipo
valores do tipo inteiro
valores do tipo caracter
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
Número de faltas
Nome do Aluno
Média Final

Tipo
valores do tipo inteiro
valores do tipo caracter
valores do tipo real

Conteúdo
2
Maria
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

Glauco Amorim

A

B

os valores nas colunas A e B representam os conteúdos
das variáveis A e B, respectivamente.

7
A←2
B←A
B←B+3

2
2
2

2
5
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:

Seja A de tipo inteiro e B de tipo lógico:
Operação
B←B+3
A ← falso
B←A
A←B

Motivo do Erro
var. tipo lógico x expressão numérica
var. tipo inteiro x valor lógico
var. tipo lógico x var. tipo inteiro
var. tipo inteiro x var. 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:
PI ← 5
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

Glauco Amorim

8
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
soma
subtração
multiplicação
divisão
exponenciação

Símbolo
+
*
/
**

Exemplo

Operação
A ← 10
B←2
C←A+B
C←A*B
C ← A ** B

A
10
10
10
10
10

B

C

2
2
2
2

12
20
100

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 ← “banana”
B←A
B ← “A”

A
banana
banana
banana

B
banana
A

Se não fosse o uso de delimitadores, não seria
possível diferenciar a segunda operação da
terceira operação.

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
As operações principais são:
a) E

A

b) OU se algum estado for Verdadeiro,
então Verdadeiro.
c) NÃO

troca o estado

Glauco Amorim

Exemplo

B

A ou B

AeB

não A

V

se algum estado for Falso, então Falso.

V

V

V

F

V

F

V

F

F

F

V

V

F

V

F

F

F

F

V

9
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
adição
subtração
multiplicação
divisão
exponenciação

Símbolo
+
*
/
**

Exemplo

A = 1; B = 2; C = 3; D = 4
Expressão
Resultado
A+1
2
B + (C – d) * 4 / 2
0

b) Relacional: operações de comparação entre dois valores de mesmo tipo, e que têm como
resultado um valor lógico.
Operadores
igual
diferente
maior
menor
menor ou igual
maior ou igual

Símbolo
=
<>
>
<
<=
>=

Exemplo

A = “ABC”; B = “XYZ”
Expressão
Resultado
A<B
verdadeiro
A<>B
verdadeiro
5<=1
falso

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

Exemplo

A = 5; B = “XYZ”; C = verdadeiro
Expressão
Resultado
NÃO (A =5)
falso
(B = “XYZ”) E C
verdadeiro
(A = 4) OU (NÃO C)
falso

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)

Glauco Amorim

10
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

11
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

12
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

13
fim-se

.
.
.
Cn

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

14
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ção com 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

15
verdadeira. O comando repita-até é equivalente ao comando enquanto, veja o exemplo a
seguir:
Exemplo

Glauco Amorim

16
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

17
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.

Glauco Amorim

18

Más contenido relacionado

La actualidad más candente

Int. à Logica de Programação
Int. à Logica de ProgramaçãoInt. à Logica de Programação
Int. à Logica de Programação
amansilha
 
Técnicas de modelagem de teste (parte 2)
Técnicas de modelagem de teste (parte 2)Técnicas de modelagem de teste (parte 2)
Técnicas de modelagem de teste (parte 2)
Fabrício Campos
 
Logica Algoritmo 01 Introducao A Logica
Logica Algoritmo 01 Introducao A LogicaLogica Algoritmo 01 Introducao A Logica
Logica Algoritmo 01 Introducao A Logica
Regis Magalhães
 
Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1
engenhariadecomputacao
 
Aula 10 - Equivalência Java x Portugol Studio - parte 2
Aula 10 - Equivalência Java x Portugol Studio - parte 2Aula 10 - Equivalência Java x Portugol Studio - parte 2
Aula 10 - Equivalência Java x Portugol Studio - parte 2
Pacc UAB
 
Aula 1 aed - lógica de programação
Aula 1   aed - lógica de programaçãoAula 1   aed - lógica de programação
Aula 1 aed - lógica de programação
Elaine Cecília Gatto
 

La actualidad más candente (20)

Lógica de Programação - Estruturas de Seleção
Lógica de Programação - Estruturas de SeleçãoLógica de Programação - Estruturas de Seleção
Lógica de Programação - Estruturas de Seleção
 
Int. à Logica de Programação
Int. à Logica de ProgramaçãoInt. à Logica de Programação
Int. à Logica de Programação
 
Técnicas de modelagem de teste (parte 2)
Técnicas de modelagem de teste (parte 2)Técnicas de modelagem de teste (parte 2)
Técnicas de modelagem de teste (parte 2)
 
tdc-2020-poa-pedra-tesoura-papel
tdc-2020-poa-pedra-tesoura-papeltdc-2020-poa-pedra-tesoura-papel
tdc-2020-poa-pedra-tesoura-papel
 
Logica Algoritmo 01 Introducao A Logica
Logica Algoritmo 01 Introducao A LogicaLogica Algoritmo 01 Introducao A Logica
Logica Algoritmo 01 Introducao A Logica
 
Introducao logica
Introducao logicaIntroducao logica
Introducao logica
 
Algoritmos em portugol
Algoritmos em portugolAlgoritmos em portugol
Algoritmos em portugol
 
Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1
 
Complexidade Ciclomática
Complexidade CiclomáticaComplexidade Ciclomática
Complexidade Ciclomática
 
Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e Algoritmos
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e Programação
 
Aula02 condicionais
Aula02   condicionaisAula02   condicionais
Aula02 condicionais
 
mod2-mecanismos
mod2-mecanismosmod2-mecanismos
mod2-mecanismos
 
Aula 10 - Equivalência Java x Portugol Studio - parte 2
Aula 10 - Equivalência Java x Portugol Studio - parte 2Aula 10 - Equivalência Java x Portugol Studio - parte 2
Aula 10 - Equivalência Java x Portugol Studio - parte 2
 
Algoritmo aula 01-f
Algoritmo   aula 01-fAlgoritmo   aula 01-f
Algoritmo aula 01-f
 
Algoritmos e lp parte 1-introdução
Algoritmos e lp parte 1-introduçãoAlgoritmos e lp parte 1-introdução
Algoritmos e lp parte 1-introdução
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Lp m1(parte1)
Lp m1(parte1)Lp m1(parte1)
Lp m1(parte1)
 
Pa hgp57-f1-2017-cc
Pa hgp57-f1-2017-ccPa hgp57-f1-2017-cc
Pa hgp57-f1-2017-cc
 
Aula 1 aed - lógica de programação
Aula 1   aed - lógica de programaçãoAula 1   aed - lógica de programação
Aula 1 aed - lógica de programação
 

Destacado (7)

Bloque Cierre
Bloque CierreBloque Cierre
Bloque Cierre
 
Evento do cras de cuitegi pb
Evento do cras de cuitegi   pbEvento do cras de cuitegi   pb
Evento do cras de cuitegi pb
 
Configuracion de sistema
Configuracion de sistemaConfiguracion de sistema
Configuracion de sistema
 
Jornal dos Comerciários - Nº 129
Jornal dos Comerciários - Nº 129Jornal dos Comerciários - Nº 129
Jornal dos Comerciários - Nº 129
 
Relatório do desafio problema 1
Relatório do desafio problema 1Relatório do desafio problema 1
Relatório do desafio problema 1
 
Juanfran
JuanfranJuanfran
Juanfran
 
10 th mark sheet
10 th mark sheet10 th mark sheet
10 th mark sheet
 

Similar a Ap algoritmosglauco

Similar a Ap algoritmosglauco (20)

Resumo computação I
Resumo computação IResumo computação I
Resumo computação I
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)
 
Test-driven Development
Test-driven DevelopmentTest-driven Development
Test-driven Development
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programação
 
Logica de Programacao
Logica de ProgramacaoLogica de Programacao
Logica de Programacao
 
Aula 01 - Revisão Algoritmo 1
Aula 01  - Revisão Algoritmo 1Aula 01  - Revisão Algoritmo 1
Aula 01 - Revisão Algoritmo 1
 
Introdução - Algoritmos
Introdução - AlgoritmosIntrodução - Algoritmos
Introdução - Algoritmos
 
Lógica de programação 2
Lógica de programação 2Lógica de programação 2
Lógica de programação 2
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Modulo02
Modulo02Modulo02
Modulo02
 
01 conceitos
01 conceitos01 conceitos
01 conceitos
 
Aula 2 - Introducao a Algoritmo.pptx
Aula 2 - Introducao a Algoritmo.pptxAula 2 - Introducao a Algoritmo.pptx
Aula 2 - Introducao a Algoritmo.pptx
 
Etapas da programação
Etapas da programaçãoEtapas da programação
Etapas da programação
 
FC-Logic
FC-LogicFC-Logic
FC-Logic
 
Programar Em Pascal
Programar Em PascalProgramar Em Pascal
Programar Em Pascal
 
Aula 3-lógica.pptx
Aula 3-lógica.pptxAula 3-lógica.pptx
Aula 3-lógica.pptx
 
4. metodos de contrucao de algoritmo
4. metodos de contrucao de algoritmo4. metodos de contrucao de algoritmo
4. metodos de contrucao de algoritmo
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
C# 8 e ML.NET
C# 8 e ML.NETC# 8 e ML.NET
C# 8 e ML.NET
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 

Último

República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
LidianeLill2
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
rfmbrandao
 

Último (20)

Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
Questões de Língua Portuguesa - gincana da LP
Questões de Língua Portuguesa - gincana da LPQuestões de Língua Portuguesa - gincana da LP
Questões de Língua Portuguesa - gincana da LP
 
Acessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeAcessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidade
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 

Ap algoritmosglauco

  • 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 1
  • 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 2
  • 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 ANÁLISE PRELIMINAR SOLUÇÃO TESTE DE QUALIDADE ALTERAÇÃO PRODUTO FINAL 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. Glauco Amorim 3
  • 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 4
  • 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 5
  • 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 6
  • 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 10CF 2A00 0200 Nome Número de faltas Nome do Aluno 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 Número de faltas Nome do Aluno Média Final Tipo valores do tipo inteiro valores do tipo caracter 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 Número de faltas Nome do Aluno Média Final Tipo valores do tipo inteiro valores do tipo caracter valores do tipo real Conteúdo 2 Maria 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 Glauco Amorim A B os valores nas colunas A e B representam os conteúdos das variáveis A e B, respectivamente. 7
  • 8. A←2 B←A B←B+3 2 2 2 2 5 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: Seja A de tipo inteiro e B de tipo lógico: Operação B←B+3 A ← falso B←A A←B Motivo do Erro var. tipo lógico x expressão numérica var. tipo inteiro x valor lógico var. tipo lógico x var. tipo inteiro var. tipo inteiro x var. 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: PI ← 5 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 Glauco Amorim 8
  • 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 soma subtração multiplicação divisão exponenciação Símbolo + * / ** Exemplo Operação A ← 10 B←2 C←A+B C←A*B C ← A ** B A 10 10 10 10 10 B C 2 2 2 2 12 20 100 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 ← “banana” B←A B ← “A” A banana banana banana B banana A Se não fosse o uso de delimitadores, não seria possível diferenciar a segunda operação da terceira operação. 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 As operações principais são: a) E A b) OU se algum estado for Verdadeiro, então Verdadeiro. c) NÃO troca o estado Glauco Amorim Exemplo B A ou B AeB não A V se algum estado for Falso, então Falso. V V V F V F V F F F V V F V F F F F V 9
  • 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 adição subtração multiplicação divisão exponenciação Símbolo + * / ** Exemplo A = 1; B = 2; C = 3; D = 4 Expressão Resultado A+1 2 B + (C – d) * 4 / 2 0 b) Relacional: operações de comparação entre dois valores de mesmo tipo, e que têm como resultado um valor lógico. Operadores igual diferente maior menor menor ou igual maior ou igual Símbolo = <> > < <= >= Exemplo A = “ABC”; B = “XYZ” Expressão Resultado A<B verdadeiro A<>B verdadeiro 5<=1 falso 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 Exemplo A = 5; B = “XYZ”; C = verdadeiro Expressão Resultado NÃO (A =5) falso (B = “XYZ”) E C verdadeiro (A = 4) OU (NÃO C) falso 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) Glauco Amorim 10
  • 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 11
  • 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 12
  • 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 13
  • 14. fim-se . . . Cn 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 14
  • 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ção com 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 15
  • 16. verdadeira. O comando repita-até é equivalente ao comando enquanto, veja o exemplo a seguir: Exemplo Glauco Amorim 16
  • 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 17
  • 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. Glauco Amorim 18