Buscar

Lista 2 Funcoes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade Federal da Bahia - UFBA
Instituto de Matemática - IM
Departamento de Ciência da Computação - DCC
MATA40 - Estrutura de Dados e Algoritmos I! Período: 2013-2! ! Data: 08/10/2013
Prof. Antonio L. Apolinário Junior
Lista de Exercícios - Funções
1. A função floor pode ser usada para arredondar um número até uma determinada casa 
decimal. A instrução
! ! y = floor(x * 10 + .5) / 10;
arredonda x para décimos (a primeira posição à direita do ponto decimal, ou vírgula). A 
instrução
! ! y = floor(x * 100 + • 5) / 100;
arredonda x para centésimos (i.e., a segunda posição à direita do ponto decimal, ou vírgula). 
Escreva um programa que defina quatro funções para arredondar um número x de várias 
maneiras:
a)arredondaParainteiro(numero)
b)arredondaParaDecimos(numero)
c)arredondaParaCentesimos(numero)
d)arredondaParaMilesimos(numero)
Para cada valor lido, seu programa deve imprimir o valor original, o número arredondado 
para o inteiro mais próximo, o número arredondado para o décimo mais próximo, o número 
arredondado para o centésimo mais próximo e o número arredondado para o milésimo mais 
próximo.
2. Escreva uma função potenciaint (base, expoente) que retorne o valor de
! ! baseexpoente
Admita que expoente é um inteiro positivo, diferente de zero, e base é um inteiro. A função 
potenciaint deve usar for para controlar o cálculo. Não use nenhuma das funções da 
biblioteca matemática.
3. Escreva uma função múltiplo que determine, para um par de números inteiros, se o segundo 
número é múltiplo do primeiro. A função deve ter dois argumentos inteiros e retornar 1 
(verdadeiro) se o segundo número for múltiplo do primeiro, e 0 (falso) em caso contrário. 
Use essa função em um programa que receba uma série de números inteiros.
4. Escreva uma função que mostre, na margem esquerda da tela, um quadrado de asteriscos 
cujo lado é especificado por um parâmetro inteiro lado. Por exemplo, se lado for igual a 4, a 
função exibe:
! ! ! ****
! ! ! ****
! ! ! ****
! ! ! ****
5. Modifique a função do exercício 4 para que o símbolo de preenchimento do quadrado seja 
variável, ou seja, fornecido a função como parâmetro. 
6. Modifique a função do exercício 5 para que as dimensões da figura possam ser variáveis, ou 
seja, a largura e a altura do retângulo possam ser diferentes. 
7. Modifique a função do exercício 6 para que a função recebe como parâmetro o modo de 
alinhamento da figura, ou seja, a direita, a esquerda ou centralizado, e desenhe a figura na 
tela conforme o alinhamento definido. 
8. Diz-se que um número inteiro é um número perfeito se a soma de seus fatores, incluindo I 
(mas não o número em si), resulta no próprio número. Por exemplo, 6 é um número perfeito 
porque 6 = 1 + 2 + 3. Escreva uma função perfeito que determine se o parâmetro 
numero é um número perfeito. Use essa função em um programa que determine e imprima 
todos os números perfeitos entre 1 e 1000. Imprima os fatores de cada número encontrado 
para confirmar que ele é realmente perfeito. Desafie o poder de seu computador testando 
números muito maiores do que 1000.
9. Escreva uma função recursiva potencia (base, expoente) que, quando chamada, 
retoma:
! ! baseexpoente
Assuma que expoente é um inteiro maior ou igual a 1. 
10. A série de Fibonacci
! ! ! 0, 1, 1, 2, 3, 5, 8, 13, 21 , ...
começa com os termos 0 e 1 e tem a propriedade de que cada termo subseqüente é a 
soma dos dois termos precedentes.
a) Escreva uma função não-recursiva fibonacci(n) que calcula o n-ésimo 
número da série de Fibonacci. 
b) Escreva uma função recursiva fibonacci(n) que calcula o n-ésimo número 
da série de Fibonacci. 
! ! Rode essas funções e verifique se a precisão de ambas é a mesma.
11. O maior divisor comum dos inteiros x e y é o maior inteiro que divide precisamente x e y. 
Escreva uma função recursiva mdc que retorne o maior divisor comum de x e y. O maior 
divisor comum de x e y é definido recursivamente como se segue: Se y for igual a 0, 
então mdc(x,y) é x; de outra forma, mdc(x,y) é mdc(y,x%y) onde % é o operador 
resto (modulus).
12. É interessante observar a recursão "em ação". Crie uma função fatorial para imprimir 
suas variáveis locais e parâmetros da chamada recursiva. Para cada chamada recursiva, 
mostre as saídas em linhas separadas e adicione um nível de recuo. Faça o melhor 
possível para tornar a saída clara, interessante e significativa. Seu objetivo aqui é 
desenvolver e implementar um formato de saída que ajude uma pessoa a entender 
melhor o conceito de recursão.

Outros materiais