Linguagens de Programacão I
mleal@inf.puc-rio.br 1
INF1621
INF1621 –
–
Linguagens de Programação I
Linguagens de Programação I
Prof.: Marcus Leal
Prof.: Marcus Leal ––mleal@inf.pucmleal@inf.puc--rio.brrio.br
4as e 6as, 15
4as e 6as, 15--17hs, sala 520L17hs, sala 520L
Todo o material apresentado em aula será disponibilizado na
Todo o material apresentado em aula será disponibilizado na
web
web ÖÖhttp://www.inf.puchttp://www.inf.puc--rio.br/~rio.br/~inf1621inf1621
Bibiliografia:
Bibiliografia:
Ghezzi, Carlo; Jazayeri, Mehdi.
Ghezzi, Carlo; Jazayeri, Mehdi. Programming Language ConceptsProgramming Language Concepts. .
John Wiley & Sons, 1998.
John Wiley & Sons, 1998.
Scott, Michael.
Scott, Michael.Programming Languages PragmaticsProgramming Languages Pragmatics. Morgan . Morgan
Kaufmann, 2000.
Kaufmann, 2000.
A xerox dos livros do Ghezzi e do Scott está disponível na pasta
A xerox dos livros do Ghezzi e do Scott está disponível na pasta
295 da xerox dos homens.
295 da xerox dos homens.
INF1621
INF1621 –
–
Linguagens de Programação I
Linguagens de Programação I
Programa:
Programa:
Introdução Introdução Sintaxe e semântica Sintaxe e semânticaEscopo, ligação e ambiente de execução
Escopo, ligação e ambiente de execução
Tipos Tipos Estruturas de controle Estruturas de controle Concorrência e paralelismo Concorrência e paralelismo
Linguagens de Programacão I
mleal@inf.puc-rio.br 3
INF1621
INF1621 –
–
Linguagens de Programação I
Linguagens de Programação I
Avaliação:
Avaliação:
A avaliação do curso será composta por duas provas
A avaliação do curso será composta por duas provas
(P1 e P2) e dois trabalhos (T1 e T2).
(P1 e P2) e dois trabalhos (T1 e T2).
A média final será calculada por:
A média final será calculada por:
MF = (P1+P2+(T1+T2)/2)/3
MF = (P1+P2+(T1+T2)/2)/3
Se MF for menor que 5.0 o aluno deverá fazer a
Se MF for menor que 5.0 o aluno deverá fazer a
prova final (PF), e a nova MF será:
prova final (PF), e a nova MF será:
MF = ((maior(P1,P2) +PF+(T1+T2)/2)/3
MF = ((maior(P1,P2) +PF+(T1+T2)/2)/3
INF1621
INF1621 –
–
Linguagens de Programação I
Linguagens de Programação I
Trabalhos:
Trabalhos:
O primeiro trabalho consistirá na implementação de
O primeiro trabalho consistirá na implementação de
um scanner em Lua e em Java.
um scanner em Lua e em Java.
O segundo trabalho será um apresentação sobre
O segundo trabalho será um apresentação sobre
uma LP a ser definida.
Linguagens de Programacão I mleal@inf.puc-rio.br 5
Introdução
Introdução
Linguagens de Programação
Linguagens de Programação
Introdução
Introdução
Nos primeiros computadores a programação era feita exclusivament
Nos primeiros computadores a programação era feita exclusivamente e através de linguagens de baixo nível, envolvendo a manipulação d
através de linguagens de baixo nível, envolvendo a manipulação direta ireta de recursos específicos de cada máquina.
de recursos específicos de cada máquina.
As linguagens de programação (LPs) surgiram da necessidade de is
As linguagens de programação (LPs) surgiram da necessidade de isolar olar o programador de detalhes particulares das máquinas em que a
o programador de detalhes particulares das máquinas em que a
programação é feita, permitindo a programação em termos mais
programação é feita, permitindo a programação em termos mais
próximos ao problema, ou em
Linguagens de Programacão I
mleal@inf.puc-rio.br 7
Classificação de LPs
Classificação de LPs
Podemos identificar duas categorias principais:
Podemos identificar duas categorias principais:
LPs imperativas (ou procedurais)
LPs imperativas (ou procedurais)
–
–
Um programa é
Um programa é
composto por uma sequência de comandos que realizam
composto por uma sequência de comandos que realizam
atividades computacionais, usualmente envolvendo a
atividades computacionais, usualmente envolvendo a
manipulação da memória ou outros dispositivos.
manipulação da memória ou outros dispositivos.
LPs declarativas
LPs declarativas
–
–
Um programa é composto por
Um programa é composto por
declarações que descrevem um problema e
declarações que descrevem um problema e
\
\
ou suas
ou suas
característcas.
característcas.
Classificações de LPs
Classificações de LPs
Imperativas:
Imperativas:
von Neumannvon Neumann ––LPs tradicionais em que o programa é composto LPs tradicionais em que o programa é composto por rotinas e sequências de comandos (C, Pascal, Fortran, Basic)
por rotinas e sequências de comandos (C, Pascal, Fortran, Basic)..
Orientada a Objetos
Orientada a Objetos ––O estilo de programação é baseado na O estilo de programação é baseado na
definição de classes e objetos (Smalltalk, Eiffel, C++, Java).
definição de classes e objetos (Smalltalk, Eiffel, C++, Java).
Declarativas:
Declarativas:
Funcionais
Funcionais ––O modelo de computação é baseado na definição O modelo de computação é baseado na definição
recursiva de funções (Lisp, Scheme, ML).
recursiva de funções (Lisp, Scheme, ML).
Lógica
Lógica ––Um programa consiste na definição de relações lógicas Um programa consiste na definição de relações lógicas
que devem ser satisfeitas pela solução procurada (Prolog).
Linguagens de Programacão I
mleal@inf.puc-rio.br 9
Características Desejáveis de LPs
Características Desejáveis de LPs
Legibilidade: facilidade com que um programa pode ser lido e
Legibilidade: facilidade com que um programa pode ser lido e
compreendido.
compreendido.
Redigibilidade: facilidade de expressar soluções de uma forma na
Redigibilidade: facilidade de expressar soluções de uma forma natural.tural. Expressividade: capacidade de representar soluções adequadamente
Expressividade: capacidade de representar soluções adequadamente..
Robustez: capacidade de lidar com situações imprevistas.
Robustez: capacidade de lidar com situações imprevistas.
Eficiência do programa compilado: velocidade de execução do códi
Eficiência do programa compilado: velocidade de execução do código go gerado, utilização de memória, etc.
gerado, utilização de memória, etc.
Disponibilidade de ferramentas e bibliotecas.
Disponibilidade de ferramentas e bibliotecas.
Produtividade. Produtividade. Portabilidade. Portabilidade.
Compiladores
Compiladores
Aplicações que transformam um programa fonte descrito em
Aplicações que transformam um programa fonte descrito em
uma LP de alto nível em um programa objeto (descrito em uma
uma LP de alto nível em um programa objeto (descrito em uma
LP de baixo nível
LP de baixo nível --usualmente linguagem de máquina).usualmente linguagem de máquina). A execução do programa é controlada pelo próprio programa
A execução do programa é controlada pelo próprio programa
objeto.
Linguagens de Programacão I
mleal@inf.puc-rio.br 11
Interpretadores
Interpretadores
Um interpretador executa diretamente um programa fonte,
Um interpretador executa diretamente um programa fonte,
simulando uma máquina virtual cuja programação é executada
simulando uma máquina virtual cuja programação é executada
diretamente através da própria LP de alto nível.
diretamente através da própria LP de alto nível.
A execução do programa é controlada diretamente pelo
A execução do programa é controlada diretamente pelo
interpretador que “compõe” o ambiente de execução.
interpretador que “compõe” o ambiente de execução.
interpretador output programa fonte
input
Máquinas virtuais
Máquinas virtuais
Diversas implementações de LPs incluem uma composição de
Diversas implementações de LPs incluem uma composição de
compiladores e interpretadores (ex: Java, Lua, .Net).
compiladores e interpretadores (ex: Java, Lua, .Net).
A geração de código intermediário facilita a portabilidade da LP
A geração de código intermediário facilita a portabilidade da LP..
compilador programa intermediário programa fonte
máquina virtual output programa
intermediário