A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.

Apresentações semelhantes


Apresentação em tema: "Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro."— Transcrição da apresentação:

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

2 Discutindo eficiência... Problema: Dada uma lista, verifique se ela é não decrescente. Versão 1: lms1 xs = [ xs!!i | i [0..length xs – 2], j [i+1..length xs – 1], xs!!i > xs!!j] ord xs = (lms1 xs) == [ ] Versão 2: lms2 xs = [ xs!!i | i [0..length xs – 2], xs!!i > xs!!(i+1)] ord xs = (lms2 xs) == [ ] Versão 3: adjacentes xs = zip (init xs) (tail xs) lms3 xs = [(x,y) | (x,y) xs, x > y] ord xs = (lms3 (adjacentes xs)) == [ ] função zip: recebe duas listas como entrada e cria a lista dos pares de elementos de cada posição correspondente nas listas de entrada. Exemplo: zip teste [1..10] [('t',1),('e',2),('s',3),('t',4),('e',5)]

3 Usando Módulos Um módulo em Haskell é uma coleção de funções relacionadas, tipos e classes de tipos. Um script em Haskell pode utilizar uma coleção de modulos. A biblioteca padrão do Haskell é dividida em módulos: – de funções básicas (Prelude) – para funções que envolvem caracteres (data.Char) – listas (Data.List) – entre outros...

4 Exemplo Problema: Dada uma letra minúscula, convertê-la para maiúscula. converte x = chr (ord x - 32) Avaliação: HUGS> converte 'a' ERROR - Undefined variable "ord" As funções chr e ord não estão em Prelude

5 Usando módulos... De duas formas: a) Carrega o módulo diretamente pelo HUGS usando :load Para desabilitar :load b) usa o comando import dentro do seu script da seguinte forma: import

6 Módulos em Haskell ml/libraries/

7 Matrizes Listas de listas que representam as linhas da matriz mat = [[10, 31, 45], [41, 21, 30], [15, 20, 50]] mat (i,j) mat!!i!!j linha i mat!!i coluna j [mat!!i!!j | i [0..n] ] linha coluna

8 Exercícios Considere uma matriz quadrada de dimensões nxn: – defina a transposta da matriz – defina uma lista com os elementos da diagonal principal da matriz – calcule o número de elementos não nulos de uma matriz, por linha da matriz – verifique se a matriz é diagonal – verifique se é triangular superior (todas as entradas da matriz abaixo da diagonal devem ser nulas)

9 Recursão Recursão é uma maneira de definir funções na qual uma chamada a própria função sendo definida é utilizada na sua descrição. - Exemplos: - fatorial de um número: O fatorial de um número natural n > 0 é igual ao produto de todos os números naturais de 1 até n. - sequência de Fibonacci,...

10 Exeplo

11 Exercícios 1) somatório dos elementos de uma lista 2) o maior valor de uma lista


Carregar ppt "Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro."

Apresentações semelhantes


Anúncios Google