Skip to content

Latest commit

 

History

History
101 lines (63 loc) · 5.54 KB

README.md

File metadata and controls

101 lines (63 loc) · 5.54 KB

Introdução a paradigmas

Na disciplina de paradigmas de programação trabalhamos com diferentes abordagens e estilos na resolução de problemas computacionais. Na faculdade iniciamos o estudo de algoritmos com C, consolidando uma base sólida, partimos para uma abordagem multiparadigma.

domínios de aplicação

Mas para que compreender os multiparadigmas? Porque o futuro é multiparadigma. É necessário se desvencilhar de uma única linguagem de programação, de uma única abordagem para a resolução de problemas e começar a se desvencilhar disso para se tornar mais versátil e capaz de escolher maneiras mais eficazes para a solução das adversidades do dia a dia.

Repositório

A priori, criei este repositório para sintetizar o conteúdo de Programação Funcional disponibilizado pela docente da disciplina de Paradigmas de Programação em um formato de slides com templates interativos e que facilitassem o estudo para a avaliação da disciplina. Ao iniciar os estudos de Haskell, aprendi sobre funções pré-definidas e a melhor desenvolver funções com seus respectivos nomes, valores e tipos. Na aba "Issues" se encontra as imagens utilizadas e também um resumo digital que fiz a mão.

O que é programação funcional?

A programação funcional é um paradigma de programação na qual vincula funções matemáticas puras.

O que é

Paradigmas

Dentre os paradigmas de programação podemos citar: Procedural/Procedimental, funcional, lógico, orientado a objetos, concorrente, orientado a aspectos, orientado a eventos e visual.

paradigmas

Haskell

Linguagem de programação funcional. "Um comando em Haskell é uma fórmula escrita na sintaxe da linguagem."

O que é

Ambiente de execução

ambiente

Sintaxe Geral

nomefunc arg1 ... argn

SINTAXE

Sintaxe Geral para função sem tipo específico

nomefunc arg1 ... argn = expressão

SINTAXE (2)

Funções de alta ordem (higher order)

Funções que recebem outras funções como argumento e/ou produzem funções como resultado.

Exemplos: map e filter

fUNÇÕES DE ALTA ORDEM

  • Quanto a função map, esta aplica a função a cada elemento da lista, inserindo cada resultado na lista resultante. Ou seja, "mapeia" os elementos da lista de entrada e os insere na lista resultante.
  • Sobre a função filter, utiliza de uma função booleana e uma lista para que sua saída sejam apenas os elementos que sejam verdadeiros (true). Ou seja, filtra os elementos de uma lista e seu resultado será referente a função booleana em cada elemento da lista, sendo de tamanho igual ou inferior ao da lista de entrada.

Outras funções

Função zipWith

A função zipWith recebe uma função e duas listas como argumento, para que seja aplicado a função a cada par de elementos correspondentes nas duas listas recebidas, produzindo outra lista como saída.

FUNÇÃO ZIPWITH

No exemplo consta: add x y = x + y Ao aplicar: zipWith add [10,11,12] [1,2,3] Foi somado 10+1, 11+2, 12+3, resultando a nova lista: [11,13,15]

Função lambda

Em resumo, a função lambda é uma maneira de sintetizar as equações, não sendo necessário a inclusão de um nome para a função.

LAMBDA

Função left...in

Ao meu ver, a função left..in organiza a função de modo que: dado os valores das variavés em: let x =..., y=..., colocando as variáveis equivalentes a expressão em in para que seja realizado o cálculo entre elas.

FUNÇÃO LEFT IN

Função where

Onde esteja ... realizar função da expressão Função Where

List comprehension

Recurso inspirado na representação de conjuntos em matemática.

list comprehension

Tuplas

Sequência de elementos entre parênteses, separados por vírgula. Para tuplas com apenas 2 elementos, podemos obter o primeiro ou o segundo com as funções fst e snd. Com mais de 2 elementos, utiliza-se lambda. Por exemplo:

ghci> (\(n,lat,long) -> long) ("Reitoria",-29.72083,-53.71479)
-53.71479

Referências:

[1] Material disponibilizado em aula [2] https://www.inf.ufpr.br/andrey/ci062/ProgramacaoHaskell.pdf [3] Robert Sebesta. Conceitos de Linguagens de Programação. Bookman, 2018.