Você está na página 1de 10

FACULDADE DE COMPUTAO E INFORMTICA

BACHARELADOS EM CINCIA DA COMPUTAO E SISTEMAS DE INFORMAO E


TECNOLOGIA EM ANLISE E DESENVOLVIMENTO DE SISTEMAS
Introduo Programao Aula 18
TEORIA: ESTRUTURA DE REPETIO EXERCCIOS
Nossos objetivos nesta aula so:

Exercitar a construo de algoritmos com comandos de


repetio.
Utilizar comandos de repetio aninhados (um dentro do
outro).

A referncia para esta aula o Captulo 8 (Estrutura de repetio,


pginas 199 a 225) do nosso livro-texto:
Piva Jr., D. et al. Algoritmos e Programao de Computadores. Rio de
Janeiro: Elsevier, 2012.
No deixem de ler este captulo aps a aula de hoje!

Nas aulas anteriores vimos os comandos de repetio enquanto/faa e o comando de


repetio faa/enquanto, utilizados quando no sabemos previamente o nmero de
vezes que a repetio dever ser executada.

Sendo que a caracterstica principal da estrutura com teste no final faa/enquanto


que a instruo ou o bloco verdade executado pelo menos uma vez,
independentemente do resultado da <condio>. Essa estrutura normalmente
utilizada para a validao de dados de entrada.

O terceiro tipo de estrutura de repetio que vimos foi a repetio com varivel de
controle, a estrutura ou comando-para, utilizado quando se deseja repetir, um nmero
fixo de vezes, determinado conjunto de instrues.

Esse comando-para possui outra diferena em relao s estruturas de teste no incio


enquanto/faa e de teste no final faa/enquanto, que o fato das informaes de
inicializao da varivel de controle, condio ou critrio de parada, bem como a
atualizao, incremento ou decremento da varivel de controle fiquem todas na mesma
linha do comando/para.
1

Assim como as estruturas de seleo, as estruturas de repetio tambm podem conter


o encadeamento de um tipo de estrutura de repetio com outro tipo de estrutura de
repetio, chamada de estrutura de repetio encadeada ou aninhada. A existncia
destas ocorrncias vai depender do problema a ser resolvido.

Resumo das sintaxes das estruturas em pseudocdigo e em Java.


Estruturas Lgicas de Repetio
Pseudocdigo

Java

Teste no Incio

enquanto <condio> faa

while ( condio ) {

instruo 1

instruo 1;

instruo 2

instruo 2;

...

instruo n

instruo n;

Com Varivel de
Controle

Teste no Final

fim-enquanto
faa

}
do {

instruo 1

instruo 1;

instruo 2

instruo 2;

...

...

instruo n

instruo n;

enquanto <condio>

} while ( condio ) ;

para <varivel> de < valor inicial> at


<valor final> passo <atualizao> faa

for ( variavel = valor inicial; condio ;


atualizao ) {

instruo 1

instruo 1;

instruo 2

instruo 2;

...

instruo n

instruo n;

Encadeada
ou Aninhada

fim-para

}
Combinao das estruturas anteriores. Depende da lgica do problema

EXERCCIO TUTORIADO
Vimos na primeira aula da nossa disciplina, o Algoritmo de Euclides para calcular o mximo
divisor comum (MDC) entre dois nmeros MDC(a,b):

Dividir a por b, obtendo o resto r


Substituir a por b
Substituir b por r
Continuar a diviso de a por b at que a no possa mais ser dividido por b. Neste caso, a
o mdc.

Escreva o algoritmo em pseudocdigo que calcula o MDC (mximo divisor comum) entre dois
nmeros naturais.

EXERCCIO COM DISCUSSO EM DUPLAS


Escreva um algoritmo em pseudocdigo que calcula o MMC (mnimo mltiplo comum) entre
dois nmeros naturais

EXERCCIO TUTORIADO
Escreva um algoritmo em pseudocdigo que l um nmero inteiro n natural, encontrar e exibir
um nmero inteiro m que corresponde ao nmero n invertido. Por exemplo, se n igual a 123, a
sada ser m igual a 321.

EXERCCIO COM DISCUSSO EM DUPLAS


Escreva um algoritmo que l um nmero inteiro e positivo representando um nmero binrio,
determine o seu equivalente decimal.
Exemplo: Dado 10010 a sada ser 18, pois
1. 2 4 + 0. 2 3 + 0. 2 2 + 1. 2 1 + 0. 2 0 = 18

ATIVIDADES DE LABORATRIO
Escreva um algoritmo em visuAlg que l um nmero natural, e verifica se o mesmo primo ou
no.

Implemente o algoritmo anterior em Java.

ATIVIDADES DE LABORATRIO
Faa um algoritmo em Java que exiba todos os nmeros primos existentes entre N1 e N2
inclusive, em que N1 e N2 so nmeros naturais fornecidos pelo usurio.

EXERCCIOS EXTRA-CLASSE
1. Em um campeonato de futebol existem cinco times e cada um possui onze jogadores. Faa
um programa em Java que receba a idade, o peso e a altura de cada um dos jogadores,
calcule e mostre:
a. A quantidade de jogadores menores de idade (idade inferior a 18 anos);
b. A mdia das idades dos jogadores de cada time;
c. A mdia das alturas de todos os jogadores do campeonato; e
d. A porcentagem de jogadores com mais de 80Kg entre todos os jogadores do
campeonato.
2. Faa um programa que leia um nmero no determinado de pares de valores [m,n], todos
inteiros e positivos, um par de cada vez, e que calcule e mostre a soma de todos os nmeros
inteiros entre m e n (inclusive). A digitao de pares terminar quando m for maior ou igual
a n.
3. Dado base inteiro e expoente natural, calcular baseexpoente.
4. Dado n, imprimir os n primeiros naturais mpares.
Exemplo: Para n = 4 a sada dever ser 1, 3, 5, 7
5. No correio local h somente selos de 3 e de 5 centavos. A taxa mnima para
correspondncia de 8 centavos. Faa um algoritmo que determina o menor nmero de
selos de 3 e de 5 centavos que completam o valor de uma taxa dada.
6. Este problema tem por objetivo multiplicar inteiros sem, obviamente, utilizar o operador (*).
Estaremos assim ensinando o computador a multiplicar inteiros ou seja : dados n e m
inteiros, determine n * m.
7. Dados m, n inteiros positivos com n0. Ento existem nicos q e r inteiros, com 0 r n e
satisfazendo m = n * q + r. O inteiro q dito quociente da diviso inteira de m por n e r
dito o resto dessa diviso. Dados m e n inteiros, utilize a frmula acima para ensinar ao
computador as operaes m/n e m%n.

8. Escreva um algoritmo que leia um nmero inteiro e positivo representando um nmero


decimal, determine o seu equivalente binrio.
Exemplo: Dado 18 a sada dever ser 10010.
9. Dizemos que um nmero natural n palndromo se:
1 algarismo de n igual ao seu ltimo algarismo,
2 algarismo de n igual ao penltimo algarismo e assim sucessivamente.
Exemplo: 567765 e 32423 so palndromos
567675 no palndromo.
Faa um algoritmo que leia um nmero inteiro e positivo n, verifica se palndromo e
imprime uma mensagem dizendo se o nmero lido palndromo ou no palndromo.

1
A
10. A sequncia : x n 1 x n , x 0 1, n N ; converge para a raiz quadrada de A, sendo A>0.
2
x

Calcule um valor aproximado da raiz quadrada de um nmero dado A, atravs de 5


iteraes.
11. Fazer um algoritmo que calcule o valor de e x atravs da srie: e x x 0

x1 x 2 x 3

.
1! 2! 3!

De modo que o mesmo difira do valor calculado atravs da funo EXP de, no mximo,
0.0001. O valor de x deve ser lido de uma unidade de entrada. O algoritmo dever escrever
o valor de x, o valor calculado atravs da srie, o valor dado pela funo EXP. O valor e =
2.71828182845904.
12. Escreva um algoritmo que, dados dois nmeros inteiros positivos m e n, determina e
escreve, entre todos os pares de nmeros inteiro (x,y) tais que x m e y n, um par para o
qual o valor da expresso xy x2 + y seja mximo e calcula e escreve tambm esse mximo.
13. Um nmero A (um valor maior que zero) dito permutao de um nmero B se os dgitos
de A formam uma permutao dos dgitos de B. Por exemplo, 5412434 uma permutao
4321445, mas no uma permutao de 4312455. Ento, escreva um algoritmo que, dados
dois nmeros positivos n e m, que no contm dgito 0, verifica se n uma permutao de
m. A sada do algoritmo deve ser uma mensagem com o resultado da verificao.

10