Vamos Programar? – Introdução à Programação #15
Constantes
O mundo está constantemente a evoluir: desde o mais pequeno inseto à espécie Humana. Dentro das palavras que mais ouvimos atualmente, incluímos "evolução", "mudança", "futuro".
A tecnologia tem revolucionado o mundo das mais diversas formas: do mais simples aparelho para medir o tempo ao mais complexo acelerador de partículas. Se quer entrar no mundo da tecnologia e deixar a sua marca, pode começar aqui.
Visualize este vídeo no YouTube
Constantes
Em C, tal como em outras linguagens de programação, existem as constantes. Constantes são, à semelhança das variáveis, algo em que pudemos armazenar dados mas que, ao contrário das variáveis, não podemos alterar os dados que lá estão gravados.
Existem diversas formas de declarar constantes em C. Iremos abordar duas que são as mais utilizadas: as constantes declaradas e as constantes definidas.
Constantes Definidas (#define)
Chamam-se Constantes Definidas àquelas que são declaradas no cabeçalho de um ficheiro. Estas são interpretadas pelo pré-processador que procederá à substituição da constante em todo o código pelo respetivo valor.
Sintaxe
1 | #define identificador valor |
Onde:
- identificador → o nome da constante que, convencionalmente, é escrito com letras maiúsculas;
- valor → o valor da constante.
Exemplo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> #define PI 3.14159 int main (){ double r = 5.0; double circle; circle = 2 * PI * r; printf("%f\n", circle); return 0; }</stdio.h> |
O que acontece aqui é que, quando o pré-compilador lê a definição da constante "PI", substitui todos os "PI" no código pelo valor que lhe está atribuído, literalmente.
Constantes Declaradas (const)
As Constantes Declaradas, ao contrário das Constantes Definidas são, tal como o próprio nome indica, declaradas no código, em linguagem C.
A declaração destas constantes é extremamente semelhante à declaração das variáveis. Apenas temos que escrever const antes do tipo de dados.
Sintaxe
1 | const tipo nome = valor; |
Onde:
- tipo → o tipo de dados que a constante vai conter;
- nome → o nome da constante;
- valor → o conteúdo da constante.
Exemplo
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <stdio.h> #include <math.h> int main() { const double goldenRatio = (1 + sqrt(5)) / 2; goldenRatio = 9; //Erro. A constante não pode ser alterada. double zero = (goldenRatio * goldenRatio) - goldenRatio - 1; printf("%f", zero); return 0; }</math.h></stdio.h> |
Existem vantagens ao utilizar esta forma de declarar constantes. Através das constantes declaradas podemos ter constantes locais ou globais porém as definidas são sempre globais.
Uma constante local é uma constante que está restrita a uma determinada função, por exemplo. Se declararmos uma constante dentro de uma função, esta só estará disponível para o código que está dentro dessa mesma função.
Exercícios
1 → Crie um pequeno programa em que o utilizador insira um montante sem IVA e que o programa lhe devolva o valor com IVA. Deve utilizar uma constante.
2 → Crie um pequeno programa onde efetua dez operações (à sua escolha) que relacione os números que desejar e uma constante. Esta constante deve ser numérica.
Mais uma vez, gostávamos de saber a sua opinião. Caso tenha alguma dúvida, pode sempre utilizar os comentários para colocar a questão. Caso o faça, pedimos que utilize a keyword [DUVIDA] no início do seu comentários.
Esta saga |
Henrique Dias |
|
Mais episódios: [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13][12] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23][24] |
Este artigo tem mais de um ano
pplware nao podiam colocar um zip com tosas as aulas para baixar?
No último episódio da saga iremos fazer algo… semelhante! 🙂
pré compilador não esta mal 😉 , mas o nome mais próximo é pré-processador de texto..
pois o que ele faz e substituição textual das macros referentes ao pré-processador de texto.
A sua tarefa principal, adicionar os ficheiros das declarações , etc dos ficheiro *.h para o ficheiro de código *.c
Podes ver este resultado com:
gcc -E ficheiro.c (para o stdout) ou gcc -E -P ficheiro.c(suprime flags e linhas a incluir…fica mais fácil ler..mas alguma info não aparece…)
podes redireccionar o stdout para um ficheiro..
existem flags para que o gcc TOOLCHAIN pare a seguir a determinada tarefa..
Ou seja em qualquer uma das suas tarefas…
preprocessamento de texto – (substituição de macros de preprocessamento[os typedef’s são macros do compilador e não preprocessador…] se as houver e inclusão de ficheiros e flag’s)
Compilação – Compilação do código(tenta parar a seguir a isto e vais ver que o compilador usou os ficheiros colocados pelo preprocessador de texto…e pega o seu código e coloca-o no ficheiro…ficam enormes…mas existe métodos para remover o que não interessa 😉 )
podes experimentar com gcc -S file.c
Assembler – (assember o código, ou seja passa para código maquina, o código que está num formato assembler, MAS Human Readable)
A seguir a isto tens um ficheiro binario..
podes ver com o famoso gcc -c ficheiro.s
linker – vai linkar o código dos vários ficheiros, e produzir apenas um binário…
ver com gcc ficheiro.c(este é o resultado final…no caso de se ter que usar o linker…)
Este processo não acaba aqui…se o programa foi linkado com shared libraries!
Ainda falta o dynamic linker….mas este só é chamado quando se executa o binário, na fase de exec…é verificado se o ficheiro terá que ser relinkado…desta feita com tudo o que tem mais o que precisa das shared libraries..ou no windows..dll’s..
Eheh. Obrigado pela correção e fundamentação 🙂
Não dá para fazer download dos vídeos?
De forma direta, não. A não ser que descarregue os vídeos do YouTube com um programa de terceiros.