Anda di halaman 1dari 23

Linguagens de Programao

Conceitos e Tcnicas

Introduo
Prof.

Razes para Estudar LPs


Maior capacidade de desenvolver solues
computacionais para problemas
Maior habilidade ao usar uma LP
Maior capacidade para escolher LPs apropriadas
Maior habilidade para aprender novas LPs
Maior habilidade para projetar novas LPs

Papel de LPs no PDS


O objetivo de LPs tornar mais efetivo o
processo de desenvolvimento de software
(PDS)
PDS visa gerao e manuteno de software
de modo produtivo e garantia de padres de
qualidade

Papel de LPs no PDS


Principais Propriedades Desejadas em um
Software
Confiabilidade
Manutenibilidade
Eficincia

Papel de LPs no PDS


Etapas do PDS

Especificao de Requisitos
Projeto do Software
Implementao
Validao
Manuteno

Propriedades Desejveis em LPs


Legibilidade

Marcadores de Blocos
if (x>1)
if (x==2)
x=3;
else
x=4;
Desvios Incondicionais
goto
Duplicao de Significado de Vocbulos
this (em JAVA)
*p = (*p)*q;

Propriedades Desejveis em LPs


Efeitos Colaterais
int x = 1;
int retornaCinco() {
x = x + 3;
return 5;
}
void main() {
int y;
y = retornaCinco ();
y = y + x;
}

Propriedades Desejveis em LPs


Redigibilidade
Tipos de Dados Limitados (FORTRAN)
Ausncia de Tratamento de Excees
Conflito Ocasional com Legibilidade
void f(char *q, char *p) {
for (;*q=*p; q++,p++);
}

Propriedades Desejveis em LPs


Confiabilidade

Declarao de Tipos
boolean u = true;
int v = 0;
while (u && v < 9) {
v = u + 2;
if (v == 6) u = false;
}
Tratamento de Excees
try {
System.out.println(a[i]);
} catch (IndexOutofBoundsException) {
System.out.println(Erro de Indexao);
}

Propriedades Desejveis em LPs


Eficincia
Verificao Dinmica de Tipos

Facilidade de Aprendizado
Excesso de Caractersticas Prejudicial
c = c + 1;
c+=1;
c++;
++c;

Modificabilidade
const float pi = 3.14;

10

Propriedades Desejveis em LPs


Reusabilidade
void troca (int *x, int *y) {
int z = *x;
*x = *y;
*y = z;
}

Portabilidade
Rigor no Projeto
Pode Contrastar com Eficincia
11

Especificao de LPs
Lxico x Sintaxe x Semntica
a = b;
Sintaxe
expresso valor valoroperadorexpresso
valor nmero sinalnmero
nmero semsinal semsinal.semsinal
semsinal dgito dgitosemsinal
dgito 0 1 2 3 4 5 6 7 8 9
sinal +
operador +
*

12

Especificao de LPs
Semntica
Enfoque Operacional

Necessidade de Padronizao
ISO, IEEE, ANSI, NIST

13

Implementao de LPs
Compilao
LP

Interpretao Pura
Fonte

LP

Hbrido

Fonte

LP

Compilao
Interpretao

Fonte
Compilao

L.M.

Cdigo
Intermedirio

L.M.
Dados
Dados

Execuo
Execuo

Interpretao
L.M.
Dados
Execuo

14

Implementao de LPs
Compilao

Eficincia
Problemas com Portabilidade e Depurao

Interpretao Pura

Flexibilidade, Portabilidade e Facilidade para Prototipao e


Depurao
Problemas com Eficincia e Maior Consumo de Memria
Raramente Usada

Hbrido

Une Vantagens dos Outros Mtodos


JVM

15

Paradigmas de LPs
Paradigmas

Imperativo
Estruturado

Orientado
a Objetos

Concorrente

Declarativo
Funcional

Lgico

16

Paradigmas de LPs
Imperativo
Processo de Mudanas de Estados
Varivel, Valor e Atribuio
Clulas de Memria

Estruturado
Refinamentos Sucessivos
Blocos Aninhados de Comandos
Desestmulo ao uso de desvio incondicional

17

Paradigmas de LPs
Orientado a Objetos
Abstrao de Dados

Concorrente
Processos
Executam
Concorrem por Recursos

Simultaneamente

18

Paradigmas de LPs
Declarativo
Especificaes sobre a Tarefa a Ser Realizada
Abstrai-se de Como o Computador Implementado

Funcional
Programa Composto por Funes

Lgico
Predicados
Deduo Automtica

19

Evoluo de LPs
Dificuldade de Programao em Linguagens de
Mquina
Foco de Primeiras LPs era Eficincia de
Processamento e Consumo de Memria
Baixa Produtividade de Programao
Programao Estruturada
Tipos Abstratos de Dados
Orientao a Objetos

20

Origem de LPs
FORTRAN (1957)
aplicaes numricas

LISP (1959)
programao funcional

ALGOL (1960)
programao estruturada

COBOL (1960)
aplicaes comerciais
21

Origem de LPs
BASIC (1964)

ensino para leigos

PASCAL (1971)

ensino de programao estruturada


simplicidade

C (1972)

implementao de UNIX

PROLOG (1972)

programao lgica
22

Origem de LPs
SMALLTALK (1972)

programao orientada a objetos

ADA (1983)

programao concorrente

C++ (1985)

disseminao da programao orientada a objetos

JAVA (1995)

mais simples e confivel que C++


Internet
23

Anda mungkin juga menyukai