Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Vamos criar um computador que chamaremos de Simpletron. Como seu nome indica, é uma máquina simples, mas, como logo veremos, uma máquina poderosa também. O Simpletron executa programas escritos na única linguagem que ele entende diretamente, isto é, Simpletron Machine Language, ou, abreviadamente, SML.

O Simpletron contém um acumulador - um "registrador especial" em que as informações são colocadas antes de o Simpletron utilizar essas informações em cálculos ou examiná-las de várias maneiras. Todas as informações no Simpletron são tratadas em termos de palavras. A palavra é um número decimal de quatro dígitos com um sinal como +3364, -1293, +0007, -0001, etc. O Simpletron é equipado com uma memória de 100 palavras e essas palavras são mencionadas por seus números de posição 00, 01, ..., 99.

Antes de executar um programa de SML, devemos carregar ou colocar o programa na memória. A primeira instrução de cada programa de SML é sempre colocada na posição 00. O simulador começará a executar as instruções a partir dessa posição.

Cada instrução escrita em SML ocupa uma palavra de memória do Simpletron (em consequência, as instruções são números decimais de quatro dígitos com sinal). Assumiremos que o sinal de uma instrução da SML é sempre mais, mas o sinal de uma palavra de dados pode ser mais ou menos. Cada posição na memória do Simpletron pode conter uma instrução, um valor de dados utilizado por um programa ou uma área de memória não utilizada (e portanto indefinida). Os primeiros dois dígitos de cada instrução da SML são os códigos de operação que especificam a operação a ser realizada. Os códigos de operação da SML estão resumidos na Tabela 1.

Tabela 1: códigos de operação da Simpletron Machine Language (SML)
Código de operaçãoSignificado
Operações de entrada/saída:
READ = 10;Lê uma palavra do teclado para uma posição específica da memória.
WRITE = 11;Escreve na tela uma palavra de uma posição específica da memória.
Operações de carga/armazenamento:
LOAD = 20;Carrega uma palavra de uma posição específica na memória para o acumulador.
STORE = 21;Armazena uma palavra do acumulador em uma posição específica na memória.
Operações aritméticas:
ADD = 30;Adiciona uma palavra de uma posição específica na memória à palavra no acumulador (deixa o resultado no acumulador).
SUBTRACT = 31;Subtrai uma palavra de uma posição específica na memória à palavra no acumulador (deixa o resultado no acumulador).
DIVIDE = 32;Divide a palavra que está no acumulador por uma palavra de uma posição específica na memória (deixa o resultado no acumulador).
MULTIPLY = 33;Multiplica uma palavra de uma posição específica na memória pela palavra no acumulador (deixa o resultado no acumulador).
Operações de transferência de controle:
BRANCH = 40;Desvia para uma posição específica na memória.
BRANCHNEG = 41;Desvia para uma posição específica na memória se o acumulador for negativo.
BRANCHZERO = 42;Desvia para uma posição específica na memória se o acumulador for zero.
HALT = 43;Finaliza o programa.

Os últimos dois dígitos de uma instrução da SML são os operandos - o endereço da posição da memória que contém a palavra à qual a operação se aplica.

(Deitel, 2003) À primeira vista, pode parecer loucura, mas nesse problema você vai construir seu próprio computador. Não, você não irá soldar componentes. Em vez disso, você utilizará a poderosa técnica de simulação baseada em software para criar um modelo em software orientado a objetos do Simpletron. Você não se decepcionará. O simulador de Simpletron transformará o computador que você está utilizando em um Simpletron e você realmente será capaz de executar, testar e depurar os programas escritos em SML.

Quando você executa o simulador de Simpletron, ele deve começar exibindo:

Welcome to Simpletron!
Please enter your file program:

O usuário deve fornecer um arquivo contendo o código-fonte em SML, para ser carregado para a memória do Simpletron. Suponha que o usuário tenha fornecido o seguinte código-fonte:

+1007
+1008
+2007
+3008
+2109
+1109
+4300
+0000
+0000
+0000

Simule a memória do Simpletron como um array unidimensional memory que tem 100 elementos. Após armazenar as instruções do arquivo na sua memória, o Simpletron apresenta a seguinte mensagem ao usuário:

Simpletron loading completed!
Simpletron execution begins!

Agora, o programa em SML foi armazenado no array memory. A seguir, o Simpletron executa seu programa em SML. A execução começa com a instrução na posição 00 e continua na sequência, a menos que seja desviada para alguma outra parte do programa por uma transferência de controle.

Use a variável accumulator para representar o registrador acumulador. Use a variável instructionCounter para manter o controle da posição na memória que contém a instrução que está sendo executada. Use a variável operationCode para indicar a operação que está sendo atualmente executada, isto é, os dois dígitos da esquerda da palavra que contém a instrução. Use a variável operand para indicar a posição da memória sobre a qual a instrução atual opera. Deste modo, operand é composto pelos dois dígitos mais à direita da instrução que está sendo atualmente executada. Não execute instruções diretamente da memória. Em vez disso, transfira a próxima instrução que vai ser executada da memória para uma variável instructionRegister. Então, "retire" os dois dígitos da esquerda e coloque-os em operationCode; "retire" os dois dígitos da direita e coloque os mesmos em operand. Quando o Simpletron começa a execução, os registradores especiais são todos inicializados com zero.

Agora, vamos fazer um "passeio" pela execução da primeira instrução de SML, +1007, na posição de memória 00. Isto é chamado de um ciclo de execução de instrução.

O instructionCounter nos informa a posição da próxima instrução a ser executada. Realizamos uma busca (fetch) do conteúdo dessa posição a partir de memory utilizando o comando:

instructionRegister = memory[instructionCounter];

O código de operação e o operando são extraídos do registrador de instrução pelos comandos:

operationCode = instructionRegister / 100;
operand = instructionRegister % 100;

Agora o Simpletron deve determinar que o código da operação é, na verdade, uma instrução read (e não uma write, uma load, etc.). A estrutura switch diferencia as doze operações de SML.

Na estrutura switch, o comportamento de várias instruções de SML é simulado como mostrado na Tabela 1. Discutimos as instruções de desvio brevemente e deixamos as outras para o leitor.

Tabela 1: comportamento de diversas instruções SML no Simpletron
InstruçãoDescrição
READExibe um diálogo de entrada com o prompt input :
Converte o valor digitado em um inteiro e armazena-o na posição memory[operand].
LOADaccumulator = memory[operand];
ADDaccumulator += memory[operand];

Quando o programa de SML completar a execução, o nome e o conteúdo de cada registrador, bem como o conteúdo completo da memória devem ser exibidos. Esse tipo de impressão é frequentemente chamado de dump de memória. Para ajudá-lo a programar seu método de dump, um exemplo de formato de dump é mostrado na Figura 1. Observe que um dump, depois de executar um programa Simpletron, mostra os valores reais das instruções e os valores dos dados no momento em que a execução terminou. O exemplo de dump supõe que a saída será enviada para a tela do vídeo.

Figura 1: um exemplo de dump

REGISTERS:
+0000 Accumulator
00 Instruction Counter
+0000 Instruction Register
00 Operation Code
00 Operand

MEMORY:
0 1 2 3 4 5 6 7 8 9
0 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
1 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
2 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
3 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
4 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
5 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
6 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
7 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
8 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000
9 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000 +0000

Vamos prosseguir com a execução da primeira instrução de nosso programa, a saber, o +1007 na posição de memória 00. Como indicamos, a instrução switch simula isso pedindo que o usuário digite um valor na entrada, lendo o valor, convertendo o valor em um inteiro e armazenando-o na posição de memória memory[operand].

Um texto informativo (input : ) deve ser exibido na tela, antes da leitura ser executada, para solicitar que o usuário forneça um dado de entrada. O Simpletron espera o usuário digitar um valor e apertar a tecla return. O valor é então armazenado na posição 07.

Nesse momento, a simulação da primeira instrução está completa. Tudo que falta é preparar o Simpletron para executar a próxima instrução. Uma vez que a instrução que acabou de ser executada não era uma transferência de controle, necessitamos somente incrementar o registrador contador de instruções, como segue:

++instructionCounter;

Isso completa a execução simulada da primeira instrução. O processo inteiro (isto é, o ciclo de execução da instrução) começa novamente, com a busca da próxima instrução a ser executada.

Consideremos, agora, como instruções de desvio - transferências de controle - são simuladas. Tudo o que necessitamos fazer é ajustar o valor no contador de instruções apropriadamente. Então, a instrução de desvio incondicional (40) é simulada dentro da estrutura switch como:

instructionCounter = operand;

A instrução condicional "desvia se o acumulador for zero" é simulado como:

if(accumulador == 0)
{
instructionCounter = operand;
}

O simulador deve verificar vários tipos de erros. Durante a fase de entrada de dados, por exemplo, cada número que o usuário digita deve estar no intervalo de -9999 a +9999. O simulador deve testar se cada número fornecido está nesse intervalo e, se não estiver, continuar solicitando que o usuário digite novamente o número até que o usuário forneça um número correto.

Durante a fase de execução, o simulador deve verificar a ocorrência de vários erros sérios, tais como tentativas de divisão por zero, tentativas de execução de códigos de operações inválidos, estouros de acumulador (isto é, operações aritméticas que resultam em valores maiores do que +9999 ou menores do que -9999) e coisas semelhantes. Tais erros sérios são chamados de erros fatais. Quando um erro fatal é descoberto, o simulador deve imprimir uma mensagem de erro como:

error : attempt to divide by zero!
Simpletron execution abnormally terminated!

O simulador deve sempre imprimir um dump completo de computador no formato discutido anteriormente. Isso ajudará o usuário a localizar o erro no programa, caso algum imprevisto ocorra.

(Deitel, 2001) Desenvolva um programa em Simpletron Machine Language, que apresente a soma de dois números fornecidos pelo usuário. Por exemplo, caso os valores fornecidos pelo usuário sejam 2 e 7, o programa deverá apresentar como resposta o valor 9, ou seja, 2 + 7.

Desenvolva um programa em Simpletron Machine Language, que apresente a somatória dos n primeiros números positivos. O valor de n será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o valor fornecido pelo usuário para n seja 5, o programa deverá apresentar como resposta o valor 15, ou seja, 1 + 2 + 3 + 4 + 5. Caso o usuário forneça um valor inválido para n, o programa deverá apresentar como resposta o valor -1.

Desenvolva um programa em Simpletron Machine Language, que apresente a somatória dos números fornecidos pelo usuário, até que o usuário forneça o número zero. Por exemplo, caso os valores fornecidos pelo usuário sejam 1, 7, 4, 3 e 0, o programa deverá apresentar como resposta o valor 15, ou seja, 1 + 7 + 4 + 3.

Desenvolva um programa em Simpletron Machine Language, que apresente o produto dos n primeiros números positivos. O valor de n será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o valor fornecido pelo usuário para n seja 5, o programa deverá apresentar como resposta o valor 120, ou seja, 1 * 2 * 3 * 4 * 5. Caso o usuário forneça um valor inválido para n, o programa deverá apresentar como resposta o valor -1.

Desenvolva um programa em Simpletron Machine Language, que apresente o produto dos números fornecidos pelo usuário, até que o usuário forneça o número zero. Por exemplo, caso os valores fornecidos pelo usuário sejam 1, 7, 4, 3 e 0, o programa deverá apresentar como resposta o valor 84, ou seja, 1 * 7 * 4 * 3.

Desenvolva um programa em Simpletron Machine Language, que apresente a média dos n primeiros números positivos. O valor de n será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o valor fornecido pelo usuário para n seja 5, o programa deverá apresentar como resposta o valor 3, ou seja, (1 + 2 + 3 + 4 + 5) / 5. Caso o usuário forneça um valor inválido para n, o programa deverá apresentar como resposta o valor -1.

Desenvolva um programa em Simpletron Machine Language, que apresente a média dos números fornecidos pelo usuário, até que o usuário forneça o número zero. Por exemplo, caso os valores fornecidos pelo usuário sejam 2, 7, 4, 3 e 0, o programa deverá apresentar como resposta o valor 4, ou seja, (2 + 7 + 4 + 3) / 4.

(Deitel, 2001) Desenvolva um programa em Simpletron Machine Language, que apresente o maior número de dois números fornecidos pelo usuário. Por exemplo, caso os números fornecidos pelo usuário sejam 7 e 4, o programa deverá apresentar como resposta o valor 7, que é o maior número entre os dois números fornecidos pelo usuário.

Desenvolva um programa em Simpletron Machine Language, que apresente o maior número de três números fornecidos pelo usuário. Por exemplo, caso os números fornecidos pelo usuário sejam 5, 7 e 4, o programa deverá apresentar como resposta o valor 7, que é o maior número entre os três números fornecidos pelo usuário.

Desenvolva um programa em Simpletron Machine Language, que apresente o maior número dos n primeiros números fornecidos pelo usuário. O primeiro número fornecido pelo usuário indica a quantidade de números a serem lidos. Por exemplo, caso os números fornecidos pelo usuário sejam 4, 1, 7, 4 e 3, o programa deverá apresentar como resposta o valor 7, que é o maior número entre os quatro números fornecidos pelo usuário. Caso o usuário forneça um valor inválido para n, o programa deverá apresentar como resposta o valor -1.

Desenvolva um programa em Simpletron Machine Language, que apresente o maior número entre os números fornecidos pelo usuário, até que o usuário forneça o número zero. Por exemplo, caso os valores fornecidos pelo usuário sejam 1, 7, 4, 3 e 0, o programa deverá apresentar como resposta o valor 7, que é o maior número da sequência fornecida pelo usuário.

Desenvolva um programa em Simpletron Machine Language, que apresente o menor número de três números fornecidos pelo usuário. Por exemplo, caso os números fornecidos pelo usuário sejam 5, 7 e 4, o programa deverá apresentar como resposta o valor 4, que é o menor número entre os três números fornecidos pelo usuário.

Desenvolva um programa em Simpletron Machine Language, que apresente o menor número dos n primeiros números fornecidos pelo usuário. O primeiro número fornecido pelo usuário indica a quantidade de números a serem lidos. Por exemplo, caso os números fornecidos pelo usuário sejam 4, 1, 7, 4 e 3, o programa deverá apresentar como resposta o valor 1, que é o menor número entre os quatro números fornecidos pelo usuário. Caso o usuário forneça um valor inválido para n, o programa deverá apresentar como resposta o valor -1.

Desenvolva um programa em Simpletron Machine Language, que apresente o menor número entre os números fornecidos pelo usuário, até que o usuário forneça o número zero. Por exemplo, caso os valores fornecidos pelo usuário sejam 1, 7, 4, 3 e 0, o programa deverá apresentar como resposta o valor 1, que é o menor número da sequência fornecida pelo usuário.

Desenvolva um programa em Simpletron Machine Language, que apresente a sequência crescente entre 0 e n. O valor de n será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o valor fornecido pelo usuário para n seja 5, o programa deverá apresentar como resposta a sequência de valores 0 1 2 3 4 5. Caso o usuário forneça um valor inválido para n, o programa deverá apresentar como resposta o valor -1.

Desenvolva um programa em Simpletron Machine Language, que apresente a sequência decrescente entre n e 0. O valor de n será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o valor fornecido pelo usuário para n seja 5, o programa deverá apresentar como resposta a sequência de valores 5 4 3 2 1 0. Caso o usuário forneça um valor inválido para n, o programa deverá apresentar como resposta o valor -1.

Desenvolva um programa em Simpletron Machine Language, que apresente a exponenciação de uma base qualquer por um expoente positivo qualquer, ou seja, BE. O valor de E será fornecido pelo usuário, devendo ser um valor inteiro e positivo. O valor de B será fornecido pelo usuário, podendo ser um valor qualquer. Por exemplo, caso o valor fornecido pelo usuário para B seja 2 e para E seja 5, o programa deverá apresentar como resposta o valor 32, ou seja, 2 * 2 * 2 * 2 * 2. Caso o usuário forneça um valor inválido para E, o programa deverá apresentar como resposta o valor -1.

Desenvolva um programa em Simpletron Machine Language, que apresente os termos da série de Fibonacci. A série de Fibonacci é formada pela sequência 1, 1, 2, 3, 5, 8, 13, 21, 34, .... A série de Fibonacci é de grande importância matemática, e a lei básica é que a partir do terceiro termo, todos os termos são a soma dos dois últimos termos. O número de termos a serem impressos será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o número de termos a serem impressos fornecido pelo usuário seja 7, o programa deverá apresentar como resposta a sequência de valores 1 1 2 3 5 8 13. Caso o usuário forneça um valor inválido para o número de termos, o programa deverá apresentar como resposta o valor -1.

Desenvolva um programa em Simpletron Machine Language, que apresente a somatória dos termos da série de Fibonacci. A série de Fibonacci é formada pela sequência 1, 1, 2, 3, 5, 8, 13, 21, 34, .... A série de Fibonacci é de grande importância matemática, e a lei básica é que a partir do terceiro termo, todos os termos são a soma dos dois últimos termos. O número de termos será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o número de termos fornecido pelo usuário seja 7, o programa deverá apresentar como resposta o valor 33, ou seja, 1 + 1 + 2 + 3 + 5 + 8 + 13. Caso o usuário forneça um valor inválido para o número de termos, o programa deverá apresentar como resposta o valor -1.

Desenvolva um programa em Simpletron Machine Language, que apresente o produto dos termos da série de Fibonacci. A série de Fibonacci é formada pela sequência 1, 1, 2, 3, 5, 8, 13, 21, 34, .... A série de Fibonacci é de grande importância matemática, e a lei básica é que a partir do terceiro termo, todos os termos são a soma dos dois últimos termos. O número de termos será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o número de termos fornecido pelo usuário seja 7, o programa deverá apresentar como resposta o valor 3.120, ou seja, 1 * 1 * 2 * 3 * 5 * 8 * 13. Caso o usuário forneça um valor inválido para o número de termos, o programa deverá apresentar como resposta o valor -1.

Desenvolva um programa em Simpletron Machine Language, que apresente a média dos termos da série de Fibonacci. A série de Fibonacci é formada pela sequência 1, 1, 2, 3, 5, 8, 13, 21, 34, .... A série de Fibonacci é de grande importância matemática, e a lei básica é que a partir do terceiro termo, todos os termos são a soma dos dois últimos termos. O número de termos será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o número de termos fornecido pelo usuário seja 7, o programa deverá apresentar como resposta o valor 4, ou seja, (1 + 1 + 2 + 3 + 5 + 8 + 13) / 7. Caso o usuário forneça um valor inválido para o número de termos, o programa deverá apresentar como resposta o valor -1.

Desenvolva um programa em Simpletron Machine Language, que apresente os n primeiros termos da sequência yk = yk-1 + 2, sendo k = 1, 2, ..., n e y1 = 1. O número de termos será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o número de termos fornecido pelo usuário seja 5, o programa deverá apresentar como resposta a sequência de valores 1 3 5 7 9. Caso o usuário forneça um valor inválido para o número de termos, o programa deverá apresentar como resposta o valor -1.

y1 = 1
y2 = y1 + 2 = 3
y3 = y2 + 2 = 5
y4 = y3 + 2 = 7
y5 = y4 + 2 = 9

Desenvolva um programa em Simpletron Machine Language, que apresente os n primeiros termos da sequência yk = yk-1 + k, sendo k = 1, 2, ..., n e y1 = 1. O número de termos será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o número de termos fornecido pelo usuário seja 5, o programa deverá apresentar como resposta a sequência de valores 1 3 6 10 15. Caso o usuário forneça um valor inválido para o número de termos, o programa deverá apresentar como resposta o valor -1.

y1 = 1
y2 = y1 + 2 = 3
y3 = y2 + 3 = 6
y4 = y3 + 4 = 10
y5 = y4 + 5 = 15

Desenvolva um programa em Simpletron Machine Language, que apresente os n primeiros termos da sequência yk+1 = yk + (2 * k + 1), sendo k = 1, 2, ..., n e y1 = 1. O número de termos será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o número de termos fornecido pelo usuário seja 5, o programa deverá apresentar como resposta a sequência de valores 1 4 9 16 25. Caso o usuário forneça um valor inválido para o número de termos, o programa deverá apresentar como resposta o valor -1.

y1 = 1
y2 = y1 + (2 * 1 + 1) = 4
y3 = y2 + (2 * 2 + 1) = 9
y4 = y3 + (2 * 3 + 1) = 16
y5 = y4 + (2 * 4 + 1) = 25

Desenvolva um programa em Simpletron Machine Language, que apresente os n primeiros termos da sequência yk+1 = yk + (3 * k2 + 3 * k + 1), sendo k = 1, 2, 3, ..., n e y1 = 1. O número de termos será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o número de termos fornecido pelo usuário seja 5, o programa deverá apresentar como resposta a sequência de valores 1 8 27 64 125. Caso o usuário forneça um valor inválido para o número de termos, o programa deverá apresentar como resposta o valor -1.

y1 = 1
y2 = y1 + (3 * 1 * 1 + 3 * 1 + 1) = 8
y3 = y2 + (3 * 2 * 2 + 3 * 2 + 1) = 27
y4 = y3 + (3 * 3 * 3 + 3 * 3 + 1) = 64
y5 = y4 + (3 * 4 * 4 + 3 * 4 + 1) = 125

Desenvolva um programa em Simpletron Machine Language, que apresente os n primeiros termos da sequência yk+1 = 2 * yk, sendo k = 1, 2, ..., n e y1 = 1. O número de termos será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o número de termos fornecido pelo usuário seja 5, o programa deverá apresentar como resposta a sequência de valores 1 2 4 8 16. Caso o usuário forneça um valor inválido para o número de termos, o programa deverá apresentar como resposta o valor -1.

y1 = 1
y2 = 2 * y1 = 2
y3 = 2 * y2 = 4
y4 = 2 * y3 = 8
y5 = 2 * y4 = 16

Desenvolva um programa em Simpletron Machine Language, que apresente a somatória de 2 * k, sendo k = 1, 2, ..., n. O número de termos será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o número de termos fornecido pelo usuário seja 5, o programa deverá apresentar como resposta o valor 30, ou seja, (2 * 1) + (2 * 2) + (2 * 3) + (2 * 4) + (2 * 5). Caso o usuário forneça um valor inválido para o número de termos, o programa deverá apresentar como resposta o valor -1.

Desenvolva um programa em Simpletron Machine Language, que apresente a média de 2 * k, sendo k = 1, 2, ..., n. O número de termos será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o número de termos fornecido pelo usuário seja 5, o programa deverá apresentar como resposta o valor 6, ou seja, ((2 * 1) + (2 * 2) + (2 * 3) + (2 * 4) + (2 * 5)) / 5. Caso o usuário forneça um valor inválido para o número de termos, o programa deverá apresentar como resposta o valor -1.

Desenvolva um programa em Simpletron Machine Language, que apresente a somatória de k2, sendo k = 1, 2, ..., n. O número de termos será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o número de termos fornecido pelo usuário seja 5, o programa deverá apresentar como resposta o valor 55, ou seja, 12 + 22 + 32 + 42 + 52. Caso o usuário forneça um valor inválido para o número de termos, o programa deverá apresentar como resposta o valor -1.

Desenvolva um programa em Simpletron Machine Language, que apresente a média de k2, sendo k = 1, 2, ..., n. O número de termos será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o número de termos fornecido pelo usuário seja 5, o programa deverá apresentar como resposta o valor 11, ou seja, (12 + 22 + 32 + 42 + 52) / 5. Caso o usuário forneça um valor inválido para o número de termos, o programa deverá apresentar como resposta o valor -1.

Desenvolva um programa em Simpletron Machine Language, que leia dois números do usuário e os apresente em ordem crescente. Por exemplo, caso os números fornecidos pelo usuário sejam 5 e 7, o programa deverá apresentar como resposta a sequência 5 7.

Desenvolva um programa em Simpletron Machine Language, que leia dois números do usuário e os apresente em ordem decrescente. Por exemplo, caso os números fornecidos pelo usuário sejam 5 e 7, o programa deverá apresentar como resposta a sequência 7 5.

Desenvolva um programa em Simpletron Machine Language, que leia três números do usuário e os apresente em ordem crescente. Por exemplo, caso os números fornecidos pelo usuário sejam 5, 7 e 4, o programa deverá apresentar como resposta a sequência 4 5 7.

Desenvolva um programa em Simpletron Machine Language, que leia três números do usuário e os apresente em ordem decrescente. Por exemplo, caso os números fornecidos pelo usuário sejam 5, 7 e 4, o programa deverá apresentar como resposta a sequência 7 5 4.

Desenvolva um programa em Simpletron Machine Language, que leia quatro números do usuário e os apresente em ordem crescente. Por exemplo, caso os números fornecidos pelo usuário sejam 1, 7, 4, 3, o programa deverá apresentar como resposta a sequência 1 3 4 7.

Desenvolva um programa em Simpletron Machine Language, que leia quatro números do usuário e os apresente em ordem decrescente. Por exemplo, caso os números fornecidos pelo usuário sejam 1, 7, 4, 3, o programa deverá apresentar como resposta a sequência 7 4 3 1.

Deitel, H. M. (2001). C++, como programar. 3ª edição. Porto Alegre: Bookman. 1.098 páginas.

Deitel, H. M. (2003). Java, como programar. 4ª edição. Porto Alegre: Bookman. 1.386 páginas.