4
respostas

Soma de 1 a 100

Não entendi a logica do código abaixo, queria entender melhor o conceito de soma = soma + i,

#include <stdio.h>

int main(){

int soma = 0;
for (int i = 0; i <= 100; i++){
    soma = soma + i;
}       

printf(" A soma e %d", soma);

}

4 respostas

soma = soma + i

a variável soma vai receber o valor que está dentro dela mesma e depois acrescentar o valor do i de acordo com o looping do for.

se soma valer 1, vai ser acrescida do valor de i, que pode ser 1 e virar: soma = 2 no próximo giro soma vai receber o valor que já tinha antes, que é 2, e depois somar com o próximo i, e assim segue a lógica.

soma = soma + 1 significa que você está acrescentando o valor +1 na variável, também pode ser representado como "soma++".

Acho que o seu código ficará melhor assim(?):

#include <stdio.h>

int main(){
    for (int i = 0; i <= 100; i++){ // aqui seria algo tipo: para (variavel "i" inicia em 0; variável executara o codigo dentro do escopo até chegar no valor 100; i++ é quando finalizar a execução do loop dentro do escopo, ou seja, irá somar +1 na variável "i", algo tipo i = i +1 
        printf("%d\n", i);  //valores
    }
}

A variável soma é inicializada com valor 0 em:

int soma = 0;

Depois faz a operações, atribuindo a "i" todos os valores de 0 a 100 (um por vez). Esse seria o loop, que tem a função de fazer operações quantas vezes forem definidas. No caso, ele vai percorrer todos os números dentro do intervalo de 0 a 100. Para cada valor que "i" assume, esse valor é adicionado a variável soma. Então a variável soma passará a ser a adição entre o valor atual da variável soma e o valor de "i".

Seguindo os passos, seria: Para i = 0, soma = 0: soma = soma + i; -> soma = 0 + 0;

Para i = 1, soma = 0: soma = 0 + 1;

Para i = 2, soma = 1: soma = 1 + 2;

Para i = 3, soma = 3; soma = 3 + 3;

Para i = 4, soma = 6; soma = 6 + 4;

E assim por diante, somando o resultado anterior com o valor de i. No final, o resultado será a soma de todos os elementos do intervalo.

Se colocar o printf logo abaixo da operação soma, dentro do for, verá cada etapa do processo com o valor de soma.

Oi Jhony,

Um ponto um pouco confuso de várias linguagens de programação é o símbolo =, que geralmente chamamos de igualdade. Quando pensamos em matemática, expressões como x = x + 1 não fazem nenhum sentido. "x é igual a x mais um" nunca é verdade.

Nas linguagens C e C++, o símbolo = não significa igualdade, mas sim atribuição. Eu gosto de usar a palavra "recebe". A leitura da expressão x = x + 1 seria "x recebe o valor de x mais um".

int x = 7;
// x recebe x (que vale 7) mais 1
x = x + 1
// agora x vale 8

É importante notar que primeiro o lado direito é avaliado e só depois a atribuição acontece.

Em outras linguagens, outros símbolos são utilizados para evitar confusão. Em R por exemplo, escreveríamos assim

x <- 7
x <- x + 1