Paradigmas de Linguagens de
Programação
BNF e Interpretador da
Linguagem Imperativa 1
Augusto Sampaio e Paulo Borba
Centro de Informática
Universidade Federal de Pernambuco
Visão Geral
• Estende a linguagem de expressões 1
com
–
–
–
–
variáveis
comando de atribuição
comandos de entrada e saída
controle de fluxo
Visão Geral
• Comandos versus Expressões
– Pascal e Java
– Linguagens funcionais
• Efeitos colaterais
• Um programa é um comando
BNF
• http://www.cin.ufpe.br/~in1007/linguage
ns/Imperativa1/imperativa1.html
Programa Exemplo 1
{ var a = 3;
write(a);
{ var a = 2,
var b = 5;
write(a);
write(b+a)
};
write(a)
}
= 3 2 7 3
Programa Exemplo 2
{var n = 0, var m = 0;
read(n); read(m);
if (m == n) then
write("valores de entrada iguais")
else
write("valores de entrada diferentes")
}
= 2 3
= valores de entrada diferentes
Programa Exemplo 3
{ var i = 0;
while not (i == 3) do
i := i + 1;
write("Hello World")
}
= Hello World Hello World Hello World
Ambiente do Interpretador
• O ambiente inclui três componentes:
– uma pilha de mapeamentos de
identificadores em valores (memória
principal)
– lista de valores de entrada (teclado,
socket, etc.)
– lista de valores de saída (monitor,
impressora, etc.)
Ambiente do Interpretador
O ambiente pode ser modificado por
atribuições e por declarações
de variáveis!
Projeto e Implementação do
Interpretador
• http://www.cin.ufpe.br/~in1007/lingu
agens/Imperativa1/imperativa1.html
• A execução de comandos retorna um
ambiente derivado do que é recebido
como argumento
• Modelo de projeto
• Partes do código
Exercícios
• Estenda a Linguagem Imperativa 1
com os seguintes recursos:
–
–
–
–
declaração de variável sem inicialização
comando switch de Java
comando for de Java
blocos, iniciados por “{“ e terminados por
“}”, sem obrigar a declaração de variáveis
Exercícios
• Estenda a Linguagem Imperativa 1
com os seguintes recursos:
– comando “break” de Java (interrompe e
finaliza a execução de um “while”)
– comando “continue” de Java (interrompe
e reinicia a execução de um “while”)
Por simplicidade, inicialmente considere que
não há declarações de variáveis locais
Download

Linguagem Imperativa 1