Testes em Haskell com a framework HUnit 1.0
|
|
|
- Pedro Vilalobos César
- 7 Há anos
- Visualizações:
Transcrição
1 Teste de programas em Haskell com a framework HUnit 1.0 Pedro Strecht Mestrado em Engenharia Informática 3 de Maio de Testes em Haskell com HUnit 1.0 Breve introdução à linguagem Haskell Apresentação da aplicação em teste Estudo da framework HUnit 1.0 Arquitectura do ambiente de testes Demonstração de testes 2
2 A linguagem Haskell Linguagem funcional criada em 1990 Motivação: tornar o processo de escrita e manutenção de grandes sistemas de software mais simples e económico. Bom poder expressivo na formulação de algoritmos Outras linguagens funcionais: Lisp, Scheme, ML, Erlang Outras quase funcionais: SQL e XSL 3 Exemplo de utilização Implementação do algoritmo quicksort C qsort( a, lo, hi ) int a[], hi, lo; { int h, l, p, t; if (lo < hi) { l = lo; h = hi; p = a[hi]; do { while ((l < h) && (a[l] <= p)) l = l+1; while ((h > l) && (a[h] >= p)) h = h-1; if (l < h) { t = a[l]; a[l] = a[h]; a[h] = t; } } while (l < h); t = a[l]; a[l] = a[hi]; a[hi] = t; qsort( a, lo, l-1 ); qsort( a, l+1, hi ); } } Haskell qsort [] = [] qsort (x:xs) = qsort lt ++ [x] ++ qsort ge where lt = [y y <- xs, y < x] ge = [y y <- xs, y >= x] 4
3 Principais características do Haskell Concisão Facilidade de compreensão Forte sistema de tipos Avaliação lazy Abstracção poderosa Gestão automática de memória 5 Tipos e estruturas em Haskell Tipos primitivos: Números: Int, Float, Double Caracteres: Char Booleano: Bool Tipos compostos: Tuplos: (Int, Float, String) (42, 3.14, Hello World! ) Listas: [Int] [1, 2, 3], [Char] Hello World! Bindings (não são atribuições): let y = x + 2 x = 5 in x/y Estruturas condicionais (if-then-else, case): if a == b then a else b Não existem estruturas de ciclo recursividade 6
4 Funções em Haskell Definição única: add :: Int -> Int -> Int add x y = x + y Definição com padrões: sum :: [Int] -> Int sum [] = 0 sum (x:xs) = x + sum xs Definição com padrões e guardas: abs :: Integer -> Integer abs 0 = 0 abs x x > 0 = x x < 0 = -x 7 Haskell Existem mais algumas construções (mas não são muitas) Estão continuamente em desenvolvimento novas extensões à linguagem Bibliotecas e Frameworks Site oficial: 8
5 Aplicação em teste Aplicação de simplificação e derivação de expressões matemáticas O objectivo da aplicação é solicitar uma expressão ao utilizador e calcular a expressão simplificada e a sua derivada Desenvolvimento em Haskell A sintaxe das expressões matemáticas é próxima da notação algébrica Suporte de vários operadores algébricos e funções matemáticas Validação sintáctica e semântica de expressões 9 Gramática das expressões EBNF Exemplos 10
6 Arquitectura da aplicação 11 Framework de testes HUnit 1.0 HUnit - Haskell Unit Testing Framework de testes unitários para Haskell inspirada no JUnit para Java Desenvolvida em 2002 por Dean Harington, encontrando-se ainda na versão 1.0 Simplicidade na criação de testes, agrupamento e execução de grandes colecções de testes Inclui um controlador baseado em texto Facilidade de extensão e costumização Site oficial: 12
7 Asserções Uma asserção é o bloco mais básico para a construção de um teste Define-se como sendo a afirmação de que uma proposição é verdadeira No contexto de linguagens de programação equivale a uma condição Existe um tipo de dados específico para as representar: type Assertion = IO () Lançamento de excepção na presença de um erro: assertfailure :: String -> Assertion assertfailure msg = ioerror(usererror ("HUnit:" ++ msg)) Três tipos de asserções: Booleana: Afirma que uma expressão booleana é verdadeira; String: Afirma que uma string é nula; Igualdade: Afirma que duas expressões são iguais. 13 Asserções Asserções booleanas: assercao1 = assertbool "isnumber 2.5" (isnumber "2.5") assercao2 = assertbool "isnumber 2a5" (isnumber "2a5") Asserções de string: assercao1 = assertstring (substr "2x+3" 0 0) assercao2 = assertstring (substr "2x+3" 1 3) Asserções de igualdade: assercao1 = assertequal "Simplificação: 2x+1+3x+4" "5x+5" (simplif "2x+1+3x+4") assercao2 = assertequal "Simplificação: 2x+1+3x+4" "8x-2" (simplif "2x+1+3x+4") Os três tipos retornam um valor de tipo Assertion Podem associar-se identificadores por binding 14
8 Casos de teste Um caso de teste é um conjunto de uma ou mais asserções Criados com a função TestCase TestCase :: Assertion -> Test Associação a identificador por binding Criação através de identificador de asserção ou com asserção indicada no testes: cteste1 = TestCase assercao1 cteste2 = TestCase (assertstring (substr "2x+3" 1 3)) Caso de teste com duas asserções: cteste = TestCase (do assertequal ("fmt_int: "++expressao) esperado fmt_int assertequal ("fmt_ext: "++expressao) expressao fmt_ext) where expressao = "3x^2-3x+4" esperado = "3*x^2+-3*x+4" fmt_int = ext2int expressao fmt_ext = int2ext fmt_int 15 Agrupamento de testes Um teste é um conjunto de casos de teste Existe um tipo de dados específico para os representar, que é o mesmo do casos de teste: data Test = TestCase Assertion TestList [Test] TestLabel String Test Exemplo na aplicação em teste: tsnumeros = TestCase (assertequal "Simplificacao:" "9" (simplif "2+7")) tsmonomios = TestCase (assertequal "Simplificacao:" "9x" (simplif "2x+7x")) tspolinomio = TestCase (assertequal "Simplificacao:" "12x^2+4x+5" (simplif "3x^2+9x^2+3x+5+x")) tsomas = TestLabel "Somas" (TestList [TestLabel "Numeros" tsnumeros, TestLabel "Monomios" tsmonomios, TestLabel "Polinomio" tspolinomio]) tpnumeros = TestCase (assertequal "Simplificacao:" "14" (simplif "2*7")) tpmonomios = TestCase (assertequal "Simplificacao:" "14x^2" (simplif "2x*7x")) tppolinomio = TestCase (assertequal "Simplificacao:" "405x^6" (simplif "3x^2*9x^2*3x*5*x")) tprod = TestLabel "Produtos" (TestList [TestLabel "Numeros" tpnumeros, TestLabel "Monomios" tpmonomios, TestLabel "Polinomio" tppolinomio]) suitetp = TestLabel "Polinómios" (TestList [tsomas, tprod]) 16
9 Agrupamento de testes Árvore de testes 17 Contagem de casos de teste É possível contar o número de casos de teste que estão incluídos num nó da árvore, utilizando a função testcasecount: testcasecount :: Test -> Int Contagem na árvore de testes: Só são contados os testes que são efectivamente casos de teste Acrescentando um caso de teste na raiz da árvore: tpoten = TestCase (assertequal "Simplificacao:" "8" (simplif "2^3")) suitetp = TestLabel "Polinómios" (TestList [tsomas, tprod, tpoten]) 18
10 Caminhos na hierarquia de testes Forma de identificar univocamente um teste da árvore de testes Tipos de dados para os representar: data Node = ListItem Int Label String deriving (Eq, Show, Read) type Path = [Node] Utiliza-se a função testcasepath para obter todos os caminhos de um teste testcasepaths :: Test -> [Path] O resultado é uma lista com todos os caminhos (que tambem são listas) desde o caso de teste em direcção ao teste indicado Exemplo na aplicação de teste: testcasepaths suitetp [[Label "Números", ListItem 0, Label "Somas", ListItem 0, Label "Polinómios"], [Label "Monomios", ListItem 1, Label "Somas", ListItem 0, Label "Polinómios"], [Label "Polinomio", ListItem 2, Label "Somas", ListItem 0, Label "Polinómios"], [Label "Números", ListItem 0, Label "Produtos", ListItem 1, Label "Polinómios"], [Label "Monomios", ListItem 1, Label "Produtos", ListItem 1, Label "Polinómios"], [Label "Polinomio", ListItem 2, Label "Produtos", ListItem 1, Label "Polinómios"], [ListItem 2, Label "Polinómios"]] 19 Caminhos na hierarquia de testes Árvore de testes com nós (testes) numerados Caminhos identificados: 20
11 Execução de testes Envolve a execução de um caso de teste, Se for uma árvore executa-se todos os casos de teste nela incluídos, em série (ordem decrescente de profundidade da esquerda para a direita) São mantidos quatro contadores durante a execução, definidos numa estrutura de dados: data Counts = Counts {cases, tried, errors, failures :: Int} deriving (Eq, Show, Read) Casos de teste bem sucedidos não são contabilizados, mas são de cálculo simples: tried - (errors + failures)) A atenção foca-se nos casos em que há erros ou falhas 21 Execução de testes Os testes são executados por um controlador de testes (função), com modelo de execução fixo mas pode variar a forma de apresentar resultados. Eventos aos quais o controlador de teste responde: Início de um teste Ocorrência de um erro Ocorrência de uma falha O HUnit só incluí um controlador de testes que é baseado em texto, na função: runtesttext :: PutText st -> Test -> IO (Counts, st) Pode ser adaptado fazendo variar o esquema de apresentação (reporting scheme) 22
12 Execução de testes O Hunit fornece uma forma mais cómoda de executar testes com um esquema de apresentação por defeito, o terminal: runtesttt :: Test -> IO Counts runtesttt t = do (counts, 0) <- runtesttext (puttexttohandle stderr True) t return counts Variantes possíveis: Enviar a saída dos testes para um ficheiro, indicando o respectivo handle Não atender a certos eventos Alterar a forma de apresentação de erros e falhas 23 Execução de testes Execução da suite de testes: runtesttt suitetp Cases: 7 Tried: 0 Errors: 0 Failures: 0 Cases: 7 Tried: 1 Errors: 0 Failures: 0 Cases: 7 Tried: 2 Errors: 0 Failures: 0 ### Failure in: Polinómios:0:Somas:2:Polinomio Simplificacao: expected: "10x^2+8x+3" but got: "12x^2+4x+5" Cases: 7 Tried: 3 Errors: 0 Failures: 1 Cases: 7 Tried: 4 Errors: 0 Failures: 1 ### Failure in: Polinómios:1:Produtos:1:Monomios Simplificacao: expected: "15x^3" but got: "14x^2" Cases: 7 Tried: 5 Errors: 0 Failures: 2 Cases: 7 Tried: 6 Errors: 0 Failures: 2 Cases: 7 Tried: 7 Errors: 0 Failures: 2 24
13 Funcionalidades avançadas Operadores específicos para tornar a escrita de asserções e testes mais concisa e conveniente (só quando não há mensagens): 25 Funcionalidades avançadas Utilização da função assert com sobrecarga de tipos de classes, para criação de asserções: class Assertable t where assert :: t -> Assertion instance Assertable () where assert = return instance Assertable Bool where assert = assertbool "" instance (ListAssertable t) => Assertable [t] where assert = listassert instance (Assertable t) => Assertable (IO t) where assert = (>>= assert) 26
14 Funcionalidades avançadas Utilização da função test com sobrecarga de tipos de classes, para criação de testes: class Testable t where test :: t -> Test instance Testable Test where test = id instance (Assertable t) => Testable (IO t) where test = TestCase. assert instance (Testable t) => Testable [t] where test = TestList. map test 27 Arquitectura do ambiente de testes O ambiente de testes tem uma arquitectura em duas camadas com quatro componentes: «executável» Aplicação a testar «biblioteca» Suite de de testes «framework» HUnit 1.0 «executável» Executor de de testes 28
Testes de Programas em Haskell
Mestrado em Engenharia Informática Testes de Programas em Haskell Pedro Rodrigo Caetano Strecht Ribeiro Junho 2005 Sumário 1 Introdução 6 2 Breve introdução à linguagem Haskell 7 2.1 O paradigma funcional.....................................
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
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
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
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
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
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
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).
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):
Orientação a Objetos e Java
Orientação a Objetos e Java Daves Martins [email protected] Mestre em Computação de Alto Desempenho pela UFRJ Especialista em Banco de Dados Analista Web Orientação a Objetos e Java Características
Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.
Computação L2 Linguagem C++ [email protected] Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);
Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
Linguagens de Programação. Programação Funcional e Haskell Programação Interativa Thiago Alves
Linguagens de Programação Programação Funcional e Haskell Programação Interativa Thiago Alves 1 Introdução Vimos como Haskell pode ser usado para escrever programas batch que recebem todas suas entradas
RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:
RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em: http://www.oxnar.com.br/aulas/java ATIVIDADE ELABORAR O PROGRAMA DE CÁLCULOS DE ÁREAS USANDO
Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação
Ederson Luiz da Silva Ciência da Computação Algoritmos e Programação Linguagem de programação Linguagem de Programação Linguagem de máquina http://www.assemblyprogressivo.net/p/curso.html Linguagem de
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
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
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
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
Programação Funcional em Haskell
Funções Genéricas sobre Listas Junho - 2009 1 Funções Genéricas 2 Introdução Em Haskell, como em qualquer linguagem funcional, funções são objetos de primeira classe, em que funções não avaliadas podem
Programação Funcional Aulas 9, 10 & 11
Programação Funcional Aulas 9, 10 & 11 Sandra Alves DCC/FCUP 2015/16 1 Programas interativos Motivação Até agora apenas escrevemos programas que efetuam computação pura, i.e., transformações funcionais
Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)
Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida) Não-terminais são nomes mnemônicos colocados entre parênteses angulares. Vocabulário terminal formado por
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:
Programação de Computadores II
Programação de Computadores II 1. Programação Básica 2019.1 Slides adaptados do material de Karina Mochetti Problema, Algoritmo, Programa Um programa de computador é a implementação de um algoritmo para
TÉCNICO DE INFORMÁTICA - SISTEMAS
782 - Programação em C/C++ - estrutura básica e conceitos fundamentais Linguagens de programação Linguagem de programação são conjuntos de palavras formais, utilizadas na escrita de programas, para enunciar
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
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
Lógica de Hoare. Abordagem que usaremos: aplicar o método de Hoare sobre uma linguagem de programação imperativa simplificada.
Lógica de Hoare Método axiomático para provar que determinados programas são corretos. Introduzido em 1969 por Charles Antony Richard Hoare. Também utilizado para especificar a semântica de linguagens
Introdução à Programação em C (I)
Introdução à Programação em C (I) IAED Tagus, 2009/2010 Organização de Ficheiros em C Organização Típica de Ficheiros em C Inclusão de bibliotecas de sistema Inclusão de bibliotecas locais Definição de
Sintaxe da linguagem Java
Sintaxe da linguagem Java (PG) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira ([email protected]) Classe pública com método main Uma classe pública com nome A tem
Programação de Computadores:
Instituto de C Programação de Computadores: Introdução ao FORTRAN Luis Martí Instituto de Computação Universidade Federal Fluminense [email protected] - http://lmarti.com Introdução ao FORTRAN Cinco aspectos
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
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:
Lição 4 Fundamentos da programação
Lição 4 Fundamentos da programação Introdução à Programação I 1 Objetivos Ao final desta lição, o estudante será capaz de: Identificar as partes básicas de um programa em Java Reconhecer as diferenças
Programação de Computadores III
Programação de Computadores III Introdução ao FORTRAN Professor Leandro Augusto Frata Fernandes [email protected] Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2013.1/tcc-00.157
Métricas. Métricas. [Engenharia de Software II] Adriano J. Holanda 11/9/2017
Métricas [Engenharia de Software II] Adriano J. Holanda 11/9/2017 Algumas Métricas Medidas que podem ser usadas para monitoramento e controle do processo de desenvolvimento. Número de linhas de código
Um algoritmo deve conter passos não ambíguos, executáveis e que sejam terminados quando seguidos.
Programação Um programa é uma sequência de instruções de uma linguagem de programação (VB no nosso caso). Cada instrução representa uma qualquer acção que nós pretendemos ver executada. Programar consiste
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
Programação de Computadores III
Programação de Computadores III Introdução ao FORTRAN Professor Hugo de Oliveira Barbalho [email protected] Material produzido pelo professor: Leandro Augusto Frata Fernandes ([email protected])
Programação I Aula 17 Correção de programas Pedro Vasconcelos DCC/FCUP
Programação I Aula 17 Correção de programas DCC/FCUP DCC/FCUP 2019 1/ 30 Nesta aula 1 Classes de erros 2 Execução passo-a-passo 3 Testes na documentação 4 Asserções 5 Outros erros comuns DCC/FCUP 2019
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;
Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java
Guia da Sintaxe do Java TIPOS PRIMITIVOS DE DADOS DO JAVA São os tipos nativos de dados do Java, que podem ser usados na declaração de atributos, variáveis, parâmetros. Tipo primitivo Tamanho Valor padrão
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,
Capítulo 8. Estruturas de Controle no Nível de Sentença
Capítulo 8 Estruturas de Controle no Nível de Sentença Níveis de fluxo de controle Computações são realizadas por meio da avaliação de expressões e da atribuição dos valores a variáveis Para tornar a computação
Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string
Pascal -Cabeçalho do programa Áreas do programa -Área de declarações -Corpo do programa - label - const - type - var - procedure - function - integer - real - byte - boolean - char - string Program
Programação Funcional. Capítulo 21. Parsers. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2018.
Programação Funcional Capítulo 21 Parsers José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2018.2 1/51 1 Parsers 2 Definindo um tipo para parsers 3 Parsers básicos 4
Introdução à Programação em C Input / Output
Introdução à Programação em C Input / Output Resumo Aula Anterior Programa começa com função main() Sintaxe para definição de funções Definição de variáveis e atribuições Estruturas de controlo if-then
1.2 OPERAÇÕES BÁSICAS EM ALGORITMOS E PROGRAMAS 18
ÍNDICE MÓDULO 1 INTRODUÇÃO À ALGORITMIA 11 1.1 PROGRAMAS E ALGORITMOS 12 Fases da programação 12 Algoritmos e algoritmia 13 Algoritmos em linguagem informal, pseudocódigo e fluxogramas 14 Símbolos utilizados
Linguagens de Programação Programação Funcional (Haskell)
Linguagens de Programação Programação Funcional (Haskell) Andrei Rimsa Álvares Sumário Introdução Programação funcional Linguagens funcionais Haskell Casamento de padrões Funções de ordem superior Avaliação
Análise de Programação
Análise de Programação Fundamentos da Linguagem de Programação Java Prof. Gilberto B. Oliveira Variáveis Atributos: Variáveis Declaradas fora de um método, sem o modificador static Variáveis membro ou
Preparatório OBI. Prof. André Gustavo Duarte de Almeida docente.ifrn.edu.br/andrealmeida. Aula 01 Introdução a C++
Preparatório OBI Prof. André Gustavo Duarte de Almeida [email protected] docente.ifrn.edu.br/andrealmeida Aula 01 Introdução a C++ Roteiro Introdução ao C++ Primeiro Programa Variáveis Operadores
Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM.
Teoria da Computação e Algoritmos Introdução à Linguagem Pascal 1 Estrutura de um programa INÍCIO FIM. PROGRAM END.
Programação Orientada a Objetos
Programação Orientada a Objetos Professor: Diego Oliveira Conteúdo 05: Linguagem Java Conteúdo da Aula Linguagem Java Tipos Primitivos Operadores Aritiméticos Operadores Lógicos Precedência de Operadores
Módulo Lógica Programação com aplicações em Java. Projeto khouse Profissionalizante Profª Larissa Brandão
Educação Módulo Lógica e Ética de Programação com aplicações em Java Projeto khouse Profissionalizante Profª Larissa Brandão Educação e Ética Fundamentos da Programação Objetivos: Reconhecer as diferenças
AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK)
AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK) Ø LP Java. Estrutura de um programa em Java. Ø Conjunto de caracteres utilizado. Ø Identificadores. Ø Variáveis e constantes. Ø Tipos
Diagramas Sintáticos
Diagramas Sintáticos Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira ([email protected]) Classe pública com método main Cada classe X pública é declarada num ficheiro
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.
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:
Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação
Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Programação em C Variáveis e Expressões DCA0800 Algoritmos e Lógica de Programação Heitor Medeiros Florencio
SQL Pacotes. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados Pacotes
SQL Pacotes Laboratório de Bases de Dados Características Pacotes objetos do banco de dados são equivalentes a bibliotecas Armazenam procedimentos funções definições de cursores declarações de variáveis
Fundamentos da Programação
Fundamentos da Programação Solução do Primeiro Teste 29 de Março de 2014 09:00 10:30 1. (1.0) O que é um processo computacional? Qual a relação entre um programa e um processo computacional? Um processo
Linguagem Java - Introdução
Linguagem Java - Introdução Identificadores válidos resultado teste01 _numeroclientes $fortuna Identificadores Identificadores inválidos 101dalmatas 34 #x Palavras reservadas abstract assert*** boolean
Linguagens de Programação I
Linguagens de Programação I Tema # 4 Operadores em C Susana M Iglesias FUNÇÕES ENTRADA-SAÍDA I/O printf(), utilizada para enviar dados ao dispositivo de saída padrão (stdout), scanf(), utilizada para ler
Linguagem C. Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira
Linguagem C Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira Centro de Cálculo Instituto Superior de Engenharia de Lisboa João
Interpretação e Compilação de Linguagens de Programação Semântica CALCI com Ambiente
Interpretação e Compilação de Linguagens de Programação Semântica CALCI com Ambiente 14 de Março de 2013 Nesta aula apresenta-se uma definição mais eficiente da semântica operacional da linguagem CALCI.
Algoritmos e Introdução à Programação. Lógica e Linguagem de Programação
Algoritmos e Introdução à Programação Lógica e Linguagem de Programação Prof. José Honorato Ferreira Nunes [email protected] http://softwarelivre.org/zenorato/honoratonunes Linguagem C Prof.
Material III-Bimestre Introdução e conceitos fundamentais da Linguagem C#
Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina POO -2017 Material III-Bimestre Introdução e conceitos fundamentais da Linguagem C# http://www1.univap.br/~wagner Prof.
Conceitos básicos de programação
Para aprender uma linguagem de programação podemos começar por conhecer os vocábulos ou símbolos que formam o seu léxico e depois aprender como esses vocábulos integram as instruções (frases) que compõe
Programação com Acesso a BD. Programação com OO Acesso em Java
Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática
CAP. VI ANÁLISE SEMÂNTICA
CAP. VI ANÁLISE SEMÂNTICA VI.1 Introdução Semântica SIGNIFICADO, SENTIDO LÓGICO, COERÊNCIA,... Diferença entre SINTAXE e SEMÂNTICA Sintaxe : descreve as estruturas de uma linguagem; Semântica : descreve
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).
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
Linguagens de Programação Aula 14
Linguagens de Programação Aula 14 Celso Olivete Júnior [email protected] Na aula passada Linguagem Haskell Funções Tipos básicos Expressões 2 Na aula de hoje Linguagem Haskell Listas 3 Listas e Tuplas
Programação Estruturada e Orientada a Objetos
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Programação Estruturada e Orientada a Objetos Docente: Éberton da Silva Marinho e-mail: [email protected] [email protected]
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
Trabalhos de Laboratório de Interpretação e Compilação de Linguagens de Programação
Trabalhos de Laboratório de Interpretação e Compilação de Linguagens de Programação 11 de Maio de 2013 Os trabalhos práticos da disciplina de Interpretação e Compilação de Linguagens, incluindo o trabalho
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
