Programar em C/Constantes: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Daveiro (discussão | contribs)
Sem resumo de edição
 
Daveiro (discussão | contribs)
Sem resumo de edição
Linha 6:
 
----
 
 
 
== Constantes ==
 
Num capítulo anterior abordámos 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 quer 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] [tipologia da variavel][nome da variavel]
# enumerations
 
Esta ultima vamos deixar para mais tarde, pois são uma boa introdução para as classes
 
 
 
 
 
== DEFINED CONSTANTS (#DEFINE) ==
 
* #define PI 3.14159265
* #define NEWLINE '\n'
Se colocarmos estas linhas no header, o que vai acontecer é o seguinte:
O pré-processador vai verificar o nosso source code e sempre que encontrar a directiva #define vai literalmente substituir cada ocorrência do identificador no source code 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 directiva de preprocessador não tem o “;”- “ponto e virgula” no fim! O que é normal para directivas de Préprocessador.
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.
 
 
{| border 1
|
// defined constants: calculate circumference
#include <iostream>
using namespace std;
#define PI 3.14159
#define NEWLINE '\n'
int main ()
{
double r=5.0; // radius
double circle;
circle = 2 * PI * r; // utilizámos o Pi e não 3,….
cout << circle;
cout << NEWLINE;
system (“pause”);
return 0;
}
|}
 
 
 
 
== Declared constants (const) ==
 
Nós podemos transformar uma variável numa constante do género:
*const int tamanho = 100;
*const char tabul = '\t';
*const código = 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
*int 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 irá dar erro no compilador.
 
Esta maneira é bem melhor do que a anterior para declarar constantes porque
aqui temos a informação da tipologia de variável
Em segundo porque podemos fazer este const int a; como uma função local e não global.