Um outro recurso que impressiona e que também faz parte do C, são as macros.
Para criar uma macro basta usar a diretiva #define e incluir na frente um nome
que será o identificador da macro.
O c possui diversas diretivas que foram definida pelo padrão C ANSI,
más neste e na maioria dos programas mais simples, usamos pelo menos duas que são: #include e #define.
Estas diretivas são definidas geralmente numa única linha e ponto-e-vírgula não são usados.
Espaços são aceitos entre o nome e a string desde que a macro não esteja recebendo parâmetros.
Vale lembrar que se a string for muito longa basta colocar uma barra invertida no final da
linha para que o compilador entenda que tem que continuar na linha seguinte.
Definir os nomes de uma macro em maiúscula pode ser uma boa prática
de programação, porém não são regras.
O programa que criei para exemplo gera 12 números num vetor, e em seguida embaralha
seus elementos, e são chamados um por vez, para que as operações sejam feitas
individualmente.
Criei algumas macros para este exemplo e mostro na prática seu
funcionamento, na verdade fui bem além, em chamar a função textcolor();
da conio.h através de macro rodando perfeitamente.
Pretendo mostrar outro exemplo de uso de macros mais avançado,
e não quero incluir neste programa para não torna-lo mais complicado,
portanto será muito bom vê-lo no próximo post.
Veja abaixo uma imagem do programa em execução:
Veja abaixo o código do programa:
Para criar uma macro basta usar a diretiva #define e incluir na frente um nome
que será o identificador da macro.
O c possui diversas diretivas que foram definida pelo padrão C ANSI,
más neste e na maioria dos programas mais simples, usamos pelo menos duas que são: #include e #define.
Estas diretivas são definidas geralmente numa única linha e ponto-e-vírgula não são usados.
Espaços são aceitos entre o nome e a string desde que a macro não esteja recebendo parâmetros.
Vale lembrar que se a string for muito longa basta colocar uma barra invertida no final da
linha para que o compilador entenda que tem que continuar na linha seguinte.
Definir os nomes de uma macro em maiúscula pode ser uma boa prática
de programação, porém não são regras.
O programa que criei para exemplo gera 12 números num vetor, e em seguida embaralha
seus elementos, e são chamados um por vez, para que as operações sejam feitas
individualmente.
Criei algumas macros para este exemplo e mostro na prática seu
funcionamento, na verdade fui bem além, em chamar a função textcolor();
da conio.h através de macro rodando perfeitamente.
Pretendo mostrar outro exemplo de uso de macros mais avançado,
e não quero incluir neste programa para não torna-lo mais complicado,
portanto será muito bom vê-lo no próximo post.
Veja abaixo uma imagem do programa em execução:
Veja abaixo o código do programa:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#define tam 12
#define QUADR(x) ( ( x ) * ( x )
)
#define CUBO(x) ( ( x ) * ( x ) * ( x ) )
#define par if( a % 2 == 0 )
#define impar if( a % 2 == 1 )
#define VERMELHO textcolor(LIGHTRED);
#define AZUL textcolor(LIGHTBLUE);
#define PRETO textcolor(BLACK);
#define ROXO textcolor(LIGHTMAGENTA);
#define CINZA textcolor(DARKGRAY);
void got_color(int tam_lin_ini, int tam_lin_fim, int tam_ini_col,
int tam_fim_col, int a, int b) {
int i, e;
if (a >= 1 && a <= 16) {
textcolor(a);
}
if (b >= 1 && b <= 16) {
textbackground(b);
}
for (i = tam_lin_ini; i < tam_lin_fim; i++) {
for (e = tam_ini_col; e < tam_fim_col; e++) {
gotoxy(e, i);
printf(" ");
}
}
}
int main(){
system("title MACROS:
CRIANDO E UTILIZANDO");
int a = 0;
int y = 0;
int p = 0;
int Vet [ tam ];
int i;
int x = 0;
do{
normvideo();
system("cls");
got_color(2, 25, 3, 79, 2, 15);
for( i = 1; i <= 12; i++ ){
Vet [ p
] = i;
p++;
}
if ( tam > 1 ){
for ( i = 0; i < tam; i++ ){
p = i + rand() % ( tam - i );
int t = Vet [ p ];
Vet [ p ] = Vet [ i ];
Vet [ i ] = t;
}
}
VERMELHO
gotoxy(28, 3);
printf("MACROS:
CRIANDO E UTILIZANDO");
AZUL
gotoxy(14, 5);
printf("SORTEADO QUADRADO CUBO SOBRE");
for ( i = 0; i < tam; i++){
for ( i = 0; i < tam; i++ ) {
do{
if ( Vet [ i ] == 0 )
Vet [ i ] = tam;
a = Vet [ i ];
PRETO
gotoxy(17, i + 7);
printf("%d", a );
VERMELHO
printf(" %18d ", QUADR ( a ) );
ROXO
printf(" %14d ", CUBO ( a ) );
gotoxy(64, i + 7);
CINZA
par
printf("Par" );
impar
printf("Ímpar" );
i++;
x++;
Sleep(1800);
break;
}while ( x < tam );
i = i - 1;
}
i = i - 1;
}
y++;
Sleep(1800);
VERMELHO
gotoxy(26, 20);
printf("Por: ");
AZUL
printf("Samuel
Lima");
PRETO
gotoxy(26, 21);
printf("sa_sp10@hotmail.com");
Sleep(1800);
VERMELHO
gotoxy(37, 23);
printf("MUITO
OBRIGADO");
getche();
}while ( y < 1 );
return 0;
}
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.