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

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

Departamento de Informática Universidade Federal do Espírito Santo

Apresentações semelhantes


Apresentação em tema: "Departamento de Informática Universidade Federal do Espírito Santo"— Transcrição da apresentação:

1 Departamento de Informática Universidade Federal do Espírito Santo
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 Theme created by Sakari Koivunen and Henrik Omma Released under the LGPL license. 1

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 a) Carrega o módulo diretamente pelo HUGS usando
Usando módulos... De duas formas: a) Carrega o módulo diretamente pelo HUGS usando :load <nome do módulo> Para desabilitar :load b) usa o comando import dentro do seu script da seguinte forma: import <nome do módulo>

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 "Departamento de Informática Universidade Federal do Espírito Santo"

Apresentações semelhantes


Anúncios Google