Universidade Federal do Espírito Santo
Introdução à Programação
uma Abordagem Funcional
Programação I
Prof.ª Claudia Boeres
[email protected]
CT VII - Sala 32
Departamento de Informática
Centro Tecnológico
Universidade Federal do Espírito Santo
Por que programar?
 para criar ferramentas
 para automatizar processos
 para simulações computacionais
…
A que se destina esse curso?
aprendizagem de conceitos e métodos básicos
para a construção de um programa em um
computador para a resolução de problemas
O que é necessário?
 um computador
 um editor de texto
 aprender uma linguagem de
programação
 aprender a utilizar um interpretador de
programas no linux e/ou no windows
O que é um computador?
 máquina de processar dados numéricos ou
simbólicos
 hardware + dispositivos
 software
 é capaz de interpretar dados, produzir novos
resultados, aceitar novos conceitos para
interpretação de novas situações.
Arquitetura de Von Neumann
Hardware + dispositivos
todo o processamento e armazenamento de
informações em um computador são
realizados via sinais digitais chamados de bits:
0 (desligado) e 1 (ligado)
byte: agrupamento de 8 bits
Memória:
memória RAM (Random Acess Memory)
memória ROM (Read Only Memory)
memória auxiliar ou externa (cd, usb, disco
rígido,...)
O que faz um computador?
Dados
Processamento
resolve problemas de forma automática!!!
Resultado
Para que usar um computador?
 tradução e edição de textos
 reconhecimento de imagens
 gerenciamento de bancos
 roteamento de mensagens em redes de
computadores
…
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
linguagem de programação;
meio
de
uma
testar o programa com o objetivo de verificar se
ele resolve o problema.
Navegação automática de robos
a) qual o problema que quero
resolver?
compreensão do
problema
b) é preciso fornecer informações?
dados de entrada
Fonte: google images
Navegação automática de robos
c) qual a estratégia de solução que
devo adotar?
planejando a
solução
d) como automatizar o processo?
codificando por meio
de um programa de computador
e) funciona?
TESTES!!!!
Fonte: google images
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 e para cada entrada, deve executar e
parar com a saída correta
soma x y = x + y
f x = 1/x
eficiência: o programa deve usar de forma
adequada os recursos da máquina (espaço de
memória e tempo de execução)
ordenação de elementos
Ordenação de elementos
Bubble sort
Quick sort
Fonte: google images
Paradigmas de Linguagem de
Programação
 uma forma específica de se pensar em
programação
 Exemplos:
– procedural
– funcional
o que fazer!
como fazer!
partir da rua X
andar 100 metros
virar a direita
subir e descer a ladeira
virar a esquerda
andar 20 metros
chegou ao destino
Fonte: google images
Programação Funcional
 elaborar programas para uma máquina
funcional que:
– avalia expressões escritas segundo regras
sintáticas bem definidas;
– aceita a definição de novas funções;
– avalia funções
Máquina Funcional
lê expressão
avalia
exibe resultado
2+4
Soma de 2
e4
6
Máquina funcional
usuário: 4 – 2
resposta: 2
usuário: f 3 - 2
resposta: definição de f não conhecida
usuário: carrega arquivo com funções
resposta: ok
usuário: f 3 - 2
resposta: 2
Arquivo texto
fx=x+1
Recordando funções matemáticas
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ção total e parcial
Seja f uma função de A em B. Então:
 f é uma função total: Domínio (f) = A
 f é uma função parcial: 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:
explicitados
todos
os
elementos
são
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
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 eficiência, se aplicam a qualquer
artefato. Escolha 3 artefatos quaisquer e discuta os dois conceitos.
Download

Slide 1 - claudiaboeres