Exercício 07.61
A linguagem de programação SIMPLE é uma linguagem simples, mas ainda poderosa e de alto nível, semelhante às versões iniciais da conhecida linguagem de programação BASIC. Cada instrução da linguagem SIMPLE consiste em um número de linha e um comando da linguagem. Os números de linha devem aparecer em ordem crescente. Cada comando inicia com um das seguintes palavras reservadas da linguagem SIMPLE: rem, input, let, print, goto, if/goto ou end.
Comando | Instrução de exemplo | Descrição |
---|---|---|
rem |
50 rem isto é comentário |
Qualquer texto depois do comando rem é apenas para fins de documentação e é ignorado pelo compilador. |
input |
30 input x |
Exibe um ponto de interrogação que pede ao usuário para digitar um inteiro. Lê esse inteiro do teclado e armazena o inteiro em x. |
let |
80 let u = 4 * (j - 56) |
Atribui a u o valor de 4 * (j - 56). Observe que uma expressão arbitrariamente complexa pode aparecer à direita do sinal de igual. |
print |
10 print w |
Exibe o valor de w. |
goto |
70 goto 45 |
Transfere o controle do programa para a linha 45. |
if/goto |
35 if i == z goto 80 |
Verifica se i e z são iguais e transfere o controle do programa para a linha 80 se a condição for verdadeira; caso contrário, continua a execução com a próxima instrução. |
end |
99 end |
Termina a execução do programa. |
Todos os comandos, exceto end, podem ser utilizados repetidamente. A linguagem SIMPLE avalia apenas expressões inteiras que utilizam os operadores +, -, * e /. Esses operadores têm a mesma precedência que nas linguagens Java ou C/C++. Podem usar parênteses para alterar a ordem de avaliação de uma expressão.
A linguagem SIMPLE reconhece apenas letras minúsculas. Todos os caracteres em um arquivo SIMPLE devem estar em letras minúsculas (letras maiúsculas resultam em um erro de sintaxe, a menos que apareçam em uma instrução rem, caso em que são ignorados).
O nome de variável tem uma única letra. A linguagem SIMPLE não permite nomes de variáveis descritivos, portanto as variáveis devem ser explicadas em comentários para indicar sua finalidade em um programa.
A linguagem SIMPLE utiliza apenas variáveis inteiras. Não tem declarações de variáveis - a mera menção de um nome de variável em um programa faz com que a variável seja declarada e inicializada com zero.
A linguagem SIMPLE utiliza a instrução condicional if/goto e a instrução incondicional goto para alterar o fluxo de controle durante a execução do programa. Se a condição na instrução if/goto for verdadeira, o controle é transferido para uma linha especifica do programa. Os seguintes operadores relacionais e de igualdade são válidos em uma instrução if/goto: <, >, <=, >=, == ou !=. A precedência desses operadores é a mesma que em Java ou C/C++.
O programa a seguir lê dois inteiros do teclado, armazena os valores nas variáveis a e b e calcula e imprime sua soma (armazenada na variável c).
10 rem determina e imprime a soma de dois inteiros
15 rem
20 rem lê os dois inteiros
30 input a
40 input b
45 rem
50 rem soma os inteiros e armazena o resultado em c
60 let c = a + b
65 rem
70 rem imprime o resultado
80 print c
90 rem termina a execução do programa
99 end
Desenvolva um programa na linguagem de programação SIMPLE que leia uma série de inteiros e determine e imprima o maior. O primeiro inteiro lido indica quantos números devem ser processados (após ele).
Desenvolva uma Gramática Livre do Contexto (GLC) que reconheça a linguagem de programação SIMPLE.