Introdução à Programação:
uma Abordagem Funcional
PD I – Engenharia Elétrica
Prof.ª Claudia Boeres
2008/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 descrição
de funções

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.

Máquina de Von Neumann
Memória

memória RAM (Random Acess Memory)

memória ROM (Read Only Memory)
memória auxiliar ou externa (cd, usb, disco
rígido,...)

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
Exemplos de utilização

tradução e edição de textos

reconhecimento de imagens

gerenciamento de bancos
roteamento de mensagens
computadores etc.

em
redes
de
O que é programar?
identificar, organizar e codificar o conhecimento
para a descrição de um conceito para o
computador.

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 verificar se
ele resolve o problema.

Linguagem de Programação
formalismo: padrões segundo os quais um
agente possa interpretar e/ou descrever
informação


formalismo = sintaxe + semântica
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;
 tradutores.

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.

Paradigmas de Linguagem de
Programação
uma forma
programação


específica
de
procedural, funcional e o lógico
se
pensar
em
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
considerá-las na avaliação de expressões

Máquina Funcional
lê expressão
avalia
exibe resultado
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
Arquivo texto
fx=x+1
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  A, existe y
 B, tal que (x, y)  F.

Funções
Seja f uma função de A em B. Então:

f é uma função total se Domínio (f) = A

f é uma função parcial se Domínio (f)  A
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}
f: A  B tq f = {(a,1), (b,1)}
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


f = {(x,y) | x   e y = 2x}
Exemplos
a) f:    tq f (x) = 1/x
b) g:    tq g(y) = y – 1
c) f:    tq f (x) = x2 - 1
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);

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”.

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.
Download

Slide 1 - claudiaboeres