• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

Share "Introdução à Programação: uma Abordagem Funcional"

Copied!
25
0
0

Texto

(1)

Introdução à Programação:

uma Abordagem Funcional

Programação I

Engenharia de Computação Prof.ª Claudia Boeres

Prof. Estefhan Dazzi Wandekokem

(2)

Conceitos Básicos

 construção de programas para

computadores;

 solução de problemas x soluções prontas  devem satisfazer requisitos de qualidade  construção de programas: através da

(3)

Computadores

 máquina de processar dados numéricos ou

simbólicos

hardware + software

é capaz de interpretar dados, produzir

novos resultados, aceitar novos conceitos para interpretação de novas situações.

(4)
(5)

Memória

 memória RAM (Random Acess Memory)  memória ROM (Read Only Memory)

 memória auxiliar ou externa (cd, usb,

(6)

Representação/armazenamento

da informação

 BIT:menor unidade de informação (0 ou 1)  Medidas:

1 byte : 8 bits

1 Kbyte: 1024 bytes 1 Mbyte: 1024 Kbytes 1 Gbyte: 1024 Mbytes

(7)

Exemplos de utilização

 tradução e edição de textos reconhecimento de imagens gerenciamento de bancos

roteamento de mensagens em redes de

(8)

O que é programar?

 identificar, organizar e codificar o

conhecimento para a descrição de um conceito para o computador.

(9)

O que é necessário para

programar?

 compreender o problema a ser resolvido;  planejar uma solução;

 descrever a solução por meio de uma

linguagem de programação;

 testar o programa com o objetivo de

(10)

Linguagem de Programação

 formalismo: padrões segundo os quais um

agente possa interpretar e/ou descrever informação

(11)

Por que usar linguagem de

programação?

 não é possível ainda usar linguagem

natural para programar no computador;

 a linguagem de máquina é difícil de ser

compreendida;

 são mais próximas da linguagem natural,

podendo-se focar no problema e não nas dificuldades de entendimento da linguagem;

(12)

Propriedades de um programa

 correção: o programa deve descrever

corretamente o conhecimento segundo a intenção desejada;

 desempenho: o programa deve usar de

forma adequada os recursos e o tempo da máquina considerada.

(13)

Paradigmas de Linguagem de

Programação

 uma forma específica de se pensar em

programação

(14)

Programação Funcional

 podemos entender o computador como

uma “máquina funcional”, capaz de:

 avaliar expressões escritas segundo

regras sintáticas bem definidas;

 aceitar a definição de novas funções e

(15)

Máquina Funcional

lê expressão

avalia

exibe resultado

2+4 Soma de 2 e 4 6

(16)

Exemplo

usuário: 4 * 3 – 2

máquina funcional: 10 usuário: f 2 + 10

máquina funcional: definição de f não conhecida

usuário: carrega arquivo com funções máquina funcional: ok

usuário: f 2 + 10

máquina funcional: 13

f x = x + 1

(17)

Funções

 associação entre elementos de dois

conjuntos A e B tal que o conjunto de partida A seja igual ao domínio da função;

 em outras palavras: seja F uma função de

A em B. Então F representa o conjunto de pares ordenados (x,y) tais que para todo x

(18)

Funções

Seja f uma função de A em B. Então:

 f é uma função total se Domínio (f) = A

(19)

Exemplos

a) A = {a, b, c}, B = {1, 2, 3}

f: A → B tq f = {(a,1), (b,1), (c,3)} b) A = {1, 2, 3}, B = {a, e, i, o, u}

f: A → B tq f = {(1,a), (2,e), (2,i), (3,o)} c) A = {a, b, c}, B = {1, 2, 3}

(20)

Descrições Funcionais

 extensional: todos os elementos são

explicitados

f = {(a,1), (b,2), (c,3)}

 intencional: os elementos são descritos

através de um critério de pertinência

(21)

Exemplos

a) f: ℜ → ℜ tq f (x) = 1/x

b) g: ℵ → ℵ tq g(y) = y – 1 c) f: ℜ → ℜ tq f (x) = x2 - 1

(22)

Por que aprender programação

através do paradigma

funcional?

 este é o momento inicial, propício para

estimular a busca de problemas e apresentação dos fundamentos;

 o paradigma procedural requer o bom

entendimento do funcionamento de um computador (máquina de Von Neumann);

(23)

Por que aprender programação

através do paradigma

funcional?

 o paradigma lógico: requer conhecimento

de lógica matemática;

 o paradigma funcional: requer o

conhecimento de funções;

 a ineficiência de linguagens funcionais

tem se reduzido em relação a linguagens procedurais;

 descrições funcionais podem servir como

especificações do programa (correção), já que descrevem “o que fazer” ao invés de “como fazer”.

(24)

Algumas aplicações de Haskell

Fu n c t i o n a l p r o g r a m m i n g l a n g u a g e s a r e u s e d i n s u b s t a n t i a l a p p l i c a t i o n s . Fo r e x a m p l e :  So f t w a r e A G, a m a j o r Ge r m a n s o f t w a r e c o m p a n y , m a r k e t a n e x p e r t s y s t e m (N a t u r a l Ex p e r t ) w h i c h i s p r o g r a m m e d i n a f u n c t i o n a l l a n g u a g e . T h e i r u s e r s f i n d i t e a s y t o d e v e l o p t h e i r a p p l i c a t i o n s i n t h i s l a n g u a g e , t h r o u g h w h i c h t h e y g a i n a c c e s s t o a n u n d e r l y i n g d a t a b a s e s y s t e m . I t a l l r u n s o n a n I B M m a i n f r a m e .  Er i c s s o n h a v e d e v e l o p e d a n e w f u n c t i o n a l l a n g u a g e , Er l a n g , t o u s e i n t h e i r f u t u r e t e l e p h o n y a p p l i c a t i o n s . T h e y h a v e a l r e a d y w r i t t e n 1 3 0 k -l i n e Er l a n g a p p l i c a t i o n s , a n d f i n d t h e m v e r y m u c h s h o r t e r a n d f a s t e r t o d e v e l o p .  A m o c o r a n a n e x p e r i m e n t i n w h i c h t h e y r e -c o d e d i n M i r a n d a , a l a zy f u n c t i o n a l l a n g u a g e , a s u b s t a n t i a l f r a c t i o n o f t h e i r m a i n o i l -r e s e r v o i r s i m u l a t i o n c o d e , a c r i t i c a l a p p l i c a t i o n . T h e r e s u l t i n g p r o g r a m w a s v a s t l y s h o r t e r , a n d i t s p r o d u c t i o n r e v e a l e d a n u m b e r o f e r r o r s i n t h e e x i s t i n g s o f t w a r e . A m o c o s u b s e q u e n t l y t r a n s c r i b e d t h e f u n c t i o n a l p r o g r a m i n t o C++ w i t h e n c o u r a g i n g r e s u l t s .  A r e s e a r c h e r a t t h e M I T RE c o r p o r a t i o n i s u s i n g H a s k e l l t o p r o t o t y p e h i s d i g i t a l s i g n a l -p r o c e s s i n g a -p -p l i c a t i o n s .  Re s e a r c h e r s a t Du r h a m U n i v e r s i t y u s e d M i r a n d a , a n d l a t e r H a s k e l l , i n a s e v e n -y e a r p r o j e c t t o b u i l d L OL I T A , a 3 0 ,0 0 0 -l i n e p r o g r a m f o r n a t u r a l -l a n g u a g e u n d e r s t a n d i n g .  Qu e r y i s t h e q u e r y l a n g u a g e o f t h e O2 o b j e c t -o r i e n t e d d a t a b a s e s y s t e m . O2 Qu e r y i s p r o b a b l y t h e m o s t s o p h i s t i c a t e d c o m m e r c i a l l y -a v a i l a b l e o b j e c t -o r i e n t e d d a t a b a s e q u e r y l a n g u a g e a n d i t i s a f u n c t i o n a l l a n g u a g e .  I CA D I n c m a r k e t a CA D s y s t e m f o r m e c h a n i c a l a n d a e r o n a u t i c a l e n g i n e e r s . T h e l a n g u a g e i n w h i c h t h e e n g i n e e r s d e s c r i b e t h e i r d e s i g n i s f u n c t i o n a l , a n d i t u s e s l a zy e v a l u a t i o n e x t e n s i v e l y t o a v o i d r e c o m p u t i n g p a r t s o f t h e d e s i g n w h i c h a r e n o t c u r r e n t l y v i s i b l e o n t h e s c r e e n . T h i s r e s u l t s i n s u b s t a n t i a l p e r f o r m a n c e i m p r o v e m e n t s .  A n i n c e s t u o u s e x a m p l e : t h e Gl a s g o w H a s k e l l c o m p i l e r i s w r i t t e n i n H a s k e l l : a 1 0 0 ,0 0 0 -l i n e a p p l i c a t i o n .  A n d a n o t h e r a p p l i c a t i o n s

(25)

Exercícios

1. Conceitue programação de computadores.

2. Quais os principais paradigmas de programação e o que os diferenciam.

3. Faça uma descrição intencional da função: F = {1,3,5,7,...}. 4. Faça uma listagem de outros exemplos de programas de

computador que são usados hoje em diferentes áreas do conhecimento e por diferentes profissionais.

5. Apresente exemplo de outras linguagens técnicas usadas pelo ser humano para descrever conhecimento.

6. Os conceitos de correção e de desempenho, se aplicam a qualquer artefato. Escolha 3 artefatos quaisquer e discuta os dois conceitos.

Referências

Documentos relacionados

A atribuição de incentivos financeiros à equipa multiprofissional depende da concretização dos critérios para atribuição das unidades contratualizadas (UC) referentes às

A Lista de Fauna Ameaçada de Extinção e os Entraves para a Inclusão de Espécies – o Exemplo dos Peixes Troglóbios Brasileiros.. The List of Endangered Fauna and Impediments

Para esse fim, analisou, além do EVTEA, os Termos de Referência (TR) do EVTEA e do EIA da Ferrogrão, o manual para elaboração de EVTEA da empresa pública Valec –

Requiring a realignment of the EVTEA with its ToR, fine-tuning it to include the most relevant socio-environmental components and robust methodologies for assessing Ferrogrão’s impact

Na faixa de mW, cuidado deverá ser tomado para que o dispositivo de medição não seja afetado por fluxos de ar, vibrações, e mudanças termais (o recipiente deverá ser o menos

Ainda segundo Gil (2002), como a revisão bibliográfica esclarece os pressupostos teóricos que dão fundamentação à pesquisa e às contribuições oferecidas por

Somente na classe Aberta Jr e Sr, nas modalidades de Apartação, Rédeas e Working Cow Horse, que será na mesma passada dessas categorias e os resultados serão separados. O

Mestrado em: Nutrição Humana ou Nutrição Clínica ou Saúde Coletiva ou Ciências da Saúde ou Ciências ou Saúde ou Alimentos e Nutrição e Desenvolvimento na