Domine as List<T> em C#: Guia Completo e Prático de Uso
Domine Buscas em Arrays: Técnicas e Exemplos em C#
Imagine que você tem uma lista de convidados para uma festa e quer saber se uma pessoa específica está nela. Você poderia ler cada nome, um por um, ou usar um jeito mais eficiente. É basicamente disso que se trata a busca em arrays! Vamos explorar várias maneiras de encontrar dados em um array, desde a busca mais simples até métodos
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. prontos em C#.
Tabela de Conteúdo
- Por que Buscar em Arrays
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código. é Importante - Busca Linear: O Jeitão Direto (e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. Fácil) - Busca Binária: Quando
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. o Palheiro Está Organizado - Métodos
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. Prontos em C#: Chega de Inventar a Roda - Dicas
🔢 Operadores Aritméticos: Faça Cálculos como uma Calculadora Humana!Aprenda a dominar operadores aritméticos em C# com exemplos práticos, técnicas de cálculo e dicas para evitar erros e maximizar resultados. Finais: Evitando Picadas no Processo - Casos Reais: Quando Cada Método
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. Brilha - Erros Comuns
🔏 Criptografia Assimétrica: Domine RSA e Troca de Chaves!Descubra como a criptografia assimétrica protege a troca de chaves e garante segurança em sistemas digitais usando RSA, C# e práticas recomendadas. (e Como Evitá-los) - Desafio Prático: Caça ao Tesouro em Arrays
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código.
Por que Buscar em Arrays é Importante🔗
Arrays são uma estrutura de dados fundamental em praticamente todas as linguagens de programação, incluindo C#. Quando a gente precisa encontrar um elemento específico, o jeito como fazemos essa busca pode impactar muito o desempenho
⏱️ Testes de Performance: Garanta Velocidade Além da Funcionalidade!Descubra como medir, diagnosticar e otimizar performance em aplicações .NET com dicas práticas e ferramentas essenciais para devs. do programa. Em sistemas com grande volume de dados ou que precisam responder rapidamente, uma boa estratégia de busca pode fazer toda a diferença.
Arrays
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código. são como listas
📦 List<T>: Dinamismo além dos Arrays!Descubra como utilizar List<T> em C# de forma eficiente. Aprenda a criar, manipular e otimizar listas para diferentes cenários com exemplos práticos. de supermercado digitais. Usamos busca para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais!:
- Validar se um usuário está em uma lista
📦 List<T>: Dinamismo além dos Arrays!Descubra como utilizar List<T> em C# de forma eficiente. Aprenda a criar, manipular e otimizar listas para diferentes cenários com exemplos práticos. de acesso - Encontrar o preço de um produto
🔢 Operadores Aritméticos: Faça Cálculos como uma Calculadora Humana!Aprenda a dominar operadores aritméticos em C# com exemplos práticos, técnicas de cálculo e dicas para evitar erros e maximizar resultados. em um catálogo - Localizar registros em um banco de dados
Conceitos fundamentais de NoSQL: bases para trabalhar com MongoDB em C#Descubra os fundamentos do NoSQL e aprenda como utilizar MongoDB com C# para desenvolver aplicações .NET escaláveis e modernas até 2025. simples
string[] frutas = { "Maçã", "Banana", "Laranja", "Uva" };
// Como saber se "Abacaxi" está na lista?
Busca Linear: O Jeitão Direto (e Fácil)🔗
A busca linear (ou sequential search) é a mais simples. A ideia: ler cada posição do array
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código. até encontrar o valor desejado (ou chegar ao fim sem achá-lo).
Imagine que você tem este array
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código. de nomes:
string[] convidados = { "Ana", "Bruno", "Carlos", "Daniela", "Eduardo" };
string nomeBuscado = "Daniela";
bool encontrado = false;
for (int i = 0; i < convidados.Length; i++)
{
if (convidados[i] == nomeBuscado)
{
encontrado = true;
Console.WriteLine($"Nome {nomeBuscado} encontrado na posição {i}!");
break;
}
}
if (!encontrado)
{
Console.WriteLine($"Nome {nomeBuscado} não encontrado.");
}
- Vantagem: simples de entender e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. implementar. - Desvantagem: se o elemento estiver no final (ou nem existir), você terá percorrido todo o array, o que pode ser custoso para arrays
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código. enormes.
Método 1: For Loop Tradicional
Para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! quem gosta de controle total!
int[] numeros = { 2, 5, 8, 12, 16 };
int alvo = 12;
bool encontrado = false;
for (int i = 0; i < numeros.Length; i++)
{
if (numeros[i] == alvo)
{
Console.WriteLine($"Encontrado na posição {i}!");
encontrado = true;
break;
}
}
if (!encontrado) Console.WriteLine("Não encontrado :(");
✔️ Precisa da posição exata
✔️ Arrays pequenos ou não ordenados
| Vantagens | Desvantagens |
|---|---|
| Controle total | Código mais longo |
| Funciona em qualquer array | Performance O(n) |
Busca Binária: Quando o Palheiro Está Organizado🔗
A busca binária (binary search) aproveita o fato de o array estar ordenado. Em vez de percorrer elemento por elemento, você compara com o meio do array
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código., descarta metade do espaço de busca e repete. Dessa forma, o número de passos cresce muito mais devagar do que na busca linear.
Por exemplo, para encontrar um número em um array de valores
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. ordenados:
int[] numerosOrdenados = { 1, 3, 5, 7, 9, 11, 13 };
int valorBuscado = 7;
// Limites de busca
int inicio = 0;
int fim = numerosOrdenados.Length - 1;
bool achou = false;
while (inicio <= fim)
{
int meio = (inicio + fim) / 2;
if (numerosOrdenados[meio] == valorBuscado)
{
Console.WriteLine($"Valor {valorBuscado} encontrado na posição {meio}!");
achou = true;
break;
}
else if (numerosOrdenados[meio] < valorBuscado)
{
// Se o valor do meio é menor, ignore a metade esquerda
inicio = meio + 1;
}
else
{
// Se o valor do meio é maior, ignore a metade direita
fim = meio - 1;
}
}
if (!achou)
{
Console.WriteLine($"Valor {valorBuscado} não encontrado.");
}
- Pré-requisito: o array
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código. deve estar ordenado. - Performance
🔄 StringBuilder: Quando Concatenar Strings Vira um Pesadelo!Descubra como o StringBuilder otimiza a concatenação em C#, evitando desperdício de memória e melhorando a performance das aplicações. Veja exemplos práticos!: a busca binária é bem mais rápida que a linear em grandes arrays
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código., pois elimina metade dos elementos a cada passo.
Método 3: Busca Binária com Array.BinarySearch()
Para arrays
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código. ORDENADOS - velocidade máxima!
int[] estoqueOrdenado = { 10, 20, 30, 40, 50, 60 };
int posicao = Array.BinarySearch(estoqueOrdenado, 40); // Retorna 3
Passo a passo:
1. Ordenar
🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio. o array (se não estiver)
2. Divide o array
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código. pela metade
3. Compara com o elemento central
4. Repete até encontrar
💡 Dica de Ouro:
Complexidade O(log n) - Encontra elementos em arrays
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código. gigantes com poucas comparações!
Métodos Prontos em C#: Chega de Inventar a Roda🔗
Em C#, existem métodos
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. prontos que podem facilitar a nossa vida:
int indice = Array.IndexOf(convidados, "Daniela");
if (indice >= 0)
Console.WriteLine($"Encontrou na posição {indice}!");
else
Console.WriteLine("Não encontrou.");
2. Array
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código..BinarySearch (caso o array
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código. esteja ordenado):
int pos = Array.BinarySearch(numerosOrdenados, 7);
if (pos >= 0)
Console.WriteLine($"Encontrou 7 na posição {pos}!");
else
Console.WriteLine("Não encontrou 7.");
Esses métodos
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. são bem otimizados. Sempre que possível, aproveite as bibliotecas que a linguagem oferece.
Método 2: Array.IndexOf()
O atalho inteligente!
string[] planetas = { "Mercúrio", "Vênus", "Terra", "Marte" };
int indice = Array.IndexOf(planetas, "Terra"); // Retorna 2
⚠️ Importante:
- Retorna
-1se não encontrar - Case-sensitive em strings
📝 Strings em C#: Manipule Textos como um Mestre dos Caracteres!Aprenda a dominar os segredos das strings em C# com técnicas de manipulação, concatenação, interpolação e boas práticas, impulsionando sua performance. - Diferença entre
IndexOfe
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. FindIndex:IndexOf: Busca por valor
🗂️ Dicionários: Acesse Dados por Chaves como um Mestre dos HashMaps!Aprenda a usar dicionários em C# de modo prático e eficiente. Nosso tutorial mostra criação, acesso e otimização para manipular dados com segurança.FindIndex: Busca por condição (ex: primeiro número par)
Casos Reais: Quando Cada Método Brilha🔗
Exemplo 1: Lista
📦 List<T>: Dinamismo além dos Arrays!Descubra como utilizar List<T> em C# de forma eficiente. Aprenda a criar, manipular e otimizar listas para diferentes cenários com exemplos práticos. de usuários ativos
string[] usuarios = GetUsuariosFromDB();
if (Array.IndexOf(usuarios, "João Silva") >= 0)
{
GrantAccess();
}
Exemplo 2: Catálogo de produtos
🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio. ordenado
Product[] produtos = GetProdutosOrdenadosPorPreco();
int posicao = Array.BinarySearch(produtos, new Product { Preco = 99.90m });
Exemplo 3: Busca de múltiplas ocorrências
int[] valores = { 5, 3, 7, 5, 2, 5 };
int indice = -1;
while ((indice = Array.IndexOf(valores, 5, indice + 1)) != -1)
{
Console.WriteLine($"Encontrado em: {indice}");
}
Dicas Finais: Evitando Picadas no Processo🔗
- Verifique se o array
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código. está ordenado antes de partir para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! a BinarySearch, caso contrário, o resultado será imprevisível. - Se você precisa buscar com muita frequência, considere usar estruturas de dados mais adequadas (como listas com busca binária ou até mesmo dicionários
🗂️ Dicionários: Acesse Dados por Chaves como um Mestre dos HashMaps!Aprenda a usar dicionários em C# de modo prático e eficiente. Nosso tutorial mostra criação, acesso e otimização para manipular dados com segurança.). - Teste e monitore o desempenho
⏱️ Testes de Performance: Garanta Velocidade Além da Funcionalidade!Descubra como medir, diagnosticar e otimizar performance em aplicações .NET com dicas práticas e ferramentas essenciais para devs. da sua busca. Para arrays pequenos, a busca linear costuma ser suficiente. Para arrays gigantes, é importante pensar em ordenação e em busca binária.
Escolher a abordagem certa vai te ajudar a achar a "agulha" sem perder tempo (e sem se "picar"). Quando lidamos com dados maiores e buscas recorrentes, otimizações podem fazer toda a diferença no desempenho
⏱️ Testes de Performance: Garanta Velocidade Além da Funcionalidade!Descubra como medir, diagnosticar e otimizar performance em aplicações .NET com dicas práticas e ferramentas essenciais para devs. do seu sistema.
Erros Comuns (e Como Evitá-los)🔗
1. Esquecer de ordenar
🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio. antes do BinarySearch
Array.IsSorted
→ Use StringComparison.OrdinalIgnoreCase
3. Não tratar resultados negativos
→ Sempre cheque se o índice é >= 0 → Sempre valideif (array != null)
Desafio Prático: Caça ao Tesouro em Arrays🔗
Cenário: Você tem um array
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código. de preços de ações. Encontre:
1. O dia em que ocorreu o maior preço
2. Quantas vezes o preço ultrapassou R$ 50,00
decimal[] precosAcoes = { 45.60m, 52.30m, 48.90m, 55.00m, 55.00m, 49.75m };
// Sua solução aqui!
Conclusão🔗
Dominar buscas em arrays
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código. é como ter um superpoder de organização:
for→ Controle total para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais!
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! casos simplesIndexOf→ Atalho rápido para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! buscas diretasBinarySearch→ Raio-X para arrays
📦 Arrays: Armazene Dados como um Chef Organiza Panelas!Aprenda como arrays em C# organizam dados com a precisão de uma cozinha profissional. Descubra métodos, boas práticas e dicas essenciais para seu código. ordenados
Lembre-se: 80% dos casos são resolvidos com IndexOf, mas
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. conhecer todas as técnicas transforma você em um detetive de dados eficiente! 🕵️♂️
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.
Referências🔗
- .NET Documentation: learn.microsoft.com/pt-br/dotnet/
- Awesome .NET: github.com/quozd/awesome-dotnet
- C# Language Specification: learn.microsoft.com/pt-br/dotnet/csharp/language-reference/language-specification/
- GitHub: Microsoft/.NET: github.com/dotnet
- Microsoft Learn: C# e .NET: learn.microsoft.com/pt-br/dotnet/csharp/
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás