Escreva um algoritmo que solicite ao usuário dois números a e b. Seu programa deve somar todos os reais entre a e b e exibir a soma.
Passo 1
O enunciado pede que o programa solicite ao usuário dois números
e
e que o programa some "todos os reais entre
e
" e exiba a soma.
Informações dadas:
Informações dadas:
- Dois números
e (podem ser inteiros ou reais). - A tarefa: "somar todos os reais entre
e " e mostrar o resultado.
Passo 2
Primeira coisa importante: explicar por que a frase "somar todos os reais entre
e
" é problemática.
- O conjunto dos números reais entre
e , isto é o intervalo (ou ), contém uma quantidade não contável de elementos — “infinitos não contáveis”. Não faz sentido, em programação ou em teoria clássica de somas, falar em “somar um conjunto não contável de números” como fazemos com somas finitas ou séries infinitas contáveis. - Mesmo matematicamente: a soma direta
não está definida (não é um conceito bem-formado). O análogo contínuo é a integral, que mede área e pode dar um valor finito, mas a integral não é a mesma operação que “somar elemento a elemento” de um conjunto enumerável.
Resumo: não dá para implementar literalmente “somar todos os reais” em um programa — precisamos interpretar de forma prática o que se quer.
Passo 3
Opções razoáveis (interpretações práticas) e qual escolher:
- Opção A (mais comum em exercícios de programação iniciais): somar todos os inteiros que ficam entre
e . É simples, discreto e faz sentido computacionalmente. - Opção B: aproximar a soma de todos os reais por uma soma com passo
(uma soma tipo Riemann), por exemplo somar até . Precisa de um parâmetro extra . - Opção C: interpretar “somar todos os reais” como calcular a “soma contínua” — isto é a integral
(se a função for ); para esse caso existe fórmula fechada.
Vou escolher a Opção A (somar inteiros entre
e
) como método principal porque:
- É a interpretação mais prática e provável num exercício básico de algoritmos.
- Não exige entrada extra além de
e . - É simples de implementar e de justificar na prova.
Também vou mostrar rapidamente a Opção C (integral) como alternativa matemática, para você saber se o enunciado queria isso.
Passo 4
Como somar os inteiros entre
e
— conceitos necessários:
- Queremos todos os inteiros
tais que . Se e puderem vir em qualquer ordem (por exemplo ), devemos trocar para trabalhar com o intervalo crescente. - Definimos:
-
como o menor inteiro maior ou igual a . Aqui é a função “teto” ou ceiling. -
como o maior inteiro menor ou igual a . Aqui é a função “chão” ou floor.
-
- Os inteiros entre
e são então , desde que . Se não há inteiros no intervalo e a soma é (soma de conjunto vazio).
Passo 5
Fórmula para somar os inteiros de
até
(progressão aritmética):
- A soma dos inteiros consecutivos de
até é
Explicação rápida do porquê: são
termos; média aritmética do primeiro e do último termo é
; soma = (número de termos) × (média).
Usando essa fórmula você obtém a soma em tempo constante
sem precisar somar termo a termo.
Passo 6
Algoritmo passo a passo (versão com fórmula, mais eficiente). Comentários didáticos em cada passo:
- Ler
e do usuário. (Eles podem ser números reais.) - Se
, trocar os valores para trabalhar sempre com intervalo crescente. Isso evita erros quando o usuário entra com maior que . - Calcular
. (Explicação: por exemplo, se então ; se então .) - Calcular
. (Explicação: por exemplo, se então ; se então .) - Se
, então não há inteiros no intervalo; a soma é . Exibir e terminar. - Caso contrário, usar a fórmula
para obter a soma
.
7) Exibir .
7) Exibir
Complexidade: O(1) — apenas algumas operações aritméticas e funções teto/chão.
Passo 7
Algoritmo alternativo (versão direta, menos eficiente): somar com um laço.
- Após calcular
e como acima, inicialize . - Para
de até : . - Exibir
.
Complexidade:, pode ser lenta se o intervalo contiver muitos inteiros. Mas é simples e direto para implementar se você não lembrar da fórmula.
Passo 8
Breve comentário sobre a Opção C (se o enunciado quisesse “somar continuamente” — integral):
- A integral da função identidade
entre e é
- Isso fornece um valor numérico contínuo (por exemplo, para
e obtemos ). - Importante: esse valor é uma área (ou soma contínua no sentido integral), não a soma “termo a termo” de um conjunto enumerável. Use essa opção só se o professor estiver mesmo pensando em integral.
Passo 9
Exemplos numéricos para fixar (usando Opção A, inteiros):
- Exemplo 1:
, . Então , . Soma via fórmula:
Verificação por laço:
.
- Exemplo 2:
, . Então , . Como , não há inteiros; .
Passo 10
Código-pseudocódigo final (implementação recomendada, usando a fórmula). Vou escrever de modo direto e comentado para você poder copiar numa linguagem como Python ou C facilmente.
Algoritmo (pseudocódigo):
- Ler
(real) e (real) do usuário. - Se
então trocar e . - Calcular
. - Calcular
. - Se
então: - Exibir
e terminar.
- Exibir
- Senão:
- Calcular
- Exibir
.
- Calcular
Observações de implementação:
- Em Python, você pode usar
m = math.ceil(a)en = math.floor(b)(importando o módulomath). - Em C, pode usar
ceilefloorda biblioteca<math.h>e depois converter para inteiros. - Se quiser resultado inteiro use tipo inteiro; se usar grande intervalo que cause overflow, use tipos maiores (por exemplo 64-bit).
Resposta
Ler
e
. Se
trocar
e
.\nCalcular
e
.\nSe
então exibir
.\nSenão calcular
e exibir
.