Skip to content

Laboratório 7 - Calculando o valor de uma integral

📝 Descrição - Peso 2

Neste laboratório, você irá implementar um programa em linguagem de montagem Assembly RISC-V que calcula o valor aproximado de uma integral definida, composta por três termos polinomiais. A integral será avaliada no intervalo de a até b. Cada termo do polinômio tem o formato: - (+ ou -) X elevado a um número inteiro de 1 a 999.

O programa receberá quatro linhas de entrada:

  1. Três linhas correspondentes aos termos da função, no formato:

    • + 1 ou - 2, representando +x¹ e -x², por exemplo.
  2. Última linha com dois números inteiros:

    • o início e o fim do intervalo da integral (valores a e b).

O cálculo da integral deve ser feito aproximando-a por soma de retângulos (como em Cálculo 1), considerando apenas valores inteiros (truncamento). Utilize estruturas de repetição e decisão (if, else, for, while) conforme visto em aula para implementar o programa.

🧮 Exemplo

Segue um exemplo do que deve ser feito:

Entrada:

+ 1
- 2
+ 4
32 37
Os passos para o cálculo serão semelhantes aos ilustrados abaixo:

\[ \int_{32}^{37} + x^1 - x^2 + x^4 dx \]
\[ \int_{32}^{37} x^1 dx - \int_{32}^{37}x^2dx + \int_{32}^{37} x^4 dx \]
\[ \left. \frac{x^2}{2} \right|_{32}^{37} - \left. \frac{x^3}{3} \right|_{32}^{37} + \left. \frac{x^5}{5} \right|_{32}^{37} \]
\[ \left( \frac{37^2}{2} - \frac{32^2}{2} \right) - \left( \frac{37^3}{3} - \frac{32^3}{3} \right) + \left( \frac{37^5}{5} - \frac{32^5}{5} \right) \]

Dessa forma, realizando os truncamentos necessários, o resultado é:

Assim, você conseguirá uma boa aproximação para o valor real da integral. A imagem seguinte exemplifica o processo:

\[ \displaystyle\int_{a}^{b} x^0dx = \left. \frac{x^{\theta + 1}}{\theta + 1} \right|_a^b \]
\[ \left( \frac{b^{\theta + 1}}{\theta+1} - \frac{a^{\theta + 1}}{\theta+1} \right) \]

✅ Requisitos

  • O programa deve ser escrito em assembly RISC-V.
  • A integral deve ser aproximada por soma de retângulos (como em Cálculo 1).
  • O cálculo deve considerar apenas valores inteiros (truncamento).
  • O resultado deve ser próximo o suficiente do valor real da integral.
  • Utilize estruturas de repetição e decisão (if, else, for, while) conforme visto em aula.
  • A entrada e a saída devem ser feitas via console (syscall).

📥 Exemplos de Entrada e Saída

✅ Exemplo 1:

Entrada:

+ 1
- 2
+ 4
32 37
Saída:
7152115

✅ Exemplo 2

Entrada:

+ 2
+ 3
+ 4
10 11
Saída Esperada:
13480


✅ Exemplo 3

Entrada:

+ 999
+ 997
+ 998
0 1
Saída Esperada:
0

Tip

  • Tente padronizar o código e separar as coisas em vetores. As operações são bem parecidas para todas as integrais.
  • Teste seu programa com diferentes valores para garantir que a lógica de proporcionalidade esteja correta.
  • Lembre-se que o '\n' está presente ao final do input.
  • Na saída, você também deve inserir um '\n'.

Por fim, valide seu código no simulador ALE aqui e envie o relatório como lab07_raXXXXXX.report substituindo XXXXXX pelo seu RA.

Warning

  • Qualquer alteração no arquivo de report será considerado fraude
  • Esta é uma atividade que deve ser realizada programando-se em linguagem de montagem - A submissão de programas em linguagem de programação de alto nível, como C, ou de programas gerados por ferramentas de compilação, serão considerados como fraude
  • Está é uma atividade individual, o qual deve ser desenvolvido individualmente, qualquer forma de cópia ou plágio será penalizada. Portanto, atividades que apresentarem semelhanças injustificadas serão atribuídas nota zero para todos os envolvidos