➡️ Vetores (Arrays Unidimensionais) em Programação
Vetores, também conhecidos como arrays unidimensionais, são uma das estruturas de dados mais fundamentais na programação. Eles nos permitem armazenar múltiplos valores em uma única variável, de forma organizada e eficiente.
🤔 O que são Vetores?
Um vetor é uma coleção de dados que possui quatro características principais:
- Indexada: Cada elemento no vetor possui uma posição única, chamada de índice, que é usada para acessá-lo. Os índices são sempre números inteiros, começando em zero.
- Unidimensional: É uma estrutura de dados linear, como uma lista ou uma fila, possuindo apenas uma dimensão (comprimento).
- Homogênea: Todos os elementos armazenados em um vetor devem ser, obrigatoriamente, do mesmo tipo de dado (todos
int, todosdouble, todoschar, etc.). - Tamanho Fixo: Uma vez que um vetor é criado na memória, seu tamanho (a quantidade de elementos que ele pode conter) é fixo e não pode ser alterado.
🛠️ Trabalhando com Vetores em C
Vamos ver como declarar e manipular vetores na linguagem C.
Declaração
Em C, um vetor é declarado diretamente com seu tipo e tamanho entre colchetes — não existe new, o espaço na memória já é reservado na própria declaração.
// Sintaxe: tipo nomeDoVetor[tamanho];
// Exemplo: Criando um vetor de 10 posições para números de ponto flutuante.
// Isso corresponde a "vet: vetor [0..9] de real" do pseudocódigo.
double numeros[10];
// Exemplo: Criando um vetor de 5 posições para armazenar caracteres (não nomes completos).
char letras[5];
💡 E um vetor de “nomes” (texto)? Em C, uma
Stringnão existe como tipo pronto — um texto já É um vetor dechar(visto no tópico de Estrutura Sequencial). Um “vetor de nomes” vira então um vetor BIDIMENSIONAL dechar(char nomes[5][50];— 5 nomes, até 50 caracteres cada), que só faz sentido depois de estudar Matrizes. Por isso os exemplos deste tópico focam em vetores numéricos.
Acessando Elementos
O acesso aos elementos é feito através de seus índices. Lembre-se sempre que o primeiro elemento está no índice 0.
// Atribuindo o valor 25.4 à primeira posição (índice 0) do vetor.
numeros[0] = 25.4;
// Atribuindo o valor 'A' à terceira posição (índice 2) do vetor.
letras[2] = 'A';
// Lendo e imprimindo o valor da terceira posição de 'letras'.
printf("%c\n", letras[2]); // Saída: A
Frequentemente, usamos laços de repetição, como o for, para percorrer e manipular todos os elementos de um vetor de forma eficiente.
// Exemplo: Preenchendo um vetor com os números de 10 a 14.
// Equivalente à lógica B[i] <- i + 10.
int vetorB[5];
for (int i = 0; i < 5; i++) {
vetorB[i] = i + 10;
printf("Posicao %d recebeu o valor %d\n", i, vetorB[i]);
}
💡 Onde está o
.lengthde Java? Em C, um vetor não “sabe” o próprio tamanho — não existevetorB.length. Por isso o5aparece explícito na condição dofor(ou numa constante/variável separada, como no próximo exemplo comN). Esquecer disso é a causa mais comum de bugs de “estourar” o vetor (acessar um índice que não existe).
✍️ Exemplo Prático: Lendo e Imprimindo um Vetor
Problema: Fazer um programa para ler um número inteiro N, depois ler N números double e armazená-los em um vetor. Em seguida, mostrar na tela todos os elementos do vetor.
Solução em C:
#include <stdio.h>
int main() {
int N;
printf("Quantos numeros voce vai digitar? ");
scanf("%d", &N);
// Vetor de tamanho variável (VLA, C99): o tamanho só é conhecido em tempo de execução
double vet[N];
// Laço para ler e armazenar cada número no vetor
for (int i = 0; i < N; i++) {
printf("Digite um numero: ");
scanf("%lf", &vet[i]);
}
// Laço para imprimir os elementos do vetor
printf("\nNUMEROS DIGITADOS:\n");
for (int i = 0; i < N; i++) {
printf("%.1f\n", vet[i]);
}
return 0;
}
💡
double vet[N];— isso é permitido em C? Sim, desde o padrão C99: é um Array de Tamanho Variável (VLA), cujo tamanho é definido por uma variável lida em tempo de execução, não uma constante fixa no código. É a forma mais direta de reproduzir o comportamento donew double[N]de Java — mas com uma diferença importante: o VLA fica alocado na stack (pilha), não no heap, então não é indicado paraNmuito grandes (milhões de elementos). Para esses casos, usa-se alocação dinâmica commalloc, um tópico mais avançado.
Exemplo de Execução:
Quantos números você vai digitar? 4
Digite um número: 10.5
Digite um número: 4.2
Digite um número: -7.1
Digite um número: 15.0
NÚMEROS DIGITADOS:
10.5
4.2
-7.1
15.0
📈 Exercício Completo: Análise de Alturas
Vamos resolver um problema mais elaborado que utiliza vetores paralelos (vários vetores cujos índices se correspondem).
Problema: Fazer um programa para ler nome, idade e altura de N pessoas. Depois, o programa deve mostrar a altura média das pessoas e a porcentagem de pessoas com menos de 16 anos, listando o nome delas.
Solução em C:
#include <stdio.h>
int main() {
int N;
printf("Quantas pessoas serao digitadas? ");
scanf("%d", &N);
// Vetores paralelos (VLA): nomes é uma MATRIZ de char (N linhas, 50 colunas)
char nomes[N][50];
int idades[N];
double alturas[N];
// Lendo os dados de cada pessoa
for (int i = 0; i < N; i++) {
printf("Dados da %dª pessoa:\n", i + 1);
printf("Nome: ");
scanf(" %49[^\n]", nomes[i]); // o espaço antes de %[^\n] descarta o '\n' pendente da leitura anterior
printf("Idade: ");
scanf("%d", &idades[i]);
printf("Altura: ");
scanf("%lf", &alturas[i]);
}
// Processando os dados: calculando a soma das alturas e contando menores de 16
double somaAlturas = 0.0;
int contMenores = 0;
for (int i = 0; i < N; i++) {
somaAlturas += alturas[i];
if (idades[i] < 16) {
contMenores++;
}
}
// Calculando a média de altura
double alturaMedia = somaAlturas / N;
// Calculando o percentual de menores de 16 anos
double percentualMenores = ((double) contMenores * 100.0) / N;
// Apresentando os resultados
printf("\nAltura media: %.2f\n", alturaMedia);
printf("Pessoas com menos de 16 anos: %.1f%%\n", percentualMenores);
// Imprimindo o nome dos menores de 16
for (int i = 0; i < N; i++) {
if (idades[i] < 16) {
printf("%s\n", nomes[i]);
}
}
return 0;
}
💡
char nomes[N][50]é uma Matriz? Sim — em C, “um vetor de textos” só existe como uma matriz (array bidimensional) dechar:Nlinhas (uma por pessoa) e 50 colunas (o tamanho máximo de cada nome). O tópico de Matrizes, logo em seguida, explica essa estrutura em detalhe — aqui ela já aparece “de brinde” porque é a única forma de C representar essa lista de nomes.
🛠️ Como Executar no Code::Blocks
Você pode compilar e executar todos os exemplos de código em C acima no Code::Blocks (a IDE recomendada para este curso — veja o guia de instalação em Configuração do Ambiente).
- Novo Projeto:
File > New > Project... > Console Application > C. - Nomeie o Projeto: Dê um nome (ex:
Vetores) e escolha uma pasta. - Cole o Código: Abra o arquivo
main.cgerado automaticamente e substitua o conteúdo por um dos exemplos acima. - Compile e Execute: Pressione
F9(ouBuild > Build and Run). Uma janela de console (terminal) abrirá mostrando a saída do programa.
🔗 Recursos Pedagógicos do Capítulo
| Recurso | Descrição | Acesso Direto |
|---|---|---|
| 📊 Slides de Aula | Apresentação visual estruturada com diagramas | Ver Slides |
| 🧠 Quiz Formativo | Teste de fixação com feedback imediato por alternativa | Fazer Quiz |
| 💻 Exemplos Práticos | Código executável completo e saída no console | Ver Exemplos |
| 🧩 Exercícios Progressivos | Lista de atividades práticas em 4 níveis | Resolver Exercícios |
🧭 Navegação do Capítulo: ⬅️ Capítulo Anterior · 📚 Sumário do Módulo · ➡️ Próximo Capítulo