Buscar

SlidesCap1

Prévia do material em texto

Referência base: 
Capítulo I – Introdução 
 
Linguagens de Programação. 
Flávio Miguel Varejão 
Editora Campus, 2004 
http://www.inf.ufes.br/~fvarejao/livroLP.html 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 2 
Razões para Estudar LPs 
Maior capacidade de desenvolver soluções 
computacionais para problemas. 
O conhecimento do conceito de tipos abstratos de 
dados estimula a utilização desse método de 
programação mesmo em LPs que não possuem 
mecanismos específicos para a sua implementação. 
 
Maior habilidade ao usar uma LP. 
Conhecendo como as LPs são implementadas pode-se 
entender porque algoritmos recursivos são menos 
eficientes. 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 3 
Razões para Estudar LPs 
Maior capacidade para escolher LPs apropriadas. 
Saber que a linguagem C não realiza a verificação 
dinâmica dos índices de acesso a posições de um vetor 
pode ser decisivo para escolher essa linguagem em 
aplicações 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 têm maior facilidade de aprender C++, Java e C#. 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 4 
Razões para Estudar LPs 
 
 
Maior habilidade para projetar novas LPs 
Ao construir as interfaces com o usuário de sistemas, 
pode ser necessário projetar e implementar uma 
linguagem de comandos para a comunicação entre 
usuário e o sistema. 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 5 
Papel de LPs no PDS 
O objetivo de LPs é tornar mais efetivo o 
processo de desenvolvimento de software 
(PDS) 
 
PDS visa geração e manutenção de software 
de modo produtivo e garantia de padrões de 
qualidade 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 6 
Papel de LPs no PDS 
Principais Propriedades Desejadas em um 
Software 
Confiabilidade 
Manutenibilidade 
Eficiência 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 7 
Papel de LPs no PDS 
Etapas do PDS 
Especificação de Requisitos 
Projeto do Software 
Implementação 
Validação 
Manutenção 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 8 
Propriedades Desejáveis em LPs 
 Legibilidade 
Marcadores de Blocos 
 if (x>1) 
 if (x==2) 
 x=3; 
 else 
 x=4; 
Desvios Incondicionais 
 goto 
Duplicação de Significado de Vocábulos 
 this (em JAVA) 
 *p = (*p)*q; *p=(*p)*(*q); *p=*p**q; 
 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 9 
Propriedades Desejáveis em LPs 
Efeitos Colaterais 
 int x = 1; 
 int retornaCinco() { 
 x = x + 3; 
 return 5; 
 } 
 void main() { 
 int y; 
 y = retornaCinco (); 
 y = y + x; 
 } 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 10 
Propriedades Desejáveis em LPs 
 Redigibilidade 
É a característica que melhor diferencia as linguagens de 
máquina (o programador se preocupa com detalhes de 
implementação) e linguagens de programação (o programador 
se concentra na descrição do algoritmo que resolve o 
problema). 
Tipos de Dados Limitados (FORTRAN) – requerem estruturas 
complexas. 
Ausência de Tratamento de Exceções 
Conflito Ocasional com Legibilidade 
 void f(char *q, char *p) { 
 for (;*q=*p; q++,p++); 
 } 
 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 11 
Propriedades Desejáveis em LPs 
 Confiabilidade 
Declaração de Tipos – verificação de tipos 
 boolean u = true; 
 int v = 0; 
 while (u && v < 9) { 
 v = u + 2; 
 if (v == 6) 
 u = false; 
 } 
Tratamento de Exceções 
try { 
 System.out.println(a[i]); 
} catch (IndexOutofBoundsException) { 
 System.out.println(“Erro de Indexação”); 
} 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 12 
Propriedades Desejáveis em LPs 
 Eficiência 
Verificação Dinâmica de Tipos – menos eficientes. 
 
 Facilidade de Aprendizado 
Excesso de Características é Prejudicial 
c = c + 1; c += 1; c++; ++c; 
 
Modificabilidade 
 const float pi = 3.14; 
 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 13 
Propriedades Desejáveis em LPs 
Ortogonalidade 
 capacidade da LP permitir ao programador combinar 
conceitos básicos sem que se produzam efeitos anômalos 
nessa combinação. Uma LP é tão mais ortogonal quanto menor 
for o número de exceções aos seus padrões regulares. 
LPs ortogonais são interessantes porque o programador pode 
prever, com segurança, o comportamento de uma 
determinada combinação de conceitos. 
A falta de ortogonalidade dificulta o aprendizado da LP e 
pode estimular erros de programação. 
int x, y = 2, z = 3; byte a, b = 2, c = 3; 
x = y + z; a = b + c; 
 Pascal retorna qualquer tipo de dado menos registros e 
vetores. 
 
 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 14 
Propriedades Desejáveis em LPs 
Reusabilidade 
 void Trocar(int *x, int *y) { 
 int z = *x; 
 *x = *y; 
 *y = z; 
 } 
 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; 
 } 
 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 15 
Propriedades Desejáveis em LPs 
 
 
Portabilidade 
Rigor no Projeto 
Pode Contrastar com Eficiência 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 16 
Especificação de LPs 
 
 
 Léxico (vocábulos) x Sintaxe (regras) x Semântica (significado) 
 
 a = b; 
 
 O léxico estabelece que a, =, b e ; fazem parte do vocabulário da LP. 
 
 O sintático indica que a sentença formada pelo identificador a, o símbolo =, o 
identificador b e o símbolo ; designa um comando válido de atribuição. 
 
 A semântica indica que o comando deve ser executado de modo a substituir o 
valor de a pelo valor atual de b. 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 17 
Especificação de LPs 
 
 
 Sintaxe (BNF – Backus-Naur Form) 
 expressão  valorvaloroperadorexpressão 
 valor  númerosinalnúmero 
 número  semsinalsemsinal.semsinal 
 semsinal  dígitodígitosemsinal 
 dígito  0123456789 
 sinal  +   
 operador  +* 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 18 
Especificação de LPs 
 Semântica 
Enfoque Operacional 
Necessidade de Padronização 
ISO, IEEE, ANSI, NIST 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 19 
Implementação de LPs 
Compilação Interpretação Pura Híbrido 
Fonte Fonte Fonte LP LP LP 
Execução 
L.M. 
L.M. 
L.M. 
Compilação 
Compilação 
Interpretação 
Código 
Intermediário 
Interpretação 
Execução 
Execução 
Dados 
Dados 
Dados 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 20 
Implementação de LPs 
 Compilação 
Eficiência 
Problemas com Portabilidade e Depuração 
 
 Interpretação Pura 
Flexibilidade, Portabilidade e Facilidade para Prototipação e 
Depuração 
Problemas com Eficiência e Maior Consumo de Memória 
Raramente Usada 
 
 Híbrido 
Une Vantagens dos Outros Métodos 
JVM 
 
 
Paradigma 
 
 
É o conjunto de características que 
servem para categorizar um grupo de 
linguagens. 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 21 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 22 
Paradigmas de LPs 
Paradigmas 
Imperativo Declarativo 
Estruturado Orientado 
a Objetos 
Concorrente Funcional Lógico 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 23 
Paradigmas de LPsImperativo 
Processo de Mudanças de Estados 
Variável, Valor e Atribuição 
Células de Memória 
Estruturado 
Refinamentos Sucessivos 
Blocos Aninhados de Comandos 
Desestímulo ao uso de desvio incondicional 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 24 
Paradigmas de LPs 
Orientado a Objetos 
Abstração de Dados 
Concorrente 
Processos Executam Simultaneamente e 
Concorrem por Recursos 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 25 
Paradigmas de LPs 
Declarativo 
Especificações sobre a Tarefa a Ser Realizada 
Abstrai-se de Como o Computador é Implementado 
Funcional 
Programa Composto por Funções 
Lógico 
Predicados 
Dedução Automática 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 26 
Evolução de LPs 
Dificuldade de Programação em Linguagens de 
Máquina 
Foco de Primeiras LPs era Eficiência de 
Processamento e Consumo de Memória 
Baixa Produtividade de Programação 
Programação Estruturada 
Tipos Abstratos de Dados 
Orientação a Objetos 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 27 
Origem de LPs 
FORTRAN (1957) 
aplicações numéricas 
LISP (1959) 
programação funcional 
ALGOL (1960) 
programação estruturada 
COBOL (1960) 
aplicações comerciais 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 28 
Origem de LPs 
BASIC (1964) 
ensino para leigos 
PASCAL (1971) 
ensino de programação estruturada 
simplicidade 
C (1972) 
 implementação de UNIX 
PROLOG (1972) 
 programação lógica 
 
 
 
 
 
 
 
Introdução 
 
Linguagens de Programação 29 
Origem de LPs 
SMALLTALK (1972) 
programação orientada a objetos 
ADA (1983) 
programação concorrente 
C++ (1985) 
disseminação da programação orientada a objetos 
JAVA (1995) 
mais simples e confiável que C++ 
Internet

Continue navegando