tipos de dados compostos - núcleo de computação...
TRANSCRIPT
Tipo de Dados • Em aulas anteriores dissemos que os TIPOS de
DADO podem ser classificados em: • básicos ou primitivos • compostos ou construídos
2
Tipos Compostos • Arranjos (matrizes e vetores) • Ponteiros • Definidos pelo usuário
• Estruturas • Uniões • Enumerações • Campos de bits • typedefs
3
Exemplos - Estrutura 1. struct ponto { /*declaração de estrutura*/ 2. int coord_x; /*coordenadas*/ 3. int coord_y; 4. };
5. int main() { 6. struct ponto P; /*P é uma variável do tipo
Ponto */ 7. p.coord_x = 1; /*atribuição de valores*/ 8. p.coord_y = 5; 9. }
8
Exemplo - Estrutura 1. struct ponto { /*declaração de estrutura*/ 2. int coord_x; /*coordenadas*/ 3. int coord_y; 4. };
5. struct linha { /*definição de uma linha */ 6. struct ponto p0; /*ponto inicial da linha */ 7. struct ponto pn; /*ponto final da linha*/ 8. }; 9. ...... 10. struct linha L1; /*exemplo de atribuição*/ 11. L1.p0.coord_x = 5; 12. L1.p0.coord_y = 6; 9
União Exemplo 1. #define ENTER 13 2. #define ESC 27 3. #define RTARR 77 4. #define LTARR 75 5. #define UPARR 72 6. #define DWARR 80
7. union u_type{ 8. int i; 9. char ch; 10. } ich;
11. void loopMenu() {
12. while ( 1 ) { 13. 14. ich.i = getch(); 15. switch ( ich.ch ) { 16. case ENTER: 17. .... 11
Enumerações • Uma enumeração é uma extensão da
linguagem C acrescentada pelo padrão ANSI. • Uma enumeração é uma declaração de um
novo tipo de dados que consiste em um conjunto de constantes inteiras que especficam todos os valores legais que uma variável desse tipo pode ter.
• Enumerações são definidas de forma semelhante a estruturas; no entanto, utiliza-se a palavra-chave enum para assinalar o início de um tipo de enumeração.
12
Valores • Em uma enumaração cada Simbolo_i representa
um valor inteiro. • Cada símbolo recebe um valor maior em uma
unidade do precedente. • Por default, o valor do primeiro símbolo é 0. • No entanto, você pode especificar o valor de um ou
mais símbolos usando um inicializador. • O símbolos que aparecem após os inicializadores
recebem valores maiores que o da inicialização precedente.
14
Enumeração - Exemplos 1. enum dt_wday { 2. Sunday , 3. Monday , 4. Tuesday , 5. Wednsday , 6. Thursday , 7. Friday , 8. Saturday 9. };
15
Enumeração - Exemplos 1. enum dt_month{ 2. January = 1 , 3. February , 4. Mars , 5. April , 6. May , 7. June , 8. July , 9. August , 10. September , 11. October , 12. November , 13. December 14. };
16
Enumeração - Exemplos 1. #include <stdio.h>
2. enum coin { 3. penny, 4. nickel, 5. dime, 6. quarter=100, 7. hal_dollar, 8. dollar 9. };
10. int main () { 11. enum coin money; 12. money = dollar;
13. switch (money) { 14. case penny: prin` ("penny"); break; 15. case nickel: prin` ("nickel"); break; 16. case dollar: prin` ("dollar"); break; 17. } 18. }
17
Campos de Bits - Exemplo 1. struct {
unsigned mday : 5; unsigned month: 4; unsigned year :22; unsigned isBCE: 1; } bi`;
20
Exemplo – menu.h 1. #ifndef MENU_H 2. #define MENU_H
3. typedef struct item { 4. char * str; 5. void(* fun)(void); 6. struct item * sub; 7. struct item * sup; 8. struct item * nxt; 9. struct item * prv; 10. } Item;
11. void addMenuItem (const char * str, void(* fun)(void)); 12. void addMenuSubItem (const char * str_i,const char * str_si, void(* fun)(void));
13. void loopMenu(void);
14. #endif 22