Prévia do material em texto
UNIOESTE – Universidade Estadual do Oeste do Paraná Curso de Engenharia Mecânica Disciplina de Computação Prof. Newton Spolaôr Lista de exercícios – 3º bimestre A presente lista vale 100 pontos, com peso 30 na nota bimestral. O prazo (deadline) de entrega é no sábado 06/04/2024, 23:59 hs (horário de Brasília). A resolução dos exercícios deve ser enviada anexada em chat privado com o professor no Microsoft Teams. Solicita-se que todos os arquivos da resolução sejam comprimidos (usando software Winrar ou similar) e enviados em um único anexo com seu nome completo e curso (exemplo: SUN_TZU_MECÂNICA.zip). Observações: • O trabalho é individual. • Em caso de identificação de plágio, a nota 0 será atribuída para todos os envolvidos. • Cada dia de atraso na entrega implica na perda de 40 pontos. • Cada questão vale 20 pontos. • O professor está à disposição (por chat, email ou pessoalmente) para esclarecer dúvidas relacionadas ao trabalho. O monitor também poderá auxiliar em seu horário de atendimento. • Para cada resposta de questão escrita com apoio de uma fonte (exemplo: sites, artigos, livros, slide da aula...), inclua referência para essa fonte no final da resposta. 1) [créditos: sistema online para competições URI] Cálculo em funções diferenciáveis. Escreva um programa contendo as seguintes rotinas: • Um procedimento calculaDerivada que processa um conjunto com n polinômios, sendo que n é desconhecido, e calcula a derivada [1] de cada um. Antes de cada polinômio i, deve-se ler o número de termos P desse polinômio (1cada campo devem ser UNIOESTE – Universidade Estadual do Oeste do Paraná Curso de Engenharia Mecânica Disciplina de Computação Prof. Newton Spolaôr lidos do teclado. Caso a marca/modelo possua dois ou mais valores possíveis para um campo, o usuário deverá digitar no teclado somente um dos valores para esse campo. Para melhorar a interação do programa com o usuário, é necessário imprimir antes de cada leitura uma mensagem informando qual é o campo a ser fornecido, como indicado a seguir para o primeiro campo: Digite a marca/modelo do aparelho • Uma função convencional denominada compara que recebe dois parâmetros do tipo dict celular já preenchidos. Além disso, a função recebe um parâmetro do tipo int denominado cam indicando qual das características de celular será analisada, com valores válidos no intervalo [2,5]. A função deve retornar: o 1 para indicar que o primeiro dict celular recebido como parâmetro é melhor que o segundo conforme a característica cam. o 2 para informar que o segundo dict celular é melhor que o primeiro conforme cam. o 3 para esclarecer que os dois dict celular exibem o mesmo valor para cam. o 0 quando a comparação não pode ser realizada porque o valor de cam não está no intervalo [2,5]. A ideia da função é auxiliar o usuário a escolher o melhor dos dois aparelhos analisados de acordo com alguma característica. Alguns exemplos de possíveis valores de cam e de resultados da função para os aparelhos da Figura 2 são apresentados a seguir: o Quando cam for 2, o retorno será 2, indicando que Xiaomi Mi 8 Lite é o melhor celular em termos de preço. o Quando cam for 5, o retorno será 3, indicando que ambos os celulares possuem o mesmo número de chips. A função deve ainda considerar que, no caso do campo 3, as seguintes unidades poderão ser usadas: GB e MB. O primeiro se refere a 109 bytes, enquanto o segundo a 106 bytes. Caso cada um dos celulares considere uma unidade distinta do outro, a comparação deve realizar a conversão de unidade de um dos aparelhos para que ambos tenham a memória na mesma unidade. • Um procedimento denominado imprimeCelular que apresenta na tela todos os campos de um dict celular recebido como parâmetro. • O programa principal que chama as rotinas anteriores, fornecendo os devidos argumentos para cada procedimento e função. Em particular, o programa chama leituraCelular duas vezes, uma para cada argumento distinto do tipo struct celular. Após, o programa chama a função compara com os dois aparelhos previamente preenchidos como argumentos, além do número de campo que o usuário deseja analisar, digitado no teclado. A partir do resultado da função, o programa deve ainda imprimir: o Os dados do melhor aparelho, usando imprimeCelular, se o resultado da função compara for 1 ou 2. o Os dados de ambos aparelhos, usando duas chamadas a imprimeCelular, se o resultado da função for 3. o Uma mensagem de erro, caso o resultado da função seja 0. Nesse caso, depois da mensagem, um novo número de campo deve ser lido e as rotinas compara e imprimeCelular devem ser chamadas conforme indicado nos itens anteriores. Se o retorno da função for zero novamente, os passos já mencionados devem ser repetidos. Portanto, o UNIOESTE – Universidade Estadual do Oeste do Paraná Curso de Engenharia Mecânica Disciplina de Computação Prof. Newton Spolaôr programa principal somente terminará quando o retorno da função compara for 1, 2 ou 3 e os dados do(s) aparelho(s) selecionado(s) tiver(em) sido impresso(s) com imprimeCelular. 5) Uma pequena empresa da área de engenharia começou a automatizar o controle de patrimônio de suas ferramentas. Como ela também precisa de um novo estagiário, o processo de seleção envolve a programação de parte desse processo e a avaliação do programa resultante por um funcionário. A empresa tem ciência de que o controle de patrimônio, quando concretizado, poderá demandar um consumo razoável de recursos computacionais. Por isso, solicita aos candidatos ao estágio o uso de alocação dinâmica, ao invés de estática, para que seja usada somente a quantidade de memória necessária. Na primeira versão do programa, um vetor alocado dinamicamente será adotado, enquanto que no futuro uma estrutura mais flexível para uso em médio e longo prazo, denominada lista encadeada, será adotada. Nesse cenário, é solicitado a você criar uma função convencional sem parâmetros. A função lê do teclado a quantidade n de ferramentas que estão atualmente em posse da empresa e que será digitada pelo funcionário. Após, o procedimento deve alocar dinamicamente um vetor p de n inteiros. Na sequência, cada elemento do vetor receberá um dos números de patrimônio digitados pelo funcionário. A função deve retornar o vetor p. Para permitir que o funcionário verifique se o preenchimento do vetor foi realizado com sucesso, um segundo procedimento deve ser desenvolvido para imprimir os n inteiros que estão dentro de um vetor alocado dinamicamente. Esse vetor é recebido como parâmetro. Um segundo parâmetro nessa rotina deve ser a quantidade de elementos preenchidos dentro do vetor. Um último procedimento deve ser construído para desalocar um vetor previamente alocado recebido como parâmetro. No programa principal, os três procedimentos devem ser chamados, com os devidos argumentos sendo fornecidos. Referências: [1] Wikipedia; Derivada; Disponível em: https://pt.wikipedia.org/wiki/Derivada, Acesso em Jun. 2021, 2021. [2] Wikipedia; Método dos elementos finitos; Disponível em: https://pt.wikipedia.org/wiki/M%C3%A9todo_dos_elementos_finitos, Acesso em Jun. 2021, 2021. [3] Pereira, J. C.; Curso de mecânica dos sólidos II; Disponível em: http://www.grante.ufsc.br/download/MecSolA/mecsol-Parte%20II-%20J.Apostila-Carlos.pdf, Acesso em Jun. 2021, 2021. [4] Chapman, S. J.; Programação em Matlab para engenheiros; Cengage Learning, 5a Edição, 2017. [5] Wikipedia; Triangle; Disponível em: https://en.wikipedia.org/wiki/Triangle, Acesso em Jun. 2021, 2021. [6] TecMundo; Comparar Celulares – TecMundo; Disponível em: https://comparador.tecmundo.com.br/, Acesso em: Jun. 2021, 2021. https://pt.wikipedia.org/wiki/M%C3%A9todo_dos_elementos_finitos http://www.grante.ufsc.br/download/MecSolA/mecsol-Parte%20II-%20J.Apostila-Carlos.pdf https://en.wikipedia.org/wiki/Triangle https://comparador.tecmundo.com.br/