atps aula2 paradigmas de programacao

26
Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 – Projeto de Programas Linguagens e Paradigmas de Programação Professor: César Melo Slides baseados em materiais preparados pelo Prof. Horacio Fernades, Prof. João Marcos e pela Profa. Rosiane Freitas.

Upload: manasses

Post on 12-Nov-2015

26 views

Category:

Documents


3 download

DESCRIPTION

ATPS Aula2 Paradigmas de programacao

TRANSCRIPT

  • Universidade Federal do AmazonasDepartamento de Cincia da ComputaoIEC481 Projeto de Programas

    Linguagens e Paradigmas de Programao

    Professor: Csar Melo

    Slides baseados em materiais preparados pelo Prof. Horacio Fernades, Prof. Joo Marcos e pela Profa. Rosiane Freitas.

  • Fatos das nossas vidas....

    Cite algumas Linguagens de Programao C, C++, Java, Perl, Python, Bash, Prolog, Pascal, Basic, Fortran,

    COBOL, ASM, Lisp, Haskell, Modula-2, Oberon, C#, PL/1, Ada, Smalltalk, Smula, Algol, Eiffel, Scheme,CLOS, Maude, Glass, Holo,...

    Mas porque tantas linguagens? Propsitos diferentes Avanos tecnolgicos Interesses comerciais Cultura e background cientfico

  • Linguagens de Programao

    E o que uma Linguagem de Programao?

    Sinttica: Uma linguagem de programao uma notao utilizada pelo programador para especificar aes a serem executadas por um computador.

    Semntica: Uma linguagem de programao compreende um conjunto de conceitos que um programador usa para resolver problemas de programao.

  • Linguagens de Programao

    Critrios de Avaliao de uma LP

    Legibilidade

    Simplicidade

    Expressividade

    Ortogonalidade

    Confiabilidade

    Portabilidade

  • Critrio: Legibilidade

    Facilidade de ler e escrever programas Legibilidade influi:

    desenvolvimento e depurao de programas manuteno de programas desempenho de equipes de programao

    Fatores que melhoram a legibilidade: abstrao de dados comandos de controle modularizao de programas documentao convenes lxicas, sintaxe e semntica

    exemplo em Java: nomes de classes iniciam por letra maiscula, nomes de atributos usam letras minsculas

  • Critrio: Simplicidade

    Representao de cada conceito seja simples de aprender e dominar

    Simplicidade sinttica exige que a representao seja feita de modo preciso, sem ambigidades

    contra-exemplo: A++; A=A+1; A+=1; ++A. Simplicidade semntica exige que a representao possua um

    significado independente de contexto contra-exemplo: private: B b; class B: private A

  • Critrio: Expressividade

    Representao clara e simples de dados e procedimentos a serem executados pelo programa

    Exemplo: tipos de dados em Pascal

    Expressividade x conciso Muito concisa: falta expressividade? Muito extensa: falta simplicidade?

    Linguagens mais modernas Incorporam apenas um conjunto bsico de representaes de tipos de

    dados e comandos Aumentam o poder de expressividade com bibliotecas de componentes Exemplos: Pascal, C++ e Java

  • Critrio: Ortogonalidade

    Possibilidade de combinar entre si, sem restries, os componentes bsicos da LP

    Exemplo: permitir combinaes de estruturas de dados, como arrays de registros

    Contra exemplo: no permitir que um array seja usado como parmetro de um procedimento

    Componente de primeira ordem: pode ser livremente usado em expresses, atribuies, como argumento e retorno de procedimentos

  • Critrio: Portabilidade

    Multiplataforma Capacidade de um software executar em diferentes plataformas sem a

    necessidade de maiores adaptaes Sem exigncias especiais de hardware/software Exemplo: aplicao compatvel com sistemas Unix e Windows

    Longevidade ciclo de vida til do software e o do hardware no precisam ser

    sncronos; ou seja, possvel usar o mesmo software aps uma mudana de hardware

  • Critrio: Confiabilidade

    Mecanismos que facilitem a produo de programas que atendam s sua especificaes

    Tipagem forte: o processador da linguagem deve assegurar que a utilizao dos diferentes tipos de dados seja compatvel

    com a sua definio evitar que operaes perigosas, tal como aritmtica de ponteiros, seja

    permitida

    Tratamento de excees: sistemas de tratamento de excees permitem construir programas que

    possuam definies de como proceder em caso de comportamento no usual

    possibilitem tanto o diagnstico quanto o tratamento de erros em tempo de execuo

  • Evoluo de Linguagens de Programao

    Dcada de 70: Programao Estruturada Abstrao de dados: definio de tipos Abstrao de controle: comandos, procedimentos Inicia preocupao com programao em larga escala: mdulos e

    programao estruturada

    Exemplos de linguagens populares: Uso acadmico: Algol (algoritmos), Pascal (tipos de dados) Uso comercial: Cobol (arquivos), PL/I (uso amplo)

  • Evoluo de Linguagens de Programao

    Dcada de 80: modularizao nfase em mecanismos de LP e abstraes Correo de programas: verificao de tipos, excees Programao baseada em TADs;

    Exemplos de linguagens Uso acadmico: Pascal / Modula-2 Programao de tempo real: Ada 83

  • Evoluo de Linguagens de Programao

    Dcada de 90: base na estrutura Estruturao de dados: encapsulamento Estruturao da computao: classe Estruturao do programa: classes e objetos Programao para Internet: plataforma neutra

    Exemplos de linguagens Pascal / Delphi C / C++ Ada83 / Ada95 Java

  • Paradigmas de Programao

    O que um Paradigma de Programao Modelo, padro ou estilo de programao suportado por linguagens que

    agrupam certas caractersticas comuns. Diferem nos seguintes aspectos:

    Conceitos e abstraes usados para representar os elementos de um programa;

    A forma como a computao realizada;

  • Paradigmas

    Paradigmas de Linguagens de Programao Imperativos; Declarativos; Orientada a Agentes; Baseada em Componentes; Programao paralela ; Orientada a funcionalidades(Features); Funcional; Baseado em lgica; Baseado em aspectos; Outros...

  • Caracterizando Paradigmas

    Paradigmas imperativo (Como Fazer) Linguagens expressam sequncias de comandos que realizam

    transformaes sobre dados; Exemplos de linguagens:

    orientadas a procedimentos orientadas a objetos

    Baseado fortemente na arquitetura de Von Neuman (1947):

    memria;

    processador;

    dispositivos de entrada e sada.

    Primeiro paradigma a surgir e at hoje o dominante.

  • O Paradigma Imperativo

    Um programa neste paradigma uma seqncia finita de instrues (ou comandos) de trs tipos: atribuio, controle de fluxo, ou entrada/sada de dados.

    Comandos de atribuio alteram o estado do programa.

  • O Paradigma Imperativo

    Exemplo:

    functionfatorial(n:integer):integer;

    varfat:integer;

    begin

    fat:=1;

    while(n>1)do

    begin

    fat:=fat*n;

    n:=n1;

    end;

    fatorial:=fat;

    end;

  • O Paradigma Imperativo

    Exemplo:

  • O Paradigma Imperativo

    Vantagens Eficincia Paradigma dominante e bem estabelecido Mtodo receita de bolo

    Desvantagens descries demasiadamente operacionais focalizam o como e no o qu

  • Aperfeioando o Imperativo: TAD

    O que so Tipos Abstratos de Dados (TADs)? Conceito matemtico que diz respeito a determinada entidade e s

    funes aplicadas sobre ela. Um TAD definido pela sua funcionalidade: o que se pode fazer com

    ele, e no como ele est de fato implementado. Exemplo uma fila um tipo abstrato de dados: pode-se inserir e retirar

    elementos de uma fila, verificar se a fila est cheia ou vazia, ou ainda contar quantos elementos esto nesta fila.

    A utilizao da fila (por uma aplicao) atravs destas funes independe de como a fila est de fato implementado.

  • Aperfeioando o Imperativo: Programao Modular

    A programao modular implementa a noo de tipo abstrato de dados

    Implementao: encapsulamento de dados e funes na mesma unidade sinttica o mdulo

    A principal estrutura um mdulo, constitudo de uma interface e de uma implementao

    A interface contm todos os elementos visveis (importveis) por outros mdulos

    A implementao contm os elementos que devem ficar invisveis e as implementaes das funes e procedimentos do mdulo

    Exemplos de linguagens: Ada (DoD-USA), Modula-2 (Nicklaus Wirth).

  • Aperfeioando o Imperativo: Programao Modular

    Exemplo: Fila

  • Aperfeioando o Imperativo: Programao Modular

    Exemplo: Fila

  • Programao Modular

    Principais caractersticas Encapsulamento de dados e de funes Restries visibilidade de constantes, variveis e funes de um

    mdulo Interface visvel contm apenas a funcionalidade do mdulo Separao do o que feito do como feito

  • Encapsulamento

    Encapsulamento o agrupamento de idias relacionadas em uma nica unidade de programao

    Encapsulamento de cdigo Funes e procedimentos (functions, procedures, routines)

    Encapsulamento de dados Vetores (arrays), registros (records, structs)

    Encapsulamento de dados + cdigo Mdulos (modules, packages), em programao modular Classes, em programao OO

    Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26