33
1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

Embed Size (px)

Citation preview

Page 1: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

1

Curso Sistemas de InformaçãoDisciplina: Arquitetura de Software

Paradigmas de Programação

Page 2: 1 Curso Sistemas de Informação Disciplina: 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

Page 3: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software 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

Page 4: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software 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

Page 5: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

5

Paradigmas de Programação

Page 6: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software 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

Page 7: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 8: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 9: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 10: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

10

Paradigmas de Programação

Page 11: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software 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

Page 12: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 13: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 14: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 15: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

15

Paradigma Sequencial ouProcedural

Page 16: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 17: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 18: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 19: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 20: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 21: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 22: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 23: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 24: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 25: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 26: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 27: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

27

Paradigma Orientado a Objetos

Page 28: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 29: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

29

Paradigma Orientado a Objetos

Page 30: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 31: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 32: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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

Page 33: 1 Curso Sistemas de Informação Disciplina: Arquitetura de Software Paradigmas de Programação

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