Material organizado para estudo progressivo, com leitura confortável, recursos complementares e navegação para a próxima etapa da disciplina.
Resumo
1. Por que usar arrays?
Sem arrays, guardar múltiplos valores exige uma variável para cada um — nota1, nota2, nota3... Para 100 alunos, seriam 100 variáveis. Um array resolve isso com uma única declaração: int notas[100]. É uma coleção de valores do mesmo tipo, armazenados em posições contíguas na memória e acessados por um índice numérico.
Algoritmos e Programação05/05/2026Vídeo disponívelAula interativa importada
Se preferir consumir por vídeo antes da leitura, este é o ponto de entrada mais rápido.
Vídeo
Conteúdo principal
Leitura pensada para estudo, consulta e revisão. Use a navegação lateral para alternar entre etapas da aula.
Estudo
Conteúdo interativo — HTML importado
Aula 05 - Arrays em C: Vetores e Matrizes
Abra o material em tela cheia para estudar com conforto, sem sair da disciplina.
Aula 05 - Arrays em C: Vetores e Matrizes
100%
Carregando conteúdo interativo...
Aula — Arrays em C: Vetores e Matrizes ◀ ▶ 1 / 0 ⛶ Tela cheia [ ] 7 4 9 2 6 [0] [1] [2] [3] [4] notas[4] ▶ Algoritmo e Programação · Linguagem C Engenharia da Computação · 2025 · Prof. Evandro Júnior Arrays em C: Vetores e Matrizes Aprenda a guardar coleções de dados em C — do primeiro int notas[5] até percorrer uma matriz com laços aninhados. Vetores Matrizes ~2 horas Pré-req: for / while Interativo 🎮 01 01 · Motivação Por que precisamos de Arrays? 🎮 Problema real Imagine guardar as notas de 5 alunos. Sem arrays você precisaria de 5 variáveis separadas. Para 100 alunos, seriam 100 variáveis — impossível de manter! ✗ Sem array — trabalhoso e não escala sem_array.cC int nota1 = 7; int nota2 = 9; int nota3 = 4; int nota4 = 8; int nota5 = 6; // para 100 alunos? 100 variáveis... 😵 ✓ Com array — uma variável, vários valores com_array.cC int notas[5] = {7, 9, 4, 8, 6}; // 5 valores numa só variável ✅ // Para 100 alunos, só muda o tamanho: int notas[100]; // pronto! 💡 Definição Um array é uma coleção de valores do mesmo tipo, armazenados em posições contíguas na memória, acessados por um índice numérico. O que vamos aprender Vetores Arrays com uma dimensão. Uma lista simples de valores. Ex: notas de alunos, temperaturas da semana. Matrizes Arrays com duas dimensões. Uma tabela de linhas e colunas. Ex: tabuleiro de jogo, planilha de notas. Laços + Arrays Usar for e while para percorrer, somar, buscar e modificar elementos de forma eficiente. 02 02 · Vetores — Fundamentos Declaração e Memória 📐 Sintaxe tipo nome[tamanho]; declaracao.cC📋 // tipo nome [tamanho] int notas [5]; // 5 inteiros float precos [10]; // 10 floats // Declarar + inicializar juntos: int notas[5] = {7, 9, 4, 8, 6}; // Tamanho inferido pelo compilador: int pares[] = {2, 4, 6, 8}; // tamanho = 4 // Zerar tudo: int zeros[5] = {0}; // {0, 0, 0, 0, 0} ⚠️ Não inicializou? Lixo! Variáveis locais não inicializadas contêm valores aleatórios da memória. Sempre inicialize antes de usar. 📏 Tamanho fixo em C Em C, o tamanho do array é definido em tempo de compilação. Não é possível redimensionar depois — diferente de Python ou Java. Como fica na memória int notas[5] = {7, 9, 4, 8, 6}; 5 × 4 bytes = 20 bytes contíguos [0]70x100 [1]90x104 [2]40x108 [3]80x10C [4]60x110 Clique num índice para destacá-lo: notas[0] notas[1] notas[2] notas[3] notas[4] limpar Clique num botão para ver o elemento 🚫 Índices: 0 até tamanho−1 Para notas[5], os índices válidos são 0, 1, 2, 3, 4. Acessar notas[5] é comportamento indefinido — o programa pode travar ou dar resultados errados! 03 03 · Vetores — Acesso Lendo e Modificando Elementos 🔑 O operador [ ] Use nome[índice] para ler ou escrever qualquer posição do array. O índice começa em 0. acesso.cC📋 #include <stdio.h> int main() { int notas[5] = {7, 9, 4, 8, 6}; // LEITURA printf("%d\n", notas[0]); // 7 printf("%d\n", notas[4]); // 6 // ESCRITA — modifica o elemento notas[2] = 10; printf("%d\n", notas[2]); // 10 return 0; } 🎮 Simulador — Acesso ao array notas = { 7, 9, 4, 8, 6 } notas[ ] ▶ Ler — Rastreando o acesso notas[5] = { 7, 9, 4, 8, 6 } Expressão Índice Valor Válido? notas[0] 0 7 ✓ sim notas[2] 2 4 ✓ sim notas[4] 4 6 ✓ sim notas[5] 5 ??? ✗ fora notas[-1] -1 ??? ✗ fora Leitura com scanf leitura_usuario.cC📋 #include <stdio.h> int main() { int notas[3]; printf("Digite 3 notas:\n"); notas[0] = 7; // ou: scanf("%d", ¬as[0]); notas[1] = 9; notas[2] = 4; printf("Notas: %d, %d, %d\n", notas[0], notas[1], notas[2]); return 0; } 04 04 · Vetores + Laços Percorrendo com for 🔄 O casamento perfeito Arrays e laços for foram feitos um para o outro. O contador i serve como índice — de 0 até n-1. for (int i = 0 ; i < 5 ; i++) { printf("%d\n", notas[i]); } i = 0 começa no primeiro elemento i < 5 para antes do índice 5 (último = 4) i++ avança para o próximo elemento media_notas.cC📋 #include <stdio.h> int main() { int notas[5] = {7, 9, 4, 8, 6}; int soma = 0; for (int i = 0; i < 5; i++) { soma += notas[i]; } printf("Média: %.1f\n", (float)soma / 5); return 0; } 🎮 Animação — percorrendo notas ARRAY notas[5] = { 7, 9, 4, 8, 6 } 7 [0] 9 [1] 4 [2] 8 [3] 6 [4] i = — notas[i] = — soma = 0 ▶ Animar ↺ Reset $ clique Animar para percorrer o array... 05 05 · Vetores — Exemplos Padrões Comuns com Vetores Encontrar o maior valor maior.cC📋 int v[] = {3, 17, 5, 8, 2}; int maior = v[0]; // começa assumindo o [0] for (int i = 1; i < 5; i++) { if (v[i] > maior) { maior = v[i]; } } printf("Maior: %d\n", maior); // 17 Contar aprovados (nota ≥ 6) aprovados.cC📋 int notas[] = {7, 3, 9, 5, 8}; int aprovados = 0; for (int i = 0; i < 5; i++) { if (notas[i] >= 6) { aprovados++; } } printf("Aprovados: %d\n", aprovados); // 3 🎮 Simulador — escolha o padrão Σ Soma ↑ Maior ✓ Aprovados ⇄ Inverso ↺ Reset $ escolha um padrão para executar... 📌 Padrão de contagem Inicialize uma variável acumuladora (soma = 0, contador = 0) antes do laço. Atualize-a dentro do laço a cada iteração. 06 06 · Matrizes Arrays em Duas Dimensões 📊 O que é uma matriz? Uma matriz é um array com linhas e colunas. Pense numa tabela, planilha ou tabuleiro de jogo — duas coordenadas para chegar a um valor. matriz.cC📋 // tipo nome [linhas][colunas] int m[3][3] = { {1, 2, 3}, // linha 0 {4, 5, 6}, // linha 1 {7, 8, 9} // linha 2 }; // Acesso: m[linha][coluna] printf("%d\n", m[0][0]); // 1 (canto sup. esq.) printf("%d\n", m[1][1]); // 5 (centro) printf("%d\n", m[2][2]); // 9 (canto inf. dir.) 📌 Ordem: [linha][coluna] Sempre lembre: primeiro índice = linha (linha de cima para baixo), segundo índice = coluna (da esquerda para a direita). Visualização 3×3 — clique numa célula col 0 col 1 col 2 lin 0 1 2 3 lin 1 4 5 6 lin 2 7 8 9 Clique numa célula para ver o acesso 07 07 · Matrizes + Laços Laços Aninhados em Matrizes 🔄 O padrão Para percorrer uma matriz, usamos dois for aninhados: o externo controla as linhas e o interno as colunas. percorrer_matriz.cC📋 #include <stdio.h> int main() { int m[3][3] = { {1,2,3}, {4,5,6}, {7,8,9} }; // for externo → percorre linhas for (int i = 0; i < 3; i++) { // for interno → percorre colunas for (int j = 0; j < 3; j++) { printf("%3d", m[i][j]); } printf("\n"); // quebra de linha } return 0; } /* Saída: 1 2 3 4 5 6 7 8 9 */ 🎮 Animação — percorrendo célula a célula MATRIZ 3×3 1 2 3 4 5 6 7 8 9 i (linha) = — j (col) = — m[i][j] = — ▶ Animar ↺ Reset $ clique Animar para percorrer a matriz... 08 08 · Cuidados Erros Comuns 🚨 O erro mais perigoso em C C não verifica se o índice está dentro dos limites. O compilador não dá erro — mas o programa pode travar, corromper dados ou se comportar de forma imprevisível. ✗ ERRO 1 — Índice fora dos limites int v[5] = {1,2,3,4,5}; v[5] = 99; // ❌ índices: 0..4 apenas! v[-1] = 0; // ❌ índice negativo! printf("%d", v[10]); // ❌ lixo ou crash! ✗ ERRO 2 — Usar sem inicializar int v[5]; // valores = lixo! printf("%d", v[0]); // pode imprimir qualquer coisa // ✅ correto: zerar antes de usar int v[5] = {0}; ✗ ERRO 3 — Copiar array com = int a[3] = {1,2,3}; int b[3]; b = a; // ❌ ERRO de compilação! // ✅ correto: copiar com laço for (int i=0; i<3; i++) b[i] = a[i]; Boas práticas ✅ Use #define para o tamanho #define N 5 int notas[N]; // só muda 1 lugar ✅ Limite do laço = tamanho do array for (i = 0; i < N; i++) // sempre < N ✅ Inicialize sempre int v[N] = {0}; // todos zeros 💡 Calcule o tamanho em tempo de execução int n = sizeof(v) / sizeof(v[0]); 09 09 · Prática Exercícios Práticos 1 Declare um vetor com os 5 primeiros números ímpares e imprima cada um com seu índice. fácil ▼ Declare int impares[5] com os valores 1, 3, 5, 7, 9 e use um for para imprimir: solucao1.cC #include <stdio.h> int main() { int imp[5] = {1,3,5,7,9}; for (int i=0; i<5; i++) printf("imp[%d] = %d\n", i, imp[i]); return 0; } 2 Calcule a soma e a média de um vetor de 6 valores inteiros definidos pelo programador. fácil ▼ solucao2.cC int v[] = {4,7,2,9,1,6}; int soma = 0; for (int i=0; i<6; i++) soma += v[i]; printf("Soma: %d | Média: %.2f\n", soma, (float)soma/6); 3 Imprima uma matriz 3×3 preenchida com os produtos i×j usando laços aninhados. médio ▼ solucao3.cC int m[3][3]; for (int i=0; i<3; i++) { for (int j=0; j<3; j++) { m[i][j] = i * j; printf("%4d", m[i][j]); } printf("\n"); } /* 0 0 0 0 1 2 0 2 4 */ 4 Inverta um vetor de 5 elementos sem usar um segundo array. difícil ▼ Troque o elemento da posição 0 com o da posição 4, depois 1 com 3, e o do meio fica no lugar: solucao4.cC int v[5] = {1,2,3,4,5}; int esq=0, dir=4; while (esq < dir) { int tmp = v[esq]; v[esq] = v[dir]; v[dir] = tmp; esq++; dir--; } // resultado: {5, 4, 3, 2, 1} Resumo da aula 📦 Array = coleção do mesmo tipo Memória contígua, tamanho fixo, declarado como tipo v[n] 0️⃣ Índice começa em 0 Para v[n], os índices válidos são 0 até n−1 🔄 for + array = par perfeito Contador i como índice, de 0 até n−1 📊 Matriz = for aninhado Externo = linha (i), interno = coluna (j), acesso: m[i][j] 🚫 C não verifica limites! Nunca acesse índices fora de 0..n−1. O compilador não avisa.
Arquivos desta aula
Material complementar para ampliar o estudo ou reutilizar como referência prática.