Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos...
Transcript of Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos...
![Page 1: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/1.jpg)
Estruturas, Enumerações, Uniões
Tipos de Dados Compostos
![Page 2: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/2.jpg)
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
![Page 3: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/3.jpg)
Tipos Compostos Arranjos (matrizes e vetores)
Ponteiros
Definidos pelo usuário
Estruturas
Uniões
Enumerações
Campos de bits
typedefs
3
![Page 4: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/4.jpg)
Estruturas
4
![Page 5: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/5.jpg)
Estruturas
5
![Page 6: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/6.jpg)
Estruturas
6
![Page 7: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/7.jpg)
Estruturas
7
![Page 8: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/8.jpg)
Exemplos - Estrutura1. 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
![Page 9: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/9.jpg)
Exemplo - Estrutura1. 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
![Page 10: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/10.jpg)
Uniões
10
![Page 11: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/11.jpg)
União Exemplo1. #define ENTER 132. #define ESC 273. #define RTARR 774. #define LTARR 755. #define UPARR 726. #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
![Page 12: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/12.jpg)
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
![Page 13: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/13.jpg)
Forma Geralenum identificador {
Simbolo_1,
Simbolo_2,
...
Simbolo_n
} var_1, var_2, ..., var_n;
13
![Page 14: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/14.jpg)
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
![Page 15: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/15.jpg)
Enumeração - Exemplos1. enum dt_wday { 2. Sunday ,3. Monday ,4. Tuesday ,5. Wednsday ,6. Thursday ,7. Friday ,8. Saturday 9. };
15
![Page 16: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/16.jpg)
Enumeração - Exemplos1. 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. December14. };
16
![Page 17: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/17.jpg)
Enumeração - Exemplos1. #include <stdio.h>
2. enum coin {3. penny,4. nickel,5. dime,6. quarter=100,7. hal_dollar,8. dollar9. };
10. int main () {11. enum coin money;12. money = dollar;
13. switch (money) {14. case penny: printf ("penny"); break;15. case nickel: printf ("nickel"); break;16. case dollar: printf ("dollar"); break;17. }18. }
17
![Page 18: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/18.jpg)
Campos de Bits
18
![Page 19: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/19.jpg)
Campos de Bits
19
![Page 20: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/20.jpg)
Campos de Bits - Exemplo1. struct {
unsigned mday : 5;
unsigned month: 4;
unsigned year :22;
unsigned isBCE: 1;
} bitf;
20
![Page 21: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/21.jpg)
Typedef
21
![Page 22: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/22.jpg)
Exemplo – menu.h1. #ifndef MENU_H2. #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
![Page 23: Tipos de Dados Compostos - deinf.ufma.brgeraldo/lp/13.tipos_compostos.pdfTipos Compostos Arranjos (matrizes e vetores) Ponteiros Definidos pelo usuário Estruturas Uniões Enumerações](https://reader031.fdocument.pub/reader031/viewer/2022022117/5cb6793b88c99354748bb343/html5/thumbnails/23.jpg)
Exemplo – menu.c1. /** menu.c */
2. #include <stdlib.h>3. #include <stdio.h>4. #include <conio.h>5. #include "buffer.h"6. #include "menu.h"
7. Item * menu;8. Item * menu_sel;9. int sub_items_visible;
10. ...
23