·
Cursos Gerais ·
Análise de Algoritmos
Send your question to AI and receive an answer instantly
Recommended for you
2
Lista de Exercícios
Análise de Algoritmos
UMG
4
Facility Location Problem - Discrete Optimization Assignment
Análise de Algoritmos
UMG
3
Lista de Exercicios Algoritmos - Decomposicao de Tempo Triangulos e Calculo de PI
Análise de Algoritmos
UMG
4
Lista de Exercícios Resolvidos - Algoritmos I - Lógica de Programação
Análise de Algoritmos
UMG
71
Exercícios e Árvore de Huffman
Análise de Algoritmos
UMG
2
Programa C para Otimizacao de Circuito de Cameras em Museu
Análise de Algoritmos
UMG
4
Trabalho Algoritmos I - Modelo de Grafos para Alocação de Vagas de Emprego e Redução do Desemprego
Análise de Algoritmos
UMG
4
TP3-Algoritmos-I-Otimizacao-de-Distribuição-de-Ligas-Metálicas-com-Programacao-Dinâmica
Análise de Algoritmos
UMG
10
Lista de Exercícios de Algoritmos em Pascal - Vetores e Números
Análise de Algoritmos
UMG
5
Array em Programação C: Representação e Utilização
Análise de Algoritmos
UMG
Preview text
Atividade de Pesquisa Sistemas de Informação Disciplina Algoritmos II Professor Uashington S Nunes Alunoa Turno Noturno Data UNIVERSIDADE FEDERAL DE RONDONÓPOLIS Nesta atividade de pesquisa você terá a oportunidade de explorar e aprofundar seus conhecimentos sobre dois aspectos cruciais no desenvolvimento de software Refinamento de Algoritmos e Elaboração de Soluções Esses elementos desempenham um papel fundamental na criação de programas eficazes e na resolução de problemas de maneira estruturada 1 Refinamento de Algoritmos a Comece investigando o processo de refinamento de algoritmos b Explique como esse processo transforma uma ideia inicial em um algoritmo detalhado e passível de implementação c Pesquise exemplos de algoritmos simples e descreva como eles podem ser refinados gradualmente d Discuta por que o refinamento é importante no desenvolvimento de software e como ele contribui para a eficiência e a compreensão do código 2 Elaboração de Soluções a Aprofundese na elaboração de soluções de software b Pesquise como os desenvolvedores analisam problemas complexos dividindoos em partes menores e mais gerenciáveis c Explique como a elaboração de soluções auxilia na criação de sistemas modulares e escaláveis d Utilize exemplos práticos para ilustrar como a abordagem de elaboração de soluções pode ser aplicada a desafios reais 3 Entrega Elabore um relatório de pesquisa que aborde os dois tópicos mencionados Seu relatório deve ser claro organizado e conter exemplos pertinentes para respaldar cada conceito Ao final do relatório inclua uma seção comparativa que destaque a interconexão entre o refinamento de algoritmos e a elaboração de soluções na prática do desenvolvimento de software 4 Formato e Prazo a O relatório deve seguir as diretrizes de formatação da faculdade com uma extensão de aproximadamente 5 a 10 páginas b Pode ser feito em dupla c A data de entrega é 22122023 d Certifiquese de citar corretamente todas as fontes consultadas 5 Apresentar as características técnicas a seguir O trabalho deve conter capa desenvolvimento e referências bibliográficas Papel Papel branco formato A4 21 cm x 297 cm Fontes Arial ou Times New Roman sem detalhes estéticos para facilitar a leitura tamanho 12 para texto e títulos na cor preta para o texto podendo ser utilizada outras cores para as ilustrações Outros recursos tipográficos como negrito itálico maiúsculas e versal versalete no Word poderão ser utilizados nos títulos para diferenciar as diferentes seções do trabalho Papel Papel branco formato A4 21 cm x 297 cm Fontes Arial ou Times New Roman sem detalhes estéticos para facilitar a leitura tamanho 12 para texto e títulos na cor preta para o texto podendo ser utilizada outras cores para as ilustrações Outros recursos tipográficos como negrito itálico maiúsculas e versal versalete no Word poderão ser utilizados nos títulos para diferenciar as diferentes seções do trabalho Esta atividade tem o propósito de aprimorar sua compreensão dos conceitos abordados e fortalecer suas habilidades de pesquisa e comunicação Bom trabalho Capa 1 DESENVOLVIMENTO 11 Refinamento De Algoritmos Um algoritmo pode ser compreendido como uma série de etapas executáveis destinadas a construir uma solução para um específico tipo de problema Ziviani 2011 Assim a necessidade de se construir algo como uma solução com um algoritmo pode ser facilitada por meio da aplicação de técnicas que apoie nessa tarefa Existem várias maneiras de criar algoritmos e dependendo do que se deseja alcançar a escolha de técnicas certas pode fazer grande diferença no resultado Com isso o refinamento de algoritmo consiste no desmembramento de instruções em outras mais específicas e claras que possam ser mais facilmente entendidas e construídas permitindo a abordagem de um problema de maneira mais objetiva podendo diminuir a probabilidade de defeitos e facilitando a correção de erros caso ocorram Rossi 2020 Diante disso o refinamento de algoritmo é uma prática comum em várias áreas da ciência da computação especialmente em aprendizado de máquina e inteligência artificial com o objetivo de tornar a solução mais eficiente e intuitiva Bertolli 2023 Até antes de 1837 onde não se sabia o conceito de refinamento cálculos matemáticos complexos eram divididos em partes menores para que pudessem ser realizados por mais pessoas às vezes sem grandes conhecimentos em matemática paralelamente visto que a complexidade era diminuída Rossi 2020 Dessa forma ao decompor um algoritmo complexo em partes menores é possível entender melhor o problema onde as melhorias podem ser feitas e qual a melhor solução podendo levar a ajustes mais precisos e eficientes em partes específicas do algoritmo Como exemplo simples podemos considerar o algoritmo para calcular média entre números De início podemos pensar nas etapas de entrada dos números cálculo da média e por fim saída do resultado Porém a atividade cálculo da média pode ser mais bem compreendida ao ser desdobrada em duas atividades soma de todos os números divisão de todos os números pelo total de entradas Ainda podemos considerar a etapa divisão de todos os números pelo total de entradas como identificar o total de números e dividir a soma pelo total de números Por fim foram geradas atividades menores e de melhor compreensão para um comando único calcular média Com esse detalhamento foi possível identificar que se tratava de uma média simples contribuindo com o entendimento do problema Já ao identificar apenas a atividade cálculo da média poderia ocorrer divergência ao considerar e desenvolver uma média ponderada no cálculo Ademais de acordo com Petrovic 2014 alguns benefícios da prática do refinamento de algoritmo são A melhor compreensão do algoritmo e suas partes Pode ser compreendido em diferentes níveis de abstração São encontradas diferentes formas de implementação Identificação de possibilidade de reaproveitamento de código Melhoria na manutenção e correção do código Auxilia professores no ensino de algoritmos Auxilia alunos na compreensão de algoritmos 12 Elaboração De Soluções De forma geral analistas e desenvolvedores buscam satisfazer as necessidades dos usuários durante a elaboração da solução de software Souza 2012 Porém tais soluções podem ir tomando um alto nível de complexidade com isso se torna mais difícil a elaboração e gerenciamento de uma solução para o problema em si e acaba se afastando do baixo nível compreendido por máquinas Dessa forma a identificação de módulos ou componentes mais coesos funcionalmente e o agrupamento destes permite aumentar a compreensão e facilitar a manutenção do software Pinto 2014 A modularização de um software é a elaboração de partes de um sistema que podem ser relacionadas e agrupadas não existindo redundância Sommerville 2011 Ainda a modularidade é um atributo de qualidade de software que auxilia na compreensibilidade Sendo assim a forma de desenvolver softwares tem evoluído para melhorar a construção de softwares complexos e confiáveis de maneira modular Souza 2012 De acordo com Gamma 2007 um projeto deve ser específico para o problema a ser resolvido mas genérico o suficiente para atender também a outros problemas futuros E ainda os melhores projetistas reutilizam soluções que funcionaram no passado mas isso só é possível porque problemas são divididos em módulos menores Além disso de acordo com Sommerville 2011 ao dividir um sistema em partes neste caso em subsistemas estes podem ser desenvolvidos com diferentes abordagens Ainda é necessário ter separações claras na construção de um software para que diferentes equipes de trabalho possam atuar paralelamente Porém para garantir que os desenvolvedores sigam encontrando soluções para os problemas do software sem que encontrem problemas ao juntar as partes do software é sugerido que o software seja constantemente refatorado e seja feito versionamento Sommerville 2011 13 Interconexão Entre Os Conceitos Para que o desenvolvimento de software seja bemsucedido é necessário que os requisitos de software estejam bem alinhados com os objetivos de negócio Aversano 2010 Conforme mencionado anteriormente diversas técnicas e ferramentas são utilizadas para ajudar no refinamento e entendimento de um algoritmo o que vai ao encontro de que o entendimento de um software gera melhores soluções melhor funcionamento de um software e alcance dos objetivos de negócio Isso porque somente após o entendimento dos objetivos de negócio é possível propor um produto adequado à organização Souza 2012 Ademais segundo Sommerville 2011 o projeto de um software não é um processo sequencialmente claro pois este é construído tendo ideias propondo soluções e refinando essas soluções assim que as novas informações estejam disponíveis Sendo assim a elaboração de uma solução de um software maior similar à construção de algoritmo pode ser dividida em menores partes para uma melhor solução ao unilas E diante da proposta de reuso de soluções isto só é possível quando são analisadas partes menores de um software tendo maior probabilidade de ser genérica e possibilidade de ser reutilizada Tal aspecto se associa ao refinamento de algoritmo que busca diminuir o escopo de um problema para encontrar uma solução REFERÊNCIAS AVERSANO L MARULLI F TORTORELLA M Recovering Traceability Links between Business Process and Software System Components In 2010 IEEE 18th International Conference on Program Comprehension IEEE 2010 p 5253 BERTOLLI E Qual o papel da inteligência artificial IA na segurança cibernética Varonis Disponível em httpswwwvaroniscomptbrblogqualopapeldainteligenciaartificialia nasegurancacibernetica Acesso em 22 dez 2023 GAMMA E et al Padrões de projetos soluções reutilizáveis Porto Alegre Bookman 2007 PINTO A F Uma heurística baseada em busca local iterada para o problema de clusterização de módulos de software 2014 83 f Dissertação Mestrado em Informática Universidade Federal do Estado do Rio de Janeiro Rio de Janeiro 2014 Disponível em httpwwwrepositoriobcuniriobr8080xmluihandleunirio11920showfull Acesso em 20 dez 2023 ROSA T P Um método para o desenvolvimento de software baseado em microsserviços 2016 64 f TCC graduação em Engenharia de Software Universidade Federal do Ceará Campus Quixadá Quixadá CE 2016 Disponível em httpsrepositorioufcbrhandleriufc25123 Acesso em 20 dez 2023 ROSSI L Computabilidade e Complexidade de Algoritmos Cruzeiro do Sul Virtual 2020 SIMIC D Using smallstep refinement for algorithm verification in computer science education The International Journal for Technology in Mathematics Education v 22 n 4 p 155163 2015 SOMMERVILLE I Engenharia de software 9 ed São Paulo Pearson Prentice Hall 2011 SOUZA E F ProSoftware uma extensão da modelagem de processos de negócio voltada para o desenvolvimento de software 2012 132 f Mestrado em Ciência da Computação Universidade Federal de Minas Gerais Belo Horizonte 2012 Disponível em httphdlhandlenet1843ESBF8XFN2H Acesso em 20 dez 2023 ZIVIANI N et al Projeto de algoritmos com implementações em Pascal e C São Paulo Cengage Learning 2011
Send your question to AI and receive an answer instantly
Recommended for you
2
Lista de Exercícios
Análise de Algoritmos
UMG
4
Facility Location Problem - Discrete Optimization Assignment
Análise de Algoritmos
UMG
3
Lista de Exercicios Algoritmos - Decomposicao de Tempo Triangulos e Calculo de PI
Análise de Algoritmos
UMG
4
Lista de Exercícios Resolvidos - Algoritmos I - Lógica de Programação
Análise de Algoritmos
UMG
71
Exercícios e Árvore de Huffman
Análise de Algoritmos
UMG
2
Programa C para Otimizacao de Circuito de Cameras em Museu
Análise de Algoritmos
UMG
4
Trabalho Algoritmos I - Modelo de Grafos para Alocação de Vagas de Emprego e Redução do Desemprego
Análise de Algoritmos
UMG
4
TP3-Algoritmos-I-Otimizacao-de-Distribuição-de-Ligas-Metálicas-com-Programacao-Dinâmica
Análise de Algoritmos
UMG
10
Lista de Exercícios de Algoritmos em Pascal - Vetores e Números
Análise de Algoritmos
UMG
5
Array em Programação C: Representação e Utilização
Análise de Algoritmos
UMG
Preview text
Atividade de Pesquisa Sistemas de Informação Disciplina Algoritmos II Professor Uashington S Nunes Alunoa Turno Noturno Data UNIVERSIDADE FEDERAL DE RONDONÓPOLIS Nesta atividade de pesquisa você terá a oportunidade de explorar e aprofundar seus conhecimentos sobre dois aspectos cruciais no desenvolvimento de software Refinamento de Algoritmos e Elaboração de Soluções Esses elementos desempenham um papel fundamental na criação de programas eficazes e na resolução de problemas de maneira estruturada 1 Refinamento de Algoritmos a Comece investigando o processo de refinamento de algoritmos b Explique como esse processo transforma uma ideia inicial em um algoritmo detalhado e passível de implementação c Pesquise exemplos de algoritmos simples e descreva como eles podem ser refinados gradualmente d Discuta por que o refinamento é importante no desenvolvimento de software e como ele contribui para a eficiência e a compreensão do código 2 Elaboração de Soluções a Aprofundese na elaboração de soluções de software b Pesquise como os desenvolvedores analisam problemas complexos dividindoos em partes menores e mais gerenciáveis c Explique como a elaboração de soluções auxilia na criação de sistemas modulares e escaláveis d Utilize exemplos práticos para ilustrar como a abordagem de elaboração de soluções pode ser aplicada a desafios reais 3 Entrega Elabore um relatório de pesquisa que aborde os dois tópicos mencionados Seu relatório deve ser claro organizado e conter exemplos pertinentes para respaldar cada conceito Ao final do relatório inclua uma seção comparativa que destaque a interconexão entre o refinamento de algoritmos e a elaboração de soluções na prática do desenvolvimento de software 4 Formato e Prazo a O relatório deve seguir as diretrizes de formatação da faculdade com uma extensão de aproximadamente 5 a 10 páginas b Pode ser feito em dupla c A data de entrega é 22122023 d Certifiquese de citar corretamente todas as fontes consultadas 5 Apresentar as características técnicas a seguir O trabalho deve conter capa desenvolvimento e referências bibliográficas Papel Papel branco formato A4 21 cm x 297 cm Fontes Arial ou Times New Roman sem detalhes estéticos para facilitar a leitura tamanho 12 para texto e títulos na cor preta para o texto podendo ser utilizada outras cores para as ilustrações Outros recursos tipográficos como negrito itálico maiúsculas e versal versalete no Word poderão ser utilizados nos títulos para diferenciar as diferentes seções do trabalho Papel Papel branco formato A4 21 cm x 297 cm Fontes Arial ou Times New Roman sem detalhes estéticos para facilitar a leitura tamanho 12 para texto e títulos na cor preta para o texto podendo ser utilizada outras cores para as ilustrações Outros recursos tipográficos como negrito itálico maiúsculas e versal versalete no Word poderão ser utilizados nos títulos para diferenciar as diferentes seções do trabalho Esta atividade tem o propósito de aprimorar sua compreensão dos conceitos abordados e fortalecer suas habilidades de pesquisa e comunicação Bom trabalho Capa 1 DESENVOLVIMENTO 11 Refinamento De Algoritmos Um algoritmo pode ser compreendido como uma série de etapas executáveis destinadas a construir uma solução para um específico tipo de problema Ziviani 2011 Assim a necessidade de se construir algo como uma solução com um algoritmo pode ser facilitada por meio da aplicação de técnicas que apoie nessa tarefa Existem várias maneiras de criar algoritmos e dependendo do que se deseja alcançar a escolha de técnicas certas pode fazer grande diferença no resultado Com isso o refinamento de algoritmo consiste no desmembramento de instruções em outras mais específicas e claras que possam ser mais facilmente entendidas e construídas permitindo a abordagem de um problema de maneira mais objetiva podendo diminuir a probabilidade de defeitos e facilitando a correção de erros caso ocorram Rossi 2020 Diante disso o refinamento de algoritmo é uma prática comum em várias áreas da ciência da computação especialmente em aprendizado de máquina e inteligência artificial com o objetivo de tornar a solução mais eficiente e intuitiva Bertolli 2023 Até antes de 1837 onde não se sabia o conceito de refinamento cálculos matemáticos complexos eram divididos em partes menores para que pudessem ser realizados por mais pessoas às vezes sem grandes conhecimentos em matemática paralelamente visto que a complexidade era diminuída Rossi 2020 Dessa forma ao decompor um algoritmo complexo em partes menores é possível entender melhor o problema onde as melhorias podem ser feitas e qual a melhor solução podendo levar a ajustes mais precisos e eficientes em partes específicas do algoritmo Como exemplo simples podemos considerar o algoritmo para calcular média entre números De início podemos pensar nas etapas de entrada dos números cálculo da média e por fim saída do resultado Porém a atividade cálculo da média pode ser mais bem compreendida ao ser desdobrada em duas atividades soma de todos os números divisão de todos os números pelo total de entradas Ainda podemos considerar a etapa divisão de todos os números pelo total de entradas como identificar o total de números e dividir a soma pelo total de números Por fim foram geradas atividades menores e de melhor compreensão para um comando único calcular média Com esse detalhamento foi possível identificar que se tratava de uma média simples contribuindo com o entendimento do problema Já ao identificar apenas a atividade cálculo da média poderia ocorrer divergência ao considerar e desenvolver uma média ponderada no cálculo Ademais de acordo com Petrovic 2014 alguns benefícios da prática do refinamento de algoritmo são A melhor compreensão do algoritmo e suas partes Pode ser compreendido em diferentes níveis de abstração São encontradas diferentes formas de implementação Identificação de possibilidade de reaproveitamento de código Melhoria na manutenção e correção do código Auxilia professores no ensino de algoritmos Auxilia alunos na compreensão de algoritmos 12 Elaboração De Soluções De forma geral analistas e desenvolvedores buscam satisfazer as necessidades dos usuários durante a elaboração da solução de software Souza 2012 Porém tais soluções podem ir tomando um alto nível de complexidade com isso se torna mais difícil a elaboração e gerenciamento de uma solução para o problema em si e acaba se afastando do baixo nível compreendido por máquinas Dessa forma a identificação de módulos ou componentes mais coesos funcionalmente e o agrupamento destes permite aumentar a compreensão e facilitar a manutenção do software Pinto 2014 A modularização de um software é a elaboração de partes de um sistema que podem ser relacionadas e agrupadas não existindo redundância Sommerville 2011 Ainda a modularidade é um atributo de qualidade de software que auxilia na compreensibilidade Sendo assim a forma de desenvolver softwares tem evoluído para melhorar a construção de softwares complexos e confiáveis de maneira modular Souza 2012 De acordo com Gamma 2007 um projeto deve ser específico para o problema a ser resolvido mas genérico o suficiente para atender também a outros problemas futuros E ainda os melhores projetistas reutilizam soluções que funcionaram no passado mas isso só é possível porque problemas são divididos em módulos menores Além disso de acordo com Sommerville 2011 ao dividir um sistema em partes neste caso em subsistemas estes podem ser desenvolvidos com diferentes abordagens Ainda é necessário ter separações claras na construção de um software para que diferentes equipes de trabalho possam atuar paralelamente Porém para garantir que os desenvolvedores sigam encontrando soluções para os problemas do software sem que encontrem problemas ao juntar as partes do software é sugerido que o software seja constantemente refatorado e seja feito versionamento Sommerville 2011 13 Interconexão Entre Os Conceitos Para que o desenvolvimento de software seja bemsucedido é necessário que os requisitos de software estejam bem alinhados com os objetivos de negócio Aversano 2010 Conforme mencionado anteriormente diversas técnicas e ferramentas são utilizadas para ajudar no refinamento e entendimento de um algoritmo o que vai ao encontro de que o entendimento de um software gera melhores soluções melhor funcionamento de um software e alcance dos objetivos de negócio Isso porque somente após o entendimento dos objetivos de negócio é possível propor um produto adequado à organização Souza 2012 Ademais segundo Sommerville 2011 o projeto de um software não é um processo sequencialmente claro pois este é construído tendo ideias propondo soluções e refinando essas soluções assim que as novas informações estejam disponíveis Sendo assim a elaboração de uma solução de um software maior similar à construção de algoritmo pode ser dividida em menores partes para uma melhor solução ao unilas E diante da proposta de reuso de soluções isto só é possível quando são analisadas partes menores de um software tendo maior probabilidade de ser genérica e possibilidade de ser reutilizada Tal aspecto se associa ao refinamento de algoritmo que busca diminuir o escopo de um problema para encontrar uma solução REFERÊNCIAS AVERSANO L MARULLI F TORTORELLA M Recovering Traceability Links between Business Process and Software System Components In 2010 IEEE 18th International Conference on Program Comprehension IEEE 2010 p 5253 BERTOLLI E Qual o papel da inteligência artificial IA na segurança cibernética Varonis Disponível em httpswwwvaroniscomptbrblogqualopapeldainteligenciaartificialia nasegurancacibernetica Acesso em 22 dez 2023 GAMMA E et al Padrões de projetos soluções reutilizáveis Porto Alegre Bookman 2007 PINTO A F Uma heurística baseada em busca local iterada para o problema de clusterização de módulos de software 2014 83 f Dissertação Mestrado em Informática Universidade Federal do Estado do Rio de Janeiro Rio de Janeiro 2014 Disponível em httpwwwrepositoriobcuniriobr8080xmluihandleunirio11920showfull Acesso em 20 dez 2023 ROSA T P Um método para o desenvolvimento de software baseado em microsserviços 2016 64 f TCC graduação em Engenharia de Software Universidade Federal do Ceará Campus Quixadá Quixadá CE 2016 Disponível em httpsrepositorioufcbrhandleriufc25123 Acesso em 20 dez 2023 ROSSI L Computabilidade e Complexidade de Algoritmos Cruzeiro do Sul Virtual 2020 SIMIC D Using smallstep refinement for algorithm verification in computer science education The International Journal for Technology in Mathematics Education v 22 n 4 p 155163 2015 SOMMERVILLE I Engenharia de software 9 ed São Paulo Pearson Prentice Hall 2011 SOUZA E F ProSoftware uma extensão da modelagem de processos de negócio voltada para o desenvolvimento de software 2012 132 f Mestrado em Ciência da Computação Universidade Federal de Minas Gerais Belo Horizonte 2012 Disponível em httphdlhandlenet1843ESBF8XFN2H Acesso em 20 dez 2023 ZIVIANI N et al Projeto de algoritmos com implementações em Pascal e C São Paulo Cengage Learning 2011