quarta-feira, 5 de outubro de 2016

HashSet<T> Class

O C# possui um tipo de coleção denominada HashSet<T>. Um Sets é uma coleção não ordenada sem itens duplicado, funciona de maneira similar a uma lista, mas oferece operações de conjunto matemático como União e Interseção. 
O conceito Sets vem da matemática. Pense num conjunto de gênero (fêmea e macho) , o conjunto de dias da semana, o conjunto de variações do triangulo. Diferente de conjuntos matemáticos os conjuntos em C# não podem ser infinitos , mas podem ser tão amplos quanto a memoria disponível. 

Como Dicionários, sets são implementados usando tabelas hash. Sets são tipos de dicionários com chaves mas sem valores , fazendo com que eles tenham formas de lista.

Para criar um HashSet<T>, você pode fazer isso:

HashSet<int> pequenosNumeros = new HashSet<int>();
pequenosNumeros .Add(2);
pequenosNumeros .Add(3);

Ou, mais conveniente , você pode adicionar usando um inicializador de coleção:

HashSet<int> pequenosNumeros = new HashSet<int>{2 ,3 , 5, 7, 11, 13};

Ou você pode criar um conjunto a partir de uma coleção existente:

List<int> intList = new List<int>{0 ,1 ,2 , 3 ,4 ,5 ,6 ,7 8 , 9 ,10};
HAshSet <int> numeros = new HasSet<int>(intList);


Se você tentar adicionar u elemento que já existe no HashSet , exemplo:
pequenosNumeros .Add(2);


... o copilador não trata coo erro o método Add(), devolve verdadeiro se ocorreu a inclusão e falso se não houve alteração no conjunto.
Veremos um exemplo utilizando um importante método, o UnionWhit(). Esse método faz a união de coleções sem duplicar elementos.

Abra o console do Visual Studio e faça você o teste.

List<string> colors = new List<string> { "vermelho", "amarelo", "laranja" };
            string[] maisCores = { "laranja","amarelo","verde","azul","violeta"};
            
            //Adiciona a primeira coleção ao HashSet
            HashSet<string> cobinando = new HashSet<string>(colors);

            // Utilizando o método UnionWith()
            cobinando.UnionWith(maisCores);

            // Exibindo as cores sem duplicação
            foreach (var item in cobinando)
            {
                Console.WriteLine(item);
            }

O outro método interessante  que o HashSet possui é o IntersectWith(); que dá a você os itens sobrepostos entre duas coleções, observe o código abaixo:

Console.WriteLine("Buscando a sobreposição em duas listas");
            List<string> CandidatosPresidencia = new List<string> { "Clinton", "Eduard", "Obama" ,"McCain","Giuliani"};
            string[] senadores = { "Alexader", "Boxer", "Clinton", "Eduard", "Obama" ,"Snowe"};

            //Adiciona a primeira coleção ao HashSet
            HashSet<string> trabalhaSenado = new HashSet<string>(CandidatosPresidencia);

            // Utilizando o método IntersectWith()
            trabalhaSenado.IntersectWith(senadores);

            // Exibindo as condidatos que se repetem
            foreach (var item in trabalhaSenado)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();

E ainda existe a possibilidade de fazer de forma contrária, remove os elementos que estejam duplicados em ambas as listas com o método EXcepWith();

 Console.WriteLine("Removendo as exceções em duas listas");
            Queue<int> unicos = new Queue<int>( new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 ,10});
            HashSet <int> impares = new HashSet<int> {1, 3, 5, 7, 9, 11};



            // Utilizando o método ExceptWith()
            impares.ExceptWith(impares);

            // Exibindo os numeros que não se repetem
            foreach (var item in impares)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();
        }

Obs: Veja a documentação deste tipo de coleção no link, Microsoft.
" A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original." Albert Einstein

segunda-feira, 3 de outubro de 2016

O que é C#?

Vamos nesta postagem falar um pouco do C#, conhecer o pouco da suas características, e aqui daremos inicio a várias postagens sobres C# e suas formas orientadas a objeto de programação.

A linguagem de programação C# é uma daquelas  linguagem intermediarias que programadores usam para criar programas executáveis . O C# combina o alcance do poderoso mas copilador C++ com o fácil uso do amigável mas mais eloquente Visual Basic(a mais nova encarnação .NET do Visual Basic está quase parelha com o C#) na maioria dos aspectos. Enquanto linguagem chefe do .NET, o C# tende a introduzir a maioria das novas características primeiro).Um programa C# carrega a extensão .cs.

Alguns apontaram que C-sharp e D-flat são mesmo sinal,mas você não deve referir-se a esta nova linguagem como D-flat dentro do alcance de voz do Redmond ,Washington.

O C# é:


  • Flexível: Programas C# podem ser executados na máquina local ou ser transmitido pela web e executado em um computador distante. 
  • Poderoso: O C# tem essencialmente os mesmos comandos do C++, mas com as estremidas ásperas aparadas. 
  • Fácil de usar: O C# corrige erros dos comandos responsáveis pela maioria dos erros C++ , você gasta menos tempo caçando os erros.
  • Orientado Visualmente: A biblioteca de código .NET que o C#usa para muitas das suas capacidades fornece ajuda necessária para prontamente criar frames com listas suspensas, janelas com abas, grupo de botões, barras de rolagem e imagens de fundo, para nomear apenas alguns.
  • Amigável com a Internet: O C#representa um papel principal no .NET Framework, a abordagem atual da microsoft em programação para Windows, Internet, entre outros.
O C# trabalha na plataforma .NET que é um Framework da Microsoft, onde contem um grande quantidade de bibliotecas para melhor aproveitar o C#.
O ambiente de desenvolvimento é o Visual Studio que é a IDE que a Microsoft utiliza para realiza a produção de sistemas.

Criando seu primeiro aplicativo C#

A priori iniciaremos com o sistema console onde emite um mensagem na tela do usuário, a famosa mensagem "Hello World" .
 Se você não baixou baixe o Visual Studio aqui, é provável que a página irá te apresentar várias versões da Express a Enterprise.

Abaixo os comandos console pra imprimir a mensagem na tela:

// A Hello World! program in C#.
using System;
namespace HelloWorld
{
    class Hello 
    {
        static void Main() 
        {
            Console.WriteLine("Hello World!");

            // Keep the console window open in debug mode.
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }
    }
}
Veja abaixo o vídeo da serie de tutorias, Visual C Sharp (C#) - Tutorial - Série 01 - 01 - Criando o seu primeiro Programa, onde esbouça mais detalhe do Primeiro Programa no Visual Studio.



Obs: Vídeo do canal Ivan santos no Youtube.