Arrays (ou vetores) são estruturas de dados que armazenam coleções de elementos do mesmo tipo em posições consecutivas de memória. Eles são essenciais para trabalhar com múltiplos valores de forma organizada e eficiente.


🧩 1. O que são Arrays?

Analogia:

Pense em um array como uma estante com prateleiras:

  • Cada prateleira tem um número (índice)
  • Cada prateleira armazena um livro (valor)
  • Todas as prateleiras são do mesmo tipo (mesmo tamanho de livros)

Características:

  • Elementos: Valores armazenados no array
  • Índice: Posição de cada elemento (começa em 0)
  • Tamanho: Número total de elementos (fixo)

⚙️ 2. Declaração e Inicialização de Arrays

2.1 Declaração Básica

tipo nome_array[tamanho];


#include <stdio.h>

int main() {
    // Declaração de arrays
    int numeros[5];          // Array de 5 inteiros
    float notas[10];         // Array de 10 floats
    char vogais[5];          // Array de 5 caracteres

    return 0;
}


2.2 Inicialização na Declaração

#include <stdio.h>

int main() {
    // Inicialização durante declaração
    int numeros[5] = {10, 20, 30, 40, 50};
    float precos[3] = {15.50, 9.99, 25.00};
    char letras[4] = {'A', 'B', 'C', 'D'};

    // O tamanho pode ser inferido automaticamente
    int dias_mes[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    return 0;
}



🔍 3. Acessando Elementos do Array

3.1 Acesso Individual

#include <stdio.h>

int main() {
    int numeros[5] = {10, 20, 30, 40, 50};

    // Acessando elementos individuais
    printf("Primeiro elemento: %d\\\\n", numeros[0]);    // 10
    printf("Terceiro elemento: %d\\\\n", numeros[2]);    // 30
    printf("Último elemento: %d\\\\n", numeros[4]);      // 50

    // Modificando elementos
    numeros[1] = 25;
    printf("Novo valor do segundo elemento: %d\\\\n", numeros[1]); // 25

    return 0;
}


3.2 Percorrendo Arrays com Loops

#include <stdio.h>

int main() {
    int numeros[5] = {10, 20, 30, 40, 50};
    int i;

    // Percorrendo com for
    printf("Elementos do array:\\\\n");
    for (i = 0; i < 5; i++) {
        printf("numeros[%d] = %d\\\\n", i, numeros[i]);
    }

    // Calculando soma
    int soma = 0;
    for (i = 0; i < 5; i++) {
        soma += numeros[i];
    }
    printf("Soma total: %d\\\\n", soma);
    printf("Média: %.2f\\\\n", soma / 5.0);

    return 0;
}



📊 4. Arrays Multidimensionais (Matrizes)

4.1 Matrizes 2D

#include <stdio.h>

int main() {
    // Declaração e inicialização de matriz 3x3
    int matriz[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };

    // Acessando elementos
    printf("Elemento [1][2]: %d\\\\n", matriz[1][2]); // 6

    // Percorrendo a matriz
    int i, j;
    printf("Matriz completa:\\\\n");
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 3; j++) {
            printf("%d ", matriz[i][j]);
        }
        printf("\\\\n");
    }

    return 0;
}


4.2 Exemplo Prático: Tabuada

#include <stdio.h>

int main() {
    int tabuada[10][10];
    int i, j;

    // Preenchendo a matriz de tabuada
    for (i = 0; i < 10; i++) {
        for (j = 0; j < 10; j++) {
            tabuada[i][j] = (i + 1) * (j + 1);
        }
    }

    // Exibindo a tabuada do 5
    printf("Tabuada do 5:\\\\n");
    for (j = 0; j < 10; j++) {
        printf("5 × %d = %d\\\\n", j + 1, tabuada[4][j]);
    }

    return 0;
}



🎯 5. Exemplos Práticos Completos

Exemplo 1: Sistema de Notas

#include <stdio.h>

#define MAX_ALUNOS 5

int main() {
    float notas[MAX_ALUNOS];
    int i;
    float soma = 0, media;

    // Entrada de dados
    printf("=== SISTEMA DE NOTAS ===\\\\n");
    for (i = 0; i < MAX_ALUNOS; i++) {
        printf("Digite a nota do aluno %d: ", i + 1);
        scanf("%f", &notas[i]);
        soma += notas[i];
    }

    // Cálculos
    media = soma / MAX_ALUNOS;

    // Saída de resultados
    printf("\\\\n=== RESULTADOS ===\\\\n");
    printf("Notas dos alunos:\\\\n");
    for (i = 0; i < MAX_ALUNOS; i++) {
        printf("Aluno %d: %.1f\\\\n", i + 1, notas[i]);
    }
    printf("Média da turma: %.2f\\\\n", media);

    // Encontrando maior nota
    float maior = notas[0];
    for (i = 1; i < MAX_ALUNOS; i++) {
        if (notas[i] > maior) {
            maior = notas[i];
        }
    }
    printf("Maior nota: %.1f\\\\n", maior);

    return 0;
}


Exemplo 2: Pesquisa de Satisfação

#include <stdio.h>

#define NUM_RESPOSTAS 10

int main() {
    int respostas[NUM_RESPOSTAS] = {5, 4, 3, 5, 2, 1, 4, 5, 3, 4};
    int frequencia[6] = {0}; // Índices de 0 a 5 (0 não usado)
    int i;

    // Contando frequência das notas
    for (i = 0; i < NUM_RESPOSTAS; i++) {
        if (respostas[i] >= 1 && respostas[i] <= 5) {
            frequencia[respostas[i]]++;
        }
    }

    // Exibindo resultados
    printf("=== PESQUISA DE SATISFAÇÃO ===\\\\n");
    printf("Nota | Frequência\\\\n");
    printf("-----|-----------\\\\n");
    for (i = 1; i <= 5; i++) {
        printf("%d    | %d\\\\n", i, frequencia[i]);
    }

    return 0;
}



🔧 6. Arrays e Funções

6.1 Passando Arrays para Funções

#include <stdio.h>

// Protótipos
void imprimir_array(int arr[], int tamanho);
float calcular_media(int arr[], int tamanho);
int encontrar_maior(int arr[], int tamanho);

int main() {
    int numeros[5] = {10, 25, 5, 30, 15};
    int tam = 5;

    imprimir_array(numeros, tam);
    printf("Média: %.2f\\\\n", calcular_media(numeros, tam));
    printf("Maior valor: %d\\\\n", encontrar_maior(numeros, tam));

    return 0;
}

// Função para imprimir array
void imprimir_array(int arr[], int tamanho) {
    int i;
    printf("Array: ");
    for (i = 0; i < tamanho; i++) {
        printf("%d ", arr[i]);
    }
    printf("\\\\n");
}

// Função para calcular média
float calcular_media(int arr[], int tamanho) {
    int i, soma = 0;
    for (i = 0; i < tamanho; i++) {
        soma += arr[i];
    }
    return (float)soma / tamanho;
}

// Função para encontrar maior valor
int encontrar_maior(int arr[], int tamanho) {
    int i, maior = arr[0];
    for (i = 1; i < tamanho; i++) {
        if (arr[i] > maior) {
            maior = arr[i];
        }
    }
    return maior;
}


6.2 Ordenação com Bubble Sort

#include <stdio.h>

void ordenar_array(int arr[], int tamanho) {
    int i, j, temp;

    for (i = 0; i < tamanho - 1; i++) {
        for (j = 0; j < tamanho - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                // Troca os elementos
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

void imprimir_array(int arr[], int tamanho) {
    int i;
    for (i = 0; i < tamanho; i++) {
        printf("%d ", arr[i]);
    }
    printf("\\\\n");
}

int main() {
    int numeros[] = {64, 34, 25, 12, 22, 11, 90};
    int tam = sizeof(numeros) / sizeof(numeros[0]);

    printf("Array original: ");
    imprimir_array(numeros, tam);

    ordenar_array(numeros, tam);

    printf("Array ordenado: ");
    imprimir_array(numeros, tam);

    return 0;
}



⚠️ 7. Cuidados Importantes com Arrays

7.1 Índices Fora dos Limites

#include <stdio.h>

int main() {
    int numeros[3] = {1, 2, 3};

    // PERIGO: Acessando índice inválido!
    printf("%d\\\\n", numeros[5]); // Comportamento imprevisível

    return 0;
}


7.2 Usando sizeof com Arrays

#include <stdio.h>

int main() {
    int numeros[] = {1, 2, 3, 4, 5};
    int tamanho = sizeof(numeros) / sizeof(numeros[0]);

    printf("Tamanho do array: %d elementos\\\\n", tamanho);
    printf("Bytes totais: %lu bytes\\\\n", sizeof(numeros));
    printf("Bytes por elemento: %lu bytes\\\\n", sizeof(numeros[0]));

    return 0;
}



🏆 8. Exercícios Práticos

Exercício 1: Contador de Vogais

// Crie um programa que conta quantas vogais existem em uma palavra


Exercício 2: Calculadora de Estatísticas

// Crie um programa que lê 10 números e calcula:
// - Média, Mediana, Maior e Menor valor


Exercício 3: Jogo da Velha

// Implemente um jogo da velha usando matriz 3x3



📌 Resumo do que Aprendemos:

O que são arrays e quando usá-los

Declaração e inicialização de arrays

Acesso e manipulação de elementos

Arrays multidimensionais (matrizes)

Arrays com funções

Algoritmos comuns (ordenação, busca)

Cuidados importantes


🚀 Próxima Aula: Matrizes em C!

Aprenderemos a trabalhar com texto e manipulação de strings!

😊

Comentem suas dúvidas e compartilhem suas soluções para os exercícios!


💻 Dica Extra: Pratique criando programas que usam arrays para resolver problemas do mundo real, como controle de estoque, sistema de notas, ou análise de dados simples.


Descubra mais sobre Apprendendo

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continue lendo