Estrutura de Dados Linear (Vetor)


Quando precisamos armazenar dados temporários em programas, usamos variáveis. No entanto, quando há muitos valores relacionados (como notas de vários alunos), criar várias variáveis individuais se torna trabalhoso e sujeito a erros. Para resolver isso, utilizamos os vetores, que permitem armazenar diversos valores do mesmo tipo em uma única estrutura.


1. Preparação do Ambiente

O desenvolvimento será feito na linguagem C#, utilizando um IDE (Ambiente de Desenvolvimento Integrado). A recomendação é o Microsoft Visual Studio Community, que pode ser baixado gratuitamente.

Para cada programa, cria-se um novo projeto em: Arquivo > Novo > Projeto...

Página inicial do Microsoft Visual Studio
Janela de novo projeto
Código padrão de um projeto recém-criado

A estrutura inicial do código não deve ser alterada. Todos os programas devem ser escritos entre as chaves do método Main. A linha padrão Console.WriteLine("Hello World!"); pode ser apagada.

Para rodar o código, basta usar a tecla de atalho Ctrl + F5.

Veja o seguinte vídeo para melhor entendimento sobre vetores: link

Também é possível usar IDEs online, como Replit e .NET Fiddle.


2. Declaração e Criação de Vetores

Uma variável pode ser comparada a uma gaveta que armazena um valor específico. Já um vetor é como um gaveteiro, com várias gavetas do mesmo tipo, onde cada posição é identificada por um índice (que começa em 0).

Representação de variável como gaveta
Representação de vetor como gaveteiro
Comparação entre variáveis e vetor

2.1 Tipos de dados em C#

Os valores armazenados em variáveis e vetores dependem do tipo de dado definido. Alguns dos principais tipos primitivos em C# são mostrados na tabela abaixo:

Descrição Representação em C# Valores possíveis
Inteiro int -2.147.483.648 até 2.147.483.647
Inteiro longo long -9.223.372.036.854.775.808 até 9.223.372.036.854.775.807
Decimal double ±5.0 × 10-324 até ±1.7 × 10308
Caractere char Unicode UTF-16 (U+0000 até U+FFFF)
Lógico bool true ou false

2.2 Declaração e atribuição direta

No momento da criação, já é possível atribuir todos os valores:

double[] notas = {8.7, 5.4, 6.2};

2.3 Declaração com tamanho definido

Primeiro define-se o tamanho, depois os valores são atribuídos:

double[] notas = new double[3];

2.4 Declaração sem tamanho pré-definido

Primeiro declara-se o vetor, depois define-se o tamanho em outro ponto do código:

double[] notas;
notas = new double[3];

O tamanho também pode ser definido dinamicamente com base em valores fornecidos pelo usuário.


3. Resolução de Problemas com Vetores

Vetores são úteis para realizar operações sobre todos os elementos. Exemplo: cálculo da média de notas.

Versão inicial (cálculo direto com índices fixos):

double[] notas = {8.7, 5.4, 6.2};
double media = (notas[0] + notas[1] + notas[2]) / 3;

Versão com laço for, permitindo percorrer qualquer vetor:

double soma = 0;
for (int i = 0; i < notas.Length; i++)
    soma += notas[i];
double media = soma / notas.Length;

Exemplo completo: leitura das notas digitadas pelo usuário e cálculo da média.

Console.WriteLine("Defina quantos alunos há na turma:");
int tamanho = int.Parse(Console.ReadLine());
double[] notas = new double[tamanho];

// Armazenando as notas
for (int i = 0; i < notas.Length; i++) {
    Console.WriteLine("Digite a nota do aluno " + (i + 1) + ":");
    notas[i] = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);
}

// Recuperando as notas para calcular a média
double soma = 0;
for (int i = 0; i < notas.Length; i++) {
    Console.WriteLine("Nota do aluno " + (i + 1) + ": " + notas[i]);
    soma += notas[i];
}

double media = soma / notas.Length;
Console.WriteLine("Média das notas na turma é: " + media);

Execução do programa de cálculo de média

O uso de laços for é fundamental para percorrer vetores, seja para preenchê-los, seja para recuperar seus valores.


4. Utilização de Funções com Vetores

Vetores podem ser usados como parâmetros e também como retorno de funções.

Função que calcula a média:

static double calcularMedia(double[] notas) {
    double soma = 0;
    for (int i = 0; i < notas.Length; i++)
        soma += notas[i];
    return soma / notas.Length;
}

Função que inverte um vetor:

static void inverterVetor(double[] vetor) {
    double temp;
    for (int i = 0; i < vetor.Length/2; i++) {
        temp = vetor[i];
        vetor[i] = vetor[vetor.Length - 1 - i];
        vetor[vetor.Length - 1 - i] = temp;
    }
}

Atenção: em C#, quando copiamos um vetor, copiamos apenas a referência na memória. Se quisermos criar uma cópia independente, precisamos copiar valor a valor:

double[] notas = { 8.7, 5.4, 6.2 };
double[] n = new double[notas.Length];
for (int i = 0; i < notas.Length; i++)
    n[i] = notas[i];

Considerações Finais

Pratique criando vetores de diferentes tipos, manipulando-os com funções e testando cópias, para reforçar sua habilidade em programação.