Pular para conteúdo

Estruturas (Structs) 🏗️

Aula 12 - Modelando Dados Reais


O que vamos aprender hoje? 📅

  • Limitações dos Vetores
  • O que é uma Struct?
  • Declaração e Membros
  • O operador . (ponto)
  • Uso de typedef
  • Vetores de Structs

O Desafio 😰

Como guardar os dados de um Aluno? * Nome: "Ricardo" (String) * Idade: 20 (Int) * Média: 8.5 (Float)

Vetores só aceitam o mesmo tipo. ❌


A Solução: Struct 🏛️

Uma Struct agrupa variáveis de tipos diferentes sob um único nome.

struct Aluno {
    char nome[30];
    int idade;
    float media;
};

Declarando Variáveis ✍️

struct Aluno a1;
struct Aluno a2;

Cada variável a1, a2 terá seu próprio nome, idade e média independentes.


Acessando os Membros 🔘

Usamos o ponto . para entrar na estrutura.

strcpy(a1.nome, "Ana");
a1.idade = 19;
a1.media = 9.0;

Facilitando com typedef 🏷️

Cria um apelido para não digitar struct toda hora.

typedef struct {
    int id;
    float preco;
} Produto;

Produto p1; // Muito mais limpo!

Vetores de Structs 📚

Pense em um arquivo excel: * Cada coluna é um membro da struct. * Cada linha é uma posição no vetor.

Produto estoque[100];
estoque[0].preco = 15.50;

Ponteiros e Structs 🏹

Quando usamos ponteiros, o . vira ->.

Produto *ptr = &p1;
ptr->id = 101; 
// Equivalente a (*ptr).id

Estruturas Aninhadas 📦📦

Uma struct pode viver dentro de outra!

struct Nascimento {
    int dia, mes, ano;
};

struct Pessoa {
    char nome[20];
    struct Nascimento data;
};

Exemplo Real: Jogos 🎮

typedef struct {
    float x, y;
    int vida;
    int powerUps;
} Player;

Toda a inteligência do jogo está em manipular essas structs!


Desafio da Aula 🚀

Crie o "Inventário de Loja": Cadastre 3 produtos e mostre o valor total investido no estoque.


Próxima Aula 🔜

Aula 13 - Arquivos (I/O)

Como salvar esses dados para que eles não sumam quando fecharmos o programa? 💾


Dúvidas? 🤔

Structs são a base para a Programação Orientada a Objetos!


FIM DA AULA 12 ✨

Você agora modela o mundo!