Baixe o app para aproveitar ainda mais
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.
Compartilhar