En programación es común el uso de contadores y acumuladores, en este post explico la diferencia porque frecuentemente quienes están aprendiendo a programar confunden unos con otros.
Un contador es una variable que se utiliza para contar algo. Normalmente usamos un contador dentro de un ciclo y cambiamos su valor sumándole o restándole una constante, es decir, siempre se le suma o resta la misma cantidad. El caso más utilizado es incrementar la variable en uno.
En el siguiente programa en C se tiene un arreglo de 10 números enteros y se utiliza un ciclo con un contador para ver cuántas veces aparece el número 3.
Programa contador.c
#include <stdio.h>
int main()
{
int numero = 3;
int x=0, contador=0;
int arreglo[10]={3,7,1,2,7,3,5,6,-2,7};
// Recorre el arreglo y cuenta cuántas veces aparece el valor que contiene la variable numero
for (x=0; x<10; ++x)
{
if (arreglo[x] == numero)
/* El nuevo valor de la variable contador va a ser igual a su valor actual más uno
Se puede escribir como preincremento ( ++contador ) o como postincremento ( contador++ )
pero para que sea bastante evidente, lo escribí de forma explícita ( contador = contador+1 )
*/
contador = contador+1;
}
printf("\n");
printf("El número %d aparece %d veces en el arreglo\n", numero, contador);
return 0;
}
El siguiente programa en C es un ejemplo de un contador que se va decrementando en uno; simula una cuenta regresiva.
Programa cuenta_regresiva.c
#include <stdio.h>
int main()
{
int contador=10;
// Imprime los números del 10 al cero
while (contador >= 0)
{
printf("Despegue en %d\n", contador);
contador = contador-1;
}
return 0;
}
Un acumulador es una variable que se utiliza para sumar valores. Al igual que el contador, se utiliza normalmente dentro de un ciclo pero cambiamos su valor sumándole una variable, es decir, no siempre se le suma la misma cantidad.
En el siguiente programa, utilizamos el mismo arreglo del programa contador.c, pero ahora no vamos a contar cuántas veces aparece un número x, sino que vamos a sumar todos los valores que aparezcan en el arreglo y que sean mayores a un número determinado.
Programa acumulador.c
#include <stdio.h>
int main()
{
int mayores_que = 3;
int x=0, suma=0;
int arreglo[10]={3,7,1,2,7,3,5,6,-2,7};
// Recorre el arreglo y suma todos los números mayores al valor que contiene la variable mayores_que
for (x=0; x<10; ++x)
{
if (arreglo[x] > mayores_que)
/* El nuevo valor de la variable suma va a ser igual a su valor actual más el número
que se encuentra en la posición actual del arreglo
*/
suma = suma+arreglo[x];
}
printf("Todos los números mayores a %d en el arreglo suman %d\n", mayores_que, suma);
return 0;
}