Buscar

AULA 1 P2 22.08

Prévia do material em texto

29/11/2016
1
Ciência da Computação
Tecnologia em Análise e 
Desenvolvimento de Sistemas
Construção de Algoritmos - INF1002
Prof. Eugênio Silva
(parte 1/2)
• ORGANIZAÇÃO DE COMPUTADORES;
• ALGORITMOS;
• DESCRIÇÃO DE ALGORITMOS;
• EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS;
• BIBLIOGRAFIA.
CONTEÚDO
29/11/2016
2
• O que é um Computador:
– durante séculos era uma pessoa que fazia cálculos;
– hoje é um tipo de máquina capaz de armazenar, processar e 
disponibilizar dados e informações;
– daqui a alguns anos pode se referir a um dispositivo com 
características e aplicações substancialmente diferentes das de hoje.
ORGANIZAÇÃO DE COMPUTADORES
3
• Computador Simplificado (CS):
– computador hipotético que utiliza objetos comuns de um escritório;
– elementos do CS:
1. 16 escaninhos desenhados em um quadro negro;
2. cadeira para o operador;
3. bandeja com cartões com números;
4. máquina de calcular;
5. máquina de escrever.
Adaptado de GUIMARÃES, LAGES (2001)
ORGANIZAÇÃO DE COMPUTADORES
4
29/11/2016
3
• Computador Simplificado (CS):
– funções dos elementos do CS:
• escaninhos: são identificados por E01 a E16 e armazenam instruções ou 
números;
• operador: interpreta e executa as instruções contidas nos escaninhos;
• bandeja de cartões: pilha de cartões com números que podem ser 
copiados (pelo operador) para algum escaninho;
• máquina de calcular: usada para executar todas as operações aritméticas;
• máquina de escrever: usada escrever valores numéricos ou frases.
ORGANIZAÇÃO DE COMPUTADORES
5
• Exemplo 1:
– instruções:
• E01: pegue um cartão na bandeja e copie o seu valor em E16;
• E02: pegue um cartão na bandeja e copie seu valor em E15;
• E03: some o conteúdo de E15 ao de E16 e coloque o resultado em E16;
• E04: imprima o conteúdo de E16;
• E05: pare.
– cartões:
• 5, 3.
• Exercício:
– escreva um conjunto de instruções para fazer o CS somar dois valores 
(contidos em dois cartões) e subtrair um terceiro valor (contido num terceiro 
cartão) e imprimir o resultado.
ORGANIZAÇÃO DE COMPUTADORES
6
29/11/2016
4
• Exemplo 2:
– instruções:
• E01: pegue um cartão na bandeja e copie o seu valor em E16;
• E02: pegue um cartão na bandeja e copie seu valor em E15;
• E03: some o conteúdo de E15 ao de E16 e coloque o resultado em E16;
• E04: volte a E02;
• E05: pare.
– cartões:
• 7, 1, 4, 3, 5, 2.
ORGANIZAÇÃO DE COMPUTADORES
7
• Exemplo 3:
– instruções:
• E01: pegue um cartão na bandeja e copie o seu valor em E16;
• E02: pegue um cartão na bandeja e copie seu valor em E15;
• E03: se não houver mais cartões avance para E06;
• E04: some o conteúdo de E15 ao de E16 e coloque o resultado em E16; 
• E05: volte a E02;
• E06: imprima o conteúdo de E16;
• E07: pare.
– cartões:
• 7, 1, 4, 3, 5, 2.
ORGANIZAÇÃO DE COMPUTADORES
8
29/11/2016
5
• Exemplo 4:
– instruções:
• E01: pegue um cartão na bandeja e copie o seu valor em E16;
• E02: se não houver mais cartões avance para E06;
• E03: pegue um cartão na bandeja e copie seu valor em E15;
• E04: some o conteúdo de E15 ao de E16 e coloque o resultado em E16; 
• E05: volte a E02;
• E06: imprima o conteúdo de E16;
• E07: pare.
– cartões:
• 7, 1, 4, 3, 5, 2.
ORGANIZAÇÃO DE COMPUTADORES
9
• Exemplo 5:
– instruções:
• E01: pegue um cartão na bandeja e copie o seu valor em E16;
• E02: pegue um cartão na bandeja e copie seu valor em E15;
• E03: se o conteúdo de E15 for igual a –1 avance para E06;
• E04: some o conteúdo de E15 ao de E16 e coloque o resultado em E16; 
• E05: volte a E02;
• E06: imprima o conteúdo de E16;
• E07: pare.
– cartões:
• 7, 1, 4, 3, 5, 2, –1.
ORGANIZAÇÃO DE COMPUTADORES
10
29/11/2016
6
• Estrutura de um Computador Digital:
processamentoentrada saída
ORGANIZAÇÃO DE COMPUTADORES
11
• Estrutura de um Computador Digital:
unidade aritmética 
e lógica
unidade de 
entrada
unidade de 
saída
unidade de 
controle
memória
unidade central de 
processamento 
(UCP)
ORGANIZAÇÃO DE COMPUTADORES
12
29/11/2016
7
• Estrutura de um Computador Digital: 
– funções dos componentes de um computador real:
• unidade de entrada: traduz informações de um dispositivo em um código 
que a UCP é capaz de entender;
• memória: armazena os dados e as instruções que manipulam os dados;
• unidade aritmética e lógica: efetua todos os cálculos aritméticos e 
lógicos;
• unidade de controle: responsável pelo “tráfego” dos dados;
• unidade de saída: converte os dados processados em palavras ou 
números que podem ser impressos numa impressora ou exibidos num 
monitor.
ORGANIZAÇÃO DE COMPUTADORES
13
• Algoritmos no Dia a Dia: 
– indicações de como chegar a uma determinada rua;
– receita de culinária;
– planta do projeto de construção de um edifício;
– instruções de montagem de um brinquedo;
– substituição de uma lâmpada:
1. remova a lâmpada queimada;
2. coloque a nova lâmpada.
as instruções parecem suficientes para um operador humano, 
mas e se a tarefa fosse desempenhada por um robô?
ALGORITMOS
14
29/11/2016
8
• Exemplo (substituição de uma lâmpada): 
– refinamento 1:
1. posicione a escada debaixo da lâmpada queimada;
2. escolha uma nova lâmpada de mesma potência da queimada;
3. suba na escada até que a lâmpada possa ser alcançada;
4. gire a lâmpada queimada no sentido anti-horário até que ela se solte;
5. posicione a nova lâmpada no soquete;
6. gire-a no sentido horário até que ela se firme;
7. desça a escada.
ALGORITMOS
15
• Exemplo (substituição de uma lâmpada): 
– refinamento 2:
1. posicione a escada debaixo da lâmpada queimada;
2. selecione uma nova lâmpada para substituição;
se a potência não for a mesma da queimada, então repita até
encontrar uma que sirva
descarte a lâmpada selecionada;
selecione uma nova;
3. enquanto a lâmpada não puder ser alcançada
suba um degrau da escada;
4. repita até que a lâmpada fique livre do soquete
gire a lâmpada no sentido anti-horário;
5. posicione a nova lâmpada no soquete;
6. repita até que a lâmpada esteja firme no soquete
gire a lâmpada no sentido horário;
7. desça a escada.
o detalhamento pode 
continuar quase que 
indefinidamente
ALGORITMOS
16
29/11/2016
9
• Algoritmos em Computação: 
– computadores, infelizmente, só fazem aquilo que se manda, e não 
necessariamente o que se deseja que eles façam;
– um conjunto de instruções pode ser facilmente entendido por um ser 
humano, mas deve ser mais bem especificado para que seja executado 
por um computador;
– as instruções fornecidas ao computador devem ser expressas de forma 
clara e sem qualquer ambiguidade;
– computadores manipulam um conjunto muito limitado de instruções e 
um algoritmo deve ser expresso nos termos dessas instruções.
ALGORITMOS
17
• Algoritmos em Computação:
– o refinamento sucessivo é um bom método para a elaboração de um 
algoritmo:
• começa-se com uma afirmação genérica da solução do problema;
• refina-se a solução até o algoritmo final.
– um algoritmo representa melhor o raciocínio envolvido na lógica de 
programação e abstrai detalhes computacionais que são adicionados 
mais tarde;
– uma vez concebida uma solução algorítmica para um problema, esta 
pode ser traduzida para qualquer linguagem de programação;
– a solução escrita em linguagem de programação é transformada em 
um programa de computador.
ALGORITMOS
18
29/11/2016
10
• Algoritmos em Computação:
– o processo de solução de um problema por meio de um programa de 
computador:
problema
solução em forma 
de algoritmo
solução como um 
programa de computador
solução do 
problemaimplementação
elaboração de um 
algoritmo para 
resolver o problema
Adaptado de TREMBLAY, BUNT (1983)
tradução do algoritmo 
para uma linguagem 
de programação
implementação
(passo difícil)
ALGORITMOS
19
• Definições:
– “... uma sequência ordenada, e sem ambiguidade, de passos que levam 
à solução de um dado problema.” 
TREMBLAY, BUNT (1983)
– “... é a descrição de um padrão de comportamento, expresso em 
termos de um repertório bem definido e finito de ações “primitivas”, 
das quais damos por certo que elas podem ser executadas.”
GUIMARÃES, LAGES (1994)
– é uma sequência finita de instruções não ambíguas que, quando 
executadas, produzem o resultado esperado.
ALGORITMOS
20
29/11/2016
11
• Linguagens para Algoritmos: 
– tanto a fraqueza quanto o poder de uma linguagem natural se devem 
ao seu caráter vago e à sua imprecisão;
– um algoritmo escrito em uma linguagem formal afasta a possibilidade 
de ambiguidade, tal que, para uma situação inicial, a sua execução 
sempre leva ao mesmo estado final, percorrendo o mesmo caminho;
– através de um conjunto básico de primitivas é possível pensar no 
problema e não na máquina que executará o algoritmo, porém, sem se 
distanciar muito da máquina;
– algumas opções:
• linguagem textual: PORTUGOL;
• linguagem gráfica: FLUXOGRAMA.
DESCRIÇÃO DE ALGORITMOS
21
• Elementos de Algoritmos: 
– identificadores;
– tipos de dados;
– variáveis e constantes;
– operadores;
– expressões;
– blocos;
– controle de fluxo de execução (estruturas básicas e complementares);
– outros tipos de dados (vetores, matrizes e registros).
DESCRIÇÃO DE ALGORITMOS
22
29/11/2016
12
• Identificadores:
– um identificador é uma sequência de símbolos (caracteres) que dá 
nome a uma entidade (variável, tipo de dado, etc.) que é parte da 
descrição de um algoritmo;
– sintaxe de um identificador (PORTUGOL e FLUXOGRAMA): 
exemplos:
A
B612
C3PO
R2D2
SOMA
dígito
letra
letra
OBS.: letras maiúsculas e minúsculas são tratadas de forma diferente, ou seja, 
os identificadores MEDIA e MeDiA são diferentes.
DESCRIÇÃO DE ALGORITMOS
23
• Tipos de Dados:
– um tipo estabelece a natureza (característica) do dado que é 
manipulado por um algoritmo;
– tipos de dados básicos (PORTUGOL):
inteiro: 13, – 6, 7830, – 295;
real: 23.8, 3.6752, – 8.910, 3738.72, 32.0;
caractere: “UEZO”, “Campo Grande”, “111 + 222 = 333”;
lógico: FALSO, VERDADEIRO;
DESCRIÇÃO DE ALGORITMOS
24
29/11/2016
13
• Variáveis: 
– uma variável é uma entidade que armazena um valor (dado) de um 
tipo e é conhecida pelo seu identificador;
– tecnicamente, uma variável corresponde a uma área na memória do 
computador que armazena um tipo específico de conteúdo;
– o conteúdo de uma variável pode ser modificado durante a execução 
do algoritmo.
SOMA
variável 
SOMA
DESCRIÇÃO DE ALGORITMOS
25
• Variáveis: 
– sintaxe da declaração (definição) de uma variável (PORTUGOL):
exemplos:
inteiro : VALOR;
real : R1, R2;
caractere : FRASE;
lógico : TEM;
real
caractere
lógico
: identificador ;
,
inteiro
DESCRIÇÃO DE ALGORITMOS
26
29/11/2016
14
• Constantes: 
– uma constante é uma entidade com características semelhantes às de 
uma variável, porém, o seu valor nunca muda durante a execução do 
algoritmo;
– sintaxe da declaração de uma constante (PORTUGOL):
identificador ;const valor
exemplos:
const PI 3.14;
const PHI 1.618;
DESCRIÇÃO DE ALGORITMOS
27
• Operadores: 
– um operador é um símbolo que é associado a um valor (constante ou 
variável) ou a um par de valores para formar uma expressão;
– tipos de operadores:
• aritméticos;
• relacionais;
• lógicos;
• atribuição.
DESCRIÇÃO DE ALGORITMOS
28
29/11/2016
15
• Operadores: 
– aritméticos (PORTUGOL e FLUXOGRAMA):
• funções matemáticas mais comuns:
adição: + multiplicação: * exponenciação: **
subtração: – divisão: /
mod (m mod n): resto da divisão de m por n
div (m div n): quociente da divisão inteira de m por n
seno: sen( ) cosseno: cos( ) tangente: tan( )
logaritmo (base e): log( ) exponencial: exp( ) módulo: abs( )
raiz quadrada: raiz( )
piso:   retorna o maior inteiro menor ou igual ao argumento 
teto:   retorna o menor inteiro maior ou igual ao argumento
DESCRIÇÃO DE ALGORITMOS
29
• Operadores: 
– relacionais (PORTUGOL e FLUXOGRAMA):
– lógicos (PORTUGOL e FLUXOGRAMA):
igual: = maior: > maior ou igual: 
diferente:  menor: < menor ou igual: 
A B A  B A  B  A
F F F F V
F V F V V
V F F V F
V V V V F
e: e () ou: ou () não: não ()
tabela verdade:
onde:
A, B são variáveis do tipo lógico;
F é o valor FALSO;
V é o valor VERDADEIRO.
DESCRIÇÃO DE ALGORITMOS
30
29/11/2016
16
• Operadores: 
– um tipo especial de operador, denominado operador de atribuição, 
representa o armazenamento do resultado de uma expressão em uma 
variável;
– sintaxe da atribuição de valor (PORTUGOL e FLUXOGRAMA):
identificador ;expressão
exemplos:
VALOR  42;
R1  1.73;
FRASE  “UEZO”;
TEM  VERDADEIRO;
DESCRIÇÃO DE ALGORITMOS
31
• Operadores: 
– precedência:
• parênteses e funções;
• exponenciação;
• multiplicação, divisão, mod e div;
• adição e subtração;
• comparações;
• não;
• e;
• ou;
• atribuição.
DESCRIÇÃO DE ALGORITMOS
32
29/11/2016
17
• Expressões: 
– uma expressão é uma combinação de valores, operadores e 
parênteses que, quando avaliada, produz um novo valor;
– a avaliação de uma expressão deve levar em consideração a 
precedência dos operadores envolvidos;
– exemplos:
inteiro : A, B, TOTAL;
A  3;
A  A + 2;
B  A * 2 – 1;
TOTAL  B + A ** 2 * (7 – A);
lógico : X;
inteiro : A, B;
A  5;
B  3;
X  (A < B)  (B = 3);
caractere : S1, S2;
S1  “Fulano”;
S2  “Olá ” + S1;
resp:
3
5
9
59
real : C1, C2, RES;
C1  3.72;
C2  C1 – 1.02;
RES  C1 / C2;
resp:
3.72
2.70
1.38
resp:
“Fulano”
“Olá Fulano”
resp:
5
3
VERDADEIRO
OBS.: ‘+’ pode ser usado para 
unir sequências de caracteres.
DESCRIÇÃO DE ALGORITMOS
33
• Expressões: 
– a avaliação de uma expressão deve levar em consideração também os 
tipos das variáveis (ou constantes) envolvidas;
– a conversão de um tipo para outro pode resultar em um erro ou em 
um valor incorreto;
– exemplos:
inteiro : A, B, C, M1, M2;
real : T1, T2;
A  “Bem vindo”;
B  VERDADEIRO;
C  (7 < 2)  (2 ≠ 5)
M1  (5 + 8) / 2;
M2  3 * 5.4;
T1  (9 – 2) / 3 * 4.0; 
T2  5 + (8.0 – 3) / 2;
resp:
ERRO
ERRO
ERRO
6 (INCORRETO)
16 (INCORRETO)
8.0 (INCORRETO)
7.5 (CORRETO)
DESCRIÇÃO DE ALGORITMOS
34
29/11/2016
18
• Exercícios: 
1. inteiro: A, B;
real: C, D, X;
A  7; B  2; C  3.1; D  2.5;
X  A / B + C – D;
2. lógico: A, B, C, D, E;
A  VERDADEIRO; B  FALSO; C  VERDADEIRO; D  FALSO;
E  não A ou B e não (C ou D);
3. lógico: X;
inteiro: A, B, C, D;
A  8; B  3; C  9; D  4; 
X  A mod B < 5 e C div D  0;
DESCRIÇÃO DE ALGORITMOS
35
• Boas Práticas:
– algumas dicas para escrever algoritmos de qualidade: 
• 1 - algoritmos devem ser feitos para serem lidos por seres humanos;
• 2 - escreva comentários quando estiver escrevendo o algoritmo;
• 3 - escreva comentários que acrescentem alguma informação útil;
• 4 - use comentários no prólogo;
• 5 - utilize espaços em branco para melhorar a legibilidade;
• 6 - escolha nomes representativos para as suas variáveis;
• 7 - escreva um comando por linha;
• 8 - utilize parênteses para aumentar a legibilidade das expressões;
• 9 - utilize indentação para mostrar a estrutura lógica do algoritmo;
• 10 - os comentários devem ser alterados quando o algoritmo éalterado.
DESCRIÇÃO DE ALGORITMOS
OBS.: em PORTUGOL, qualquer sequência de caracteres entre { } é um comentário. 36
29/11/2016
19
• Blocos:
– um bloco é um conjunto de comandos com uma função bem definida;
– um bloco também define o escopo das variáveis, ou seja, a região do 
algoritmo em que são conhecidas;
– sintaxe de um bloco:
início
<declarações de variáveis>
<comandos>
fim.
PORTUGOL FLUXOGRAMA
início
fim
...
DESCRIÇÃO DE ALGORITMOS
37
• Comandos Básicos (Entrada): 
– um comando de entrada obtém dados do ambiente externo, o que 
permite a construção de algoritmos de caráter geral;
– sintaxe do comando de entrada:
exemplos:
leia (VALOR);
leia (R1, R2);
leia (FRASE);
leia (TEM);
( identificador )
,
;leia
PORTUGOL
FLUXOGRAMA
onde:
vi é uma variável;
i  {1, 2, ..., n}.
exemplo:
leia
v1, v2, ..., vn
leia
VALOR, R1
DESCRIÇÃO DE ALGORITMOS
38
29/11/2016
20
• Comandos Básicos (Saída): 
– um comando de saída fornece dados ao ambiente externo;
– sintaxe do comando de saída:
PORTUGOL
FLUXOGRAMA exemplo:
( identificador )
,
;imprima
expressão
carectere
exemplos:
imprima (VALOR);
imprima (“O resultado é: ”, R1 + R2);
imprima
v1, v2, ..., vn
onde:
vi é uma variável (ou constante);
i  {1, 2, ..., n}.
imprima
“Total: ”, R1 + R2
DESCRIÇÃO DE ALGORITMOS
39
• Controle de Fluxo de Execução (Estrutura Sequencial):
– uma estrutura sequencial é um conjunto de comandos que são 
executados numa sequência linear de cima para baixo;
– sintaxe de uma estrutura sequencial:
PORTUGOL
C1 ;
C2 ;

Cn ;
exemplo:
início
inteiro : A, B;
leia (A);
B  A * 5;
imprima (“Resposta: ”, B);
fim.
OBS.: um comando é separado de outro por um ponto e vírgula (;).
onde:
Ci é um comando;
i  {1, 2, ..., n}.
DESCRIÇÃO DE ALGORITMOS
40
29/11/2016
21
• Controle de Fluxo de Execução (Estrutura Sequencial):
– uma estrutura sequencial é um conjunto de comandos que são 
executados numa sequência linear de cima para baixo;
– sintaxe de uma estrutura sequencial:
FLUXOGRAMA
C1
C2
Cn
. . .
início
fim
B  A * 5 
leia
A
imprima
“Resposta: ”, B
exemplo:
DESCRIÇÃO DE ALGORITMOS
41
• Exercícios: 
1. Escreva um algoritmo que leia três valores inteiros, calcule e imprima 
a média desses valores.
2. Escreva um algoritmo que leia dois valores inteiros, efetue as quatro 
operações fundamentais (soma, subtração, multiplicação e divisão) 
com esses valores e imprima os respectivos resultados.
3. Uma concessionária de veículos paga a seus funcionários um salário 
mensal fixo, uma comissão (também fixa) para cada carro vendido e 
mais 5% sobre o total das vendas. Escreva um algoritmo que calcule e 
imprima o valor total a ser recebido por um funcionário ao final de um 
mês de trabalho.
DESCRIÇÃO DE ALGORITMOS
42
29/11/2016
22
• Controle de Fluxo de Execução (Estrutura de Decisão):
– uma estrutura de decisão permite decidir qual ação deve ser 
executada com base no resultado de um teste;
– sintaxe de uma estrutura de decisão simples:
se <condição>
então
C1;
C2;
...
Cn;
fim se;
PORTUGOL exemplo:
início
inteiro : V1, V2;
leia (V1, V2);
se V1 > V2
então
imprima (V1);
fim se;
fim.
DESCRIÇÃO DE ALGORITMOS
43
• Controle de Fluxo de Execução (Estrutura de Decisão):
– uma estrutura de decisão permite decidir qual ação deve ser 
executada com base no resultado de um teste;
– sintaxe de uma estrutura de decisão simples:
exemplo:FLUXOGRAMA
C1
Cn
. . .
V
F
início
fim
leia
V1, V2
imprima
V1
V1 > V2
V
F
DESCRIÇÃO DE ALGORITMOS
44
29/11/2016
23
• Exercícios: 
1. Escreva um algoritmo que leia um valor inteiro, verifique e imprima se 
esse valor é ímpar.
2. Escreva um algoritmo que leia quatro valores inteiros, verifique e 
imprima se há algum par de valores iguais.
3. Considerando a mesma concessionária do slide 42, assuma que se o 
total de vendas de um funcionário ultrapassar o valor de R$100.000,00 
no mês, este terá direito a uma bonificação extra (além dos 5%) de 3% 
sobre o total de vendas. Escreva um algoritmo que calcule e imprima o 
valor total a ser recebido pelo funcionário ao final de um mês de 
trabalho.
DESCRIÇÃO DE ALGORITMOS
45
• Controle de Fluxo de Execução (Estrutura de Decisão):
– uma estrutura de decisão permite decidir qual ação deve ser 
executada com base no resultado de um teste;
– sintaxe de uma estrutura de decisão composta:
PORTUGOL
se <condição>
então
C1;
...
Cn;
senão
C'1;
...
C'm;
fim se;
exemplo:
início
inteiro : V1, V2;
leia (V1, V2);
se V1 > V2
então
imprima (V1);
senão
imprima (V2);
fim se;
fim.
DESCRIÇÃO DE ALGORITMOS
46
29/11/2016
24
• Controle de Fluxo de Execução (Estrutura de Decisão):
– uma estrutura de decisão permite decidir qual ação deve ser 
executada com base no resultado de um teste;
– sintaxe de uma estrutura de decisão composta:
FLUXOGRAMA
C'1
Cn
. . .
V F
C1
Cm
. . .
início
fim
leia
V1, V2
imprima
V2
V1 > V2
V F
imprima
V1
exemplo:
DESCRIÇÃO DE ALGORITMOS
47
• Exercícios: 
1. Escreva um algoritmo que leia dois valores inteiros, verifique e escreva 
se o primeiro valor é ou não divisível pelo segundo.
2. Escreva um algoritmo que leia quatro valores inteiros, verifique e 
escreva se há ou não uma quantidade ímpar de pares de valores 
iguais.
3. Considerando a mesma concessionária do slide 45, escreva um 
algoritmo que calcule e imprima o valor total a ser recebido pelo 
funcionário ao final de um mês de trabalho, assumindo o seguinte 
critério de bonificação:
3% do total das vendas para vendas até R$50.000,00;
5% para vendas entre R$50.000,00 e R$80.000,00 (inclusive);
7% para vendas superiores a R$80.000,00.
DESCRIÇÃO DE ALGORITMOS
48
29/11/2016
25
• Controle de Fluxo de Execução (Estrutura de Repetição):
– uma estrutura de repetição permite executar repetidamente um 
conjunto de ações enquanto uma condição permanece válida;
– sintaxe de uma estrutura de repetição com teste no início:
PORTUGOL
enquanto <condição> faça
C1;
C2;
...
Cn;
fim enquanto;
exemplo:
início
inteiro : A, I;
leia (A);
I  1;
enquanto I  10 faça
A  A * 2;
I  I + 1;
fim enquanto;
imprima (A);
fim.
DESCRIÇÃO DE ALGORITMOS
49
• Controle de Fluxo de Execução (Estrutura de Repetição):
– uma estrutura de repetição permite executar repetidamente um 
conjunto de ações enquanto uma condição permanece válida;
– sintaxe de uma estrutura de repetição com teste no início:
FLUXOGRAMA exemplo:
C1
Cn
. . .
V
F
início
fim
leia
A
V
imprima
A
F
I  I + 1
I  10
A  A * 2
I  1
DESCRIÇÃO DE ALGORITMOS
50
29/11/2016
26
• Exercícios: 
1. Escreva um algoritmo que leia um conjunto de valores inteiros, calcule 
e imprima a soma e o produto desses valores.
2. Escreva um algoritmo que leia um conjunto de valores reais, e 
também seus respectivos pesos, calcule e imprima a média ponderada 
desses valores.
3. Considerando a mesma concessionária do slide 48, escreva um 
algoritmo que calcule e imprima o valor total a ser recebido por cada 
funcionário ao final do mês. O algoritmo deve calcular e imprimir 
também o valor total pago no mês.
DESCRIÇÃO DE ALGORITMOS
51
• Outros Tipos de Controle de Fluxo de Execução:
– as estruturas apresentadas são suficientes para a descrição de 
qualquer algoritmo, mas, em determinadas situações, podem 
dificultar a sua compreensão;
– as estruturas complementares não aumentam o poder de 
representação das estruturas básicas, maspodem facilitar a descrição 
e, consequentemente, o entendimento de determinados algoritmos;
– estruturas complementares:
• repetição com teste no final;
• repetição com variável de controle;
• abandono;
• decisão por múltipla escolha.
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
52
29/11/2016
27
• Controle de Fluxo de Execução (Estrutura de Repetição):
– sintaxe de uma estrutura de repetição com teste no final:
PORTUGOL
repita
C1;
C2;
...
Cn;
até <condição>;
exemplo:
início
inteiro : A, I;
leia (A);
I  1;
repita
A  A * 2;
I  I + 1;
até I > 10;
imprima (A);
fim.
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
53
• Controle de Fluxo de Execução (Estrutura de Repetição):
– sintaxe de uma estrutura de repetição com teste no final:
FLUXOGRAMA exemplo:
C1
Cn
. . .
V
F
V
F
início
fim
leia
A
imprima
A
I  I + 1
A  A * 2
I  1 I > 10
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
54
29/11/2016
28
• Exercícios: 
1. Escreva um algoritmo que leia um conjunto de pares de valores 
inteiros, calcule e imprima a razão e a diferença entre o segundo e o 
primeiro valor de cada par.
2. Escreva um algoritmo que leia um conjunto de valores reais, calcule e 
imprima a média geométrica desses valores.
3. Considerando a mesma concessionária do slide 51, escreva um 
algoritmo que calcule e imprima também a média dos valores pagos 
no mês. 
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
55
• Controle de Fluxo de Execução (Estrutura de Repetição):
– sintaxe de uma estrutura de repetição com variável de controle:
PORTUGOL
para v de i até l passo p faça
C1;
C2;
...
Cn;
fim para;
exemplo:
início
inteiro : A, I;
leia (A);
para I de 1 até 10 passo 1 faça
A  A * 2;
fim para;
imprima (A);
fim.
onde:
v é a variável de controle;
i é o valor inicial de v;
l é o valor final de v;
p é valor do incremento de v.
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
56
29/11/2016
29
• Controle de Fluxo de Execução (Estrutura de Repetição):
– sintaxe de uma estrutura de repetição com variável de controle:
FLUXOGRAMA exemplo:
C1
Cn
. . .
V
F
V
Finício
fim
leia
A
imprima
A
A  A * 2
I de 1 até 10 
passo 1
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
57
• Exercícios: 
1. Escreva um algoritmo que leia um valor inteiro, calcule e imprima os 
seus divisores.
2. Escreva um algoritmo que leia um valor inteiro, calcule e imprima as 
suas N primeiras potências.
3. Considerando a mesma concessionária do slide 55, escreva um 
algoritmo que calcule e imprima também a média dos valores pagos 
em cada faixa de bonificação.
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
58
29/11/2016
30
• Controle de Fluxo de Execução (Estrutura de Abandono):
– o abandono só tem sentido dentro de uma estrutura de repetição e 
sempre está associado a uma estrutura de decisão (simples ou 
composta);
– o abandono interrompe um laço de repetição quando uma condição é 
satisfeita, antes que a condição de parada do laço seja atingida;
– o abandono aumenta a eficiência de certos algoritmos, uma vez que 
iterações desnecessárias em um laço de repetição são evitadas.
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
59
• Controle de Fluxo de Execução (Estrutura de Abandono):
– sintaxe de uma estrutura de abandono:
PORTUGOL
<repetição> <condição>
C1 ;
...
Cn;
<decisão> <condição>
abandone;
<fim decisão>
<fim repetição>
exemplo:
início
inteiro : A, I;
leia (A);
I  1;
enquanto I  10 faça
A  A * I;
se A < 100
então I  I + 1;
senão abandone;
fim se;
fim enquanto;
imprima (A);
fim.
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
60
29/11/2016
31
• Controle de Fluxo de Execução (Estrutura de Abandono):
– sintaxe de uma estrutura de abandono:
FLUXOGRAMA exemplo:
decisão
repetição início
fim
leia
A
V
imprima
A
F
I  10
A  A * I
I  1 A < 100
I  I + 1
V
F
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
61
• Exercícios: 
1. Escreva um algoritmo que leia um valor inteiro, calcule e imprima os 
seus N primeiros múltiplos ou os múltiplos menores que 100.
2. Escreva um algoritmo que encontre e imprima o primeiro número 
entre 1 e 1.000.000 que seja divisível por 11, 13 e 17.
3. Considerando a mesma concessionária do slide 51, escreva um 
algoritmo que calcule e imprima o valor total a ser recebido por cada 
funcionário ao final do mês, mas que interrompa o cálculo e imprima 
um alerta se o total pago no mês ultrapassar R$500.000,00.
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
62
29/11/2016
32
• Controle de Fluxo de Execução (Estrutura de Decisão):
– sintaxe de uma estrutura de decisão por múltipla escolha:
PORTUGOL
escolha <expressão>
caso v11 : ... : v1n : C1;
caso v21 : ... : v2m : C2;
...
caso vp1 : ... : vpk : Cp; 
senão Cp+1;
fim escolha;
exemplo:
início
inteiro : V;
leia (V);
escolha V * 10
caso 10 : 20 : 30
imprima (“PQ”);
caso 80 : 90 : 100
imprima (“GD”);
senão
imprima (“ERRO”);
fim escolha;
fim.
onde:
vij é um valor (rótulo);
i  {1, 2, ..., p};
j  {1, 2, ..., r};
r é o número de rótulos do caso i.
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
63
• Controle de Fluxo de Execução (Estrutura de Decisão):
– sintaxe de uma estrutura de decisão por múltipla escolha:
FLUXOGRAMA
. . .
senão
C1
início
fim
leia
V
imprima
“GD”
imprima
“PQ”
exemplo:
Cp Cp+1
v11 : ... : v1n 
imprima
“ERRO”
V * 10
80 : 90 : 10010 : 20 : 30 senão
vp1 : ... : vpk
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
64
29/11/2016
33
• Exercícios: 
1. Escreva um algoritmo que leia um valor inteiro, identifique e imprima 
o nome do mês correspondente. 
2. Escreva um algoritmo que leia dois valores inteiros e uma dentre 
quatro opções possíveis de operações com esses valores (soma, 
subtração, multiplicação ou divisão). Em seguida, calcule e imprima o 
resultado da operação selecionada.
3. Considerando a mesma concessionária do slide 48, escreva um 
algoritmo que calcule e imprima o valor total a ser recebido pelo 
funcionário, assumindo o seguinte critério de bonificação:
3% do total das vendas para quem vende até 2 carros;
4% para quem vende de 3 a 5 carros;
6% para quem vende de 6 a 8 carros;
9% para quem vende de 8 a 10 carros.
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
65
• Outros Tipos de Dados:
– nem sempre os tipos básicos (inteiro, real, caractere e lógico) são 
adequados para representar os dados manipulados por um algoritmo;
– exemplo (cálculo da média das notas de 5 alunos):
início
real : NOTA1, NOTA2, NOTA3, NOTA4, NOTA5;
real : SOMA, MEDIA;
leia (NOTA1, NOTA2, NOTA3, NOTA4, NOTA5);
SOMA  NOTA1 + NOTA2 + NOTA3 + NOTA4 + NOTA5;
MEDIA  SOMA / 5;
imprima (MEDIA);
fim.
se a turma tivesse 80 alunos, só a declaração das 
variáveis tornaria a escrita do algoritmo impraticável
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
66
29/11/2016
34
• Outros Tipos de Dados:
– no exemplo, o ideal é o uso de uma estrutura de dados que contenha 
todas as notas e que permita a referência ao conjunto todo ou a cada 
nota individualmente:
– uma estrutura de dados é um modo particular de armazenamento e 
de organização de dados para que possam ser usados eficientemente;
– tipos de estruturas de dados:
• homogêneas (vetores e matrizes): conjuntos de dados formados pelo 
mesmo tipo de dado básico;
• heterogêneas (registros): conjuntos de dados formados por tipos de 
dados básicos diferentes (campos do registro).
1 2 3 ... 80
8,5 7,2 5,9 ... 9,5 valores
índicesNOTAS
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
67
• Estrutura de Dados Homogênea(Vetor):
– um vetor é uma estrutura que armazena os dados em uma linha e em 
várias colunas , ou seja, é unidimensional;
– sintaxe da especificação de um tipo vetor (PORTUGOL):
tipo <identificador> = vetor [li : ls] <tipo básico>;
onde:
li e ls são valores inteiros e positivos;
li é o limite inferior do vetor;
ls é o limite superior do vetor;
li  ls.
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
68
29/11/2016
35
• Estrutura de Dados Homogênea (Vetor):
– a especificação indica apenas o modelo; 
– para efetivar a estrutura no algoritmo é necessário declarar uma 
variável do tipo da estrutura especificada;
– declaração de uma variável do tipo vetor (PORTUGOL):
exemplo:
tipo v = vetor [1 : 5] real;
v : VET;
1 2 3 4 5
valores
índicesVET
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
69
• Exercícios: 
1. Escreva um algoritmo que leia um vetor de 10 valores inteiros, calcule 
e imprima o produto dos valores que estão nas posições de índice par 
do vetor.
2. Escreva um algoritmo que leia um vetor de 20 valores inteiros, 
identifique e imprima os índices dos valores que são múltiplos de 5.
3. Considerando a mesma concessionária do slide 51, escreva um 
algoritmo que calcule e imprima o valor total a ser recebido por cada 
funcionário. Assuma que os totais das vendas devem ser armazenados 
em um vetor e que os valores totais a pagar em outro vetor. O 
algoritmo deve calcular e imprimir também o maior valor pago no 
mês.
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
70
29/11/2016
36
• Estrutura de Dados Homogênea (Matriz):
– uma matriz é uma estrutura que armazena os dados em várias linhas e 
em várias colunas , ou seja, é bidimensional;
– apesar de incomum, uma matriz pode ser multidimensional; 
– sintaxe da especificação de um tipo matriz (PORTUGOL):
tipo <identificador> = matriz [li1 : ls1, li2 : ls2, ..., lin : lsn] <tipo básico>;
onde:
lid e lsd são valores inteiros e positivos;
lid é o limite inferior da dimensão d da matriz;
lsd é o limite superior da dimensão d da matriz;
lid  lsd;
d  {1, 2, ..., n}.
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
71
1 2 3 4
1
2
3
• Estrutura de Dados Homogênea (Matriz):
– a especificação indica apenas o modelo; 
– para efetivar a estrutura no algoritmo é necessário declarar uma 
variável do tipo da estrutura especificada;
– declaração de uma variável do tipo matriz (PORTUGOL):
exemplo:
tipo m = matriz [1 : 3, 1 : 4] real;
m : MAT;
índices
MAT
valores
índices
valores
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
72
29/11/2016
37
• Exercícios: 
1. Escreva um algoritmo que leia uma matriz de 10 x 10 valores inteiros, 
calcule e imprima a soma dos valores que estão nas posições da matriz 
em que a soma do índice da linha e da coluna seja um número par. 
2. Escreva um algoritmo que leia uma matriz de 20 x 20 valores inteiros, 
identifique e imprima os índices (linha e coluna) dos valores que são 
divisíveis por 3.
3. Considerando a mesma concessionária do slide 51, escreva um 
algoritmo que calcule e imprima o valor total a ser recebido por cada 
funcionário. Assuma que os totais das vendas e os valores a pagar 
devem ser armazenados em uma matriz. O algoritmo deve calcular e 
imprimir também o segundo maior valor pago no mês.
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
73
• Estrutura de Dados Heterogênea (Registro):
– um registro é uma estrutura formada por um conjunto de variáveis de 
tipos diferentes ou, eventualmente, iguais;
– sintaxe da especificação de um tipo registro (PORTUGOL):
– sintaxe da descrição (PORTUGOL):
tipo <identificador> = registro
<descrição>
fim registro;
<outro tipo>
: identificador ;
,
<tipo básico>
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
74
29/11/2016
38
• Estrutura de Dados Heterogênea (Registro):
– a especificação indica apenas o modelo; 
– para efetivar a estrutura no algoritmo é necessário declarar uma 
variável do tipo da estrutura especificada;
– declaração de uma variável do tipo registro (PORTUGOL): 
exemplo:
tipo r = registro
caractere : NOME;
real : SALARIO;
inteiro : IDADE;
lógico : SEXO;
fim registro;
r : REG;
NOME
SALARIO
IDADE SEXO
REG
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
75
• Exercícios: 
1. Escreva um algoritmo que leia os dados (nome, sexo e salário) de um 
conjunto de pessoas, identifique e imprima o sexo e o salário daqueles 
que têm renda mensal maior que dois salários.
2. Escreva um algoritmo que leia os dados (nome, data de nascimento e 
cidade de origem) de 500 inscritos em um concurso, identifique e 
imprima o nome e a idade do candidato mais jovem.
3. Considerando a mesma concessionária do slide 51, escreva um 
algoritmo que calcule, armazene e imprima o valor total a ser recebido 
por cada funcionário. O algoritmo deve armazenar e imprimir também 
o nome e o tempo de serviço de cada funcionário na concessionária.
EXTENSÕES PARA A DESCRIÇÃO DE ALGORITMOS
76
29/11/2016
39
• Básica:
GUIMARÃES, A. M., LAGES, N. A. C., Algoritmos e Estruturas de Dados, 
LTC, Rio de Janeiro, 1994;
GUIMARÃES, A. M., LAGES, N. A. C., Introdução à Ciência da 
Computação, LTC, Rio de Janeiro, 1984;
TREMBLAY, J. P., BUNT, R. B., Ciência da Computação - Uma Abordagem 
Algorítmica, McGraw-Hill, São Paulo, 1983.
BIBLIOGRAFIA
77
• Complementar:
FARRER, H. et al, Algoritmos Estruturados, 3ª edição, LTC, Rio de Janeiro, 
1999;
FORBELLONE, A. L. V., EBERSPACHER, H. F., Lógica de Programação: A 
Construção de Algoritmos e Estrutura de Dados, 3ª edição, Pearson, 
São Paulo, 2005;
VILARIM, G., Algoritmos: Programação para Iniciantes, 2ª edição, 
Ciência Moderna, Rio de Janeiro, 2004;
MANZANO, J. A. N. G., OLIVEIRA, J. F., Algoritmos: Lógica para 
Desenvolvimento de Programação de Computadores, 26ª edição 
revisada, Érica, São Paulo, 2012;
SOARES, M. V., GOMES, M., M., SOUZA, M. A. F., Algoritmos e Lógica de 
Programação, 2ª edição revista e ampliada, Cengage Learning, São 
Paulo, 2012.
BIBLIOGRAFIA
78
29/11/2016
40
FIM

Continue navegando