31/03/2010

Fundamentos da Linguagem C#

C#(csharp) 2005 e a Plataforma .NET 2.0 - Parte II
Fundamentos da Linguagem C#

Para ilustrar os fundamentos da linguagem c#, iremos olhar programaticamente o .NET base class libraries e construir aplicações exemplos, fazendo uso de vários tipos dentro do System namespace.

Anatomia de um simples programa em C#

No C#, não é possível criar funções globais e ponteiros de dados globais. Um simples programa em C# pode ser escrito como abaixo:

// Por convenção, arquivos em c# são finalizados com a extensão *.cs.

using System;

class HelloClass

{

public static int Main(string[] args)

{

Console.WriteLine("Alô Mundo!");

Console.ReadLine();

return 0;

}

}

Aqui, uma definição é criada para um tipo de classe (HelloClass) que suporta um simples método chamado Main(). Todo executável em c# precisa conter uma classe definindo um método Main(). Isso significa o ponto de entrada da aplicação. Como você pode ver, a assinatura de Main() é adornada com public e static keywords. O método Main() possui um simples parametro array de strings (string[] args). Esse parametro pode conter várias entradas através do command-line.

A lógica do programa AloClass é o método Main(). Aqui você faz uso da classe Console, que é definida com o namespace System. O membro WriteLine da classe Console, exibe os dados na saida padrão. O membro ReadLine exibe o comando prompt até teclar enter.

Porque o método Main() foi definido para retornar um inteiro (integer data type), nós retornamos zero antes de sair.

Variações do Método Main()

No exemplo anterior do Main(), foi definido ter um simples parametro (array de strings) e retornar o tipo inteiro (integer). Isso não é a única possibilidade. É permitido construir o ponto de entrada de sua aplicação usando qualquer das assinaturas a seguir (assumindo que ela contém classes e estruturas):

// Não retorna tipo, array de strings como argumentos

public static void Main(string[] args)

{

}

// Não retorna tipo, não possui argumentos

public static void Main()

{

}

// Retorna tipo, não possui argumentos

public static int Main()

{

}

Obviamente, sua opção de como construir o método Main(), será baseada em duas questões. Primeira, se haverá necessidade de processar comandos vindos de usuários através do command-line e segundo, se precisará retornar um valor para o System quando o Main() terminar.

Processando Command-Line Arguments

Assuma que você agora terá que alterar o HelloClass para processar possíveis parametros command-line.

// Verifica se foi enviado algum command-line arguments

using System;

class HeloClass

{

public static int Main(string[] args)

{

Console.WriteLine("***** Command line args *****");

for(int i = 0; i < args.Length; i++)

{

Console.WriteLine("Argumento: {0} ", args[i]);

}

....

}

}

Como uma alternativa, você pode interagir com a keyword em C# foreach.

// Não necessita verificar o tamanho do array de strings quando usa o foreach

public static int Main(string[] args)

{

.....

foreach(string s in args)

{

Console.WriteLine("Argumento: {0} ", s);

}

.....

}

Finalmente, você pode acessar command-line arguments usando o método static GetCommandLineArgs() do tipo System.Environment. O valor de retorno desse método é um array de strings. O primeiro índice é o diretório da aplicação, enquanto o restante são elementos contidos no command-line arguments.

public static int Main(string[] args)

{

.....

// extrai argumentos usando System.Environment

string[] strArgs = Environment.GetCommandLineArgs();

Console.WriteLine("Diretório da Aplicação: {0}, strArgs[0]);

.....

}

A classe System.Environment, permite você obter detalhes sobre o ambiente do sistema operacional usando vários membros estáticos. Para ilustrar o poderio dessa classe, vamos alterar o método Main() com o codigo abaixo:

public static int Main(string[] args)

{

.....

// Qual é o sistema operacional que esta rodando a aplicação?

Console.WriteLine("Sistema Operacional: {0} ", Environment.OSVersion);

// Em que diretório?

Console.WriteLine("Diretório: {0} ", Environment.CurrentDirectory);

// Lista de drives instalados

string[] drives = Environment.GetLogicalDrives();

for(int i = 0; i < drives.Length; i++)

{

Console.WriteLine("Drive {0} : {1} ", i, drives[i]);

}

// Qual é a versão do .NET que esta rodando

Console.WriteLine("Versão .NET: {0} ", Environment.Version);


Fonte: http://www.devmedia.com.br/articles/viewcomp.asp?comp=3996

C# Command-Line Compiler - Compilando código através do console


C#(csharp) 2005 e a Plataforma .NET 2.0 - Parte I
Construindo Aplicações C# com csc.exe

Como um programador C#, você pode optar por várias ferramentas para construir aplicações .NET, incluindo o Visual Studio 2005.

Nós vamos inicar, trabalhando com o C# command-line compiler, csc.exe, que utiliza o mais simples editor de texto, Notepad (notpad.exe). Nós iremos aprender sobre o processo de debugging .NET usando o command-line cordbg.exe.

Instalando o .NET Framework 2.0 SDK

Antes de você estar apto para construir aplicações .NET usando a linguagem de programação C# e o .NET Framework, o primeiro passo é instalar o .NET framework 2.0 Software Development Kit (SDK), Download gratuíto no endereço http://msdn.microsoft.com/netframework e pesquise por .NET Framework 2.0 SDK.

Após o processo de instalação completado, sua máquina de desenvolvimento ser configurada com a infra-estrutura do .NET e com várias ferramentas de desenvolvimento, um hobusto sistema de ajuda, códigos exemplos, tutoriais etc...

Por padrão, o .NET Framework 2.0 SDK é instalado no diretório C:\Arquivos de programas\Microsoft Visual Studio 8\SDK\v2.0. Aqui você encontrará StartHere.htm, que serve como um ponto de entrada para outras documentações relacionadas.

C# Command-Line Compiler (csc.exe)

Antes de você fazer uso do C# command-line compiler, você precisa configurar corretamente sua máquina de desenvolvimento com o full path que contém o csc.exe, para poder compilar seus aquivos em C#. Siga os passos abaixo:

1. Click no ícone Meu Computador com o mouse da direita e selecione propriedades.

2. Selecione a aba Avançado e click no botão Variáveis de Ambiente.

3. Click no list box Varáveis do Sistema.

4. Adicione no final da linha o path C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 separado por ponto e virgula, dependendo da versão que estiver usando do .NET Framework.

Se você configurou corretamente, digite csc /? e verá a lista de comandos do csc.

Adicione o path C:\Arquivos de programas\Microsoft Visual Studio 8\SDK\v2.0\Bin separado por ponro e virgula.

Se você configurou corretamente, digite gacutil /? e verá a lista de comandos do gacutil.

O próximo passo é construir uma aplicação simples chamada TesteApp.exe usando C# command-line compiler e NotePad. Primeiro, você necessita de algum código fonte. Abra o NotePad e digite o seguinte:

// Uma simples Aplicação Console em C#
using System;

class TesteApp
{
public static void Main()
{
Console.WriteLine("Testando! 1, 2, 3");
}
}

Uma vez que tenha finalizado, salve o arquivo em uma pasta (ex: C:\CscExemplo) como TesteApp.cs.

Para compilar TesteApp.cs em uma aplicacão Console chamada TesteApp.exe, estando no diretorio C:\CscExemplo, digite o seguinte commad-line:

csc TesteApp.cs

Referenciando .NET Assembly Externos

Nós iremos compilar uma aplicação que faz uso de tipos definidos dentro de um separado .NET assembly.

Para ilustrar o processo de referenciar externamente um .NET assembly, vamos alterar a aplicação TesteApp para exibir um Windows Forms message box. Abra seu arquivo TesteApp.cs e modifique o código abaixo:

// Uma simples Aplicação Console em C#
using System;

// Adicione!
using System.Windows.Forms;

class TesteApp
{
public static void Main()
{
Console.WriteLine("Testando! 1, 2, 3");

// Adicione!
MessageBox.Show("Alô Mundo...");
}
}

Note a referencia para o namespace System.Windows.Forms via C# using keyword.

No commad-line, você precisa informar ao csc.exe, qual assembly contém o namespace usado.

csc /r:System.Windows.Forms.dll TestApp.cs

Onde /r é a abreviatura de /reference flag

Compilando Múltiplos Arquivos Fontes com csc.exe

Asuma que você tenha incluido uma classe dentro de um novo arquivo AloMsg.cs:

// Classe AloMsg

using System;

using System.Windows.Forms;

class AloMsg

{

public void Fale()

{

MessageBox.Show("Alô Mundo!...");

}

}

Vamos modificar a classe TesteApp, para usar um novo tipo:

// Classe TesteApp

using System;

class TesteApp

{

public static void Main()

{

Console.WriteLine("Testando! 1, 2, 3");

AloMsg alo = new AloMsg();

alo.Fale();

}

}

Você pode compilar seus aqruivos C#, listando cada um explicitamente:

csc /r:System.Windows.Forms.dll TesteApp.cs AloMsg.cs

outra alternativa seria:

csc /r:System.Windows.Forms.dll *.cs

Referenciando Multiplos Externos .NET Assembly

Se você necessitar referenciar vários externos .NET assembly usando csc.exe, simplesmente use um ponto e virgula para delimitar a lista:

csc /r:System.Windows.Forms.dll;System.Drawing.dll *.cs

Trabalhando com csc.exe Response Files

C# response files, contém todas as instruções para ser usada durante a compilação de sua aplicação. Por convenção, esses arquivos usam a extensão .rsp (response). Assuma que você tenha criado um arquivo chamado TesteApp.rsp que contém os seguintes argumentos:

# Referencias Externas .NET assembly

/r:System.Windows.Forms.dll

# Saída e arquivos para compilar

/target:exe /out:TesteApp.exe *.cs

Agora, assuma que esses arquivos foram salvos dentro do mesmo diretório como o código fonte em C#, para ser compilado.

csc @TesteApp.rsp

Você pode especificar múltiplos arquivos rsp como entrada:

csc @Arquivo1.rsp @Arquivo2.rsp @Arquivo3.rsp

Debugando com csc.exe Command-line

Antes de você debugar sua aplicação usando cordbg,exe, precisa gerar o debugging symbols para sua aplicação especificando o flag /debug do csc.exe:

csc @TesteApp.rsp /debug

Isso gera um novo arquivo testeapp.pdb. Uma vez gerado, abra a sessão com cordbg.exe:

cordbg.exe testeapp.exe

Quando terminar digite exit

Fonte: http://www.devmedia.com.br/articles/viewcomp.asp?comp=3995

29/03/2010

Piadas

Piada de Português!

3 amigos:um brasileiro um italiano e um portugues,estavam passeando na India;quando o brasileiro rouba uma corrente de ouro. A policia prende os tres,dizendo que vão p/a cadeira eletrica,mas se não morrerem serão perdoados.Obraileiro vai ate a caixa de força e desliga a chave.primeiro vai o Brasileiro,ajoelha-se e diz:”Ala!! socorro,senta-se na cadeira e vai embora.Na vez do Italiano ele diz:”Ala!! per favore!.Na vez do Portugues o carrasco pregunta: Porque voces chamam por Ala?.O Portugues responde: Ala a chave de força esta desligada!

Veja mais no Blog do Se liga!