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.