Você está na página 1de 40

29/11/2016

Cincia da Computao

Tecnologia em Anlise e
Desenvolvimento de Sistemas

Construo de Algoritmos - INF1002


Prof. Eugnio Silva
(parte 1/2)

CONTEDO
ORGANIZAO DE COMPUTADORES;

ALGORITMOS;

DESCRIO DE ALGORITMOS;

EXTENSES PARA A DESCRIO DE ALGORITMOS;

BIBLIOGRAFIA.

1
29/11/2016

ORGANIZAO DE COMPUTADORES
O que um Computador:
durante sculos era uma pessoa que fazia clculos;

hoje um tipo de mquina capaz de armazenar, processar e


disponibilizar dados e informaes;

daqui a alguns anos pode se referir a um dispositivo com


caractersticas e aplicaes substancialmente diferentes das de hoje.

ORGANIZAO DE COMPUTADORES
Computador Simplificado (CS):
computador hipottico que utiliza objetos comuns de um escritrio;

elementos do CS:

1. 16 escaninhos desenhados em um quadro negro;

2. cadeira para o operador;

3. bandeja com cartes com nmeros;

4. mquina de calcular;

5. mquina de escrever.

Adaptado de GUIMARES, LAGES (2001)


4

2
29/11/2016

ORGANIZAO DE COMPUTADORES
Computador Simplificado (CS):
funes dos elementos do CS:

escaninhos: so identificados por E01 a E16 e armazenam instrues ou


nmeros;

operador: interpreta e executa as instrues contidas nos escaninhos;

bandeja de cartes: pilha de cartes com nmeros que podem ser


copiados (pelo operador) para algum escaninho;

mquina de calcular: usada para executar todas as operaes aritmticas;

mquina de escrever: usada escrever valores numricos ou frases.

ORGANIZAO DE COMPUTADORES
Exemplo 1:
instrues:
E01: pegue um carto na bandeja e copie o seu valor em E16;
E02: pegue um carto na bandeja e copie seu valor em E15;
E03: some o contedo de E15 ao de E16 e coloque o resultado em E16;
E04: imprima o contedo de E16;
E05: pare.

cartes:
5, 3.

Exerccio:
escreva um conjunto de instrues para fazer o CS somar dois valores
(contidos em dois cartes) e subtrair um terceiro valor (contido num terceiro
carto) e imprimir o resultado.

3
29/11/2016

ORGANIZAO DE COMPUTADORES
Exemplo 2:
instrues:
E01: pegue um carto na bandeja e copie o seu valor em E16;
E02: pegue um carto na bandeja e copie seu valor em E15;
E03: some o contedo de E15 ao de E16 e coloque o resultado em E16;
E04: volte a E02;
E05: pare.

cartes:
7, 1, 4, 3, 5, 2.

ORGANIZAO DE COMPUTADORES
Exemplo 3:
instrues:
E01: pegue um carto na bandeja e copie o seu valor em E16;
E02: pegue um carto na bandeja e copie seu valor em E15;
E03: se no houver mais cartes avance para E06;
E04: some o contedo de E15 ao de E16 e coloque o resultado em E16;
E05: volte a E02;
E06: imprima o contedo de E16;
E07: pare.

cartes:
7, 1, 4, 3, 5, 2.

4
29/11/2016

ORGANIZAO DE COMPUTADORES
Exemplo 4:
instrues:
E01: pegue um carto na bandeja e copie o seu valor em E16;
E02: se no houver mais cartes avance para E06;
E03: pegue um carto na bandeja e copie seu valor em E15;
E04: some o contedo de E15 ao de E16 e coloque o resultado em E16;
E05: volte a E02;
E06: imprima o contedo de E16;
E07: pare.

cartes:
7, 1, 4, 3, 5, 2.

ORGANIZAO DE COMPUTADORES
Exemplo 5:
instrues:
E01: pegue um carto na bandeja e copie o seu valor em E16;
E02: pegue um carto na bandeja e copie seu valor em E15;
E03: se o contedo de E15 for igual a 1 avance para E06;
E04: some o contedo de E15 ao de E16 e coloque o resultado em E16;
E05: volte a E02;
E06: imprima o contedo de E16;
E07: pare.

cartes:
7, 1, 4, 3, 5, 2, 1.

10

5
29/11/2016

ORGANIZAO DE COMPUTADORES
Estrutura de um Computador Digital:

entrada processamento sada

11

ORGANIZAO DE COMPUTADORES
Estrutura de um Computador Digital:

memria

unidade de unidade de unidade de


entrada controle sada

unidade aritmtica
e lgica

unidade central de
processamento
(UCP)

12

6
29/11/2016

ORGANIZAO DE COMPUTADORES
Estrutura de um Computador Digital:
funes dos componentes de um computador real:

unidade de entrada: traduz informaes de um dispositivo em um cdigo


que a UCP capaz de entender;

memria: armazena os dados e as instrues que manipulam os dados;

unidade aritmtica e lgica: efetua todos os clculos aritmticos e


lgicos;

unidade de controle: responsvel pelo trfego dos dados;

unidade de sada: converte os dados processados em palavras ou


nmeros que podem ser impressos numa impressora ou exibidos num
monitor.

13

ALGORITMOS
Algoritmos no Dia a Dia:
indicaes de como chegar a uma determinada rua;

receita de culinria;

planta do projeto de construo de um edifcio;

instrues de montagem de um brinquedo;

substituio de uma lmpada:

1. remova a lmpada queimada;

2. coloque a nova lmpada.

as instrues parecem suficientes para um operador humano,


mas e se a tarefa fosse desempenhada por um rob?

14

7
29/11/2016

ALGORITMOS
Exemplo (substituio de uma lmpada):
refinamento 1:

1. posicione a escada debaixo da lmpada queimada;

2. escolha uma nova lmpada de mesma potncia da queimada;

3. suba na escada at que a lmpada possa ser alcanada;

4. gire a lmpada queimada no sentido anti-horrio at que ela se solte;

5. posicione a nova lmpada no soquete;

6. gire-a no sentido horrio at que ela se firme;

7. desa a escada.

15

ALGORITMOS
Exemplo (substituio de uma lmpada):
refinamento 2:

1. posicione a escada debaixo da lmpada queimada;


2. selecione uma nova lmpada para substituio;
se a potncia no for a mesma da queimada, ento repita at
encontrar uma que sirva
descarte a lmpada selecionada;
selecione uma nova;
3. enquanto a lmpada no puder ser alcanada
suba um degrau da escada;
o detalhamento pode
continuar quase que
4. repita at que a lmpada fique livre do soquete
indefinidamente
gire a lmpada no sentido anti-horrio;
5. posicione a nova lmpada no soquete;
6. repita at que a lmpada esteja firme no soquete
gire a lmpada no sentido horrio;
7. desa a escada. 16

8
29/11/2016

ALGORITMOS
Algoritmos em Computao:
computadores, infelizmente, s fazem aquilo que se manda, e no
necessariamente o que se deseja que eles faam;

um conjunto de instrues pode ser facilmente entendido por um ser


humano, mas deve ser mais bem especificado para que seja executado
por um computador;

as instrues fornecidas ao computador devem ser expressas de forma


clara e sem qualquer ambiguidade;

computadores manipulam um conjunto muito limitado de instrues e


um algoritmo deve ser expresso nos termos dessas instrues.

17

ALGORITMOS
Algoritmos em Computao:
o refinamento sucessivo um bom mtodo para a elaborao de um
algoritmo:

comea-se com uma afirmao genrica da soluo do problema;

refina-se a soluo at o algoritmo final.

um algoritmo representa melhor o raciocnio envolvido na lgica de


programao e abstrai detalhes computacionais que so adicionados
mais tarde;

uma vez concebida uma soluo algortmica para um problema, esta


pode ser traduzida para qualquer linguagem de programao;

a soluo escrita em linguagem de programao transformada em


um programa de computador.

18

9
29/11/2016

ALGORITMOS
Algoritmos em Computao:
o processo de soluo de um problema por meio de um programa de
computador:

problema elaborao de um
soluo do
problema algoritmo para
resolver o problema
implementao soluo em forma
(passo difcil) de algoritmo
traduo do algoritmo
implementao
soluo como um para uma linguagem
programa de computador de programao
Adaptado de TREMBLAY, BUNT (1983)

19

ALGORITMOS
Definies:
... uma sequncia ordenada, e sem ambiguidade, de passos que levam
soluo de um dado problema.
TREMBLAY, BUNT (1983)

... a descrio de um padro de comportamento, expresso em


termos de um repertrio bem definido e finito de aes primitivas,
das quais damos por certo que elas podem ser executadas.
GUIMARES, LAGES (1994)

uma sequncia finita de instrues no ambguas que, quando


executadas, produzem o resultado esperado.

20

10
29/11/2016

DESCRIO DE ALGORITMOS
Linguagens para Algoritmos:
tanto a fraqueza quanto o poder de uma linguagem natural se devem
ao seu carter vago e sua impreciso;

um algoritmo escrito em uma linguagem formal afasta a possibilidade


de ambiguidade, tal que, para uma situao inicial, a sua execuo
sempre leva ao mesmo estado final, percorrendo o mesmo caminho;

atravs de um conjunto bsico de primitivas possvel pensar no


problema e no na mquina que executar o algoritmo, porm, sem se
distanciar muito da mquina;

algumas opes:

linguagem textual: PORTUGOL;


linguagem grfica: FLUXOGRAMA.

21

DESCRIO DE ALGORITMOS
Elementos de Algoritmos:
identificadores;

tipos de dados;

variveis e constantes;

operadores;

expresses;

blocos;

controle de fluxo de execuo (estruturas bsicas e complementares);

outros tipos de dados (vetores, matrizes e registros).

22

11
29/11/2016

DESCRIO DE ALGORITMOS
Identificadores:
um identificador uma sequncia de smbolos (caracteres) que d
nome a uma entidade (varivel, tipo de dado, etc.) que parte da
descrio de um algoritmo;

sintaxe de um identificador (PORTUGOL e FLUXOGRAMA):

exemplos:
letra A
dgito B612
C3PO
letra
R2D2
SOMA

OBS.: letras maisculas e minsculas so tratadas de forma diferente, ou seja,


os identificadores MEDIA e MeDiA so diferentes.

23

DESCRIO DE ALGORITMOS
Tipos de Dados:
um tipo estabelece a natureza (caracterstica) do dado que
manipulado por um algoritmo;

tipos de dados bsicos (PORTUGOL):

inteiro: 13, 6, 7830, 295;


real: 23.8, 3.6752, 8.910, 3738.72, 32.0;
caractere: UEZO, Campo Grande, 111 + 222 = 333;
lgico: FALSO, VERDADEIRO;

24

12
29/11/2016

DESCRIO DE ALGORITMOS
Variveis:
uma varivel uma entidade que armazena um valor (dado) de um
tipo e conhecida pelo seu identificador;

SOMA
varivel
SOMA

tecnicamente, uma varivel corresponde a uma rea na memria do


computador que armazena um tipo especfico de contedo;

o contedo de uma varivel pode ser modificado durante a execuo


do algoritmo.

25

DESCRIO DE ALGORITMOS
Variveis:
sintaxe da declarao (definio) de uma varivel (PORTUGOL):

,
inteiro : identificador ;
real
exemplos:
caractere inteiro : VALOR;
real : R1, R2;
lgico caractere : FRASE;
lgico : TEM;

26

13
29/11/2016

DESCRIO DE ALGORITMOS
Constantes:
uma constante uma entidade com caractersticas semelhantes s de
uma varivel, porm, o seu valor nunca muda durante a execuo do
algoritmo;

sintaxe da declarao de uma constante (PORTUGOL):

const identificador valor ;

exemplos:
const PI 3.14;
const PHI 1.618;

27

DESCRIO DE ALGORITMOS
Operadores:
um operador um smbolo que associado a um valor (constante ou
varivel) ou a um par de valores para formar uma expresso;

tipos de operadores:

aritmticos;

relacionais;

lgicos;

atribuio.

28

14
29/11/2016

DESCRIO DE ALGORITMOS
Operadores:
aritmticos (PORTUGOL e FLUXOGRAMA):

adio: + multiplicao: * exponenciao: **


subtrao: diviso: /
mod (m mod n): resto da diviso de m por n
div (m div n): quociente da diviso inteira de m por n

funes matemticas mais comuns:

seno: sen( ) cosseno: cos( ) tangente: tan( )


logaritmo (base e): log( ) exponencial: exp( ) mdulo: abs( )
raiz quadrada: raiz( )
piso: retorna o maior inteiro menor ou igual ao argumento
teto: retorna o menor inteiro maior ou igual ao argumento

29

DESCRIO DE ALGORITMOS
Operadores:
relacionais (PORTUGOL e FLUXOGRAMA):

igual: = maior: > maior ou igual:


diferente: menor: < menor ou igual:

lgicos (PORTUGOL e FLUXOGRAMA):


e: e () ou: ou () no: no ()

tabela verdade:
A B AB AB A
F F F F V onde:
F V F V V A, B so variveis do tipo lgico;
F o valor FALSO;
V F F V F
V o valor VERDADEIRO.
V V V V F
30

15
29/11/2016

DESCRIO DE ALGORITMOS
Operadores:
um tipo especial de operador, denominado operador de atribuio,
representa o armazenamento do resultado de uma expresso em uma
varivel;

sintaxe da atribuio de valor (PORTUGOL e FLUXOGRAMA):

exemplos:
VALOR 42;
identificador expresso ; R1 1.73;
FRASE UEZO;
TEM VERDADEIRO;

31

DESCRIO DE ALGORITMOS
Operadores:
precedncia:

parnteses e funes;

exponenciao;

multiplicao, diviso, mod e div;

adio e subtrao;

comparaes;

no;

e;

ou;

atribuio.

32

16
29/11/2016

DESCRIO DE ALGORITMOS
Expresses:
uma expresso uma combinao de valores, operadores e
parnteses que, quando avaliada, produz um novo valor;

a avaliao de uma expresso deve levar em considerao a


precedncia dos operadores envolvidos;

exemplos:
inteiro : A, B, TOTAL; resp: lgico : X;
A 3; 3 inteiro : A, B; resp:
A A + 2; 5 A 5; 5
B A * 2 1; 9 B 3; 3
TOTAL B + A ** 2 * (7 A); 59 X (A < B) (B = 3); VERDADEIRO
real : C1, C2, RES; resp: caractere : S1, S2; resp:
C1 3.72; 3.72 S1 Fulano; Fulano
C2 C1 1.02; 2.70 S2 Ol + S1; Ol Fulano
RES C1 / C2; 1.38 OBS.: + pode ser usado para
unir sequncias de caracteres. 33

DESCRIO DE ALGORITMOS
Expresses:
a avaliao de uma expresso deve levar em considerao tambm os
tipos das variveis (ou constantes) envolvidas;

a converso 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; resp:
A Bem vindo; ERRO
B VERDADEIRO; ERRO
C (7 < 2) (2 5) ERRO
M1 (5 + 8) / 2; 6 (INCORRETO)
M2 3 * 5.4; 16 (INCORRETO)
T1 (9 2) / 3 * 4.0; 8.0 (INCORRETO)
T2 5 + (8.0 3) / 2; 7.5 (CORRETO)

34

17
29/11/2016

DESCRIO DE ALGORITMOS
Exerccios:
1. inteiro: A, B;
real: C, D, X;
A 7; B 2; C 3.1; D 2.5;
X A / B + C D;

2. lgico: A, B, C, D, E;
A VERDADEIRO; B FALSO; C VERDADEIRO; D FALSO;
E no A ou B e no (C ou D);

3. lgico: X;
inteiro: A, B, C, D;
A 8; B 3; C 9; D 4;
X A mod B < 5 e C div D 0;

35

DESCRIO DE ALGORITMOS
Boas Prticas:
algumas dicas para escrever algoritmos de qualidade:

1 - algoritmos devem ser feitos para serem lidos por seres humanos;
2 - escreva comentrios quando estiver escrevendo o algoritmo;
3 - escreva comentrios que acrescentem alguma informao til;
4 - use comentrios no prlogo;
5 - utilize espaos em branco para melhorar a legibilidade;
6 - escolha nomes representativos para as suas variveis;
7 - escreva um comando por linha;
8 - utilize parnteses para aumentar a legibilidade das expresses;
9 - utilize indentao para mostrar a estrutura lgica do algoritmo;
10 - os comentrios devem ser alterados quando o algoritmo alterado.
OBS.: em PORTUGOL, qualquer sequncia de caracteres entre { } um comentrio. 36

18
29/11/2016

DESCRIO DE ALGORITMOS
Blocos:
um bloco um conjunto de comandos com uma funo bem definida;

um bloco tambm define o escopo das variveis, ou seja, a regio do


algoritmo em que so conhecidas;

sintaxe de um bloco:

PORTUGOL FLUXOGRAMA
incio incio
<declaraes de variveis>

...
<comandos>
fim.

fim

37

DESCRIO DE ALGORITMOS
Comandos Bsicos (Entrada):
um comando de entrada obtm dados do ambiente externo, o que
permite a construo de algoritmos de carter geral;

sintaxe do comando de entrada:

PORTUGOL
exemplos:
,
leia (VALOR);
leia ( identificador ) ; leia (R1, R2);
leia (FRASE);
leia (TEM);

FLUXOGRAMA exemplo:
onde:
leia leia
vi uma varivel;
v1, v2, ..., vn VALOR, R1
i {1, 2, ..., n}.

38

19
29/11/2016

DESCRIO DE ALGORITMOS
Comandos Bsicos (Sada):
um comando de sada fornece dados ao ambiente externo;

sintaxe do comando de sada:

PORTUGOL
,
imprima ( identificador ) ;
expresso exemplos:
imprima (VALOR);
carectere
imprima (O resultado : , R1 + R2);

FLUXOGRAMA exemplo:
onde:
imprima imprima
vi uma varivel (ou constante);
v1, v2, ..., vn Total: , R1 + R2
i {1, 2, ..., n}.

39

DESCRIO DE ALGORITMOS
Controle de Fluxo de Execuo (Estrutura Sequencial):
uma estrutura sequencial um conjunto de comandos que so
executados numa sequncia linear de cima para baixo;

sintaxe de uma estrutura sequencial:


PORTUGOL exemplo:
C1 ; incio
inteiro : A, B;
C2 ; leia (A);
B A * 5;
Cn ; imprima (Resposta: , B);
onde: fim.
Ci um comando;
i {1, 2, ..., n}.

OBS.: um comando separado de outro por um ponto e vrgula (;).

40

20
29/11/2016

DESCRIO DE ALGORITMOS
Controle de Fluxo de Execuo (Estrutura Sequencial):
uma estrutura sequencial um conjunto de comandos que so
executados numa sequncia linear de cima para baixo;

sintaxe de uma estrutura sequencial:


FLUXOGRAMA exemplo:
incio

C1 leia
A
C2
BA*5
...

imprima
Resposta: , B
Cn
fim
41

DESCRIO DE ALGORITMOS
Exerccios:
1. Escreva um algoritmo que leia trs valores inteiros, calcule e imprima
a mdia desses valores.

2. Escreva um algoritmo que leia dois valores inteiros, efetue as quatro


operaes fundamentais (soma, subtrao, multiplicao e diviso)
com esses valores e imprima os respectivos resultados.

3. Uma concessionria de veculos paga a seus funcionrios um salrio


mensal fixo, uma comisso (tambm 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 funcionrio ao final de um
ms de trabalho.

42

21
29/11/2016

DESCRIO DE ALGORITMOS
Controle de Fluxo de Execuo (Estrutura de Deciso):
uma estrutura de deciso permite decidir qual ao deve ser
executada com base no resultado de um teste;

sintaxe de uma estrutura de deciso simples:


PORTUGOL exemplo:
se <condio> incio
inteiro : V1, V2;
ento
leia (V1, V2);
C1; se V1 > V2
C2; ento
... imprima (V1);
Cn; fim se;
fim.
fim se;

43

DESCRIO DE ALGORITMOS
Controle de Fluxo de Execuo (Estrutura de Deciso):
uma estrutura de deciso permite decidir qual ao deve ser
executada com base no resultado de um teste;

sintaxe de uma estrutura de deciso simples:


FLUXOGRAMA exemplo:
incio
F
leia
V V1, V2

C1 F
V1 > V2
...

V
imprima
Cn V1

fim 44

22
29/11/2016

DESCRIO DE ALGORITMOS
Exerccios:
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 concessionria do slide 42, assuma que se o


total de vendas de um funcionrio ultrapassar o valor de R$100.000,00
no ms, este ter direito a uma bonificao extra (alm dos 5%) de 3%
sobre o total de vendas. Escreva um algoritmo que calcule e imprima o
valor total a ser recebido pelo funcionrio ao final de um ms de
trabalho.

45

DESCRIO DE ALGORITMOS
Controle de Fluxo de Execuo (Estrutura de Deciso):
uma estrutura de deciso permite decidir qual ao deve ser
executada com base no resultado de um teste;

sintaxe de uma estrutura de deciso composta:


PORTUGOL exemplo:
se <condio> incio
inteiro : V1, V2;
ento
leia (V1, V2);
C1; se V1 > V2
... ento
Cn; imprima (V1);
seno seno
imprima (V2);
C'1;
fim se;
... fim.
C'm;
fim se;
46

23
29/11/2016

DESCRIO DE ALGORITMOS
Controle de Fluxo de Execuo (Estrutura de Deciso):
uma estrutura de deciso permite decidir qual ao deve ser
executada com base no resultado de um teste;

sintaxe de uma estrutura de deciso composta:


FLUXOGRAMA exemplo:
incio
V F leia
V1, V2
C1 C'1
V F
V1 > V2
...
...

imprima imprima
Cn Cm V1 V2

fim 47

DESCRIO DE ALGORITMOS
Exerccios:
1. Escreva um algoritmo que leia dois valores inteiros, verifique e escreva
se o primeiro valor ou no divisvel pelo segundo.

2. Escreva um algoritmo que leia quatro valores inteiros, verifique e


escreva se h ou no uma quantidade mpar de pares de valores
iguais.

3. Considerando a mesma concessionria do slide 45, escreva um


algoritmo que calcule e imprima o valor total a ser recebido pelo
funcionrio ao final de um ms de trabalho, assumindo o seguinte
critrio de bonificao:
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.

48

24
29/11/2016

DESCRIO DE ALGORITMOS
Controle de Fluxo de Execuo (Estrutura de Repetio):
uma estrutura de repetio permite executar repetidamente um
conjunto de aes enquanto uma condio permanece vlida;

sintaxe de uma estrutura de repetio com teste no incio:


PORTUGOL exemplo:
enquanto <condio> faa incio
inteiro : A, I;
C1;
leia (A);
C2; I 1;
... enquanto I 10 faa
Cn; A A * 2;
fim enquanto; I I + 1;
fim enquanto;
imprima (A);
fim.

49

DESCRIO DE ALGORITMOS
Controle de Fluxo de Execuo (Estrutura de Repetio):
uma estrutura de repetio permite executar repetidamente um
conjunto de aes enquanto uma condio permanece vlida;

sintaxe de uma estrutura de repetio com teste no incio:


FLUXOGRAMA exemplo:

incio F
F I 10
V
V leia
A AA*2
C1
I1 II+1
...

imprima
Cn A

fim 50

25
29/11/2016

DESCRIO DE ALGORITMOS
Exerccios:
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


tambm seus respectivos pesos, calcule e imprima a mdia ponderada
desses valores.

3. Considerando a mesma concessionria do slide 48, escreva um


algoritmo que calcule e imprima o valor total a ser recebido por cada
funcionrio ao final do ms. O algoritmo deve calcular e imprimir
tambm o valor total pago no ms.

51

EXTENSES PARA A DESCRIO DE ALGORITMOS


Outros Tipos de Controle de Fluxo de Execuo:
as estruturas apresentadas so suficientes para a descrio de
qualquer algoritmo, mas, em determinadas situaes, podem
dificultar a sua compreenso;

as estruturas complementares no aumentam o poder de


representao das estruturas bsicas, mas podem facilitar a descrio
e, consequentemente, o entendimento de determinados algoritmos;

estruturas complementares:

repetio com teste no final;

repetio com varivel de controle;

abandono;

deciso por mltipla escolha.


52

26
29/11/2016

EXTENSES PARA A DESCRIO DE ALGORITMOS


Controle de Fluxo de Execuo (Estrutura de Repetio):
sintaxe de uma estrutura de repetio com teste no final:

PORTUGOL exemplo:
repita incio
inteiro : A, I;
C1; leia (A);
C2; I 1;
... repita
Cn; A A * 2;
at <condio>; I I + 1;
at I > 10;
imprima (A);
fim.

53

EXTENSES PARA A DESCRIO DE ALGORITMOS


Controle de Fluxo de Execuo (Estrutura de Repetio):
sintaxe de uma estrutura de repetio com teste no final:

FLUXOGRAMA exemplo:

incio
AA*2
C1
leia
A II+1
...

F
I1 I > 10
Cn
V
F imprima
A
V
fim

54

27
29/11/2016

EXTENSES PARA A DESCRIO DE ALGORITMOS


Exerccios:
1. Escreva um algoritmo que leia um conjunto de pares de valores
inteiros, calcule e imprima a razo e a diferena 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 mdia geomtrica desses valores.

3. Considerando a mesma concessionria do slide 51, escreva um


algoritmo que calcule e imprima tambm a mdia dos valores pagos
no ms.

55

EXTENSES PARA A DESCRIO DE ALGORITMOS


Controle de Fluxo de Execuo (Estrutura de Repetio):
sintaxe de uma estrutura de repetio com varivel de controle:

PORTUGOL exemplo:
para v de i at l passo p faa incio
inteiro : A, I;
C1;
leia (A);
C2; para I de 1 at 10 passo 1 faa
... A A * 2;
Cn; fim para;
fim para; imprima (A);
fim.
onde:
v a varivel de controle;
i o valor inicial de v;
l o valor final de v;
p valor do incremento de v.

56

28
29/11/2016

EXTENSES PARA A DESCRIO DE ALGORITMOS


Controle de Fluxo de Execuo (Estrutura de Repetio):
sintaxe de uma estrutura de repetio com varivel de controle:

FLUXOGRAMA exemplo:

incio I de 1 at 10 F
F
passo 1
V leia V
A AA*2
C1

imprima
...

A
Cn
fim

57

EXTENSES PARA A DESCRIO DE ALGORITMOS


Exerccios:
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 potncias.

3. Considerando a mesma concessionria do slide 55, escreva um


algoritmo que calcule e imprima tambm a mdia dos valores pagos
em cada faixa de bonificao.

58

29
29/11/2016

EXTENSES PARA A DESCRIO DE ALGORITMOS


Controle de Fluxo de Execuo (Estrutura de Abandono):
o abandono s tem sentido dentro de uma estrutura de repetio e
sempre est associado a uma estrutura de deciso (simples ou
composta);

o abandono interrompe um lao de repetio quando uma condio


satisfeita, antes que a condio de parada do lao seja atingida;

o abandono aumenta a eficincia de certos algoritmos, uma vez que


iteraes desnecessrias em um lao de repetio so evitadas.

59

EXTENSES PARA A DESCRIO DE ALGORITMOS


Controle de Fluxo de Execuo (Estrutura de Abandono):
sintaxe de uma estrutura de abandono:

PORTUGOL exemplo:
<repetio> <condio> incio
inteiro : A, I;
C1 ; leia (A);
... I 1;
Cn; enquanto I 10 faa
<deciso> <condio> A A * I;
abandone; se A < 100
ento I I + 1;
<fim deciso> seno abandone;
<fim repetio> fim se;
fim enquanto;
imprima (A);
fim.

60

30
29/11/2016

EXTENSES PARA A DESCRIO DE ALGORITMOS


Controle de Fluxo de Execuo (Estrutura de Abandono):
sintaxe de uma estrutura de abandono:

FLUXOGRAMA exemplo:
repetio incio F
I 10
deciso V
leia
A AA*I

F
I1 A < 100
V
II+1

imprima
A

fim 61

EXTENSES PARA A DESCRIO DE ALGORITMOS


Exerccios:
1. Escreva um algoritmo que leia um valor inteiro, calcule e imprima os
seus N primeiros mltiplos ou os mltiplos menores que 100.

2. Escreva um algoritmo que encontre e imprima o primeiro nmero


entre 1 e 1.000.000 que seja divisvel por 11, 13 e 17.

3. Considerando a mesma concessionria do slide 51, escreva um


algoritmo que calcule e imprima o valor total a ser recebido por cada
funcionrio ao final do ms, mas que interrompa o clculo e imprima
um alerta se o total pago no ms ultrapassar R$500.000,00.

62

31
29/11/2016

EXTENSES PARA A DESCRIO DE ALGORITMOS


Controle de Fluxo de Execuo (Estrutura de Deciso):
sintaxe de uma estrutura de deciso por mltipla escolha:

PORTUGOL exemplo:
escolha <expresso> incio
inteiro : V;
caso v11 : ... : v1n : C1; leia (V);
caso v21 : ... : v2m : C2; escolha V * 10
... caso 10 : 20 : 30
caso vp1 : ... : vpk : Cp; imprima (PQ);
seno Cp+1; caso 80 : 90 : 100
fim escolha; imprima (GD);
seno
onde: imprima (ERRO);
vij um valor (rtulo); fim escolha;
i {1, 2, ..., p}; fim.
j {1, 2, ..., r};
r o nmero de rtulos do caso i.
63

EXTENSES PARA A DESCRIO DE ALGORITMOS


Controle de Fluxo de Execuo (Estrutura de Deciso):
sintaxe de uma estrutura de deciso por mltipla escolha:

FLUXOGRAMA exemplo:
incio

leia
V
v11 : ... : v1n vp1 : ... : vpk seno
C1 ... Cp Cp+1 V * 10

10 : 20 : 30 80 : 90 : 100 seno
imprima imprima imprima
PQ GD ERRO

fim
64

32
29/11/2016

EXTENSES PARA A DESCRIO DE ALGORITMOS


Exerccios:
1. Escreva um algoritmo que leia um valor inteiro, identifique e imprima
o nome do ms correspondente.

2. Escreva um algoritmo que leia dois valores inteiros e uma dentre


quatro opes possveis de operaes com esses valores (soma,
subtrao, multiplicao ou diviso). Em seguida, calcule e imprima o
resultado da operao selecionada.

3. Considerando a mesma concessionria do slide 48, escreva um


algoritmo que calcule e imprima o valor total a ser recebido pelo
funcionrio, assumindo o seguinte critrio de bonificao:
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.
65

EXTENSES PARA A DESCRIO DE ALGORITMOS


Outros Tipos de Dados:
nem sempre os tipos bsicos (inteiro, real, caractere e lgico) so
adequados para representar os dados manipulados por um algoritmo;

exemplo (clculo da mdia das notas de 5 alunos):


incio
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 declarao das


variveis tornaria a escrita do algoritmo impraticvel
66

33
29/11/2016

EXTENSES PARA A DESCRIO DE ALGORITMOS


Outros Tipos de Dados:
no exemplo, o ideal o uso de uma estrutura de dados que contenha
todas as notas e que permita a referncia ao conjunto todo ou a cada
nota individualmente:

NOTAS 1 2 3 ... 80 ndices


8,5 7,2 5,9 ... 9,5 valores

uma estrutura de dados um modo particular de armazenamento e


de organizao de dados para que possam ser usados eficientemente;

tipos de estruturas de dados:

homogneas (vetores e matrizes): conjuntos de dados formados pelo


mesmo tipo de dado bsico;

heterogneas (registros): conjuntos de dados formados por tipos de


dados bsicos diferentes (campos do registro).
67

EXTENSES PARA A DESCRIO DE ALGORITMOS


Estrutura de Dados Homognea (Vetor):
um vetor uma estrutura que armazena os dados em uma linha e em
vrias colunas , ou seja, unidimensional;

sintaxe da especificao de um tipo vetor (PORTUGOL):

tipo <identificador> = vetor [li : ls] <tipo bsico>;


onde:
li e ls so valores inteiros e positivos;
li o limite inferior do vetor;
ls o limite superior do vetor;
li ls.

68

34
29/11/2016

EXTENSES PARA A DESCRIO DE ALGORITMOS


Estrutura de Dados Homognea (Vetor):
a especificao indica apenas o modelo;

para efetivar a estrutura no algoritmo necessrio declarar uma


varivel do tipo da estrutura especificada;

declarao de uma varivel do tipo vetor (PORTUGOL):


exemplo:
tipo v = vetor [1 : 5] real;
v : VET;

VET 1 2 3 4 5 ndices
valores

69

EXTENSES PARA A DESCRIO DE ALGORITMOS


Exerccios:
1. Escreva um algoritmo que leia um vetor de 10 valores inteiros, calcule
e imprima o produto dos valores que esto nas posies 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 so mltiplos de 5.

3. Considerando a mesma concessionria do slide 51, escreva um


algoritmo que calcule e imprima o valor total a ser recebido por cada
funcionrio. 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 tambm o maior valor pago no
ms.

70

35
29/11/2016

EXTENSES PARA A DESCRIO DE ALGORITMOS


Estrutura de Dados Homognea (Matriz):
uma matriz uma estrutura que armazena os dados em vrias linhas e
em vrias colunas , ou seja, bidimensional;

apesar de incomum, uma matriz pode ser multidimensional;

sintaxe da especificao de um tipo matriz (PORTUGOL):

tipo <identificador> = matriz [li1 : ls1, li2 : ls2, ..., lin : lsn] <tipo bsico>;
onde:
lid e lsd so valores inteiros e positivos;
lid o limite inferior da dimenso d da matriz;
lsd o limite superior da dimenso d da matriz;
lid lsd;
d {1, 2, ..., n}.

71

EXTENSES PARA A DESCRIO DE ALGORITMOS


Estrutura de Dados Homognea (Matriz):
a especificao indica apenas o modelo;

para efetivar a estrutura no algoritmo necessrio declarar uma


varivel do tipo da estrutura especificada;

declarao de uma varivel do tipo matriz (PORTUGOL):


exemplo:
tipo m = matriz [1 : 3, 1 : 4] real;
m : MAT;

MAT 1 2 3 4 ndices
1
2 valores
3

ndices valores
72

36
29/11/2016

EXTENSES PARA A DESCRIO DE ALGORITMOS


Exerccios:
1. Escreva um algoritmo que leia uma matriz de 10 x 10 valores inteiros,
calcule e imprima a soma dos valores que esto nas posies da matriz
em que a soma do ndice da linha e da coluna seja um nmero 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 so
divisveis por 3.

3. Considerando a mesma concessionria do slide 51, escreva um


algoritmo que calcule e imprima o valor total a ser recebido por cada
funcionrio. Assuma que os totais das vendas e os valores a pagar
devem ser armazenados em uma matriz. O algoritmo deve calcular e
imprimir tambm o segundo maior valor pago no ms.

73

EXTENSES PARA A DESCRIO DE ALGORITMOS


Estrutura de Dados Heterognea (Registro):
um registro uma estrutura formada por um conjunto de variveis de
tipos diferentes ou, eventualmente, iguais;

sintaxe da especificao de um tipo registro (PORTUGOL):

tipo <identificador> = registro


<descrio>
fim registro;

sintaxe da descrio (PORTUGOL):

,
<tipo bsico> : identificador ;
<outro tipo>

74

37
29/11/2016

EXTENSES PARA A DESCRIO DE ALGORITMOS


Estrutura de Dados Heterognea (Registro):
a especificao indica apenas o modelo;

para efetivar a estrutura no algoritmo necessrio declarar uma


varivel do tipo da estrutura especificada;

declarao de uma varivel do tipo registro (PORTUGOL):


exemplo:
tipo r = registro
caractere : NOME; REG
real : SALARIO; NOME
inteiro : IDADE; SALARIO
lgico : SEXO;
fim registro; IDADE SEXO
r : REG;

75

EXTENSES PARA A DESCRIO DE ALGORITMOS


Exerccios:
1. Escreva um algoritmo que leia os dados (nome, sexo e salrio) de um
conjunto de pessoas, identifique e imprima o sexo e o salrio daqueles
que tm renda mensal maior que dois salrios.

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 concessionria do slide 51, escreva um


algoritmo que calcule, armazene e imprima o valor total a ser recebido
por cada funcionrio. O algoritmo deve armazenar e imprimir tambm
o nome e o tempo de servio de cada funcionrio na concessionria.

76

38
29/11/2016

BIBLIOGRAFIA
Bsica:
GUIMARES, A. M., LAGES, N. A. C., Algoritmos e Estruturas de Dados,
LTC, Rio de Janeiro, 1994;

GUIMARES, A. M., LAGES, N. A. C., Introduo Cincia da


Computao, LTC, Rio de Janeiro, 1984;

TREMBLAY, J. P., BUNT, R. B., Cincia da Computao - Uma Abordagem


Algortmica, McGraw-Hill, So Paulo, 1983.

77

BIBLIOGRAFIA
Complementar:
FARRER, H. et al, Algoritmos Estruturados, 3 edio, LTC, Rio de Janeiro,
1999;

FORBELLONE, A. L. V., EBERSPACHER, H. F., Lgica de Programao: A


Construo de Algoritmos e Estrutura de Dados, 3 edio, Pearson,
So Paulo, 2005;

VILARIM, G., Algoritmos: Programao para Iniciantes, 2 edio,


Cincia Moderna, Rio de Janeiro, 2004;

MANZANO, J. A. N. G., OLIVEIRA, J. F., Algoritmos: Lgica para


Desenvolvimento de Programao de Computadores, 26 edio
revisada, rica, So Paulo, 2012;

SOARES, M. V., GOMES, M., M., SOUZA, M. A. F., Algoritmos e Lgica de


Programao, 2 edio revista e ampliada, Cengage Learning, So
Paulo, 2012.
78

39
29/11/2016

FIM

40

Você também pode gostar