Você está na página 1de 25

ALGORITMOS

Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

1. INTRODUO AO ALGORITMO

1. INTRODUO AO ALGORITMO
1) CONCEITOS BSICOS
a) Computadores fazem aquilo que mandamos e no o que queremos
b) No deve haver nenhuma ambigidade ou possibilidade de interpretaes alternativas
2) DIVIDIR PARA CONQUISTAR
a) Programao no exatamente uma tarefa fcil
b) Pode ser simplificada dividindo-se sucessivamente o problema em problemas menores
c) Duas grandes divises na elaborao de uma soluo em programao
i) Fase de resoluo de problemas (elaborao do algoritmo da soluo)
ii) Fase de implementao da soluo (em uma linguagem de programao)
(1) Se o algoritmo preciso, a implementao direta
3) ALGORITMO
a) Sequncia ordenada, e sem ambigidade, de passos que levam soluo de um dado
problema
b) Exemplos comuns:
i) Receita de cozinha, indicaes sobre como chegar a um determinado endereo,
manual de montagem de bricolagem, kits de aeromodelos, etc.
c) Caractersticas essenciais:
i) Devem ser simples
ii) No devem ter ambigidades
iii) Devem estar numa ordem cuidadosamente definida
iv) Devem resolver o problema em um nmero finito de passos
4) EXEMPLO INICIAL
a) Algoritmo para substituir uma lmpada queimada: inicialmente dois passos
i) Remova a Lmpada queimada
ii) Coloque a nova lmpada
b) Esses dois passos pressupem conhecimento de muitos passos intermedirios
i) Deve-se ser preciso e detalhado o suficiente para quem for executar a operao
consiga a executar apenas com as instrues fornecidas
c) Detalhamento do passo 4.1.i. do algoritmo acima:
i) Posicione a escada debaixo da lmpada queimada
ii) Suba na escada at que a lmpada possa se alcanada
iii) Gire a lmpada queimada no sentido anti-horrio at que se solte
iv) Desa a escada
d) Detalhamento do passo 4.1.ii do algoritmo acima
i) Escolha uma nova lmpada de mesma potncia da queimada
ii) Suba a escada
iii) Posicione a nova lmpada no soquete
iv) Gire-a no sentido horrio at que ela ser firme
v) Desa a escada
vi) Acenda a luz para testar a lmpada
vii) Se no ascender, repita desde o passo 4.3.ii
(1) O algoritmo seria mais eficiente se o passo 4.3.ii fosse executado antes do passo
4.4.i, isto , subir a escada j com a nova lmpada em mos
e) O passo 4.4.i pode ser detalhado da seguinte maneira
i) Selecione uma lmpada
Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

1. INTRODUO AO ALGORITMO

ii) Verifique a potncia da Lmpada


(1) Se a potncia no a mesma, repita 4.5.i at encontrar uma que sirva
(a) descarte a lmpada
(b) selecione uma nova lmpada
5) CONCEITOS IMPORTANTES:
a) Deciso: Se (a condio for satisfeita), Ento (faa isso), Seno (faa aquilo)
b) Repetio condicional: Repita at que (a condio seja satisfeita, ento continue)
c) Repetio simples (Repita um determinado nmero de vezes, ento continue)
d) O algoritmo para substituio de lmpadas passa a ser:
1. Posicione a escada debaixo da lmpada queimada
2. Selecione uma nova lmpada para substituio
Repita at encontrar uma com potncia adequada (E funcionando)
Verifique a potncia da lmpada (E se est funcionando)
Se a potncia no for a mesma (OU no estiver funcionando)
Descarte a lmpada selecionada
Selecione uma lmpada
3. Repita at que a lmpada possa ser alcanada
Suba um degrau da escada
4. Repita at que a lmpada saia do soquete
Gire a lmpada no sentido anti-horrio
5. Posicione a nova lmpada no soquete
6. Repita at que a lmpada saia do soquete
SE (condio)
Gire a lmpada no sentido horrio
ENTO (ao 1)
7. Repita at alcanar o cho
SENO (ao 2)
Desa um degrau
FIM
SE
8. Guarde a escada

6) DETALHAMENTO DO ALGORITMO
a) Pode continuar quase que indefinidamente
b) As operaes indicadas devem ser simples e sem ambigidade
c) As decises necessrias devem ser imediatas
d) A ordem na qual os passos devem ser seguidos deve ser claramente expressa
e) O detalhamento deve prosseguir at chegar ao nvel de entendimento do Executor
f) As linguagens de programao tm um nmero limitado de instrues
i) Os algoritmos devem ser expressos nos termos dessas instrues (comandos)
7) Exerccios: Utilize apenas a estrutura Repita at
exemplo
a) Elabore um algoritmo representando sua sada de casa pela manh
i) Inicie pelo passo dormindo na cama. Inclua as atividades matinais normais
b) Elabore um algoritmo para trocar um pneu furado.
i) Admita que esto disponveis um macaco, chave de roda, e pneu bom. O macaco
est abaixado, o carro est parado e o tringulo j foi colocado
c) Elabore um algoritmo para fazer pipoca numa panela de fogo
i) Admita que esto disponveis todos os ingredientes, fogo a gs e fsforo
d) Desenvolva um algoritmo para substituir um vidro quebrado de uma janela
i) Em uma lista parte, descreva os materiais utilizados
e) Elabore um algoritmo para ir de nibus de um ponto a outro dentro da cidade
i) Admita que est em um ponto, que paga em dinheiro e deve receber troco
f) Elabore um algoritmo para realizar uma chamada de telefone fixo
i) Admita que um telefone fixo, funcionando perfeitamente; voc est prximo dele,
e no repetir a ligao se o telefone estiver ocupado ou no atender
Cincia dos computadores: uma abordagem algortmica

desafio
Tremblay & Bunt

2. DADOS, TIPOS DE DADOS E OPERAES PRIMITIVAS

2. DADOS, TIPOS DE DADOS E OPERAES PRIMITIVAS


1) TIPOS DE DADOS
a) Computadores lidam com diversos tipos de dados
i) Cada tipo de dado representado de forma diferente no computador
ii) Cada tipo de dado requer um diferente tipo de instruo para processamento
2) NMEROS INTEIROS (ou nmeros de ponto fixo)
a) No tem componentes decimais nem ponto ou vrgula
a) Podem ser negativos ou positivos (ex: -7; 485; -1815)
3) NMEROS REAIS
a) Tem componente decimal e utiliza o ponto* como separador decimal (*formato EUA)
b) Fraes so representadas por aproximaes decimais
c) Podem ser negativos ou positivos (ex: 2.34; -1.582; 0.034; 125.2)
4) NOTAO CIENTFICA (ou de Ponto Flutuante)
a) Computadores trabalham com nmero limitado de dgitos, em geral 6 a 7
i) Nmeros de preciso dupla operam com 15 ou 16 dgitos
ii) O nmero de dgitos disponveis varia de mquina para mquina
a) Soluo: representao do nmero em potncias de 10:
i) 3863213632 representado como 3.863 x 109
(1) Obs: o primeiro inteiro e o segundo real
i) O nmero de dgitos conservados depende da exatido requerida no clculo
a) Procedimento de converso de nmero inteiro ou real para notao cientfica:
i) Adicione 1 potncia de 10 a cada casa que movemos o ponto para a esquerda
ii) Decida o nmero de dgitos que deseja reter
3863213632 = .3863214 x 1010
iii) Arredonde o ltimo dgito
0,00000002852 = .286 x 10-7
a) O ponto decimal ocupa sempre a primeira posio
i) Por isso ele no armazenado junto ao nmero
a) Nomenclatura: Frao (.286) e expoente (-7)
5) CADEIA DE CARACTERES
a) uma sequncia de itens conhecidos pelo computadores
a) Exemplo: A, B, C, a, b, c, 1, 2, 3, @, #, , ), *, etc.
i) Obs: os nmeros armazenados como caracteres se comportam como letras
a) Em geral so armazenados em computadores entre apstrofos (aspas simples)
i) So os chamados delimitadores de caracteres
ii) A cadeia de caracteres pode ter qualquer tamanho, mas na prtica, pode haver um
limite, por exemplo 255 caracteres incluindo os espaos
iii) Exemplo: Estado de So Paulo, 23/04/2011, 34 + 12 = 46
a) Quando necessrio incluir o apstrofo na cadeia, inclui-se mais um apstrofo antes:
i) Joana DArk representado como Joana DArk
a) O computador armazena duas informaes:
i) A cadeia propriamente dita, excluindo os apstrofos e
ii) O nmero de caracteres da cadeia
6) DADOS LGICOS
a) S tem dois valores: verdadeiro ou falso
7) PONTEIRO
a) Armazena um determinado Endereo de Memria
Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

2. DADOS, TIPOS DE DADOS E OPERAES PRIMITIVAS

8) CLASSIFICAO DOS TIPOS DE DADOS PRIMITIVOS


DADOS

Numrico

Real

Decimal

Cadeia

Lgico

Ponteiro

Inteiro

Ponto Flutuante

9) OPERAES COM OS ELEMENTOS DE DADOS NUMRICOS


a) Quatro operaes bsicas com dados numricos:
i) Soma, Subtrao, Multiplicao, Diviso
(1) Operaes adicionais: Exponenciao e Radiciao
ii) Operaes com dados no numricos sero vistas posteriormente
a) Representao das operaes
i) Soma e subtrao utilizam a representao usual: + e
ii) Multiplicao utiliza o asterisco * em lugar do smbolo usual x
iii) Diviso utiliza a barra / em lugar do smbolo usual
iv) Exponenciao no tem representao usual, utiliza-se o ^ ou
v) Radiciao utiliza-se a representao da exponenciao ^ ou com valores <1
a) Resultados de operaes com os diferentes tipos de dados numricos
i) Os diferentes tipos de dados numricos so escritos por ns e armazenados pelo
computador em diferentes formas
iii) Nmeros Reais
(1) Soma, subtrao, multiplicao e diviso: resultam em nmero real
(2) Exponenciao e radiciao: resultam em nmero real
iv) Nmeros Inteiros:
(1) Soma, subtrao e multiplicao: resulta em inteiro
(2) Diviso: resulta em nmero inteiro: 10 / 4 = 2
(a) ateno transformao: 10*1.0 / 4 = 2.5
(3) Exponenciao: resulta em nmero inteiro
(4) Radiciao: resulta em nmero real (ateno transformao)
v) Operaes com diferentes tipos de dados (inteiro com real):
(1) Resultam sempre em nmero real

Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

2. DADOS, TIPOS DE DADOS E OPERAES PRIMITIVAS

10) EXERCCIOS
a) Dar o tipo de cada uma das seguintes constantes
a) 613
e) -3.012x1015
b) 613.0
f) 17x1012
c) -613
g) -28.3x10-33
d) 613
h) fim de questo
1.1. Dar o resultado e o tipo de cada uma das seguintes expresses
a) 5^2 + 3
b) 6 + 19 0.3
c) 3.0^5.0 +1
d) 1 / 4 + 2
e) 29.0 / 7 + 4
f) 3 / 6.0 - 7
1.2. Expressar como um nmero real na forma de ponto flutuante, com seis dgitos
significativos, os seguintes valores:
3.1415926535897932
a)
2.7182818284590452
b) e
6,022141791023
c) Constante de Avogadro
9,1093897 10-31
d) Massa eltron (kg)
-8
e) dimetro do tomo (cm) ~ 10
30856775800000
f) valor de parsec (km)

Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

3. VARIVEIS E EXPRESSES

3. VARIVEIS E EXPRESSES
1) MANIPULAO DE DADOS
a) Atravs de expresses mais elaboradas das operaes fundamentais (+, -, *, /, )
b) Varivel: entidade que possui um valor e tem um nome
i) O valor da varivel pode variar durante a execuo do programa
(1) Exemplo: teorema de Pitgoras: a2 = b2 + c2 onde a, b e c so variveis
c) Expresses: frmulas definidas por relaes expressas, aplicadas a clculos especficos
i) Permitem determinar valor de uma varivel
(1) Exemplo:  =   +  
d) Variveis permitem especificao de frmulas gerais de clculo
(1) Variveis tm nomes e podem receber valores diferentes no decorrer do clculo
(2) Em um determinado instante s pode ter um nico valor
Caso/Varivel
a
b
c
a
5
4
3
b
13
5
12
e) Usualmente utilizam-se nomes mais significativos para variveis, como:
i) LADO1, LADO2, HIPOTENUSA - isso torna o programa mais legvel e depurvel
f) Regras para nomear variveis (variam um pouco entre as linguagens de programao)
i) Devem iniciar sempre por uma letra
ii) Podem conter letras, nmeros e alguns caracteres especiais
iii) No podem conter brancos (espaos) utiliza-se eventualmente o underline: _
g) Exemplo de nomes vlidos de variveis:
i) TOTAL, AREA_TRIANGULO, UM_NOME_MUITO_EXTENSO,
h) Exemplo de nomes invlidos de variveis
i) 2ANDAR (no comea com letra), SEGUNDO ANDAR (inclui espao), X+Y (inclui +)
i) Exemplo de expresso utilizando variveis
i) AREA_TRIANGULO = BASE * ALTURA / 2
ii) Se, em diversos momentos, BASE e ALTURA tiverem valores diferentes,
AREA_TRIANGULO ter resultados diferentes nesses momentos
2) TIPOS DE VARIVEIS
a) So equivalentes aos tipos de constantes: Inteiro, Real, Cadeia (texto), Lgico, Ponteiro
b) Uma varivel deve ser de um nico tipo
i) Esse tipo atribudo no incio do programa ou dinamicamente no decorrer deste
(1) Aps definio do tipo, deve-se manter esse tipo no programa todo
ii) Se um valor de outro tipo for atribudo a essa varivel, ocorrer um erro (tipos
incompatveis) ou converso de tipos (tipos compatveis) ver item 4.
3) OPERAO DE ATRIBUIO
a) Forma usual para atribuir um valor a uma varivel ser utilizado o smbolo
i) Exemplos: LADOA 16; LADOB 13; SALDO -320.40
ii) A varivel mantm o valor atribudo at eventual nova atribuio
iii) A atribuio uma operao destrutiva pois o valor anterior perdido
(1) O valor armazenado em uma posio da memria (palavra)

Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

3. VARIVEIS E EXPRESSES

4) CONVERSES DE TIPO
a) Uma varivel de um tipo s armazena valores daquele tipo;
b) Se um valor de outro tipo for atribudo a ela ocorrer:
i) Um erro, se os tipos forem incompatveis (texto x nmero x ponteiro x lgico);
ii) Uma converso de tipo do valor, se os tipos forem numricos (Real x Inteiro);
c) Exemplos de operaes de atribuio:
i) VARIAVEL_INTEIRA VALOR_REAL : o valor real ser convertido para Inteiro;
ii) VARIAVEL_REAL VALOR_INTEIRO : o valor inteiro ser convertido para Real;
iii) Outras atribuies resultaro em erro
(1) VARIAVEL_INTEIRA VALOR CADEIA : ocorrer erro de incompatibilidade;
(2) VARIAVEL_LOGICA VALOR_REAL : ocorrer erro de incompatibilidade;
(3) VARIAVEL_CADEIA VALOR INTEIRO : ocorrer erro de incompatibilidade;
(4) Etc.
iv) Obs: converso de Inteiro para Real no altera o valor calculado,
mas converso de Real para Inteiro altera o valor (arredonda ou trunca);
v) Nmeros reais ocupam mais memria e tempo de processamento da CPU;
5) EXPRESSES
a) Operao de Atribuio () pode ter qualquer expresso do lado direito;
b) Expresso uma combinao de variveis, constantes e operadores;
i) O resultado da avaliao da expresso atribudo varivel indicada;
(1) Varivel Expresso
(2) INT 3 + 16 + 8 (onde INT uma varivel tipo Inteiro);
ii) A Expresso pode tambm conter variveis, com valores definidos prviamente:
(1) TERMO1 13.6 + 7.4
(21.0)
(20.02)
TERMO2 0.7 * 28.6
RESULTADO TERMO1/TERMO2
(1.048951)
(2) As variveis TERMO1 e TERMO2 mantm seus valores aps o processo;
(3) Todos os termos do lado direito da expresso devem ter seus valores definidos
previamente antes da operao de atribuio final (RESULTADO)
6) MODIFICANDO UM VALOR ARMAZENADO
a) O valor de uma varivel pode ser alterado na execuo do programa:
i) X 0 ... A 0 ... X A + 1
(resulta em X=1)
b) Uma varivel pode ter seu valor alterado na prpria expresso:
i) X 0 ... X X + 1
c) Muitas linguagens utilizam como smbolo de atribuio o sinal =
i) X = X + 1
(o que no tem sentido do ponto de vista matemtico)
7) PRIORIDADE DOS OPERADORES
a) a prioridade convencional da matemtica
i) Parenteses: ( )
ii) Atribuio de Sinal: + ou iii) Exponenciao e Radiciao: ^ ou
iv) Multiplicao e Diviso: * ou /
v) Soma e Subtrao: + ou -

Cincia dos computadores: uma abordagem algortmica

Os Parnteses agrupam blocos que devem


ser executados em primeiro lugar.
Exponenciao e atribuio de sinal so
aplicados da direita para a esquerda.
Operadores de mesma prioridade so
executados na ordem em que aparecem,
da esquerda para a direita.

Tremblay & Bunt

3. VARIVEIS E EXPRESSES

8) AVALIAO DE EXPRESSES
a) a aplicao direta das regras de prioridade
b) Exemplo: -3*7+23/4-6:
-3 * 7 + 2 3 / 4 - 6
8
-21

-19

-25

c) Expresses com significados alterados por parnteses:


i) 12 - 2 / 2 + 3
e
(12 - 2) / (2 + 3)
d) Em expresses mais complexas recomendvel o uso de parnteses, mesmo quando
desnecessrios do ponto de vista exclusivo do clculo, para facilitar a leitura da
expresso (e simplificar a depurao do programa);
9) FUNES EMBUTIDAS
a) Complementam as operaes convencionais da matemtica, simplificando o clculo;
b) Algumas funes embutidas teis:
i) ABS(e) ........ : valor absoluto de uma expresso real ou inteira |e|
ii) SQRT(e) ...... : raiz quadrada de um valor maior que zero
iii) TRUNC(e) ... : valor truncado
|T| |e|
iv) ROUND(e) .. : valor arredondado |T| |e + 0,5|
v) LOG(e) ........ : logartmo na base e
vi) LOG10(e).... : logartmo na base 10
vii) EXP(e) ........ : exponencial de e
viii) SIN(e) ......... : seno de e
ix) COS(e) ........ : coseno de e
x) TAN(e) ........ : tangente de e
10) ENTRADA E SADA
a) Depende em alto grau da linguagem de programao e do sistema de computador;
b) Aqui sero utilizados abstraes desses comandos:
i) Leia: para leitura de valores em algum dispositivo de entrada (e atribuio a variveis);
ii) Escreva: para mostrar os resultados em algum dispositivo de sada (tela, impressora);
c) Comando Leia: Forma do comando: Leia(lista de entrada):
i) A lista de entrada definine as variveis s quais os valores devem ser atribudos, na
mesma ordem em que so encontrados no fluxo de entrada de dados:
(1) Leia(A, B, C): o primeiro valor atribudo varivel A, o segundo B, etc.
d) Exemplo: fluxo de entrada com os seguintes valores: -16, 3, 7, 21, 16, 0, 4, 8, 1.
i) Leia(A, B, C)
A-16, B3, C7
ii) Leia(D, E, F, G) D21, E16, F0, G4
iii) Leia(X, Y)
X8, Y1
e) Importante: uma operao destrutiva (destri o valor anterior da varivel) e
necessrio manter a compatibilidade de tipos (variveis declaradas);
Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

3. VARIVEIS E EXPRESSES

f) Comando Escreva: Forma do comando: Escreva(lista de sada):


i) A lista de sada pode ser qualquer varivel, expresso ou constante;
g) Exemplo:
NOTA173.0 NOTA265.0 NOTA394.0 NOTA487.0
MEDIA(NOTA1+NOTA2+NOTA3+NOTA4)/4.0
Escreva(MEDIA)
o resultado seria: 79.75
Escreva(NOTA1, NOTA2, NOTA3, NOTA4, MEDIA)
o resultado seria: 73.0 65.0 94.0 87.0 79.75
Escreva(Notas Individuais: , NOTA1, NOTA2, NOTA3, NOTA4)
Escreva(Mdia Final: MEDIA)
o resultado seria:
Notas individuais: 73.0 65.0 94.0 87.0
Mdia Final: 79.75
h) Pode-se imprimir tambm constantes e variveis tipo cadeia:
i) NOME_DADODONALDO
SOBRENOMEPATO
Escreva(SOBRENOME, ,, NOME_DADO), 3)
o resultado seria: PATO, DONALDO 3
i) Em muitas linguagens possvel incluir uma expresso como parte da lista de sada:
i) Escreva(NOTAS INDIVIDUAIS:, NOTA1, NOTA2, NOTA3, NOTA4)
Escreva(MDIA FINAL:, (NOTA1+NOTA2+NOTA3+NOTA4)/4.0)
11) EXERCCIOS
a) D o valor da varivel RESULTADO aps a execuo da seguinte sequncia de operaes
obs: todas as variveis so reais
i) RESULTADO3.0 * 6
ii) X2.0
Y3.0
RESULTADOXY X
iii) RESULTADO4
X2
RESULTADORESULTADO*X
b) D o valor de cada uma das expresses inteiras seguintes:
i) 16 * 6 3 * 2
iv) 3 + 2 * (18 42)
ii) -23
v) 22 * 3
iii) (28 + 3 * 4) / 4
vi) 8 30 / 6
c) Suponha que A, B e C sejam variveis reais e que I, J e K sejam variveis inteiras.
Dados: A = 4.0, B = 6.0 e I = 3, qual seria o valor final dos comandos seguintes:
C=
K=
i) CA * B - I
iv) KTRUNC(B/A+4.7)
K=
J=
ii) K I / 4 * 6
v) JROUND(A/ (5/I))
C=
K=
iii) CB / A + 1.5
vi) KABS(A-B) * 2 + 1
d) Escreva as seguintes expresses matemticas como expresses de computador:
i)

ii)

iii)

v)  +  

+1

vi)   +   









vii)

iv)  + 

viii)

Cincia dos computadores: uma abordagem algortmica

 




 ! 


Tremblay & Bunt

4. DESCRIO DE ALGORITMOS

10

4. DESCRIO DE ALGORITMOS
1) ALGORITMO:
a) Primeiro passo para a preparao de um programa de computador;
b) uma seqncia de passos em uma ordem cuidadosamente definida;
c) Passos devem ser expressos claramente e sem ambigidade;
d) Auxilia a documentao posterior do programa;
2) DESCRIO NARRATIVA:
a) Mtodo direto de expressar um algoritmo (p/ex: receita de bolo);
b) Linguagem natural prolixa, imprecisa e pouco confivel;
c) Risco de interpretao incorreta e/ou perda de informao;
d) No o meio mais adequado para expressar algoritmos de programao;
e) utilizada no estgio de documentao do programa.
3) FLUXOGRAMA
a) Smbolos usuais:
INCIO

CLCULO

ENTRADA

DECISO

SADA

Outros smbolos:
Ver Word ou
Pesquisar Internet

b) Exemplo de fluxograma simples:


INCIO

NOTA1, NOTA2,
NOTA3, NOTA4.

Leia Notas

MEDIA
(NOTA1+NOTA2+
NOTA3+NOTA4)/4

NO

MEDIA
<5?

Calcule MEDIA

SIM

VOCE FOI
REPROVADO COM
NOTA , MEDIA

VOCE PASSOU COM


NOTA , MEDIA

Verifique se a NOTA < 5

Produza sada

FIM

c) Recurso visual para transmitir idias:


i) Mostra a lgica de um algoritmo;
ii) Enfatiza os passos individuais e suas interconexes.
d) Em programao, pode mostrar a LGICA, mas obscurece a ESTRUTURA;
i) Utiliza-se, ento, o Algoritmo e, onde necessrio esclarecer a lgica, o Fluxograma;

Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

4. DESCRIO DE ALGORITMOS

11

4) LINGUAGEM ALGORTMICA:
a) Linguagem simplificada de programao que inclui:
i) A descrio da prosa e
ii) A conciso do fluxograma.
b) O resultado similar a muitas linguagens de programao:
i) A passagem do Algoritmo para uma linguagem especfica operao quase direta;
c) A escolha da linguagem de programao a ser utilizada depende principalmente da(s):
i) Natureza da aplicao em particular;
ii) Caractersticas desejadas na linguagem;
iii) Disponibilidade da linguagem no sistema de computadores a ser utilizado.
d) Exemplo: Dados o comprimento dos lados de um tringulo retngulo (variveis LADO1 e
LADO 2), determine e imprima o comprimento do terceiro lado (HIPOTENUSA). Suponha
que todas as variveis sejam inteiras.
NARRATIVA

IMPLEMENTAO EM LINGUAGEM ALGORITMICA

1. Ler dados conhecidos

1. Leia (LADO1, LADO2)

2. Calcular os quadrados dos


lados conhecidos

2. Q1 LADO12
Q2 LADO22

3. Calcular o comprimento do
terceiro lado

3. HIPOTENUSA SQRT(Q1+Q2)
(obs: SQRT() indica operao Raiz Quadrada)

4. Sair resultados

4. Escreva (LADOS=, LADO1, LADO2, HIPOTENUSA)

5. Terminar

5. Sada

ALGORITMO
1. [Ler dados conhecidos]
Leia (LADO1, LADO2)
2. [Calcular os quadrados dos lados conhecidos]
Q1LADO12
Q2LADO22
3. [Calcular o comprimento do terceiro lado]
HIPOTENUSA SQRT(Q1+Q2)
4. [Sair resultados]
Escreva (LADOS=, LADO1, LADO2, HIPOTENUSA)
5. [Terminar]
Sada

e) O algoritmo expresso como uma sequncia de passos numerados:


i) Cada passo inicia-se com uma breve descrio entre colchetes;
ii) Abaixo vem um comando, ou srie de comandos, que descrevem as aes do passo;
iii) Os comandos so executados na ordem estabelecida;
iv) O comando Sada termina a execuo do algoritmo no ponto onde encontrado;
(1) Sada representa o fim lgico do algoritmo;
(2) Um algoritmo pode ter diversos fins lgicos;
(3) O fim fsico representado pelo smbolo .

Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

4. DESCRIO DE ALGORITMOS

12

5) RASTREANDO UM ALGORITMO:
a) Rastrear executar manualmente, com dados representativos, os passos do algoritmo;
i) Registra-se manualmente (planilha eletrnica/editor de texto) os valores tomados
pelas variveis em cada passo do algoritmo;
b) Exemplo: supondo que as medidas conhecidas so: LADO1=3, LADO2=4
i) Executamos o algoritmo preenchendo a tabela abaixo:
Passo
1
2
3
4

LADO1
3
3
3
3

LADO2
4
4
4
4

Q1
?
9
9
9

Q2
?
16
16
16

HIPOTENUSA
?
?
5
5

Sada
?
?
?
LADOS= 3, 4, 5

Obs: o smbolo ? utilizado para mostrar que a varivel ainda no recebeu valor neste ponto.

6) METODOLOGIA DE SOLUO SUMRIO


a) Assegurar-se do entendimento completo das especificaes do problema:
i) Indicar sada esperada para diversas amostras de dados de entrada;
b) Formular esboo geral do algoritmo, despreocupando-se com detalhes:
i) Assegurar que a estratgia de soluo est correta;
ii) Rastrear o algoritmo com diversas amostras de dados;
c) Identificar e listar variveis necessrias execuo:
i) Incluir nome, tipo e indicao do propsito da varivel;
ii) Essa lista pode ser aumentada ou diminuda no decorrer do desenvolvimento;
d) Retornar aos passos individuais detalhando cada um deles:
i) Verificar a cada desdobramento se os novos passos executam a funo proposta;
e) Terminada a verso inicial, rastreie cuidadosamente todos os passos do algoritmo:
i) Utilize diversas amostras de dados de entrada;
f) Validado o algoritmo, implemente em uma linguagem de programao apropriada.
i) Obs.1: para problemas simples, essa abordagem parece ser desnecessria, mas
importante dominar a tcnica para a abordagem de problemas mais complexos.
ii) Obs.2: nem sempre existe um algoritmo adequado para determinados tipos de
problemas. Se no conseguimos constru-los no implica que no existem.
7) EXERCCIO: RASTREAMENTO DO CALCULO DE MDIAS
a) Preparar algoritmo para ler temperatura na escala Celsius e imprimir equivalente em
#
Fahrenheit: " = & + 32
$
b) Preparar algoritmo para ler nome e sobrenome e imprimir sobrenome e nome:
i) Exemplo: entrada: FULANO, DE TAL
sada: DE TAL, FULANO
c) Preparar algoritmo para calcular o desvio padro de cinco nmeros (amostral)
+

i) ) = *!.- $03+ /0 /  onde x1, x2, ..., x5 so valores reais e / a mdia

d) Preparar algoritmo para ler os valores a, b e c e imprimir o valor do discriminante


i) = b2-4ac e todos os valores so reais
e) Preparar algoritmo para ler a quantidade de cada item comprado e calcular a conta:
i) Entrada de quantidades: (Hamburguer, Cheeseburguer, Fritas, Refrigerante, Shake)
ii) Preos: Hamburguer: 6,50; Cheese: 7,50; Fritas: 3,50; Refrigerante: 1,0; Shake: 5,0
f) Preparar algoritmo para ler custo de fbrica do carro e imprimir preo ao consumidor:
i) Preo = custo + 45% impostos + 12% lucro revendedor (sobre custos + impostos)
g) Preparar algoritmo para ler comprimento dos 3 lados do tringulo e calcular a rea:
8+889
i rea=56 6 71 6 72 6 73 onde 6 =

Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

5. APLICAES DE ALGORITMOS

13

5. APLICAES DE ALGORITMOS
1) RELATRIO DE NOTAS DE ALUNOS
a) Calcular a mdia final do aluno a partir das notas parciais e seus respectivos pesos:
b) Variveis do programa:
i) NOME (cadeia),
Nome do estudante
ii) LABORATORIO (inteiro)
Nota do laboratrio
peso 20%
iii) PROVA_PARCIAL (inteiro)
Nota da prova parcial
peso 30%
iv) EXAME_FINAL (inteiro)
Nota do exame final
peso 50%
v) MEDIA (real)
Mdia final do estudante
c) A soluo em linguagem narrativa direta:
i) Ler o nome do estudante e suas notas em cada componente da mdia,
ii) Calcular a mdia ponderada dos componentes
iii) Imprimir o nome, as notas e a mdia final do estudante
d) O Algoritmo resultante direto:
1. [Ler dados de entrada]
Leia(NOME, LABORATORIO, PROVA_PARCIAL, EXAME_FINAL)
2. [Calcular mdia]
MEDIA 0.2*LABORATORIO+0.3*PROVA_PARCIAL+0.5*EXAME_FINAL
3. [Imprimir resultados]
Escreva(Nome: , NOME)
Escreva(Nota do Laboratrio: , LABORATORIO)
Escreva(Nota da Prova Parcial: , PROVA_PARCIAL)
Escreva(Nota do Exame Final: , EXAME_FINAL)
Escreva(Mdia Final: , MEDIA)
4. [Terminar]
Sada

a) Observao: quando se multiplica um valor inteiro por um valor real o resultado real;
A formatao da sada ser abstrada: altamente dependente da linguagem escolhida;
b) Rastreando o Algoritmo: Para verificar se o algoritmo est funcionando corretamente,
utilizam-se dados de entrada cujos resultados so conhecidos, e verifica-se sua sada;
i) importante testar condies extremas dos dados (condies de contorno), como,
por exemplo, todas as notas iguais a 100 e todas as notas iguais a zero;
c) Usando dados de entrada abaixo, verifique o resultado:
i) Moacir Rodolfo, 72, 68, 65;
ii) A mdia final calculada ser 67.3;
d) Quando os testes no indicam erro, duas coisas podem estar ocorrendo, mas nunca
saberemos com certeza qual delas a verdadeira:
i) O algoritmo no contm erros;
ii) Os erros do algoritmo no foram detectados nos testes;
e) Erros frequentemente resultam de circunstncias que no foram previstas. Uma
mentalidade sabotadora auxilia um pouco nessa fase de testes do programa.

Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

5. APLICAES DE ALGORITMOS

14

2) MEDINDO A TAXA DE INFLAO


a) O algoritmo deve ler o nome do produto, o preo no ms atual, o preo no ms anterior
e calcular a taxa de inflao desse produto nesse ms. O resultado deve ser apresentado
em dois formatos: diferena algbrica (absoluta) e diferena percentual.
b) A primeira tentativa de soluo, em linguagem natural:
1. Ler a descrio do item, o preo atual e o preo anterior;
2. Calcular a diferena algbrica no preo;
3. Calcular a diferena percentual no preo;
3. Imprimir resultados
4. Terminar

c) As variveis definidas previamente para a soluo do problema e sua descrio;


i) Esse passo muito importante em algoritmos mais complexos ou extensos;
1. ITEM (cadeia)

Descrio do item,

2. PRECO_ATUAL (real)

Preo pago neste ms

3. PRECO_ANTERIOR (real)

Preo pago no ms anterior

3. DIFER_ALGEB (real)

Diferena algbrica

4. DIFER_PERC (real)

Diferena Percentual

d) O algoritmo final de implementao direta


1. [Ler dados de entrada]
Leia(ITEM, PRECO_ATUAL, PRECO_ANTERIOR)
2. [Calcular a diferena algbrica dos preos]
DIFER_ALGEB PRECO_ATUAL PRECO_
3. [Calcular a diferena percentual dos preos]
DIFER_PERC DIFER_ALGEB / PRECO_ANTERIOR * 100
4. [Imprimir resultados]
Escreva(Item Comprado: , ITEM)
Escreva(Preo no ms atual: , PRECO_ATUAL)
Escreva(Preo no ms anterior: , PRECO_ANTERIOR)
Escreva(Diferena algbrica: , DIFER_ALGEB)
Escreva(Diferena percentual: , DIFER_PERC)
5. [Terminar]
Sada

e) Testando o algoritmo com trs conjuntos de dados


i) Pacote de Queijo, 6.54, 6.00
ii) Feijo, 2.30, 2.40
iii) Leite, 2.00, 1.70

Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

5. APLICAES DE ALGORITMOS

15

3) EXERCCIOS DO CAPTULO
a) Voc foi encarregado pelos organizadores de uma competio internacional de preparar
um servio de "traduo simultnea" para resultados da competio relatados em
unidades mtricas. Desenvolver algoritmos para manusear os seguintes eventos:
i) Converter resultados de salto em altura, relatados em metros, para ps e polegadas
(ft e in) (1 p vale 12 polegadas e 1 metro vale 39.37 polegadas).
ii) Dado o tempo para uma corrida de 100 metros, calcular seu tempo para 100 jardas.
Supor que o atleta corra a uma velocidade constante (1 jarda = 3 ps ou 0.9144 metros).
b) Uma lista de taxas de cmbio de 1977, para troca de moeda estrangeira, fornece a
seguinte tabela de equivalncia:
(1) 100 Francos franceses = 21.55 dlares canadenses
(2) 1 Dlar americano = 1.06 dlares canadenses
(3) 100 Marcos alemes = 43.20 dlares canadenses
(4) 1 Libra inglesa = 1.84 dlares canadenses
(5) 100 coroas suecas = 24.25 dlares canadenses .
(6) 100 dracmas gregos = 2.95 dlares canadenses
i) Desenvolver algoritmos para fazer as seguintes converses;
(a) Ler uma quantidade em francos franceses e imprimir o equivalente em
dlares canadenses.
(b) Ler uma quantidade em dlares americanos e imprimir o equivalente em
ambos, coroas suecas e francos franceses.
(c) Ler uma quantidade em dracmas gregos e imprimir o equivalente em libras
inglesas.
(d) Ler uma quantidade em dlares canadenses e imprimir o equivalente em
ambos, dlares americanos e marcos alemes.
c) A Companhia de Carros Usados Joo Honesto paga a seus empregados um salrio de
R$ 6.000,00 por ms mais uma comisso de R$ 500,00 para cada carro vendido mais
abono de 5% do valor da venda. Todo ms a companhia prepara um registro para cada
vendedor, contendo seu nome, o nmero de carros vendidos e o valor total das vendas.
Preparar um algoritmo para calcular e imprimir o salrio do vendedor num dado ms.
Testar o algoritmo completamente, utilizando um conjunto apropriado de dados.
d) Trs massas, m1, m2 e m3 , esto separadas por distncias r12, r13 e r23, como mostra a
Figura abaixo. Se G a constante de gravitao universal, a energia de coeso mantendo
a massa das partculas juntas dada pela frmula:
r12

m1

m2
r13

r23

=+ = =+ =9 = =9
: =;<
+
+
?
>+
>+9
>9

m3

i) Preparar um algoritmo para ler valores de m1, m2 e m3; r12, r13 e r23; calcular e
imprimir a energia de coeso, imprimindo tambm os valores iniciais dados. Para
massa em quilogramas e distncia em metros, G = 6.67 X 10-11 N. m2 /kg2 . Os
valores de m1, m2 e m3, so fornecidos no primeiro registro de dado e os valores de
r12, r13 e r23 so fornecidos no segundo. Assumir que todos os dados so fornecidos
como valores reais.

Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

5. APLICAES DE ALGORITMOS

16

e) Um sistema de equaes lineares da forma:

ax + by = c
dx + ey = f

pode ser resolvido utilizando-se as seguintes frmulas:


/=


@




@

A = 


i) Preparar um algoritmo para ler o conjunto de coeficientes (a, b, c e d, e, f) e


imprimir a soluo (x e y). Existem casos para os quais este algoritmo no funciona?
f) O custo de seguro contra granizo numa comunidade tpica de fazendeiros 3.5% do
valor de cobertura solicitado por acre, multiplicado pelo nmero de acres plantados.
Supondo que as possibilidades de colheitas sejam limitadas a trigo, aveia e cevada,
preparar um algoritmo para ler a cobertura desejada e o nmero de acres plantados
para cada uma das trs plantaes e calcular o custo total do prmio do seguro para
este cliente.
g) Recentemente, conduziu-se uma experincia para determinar a acelerao da gravidade
em Saskatoon. Deixou-se cair uma bola a partir do repouso, do alto de vrios edifcios. O
tempo gasto para atingir o solo foi registrado em cada caso. Um total de cinco medidas
foram feitas, com os seguintes resultados:
Altura do prdio (m)
69

Tempo para atingir o solo (s)

3.74
4.84
6.64
5.13
3.11

114
216
129
48

i) Preparar um algoritmo para calcular a acelerao gravitacional g, a partir destes


dados, utilizando a frmula:
1
A = BC 
2

onde y representa a distncia percorrida pela bola e t o tempo gasto. Cada um dos
cinco casos mostrados dar um valor de g; o "melhor valor" para g para a localidade
de Saskatoon, - com base nestes resultados, dado pela mdia aritmtica das cinco
medidas. O algoritmo deve ler os dados fornecidos e imprimir o valor mdio
encontrado. O formato de entrada : altura-tempo, altura-tempo, altura-tempo, etc.
de cada lanamento.

Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

5. APLICAES DE ALGORITMOS

17

h) Embora a velocidade da luz seja constante, no importando a velocidade relativa da


fonte e do observador, o comprimento de onda e a freqncia mudam - um efeito
previsto pela primeira vez por Johann Doppler e conhecido como o "Efeito Doppler". O
comprimento de onda emitido por uma fonte movendo-se em direo ao observador
com uma velocidade D comprimido por uma quantidade F, que dada pela frmula:
DF

onde  a velocidade da luz. Suponha que um avio esteja voando em direo a uma
estao de rdio com uma velocidade constante de 360 km/h (104 cm/s). Se a estao
de rdio est emitindo num comprimento de onda de 30 metros, a mudana no
comprimento de onda devido ao Efeito Doppler :
F =

F =

GH


+-I J/ 9+-M J


9+-NO J/

= 10-3cm

Ento, o piloto do avio deve ajustar o receptor para um comprimento de onda de 3,000
cm menos 10-3cm, ou seja, 2999.999 cm, enquanto est se aproximando da estao, e
ento para o comprimento de onda de 3000.001 cm enquanto estiver se afastando da
estao (observao: utilizar padro americano: ponto separando casas decimais).
i) Preparar um algoritmo para ler o coprimento de onda emitido pela estao e a
velocidade de aproximao do avio, e ento, imprimir o valor real de com o qual
o piloto receber o sinal.

Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

6. ESTRUTURAS DE DECISO E DE CONTROLE

18

6. ESTRUTURAS DE DECISO E DE CONTROLE

6.1. JUSTIFICATIVA
a) Algoritmo simples resolvem problemas simples:
i) Entrada clculo sada
ii) No envolve tomada de decises no decorrer do processo
b) Em situaes de repetio ou mais complexas necessrio a utilizao de duas estruturas:
i) Deciso: Se-Ento-Seno (ou simplesmente estrutura Se)
ii) Repetio: Repita At que uma CONDIO seja satisfeita
c) Exemplo: calcular a nota de 250 alunos, indicando Aprovado ou Reprovado
i) Repita At terminarem os dados:
(1) calcule a mdia.
(2) Se MEDIA < 5 Ento Escreva(Reprovado) Seno Escreva(Aprovado)
6.2. SELEO DE ALTERNATIVAS
a) A Unidade Aritmtica e Lgica do processador o crebro do computador
i) A Unidade Aritmtica executa os clculos necessrios;
ii) A Unidade Lgica fornece a habilidade de tomar decises;
Fluxograma de uma
deciso tpica
Verdadeiro

MDIA < 5

Escreva(Reprovado)

Falso

Escreva(Aprovado)

iii) A deciso especificada numa expresso lgica: MEDIA < 5;


iv) O resultado dessa expresso pode ser verdadeiro ou falso;
v) O fluxo do programa alterado conforme o resultado da expresso;
6.2.1. Construo Se Ento Seno
a) Se condio
Se MEDIA < 5
Ento (alternativa verdadeira) faa isso
Ento Escreva(Reprovado)
Seno (alternativa falsa) faa aquilo
Seno Escreva(Aprovado)
d) Cada componente dessa estrutura pode ser consideravelmente mais complexo;
i) Para tornar mais clara a estrutura, utiliza-se recuos de texto a cada componente;
e) O conjunto de operadores utilizados para expressar condies indicado abaixo:
Operador
>
<
=

Significado
Maior do que
Menor do que
Igual a
Maior do que ou igual a
Menor do que ou igual a
No igual a (diferente de)

Cincia dos computadores: uma abordagem algortmica

Os operadores podem ser aplicados


em contextos numricos e no
numricos. Num contexto no
numrico, por exemplo, podem ser
utilizados na classificao em
ordem alfabtica

Tremblay & Bunt

6. ESTRUTURAS DE DECISO E DE CONTROLE

19

f) A estrutura Se-Ento-Seno tem uma entrada e uma sada apenas:


ENTRADA

Construo com
alternativa Falsa
Verdadeira

Avaliar
CONDIO

Processar
ALTERNATIVA
VERDADEIRA

Falsa
Processar
ALTERNATIVA
FALSA

Apenas uma das alternativas processada


SADA

g) Eventualmente, pode no existir uma ao especial se a condio falsa (ou verdadeira):


Construo sem
alternativa Falsa
Verdadeira

Avaliar
CONDIO

Falsa

Processar
ALTERNATIVA
VERDADEIRA
Apenas uma das alternativas processada
SADA

h) Exemplo: Algoritmo para ler dois valores, determinar o maior deles e imprimir o valor
com uma mensagem de identificao. Assumir que todas as variveis so inteiras.
1. [Ler dados de entrada]
Leia(VALOR1, VALOR2)
2. [Determinar o maior]
Se VALOR1 > VALOR2
Ento MAIOR VALOR1
Escreva(Primeiro valor o maior)
Seno MAIOR VALOR2
Escreva(Segundo valor o maior)
3. [Imprimir resultados]
Escreva(Valor maior: , MAIOR)
4. [Terminar]
Sada

i) Anlise do algoritmo:
i) Passo 1: L dois valores, por exemplo 2 e 6, e atribui esses valores s variveis
VALOR1 e VALOR2, respectivamente;
ii) Passo 2: A condio VALOR1 > VALOR2 avaliada:
(1) Se a condio for verdadeira, o valor da varivel VALOR1 atribudo varivel
MAIOR, e o algoritmo imprime Primeiro valor o maior;
(2) Se a condio for falsa, o valor da varivel VALOR2 atribudo varivel MAIOR
e o algoritmo imprime Segundo valor o maior;
iii) Passo 3: o algoritmo imprime o valor da varivel MAIOR precedido de Valor maior:
Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

6. ESTRUTURAS DE DECISO E DE CONTROLE

20

j) Linguagem Estruturada:
i) Recuos equivalentes para estruturas equivalentes;
ii) Recuos maiores para estruturas subordinadas.
k) Exemplo: Em uma prvia eleitoral, um candidato s escolhido se o total de seus votos
excede a soma de votos dados a todos os outros candidatos. Se nenhum candidato
escolhido numa rodada particular, o candidato com o menor nmero de votos
eliminado e um novo escrutnio conduzido. Suponha que em uma rodada particular,
quatro candidatos estejam concorrendo. O algoritmo deve determinar o resultado dessa
votao particular. A votao e nomes de cada candidato so fornecidos em ordem
decrescente de votos, em dois registros de entrada.
1. [Ler dados de entrada]
Leia(VOTOS1, VOTOS2, VOTOS3, VOTOS4)
Leia(NOME1, NOME2, NOME3, NOME4)
2. [Verificar o resultado da votao]
Se VOTOS1 > (VOTOS2 + VOTOS3 + VOTOS4)
Ento Escreva(NOME1, Nomeado com, VOTOS1, Votos)
Seno Escreva(Sem nomeao , NOME4, Eliminado da votao)
3. [Terminar]
Sada

l) Rastreamento do Algoritmo:
i) Entrada:
764, 419, 307, 175
Marcelo, Marcos, Lindolfo, Alexandre
Passo
1
2

VOTOS1
764
764

VOTOS2
419
419

VOTOS3
307
307

VOTOS4
175
175

NOME1
Marcelo
Marcelo

NOME2
Marcos
Marcos

NOME3
Lindolfo
Lindolfo

NOME4
Alexandre
Alexandre

CONDIO
falsa

SADA
Sem nomeao
Alexandre
Eliminado da votao

Obs: a construo do algoritmo completo para verificar resultados da votao muito mais complexo.

6.2.2. Estruturas Se-Ento-Seno aninhadas (ou embutidas)


a) Em algumas aplicaes, uma (ou as duas) das alternativas da estrutura pode(m) envolver
outras decises. Por exemplo, determinar o maior de trs valores dados A, B e C.
Primeiramente, verifica-se se A maior que B, e ento, compara-se o resultado com C.
1. [Ler os valores dados]
Leia(A, B, C)
2. [Determinar o maior valor, comparando os pares]
Se A > B
Ento Se A > C
A diagramao estruturada
Ento MAIOR A
facilita a compreenso e o
Seno MAIOR C
rastreamento da estrutura
Seno Se B > C
lgica do algoritmo.
Ento MAIOR B
Seno MAIOR C
3. [Imprimir o maior valor]
Escreva(Maior valor: , MAIOR)
4. [Terminar]
Sada
Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

6. ESTRUTURAS DE DECISO E DE CONTROLE

21

m) Observao: a diagramao estruturada (recuos) pode alterar o sentido da estrutura:


Se Condio 1

Se Condio 1

Ento Se Condio 2
Ento Sequencia 1
Seno Sequncia 2

Ento Se Condio 2
Ento Sequencia 1
Seno Sequncia 2

Obs: pode no haver comandos em uma das condies

n) Exemplo: Gratificao de natal baseada em dois critrios: nmero de horas-extras


trabalhadas e o nmero de horas que o empregado faltou ao trabalho. Cada empregado
tem um registro com o nome, nmero de horas extras trabalhadas e o nmero de horas de
faltas. A frmula para calcular o prmio subtrair de suas horas-extras dois teros das
horas de faltas e distribuir o prmio e acordo com a tabela abaixo. Observao: nenhum
funcionrio pode cair em mais de uma categoria.
Hora extra 2/3 faltas
> 40 horas
> 30 mas 40 horas
> 20 mas 30 horas
> 10 mas 20 horas
10 horas

Prmio em Reais
5000
4000
3000
2000
1000

Varivel
NOME
H_EXTRAS
FALTAS
H_BASE
PREMIO

Tipo Descrio
Cadeia nome do funcionrio
Inteiro horas-extras trabalhadas
Inteiro horas faltadas ao trabalho
Real
horas-base para o prmio
Real
valor do bnus a ser pago

1. [Ler os valores dados]


Leia(NOME, H_EXTRAS, FALTAS)
2. [Calcular o valor da hora-base para enquadramento no prmio]
H_BASE H_EXTRAS FALTAS * 2 / 3.0
3. [Determinar o valor do prmio]
Se H_BASE > 40
Ento PREMIO 5000
Seno Se H_BASE > 30
Ento PREMIO 4000
Seno Se H_BASE > 20
Ento PREMIO 3000
Seno Se H_BASE > 10
Ento PREMIO 2000
Seno PREMIO 1000
4. [Imprimir resultados]
Escreva(Prmio para , NOME, R$, PREMIO)
5. [Terminar]
Sada

i) Suponha que um empregado tenha trabalhado 50 horas-extras e faltado apenas 3.


Qual o valor do Prmio? Calcule o valor de H_BASE: 48;
ii) Suponha que outro empregado tenha trabalhado 30 horas-extras e faltado 12 horas.
Qual o valor do Prmio? Calcule o valor de H_BASE: 22;

Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

6. ESTRUTURAS DE DECISO E DE CONTROLE

22

o) Exemplo: Algoritmo para ler trs nmeros A, B e C, e imprimir o maior e o menor valor.
Assumir que os trs valores so diferentes.
1. [Ler os valores dados]
Leia(A, B, C)
2. [Determinar o maior e o menor valor]
Se A < B
Ento Se A < C
Ento MIN A
Se B > C
Ento MAX B
Seno MAX C
Seno MIN C
MAX B
Seno Se A > C
Ento MAX A
Se B > C
Ento MIN C
Seno MIN B
Seno MAX C
MIN B

Varivel
A, B, C
MIN
MAX

Tipo
Inteiro
Inteiro
Inteiro

Descrio
3 nmeros diferentes
menor valor
maior valor

A < B, C
A<B>C
A<B<C
C<A<B
B, C < A
C<B<A
B<C<A
B<A<C

3. [Imprimir resultados]
Escreva(Maior valor:, MAX, Menor valor:, MIN)
4. [Terminar]
Sada

6.2.3. Sumrio do comando Se-Ento-Seno (ou simplesmente Se):


a) Ferramenta til e poderosa para a resoluo de problemas;
p) Praticamente todas as linguagens de programao tem alguma forma desse comando;
q) A deciso fornece duas alternativas de desvio do programa;
i) No necessrio ter aes nas duas alternativas uma delas pode ser omitida;
r) Comandos Se aninhados (embutidos) permite testar mltiplas condies;
i) Excesso de condies podem levar a confuses;
s) Escrita estruturada muito importante para a clareza das construes;
i) fundamental nas construes aninhadas;
t) Comentrios e espaamentos adequados so contribuies importantes para a clareza
da documentao do algoritmo.

Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

6. ESTRUTURAS DE DECISO E DE CONTROLE

23

EXERCCIOS
1.a. Modificar o algoritmo RELATRIO (abaixo) de modo que cada linha impressa contenha A
mdia final e uma mensagem de resultado: Aprovado / Reprovado.
1.b. Modificar o algoritmo RELATRIO (abaixo) de modo que haja atribuio de Conceito de
acordo com sua nota final. Assumir que os conceitos so baseados na tabela abaixo.
1. [Ler dados de entrada]

RELATRIO

Leia(NOME, LABORATORIO, PROVA_PARCIAL, EXAME_FINAL)


2. [Calcular mdia]
MEDIA 0.2*LABORATORIO+0.3*PROVA_PARCIAL+0.5*EXAME_FINAL
3. [Imprimir resultados]
Escreva(Nome: , NOME)
Escreva(Nota do Laboratrio: , LABORATORIO)
Escreva(Nota da Prova Parcial: , PROVA_PARCIAL)
Escreva(Nota do Exame Final: , EXAME_FINAL)
Escreva(Mdia Final: , MEDIA)
4. [Terminar]
Sada

Variveis do programa:
NOME
(cadeia)
LABORATORIO
(inteiro)
PROVA_PARCIAL (inteiro)
EXAME_FINAL
(inteiro)
MEDIA
(real)
Mdia
80 100
70 79
60 69
50 59
< 50

Conceito
A
B
C
D
E

2. Preparar um Algoritmo para ler a base e a altura de um tringulo e imprimir a rea deste
tringulo (rea = base * altura / 2). Durante a preparao desse algoritmo, possvel que se
cometa um erro e entrem valores negativos para a base ou para a altura. Isto indesejvel,
pois a rea impressa ser negativa. Prever no algoritmo a possibilidade de verificar valores
negativos na entrada. Se um valor negativo encontrado, imprimir uma mensagem
identificando este valor como base ou altura (isso permite corrigir o erro mais facilmente).
Testar o algoritmo cuidadosamente. Tomar cuidado no caso de ambos os valores serem
negativos. Isso produziria uma rea positiva e o erro no seria detectado.
3. Revisar o algoritmo MAX_3 para levar em conta a possibilidade de entrarem valores iguais.
1. [Ler os valores dados]
Leia(A, B, C)

MAX_3

2. [Determinar o maior valor, comparando os pares]


Se A > B
Ento Se A > C
Ento MAIOR A
B, C < A
B< A < C
Seno MAIOR C
Seno Se B > C
A, C < B
Ento MAIOR B
Seno MAIOR C
A<B<C
3. [Imprimir o maior valor]
Escreva(Maior valor: , MAIOR)
4. [Terminar]
Sada

Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt

6. ESTRUTURAS DE DECISO E DE CONTROLE

24

4. Preparar um algoritmo para ler os comprimentos dos trs lados de um tringulo (S1, S2, S3)
e determinar que tipo de tringulo temos, com base nos casos abaixo. Sejam A o maior dos
lados de S1, S2 e S3 e B e C os outros dois. Ento:
Se A B + C
Se A2 = B2 + C2
Se A2 > B2 + C2
Se A2 < B2 + C2

nenhum tringulo formado


um tringulo retngulo formado
um tringulo obtusngulo formado
um tringulo acutngulo formado

5. A Secretaria do Meio Ambiente mantm trs listas de indstrias conhecidas por serem
altamente poluentes da atmosfera. Os resultados de vrias medidas so combinados para
formar o que chamado de ndice de poluio. Isto controlado regularmente.
Normalmente os valores caem entre .05 e .25 (Bom). Se o valor atingir .30 (Ruim), as
indstrias da lista A sero chamadas a suspender as operaes at que os valores retornem
ao intervalo normal. Se o ndice atingir .40 (Pssimo), as indstrias da lista B sero
notificadas tambm. Se o ndice exceder .50 (Crtico), indstrias de todas as trs listas sero
avisadas para suspenderem as atividades. Preparar um algoritmo para ler o ndice de
poluio e indicar as notaes apropriadas.
6. Preparar um algoritmo para ler um valor inteiro e determinar se ele par ou impar.
Generalizao: ler m e n e determinar se m divisvel por n (m e n so inteiros).
7. Modificar o algoritmo NOMEAO de modo que no seja necessrio classificar previamente
os resultados da votao. Assumir que no existem candidatos com o mesmo nmero de
votos, isto , os votos so diferentes entre si.
1. [Ler dados de entrada]
Leia(VOTOS1, VOTOS2, VOTOS3, VOTOS4)
Leia(NOME1, NOME2, NOME3, NOME4)

NOMEAO

2. [Verificar o resultado da votao]


Se VOTOS1 > (VOTOS2 + VOTOS3 + VOTOS4)
Ento Escreva(NOME1, Nomeado com, VOTOS1, Votos)
Seno Escreva(Sem nomeao , NOME4, Eliminado da votao)
3. [Terminar]
Sada

Cincia dos computadores: uma abordagem algortmica

Tremblay & Bunt