27
Prof. Edilberto Silva / edilms.eti.br Paradigmas de Programação Prof.: Edilberto M. Silva http://www.edilms.eti.br http://www.edilms.eti.br Aula I Aula I Apresentação Apresentação

Aula I Apresentação - · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

Embed Size (px)

Citation preview

Page 1: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

Prof. Edilberto Silva / edilms.eti.br

Paradigmas de Programação

Prof.: Edilberto M. Silvahttp://www.edilms.eti.brhttp://www.edilms.eti.br

Aula IAula IApresentaçãoApresentação

Page 2: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 2

Professor EDILBERTO M. SILVA

[email protected] em Ciência da ComputaçãoMestre em Gestão do Conhecimento e da

Tecnologia da InformaçãoKDT, KDD, DSS, Gestão da Informação

PRESI/RADIOBRÁSGerência Técnica em DesenvolvimentoAnalista de Sistemas e DBA SQL Server

Page 3: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 3

EmentaLinguagens de programação: evolução,

características; Estruturas sintáticas: notações e gramáticas; Linguagens: imperativas, funcionais,

orientadas a objetos, programação lógica; programação concorrente.

Objetivos Estudar os princípios de projeto e as características

dos principais modelos de linguagens de programação e sua adequação à solução de problemas.

Page 4: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 4

para que estudá-los? Capacidade crescente de expressar idéias.A profundidade que se consegue pensar é

influenciada pelo poder da linguagem com a qual se está comunicando os pensamentos.

Aumenta-se a habilidade de aprender novas linguagens.

Melhora-se a compreensão do significado da implementação.

Habilidade maior de projetar novas linguagens.Avanço da computação.

Page 5: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 5

ConteúdoParadigmas de Programação1) Programação Imperativa.2) Programação Orientada a Objetos.3) Programação Funcional.4) Programação em Lógica.

Imperativa: Fortran, Pascal, “C” Orientada a Objetos: Smalltalk, “C++”,

Java Funcional: LISPLógica: PROLOG

Page 6: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 6

Linguagens de ProgramaçãoO que caracteriza uma linguagem de programação?

Sintaxe e semântica bem definidas;

Implementável (executável) com eficiência aceitável.

Universal: deve ser possível expressar todo problema

computável.

Natural para expressar soluções de problemas (em um

certo domínio de aplicação).

Page 7: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 7

Por que tantas?C, C++, Java, Basic, COBOL, Lisp, Haskell, Modula-

2, Oberon, Prolog, Java, C#, Pascal, PL/1, Ada, Smalltalk, Símula, Algol, Eiffel, Fortran (1957), ASM, Scheme, CLOS, Maude, Python, Glass, etc.

Propósitos Diferentes; Avanços Tecnológicos. Interesses comerciais. Cultura e background científico.

Page 8: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 8

ParadigmaO que significa um paradigma?Como se traduz este significado para o contexto da

programação?Como se pode caracterizar um paradigma?Paradigma de Programação

Modelo, padrão ou estilo de programação suportado por linguagens que agrupam certas características comuns.

A classificação de linguagens em paradigmas é uma conseqüência de decisões de projeto que têm impacto na forma segundo a qual uma aplicação real é modelada do ponto de vista computacional.

Page 9: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 9

Características Comuns

for i:=1 to n dobeginx:=x*i;If(x mod 2)=0 thenwriteln(x, ’é par’)elsewriteln(x, ’é ímpar’);end;

Um problema do mundo real é descrito em termos de variáveis (nome, tipo, endereço), ciclos, condicionais, atribuições, expressões (valor, tipo), entrada e saída, comandos.

ConcretizaçãoAbstraçãoTeoria

Prática

Page 10: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 10

O que caracteriza uma Linguagem de Programação?

Gramática e significado bem definidosImplementável (executável) com eficiência

‘‘aceitável’’Universal: deve ser possível expressar todo

problema computávelNatural para expressar problemas (em um

certo domínio de aplicação)

Page 11: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 11

Aspectos do estudo de linguagens

Sintaxe: gramática (forma)Semântica: significadoPragmática (ex.: metodologias)Processadores:

compiladores, interpretadores, editores, ambientes visuais ...

Page 12: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 12

O Paradigma ImperativoProgramas centrados no conceito de um

estado (modelado por variáveis) e ações (comandos) que manipulam o estado

Paradigma também denominado de procedural, por incluir subrotinas ou pro- cedimentos como mecanismo de estruturação

Primeiro paradigma a surgir e ainda é o dominante

Page 13: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 13

Modelo Computacional do Paradigma Imperativo

Entrada Programa Saída

Estado

Page 14: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 14

Visão Crítica do Paradigma Imperativo Vantagens Eficiência (embute modelo de Von Neumann) Modelagem “natural” de aplicações do mundo real Paradigma dominante e bem estabelecido Problemas Relacionamento indireto entre E/S resulta em: - difícil legibilidade - erros introduzidos durante manutenção - descrições demasiadamente operacionais

focalizam o como e não o que

Page 15: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 15

O Paradigma Orientado a Objetos

Não é um paradigma no sentido estrito: é uma subclassificacão do imperativo

A diferença é mais de metodologia quanto à concepção e modelagem do sistema

A grosso modo, uma aplicação é estruturada em módulos (classes) que agrupam um estado e operações (métodos) sobre este

Classes podem ser estendidas e/ou usadas como tipos (cujos elementos são objetos)

Page 16: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 16

Modelo Computacional do Paradigma Orientado a Objetos

Entrada Programa Saída

Estado

......

... ...

Estado

Entrada Programa Saída

Estado

Entrada Programa Saída

Estado

Entrada Programa Saída

Estado

Entrada Programa Saída

Page 17: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 17

Visão Crítica do Paradigma Orientado a objetos

Vantagens Todas as do estilo imperativo Classes estimulam projeto centrado em dados:

modularidade, reusabilidade e extensibilidade Aceitação comercial crescenteProblemas Semelhantes às do paradigma imperativo, mas

amenizadas pelas facilidades de estruturação

Page 18: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 18

O Paradigma FuncionalProgramas são funções que descrevem uma

relação explícita e precisa entre E/SEstilo declarativo: não há o conceito de estado

nem comandos como atribuição Conceitos sofisticados como polimorfismo,

funções de alta ordem e avaliação sob demanda Aplicação: prototipação em geral e IA

Page 19: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 19

Modelo Computacional do Paradigma Funcional

Entrada Programa Saída

Page 20: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 20

Visão Crítica do Paradigma Funcional

Vantagens Manipulação de programas mais simples: - Prova de propriedades - Transformação (exemplo: otimização) Concorrência explorada de forma natural Problemas “O mundo não é funcional!” Implementações ineficientes Mecanismos primitivos de E/S e formatação

Page 21: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 21

O Paradigma Lógico

Programas são relações entre E/SEstilo declarativo, como no paradigma

funcionalNa prática, inclui características

imperativas, por questão de eficiênciaAplicações: sistemas especialistas e banco

de dados

Page 22: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 22

Modelo Computacional do Paradigma Lógico

Entrada Programa Saída

Page 23: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 23

Visão Crítica do Paradigma Lógico Vantagens Em princípio, todas do paradigma funcional Permite concepção da aplicação em um alto nível de

abstração (através de associações entre E/S) Problemas Em princípio, todos do paradigma funcional Linguagens usualmente não possuem tipos, nem

são de alta ordem

Page 24: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 24

Tendência: integração de paradigmas

A principal vantagem é combinar facilidades de mais de um paradigma, aumentando o domínio de aplicação da linguagem

Exemplos: linguagens lógicas ou funcionais com o conceito de estado e comandos

A integração deve ser conduzida com muita cautela, para que não se viole os princípios básicos de cada paradigma.

Page 25: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 25

Outras Classificações

Linguagens de 1a., 2a., 3a. 4a. e 5a. geraçõesProgramação seqüencial versus concorrenteProgramação linear versus programação visual

(visual programming) Ex.: Visual BASIC, Delphi, Visual Cafe

...

Page 26: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 26

Um breve histórico1950........................................................................................................

FORTRAN

1960.......................ALGOL-60...........COBOL......LISP.........................

SIMULA ALGOL-68 PL/I BASIC 1970..................Pascal............................................................................

Smalltalk C PROLOGModula-2 ML

1980....................Ada...........DBASE-II..................................................Miranda

Eifell C++ 1990.....................................................................Haskell..........Godel...

Java Delphi

Imperativo Funcional LógicoOrientado a objetos

Page 27: Aula I Apresentação -  · PDF fileAula I Apresentação. PP ... Linguagem de Programação? Gramática e significado bem definidos ... 2/12/2006 6:09:14 PM

PP - Prof. Edilberto Silva - http://edilms.eti,br 27

Referências BibliográficasBIBLIOGRAFIA BÁSICA

SEBESTA, R. W. Conceitos de Linguagens de Programação. Porto Alegre: Bookman, 2000.

MELO, A; SILVA, F. Princípios de Linguagem de Programação. São Paulo: Edgard Blücher, 2003.

BIBLIOGRAFIA COMPLEMENTAR

GHEZZI, Carlos; JAZAYERI, Mehdi. Conceitos de Linguagens de Programação. Rio de Janeiro: Campus, 1985.

Varejão, Flávio. Linguagens de Programação: Conceitos e Técnicas: JAVA, C e C++ e outras. Rio de Janeiro: Campus, 2004.

VILLAS, Marcos Vianna; VILLASBOAS, Luiz Felipe. Programação, Conceitos Teóricos e Linguagem. Rio de Janeiro: Campus, 1997.

Ziviani, Nívio. Projeto de algoritmos com implementações em Pascal e C. 3.ed. São Paulo: Pioneira, 2004