Linguagens de Programação - Atividade 06

Nesta atividade, vamos tratar da Semânticas Dinâmicas.

Questão 01

Usando as instruções de máquina virtual dadas na Seção 3.5.1.1 do livro-texto(o if, o goto e o uso de rótulos), dê uma definição de semântica operacional das seguintes construções:

  1. do while do Java.
  2. if-then-else do C++.
  3. for do C.
  4. switch do C.

Questão 02

Escreva uma função de mapeamento de semântica denotacional para as seguintes sentenças:

  1. do while do Java.
  2. for do C.
  3. switch do C.

Você pode reutilizar as funções definidas na Seção 3.5.2.

Questão 03

Compute a pré-condição mais fraca para cada uma das seguintes construções de linguagen e suas pós-condições.

  1. a = 2 * (b - 1) - 1 { a > 0 }
                            
  2. a = a + 2 * b - 1 { a > 1 }
                            
  3. a = 2 * b + 1;
    b = a - 3;
    { b < 0 }
                            
  4. a = 3 * (2 * b + a);
    b = 2 * a - 1; 
    { b > 5 }
                            
  5. if (a == b)
        b = 2 * a + 1;
    else
        b = 2 * a;
    { b > 1 }
                            
  6. if (x < y) 
        x = x + 1;
    else 
        x = 3 * x;
    { x < 0 }