Programar em C/Constantes

Origem: Wikilivros, livros abertos por um mundo aberto.
Esta página precisa ser reciclada (discuta).
Ao melhorá-la, você estará ajudando o Wikilivros.

Constantes[editar | editar código-fonte]

Em um capítulo anterior abordamos as variáveis e agora vamos abordar constantes. A razão é que as coisas estão mais maduras e uma pessoa sabe muito bem o que é uma constante. Que é simplesmente um valor que não se altera durante a execução do programa. A questão de não se alterar durante a escrita do programa é realmente a razão deste capítulo. Devemos separar as águas entre uma constante e um literal. O literal é o próprio valor.

Existem 3 maneiras para criar constantes:

  1. #define
  2. [const] [tipo da variável][nome da variável]
  3. enumerations

Esta última vamos deixar para mais tarde, pois são uma boa introdução para as classes.

DEFINED CONSTANTS (#DEFINE)[editar | editar código-fonte]

#define PI 3.14159265
#define NEWLINE "\n"

Se colocarmos estas linhas no header, o que vai acontecer é o seguinte: O pré-processador irá verificar o nosso código fonte e sempre que encontrar a diretiva #define irá, literalmente, substituir cada ocorrência do identificador no código fonte pelo valor definido.

A vantagem disto é que:

  • Podemos ter um identificador ao nosso gosto, e sempre que necessitarmos do valor escrevemos o identificador, em vez do valor, até porque se o valor fosse complicado poderíamos enganar-nos a escrever. Claro que nos poderíamos enganar também a escrever o identificador, daí a escolhermos um nome familiar.
  • E se necessitarmos de alterar o valor, alteramos apenas 1 vez, em vez de todas as vezes onde apareceria o valor.

O formato geral é:

#define identificador valor

Repare que a diretiva de preprocessador não tem o “;”- “ponto e vírgula” no fim! O que é normal para diretivas de Preprocessador.

O que é que acontece se tivermos o “;” no fim? Será que encontrei um bug? se eu colocar o ; no #define NEWLINE '\n'; não acontece nada.

Vale lembrar que cada #define é preprocessado, ou seja, não pode ser alterado dentro do programa durante sua execução.

// defined constants: calculate circumference
#include <stdio.h>

#define PI 3.14159
#define NEWLINE "\n"

int main (){
  double r=5.0;               // radius
  double circle;
  circle = 2 * PI * r;       // utilizamos o Pi e não 3.
  printf("%f", circle);
  printf("%s", NEWLINE );
  return 0;
}

Declared constants (const)[editar | editar código-fonte]

Nós podemos transformar uma variável numa constante do gênero:

  • const int tamanho = 100;
  • const char tabul = '\t';
  • const int codigo = 12440;

Com o prefixo "const", dizemos que a variável não poderá alterar o seu valor.

Repare que se fosse uma variável eu poderia ter:

int a=5;

e logo a seguir dizer

a=6;

e o valor do a ficava com o valor de 6;

Agora com o prefixo const eu não poderei alterar o valor, porque constante é constante, não pode mudar o valor.

Esta maneira é bem melhor do que a anterior para declarar constantes, primeiro porque aqui temos a informação do tipo de variável, em segundo porque podemos fazer este const int a; como uma função local e não global.