Aula Prtica 10 Structs Monitoria 2011 2 Structs






![Exemplo 1: struct aluno { char nome[50]; long int RG; int idade; }; int Exemplo 1: struct aluno { char nome[50]; long int RG; int idade; }; int](https://slidetodoc.com/presentation_image/0e3967373b6cd719a0db3cba518de283/image-7.jpg)
![Exemplo 2: typedef struct aluno { char nome[50]; long int RG; int idade; } Exemplo 2: typedef struct aluno { char nome[50]; long int RG; int idade; }](https://slidetodoc.com/presentation_image/0e3967373b6cd719a0db3cba518de283/image-8.jpg)
![Exemplo 3: struct human; struct pet { char nome[30]; char especie[30]; struct human *dono; Exemplo 3: struct human; struct pet { char nome[30]; char especie[30]; struct human *dono;](https://slidetodoc.com/presentation_image/0e3967373b6cd719a0db3cba518de283/image-9.jpg)

![Vetores de Structs typedef struct tipo_ficha_cadastral { char nome[50]; long int RG; int idade; Vetores de Structs typedef struct tipo_ficha_cadastral { char nome[50]; long int RG; int idade;](https://slidetodoc.com/presentation_image/0e3967373b6cd719a0db3cba518de283/image-11.jpg)






- Slides: 17
Aula Prática 10 Structs Monitoria 2011. 2
Structs • Uma estrutura é uma coleção de variáveis. • Funciona como uma espécie de “ficha”. A ficha armazena diversos dados relacionados, porém de tipos diferente. • A estrutura, então, serve para agrupar um conjunto de dados não similares, formando um novo tipo de dados.
Criando Structs • Criação: struct nome_do_tipo_da_estrutura { tipo_variavel 1 nome_variavel 1; tipo_variavel 2 nome_variavel 2; . . . }; * Onde: tipo_variavel 1, tipo_variavel 2 são tipos de dados em C (podem ser inclusive ponteiros ou structs).
Comando Typedef • Renomeia um tipo qualquer: typedef long unsigned int monstro; int main() { monstro x = 1000000; printf(“ %llu ”, x); } typedef struct nome_do_tipo_da_estrutura { tipo_variavel 1 nome_variavel 1; tipo_variavel 2 nome_variavel 2; . . . } Nome;
Criando Structs com Typedef • Criação: typedef struct nome_do_tipo_da_estrutura { tipo_variavel 1 nome_variavel 1; tipo_variavel 2 nome_variavel 2; . . . } Nome;
Acesso: Operador de acesso direto: - estrutura. variavel Operador de acesso indireto: - estrutura->variavel - equivale a (*estrutura). variavel
Exemplo 1: struct aluno { char nome[50]; long int RG; int idade; }; int main() { struct aluno joao, jose; strcpy(joao. nome , “Joao da Silva”); joao. RG = 992042; joao. idade = 21; strcpy(jose. nome , “Jose dos Santos”); jose. RG = 899932; jose. idade = 19; }
Exemplo 2: typedef struct aluno { char nome[50]; long int RG; int idade; } Aluno; Aluno* novo. Aluno (char *nome, long int RG, int idade) { Aluno *novo = (Aluno*)malloc(sizeof(Aluno)); strcpy(novo->nome, nome); novo->RG = RG; novo->idade = idade; return novo; } int main() { Aluno *joao, *jose; joao = novo. Aluno(“Joao da Silva”, 992042, 21); jose = novo. Aluno(“Jose dos Santos”, 899932, 19); strcpy(jose->nome , “Jose dos Santos”); }
Exemplo 3: struct human; struct pet { char nome[30]; char especie[30]; struct human *dono; } fido = {″Fido″, ″Canis lupus familiaris″}; struct human { char nome[30]; struct pets[PET_LIMIT]; } sam = {″Sam″, {fido}};
Structs e Funções • struct dado funcao (struct dado s); • /* Passagem por valor */ • Dado funcao (Dado s); • /* Passagem por valor */ • void funcao (struct dado *s); • /* Passagem por referência */ • void funcao (Dado *s); • /* Passagem por referência */
Vetores de Structs typedef struct tipo_ficha_cadastral { char nome[50]; long int RG; int idade; }Aluno; Aluno aluno[30]; aluno[1]. RG = 2002029242220; Monitoria Introdução à Programação / UFPE 2010. 2 03/11/2010
Union • São como structs, mas todos os membros ocupam a mesma região da memória. • O espaço ocupado é do maior elemento. • Só é possível usar um elemento por vez union valor { float f; int i; char *s; };
Enum • Consiste de um conjunto de constantes inteiras, em que cada uma delas é representada por um nome. enum dias { segunda, terca, quarta, quinta, sexta, sabado, domingo } enum dias { segunda = 2, terca, quarta, quinta, sexta, sabado, domingo }
Enum + Union enum TYPE { INT, FLOAT, STRING }; struct VARIABLE { enum TYPE type; union VALUE value; };
• DÚVIDAS ?
Exercícios • Crie um programa que cadastre os alunos de uma turma. Cada aluno possui um nome e 3 notas. Seu programa deve receber os dados de desses alunos e dizer qual deles tem maior MÉDIA.
Exercícios • Faça um programa para cadastro telefônico. Cada pessoa do cadastro possui um nome e um telefone. Seu programa deve cadastrar N pessoas. Depois do cadastro feito, pergunte ao usuário a letra que ele deseja consultar. Exiba todos os nomes e telefones de pessoas cadastradas que comecem com essa letra.