Linguagens de Programação Programação Funcional (Haskell)

Tamanho: px
Começar a partir da página:

Download "Linguagens de Programação Programação Funcional (Haskell)"

Transcrição

1 Linguagens de Programação Programação Funcional (Haskell) Andrei Rimsa Álvares

2 Sumário Introdução Programação funcional Linguagens funcionais Haskell Casamento de padrões Funções de ordem superior Avaliação preguiçosa (lazy evalua)on) Resumo

3 INTRODUÇÃO Linguagens de Programação

4 Introdução Programação funcional é baseada no conceito de funções matemáfcas Uma função matemáfca é um mapeamento de membros de um conjunto (domínio) em outro conjunto (imagem) A ordem de avaliação é controlada por recursões e expressões condicionais, ao invés de sequenciamento e iterações Não possuem efeito colateral

5 Uma Simples Função Exemplo: função cubo cubo(x) = x * x * x Domínio: conjunto dos números reais = : a função é definida como x: pode representar qualquer elemento do domínio, mas é fixo para representar apenas um elemento na avaliação São diferentes de variáveis no paradigma imperafvo

6 Formas Funcionais Forma funcional ou função de ordem superior Aceita funções como parâmetros Aceita funções como retorno Composição de funções (h = f g) Exemplo: f(x) = x + 2 g(x) = 3 * x h(x) = f(g(x)) = (3 * x) + 2

7 PROGRAMAÇÃO FUNCIONAL Linguagens de Programação

8 Programação Funcional Um programa no paradigma funcional é uma função, o qual pode ser uma composição de outras funções P f (x 1, x 2,..., x n ) f 1 f 2... f n (x 1, x 2,..., x n ) O objefvo da programação é imitar uma função matemáfca Programação funcional é baseada no modelo computacional Lambda Calculus (Church, 1941) Exemplo: ((λ x. (λ y. x)) (λ z. z)) (λ a. a)

9 Programação Funcional vs. ImperaFva Exemplo de avaliação de (x + y) / (a b) Alan Turing Programação imperamva Avalia (x + y) e armazena resultado na memória Avalia (a b) e armazena resultado na memória Carrega ambos valores da memória e faz a divisão Alonzo Church Programação funcional Não usam variáveis como endereços de memória Usam recursão ao invés de iterações Não possuem efeitos colaterais dados os mesmos parâmetros sempre dará o mesmo resultado (transparência referencial)

10 Exemplo Algoritmo de Euclides para cálculo do máximo divisor comum (MDC)!# mdc(m, n) = " $# n mdc(n mod m, m) Escrito como um programa em Haskell, se m = 0, se m > 0 mdc :: Int -> Int -> Int -- declaração da função mdc mdc m n -- definição da função m == 0 = n m > 0 = mdc (n `mod` m) m : hbp://haskell.org

11 LINGUAGENS FUNCIONAIS Linguagens de Programação

12 Linguagens Funcionais Algumas linguagens funcionais famosas LISP (John McCarthy, 1960) Escopo dinâmico e coleta de lixo Diversas extensões: CLOS, Scheme, etc Principal uso: inteligência arfficial APL (Kenneth Iverson, 1962) Não é puramente funcional (possui atribuição) Principal Fpo de dados: matrizes Principal uso: avaliação de expressões

13 Linguagens Funcionais Algumas linguagens funcionais famosas ML (Robin Milner, 1979) Polimorfismo e sistema de Fpos forte Modularização e suporte a TAD Não é puramente funcional Miranda (David Turner, 1986) Similar a ML, porém com avaliação lazy Haskell (S. Peyton Jones & P. Wadler, 1992) Puramente funcional Avaliação lazy

14 Principais Aplicações LISP Diversas aplicações em IA Emacs (editor de textos) Macsyma (cálculos simbólicos) Haskell Compilador GHC ML Servidor Web, provadores de teorema

15 HASKELL Linguagens de Programação

16 Haskell Algumas propriedades de Haskell Sintaxe similar a ML EstaFcamente e fortemente Fpada Puramente funcional Não possui variáveis Nem outras caracterísfcas imperafvas Possui avaliação preguiçosa (lazy evaluafon) Permite definir listas infinitas

17 Exemplo Exemplo de função fatorial fact :: Integer -> Integer fact 0 = 1 fact n = n * fact (n-1) Mesmo exemplo escrito com uma sintaxe alternafva fact :: Integer -> Integer fact n n == 0 = 1 n > 0 = n * fact (n-1) Int: precisão fixa (32 ou 64 bits) Integer: precisão arbitrária

18 Conceitos Fundamentais Conceitos fundamentais de Haskell Casamento de Padrões Avaliação Preguiçosa Funções de ordem superior

19 Casamento de Padrões Função definida por várias equações, cada uma com um padrão no seu lado esquerdo fib :: Int -> Int fib 0 = 0 -- equação aplicada ao caso 0 fib 1 = 1 -- equação aplicada ao caso 1 fib n = fib (n-1) + fib (n-2) -- equação aplicada nos outros casos Vantagens Concisão e clareza Mais próxima de uma definição matemáfca

20 Casamento de Padrões Forma tradicional para definição de funções via uma única equação (possivelmente condicional) soma :: Int -> Int soma n n <= 0 = 0 -- se n menor ou igual a zero n > 0 = n + soma (n-1) -- se n maior que zero

21 Cláusula otherwise Casamento de padrão com opção padrão (otherwise) fun :: Int -> Int fun n n < 10 = 0 n > 10 = 2 otherwise = 1

22 Cláusula where Cálculo das raízes de uma equação de segundo grau Implementado em Haskell x = b ± b2 4ac 2a raizeq :: Float -> Float -> Float -> [Float] raizeq a b c = [ menos_b_sobre_2a - delta_sqrt, menos_b_sobre_2a + delta_sqrt ] where menos_b_sobre_2a = -b / (2.0 * a) delta_sqrt = (sqrt (b*b - 4.0*a*c)) / (2.0 * a)

23 Listas Declaração de listas entre colchetes Operadores Concatenação (++) Infixo de lista (:) colors :: [String] colors = [ "blue", "green", "red" ] [1, 3, 5] ++ [2, 4, 6] [1, 3, 5, 2, 4, 6] 5:[2, 7, 9] [5, 2, 7, 9] Séries aritméfcas (..) [1, 3..11] [1, 3, 5, 7, 9, 11] Tamanho de lista (length) length [2, 4, 6] 3

24 Exemplos Operações com lista Soma de todos os elementos de uma lista de inteiros somatorio :: [Int] -> Int somatorio [] = 0 somatorio (a:x) = a + somatorio x Produto de todos os elementos de uma lista de inteiros produtorio :: [Int] -> Int produtorio [] = 1 produtorio (a:x) = a * produtorio x Fatorial de um número inteiro fact :: Int -> Int fact n = produtorio [1..n]

25 Compreensão de Listas Descrição de listas que representam conjuntos Exemplos Cubo dos números de 1 a 50 [corpo qualificadores ] cubo :: [Int] cubo = [ n * n * n n <- [1..50] ] Fatores de um número inteiro fatores :: Int -> [Int] fatores 0 = [] fatores n = [ i i <- [1..n `div` 2], n `mod` i == 0 ] ++ [n]

26 Simplicidade Exemplo do algoritmo Quicksort em Haskell qsort :: [Int] -> [Int] qsort [] = [] qsort (a:x) = qsort [ b b <- x, b <= a ] ++ [a] ++ qsort [ b b <- x, b > a ]

27 Funções de Ordem Superior Formas funcionais Funções de primeira ordem Parâmetros e resultado não são funções Funções de ordem superior Possui parâmetros e/ou retornos que são funções Linguagens funcionais Funções são valores de primeira classe Conceito comum na matemáfca (derivada, integral,...)

28 Exemplo Funções de primeira ordem impar :: Int -> Bool impar x (x `mod` 2) == 1 = True otherwise = False quad :: Int -> Int quad x = x ^ 2 Função de ordem superior nmap :: (t -> u) -> [t] -> [u] nmap f [] = [] nmap f (a:x) = f a : nmap f x > nmap quad [1,2,3,4] [1,4,9,16] > nmap impar [1,2,3,4] [True,False,True,False] >

29 Avaliação Preguiçosa Avaliação preguiçosa ou avaliação tardia: argumentos somente são avaliados quando são uflizados Permite que uma função retorne resultados parcialmente avaliados Conceito úfl para construir listas infinitas positivos :: [Integer] positivos = [0..] pares :: [Integer] pares = [2, 4..] quadrados :: [Integer] quadrados = [n * n n <- [0..]]

30 Exemplo Verificar se um elemento existe na lista quadrado membro :: [Integer] -> Integer -> Bool membro [] b = False membro (a:x) b = (a == b) membro x b > membro quadrados 16 True > Qual o problema desse programa?

31 Exemplo Reescrevendo o exemplo anterior para consertar o problema membro2 :: [Integer] -> Integer -> Bool membro2 [] n = False membro2 (m:x) n m < n = membro2 x n m == n = True otherwise = False > membro quadrados 16 True > membro quadrados 15 False >

32 Avaliação Preguiçosa Vantagens Maior poder de expressividade Desvantagens SemânFca complicada Execução mais lenta

33 RESUMO Linguagens de Programação

34 Comparação Funcional vs. ImperaFvo Linguagens imperafvas são mais eficientes Modelo computacional de von Neumann: mesmo modelo das atuais arquiteturas de computadores Linguagens funcionais possuem construções com um nível de abstração maior ÚFl para protofpação Linguagens funcionais viabilizam provas formais de propriedades de programas

35 ISSO É TUDO PESSOAL! Linguagens de Programação

Linguagem Funcional Haskell

Linguagem Funcional Haskell Bacharelado em Ciência da Computação PARADIGMAS DE PROGRAMAÇÃO Linguagem Funcional Haskell Prof. Claudinei Dias email: [email protected] Principais Linguagens Funcionais LISP (John McCarthy,

Leia mais

Linguagens de Programação Funcional

Linguagens de Programação Funcional Linguagens de Programação Funcional Conceitos de Linguagens de Programação Pedro Libório Setembro de 2013 2 Roteiro Introdução Funções matemáticas Fundamentos das linguagens de programação funcionais A

Leia mais

Linguagem Haskell. Universidade Estadual Santa Cruz Conceitos de Linguagens de Programação. Tiago Carneiro 19 Agosto 2013

Linguagem Haskell. Universidade Estadual Santa Cruz Conceitos de Linguagens de Programação. Tiago Carneiro 19 Agosto 2013 Linguagem Haskell Universidade Estadual Santa Cruz Conceitos de Linguagens de Programação Tiago Carneiro 19 Agosto 2013 1 1 Linguagem Haskell Linguagem de programação funcional É um paradigma de programação

Leia mais

Aula prática 5. Funções Recursivas

Aula prática 5. Funções Recursivas Programação Funcional UFOP DECOM 2014.1 Aula prática 5 Funções Recursivas Resumo Definições recursivas são comuns na programação funcional. Nesta aula vamos aprender a definir funções recursivas. Sumário

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 09 Programação Funcional (Haskell) Edirlei Soares de Lima Programação Funcional A programação funcional modela um problema computacional

Leia mais

ao paradigma imperativo

ao paradigma imperativo PARADIGMA FUNCIONAL PARADIGMA FUNCIONAL: INTRODUÇÃO G Exemplos de linguagens funcionais LISP - Início: LP puramente funcional - Depois: acréscimo de alguns recursos imperativos (aumentaram eficiência de

Leia mais

Linguagens de Programação e Programação Funcional

Linguagens de Programação e Programação Funcional Linguagens de Programação e Programação Funcional GSI004 Aula 01* Faculdade de Computação UFU *baseada nos slides do Professor Paulo Henrique Ribeiro Gabriel 30 de setembro de 2014 GSI004 Aula 01 30 de

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 3 a Aula Definição de funções

Pedro Vasconcelos DCC/FCUP. Programação Funcional 3 a Aula Definição de funções Programação Funcional 3 a Aula Definição de funções Pedro Vasconcelos DCC/FCUP 2014 Definição de funções Podemos definir novas funções simples usando funções pré-definidas. minuscula :: Char -> Bool minuscula

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Fabrício Olivetti de França 21 de Junho de 2018 1 Listas 2 Listas Uma das principais estruturas em linguagens funcionais. Representa uma coleção de valores de um determinado tipo.

Leia mais

Cálculo Lambda Sem Tipos

Cálculo Lambda Sem Tipos Cálculo Lambda Sem Tipos Cálculo lambda sem tipos Peter Landin (60 s) observou que uma linguagem de programação pode ser compreendida formulando-a em um pequeno núcleo capturando suas características essenciais

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 5 a Aula Definições recursivas

Pedro Vasconcelos DCC/FCUP. Programação Funcional 5 a Aula Definições recursivas Programação Funcional 5 a Aula Definições recursivas Pedro Vasconcelos DCC/FCUP 2014 Definições usando outras funções Podemos definir funções usando outras previamente definidas (e.g. do prelúdio-padrão).

Leia mais

Layout. Módulos. Normalmente, cada módulo está armazenado num ficheiro com o mesmo nome do módulo. Exemplo.hs

Layout. Módulos. Normalmente, cada módulo está armazenado num ficheiro com o mesmo nome do módulo. Exemplo.hs Layout Ao contrário de quase todas as linguagens de programação, o Haskell não necessita de marcas para delimitar as diversas declarações que constituem um programa. Em Haskell a identação do texto (isto

Leia mais

Linguagens de Programação Aula 13

Linguagens de Programação Aula 13 Linguagens de Programação Aula 13 Celso Olivete Júnior [email protected] Na aula passada Suporte para a programação orientada a objetos 2 Na aula de hoje Programação Funcional Linguagem Haskell 3 Roteiro

Leia mais

Expressões Lambda. Programação Funcional. Capítulo 7. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto

Expressões Lambda. Programação Funcional. Capítulo 7. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto Programação Funcional Capítulo 7 Expressões Lambda José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/64 1 Valores de primeira classe 2 Expressão lambda 3 Aplicação

Leia mais

Programação Funcional

Programação Funcional Programação Funcional Lucília Camarão de Figueiredo Universidade Federal de Ouro Preto [email protected] Aula 04: Definição de funções 1 DEFINIÇÃO DE FUNÇÕES f x1 x2...xn = E Define uma função f de tipo

Leia mais

Introdução à Programação uma Abordagem Funcional

Introdução à Programação uma Abordagem Funcional Universidade Federal do Espírito Santo Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres [email protected] CT VII - Sala 34 Departamento de Informática Centro Tecnológico

Leia mais

Aula prática 14. Expressão Lambda

Aula prática 14. Expressão Lambda Programação Funcional UFOP DECOM 2014.1 Aula prática 14 Expressão Lambda Sumário Resumo Expressões lambdas são funções anônimas que podem ser usadas como qualquer outro valor de primeira classe. Nesta

Leia mais

Aula Prática 3. Paradigmas da Programação I / Programação Funcional. ESI/MCC 1 o ano (2005/2006)

Aula Prática 3. Paradigmas da Programação I / Programação Funcional. ESI/MCC 1 o ano (2005/2006) Aula Prática 3 Paradigmas da Programação I / Programação Funcional ESI/MCC 1 o ano (2005/2006) Nesta aula pretende-se que os alunos: consolidem os conceitos de expressão, tipo e redução; compreendam a

Leia mais

Paradigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I

Paradigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I Paradigmas Paradigmas Tradicional Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I Paradigmas Tradicional Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I OO Simula-67, Smalltalk, C++, Eiffel, Object Pascal,

Leia mais

Tipos Algébricos. Programação Funcional. Capítulo 11. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto

Tipos Algébricos. Programação Funcional. Capítulo 11. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto Programação Funcional Capítulo 11 Tipos Algébricos José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/33 1 Tipos Algébricos 2/33 Tópicos 1 Tipos Algébricos 3/33

Leia mais

Programação Funcional. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2013.

Programação Funcional. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2013. Programação Funcional Capítulo 1 Introdução José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2013.1 1/37 1 Programação Funcional 2 Algumas características de Haskell

Leia mais

Programação Funcional - Introdução a Cálculo Lambda

Programação Funcional - Introdução a Cálculo Lambda Programação Funcional - Introdução a Cálculo Lambda Cristiano Damiani Vasconcellos Universidade do Estado de Santa Catarina 1. Definição Cálculo lambda (λ-cálculo) é um modelo matemático capaz de ilustrar

Leia mais

Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição

Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição Expressões e Instruções de Atribuição Cristiano Lehrer Introdução Expressões são o meio fundamental de especificar computações em uma linguagem de programação: Familiarização com as ordens de avaliação

Leia mais

Paradigmas de Linguagens

Paradigmas de Linguagens Paradigmas de Linguagens Aula 2: Tipos de dados Professora Sheila Cáceres Tipos de dados Dados são a matéria prima da computação junto com os programas. LPs precisam manipular dados. LPS utilizam os conceitos

Leia mais

Uma Aula Prática sobre LISP

Uma Aula Prática sobre LISP MAC 5710 - Estruturas de Dados - 2008 Linguagem LISP Surgiu no final dos anos 50 - John McCarthy (MIT). Linguagem para processamento simbólico. Muito usada em aplicações em Inteligência Artificial. Outras

Leia mais

Lambda Cálculo e Programação Funcional. Programação Funcional Bacharelado em Sistemas de Informação Maio

Lambda Cálculo e Programação Funcional. Programação Funcional Bacharelado em Sistemas de Informação Maio Lambda Cálculo e Programação Funcional Programação Funcional Bacharelado em Sistemas de Informação Maio - 2009 Alonzo Church (1903 1995) Professor em Princeton, EUA (1929 1967) e UCLA (1967 1990) Inventou

Leia mais

Professor: Domingos Equipe Haskell: Lucas Montesuma, Francisco Leonardo CONCEITOS DA LINGUAGEM DE PROGRAMAÇÃO CÁLCULADORA EM HASKELL

Professor: Domingos Equipe Haskell: Lucas Montesuma, Francisco Leonardo CONCEITOS DA LINGUAGEM DE PROGRAMAÇÃO CÁLCULADORA EM HASKELL Professor: Domingos Equipe Haskell: Lucas Montesuma, Francisco Leonardo CONCEITOS DA LINGUAGEM DE PROGRAMAÇÃO CÁLCULADORA EM HASKELL Sobre a Linguagem Haskell Inicialmente temos no trabalho o uso da versão

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2 Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas Aula Tópico 2 1 Problema 3 Exibir o maior número inteiro que pode ser representado no computador. 2 Qual o maior número inteiro? Para o compilador

Leia mais

Capítulo 7. Expressões e Sentenças de Atribuição

Capítulo 7. Expressões e Sentenças de Atribuição Capítulo 7 Expressões e Sentenças de Atribuição Introdução Expressões são os meios fundamentais de especificar computações em uma linguagem de programação Para entender a avaliação de expressões, é necessário

Leia mais

Linguagem Haskell. Riocemar S. de Santana

Linguagem Haskell. Riocemar S. de Santana Linguagem Haskell Riocemar S. de Santana Haskell, o que é? É uma linguagem de programação puramente funcional, de propósito geral. Nomeada em homenagem ao matemático americano Haskell B. Curry (1900 1982).

Leia mais

Aula de hoje. Expressões. Expressões. Expressões. Exemplos. Programa em Python. SCC Introdução à Programação para Engenharias

Aula de hoje. Expressões. Expressões. Expressões. Exemplos. Programa em Python. SCC Introdução à Programação para Engenharias SCC 124 - Introdução à Programação para Engenharias Expressões Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto Menezes Aula de

Leia mais

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa Computação Eletrônica Tipos de dados, constantes, variáveis, operadores e expressões Prof: Luciano Barbosa Site da disciplina: www.cin.ufpe.br/~if165/ Recapitulando num cubo = n * n * n cubo Algoritmo

Leia mais

Principais paradigmas de programação. Programação imperativa Programação funcional Programação lógica Programação OO

Principais paradigmas de programação. Programação imperativa Programação funcional Programação lógica Programação OO Principais paradigmas de programação Programação imperativa Programação funcional Programação lógica Programação OO Programação Imperativa É o paradigma mais usado. Programas são definidos através de sequências

Leia mais

Introdução à Linguagem C++

Introdução à Linguagem C++ Introdução à Linguagem C++ C++: Definição C++ C A Linguagem de Programação C++ pode ser definida como uma extensão da Linguagem C; Todo código de programação em Linguagem C pode a priori ser compilado

Leia mais

Revisão C++ - Parte 1

Revisão C++ - Parte 1 Revisão C++ - Parte 1 Prof. Gustavo Leitão Campus Natal Central Disciplina Programação para Ambiente de Redes 5/3/2010 Objetivo da Aula 5/3/2010 5/3/2010 OBJETIVO DA AULA Revisar os principais comandos

Leia mais

Expressões e sentença de atribuição

Expressões e sentença de atribuição Expressões e sentença de atribuição Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 2 a Aula Tipos e classes

Pedro Vasconcelos DCC/FCUP. Programação Funcional 2 a Aula Tipos e classes Programação Funcional 2 a Aula Tipos e classes Pedro Vasconcelos DCC/FCUP 2012 Tipos Um tipo é um nome para uma coleção de valores relacionados. Por exemplo, o tipo Bool True contém dois valores lógicos:

Leia mais

Linguagens de Programação Conceitos e Técnicas. Amarrações

Linguagens de Programação Conceitos e Técnicas. Amarrações Linguagens de Programação Conceitos e Técnicas Amarrações Conceituação Amarração (ou binding) é uma associação entre entidades de programação, tais como entre uma variável e seu valor ou entre um identificador

Leia mais

Programação Funcional. Capítulo 2. OCaml. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2015.

Programação Funcional. Capítulo 2. OCaml. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2015. Programação Funcional Capítulo 2 OCaml José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2015.1 1/27 1 História 2 Características de OCaml 3 Usos e Aplicações 4 O Sistema

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 2 a Aula Tipos e classes

Pedro Vasconcelos DCC/FCUP. Programação Funcional 2 a Aula Tipos e classes Programação Funcional 2 a Aula Tipos e classes Pedro Vasconcelos DCC/FCUP 2014 Tipos Um tipo é um nome para uma coleção de valores relacionados. Por exemplo, o tipo Bool True contém dois valores lógicos:

Leia mais

Aula 4: Introdução à Linguagem C++

Aula 4: Introdução à Linguagem C++ CI208 - Programação de Computadores Aula 4: Introdução à Linguagem C++ Prof. MSc. Diego Roberto Antunes [email protected] www.inf.ufpr.br/diegor Universidade Federal do Paraná Setor de Ciências Exatas

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Aula 6 Nomes, Vinculações, Verificação de Tipos e Escopos Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Introdução As linguagens de

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Prof a Jerusa Marchi Departamento de Informática e Estatística Universidade Federal de Santa Catarina e-mail: [email protected] Linguagens de Programação p. 1/5 Linguagens de

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4 Algoritmos e Estruturas de Dados I (DCC/003) 2013/1 Estruturas Básicas Aula Tópico 4 1 Problema 3 Exibir o maior número inteiro que pode ser representado no computador. 2 Qual o maior número inteiro? Para

Leia mais

Linguagens de Programação. Programação Funcional. Carlos Bazilio

Linguagens de Programação. Programação Funcional. Carlos Bazilio Linguagens de Programação Programação Funcional Carlos Bazilio [email protected] http://www.ic.uff.br/~bazilio/cursos/lp Funções como Valores de 1a. Classe Atribuição a Variáveis a = f() g = f

Leia mais

4. Constantes. Constantes pré-definidas

4. Constantes. Constantes pré-definidas 4. Constantes Constantes pré-definidas O PHP possui algumas constantes pré-definidas, indicando a versão do PHP, o Sistema Operacional do servidor, o arquivo em execução, e diversas outras informações.

Leia mais

Primeira Prova de Linguagens de Programação - DCC024 - Sistemas de Informação

Primeira Prova de Linguagens de Programação - DCC024 - Sistemas de Informação Primeira Prova de Linguagens de Programação - DCC024 - Sistemas de Informação Nome: Eu dou minha palavra de honra que não trapacearei neste exame. Número de matrícula: As regras do jogo: A prova é sem

Leia mais

Programação Funcional Aulas 5 & 6

Programação Funcional Aulas 5 & 6 Programação Funcional Aulas 5 & 6 Sandra Alves DCC/FCUP 2016/17 Definições usando outras funções Podemos definir funções usando outras previamente definidas (por exemplo: do prelúdio-padrão). Exemplo:

Leia mais

Casamento de Padrão. Programação Funcional. Capítulo 6. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto

Casamento de Padrão. Programação Funcional. Capítulo 6. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto Programação Funcional Capítulo 6 Casamento de Padrão José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.2 1/66 1 Casamento de padrão 2 Expressão case 3 Definição

Leia mais

Funções de Ordem Superior

Funções de Ordem Superior Programação Funcional Capítulo 7 Funções de Ordem Superior José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2013.2 1/37 1 Funções de Ordem Superior 2 Composição de funções

Leia mais

Programação Estruturada

Programação Estruturada Algoritmos e Técnicas - Estruturas de Controle de Fluxo - Programação Estruturada Programação estruturada é a técnica de construir e formular algoritmos de uma forma sistemática. Utilizada para apresentar

Leia mais

Aula Prática 2. Paradigmas da Programação I / Programação Funcional

Aula Prática 2. Paradigmas da Programação I / Programação Funcional Aula Prática 2 Paradigmas da Programação I / Programação Funcional ESI/MCC 1 o ano (2005/2006) Nesta aula pretende-se introduzir os conceitos seguintes: valores e expressões; tipos básicos e tipos compostos;

Leia mais

Introdução a Programação na Linguagem C.

Introdução a Programação na Linguagem C. Introdução a Programação na Linguagem C. Prof. Gemilson George E-mail: [email protected] Skype: gemilson_geo MSN: [email protected] Facebook: facebook.com/gemilson Fone: (83)8880-2046 Blog: informaticageo.wordpress.com

Leia mais

Lógica e Linguagem de Programação Convertendo um algoritmo em pseudocódigo para a linguagem C Professor: Danilo Giacobo

Lógica e Linguagem de Programação Convertendo um algoritmo em pseudocódigo para a linguagem C Professor: Danilo Giacobo Lógica e Linguagem de Programação Convertendo um algoritmo em pseudocódigo para a linguagem C Professor: Danilo Giacobo Este documento explica como transformar um algoritmo escrito na forma pseudocódigo

Leia mais

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Conceitos de Linguagens de Programação - Características. Paavo Soeiro Conceitos de Linguagens de Programação - Características Paavo Soeiro Motivação Para que possa escolher uma linguagem apropriada ao problema. Melhorar o entendimento da linguagem utilizada. Facilitar o

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição 1 Comando while Deseja-se calcular o valor de: 1 + 2 + 3 +... + N. Observação: não sabemos, a priori, quantos termos

Leia mais

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador; 1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e

Leia mais

Funções Recursivas. Prof.: Edson Holanda Teoria da computação - Diverio e Menezes

Funções Recursivas. Prof.: Edson Holanda Teoria da computação - Diverio e Menezes Funções Recursivas Prof.: Edson Holanda [email protected] Teoria da computação - Diverio e Menezes Tipos de Formalismos Operacional Define-se uma máquina abstrata, baseada em estados, em instruções

Leia mais

Introdução à Programação Estruturada Parte 3. Material da Prof. Ana Eliza

Introdução à Programação Estruturada Parte 3. Material da Prof. Ana Eliza Introdução à Programação Estruturada Parte 3 Material da Prof. Ana Eliza Arquitetura do Computador Digital MEMÓRIA Armazena dados e comandos UNIDADE DE ENTRADA UNIDADE DE CONTROLE UNIDADE LÓGICA E ARITMÉTICA

Leia mais

Conceitos de Linguagem de Programação - 2

Conceitos de Linguagem de Programação - 2 Conceitos de Linguagem de Programação - 2 Arthur Jovita Guerra Thalles Santos Silva Universidade Estadual de Santa Cruz - Ilhéus, BA 1 de novembro de 2011 1 Revisão Natureza das linguagens de Programação

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 13 a Aula Definição de tipos

Pedro Vasconcelos DCC/FCUP. Programação Funcional 13 a Aula Definição de tipos Programação Funcional 13 a Aula Definição de tipos Pedro Vasconcelos DCC/FCUP 2014 Declarações de sinónimos Podemos dar um nome novo a um tipo existente usando uma declaração de sinónimo. Exemplo (do prelúdio-padrão):

Leia mais

Laboratório de programação II

Laboratório de programação II Laboratório de programação II Herança e Polimorfismo Edson Moreno [email protected] http://www.inf.pucrs.br/~emoreno Herança Mecanismo da Orientação a Objeto que permite criar novas classes aproveitando

Leia mais

Projeto de Linguagem. Linguagens de Programação

Projeto de Linguagem. Linguagens de Programação Projeto de Linguagem Renato Ferreira Linguagens de Programação Linguagens são adotadas para preencher uma demada Facilitar uma aplicação outrora difícil/impossível Independente da qualidade da linguagem

Leia mais

Programação Funcional. Aula 5. Funções Recursivas. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2011.

Programação Funcional. Aula 5. Funções Recursivas. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2011. Programação Funcional Aula 5 Funções Recursivas José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011.2 1/39 1 Funções recursivas 2 Recursividade mútua 3 Recursividade

Leia mais

Lista de Exercícios 06 Modularização (Procedimentos e Funções)

Lista de Exercícios 06 Modularização (Procedimentos e Funções) Lista de Exercícios 06 Modularização (Procedimentos e Funções) Procedimentos: Passagem de parâmetros. 1) Escreva um procedimento que receba um número inteiro e imprima o mês correspondente ao número. Por

Leia mais

Linguagens Formais e Autômatos Apresentação da Disciplina

Linguagens Formais e Autômatos Apresentação da Disciplina Linguagens Formais e Autômatos Apresentação da Disciplina Andrei Rimsa Álvares Computação Histórico da Computação O que pode ser computado? Ábaco China Aprox. 3500 a.c. Máquina de Babbage Inglaterra 1823

Leia mais

Linguagem de Programação e Compiladores

Linguagem de Programação e Compiladores Linguagem de Programação e Compiladores Fernando Antônio Asevedo Nóbrega Instituto de Ciências Matemáticas e de Computação USP SCC-206 Introdução à Compilação 24 de abril de 2012 1 / 20 Sumário 1 Introdução

Leia mais

Casamento de Padrão. Programação Funcional. Capítulo 5. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto

Casamento de Padrão. Programação Funcional. Capítulo 5. José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto Programação Funcional Capítulo 5 Casamento de Padrão José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2012.1 1/63 1 Casamento de padrão 2 Expressão case 3 Definição

Leia mais

Programação Computacional C/C++

Programação Computacional C/C++ exatasfepi.com.br Programação Computacional C/C++ André Luís Duarte Feliz é o homem que acha sabedoria, e o homem que adquire entendimento; Provérbios 3:13 Conceitos Fundamentos Estrutura sequencial Estruturas

Leia mais

Paradigmas de Linguagem de Programação. Paradigma Imperativo

Paradigmas de Linguagem de Programação. Paradigma Imperativo Paradigmas de Linguagem de Programação Paradigma Imperativo Paradigma Imperativo Imperare Comandar É o mais antigo de todos; Baseado no modo de funcionamento do computador; São também chamadas de procedurais;

Leia mais