Aulas C#
Aulas C#
Aulas C#
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.
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.
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:
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:
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(){ ... }
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.
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.
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.
Operadores lgicos:
&& || == !=
E OU Igual Diferente
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); } } }
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#.
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 }
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;
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]); } } } }
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.