Prévia do material em texto
U N I V E R S I D A D E F E D E R A L D O R E C Ô N C A V O D A B A H I A CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS CET151 - PROCESSAMENTO DE DADOS II Lista de Exercícios II Recursividade 1. Defina recursividade. De quê a recursividade é composta? 2. Cite as vantagens e desvantagens de utilização da recursão em um código. 3. Imagine o seguinte cenário: Tenho que desenvolver um algoritmo para um sistema embarcado que possui pouca memória e pouco processamento. Existe uma instrução no código que necessita de n repetições. Estando ciente das vantagens e desvantagens respondidas no item anterior. Devo utilizar no meu código a forma iterativa ou a recursividade? Uma vez que, se utilizar a forma iterativa (for, while) a quantidade de variáveis aumenta e de if-else também. E se for utilizar recursividade posso gerar um estouro na memória (overflow). 4. Desenvolva um programa que contenha uma função recursiva que calcule o fatorial de um número inteiro N dado. 5. Desenvolva um programa que contenha uma função recursiva que calcule o n-ésimo termo da sequência de Fibonacci. Alguns números dessa sequência são: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, … 6. Desenvolva uma função recursiva que permita inverter um número inteiro N. Por exemplo, dado o número 512, o programa deve exibir o número 215. 7. Desenvolva uma função recursiva que receba um número inteiro n e calcule o somatório de dos números de 1 até n. 8. Desenvolva uma função recursiva que receba um número inteiro n e calcule a potência desse número. 9. Verifique o que as funções dos algoritmos abaixo imprimem e retornam. Depois explique o funcionamento dos algoritmos. a) int func1 (int n) { if (n == 0){ printf(“fim”); }else{ func(n-1); printf(n); } } b) int func2 (int n) { if (n == 0){ printf(“fim”); }else{ printf(n); func(n-1); printf(n); } } c) int func3 (int n) { if (n == 0){ printf(“fim”); }else{ func(n-1); printf(n); func(n-1); } } Headers 10. Defina headers na linguagem C. Para que serve? E, quando devo utilizar? 11. O que é typedef ? 12. Crie um programa que calcule o seno de um número fornecido pelo usuário. Crie a função ou procedimento no cabeçalho, bem como os tipos que serão utilizados. Obs.: Não utilize a função sin da biblioteca math.h 13. Desenvolva um programa que possibilite calcular a área total de uma residência (sala, cozinha, banheiro, quartos, área de serviço, quintal, garagem, sala de jogos, etc). O programa deve solicitar o nome do cômodo, a largura e o comprimento de um determinado cômodo. Em seguida, deve apresentar a área do cômodo lido e também uma mensagem solicitando do usuário se deseja continuar calculando novos cômodos. Caso o usuário responda que não, o programa deve apresentar o valor total acumulado da área residencial. Obs.: Crie novos tipos de dados (use typedef) para armazenar o nome dos cômodos em um vetor (alocado dinâmicamente), a largura, o comprimento e a área. 14. Assumindo-se que tenha um vetor de inteiros contendo 50 posições, desenvolva um programa que: • Um procedimento para exibir os valores do vetor; • Uma função para encontrar o maior e o menor número do vetor; • Uma função para encontrar os n maiores números do vetor, com a mesmo restrição do item anterior, só que o n é fornecido pelo usuário; • Uma função para calcular a media dos valores do vetor; • Uma função para informar se existem dois ou mais valores iguais no vetor. Obs.: Os protótipos das funções e procedimento devem ser desenvolvidas no header do programa, bem como variáveis globais. Arquivos 15. Porque utilizar arquivos em um programa? Quais as vantagens? 16. Quais são os tipos de abertura arquivos disponível em C? 17. Se eu desejar gravar o resultado da questão 11 em um arquivo, qual o primeiro passo que deve ser realizado? 18. Porque é necessário eu fechar o arquivo no final programa? 19. Com base na questão 12, grave em um arquivo no modo texto o nome dos cômodos e suas respectivas áreas. 20. Faça, o mesmo da questão 19 porém com arquivo no modo binário. 21. Qual a diferença encontrada ao utilizar o modo texto para o modo binário? Bons estudos! =)