ATPS Aula2 Paradigmas de programacao
description
Transcript of ATPS Aula2 Paradigmas de programacao
-
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