Programar em C/Constantes
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:
#define
- [const] [tipo da variável][nome da variável]
- 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.