sexta-feira, 15 de abril de 2016

Typedef - renomeando tipos

Todos devem saber que é perfeitamente possível a criação
de novos nomes para qualquer tipo suportado pelo C usando
o comando typedef cuja sintaxe é: typedef tipo ( novo_nome ).
A declaração de um novo nome para um tipo qualquer aceito,
é preferivelmente feito logo após as declarações das bibliotecas
que serão utiizadas pelo seu programa.
O aprendiz de linguagem C, deve ficar sabendo que com isto
não estamos criando um novo tipo de dados, más apenas renomeando
um tipo existente e aceito no C.
Um programador de C, deve achar isto particularmente muito útil usar
O comando typedef para renomear tipos mais complexos, como as estruturas.
As estruturas criadas no exemplo que trago agora foram bem definidas
como tipos através do comando typedef.
Na verdade o C, entende uma estrutura como qualquer outro tipo de dado,
e o novo nome é tido como um genuíno identificador.
Aplicar typedef em declarações de variáveis estrutura, traz simplicidade
e clareza no desenvolvimento de projetos, e o seu uso se estende
as uniões e enumerações.
Neste programa fiz algumas renomeações de tipos usando
o comando typedef, aplicado a alguns tipos de estrutura, procurando
esclarecer na prática como usar este comando
que certamente o veremos muito na medida que nossos programas
forem ficando mais avançados.

 



 

  

  

Veja abaixo o código do programa:



#include <stdio.h>
#include <conio.h>
typedef char Dirigente;
typedef char Nombre;
typedef struct Diretor Direcao;
typedef struct Notas Note;
typedef float dec;
typedef struct Escola Aula;
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 ( " " );
         }
     }
}
struct Diretor {
     Dirigente Dire_tor [ 48 ];
};
Direcao Diretor_De_Escola [ 48 ] = { {
         "Um Diretor de Escola da rede Estadual de ensino" }, {
         "listou seus 10 melhores alunos" }, {
         "Pressione qualquer tecla para conhece - los" } };
struct Notas {
     dec No_tas;
};
Note Aluno [ ] = { 9.5, 8.9, 6.4, 7.5, 8.0, 7.7, 6.9, 9.0, 10.0, 8.5 };
struct Escola {
     Nombre nome [ 16 ];
};
Aula Alu_no [ ] = { { "Ana Célia      " },
                     { "Eder Costa     " },
                     { "Humberto Gomes " },
                     { "Dijalma Lacerda" },
                     { "Caroline Silva " },
                     { "Igor Gonçalves " },
                     { "Bruna Carla    " },
                     { "Fábio Quadros  " },
                     { "Geany Barros   " },
                     { "Jaqueline Vega " }};
int main ( ) {
     system ( "title TYPEDEF - RENOMEANDO TIPOS" );
     int a = 0, i, j, ord;
     float aux;
     system ( "cls" );
     got_color ( 2, 25, 3, 79, 2, 15 ); //Moldura
     textcolor ( LIGHTRED );
     gotoxy ( 28, 3 );
     printf ( "TYPEDEF - RENOMEANDO TIPOS" );
     for ( i = 0; i < 2; i++ ) {
         gotoxy ( 17, i + 7 );
         textcolor ( LIGHTBLUE );
         if ( i == 48 ) {
              gotoxy ( 17, 9 );
         }
         printf ( " %s ", Diretor_De_Escola [ i ]
                   .Dire_tor );
         textcolor ( LIGHTRED );
         gotoxy ( 20, 17 );
         printf ( " %s ", Diretor_De_Escola [ 2 ]
                   .Dire_tor );
     }
     getche ( );
     system ( "cls" );
     got_color ( 2, 25, 3, 79, 2, 11 ); //Moldura
     textcolor ( LIGHTRED );
     gotoxy ( 28, 3 );
     printf ( "TYPEDEF - RENOMEANDO TIPOS" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 25, 5 );
     printf ( "Veja abaixo os nomes dos Alunos " );
     textcolor ( BLACK );
     for ( i = 0; i < 10; i++ ) {
         gotoxy ( 33, i + 7 );
         printf ( " %s ", Alu_no [ i ]
                   .nome );
     }
     for ( i = 0; i < 10 - 1; i++ ) {
         for ( j = i + 1; j < 10; j++ ) {
              if ( strcmp ( Alu_no [ i ]
                        .nome, Alu_no [ j ]
                        .nome ) > 0 ) {
                   Escola aux = Alu_no [ i ];
                   Alu_no [ i ] = Alu_no [ j ];
                   Alu_no [ j ] = aux;
              }
         }
     }
     textcolor ( LIGHTRED );
     gotoxy ( 30, 23 );
     printf ( "PRESSIONE QUALQUER TECLA" );
     getche ( );
     system ( "cls" );
     got_color ( 2, 25, 3, 79, 2, 13 ); //Moldura
     textcolor ( LIGHTRED );
     gotoxy ( 30, 3 );
     printf ( "TYPEDEF - RENOMEANDO TIPOS" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 23, 5 );
     printf ( "Estes são os nomes dos alunos ordenados" );
     textcolor ( BLACK );
     for ( i = 0; i < 10; i++ ) {
         gotoxy ( 33, i + 7 );
         printf ( " %s ", Alu_no [ i ]
                   .nome );
     }
     textcolor ( LIGHTRED );
     gotoxy ( 30, 23 );
     printf ( "PRESSIONE QUALQUER TECLA" );
     getche ( );
     system ( "cls" );
     got_color ( 2, 25, 3, 79, 2, 15 ); //Moldura
     textcolor ( LIGHTRED );
     gotoxy ( 28, 3 );
     printf ( "TYPEDEF - RENOMEANDO TIPOS" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 23, 5 );
     printf ( "Abaixo estão os Nomes e as notas dos alunos" );
     for ( i = 0; i < 10; i++ ) {
         gotoxy ( 27, i + 7 );
         textcolor ( BLACK );
         printf ( " %s  ==> ", Alu_no [ i ]
                   .nome );
         textcolor ( LIGHTRED );
         printf ( "  %.1f ", Aluno [ i ]
                   .No_tas );
     }
     textcolor ( LIGHTRED );
     gotoxy ( 30, 23 );
     printf ( "PRESSIONE QUALQUER TECLA" );
     getche ( );
     system ( "cls" );
     got_color ( 2, 25, 3, 79, 2, 14 ); //Moldura
     textcolor ( LIGHTRED );
     gotoxy ( 28, 3 );
     printf ( "TYPEDEF - RENOMEANDO TIPOS" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 28, 5 );
     printf ( "Estas são as notas dos alunos" );
     textcolor ( LIGHTRED );
     gotoxy ( 18, 7 );
     for ( i = 0; i < 10; i++ ) {
         printf ( " %.1f ", Aluno [ i ]
                   .No_tas );
     }
     ord = 0;
     while ( ord == 0 ) {
         ord = 1;
         for ( a = 0; a < 10; a++ ) {
              if ( Aluno [ a ]
                        .No_tas > Aluno [ ( a + 1 ) ]
                        .No_tas ) {
                   aux = Aluno [ a ]
                            .No_tas;
                   Aluno [ a ]
                            .No_tas = Aluno [ ( a + 1 ) ]
                            .No_tas;
                   Aluno [ ( a + 1 ) ]
                            .No_tas = aux;
                   ord = 0;
              }
         }
     }
     getche ( );
     textcolor ( LIGHTBLUE );
     gotoxy ( 25, 9 );
     printf ( "Estas são as notas dos alunos ordenadas" );
     textcolor ( LIGHTRED );
     gotoxy ( 18, 11 );
     for ( a = 1; a <= 10; a++ ) {
         printf ( " %.1f ", Aluno [ a ]
                   .No_tas );
     }
     Sleep ( 1800 );
     textcolor ( LIGHTRED );
     gotoxy ( 26, 18 );
     printf ( "Por: " );
     textcolor ( LIGHTBLUE );
     printf ( "Samuel Lima" );
     textcolor ( BLACK );
     gotoxy ( 26, 20 );
     printf ( "sa_sp10@hotmail.com" );
     Sleep ( 1800 );
     textcolor ( LIGHTRED );
     gotoxy ( 37, 23 );
     printf ( "MUITO OBRIGADO" );
     getche ( );
}





Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.