Académique Documents
Professionnel Documents
Culture Documents
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
1. INTRODUO AO ALGORITMO
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
Numrico
Real
Decimal
Cadeia
Lgico
Ponteiro
Inteiro
Ponto Flutuante
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)
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)
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 -
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
3. VARIVEIS E EXPRESSES
ii)
iii)
v) +
+1
vi) +
vii)
iv) +
viii)
!
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
NOTA1, NOTA2,
NOTA3, NOTA4.
Leia Notas
MEDIA
(NOTA1+NOTA2+
NOTA3+NOTA4)/4
NO
MEDIA
<5?
Calcule MEDIA
SIM
VOCE FOI
REPROVADO COM
NOTA , MEDIA
Produza sada
FIM
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
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
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
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.
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.
5. APLICAES DE ALGORITMOS
14
Descrio do item,
2. PRECO_ATUAL (real)
3. PRECO_ANTERIOR (real)
3. DIFER_ALGEB (real)
Diferena algbrica
4. DIFER_PERC (real)
Diferena Percentual
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.
5. APLICAES DE ALGORITMOS
16
ax + by = c
dx + ey = f
@
@
A =
3.74
4.84
6.64
5.13
3.11
114
216
129
48
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.
5. APLICAES DE ALGORITMOS
17
F =
GH
= 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.
18
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)
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)
19
Construo com
alternativa Falsa
Verdadeira
Avaliar
CONDIO
Processar
ALTERNATIVA
VERDADEIRA
Falsa
Processar
ALTERNATIVA
FALSA
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
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.
21
Se Condio 1
Ento Se Condio 2
Ento Sequencia 1
Seno Sequncia 2
Ento Se Condio 2
Ento Sequencia 1
Seno Sequncia 2
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
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
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
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
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
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