terça-feira, 13 de novembro de 2012

C# - Conceitos Iniciais


Linguagem C# - Conceitos Iniciais

A linguagem C# é muito parecida com a linguagem Pascal, sendo totalmente orientada a objetos, criada pela Microsoft e faz parte da plataforma .NET. O C# foi baseado na linguagem C++ e Java.
A linguagem C# foi desenvolvida principalmente pelo Anders Heilsberg, que curiosamente o mesmo era um dos desenvolvedores dos compiladores da Borland, sendo sua principal criação o Delphi.

Conceitos primordiais de um programa escrito em C#

Começaremos com o conhecidíssimo “Alô Mundo”, para isto abra o Visual Studio 2010 escolha “File/New/Project...”. Veremos que a plataforma .NET nos fornece uma gama enorme de linguagens e plataformas para o desenvolvimento, mas focaremos apenas na linguagem C# utilizando formulários baseados em Windows, os denominados “Windows Forms”.


Figura 01: Novo Projeto em Windows Forms.

Podemos ver que existem uma quantidade enorme de informações importantes nesta janela, mas não se preocupem que estarei explicando tudo.

Installed Templates: São as plataformas e linguagens existem no .NET, que no nosso caso utilizaremos o “Visual C#” e o “Windows”.
.NET Framework 4: Na região superior temos uma lista de Frameworks suportados pelo Visual Studio, recomendo a utilização do último, a versão 4.
Windows Forms Application: Selecionamos este tipo de Aplicação, pois trabalharemos em formulários baseados no Sistema Operacional Windows.
Name: Indica o nome do nosso projeto, no caso deixemos como Artigo_01.
Location: O diretório onde o exemplo está localizado.
Solution: Permite escolher para adicionar um projeto a uma solução existente ou criar uma nova.
Solution name: Caso escolha para criar uma nova solução, esta opção será desabilitada, no caso nosso escolheremos o nome de “Curso”.

Após realizar estes procedimentos clique no botão Ok. A Figura 02 nos proporciona a hierarquia do programa, notem que possuímos uma Solução e logo em seguida um pacote de itens, que seria a “grosso modo” nosso programa.

Figura 02: Solution Explorer.
Vejamos mais detalhes abaixo:

Properties: Nas propriedades temos informações da solução e do projeto. Em AssemblyInfo teremos todos os detalhes, como: Título, Descrição, Tipos de Configurações, Nome da Companhia e tipos de Versões. Podemos manipular todos estes tipos de informações neste arquivo. Em Resources, são os conhecidos recursos. Ali dentro temos a possibilidade de criar diversos tipos de recursos como: Imagens, textos ou ícones. Já em Settings, como o próprio nome já diz, é o arquivo de configuração e é normalmente utilizado para configurações de Banco de Dados. 

References: Onde estão localizadas todas as referências do projeto, ou seja, todos os Namespaces, as classes necessárias para o funcionamento de um programa. Explicarei um pouco mais adiante. Só para ter uma ideia, para que funcione um Form do Windows é necessário ter declarado a referência “System.Windows.Forms”. Em um projeto podemos adicionar vários tipos de referências.

Form1.cs: É o formulário propriamente dito, onde temos todas as propriedades e métodos. Iremos trabalhar nele daqui a pouco.

Program.cs: Esta classe é automaticamente criada pelo Visual Studio. Abaixo uma explicação mais detalhada:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace Curso
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

Veremos a cláusula using que serve para declarar os namespaces utilizados pelo programa, logo em seguida o namespace que seria o nome do Assembly, neste caso deixe como Curso. Dentro de um namespace podemos ter inúmeras classes, sendo necessário ter uma classe e um método principal, sendo a classe Program e o método estático Main. O método Main seria a porta de entrada e saída de um programa escrito em C#. Este método necessariamente deve estar inserido dentro de uma classe. Ele automaticamente é invocado pelo compilador no momento que iniciar o programa.
A estrutura de um programa em C# é a seguinte:



Observem que o método Main possui algumas linhas de código criadas automaticamente pelo Visual Studio pelo fato de estarmos trabalhando com Formulários em Windows, os denominados “Windows Forms”. Sendo:

Application.EnableVisualStyles(): Este método habilita os estilos visuais para o aplicativo.

Application.SetCompatibleTextRenderingDefault(false): Define o padrão de renderização de texto.

Application.Run(new Form1()): Método responsável por chamar o formulário principal.

Portanto, vimos que o Program.cs é executado antes de chamar nosso formulário propriamente dito, ou seja, como foi explicado anteriormente o Método Estático Main funciona como a porta de entrada e posteriormente saída de um projeto em C#. Daremos continuidade explorando algumas propriedades e métodos de nosso “Form1”, para isto dê um duplo clique para configurarmos nosso formulário.
A IDE do Visual Studio é bem intuitiva. Confiram na Imagem 03 suas propriedades e Métodos.
Figura 03: Propriedades e Métodos.

Alteramos as seguintes propriedades do Formulário:

Text: The Club - O maior Clube de Programadores do Brasil
StartPosition: CenterScreen
Size: 473; 372

Adicione um Button localizado na palheta Standard e altere as seguintes propriedades do mesmo.

Text: Executar

Dando um duplo clique no botão, colocaremos nossa primeira linha de código, o bom e velho “Alô Mundo”, veja abaixo o código utilizando o MessageBox(), seriam as caixas de diálogo equivalente ao ShowMessage() em Delphi.

private void button1_Click(object sender, EventArgs e)
{
     MessageBox.Show("Alô Mundo, Este é um Teste Legal do The Club!");
}

Rode a aplicação pressionando F5 e verá um resultado de acordo com a Imagem 04.

Figura 04: Formulário em Run-time.

Declarando e utilizando variáveis

Antes de nós utilizarmos uma variável é necessário declará-la, alocando espaço para a mesma na memória dizendo o tipo de dado que deverá ser armazenado. O C# pode armazenar diversos tipos de dados, como: inteiros, números fracionais, textos, objetos, entre outras coisas.
Exemplos:
int numero1;
float numero2;
string texto1;
Para atribuir um valor veja o exemplo seguinte:

private void button2_Click(object sender, EventArgs e)
{
     int numero1, numero2, total;

     numero1 = 10;
     numero2 = 30;

     total = numero1 + numero2;

     MessageBox.Show("Resultado: " + total.ToString());
}

De fato o exemplo acima é muito simples, mas serve para exemplificar a manipulação de variáveis em C#. Em seguida mostramos uma mensagem para o usuário utilizando o próprio Messagebox(). O método ToString() transforma inteiro em String, que neste caso se fez necessário pois o tipo de parâmetro é uma String. Ver Imagem 05.
Figura 05: Somando valores.

Estruturas condicionais - IF/ELSE

Estruturas condicionais são necessárias em toda linguagem de programação, não sendo menos importante em C#. A sintaxe pode ser escrita da seguinte maneira:

if (condição)
{
//Código1
//Código2
}
else
{
//Código3
//Código4
}

Aproveitando o exemplo acima adicione mais um Button, um Label e um TextBox e altere as seguintes propriedades:
Button
Text: If/Else

Label
Text:
Idade

TextBox
MaxLength:
100

Neste caso iremos verificar o que foi digitado no TextBox e mostrar para o usuário se o mesmo é maior de idade ou não, vejamos o código abaixo:

private void button3_Click(object sender, EventArgs e)
{
      int idade = 0;

      idade = int.Parse(textBox1.Text);

      if (idade >= 18)
      {
           MessageBox.Show("Maior de Idade!");
      }
      else
      {
           MessageBox.Show("Menor de Idade!");
      }
}

Ver Imagem 06.
Figura 06: Estrutura If/Else.

Podemos também utilizar o If/Else em cascata, para encadear várias condições se necessário.
Vejamos a sintaxe e logo em seguida um exemplo prático.

if (condição == 1)
{
//Código1
}
Else if (condição == 2)
{
//Código2
}
Else if (condição == 3)
{
//Código3
}
Else if (condição == 4)
{
//Código4
}
Else
{
//Código5
}


Utilizando a mesma lógica do cálculo de idades podemos montar outro exemplo.

private void button4_Click(object sender, EventArgs e)
{
     int idade = 0;
     idade = int.Parse(textBox2.Text);
     if (idade < 18)
     {
          MessageBox.Show("Menor de Idade!");
     }
     else if (idade >= 18 && idade <= 30)
     {
          MessageBox.Show("Maior de 18 e menor de 30 anos!");
     }
     else if (idade > 30 && idade < 40)
     {
          MessageBox.Show("Maior de 30 e menor de 40 anos!");
     }
     else
     {
          MessageBox.Show("Maior de 40 anos!");
     }
}

Ver Imagem 07.
Figura 07: Instruções IF em cascata.

Condições Ternárias

O C# oferece outra opção para construção de declarações condicionais, as denominadas condições ternárias. É uma alternativa interessante para os programadores que estão habituados com a linguagem C e uma novidade para os que trabalham com o Delphi.
A sintaxe utilizada:
<expressão> ? <verdadeira> : <falsa>
Abaixo um exemplo de sua utilização:
private void button5_Click(object sender, EventArgs e)
{
     int idade = 0;

     idade = int.Parse(textBox3.Text);
     MessageBox.Show(idade >= 18 ? "Maior de Idade!" : "Menor de Idade!");
}

Eu particularmente adoro isto, a economia de linhas de código é incrível.
Switch..Case

Utilizamos como exemplo os dias da semana, para isto insira no mesmo formulário um Button, um Label e um TextBox e altere suas propriedades:
Button
Text: Switch/Case

Label
Text:
Dias da Semana

TextBox
MaxLength:
100

A Sintaxe:
            switch (condicao)
            {
                case: //condição 1
                break;

                case: //condição 2
                break;

                case: //condição 3
                break;
            }

Entraremos com números de 1 a 7 para indicar o dia da semana, veja abaixo o código:

private void button6_Click_1(object sender, EventArgs e)
        {
            int semana = 0;

            semana = int.Parse(textBox4.Text);

            switch (semana)
            {
                case 1: MessageBox.Show("Segunda-Feira");
                break;

                case 2: MessageBox.Show("Terça-Feira");
                break;

                case 3: MessageBox.Show("Quarta-Feira");
                break;

                case 4: MessageBox.Show("Quinta-Feira");
                break;

                case 5: MessageBox.Show("Sexta-Feira");
                break;

                case 6: MessageBox.Show("Sábado");
                break;

                case 7: MessageBox.Show("Domingo");
                break;
            }

        }

Logicamente que poderíamos utilizar outros componentes, como um Combobox por exemplo.
A Imagem 08 ilustra nosso exemplo completo.

Figura 08: Exemplo em Run-Time.

Conclusão

Este primeiro artigo, apesar de simples, se torna muito importante e indispensável para quem está dando os primeiros passos em C#. Ele aborda conceitos iniciais e a principal e a mais utilizada Instrução Condicional, o If/Else.
Para quem quiser treinar faça programinhas utilizando outras variáveis como string ou float e mesclando tudo o que aprendemos nos exemplos criados neste artigo.
Fica aí a dica.
Um Forte abraço a todos e até o mês que vem!

Nenhum comentário:

Postar um comentário