Isso torna uma função matemática diferente de uma função na programação procedural, onde uma função é uma sequência de ações que alteram os dados originais. As linguagens imperativas estruturadas sofrem no entanto de uma falta de flexibilidade dadas o caráter sequencial das instruções. Além disso, https://telegra.ph/curso-de-teste-de-software-04-04 diferentes paradigmas podem ser usados em conjunto para criar sistemas de software mais poderosos e flexíveis. Por exemplo, a programação orientada a objetos pode ser combinada com a programação funcional para criar um sistema modular e de fácil manutenção, bem como de alto desempenho.
O código da esquerda ainda atua sobre um conjunto estático de dados, o que fixa a execução para o intervalo de 1 a 10. Em continuidade ao exemplo inicial, a necessidade agora é fazer a soma dos números pares em um intervalo de 1 a 10 e apresentar o resultado. Cada paradigma foi criado para atender uma necessidade, alguns propõe evoluções a outros e todos têm aplicabilidade possibilitando que desenvolvedores(as) codifiquem programas que resolvam algum problema. Claro que se o programador apenas tiver que consumir elementos funcionais prontos fica fácil usar. Assim como OOP, consumir é fácil, criar estruturas para serem consumidas da forma correta não é tão fácil assim. Quando estamos controlando fluxo no código (if, switch, while, for, throw e até mesmo chamadas de funções simples) estamos programando imperativamente.
Confusão entre paradigmas
A principal vantagem de usar a programação procedural é que ela pode levar a um código mais modular e reutilizável. Ao organizar o código em procedimentos, o programador pode isolar e depurar erros com mais facilidade, bem como reutilizar código comum em todo o programa. A programação procedural também pode ser mais eficiente do que outros paradigmas de programação, particularmente para programação de sistemas de baixo nível, porque permite o controle direto sobre a máquina. A programação declarativa é um paradigma de programação no qual é importante especificar o problema e o resultado esperado de sua solução. Ou seja, em contraste com o paradigma imperativo, onde é necessário responder à pergunta “Como fazer isso?” você precisa fazer as perguntas “O que precisa ser feito?” e “Qual será o resultado do trabalho?”.
Isso é possível em linguagens que suportam esses dois paradigmas, porém pelo fato de não haver imutabilidade,é um equívoco determinar que o código abaixo é funcional. Um código reduzido, onde as instruções estão focadas no resultado esperado e não em como o computador chegará a esse resultado. A programação Orientada Objeto prevê o uso de classes para modelar o código.Além disso, oferece a capacidade de herança, onde uma classe herda os recursos da classe pai, o que contribui para a reutilização de código. Em continuidade ao exemplo de código estruturado,a necessidade agora é fazer a soma dos números pares e ímpares de um determinado intervalo, e apresentar o resultado. A programação estruturada permite maior dinamismo ao software, desta forma é possível coletar os dados e não ficar preso a um conjunto estático. Eles indicam a forma como a linguagem deve operar para possibilitar a resolução de problemas.
Características[editar editar código-fonte]
Instruções como if, while, switch e for são típicas de linguagens de programação imperativas. Muitas vezes a programação funcional é considerada uma forma declarativa já que ela se https://unsplash.com/@fariya354dfg preocupa mais com a execução geral do que os detalhes específicos. A programação funcional permite um código mais reduzido, focado em instruções relacionadas ao resultado esperado.
Entretanto, defensores de cada paradigma sempre tem algum argumento para dizer que o seu paradigma predileto também pode resolver outros tipos de problema de forma pelo menos razoável. É importante entender que não existe realmente um consenso sobre qual dos paradigmas https://pl.enrollbusiness.com/BusinessProfile/6632531/curso%20de%20teste%20de%20software é melhor. Nesse paradigma geralmente não se altera o estado dos objetos, mas cada função executada num objeto retorna um novo objeto com o resultado da operação realizada. Ela tem todos os conceitos funcionais, mas não fica tão distante de outras linguagens.