Você está na página 1de 9

COMO CONSTRUIR BONS ALGORITMOS

Uma seqncia de passos que pode ser utilizada para que se construa bons algoritmos a
seguinte:
a) ler o problema proposto at entende-lo. Se necessrio, consultar pessoas ( o professor,
um colega, etc.)
b) determinar as variveis de entrada, as de sada, e as outras constantes e variveis que
sero necessrias para resolver o problema. (Essas variveis podero ser modificadas ou
acrescidas de outras durante o processo de criao do algoritmo).
c) determinar de uma forma bem geral quais os passos (fases) necessrios para a soluo
do problema proposto
d) detalhar os passos em instrues ou comandos, ate que tenhamos comando primitivos
definidos no nosso pseudocdigo.
e) escrever o algoritmo
f) Simular (executar com se voc fosse o computador) e corrigir os passos at que se
tenha o algoritmo funcionando corretamente para alguns dados de entrada possveis.
O aprendizado de algoritmos no se consegue a no ser atravs de muitos exerccios.

Algoritmos no se aprendem:
Copiando algoritmos
Estudando algoritmos
Algoritmos s se aprendem:
Construindo algoritmos
Testando algoritmos
1. Escreva um algoritmo que leia vrios valores verifique se ele se encontra no intervalo entre 5
(exclusive) e 20 (inclusive).
2. Escrever um algoritmo que escreve os nmeros pares entre 100 e 200.
3. Escrever um algoritmo que escreve a soma dos nmeros entre 0 e 100.
4. Escrever um algoritmo que escreve a soma dos nmeros pares entre 0 e 100.
5. Escrever um algoritmo que escreve a soma dos nmeros mltiplos de 7 entre 100 e 200.
6. Escrever um algoritmo que escreve a soma dos nmeros que no so mltiplos de 13 entre
100 e 200.
7. Escrever um algoritmo que l 5 valores para a, um de cada vez, e conta quantos destes
valores so negativos, escrevendo esta informao.
8. Escrever um algoritmo que l um nmero no conhecido de valores, um de cada vez, e conta
quantos deles esto em cada um dos intervalos [0, 25], (25, [50] , (50, 75], (75, 100].
9. Escrever um algoritmo semelhante ao anterior que calcula as mdias aritmticas de cada
intervalo e as escreve, juntamente com o nmero de valores de cada intervalo.

10.
Escreva um algoritmo para ler 30 valores, de 3 em 3, onde cada valor representa as trs
medidas A, B, C dos lados de diferentes tringulos, calcular a rea de cada um deles pela
frmula;
________________
REA = S(S-A) (S-B) (S-C), onde S = (A+B+C)/2
11.

Escrever um algoritmo que gera os nmeros de 1000 a 1999 e escreve aqueles que divididos
por 11 do um resto igual a 5.

12.

Escrever um algoritmo que l 5 conjuntos de 3 valores a, b, c, um conjunto por vez e os


escreve assim como foram lidos. Em seguida, ordene-os em ordem decrescente e escreva-os
novamente.

13.

Dadas 8 bolas tendo uma delas peso diferente das demais. Dizer qual essa bola e se ela
mais pesada ou mais leve que as outras e qual o seu peso. Imprimir tambm o peso de todas
as bolas.

14.

Escrever um algoritmo que l 10 valores para n, um de cada vez, todos inteiros e positivos,
e para cada n lido, escreva a tabuada de 1 at n de n.
1 x n = n
2 x n = 2n
...
n x n = n2

15.

Escrever um algoritmo que l um nmero e calcula e escreve quantos divisores ele possui.

16.

Escrever um algoritmo que escreve os nmeros mltiplos de 7 entre 100 e 200, bem como a
soma destes nmeros.

17.

Escreva um algoritmo para ler, calcular e escrever a mdia aritmtica entre dois nmeros.

18.

Escrever um algoritmo que l um nmero no determinados de valores a, todos inteiros e


positivos, um de cada vez, e calcule e escreva a mdia aritmtica dos valores lidos, a
quantidade de valores pares, a quantidade de valores impares, a percentagem de valores
pares e a percentagem de valores mpares.

19.

Escrever um algoritmo que leia 3 valores: a, b, c e calcule e escreva a mdia aritmtica,


harmnica e geomtrica correspondente.
Calcular a mdia aritmtica pela frmula:
a + b + c
3

20.

Calcular a mdia harmnica pela frmula:

3____
1 + 1 + 1
a
b
c

Calcular a mdia geomtrica pela frmula:

3 a. b. c

Escrever um algoritmo que l 3 valores a, b, c que so lados de um tringulo e calcule a


rea deste tringulo.
s( s a)( s b)( s c )

onde s = semi-permetro

21.

Para A e B inteiros e maiores que zero, fazer um algoritmo para o clculo de A elevado
potncia de B e A dividido por B usando multiplicaes sucessivas e subtraes sucessivas,
respectivamente. O algoritmo deve ser capaz de processar vrios pares (A,B).

22. Considerando a igualdade


Soma = 13 + 23 + 33 + ...+ N3
Fazer um algoritmo para ler um valor X inteiro, positivo e maior que zero e obter o
menor valor de N que satisfaa a relao SOMA > X.

23. Escreva um algoritmo para calcular o valor de S, onde os valores de N e P so lidos e S


calculada pela frmula:
S

______N!_______
P! ( N - P) !

24. Escreva um algoritmo para calcular o valor de Sen x, obtido pela srie de Mac-Laurin.
Sen x = x - x3 / 6 + x5 / 120 - x7/5040 + + xn / n!
25. Dada a srie: 2 3 4 9 16 29
simo termo da srie.

54

26. Dada a srie: -2 0 6 8 14 16


calcular o n-simo termo da srie.

99 . Escreva um algoritmo para calcular o n-

22

24

30

32 .

Escreva um algoritmo para

27. Fazer um algoritmo que leia um nmero real X e calcule o seguinte somatrio :
S= X _X_ + _X__ - _X_ + ...
1!
2!
3!
, usando os 20 primeiros termos da srie.
28. Escreva um algoritmo para calcular o valor de X, onde X calculado da seguinte forma :
X = N! + (N-1)! / 2 + (N-2)!/ 3 + (N-3)!/4 + ... + 1 / N
29. Calcular e imprimir a srie :

37 X 38
1

36 X 37
2

35 X 36
3

. . .

1X 2
37

30. Calcular e imprimir a srie :

1
1

2
4

3
9

4
16

. . .

10
100
3

31. Calcular e imprimir a srie :

1!
1

2!
3

3!
7

4!
15

5!
31

. . .

somando-se os 50 primeiros termos. O fatorial ser obtido pela funo FATORIAL que dever
ser definida.
32. Um sistema de equaes limeares da forma :
Ax + By = C
Dx + Ey = F
pode ser resolvido utilizando-se as seguintes frmulas.
X = __EC - BF__
e
Y = __AF - CD__
AE - BD
AE - BD
Escreva um algoritmo para ler o conjunto de coeficientes (A, B, C, D, E, F) e imprimir a
soluo, ou seja X e Y.
33. Escrever um algoritmo que l um valor N e calcula e escreve os 20 primeiros termos da
srie:
1 + 1/x2 + 1/x3 + 1/x4 + ...
34. Escrever um algoritmo que l um conjunto de 4 valores i, a, b, c, onde i um valor inteiro
e
positivo e a, b, c, so quaisquer valores reais e os escreva. A seguir:
Se i = 1 escrever os 3 valores a, b, c em ordem crescente.
Se i = 2 escrever os 3 valores a, b, c em ordem decrescente.
Se i = 3 escrever os 3 valores de forma que o maior valor entre a, b, c fica entre os outros 2.
35. Uma universidade deseja fazer um levantamento a respeito de seu concurso vestibular. Para
cada curso, fornecido o seguinte conjunto de valores :
- cdigo do curso;
- nmero de vagas;
- nmero de candidatos do sexo masculino;
- nmero de candidatos do sexo feminino.
Considere o cdigo do curso sendo zero para indicar o flag de entrada. Fazer um programa
que:
- calcule e imprima, para cada curso, o nmero de candidatos por vaga e a
porcentagem de candidatos do sexo feminino e o cdigo do curso;
- determine e imprima o maior nmero de candidatos por vaga juntamente com o
cdigo do curso (supor que no haver empate);
- calcule e imprima o total de candidatos.
36. Numa fbrica trabalham homens e mulheres divididos em trs classes :
A - os que fazem at trinta peas por mes;
B - os que fazem de 31 a 35 peas por mes;
4

C - os que fazem mais de 35 peas por mes.


A classe A recebe salrio mnimo. A classe B recebe salrio mnimo e mais 3% do salrio
mnimo por pea, acima das 30 iniciais. A classe C recebe salrio mnimo e mais 5% do salrio
mnimo por pea acima das 30 iniciais. Fazer um programa que :
Leia um conjunto de dados com :
o nmero de operrios;
o nmero de peas fabricadas por mes;
o sexo do operrio;
Considere o nmero de operrios sendo zero como flag de entrada.
Calcular e imprimir :
o nmero e o salrio de cada operrio;
o total da folha de pagamento mensal;
o nmero total de peas fabricadas por ms;
a mdia de peas fabricadas pelos homens em cada classe;
a mdia de peas fabricadas pelas mulheres em cada classe;
o nmero do operrio(a) de maior salrio (supor no haver empate).
37. Escreva um algoritmo que leia uma seqncia de valores inteiros positivos e :
a) imprima todos os nmeros;
b) imprima o maior e o menor valor;
c) imprima os valores primos, pares e impares;
38. Escreva um algoritmo que leia uma seqncia de dados (nome, sexo, idade, salrio)
a) imprima todos ps nomes dos funcionrios;
b) imprima o total de homens;
c) imprima o total de mulheres com salrio maior que R$ 500,00;
d) imprima a mdia salarial.
39. Dado uma seqncia de dados (nome, salrio, idade, sexo) dos funcionrios de uma firma,
escreva um algoritmo para:
a) imprimir os nomes das pessoas;
b) imprimir o total de homens e o total de de mulheres;
c) imprimir o maior salrio;
d) imprimir a menor idade;
e) para os salrios menores que R$ 5.000,00 imprima esses salrios acrescido de 20%.
40. Fazer um programa que leia um conjunto de dados contendo a matrcula, as trs notas e a
freqncia de do aluno e calcule e imprima:
a nota final de cada aluno;
a maior e a menor nota final da turma (supor no haver empate);
a nota mdia da turma;
o total dos alunos reprovados;
a porcentagem dos alunos reprovados por freqncia.
para cada aluno: a matrcula, a freqncia, as trs notas, a nota final e o aproveitamento
(A/R); Imprimir a matrcula quando for pertinente.

41. Existem 3 candidatos a uma vaga no Senado. Feita a eleio os votos so colocados em um
arquivo, formando uma seqncia de valores. O voto de cada eleitor foi codificado da
seguinte forma :
1 - voto para o candidato 1
2 - voto para o candidato 2
3 - voto para o candidato 3
4 - voto em branco
5 - voto nulo.
Deseja-se saber :

a) o candidato vencedor;
b) o nmero de votos em branco;
c) e o nmero de eleitores

42. Leia 3 valores DD , MM, AA representando respectivamente (dia, ms e ano). Escreva um


algoritmo para verificar a validade da data. Considere ano bissexto (um ano bissexto
(fevereiro com 29 dias) quando o ano mltiplo de 4 ) e que as datas (DD MM AA) esto
no intervalo de 01 01 93 at 31 12 95.
43. Escrever um algoritmo que l o nmero de um funcionrio, seu nmero de horas
trabalhadas, o valor que recebe por hora, e o nmero de filhos com idade menor do que 14
anos, o valor do salrio famlia por filho e calcula o salrio deste funcionrio.
44. Escrever um algoritmo que l o nmero de um vendedor, o seu salrio-fixo, o tota1 de
vendas por ele efetuadas e o percentual que ganha sobre o total de vendas. Calcular o salrio
tota1 do vendedor. Escrever nmero do vendedor e o salrio total.
45. Uma revendedora de carros usados paga a seus funcionrios vendedores, um salrio fixo por
ms, mais uma comisso tambm fixa para cada carro vendido e mais 5% do valor das
vendas por ele efetuadas. Escrever um algoritmo que l o nmero do vendedor, o nmero de
carros por ele vendidos, o valor tota1 de suas vendas, o salrio fixo e o valor que recebe
por carro vendido e calcula o salrio mensal do vendedor, escrevendo-o juntamente com o
seu nmero de identificao.
46. Escrever um algoritmo que l o nmero de um vendedor de uma empresa, seu salrio fixo e
o total de vendas por ele efetuadas.
Cada vendedor recebe um salrio fixo, mais uma comisso proporcional s vendas por ele
efetuadas.
A comisso de 3% sobre o total de vendas at $ 1.000,00 e 5% sobre o que ultrapassa este
valor.
Escrever o nmero do vendedor, o total de suas vendas, seu salrio fixo e seu salrio total.
47. Escrever um algoritmo que l 3 comprimentos de lados a, b, c e os ordena em ordem
decrescente, de modo que o a represente o maior dos 3 lados lidos.
Determine, a seguir, o tipo de tringulo que estes 3 lados formam, com base nos seguintes
casos escrevendo sempre os valores lidos e uma mensagem adequada:
Se a > b + c no formam tringulo algum.
Se a2 = b2 + c2 formam um tringulo retngulo.
Se a2 > b2 + c2 formam um tringulo obtusngulo.
Se a2 < b2 + c2 formam um tringulo acutngulo.
Se forem todos iguais formam um tringulo equiltero.
Se a = b ou b = c ou a = c ento formam um tringulo issceles
6

48. Escrever um algoritmo que l a hora de incio de um jogo e a hora do final do jogo
(considerando apenas horas inteiras) e calcula a durao do jogo em horas, sabendo-se que
o tempo mximo de durao do jogo de 24 horas e que o jogo pode iniciar em um dia e
terminar no dia seguinte.
49. Escrever um algoritmo que l o nmero de um funcionrio, o nmero de horas por ele
trabalhadas, o valor que recebe por hora, o nmero de filhos com idade inferior a 14 anos, a
idade, o tempo de servio do funcionrio e o valor do salrio famlia por filho.
Calcular o salrio bruto, o desconto do INSS (8,5% do salrio bruto) e o salrio famlia.
Calcular o IR (Imposto de Renda) como segue:
Se Salrio Bruto > 1.500,00 ento IR = 15% do SB
Se Salrio Bruto > 500,00 e SB <= 1.500,00 ento IR = 8% do SB
Se salrio Bruto <= 500,00 ento IR = 0
Calcular o adicional conforme especificado:
Se idade superior a 40 anos ADIC = 2% do SB
Se tempo de servio superior a 15 anos ADIC = 3.5% do SB
Se tempo de servio < 15 anos mas superior a 5 anos e idade maior do que 30 anos ento
ADIC = 1,5% do SB.
Calcular o salrio lquido. Escrever o nmero do funcionrio, salrio bruta, total dos
descontos, adicional e salrio lquido.
50. Escrever um algoritmo que l o nmero de identificao e as 3 notas obtidas por um aluno
nas 3 verificaes e a mdia dos exerccios que fazem parte da avaliao.
Para cada aluno, calcular a mdia de aproveitamento, usando a frmula:
MA = Nl + N2 x 2 + N3 x 3 + ME
7
A atribuio de conceitos obedece tabela abaixo:
Mdia de Aproveitamento
>= 9.0
>= 7.5 e < 9.0
>= 6.0 e < 7.5
>= 4.0 e < 6.0
< 4.0

Conceito
A
B
C
D
E

O algoritmo deve escrever o nmero do aluno, suas notas, a mdia dos exerccios, a mdia de
aproveitamento, o conceito correspondente e a mensagem: "APROVADO" se o conceito for A,
B, ou C e "REPROVADO" se conceito for D ou E.
51. Uma empresa decidiu conceder um aumento de salrios a seus funcionrios de acordo com
a tabela abaixo:
Salrio Atual
ndice De Aumento
0 - 400,00
15%
400,01 - 700,00
12%
700,01 - 1.000,00
10%
1.000,01 - 1.800,00
7%
1.800,01 - 2.500,00
4%
acima de 2.500,00
sem aumento

Escrever um algoritmo que l, para cada funcionrio, o seu nmero e o seu salrio atual e
escreve o numero do funcionrio, seu salrio atua1, o percentual de seu aumento e o valor do
salrio corrigido.
52. Escrever um algoritmo que l um nmero no determinado de conjuntos de valores, cada
um formado pelo nmero de um aluno e suas 3 notas. Calcular, para cada aluno, a mdia
ponderada com pesos respectivos de 4 para a maior nota e 3 paras as outras duas. Escrever o
nmero do aluno, suas 3 notas, a mdia calculada e uma mensagem "aprovado" se nota >=
5 ou "reprovado" para nota < 5.
53. Escrever um algoritmo que l, para cada vendedor de uma empresa, o seu nmero de
identificao, seu salrio fixo e o total de vendas em reais por ele efetuadas. Cada vendedor
recebe um salrio fixo e uma comisso proporcional s vendas por ele efetuadas. A
comisso de 3% sobre o total de vendas at $ 1.000,00 e 5% sobre o que ultrapassa este
valor. Escrever, para cada vendedor, o seu nmero de identificao, o tota1 de suas vendas,
seu salrio fixo e seu salrio total.
54. Escrever um algoritmo que l 5 conjuntos de 2 valores, o primeiro representando o nmero
de um aluno e o segundo representando a sua altura em centmetros. Encontrar o aluno mais
alto e o mais baixo e escrever seus nmeros, suas alturas e uma mensagem dizendo se o
mais alto ou o mais baixo.
55. Escrever um algoritmo que gera e escreve os 5 primeiros nmeros perfeitos. Um nmero
perfeito aquele que igual a soma dos seus divisores. (Ex.: 6 = l + 2 + 3; 28 = 1 + 2 + 4 +
7 + 14 etc.).
56. Supondo que a populao de um pas A seja da ordem de 90.000.000 de habitantes com uma
taxa anual de crescimento de 3,1% e que a populao de um pas B seja de 200.000.000 de
habitantes com uma taxa anua1 de crescimento de 1,5%, escrever um algoritmo que calcula
quantos anos sero necessrios para que a populao do pas A ultrapasse a do pas B,
mantidas as taxas atuais de crescimento.
57. Escrever um algoritmo que l um vetor V[6] e o escreve. Conte, a seguir quantos valores de
V so negativos e escreva esta informao.
58. Escrever um algoritmo que l um vetor X(100) e o escreve. Substitua, a seguir, todos os
valores nulos de X por 1 e escreva novamente o vetor x
59. Escrever um algoritmo que l um vetor C[50] e o escreve. Encontre, a seguir, o maior
elemento de C e o escreva.
60. Escrever um algoritmo que l um vetor N[80] e o escreve. Encontre, a seguir, o menor
elemento e a sua posio no vetor N e escreva: o menor elemento de n = , M, e a sua
posio = , P.
61. Escrever um a1goritmo que l um vetor A[15] e o escreve. Ordene, a seguir os elementos de
A em ordem crescente e escreva novamente A.
62. Escrever um algoritmo que l um vetor N[20] e o escreve. Troque, a seguir, o 1 elemento
com o ltimo, o 2 com o penltimo, etc., at o 10 com o 11 e escreva o vetor N assim
modificado.
63. Escrever um algoritmo que l um vetor K(20) e o escreve. Troque, a seguir, os elementos de
ordem mpar com os de ordem par imediatamente seguintes e escreva o vetor k modificado.
8

64. Escrever um algoritmo que l um vetor G[20] (gabarito) e a seguir l um nmero no


determinado de nmeros de alunos e vetores R[20] (resposta), um nmero e um vetor R de
cada vez. O nmero representa o nmero de um aluno e o vetor R representa o conjunto de
respostas daquele aluno. Para cada aluno calcular o n de acertos e ca1cular a nota.
nota = nmero de acertos * 0.5
Escrever o n do aluno, sua nota e a mensagem "aprovado" se tiver nota maior ou igual a 5
ou "reprovado" se a nota for menor do que 5.
65. Escrever um algoritmo que l, um vetor V[20] e o escreve. Compacte, a seguir, o vetor Y,
retirando dele todos os valores nulos ou negativos e escreva o vetor compactado.
66. Escrever um algoritmo que l um vetor V(20) e o escreve. Retire, a seguir, os elementos em
duplicata, compactando o vetor Y, e escrevendo o vetor compactado.
67. Escreva um algoritmo que l um conjunto de 30 valores e os coloca em 2 vetores conforme
forem pares ou impares. O tamanho dos vetores de 5 posies. Se algum vetor estiver
cheio, escreve-lo. Terminada a leitura escrever o contedo dos 2 vetores. Cada vetor pode
ser preenchido tantas vezes quantas for necessrio.
68. Escreva um algoritmo que l uma matriz M(5,5) e calcula as somas:
a) da linha 4 de M
b) da coluna 2 de M
c) da diagonal principal
d) da diagonal secundria
e) de todos os elementos da matriz
Escreva estas somas e a matriz.
69. Escrever um algoritmo que l uma matriz M(6,6) e calcula as somas das partes hachuriadas.

Escrever a matriz M e as somas calculadas


70. Escrever um algoritmo que l uma matriz M(10,10) e a escreve. Troque, a seguir:
a linha 2 com a linha 8.
a coluna 4 com a coluna 10
a diagonal principal com a secundria
a linha 5 com a coluna 10
Escreva a matriz assim modificada.
71. Escrever um algoritmo que l uma matriz M(6,6) e um valor A e multiplica a matriz M pelo
valor A e coloca os valores da matriz multiplicados por A em um vetor de V(36) e escreve
no final o vetor V.
Escrever um algoritmo que l uma matriz M(5,5) e cria 2 vetores SL(5), SC(5) que contenham
respectivamente as somas das linhas e das colunas de M. Escrever a matriz e os vetores criados.