terça-feira, 3 de setembro de 2013

O dogmatismo do índice dos vetores

De uns tempos para cá tenho observado que muitas pessoas adotaram a indexação de vetores/matrizes iniciando em UM.
Iniciar a contagem em ZERO, desde o início, sempre foi uma coisa elementar, talvez por comodismo alguns adotem o índice UM, ou talvez, porque foram ensinados assim ou, ainda, porque nunca se preocuparam em estudar ou mesmo porque não entendem que quando programamos um computador estamos manipulando, direta ou indiretamente, endereços de memória.
De uma forma ou outra para saciar a sede daqueles buscam conhecimento e esclarecer aos menos afortunados, segue um exemplo simples.

O primeiro print já é suficiente para provar que o índice dos vetores começa em ZERO, mas vou um pouco além provando que na verdade um vetor funciona de forma análoga a um ponteiro, ou seja é um apontador.

#include <stdio.h>

void main () {
   int i;
   int vet[3]  = {0, 1, 2};
   int *pon;

   printf("Vetor populado vet[3]  = {0,  1,  2}\n");

   printf("Maneira correta: INDICE O\nLendo espaco de memoria reservada.\n\n");
   for (i=0; i<3; i++)
     printf("Vet[%d]=%d \n", i, vet[i]);

   printf("\n\nManeira errada: INDICE 1 \nInvadindo espaco de memoria nao reservada!\n\n");
   for (i=1; i<4; i++)
     printf("Vet[%d]=%d \n", i, vet[i]);

   printf("\n\nUm laco ate 6!\n\n");
   for (i=0; i<7; i++)
     printf("Vet[%d]=%d \n", i, vet[i]);

   printf("\n\nFuncionamento analogo aos ponteiros, \npois e um apontador!\n\n");
   pon = &vet[0];
   for (i=0; i<3; i++)
     printf("Ponteiro^%d=%d \n", i, *(pon+i));
}

Aqueles "programas" bobos que fazemos em sala de aula té "funcionam" quando gerenciamos de maneira errada um vetor, apenas alguém que programa profissionalmente sabe as repercussões em sistema computacional de uma manipulação de memória feita de maneira equivocada.

3 comentários:

  1. This text is worth everyone's attention. When can I find
    out more?

    my site: http://ricardoalfonsinblog.com/profile-12135/info/

    ResponderExcluir
    Respostas
    1. Hi

      In the future I plan to write new articles about structures, file I / O, pointers and binary trees. Stay in touch soon as possible I'll write more.

      Best regards
      Luciano

      Excluir
  2. Hi

    Absolutely, feel free to share!

    Thank you
    Luciano

    ResponderExcluir

Olá

Por gentileza identifique-se, comentários sem identificação não serão publicados.

Obrigado
L.S.T.

Related Posts Plugin for WordPress, Blogger...