You are on page 1of 29

Referncia base: Captulo I Introduo Linguagens de Programao.

Flvio Miguel Varejo


Editora Campus, 2004 http://www.inf.ufes.br/~fvarejao/livroLP.html

Razes para Estudar LPs


Maior capacidade de desenvolver computacionais para problemas. solues

O conhecimento do conceito de tipos abstratos de dados estimula a utilizao desse mtodo de programao mesmo em LPs que no possuem mecanismos especficos para a sua implementao.

Maior habilidade ao usar uma LP.


Conhecendo como as LPs so implementadas pode-se entender porque algoritmos recursivos so menos eficientes. Linguagens de Programao 2

Introduo

Razes para Estudar LPs


Maior capacidade para escolher LPs apropriadas.
Saber que a linguagem C no realiza a verificao dinmica dos ndices de acesso a posies de um vetor pode ser decisivo para escolher essa linguagem em aplicaes em tempo real (online) que fazem o uso frequente de acessos a vetores.

Maior habilidade para aprender novas LPs.


Os programadores que aprenderam os conceitos de OO tm maior facilidade de aprender C++, Java e C#.
Introduo Linguagens de Programao 3

Razes para Estudar LPs

Maior habilidade para projetar novas LPs


Ao construir as interfaces com o usurio de sistemas, pode ser necessrio projetar e implementar uma linguagem de comandos para a comunicao entre usurio e o sistema.

Introduo

Linguagens de Programao

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

Introduo

Linguagens de Programao

Papel de LPs no PDS


Principais Propriedades Desejadas em um Software
Confiabilidade Manutenibilidade Eficincia

Introduo

Linguagens de Programao

Papel de LPs no PDS


Etapas do PDS
Especificao de Requisitos Projeto do Software Implementao Validao Manuteno

Introduo

Linguagens de Programao

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; *p=(*p)*(*q); *p=*p**q;
Linguagens de Programao 8

Introduo

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; }
Linguagens de Programao 9

Introduo

Propriedades Desejveis em LPs


Redigibilidade
a caracterstica que melhor diferencia as linguagens de mquina (o programador se preocupa com detalhes de implementao) e linguagens de programao (o programador se concentra na descrio do algoritmo que resolve o problema). Tipos de Dados Limitados (FORTRAN) requerem estruturas complexas. Ausncia de Tratamento de Excees
Conflito Ocasional com Legibilidade void f(char *q, char *p) { for (;*q=*p; q++,p++); }
Introduo Linguagens de Programao 10

Propriedades Desejveis em LPs


Confiabilidade
Declarao de Tipos verificao 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); Linguagens de Programao Introduo}

11

Propriedades Desejveis em LPs


Eficincia
Verificao Dinmica de Tipos menos eficientes.

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

Modificabilidade
const float pi = 3.14;

Introduo

Linguagens de Programao

12

Propriedades Desejveis em LPs


Ortogonalidade
capacidade da LP permitir ao programador combinar conceitos bsicos sem que se produzam efeitos anmalos nessa combinao. Uma LP to mais ortogonal quanto menor for o nmero de excees aos seus padres regulares. LPs ortogonais so interessantes porque o programador pode prever, com segurana, o comportamento de uma determinada combinao de conceitos. A falta de ortogonalidade dificulta o aprendizado da LP e pode estimular erros de programao.
int x, y = 2, z = 3; x = y + z; byte a, b = 2, c = 3; a = b + c;

Pascal retorna qualquer tipo de dado menos registros e vetores.


Introduo Linguagens de Programao 13

Propriedades Desejveis em LPs


Reusabilidade
void Trocar(int *x, int *y) { int z = *x; *x = *y; *y = z; function Trocar(int var x, int var y) var z : integer; begin z := x; x := y; y := z; end. void Trocar(ref int x, ref int y) { int z = x; x = y; y = z; }
14

} void Trocar(int & x, int & y) { int z = x; x = y; y = z; }


Introduo

Linguagens de Programao

Propriedades Desejveis em LPs


Portabilidade
Rigor no Projeto Pode Contrastar com Eficincia

Introduo

Linguagens de Programao

15

Especificao de LPs
Lxico (vocbulos) x Sintaxe (regras) x Semntica (significado)

a = b;
O lxico estabelece que a, =, b e ; fazem parte do vocabulrio da LP. O sinttico indica que a sentena formada pelo identificador a, o smbolo =, o identificador b e o smbolo ; designa um comando vlido de atribuio. A semntica indica que o comando deve ser executado de modo a substituir o valor de a pelo valor atual de b.

Introduo

Linguagens de Programao

16

Especificao de LPs
Sintaxe (BNF Backus-Naur Form)

expresso valorvaloroperadorexpresso valor nmerosinalnmero nmero semsinalsemsinal.semsinal semsinal dgitodgitosemsinal dgito 0123456789 sinal + operador +*

Introduo

Linguagens de Programao

17

Especificao de LPs
Semntica
Enfoque Operacional

Necessidade de Padronizao
ISO, IEEE, ANSI, NIST

Introduo

Linguagens de Programao

18

Implementao de LPs
Compilao Interpretao Pura Hbrido LP Fonte LP Fonte LP Fonte

Compilao Interpretao L.M. L.M. Dados Dados Execuo Dados Execuo Execuo L.M.

Compilao

Cdigo Intermedirio

Interpretao

Introduo

Linguagens de Programao

19

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


Linguagens de Programao 20

Introduo

Paradigma

o conjunto de caractersticas que servem para categorizar um grupo de linguagens.

Introduo

Linguagens de Programao

21

Paradigmas de LPs
Paradigmas

Imperativo Estruturado Orientado a Objetos Concorrente

Declarativo Funcional Lgico

Introduo

Linguagens de Programao

22

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

Introduo

Linguagens de Programao

23

Paradigmas de LPs
Orientado a Objetos
Abstrao de Dados

Concorrente
Processos Executam Concorrem por Recursos Simultaneamente e

Introduo

Linguagens de Programao

24

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

Introduo

Linguagens de Programao

25

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

Introduo

Linguagens de Programao

26

Origem de LPs
FORTRAN (1957)
aplicaes numricas

LISP (1959)
programao funcional

ALGOL (1960)
programao estruturada

COBOL (1960)
aplicaes comerciais
Introduo Linguagens de Programao 27

Origem de LPs
BASIC (1964)
ensino para leigos ensino de programao estruturada simplicidade

PASCAL (1971) C (1972)

PROLOG (1972)

implementao de UNIX
programao lgica
Linguagens de Programao 28

Introduo

Origem de LPs
SMALLTALK (1972) ADA (1983) C++ (1985)
programao orientada a objetos programao concorrente disseminao da programao orientada a objetos mais simples e confivel que C++ Internet
Linguagens de Programao 29

JAVA (1995)

Introduo

You might also like