Friday, December 26, 2008

Quando quero restringir um contador até um valor máximo, utilizo o operador ‘resto de divisão’. Digamos que eu tenha uma sequência de números (por exemplo, entre 0 e 29) e que eu precise somente dos valores entre 0 e 3:

Seq 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Seq % 4 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3

E quando isso é útil? Por exemplo, se você tiver um vetor com os caracteres “/-\|” e queira fazer uma ‘estrela de progresso’, pra indicar que está processando (em C):

void progresso(void) {
  static char* caracteres = "/-\\|";
  static size_t n_caracteres = strlen(caracteres);
  static int i = 0;
  printf("%c\b", caracteres[i]);
  i = (i+1) % n_caracteres;
}

Desta forma garantimos que o valor de “i” estará sempre entre zero e o tamanho do vetor de caracteres.

posted on Friday, December 26, 2008 8:03:42 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]