Vous êtes sur la page 1sur 26

Universidade Federal do Amazonas

Departamento de Cincia da Computao


IEC481 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

Expressividade x conciso

Exemplo: tipos de dados em Pascal

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

Encapsulamento de dados

Funes e procedimentos (functions, procedures, routines)

Vetores (arrays), registros (records, structs)

Encapsulamento de dados + cdigo

Mdulos (modules, packages), em programao modular

Classes, em programao OO

Vous aimerez peut-être aussi