Linguagens de Programação

Propaganda
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
Linguagens e Ambientes de Programação
2002 - 2003
Linguagens de
Programação
Princípios e Paradigmas
Gladys Castillo
Universidade de Aveiro
Níveis de um Linguagem de Computação
Figure 1.1
Fonte: Programming Languages: Principles and Paradigms. Allen Tucker and Robert Noonan. Mc-Grau Hill (2001)
1
Máquinas Virtuais e Interpretes
Figure 1.2
Fonte: Programming Languages: Principles and Paradigms. Allen Tucker and Robert Noonan. Mc-Grau Hill (2001)
Principais etapas no processo de compilação
Figure 2.4
Token stream: Sequência simbólica
Fonte: Programming Languages: Principles and Paradigms. Allen Tucker and Robert Noonan. Mc-Grau Hill (2001)
2
Um fragmento de um programa visto como uma
Sequência Simbólica
Figure 2.2
Fonte: Programming Languages: Principles and Paradigms. Allen Tucker and Robert Noonan. Mc-Grau Hill (2001)
Sintaxe lexical para uma linguagem simples
Figure 2.3
Fonte: Programming Languages: Principles and Paradigms. Allen Tucker and Robert Noonan. Mc-Grau Hill (2001)
3
A C/C++ Max Function
Figure 3.1
Fonte: Programming Languages: Principles and Paradigms. Allen Tucker and Robert Noonan. Mc-Grau Hill (2001)
Java Implementation of the State Class
Figure 3.5
Fonte: Programming Languages: Principles and Paradigms. Allen Tucker and Robert Noonan. Mc-Grau Hill (2001)
4
Paradigmas de Programação
Programação Imperativa
Programação Funcional
Programação Declarativa
Programação Orientada a Objecto (OOP)
Programação orientada a eventos
Cronograma
Histórico de
alguns
Linguagens de
Programação
Figure 1.3
5
Programação Imperativa
Consiste em definir procedimentos para executar
sequências de acções, i.e., sequências de atribuições
ou avaliações (ex: C, Pascal, Fortran, etc).
Linguagem informal
//--- Que escreve?
//--- variáveis usadas: p,n,i (inteiras)
leia n;
coloque 1 em p;
para i=1,2,...,n
coloque p*i em p;
escreva(p);
Fonte: Programação Imperativa, Armando Matos, UP
A Matemática e as linguagens
imperativas
• Em Matemática e em C, por exemplo, o
significado do sinal “=“ e muito
diferente:
x = y +z: em Matemática e em C
x = x+2: em Matemática (e sempre
falso)
e em C (uma atribuição)
Fonte: Programação Imperativa, Armando Matos, UP
6
A C/C++ Factorial Function
Figure 3.2
Fonte: Programming Languages: Principles and Paradigms. Allen Tucker and Robert Noonan. Mc-Grau Hill (2001)
Técnicas em Programação
Imperativa:
• Modularidade dos Algoritmos
(Programação Estruturada)
• Modularidade das Estruturas de Dados
(Tipos Abstractos de Dados)
• Recorrência
7
Programação Declarativa
O programador preocupa-se apenas com o
significado declarativo do seu programa, sendo os
aspectos procedimentais da execução do programa
tratados automaticamente. O programador descreve
o problema a ser resolvido e esta descrição é usada
para encontrar uma ou mais soluções ao problema.
Ex: Prolog – usado para resolver problemas que
envolvem objectos, as suas propriedades e relações
Linguagem Prolog
• %--predicado fact(n,f): f e o factorial de n
fact(0,1).
fact(N,F) :- N>0, N1 is N-1,
fact(N1,F1), F is N*F1.
Utilizando:
?- fact(3,A).
A=6?;
no
8
Programação Funcional
Estilo de programação, sem atribuição, nem
alteração dos argumentos de funções. As funções se
limitam a produzir novos valores.
Neste paradigma de programação, qualquer função
da linguagem é considerada uma função
matemática pura que, para os mesmos argumentos
produz sempre os mesmos valores. Nunca nada é
destruído.
Exs: 1. Uma função que junta duas listas produz uma nova
lista sem alterar as listas originais.
2. Uma função que muda o número de portas de um
automóvel produz um novo automóvel.
Linguagens: Lisp (http://www.gia.ist.utl.pt/Lisp9596/node58.html)
Programação Funcional
Vantagens sobre outros estilos de programação: produz
programas muito rapidamente e minimizando os erros.
Limitações: a sua incapacidade em modificar seja o que for
é a maior. A partir do momento em que introduzimos a
modificação de objectos, estamos a introduzir o
conceito de destruição. A forma anterior do objecto que
foi modificado deixou de existir, passando a existir
apenas a nova forma. A modificação implica a
introdução do conceito de tempo. Os objectos passam a
ter uma história, e isto conduz a um novo estilo de
programação.
9
Programação Orientada a Eventos
A programação orientada a eventos baseia-se na
inexistência de um algoritmo principal que, em
uma
programação
tradicional
(imperativa),
corresponde a um programa com início e fim. Em
um programa orientado a eventos, tudo o que temos
é uma forma que contém vários controles e a cada
acção do utilizador (a que denominamos evento), o
programa responde com a execução de um
procedimento.
Linguagens: Visual Basic, Visual C++, Macromédia Director, Java
Imperative and Event-Driven Paradigms Contrasted
Figure 10.1
Fonte: Programming Languages: Principles and Paradigms. Allen Tucker and Robert Noonan. Mc-Grau Hill (2001)
10
Download