Trilha 6: Matrizes e Structs

Objetivos de Aprendizagem


Resumo: Matrizes

Se um Vetor é uma linha, uma Matriz é uma tabela (planilha). Ela tem Linhas e Colunas.

Sintaxe Exemplo
tipo nome[linhas][colunas]; int mapa[3][3]; (Cria um grid 3x3)
nome[L][C] = valor; mapa[0][2] = 5; (Linha 0, Coluna 2)

Exemplo 1: Matriz de Identidade

Preenchendo uma matriz 3x3 onde a diagonal principal é 1 e o resto é 0.


#include <stdio.h>

int main() {
    int mat[3][3];
    int lin, col;

    // Dois laços: um para descer as linhas, outro para andar nas colunas
    for(lin = 0; lin < 3; lin++) {
        for(col = 0; col < 3; col++) {
            
            if(lin == col) {
                mat[lin][col] = 1; // Diagonal principal
            } else {
                mat[lin][col] = 0; // Resto
            }
        }
    }

    // Exibindo a matriz formatada
    printf("Matriz Gerada:\n");
    for(lin = 0; lin < 3; lin++) {
        for(col = 0; col < 3; col++) {
            printf("%d ", mat[lin][col]);
        }
        printf("\n"); // Pula linha após imprimir as colunas
    }
    return 0;
}
            

Resumo: Structs

Vetores guardam vários dados do mesmo tipo. E se quisermos guardar um Aluno (que tem Nome, Idade e Nota)? Usamos Struct.


struct Aluno {
    char nome[50];
    int idade;
    float nota;
}; // O ponto e vírgula no final é obrigatório!
            

Exemplo 2: Cadastro Simples


#include <stdio.h>
#include <string.h>

// Definindo a "forma" do nosso dado
struct Pessoa {
    char nome[50];
    int idade;
};

int main() {
    struct Pessoa p1;

    // Gravando dados (use ponto para acessar os campos)
    p1.idade = 25;
    strcpy(p1.nome, "Maria Silva"); // Copiando texto para string

    // Lendo dados
    printf("Nome: %s\n", p1.nome);
    printf("Idade: %d", p1.idade);

    return 0;
}
            

Lista de Exercícios

1. Total de Elementos

Quantos números inteiros cabem em uma matriz declarada como int valores[4][5];?

Ver Gabarito

Resposta: 20 elementos (4 linhas vezes 5 colunas).

2. Acesso a Struct

Dado struct Carro c; que possui um campo ano, como faço para ler esse valor do teclado?

Ver Gabarito

Resposta: scanf("%d", &c.ano); (Note o ponto acessando o campo).

3. Somando uma Matriz

Complete a lógica para somar todos os valores de uma matriz 2x2.

Ver Código Resposta

// ... declarações ...
float soma = 0;
for(i=0; i<2; i++){
    for(j=0; j<2; j++){
        soma = soma + matriz[i][j];
    }
}
printf("Total: %f", soma);