Aula I Apresentação - · PDF fileAula I Apresentação. PP ......

Preview:

Citation preview

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

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

Professor EDILBERTO M. SILVA

edilms@yahoo.comBacharel 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

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.

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.

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

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).

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.

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.

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

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)

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 ...

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

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

Modelo Computacional do Paradigma Imperativo

Entrada Programa Saída

Estado

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

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)

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

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

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

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

Modelo Computacional do Paradigma Funcional

Entrada Programa Saída

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

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

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

Modelo Computacional do Paradigma Lógico

Entrada Programa Saída

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

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.

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

...

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

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

Recommended