Upload
internet
View
106
Download
0
Embed Size (px)
Citation preview
1
Curso Sistemas de InformaçãoDisciplina: Arquitetura de Software
Paradigmas de Programação
2
A maioria das linguagens de programação são extensas e complexas e normalmente integram várias idéias. No entanto, cada linguagem baseia-se, usualmente, numa idéia central, ou paradigma;
Conjunto de regras, princípios e valores que determinam um padrão de comportamento;
Paradigmas de Programação
3
Um paradigma é uma maneira de se abordar a concepção de um programa;
Modelo ou estilo de programação suportado por linguagens que agrupam certas características comuns;
Determina a visão que o programador tem da estruturação e execução do programa;
Paradigmas de Programação
4
Por que estudar os diferentes paradigmas?
Para saber escolher o paradigma cuja idéia base modele adequadamente o domínio do meu problema;
Para escolher a melhor maneira de tratar o problema em questão;
Paradigmas de Programação
5
Paradigmas de Programação
6
Modelo Declarativo:
Abrangem as linguagens que não possuem os conceitos de seqüências de comandos e atribuições;
Não manipulam a memória;
Dão ênfase ao o que calcular e não como calcular;
Modelos de Paradigmas
7
Modelo Declarativo: Linguagens funcionais ( resultados obtidos através de
funções); Exemplo: Lisp, Scheme, Haskell, APL
Linguagens Lógicas (resultados obtidos através da analise de axiomas lógicos);
Exemplo: Prolog, Godel
Modelos de Paradigmas
8
Modelo Imperativo:
Abrangem as linguagens que expressam seqüências de comandos e que realizam transformações sobre dados e estados do sistema;
Baseado na máquina de Von Neumann;
Modelos de Paradigmas
9
Modelo Imperativo:
Linguagens procedurais ou seqüenciais (código modularizado);
Exemplo: Fortran, Basic, Cobol, C, Pascal, Visual Basic Linguagens orientadas a objetos(computação é a interação
entre objetos); Exemplo: C++, Java
Modelos de Paradigmas
10
Paradigmas de Programação
11
Primeiro paradigma a surgir e ainda é o dominante. Programas centrados no conceito de um estado
(modelado por variáveis) e ações (comandos) que mudam o estado.
Pode incluir subrotinas ou procedimentos como mecanismo de estruturação.
Uma computação significa transformar valores da memória do computador;
Paradigma Sequencial ouProcedural
12
As regras são definidas por passos a serem executados; Declaração explicita de variáveis e alocação de memória; Presença de laços e iteratividade Executar um programa significa executar uma série de
comandos;
Paradigma Sequencial ouProcedural
13
O estado de um programa é mantido nas variáveis do programa; Essas variáveis são associadas a localizações de memória
caracterizadas por um endereço e por um valor armazenado no endereço;
É possível acessar o valor diretamente, lendo o valor da variável; O valor da variável é modificado através de atribuições. Por exemplo, em Pascal: X := 5;
Paradigma Sequencial ouProcedural
14
O termo à esquerda do operador de atribuição (:=) é a variável cujo valor está sendo modificado e à direita está o novo valor;
A variável X tem valores diferentes antes e depois da atribuição;
O significado (efeito) de um programa depende da ordem em que as atribuições são escritas e executadas;
Paradigma Sequencial ouProcedural
15
Paradigma Sequencial ouProcedural
16
Trata a computação como uma avaliação de funções matemáticas;
Função matemática é uma correspondência de membros de um conjunto domínio com o conjunto imagem;
Função retorna elemento do conjunto imagem; Uma função, neste sentido, pode ter ou não ter parâmetros
e um simples valor de retorno. Os parâmetros são os valores de entrada da função e o
valor de retorno é o resultado da função;
Paradigma Funcional
17
Utiliza apenas funções que, dada uma lista de parâmetros, retornam um único valor;
Busca imitar as funções matemáticas no maior grau possível;
Forma das Funções Simples:
Cubo(x) x * x* x, em que x é um número real;
>Cubo(2) = 8
Paradigma Funcional
18
A ordem de avaliação das expressões de mapeamento é controlada por recursão e iteração;
RECURSÃO:
int fatorial(int n){
if (n == 0)
return 1;
else
return ( n * fatorial( n – 1 ) );
}
Paradigma Funcional
19
X := fatorial(4); N=4 -> 4 * fatorial(3) => 4 * 6 = 24 N=3 -> 3 * fatorial(2) => 3 * 2 = 6 N=2 -> 2 * fatorial(1) => 2 * 1 = 2 N=1 -> 1 * fatorial(0) => 1 * 1 = 1 N=0 -> 1
Paradigma Funcional
20
Exemplo: (DEFINE pi 3.14159) (DEFINE dois_pi (* 2 pi)) (DEFINE quadrado_numero (* numero numero)) (DEFINE (fatorial n)
(IF (= n 0)
1
(* n (fatorial ( - n 1) ) )
))
Paradigma Funcional
21
Exemplo: (DEFINE (compare x y)
(COND
(( > x y) (DISPLAY “x é maior que y”))
(( < x y) (DISPLAY “x é menor que y”))
(ELSE (DISPLAY “x e y são iguais”))
Paradigma Funcional
22
Conceito de objetos cooperativos; Mundo é um conjunto de objetos que interagem entre si; Objetos são instâncias de uma classes, possuem um
conjunto de atributos e métodos; Modelam entidades do mundo real; Objetos: Ocorrência específica de uma classe; Ex: carro, pessoa
Paradigma Orientado a Objetos
23
Classe: Conjunto de objetos que apresentam características em comum, possuem os mesmos atributos e as mesmas funcionalidades
Atributo: Conjunto de características específicas de um objeto;
Métodos: característica que permite alterar a funcionalidade de um atributo, são os serviços que o objeto pode prover;
Os objetos devem interagir uns com outros através de um mecanismo de comunicação chamado mensagem;
Paradigma Orientado a Objetos
24
Ex: Objeto: carro Atributos: cor, ano, qtd. portas Métodos: ligar, andar, abastecer
Ex: Objeto: pessoa Atributos: cor da pele, nascimento, estado civil Métodos: estudar, trabalhar, dormir
Paradigma Orientado a Objetos
25
Características: Abstração: habilidade de modelar características do
mundo real do problema que se quer resolver; Encapsulamento: definição de como implementar
atributos e métodos de um classe; todas as transações feitas com um objeto só podem ser realizadas dentro daquele objeto;
Paradigma Orientado a Objetos
26
Características: Um dado só está encapsulado quando só pode ser
visto dentro de um objeto Ex: botões e funções de um DVD Herança: capacidade de uma classe filho herdar um ou
mais atributos e métodos de uma classe pai; permite a reutilização de código;
Paradigma Orientado a Objetos
27
Paradigma Orientado a Objetos
28
Características: Polimorfismo: possuir várias formas, uma classe
possui uma operação e suas sub-classes possuem a mesma operação com outro comportamento;
Paradigma Orientado a Objetos
29
Paradigma Orientado a Objetos
30
Usa a lógica de predicados como linguagem de programação;
Um programa consiste de:
- Uma série de axiomas ou fatos;
- Regras de inferência;
- Teorema a ser provada
Uma computação significa inferir conseqüências lógicas a partir de fatos;
Paradigma Lógico
31
Um processamento consiste em testar uma afirmação ou pergunta feita;
Permite que novos fatos sejam deduzidos a partir de fatos já conhecidos;
Somente as especificações dos resultados desejados são declaradas, ao invés de procedimentos detalhados para produzi-los. Isto é, focaliza-se a forma do resultado e não como ele é computado;
Paradigma Lógico
32
Homem(joao). Mulher(maria). Mulher(cristina) Pai(joao,andre). Pai(luiz,fabio). Mae(mara, luiza).
Paradigma Lógico
?-homem(luiz)Não?-homem(joao)Sim?-pai(joao, carlos)Não?-mulher(x)X=mariaX=crisitina
33
Estrela (sol). Estrela(sirius). Orbita(mercurio,sol). Orbita(venus,sol). Orbita(terra,sol). Orbita(marte,sol). Orbita(lua, terra). Orbita(deimos, marte). Planeta(B):-orbita(B,sol).
Paradigma Lógico
?-planeta(marte)Sim?-planeta(P)P=mercurioP=venusP=terraP=marte