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", ¬as[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.

