Você está na página 1de 15

OL, AMANTES DA PROGRAMAO! Estamos comeando hoje mais uma empreitada do site Guanabara.Info.

Quem ouviu o Podcast 24 sobre a evoluo da Linguagem C, j sabe o que . UM CURSO DE C# feito com muita dedicao para todos os visitantes assduos e sedentos por novas informaes. Para quem ainda no tem muita experincia em programao ou ainda no conhece muita coisa sobre essa poderosssima linguagem de programao, recomendamos antes os seguintes podcasts:

Episdio 19 Construindo Algoritmos (Parte I) Episdio 21 Construindo Algoritmos (Parte II) Episdio 24 Evoluo da Linguagem C

Esperamos corresponder s expectativas e tornar essa coluna um verdadeiro sucesso em muito pouco tempo, incentivando sempre o surgimento de novos programadores para esse mercado que est com as portas abertas para os profissionais competentes. Clique em Leia+ e vamos comear! Nessa primeira aula vamos dar uma reforada em toda a teoria que foi falada no PodCast 24, esperamos sanar algumas dvidas referentes plataforma e linguagem. Lets Go! O .NET Framework um componente integrado ao Windows que suporta a execuo e o desenvolvimento de uma nova gerao de aplicaes e web services. Segundo sua documentao, o .NET Framework tem os seguintes objetivos:

Prover um ambiente consistente de programao orientada a objeto Executar cdigo que minimiza o desenvolvimento de software e conflitos de vero Eliminar os problemas de desempenho gerados por linguagens de script Aproveitar o conhecimento do programador em diferentes tipos de aplicaes, como aplicaes Windows ou web Construir toda a comunicao em padres reconhecidos pela indstria para que o .NET Framework possa se integrar com qualquer tipo de cdigo

Existem dois componentes principais na plataforma .NET : o Common Language Runtime (CLR) e o .NET Framework Class Library, que inclui o ADO.NET, ASP.NET e o Windows Forms.

Common Language Runtime CLR


o mecanismo responsvel pela execuo das aplicaes .NET Framework. O CLR o responsvel pela compilao do cdigo-fonte das linguagens da plataforma .NET. Veja os benefcios que o CLR nos proporciona:

Gerenciamento automtico de memria(Garbage Collector) Verificao de segurana de tipos Gerenciamento de excees Segurana aprimorada

Acesso a metadados

OBS: No se preocupe muito com os conceitos agora, voc vai entend-los ao longo dos artigos.

.NET Framework Class Library


uma biblioteca de classes, interfaces e tipos. Ele permite acesso s funcionalidades do sistema e a base da qual so construdas aplicaes, componentes e controles. Imagine o Framework como sendo um grande facilitador do seu processo de programao, j que ele vem com a maioria dos cdigos que voc mais usa! Todos PRONTOS!

Linguagem Intermediria MSIL


Quando o cdigo compilado pelo CLR, gerado um Microsoft Intermediate Language (MSIL), ou simplesmente IL. Ele independente da CPU e pode ser convertido para cdigo nativo (linguagem de mquina). O cdigo contido em um IL no pode ser executado diretamente; antes de execut-lo necessrio convert-lo em instrues de mquina para que possam ser interpretadas pela CPU utilizando o (JIT), que tambm foi abordado no podcast. Como o IL independente de plataforma, s precisamos de um compilador para convert-lo para cdigo nativo. Sendo assim, podemos desenvolver uma aplicao e convert-la para vrias plataformas. Basta somente que haja o JIT para a plataforma desejada.

C#: A Linguagem
C# (l-se c-sharp) uma linguagem de programao simples, mas poderosa, ideal para desenvolver aplicaes web com ASP.NET. Ele uma variao do C e do C++. O C# possui um mecanismo chamado Garbage Collector (Coletor de Lixo) que gerencia de forma automtica a memria utilizada pelas aplicaes. uma linguagem totalmente orientada a objetos. Antes de comear a parte prtica do desenvolvimento em C#, precisamos instalar alguns componentes necessrio, so eles:

Visual C# Express .NET Framework 3.5

Clique em cada um dos links acima e baixe o C# Express e o .NET Framework. A instalao dos pacotes simples e prtica, bastando usar o mtodo Avanar > Avanar > Avanar > > Concluir. Talvez seja necessrio dar um boot ou dois no seu computador. Uma vez instalados os pacotes, vamos continuar

Agora sim vamos ao que realmente interessa, escrever nosa primeira aplicao C# e entender um pouco sobre essa linguagem na prtica. Abra o Visual C# e crie um novo arquivo Arquivo > Novo Arquivo. Ou simplesmente Ctrl+N. Vamos escrever o programa Ol Mundo. No se esquea da maldio que explicamos no episdio 19 do podcast, onde esse deve ser o primeiro exerccio em qualquer linguagem, ou voc no aprender a programar nela. Salve este exerccio em alguma pasta que seja fcil de chegar, exemplo: C:/Guanabara.info/Aula_1/ OBS: Salve com o nome OlaMundo.cs. (onde .cs a extenso de um arquivo C#) A forma de escrever esse exerccio assim:

Agora algumas observaes e explicaes do cdigo acima:

Mtodo Main
Um programa em C# deve conter um mtodo Main, que indica o incio da aplicao. Nele voc pode cria objetos e executar outros mtodos. O mtodo Main pode no retornar valores:
static void Main(){ ... }

ou retornar um valor inteiro (int):


static int Main() { ... Return 0; }

Com os dois tipos (void ou int), o mtodo Main pode ter parmetros:
static void Main(string[] args) {

... }

ou
static int Main(string[] args) { ... Return 0;

Sintaxe C#
Todas as instrues devem estar entre chaves e sempre ser finalizadas com um ponto-evrgula, veja a seguir como:
{ } // Cdigo aqui;

Entrada e Sada
A entrada de um programa C# realizado pela biblioteca de classes do .NET Framework. A instruo System.Console.WriteLine(Ol Mundo!); utiliza o mtodo WriteLine da classe Console. Se alguns termos so desconhecidos para voc, como por exemplo classe, mtodo, namespace e diretiva no se preocupe, nas prximas aulas vamos explicando aos pouco cada um deles.

Compilao e execuo do Programa


Depois de ter instalado todos os componentes do .NET Franework necessrio, como foi pedido antes da parte prtica, vamos aprender a compilar e executar nosso programa OlaMundo seguindo os seguintes passos: 1. Certifique-se que o arquivo OlaMundo.cs est salvo dentro do diretrio C:/Guanabara.info/Aula_1/. 2. Em Seguida utilize o Visual Studio Command Prompt: V ao menu Iniciar > Programas > Microsoft .NET Framework SDK > SDK Command Prompt. 3. Mude o diretrio atual para C:/Guanabara.info/Aula_1. 4. Digite csc OlaMundo.cs 5. Neste Momento voc esta convertendo o cdigo C# em IL e gerando um arquivo Potable Executable (PE) do tipo .exe. 6. Execute o programa digitando OlaMundo e pressione ENTER. Automaticamente o resultado ser impresso na tela. Bem galera, por hoje s, esperamos ter conseguido passar uma informao legal para vocs, no evolumos muito na linguagem hoje, foi s um aquecimento, nas prximas aulas daremos uma avanada maior.

Qualquer dvida, pergunta ou sugesto, basta deixar um comentrio ou mande um email que responderemos o mais rpido possvel, caso no tenha dvida e nem pergunta, deixe o seu comentrio dizendo o que achou da nossa primeira parte do curso de C#. Agradeo a ateno de todos que chegaram ao fim deste artigo, e espero vocs na prxima.

[C#] Parte II Variavis e Estrutura condicional


Ol galera, Vou comear pedindo desculpas pela demora do post. No artigo anterior, vimos o famoso Ol Mundo em C#, e uma rpida explicao de como o C# e a plataforma .NET funcionam. Ento abram seus Visual C# Express, criem um projeto do tipo Console Application e vamos sintaxe! Continue lendo.

Declarao e tipos de variavis


No C# a declarao de varaveis obrigatria, assim como a declarao de seus tipos. Os tipo de variveis mais utilizados so: int Nmero Inteiro de 32-bits byte Nmero inteiro de 8-bits double Nmero de ponto-flutuante de 64bits bool Valor Booleano, verdadeiro ou falso. string Texto, nmero ou qualquer caracter. Vejamos um exemplo:
namespace OlaMundo { class Program{ static void Main(string[] args){ string Texto = "Ol Mundo"; System.Console.WriteLine(Texto); } } }

Como podemos ver na imagem acima, a declarao de variaveis segue o seguinte formato. [TIPO] [NOME DA VARIAVEL] = [VALOR];

ou [TIPO] [NOME DA VARIAVEL]; Vale lembrar que o C# case-sensitive, ento a varavel Texto diferente de texto e System.Console.WriteLine() diferente de system.console.writeline(). S para fixarmos, a vai mais um exemplo:
using System; namespace OlaMundo{ class Program{ static void Main(string[] args){ int Numero = 2; int OutroNumero = 2; int MaisUmNumero = Numero + OutroNumero; Console.WriteLine(MaisUmNumero); } } }

Nessa imagem, temos 3 varaveis. As variaveis do tipo inteiro: Numero,OutroNumero recebem o valor 2. A variavel MaisUmNumero recebe a soma das variaveis Numero e OutroNumero. NOTA: Note que na primeira linha do cdigo eu usei o comando using para importar o namespace System, com isso no ser necessrio utilizar o System.Console.WriteLine, somente Console.WriteLine, como mostrado na linha 12. Se voc no entendeu, isso ser explicado mais detalhadamente nos prximos artigos.

Estrutura Condicional IF/ELSE e SWITCH/CASE


A estrutura condicional do C# bem parecida com a do PHP, JAVA, C/C++ e derivados. Sintaxe:
if(CONDIO) { //Cdigo }else if(CONDIO) { //Cdigo }else { //Cdigo }

Operadores lgicos:

&& || == !=

E OU Igual Diferente

Operadores aritimticos: / + * % Diviso Soma Subtrao Multiplicao Resto da diviso

Vejamos alguns exemplos:


using System; namespace OlaMundo{ class Program{ static void Main(string[] args){ int Numero = 2; int OutroNumero = 2; if(Numero > OutroNumero){ Console.WriteLine("Numero Maior"); }else if(OutroNumero > Numero){ Console.WriteLine("OutroNumero maior."); }else{ Console.WriteLine("So iguais"); } } } }

Dica: Se dentro de um IF/ELSE tiver somente uma linha, o uso das {} opcional. Veja abaixo:
using System; namespace OlaMundo{ class Program{ static void Main(string[] args){ int Numero = 2; int OutroNumero = 2; if(Numero > OutroNumero){ Console.WriteLine("Numero Maior"); }else if(OutroNumero > Numero){ Console.WriteLine("OutroNumero maior."); }else{

Console.WriteLine("So iguais"); } } } }

Dica: Se dentro de um IF/ELSE tiver somente uma linha, o uso das {} opcional. Veja abaixo:
using System; namespace OlaMundo{ class Program{ static void Main(string[] args){ int Numero = 2; int OutroNumero = 2; if(Numero > OutroNumero) Console.WriteLine("Numero Maior"); else if(OutroNumero > Numero) Console.WriteLine("OutroNumero maior."); else Console.WriteLine("So iguais"); } } }

Dica: No C# tambm existe o IF-Inline. CONDIO ? EXPRESSO1 : EXPRESSO2; Se a CONDIO for verdadeira, retornada a EXPRESSO1, caso contrrio a EXPRESSO2 retornada. Veja um exemplo abaixo.
using System; namespace OlaMundo{ class Program{ static void Main(string[] args){ int Numero = 2; int OutroNumero = 3; int MaisUmNumero = Numero > OutroNumero ? Numero : OutroNumero; Console.WriteLine(MaisUmNumero); } } }

O Cdigo acima ir retornar 3.

Switch/Case
Sintaxe:
switch(VARIAVEL) { case VALOR: //Faz algo se VARIAVEL for igual ao VALOR

default:

break; //(OPCIONAL) //Faz algo se VARIAVEl no for igual a nenhum CASE break;

No Switch voc pode ter quantos case voc quiser. Vamos a um exemplo:
using System; namespace OlaMundo{ class Program{ static void Main(string[] args){ int Numero = 2; switch(Numero){ case 1: Console.WriteLine("Numero igual a 1"); break; case 2: Console.WriteLine("Numero igual a 2"); break; case 3: Console.WriteLine("Numero igual a 3"); break; } } } } using System; namespace OlaMundo{ class Program{ static void Main(string[] args){ int Numero = 2; switch(Numero){ case 1: case 2: case 3: Console.WriteLine("Numero 1,2 ou 3"); break; default: Console.WriteLine("Numero no 1, nem 2, muito menos 3"); break; } } } }

No cdigo acima, se Numero for igual a 1,2 ou 3, o texto O valor 1,2 ou 3. ser exibido, caso contrrio Muita gente se pergunta quando utilizar o Switch e quando utilizar o If, bem simples. O Switch recomendado para quando voc sabe exatamente qual o valor a variavel ter, e o If quando voc quiser realizar um teste lgico ou um teste aritimetico onde o valor no exatamente conhecido.

Bom, acho que s! Na prxima aprenderemos as estrutura de repetio e como trabalhar com vetores no C#.

[C#] Parte III Estruturas de Repetio e Vetores


Ol galera! Chegamos a mais uma aula-post de C# do Guanabara.INFO, nesse post iremos aprender a sintaxe das estruturas de repetio, ou laos de repetio e tambm uma pequena introduo arrays(vetores). Abram seus Visual C# Express, criem uma ConsoleApplication e mos a obra. A primeira estrutura de repetio que iremos estudar o WHILE. A sintaxe moleza!
while(CONDIO) { //Cdigo }

Vamos fazer algo mais construtivo!


using System; namespace Loop{ class Program{ static void Main(string[] args){ int numero = 1; while(numero < 15){ Console.WriteLine("Luiz um MULA!"); numero++; } } } }

Vamos explicao da bagaa! ENQUANTO numero FOR MENOR QUE 15 ESCREVA Luiz uma MULA! numero <- numero +1 Simples no? Vamos agora ao lao FOR Sintaxe:
for(INICIALIZAO;CONDIO;SALTO){ //Cdigo }

Novamente, vamos a algo mais construtivo; Uma tabuada:

using System; namespace Loop{ class Program{ static void Main(string[] args){ int tabuada = 2; for(int numero = 1;numero <= 10;numero++){ Console.WriteLine("{0} + {1} = {2}",tabuada,numero,tabuada*numero); } } } }

OPA! A temos mais novidades! Mas antes, vamos algoritmizar a sintaxe do FOR. PARA numero IGUAL A 1; ENQUANTO numero FOR MENOR OU IGUAL A 10; INCREMENTANDO 1 EM numero FAA Temos ali no Console.WriteLine, uma novidade. O seguinte cdigo apresentado: Console.WriteLine({0} + {1} = {2},tabuada,numero,tabuada*numero); Vamos destrinch-lo: String passada: {0} + {1} = {2} Variaveis passadas aps a string : tabuada,numero,tabuada*numero coisa simples! Olhem s! {0} => Equivale ao primeiro parametro depois da string que ser exibida, no nosso caso equivale a variavl tabuada. {1} => Equivale ao segundo parametro depois da string que ser exibida, no nosso caso equivale a variavl numero. {2} => Equivale ao primeiro parametro depois da string que ser exibida, no nosso caso equivale ao resultado da multiplicao entre as variavis tabuada e numero.

Vetores ou Arrays
Quem j passou pelo Ensino Mdio concerteza j ouviu falar de vetores e matrizes. Na programao os vetores so chamados de array. Segundo a Wikipedia Vetores no contexto da geometria: Vetor um objeto geomtrico que possui uma magnitude e uma direo. Um vetor frequentemente representado por um segmento de reta unindo o ponto inicial A ao ponto final B e denotado Tambm a Wikipedia, dessa vez no contexto de programao de computadores:

Um array, tambm conhecido como vetor ou lista (para arrays uni-dimensionais) ou matriz (para arrays bi-dimensionais), uma das mais simples estruturas de dados. Os arrays mantm uma srie de elementos de dados, geralmente do mesmo tamanho e tipo de dados. Elementos individuais so acessados por sua posio no array. Os arrays so estruturas de dados simples, que de uma forma sucinta, podemos dizer que nos permite armazenar mais de uma informao em uma varivel. Os elementos de um array so acessados atravs de um ndice, podendo ser um ndice nmerico(int) ou texto(string). Geralmente, uma variavel do tipo inteiro s pode receber um nmero, veja o exemplo:
int Numero = 1; int Idade = 17; int ABC = 130;

E se quisermos amazenar 10 nmeros? FACIL! 10 variavis n?


int int int int int int int int int int Numero1 = 1; Numero2 = 2; Numero3 = 3; Numero4 = 4; Numero5 = 5; Numero6 = 6; Numero7 = 7; Numero8 = 8; Numero9 = 9; Numero10 = 10;

OBS.: TA! Gambiarra! No seria mais fcil e legvel assim?


int Numeros[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

Pronto! Temos o tal Array em C# . Vamos ao cdigo que faz uso efetivo de um array uni-dimensional:
using System; namespace CSharpArrays{ public class Program{ public static void Main(string[] args){ int Numeros = {1, 2, 3, 4, 5}; int i = 0; for(i = 0;i<=Numeros.Length;i++){ Console.WriteLine("{0}", Numeros[i]); } } } }

Dissecando o exemplo: Vemos al que declaramos um array de nmeros inteiros chamado Numeros, e colocamos como elementos desse array, os nmeros de 1 a 5. Logo depois, iniciamos um lao FOR, dizendo que enquanto a varivel i for menor que o nmero total de elementos no array Numeros (O valor total de elementos no vetor retornado pela propriedade Length), incrementando +1 na varivel i a cada loop. Dentro do lao FOR temos uma sada para o console, indicando Numeros[i]. Entendendo o Numeros[i] Cada elemento em um array corresponde a um ndice, ndice esse que pode ser tanto nmerico quanto string, mas no nosso exemplo ele ser apenas nmerico. A cada volta no lao FOR, i ter um valor diferente, sempre maior que 0 e menor ou igual ao total de elementos no vetor, que no nosso exemplo 5. No C#, arrays tm ndice ZERO, ou seja, o primeiro ndice nmerico de um array SEMPRE ser ZERO, por isso no cdigo de exemplo acima a varivel i inicia o loop com o valor 0. Mais um exemplo, para garantir o aprendizado:
namespace Arrays{ class Program{ static void Main(string[] args){ string[] Nomes = {"Renan", "Gustavo", "Luiz Ricardo", "Rafael", "Rodrigo"}; for(int i = 0; i <= Nomes.Length; i++){ Console.WriteLine("{0}",Nomes[i]); } } } }

Vamos simplificar, AINDA MAIS, esse ltimo exemplo?


namespace Arrays{ class Program{ static void Main(string[] args){ string[] Nomes = {"Renan", "Gustavo", "Luiz Ricardo","Rafael","Rodrigo"}; foreach(string nome in Nomes){ Console.WriteLine(nome); } } } }

Apresento a vocs o lao de repetio chamado foreach , ele muito usado para trabalhar com arrays, como vemos no exemplo acima. Vamos algoritmiza-lo: PARA CADA string nome EM Nomes FAA

Assim o foreach percorre cada elemento do array e retornando seus respectivos valores, como string. Lembrando que, se no for um array de string o cdigo acima ir resultar em um erro. O tipo da varivel que ir receber os valores dos elementos dever ser compatvel com tipo do array. Bem mais fcil assim, no? Na prxima semana Vetores Multi-dimensionais. At a prxima, e WELCOME TO THE .NET WORLD.

C#] Guidelines
Fala pessoal deixamos os cdigos de lado por um momento, e vamos falar sobre as Guidelines, ou diretrizes de programao. As Guidelines so regras usadas para quando vocs est desenvolvedo algo. A idia deixar o cdigo o mais legvel possvel, e com isso deixar o cdigo com um indice de manutenibilidade alto. Irei indicar apenas as bsicas, relacionadas a nomeclatura de mtodo e propriedades.

PascalCasing e CamelCasing
Os nomes dos metodos e propriedades devem seguir o chamado PascalCasing, ou seja, deve ter a inicial de cada palavra maiuscula. Exemplos:
//Mtodos public void GetNumber(); public void GetName(); public void GetCustumerNameById() public void SetFlag(); //Propriedades public int Number{get;set;} public decimal UnitPrice{get;set;} public string Name{get;set;} public int NumberOfWheels{get;set;}

J os parametros e vriaveis locais deve seguir o chamado CamelCasing, ou seja, a primeira letra deve ser minuscula e as iniciais das outras palavras devem ser maiusculas. Ex:
public string GetNameByLastName(string lastName); public int GetVehicleType(int numberOfWheels); public decimal GetUnitPrice(string productName);

Veja o casing dos parametros das funes. O mesmo deve ser aplicado para as varaveis locais.

Metodos e verbos?
Pois . Segundo essa guideline TODOS os metodos devem iniciar com verbos. Se voc vai adicionar algo, use Add, se vai pegar algo de algum lugar, use Get, se vai atribuir alguma coisa a algo, use Set, e assim vai. Ex.:
// Pega um numero public int GetNumber(); // Adiciona um numero public int AddNumber( int id); //Encontra um numero em uma coleo(array) public int FindNumberInCollection(int id);

Existe uma outra guideline que diz: Todas as propriedades booleanas devem iniciar com Has, Can ou Is Ex.:
//Exemplos public bool IsAlive{get;set;} private bool CanRead{get;set;} protected bool HasRows{get;set;}

Bem legvel no? Ah! Quase esqueci, existe uma Guideline que diz ; Todos os metodos, propriedades, variaveis, enfim todos os nomes devem estar em ingls. E essas so apenas algumas das guidelines de nomeclatura e podem ser aplicadas para qualquer linguagem. impressionante como essas regrinhas simples deixam um cdigo mais legvel e fcil de entender. Se quiserem estudar mais sobre: http://msdn.microsoft.com/enus/library/ms229042.aspx E no apenas para programao que existem, existe Guidelines para Banco de dados, XML e muitas outras linguagens.

Você também pode gostar