Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
NET
IDEs Gratutas
Sharp Develop
http://sourceforge.net/projects/sharpdevelop http://www.microsoft.com/express/vcsharp/Default.a
spx
http://www.asp.net/downloads/archived/web-matrix/ http://www.microsoft.com/express/vwd/Default.aspx
Programao em C# 2
Anatomia de um Projeto C#
Todo projeto C# envolve um arquivo de extenso .cs. Contm a declarao e inicializao do aplicativo. O C# trabalha com o conceito de blocos de comandos e sees de declaraes. Os blocos comeam com { e terminam com }.
Programao em C#
Anatomia de um Projeto C#
Namespaces
perimitir melhor organizao do cdigo. Evitam a poluio do escopo global que causa coliso de nomes e cdigo quando projeto feito por equipes diferentes. Funcionam como uma espcie de alias para o endereo de um determinado cdigo.
Programao em C#
Namespaces
Por exemplo:
class hello { public static void Main() { System.Console.WriteLine(Hello World); string str = System.Console.ReadLine(); } }
using System; class hello { public static void Main() { Console.WriteLine(Hello World); string str = Console.ReadLine(); } }
Programao em C#
Namespaces
Alm de melhorar a aparncia do cdigo e digitar menos, imagine que outro desenvolvedor de sua equipe criou uma classe chamada hello. Quando um terceiro chamar a classe hello, qual das duas ser chamada? O cdigo final, para resolver este problema, deve nomear um namespace novo.
Programao em C#
Namespaces
using System; namespace Livro { class hello { public static void Main() { Console.WriteLine(Hello World); string str = Console.ReadLine(); } } }
Namespaces
Pode-se declarar um namespace dentro de outro. Ele uma diviso lgica no fsica. Pode estar quebrado em vrios arquivos fontes. Podemos ter vrios namespaces em uma mesma DLL. Podemos ter uma DLL com um nico namespace.
Programao em C# 8
Namespaces
Podemos ter um namespace quebrado em vrias DLLs. Quando uma aplicao organizada logicamente em um namespace, deve possuir pelos menos uma classe que implemente o mtodo Main(). Assim como as classes possuem membros, namespaces tambm os possuem.
Programao em C#
Namespaces
Podem ser:
Programao em C#
10
Class
Toda a lgica do programa deve estar contida em classes. Assim que uma classe definida, pode ser instanciada em qualquer lugar do projeto. Por padro as classes so declaradas como internas, apenas o cdigo atual ter acesso a elas. Se desejarmos que a classe seja acessada por outros projetos e classes deve-se usar a palavra public.
Programao em C#
11
Class
Class App { .... } Internal Class App Public Class App { { .... .... } }
Programao em C#
12
Class
Todo o programa C# deve ter uma classe que defina um mtodo Main(), que deve tambm ser declarado com esttico. Static diz ao runtime que o mtodo pode ser chamada sem a classe ser instanciada. Static void Main(string[] args) { ... } // Recebe argumentos Static int Main() { ... } // Retorna inteiro
13
Programao em C#
Mtodos
Equivalentes as funes ou procedimentos na programao estruturada. A razo para criarmos mtodos a de isolar em um nico lugar um nico algoritmo, de forma a reduzir a complexidade total do programa. Os mtodos esto diretamente ligados.
[modificador de acesso] [tipo de mtodo] <tipo do valor de retorno> <identificador do mtodo> ([lista de parmetros]) { implementao }
Programao em C#
14
Mtodos
Exemplo
Public void metodoTeste() { .... } Private int Soma(int a, int b) { return a + b; }
Programao em C# 15
Variveis
Corresponde a uma posio de memria, cujo contedo pode ser alterado durando a execuo do programa. Nomes de variveis so identificadores, no podem comear com nmero, s letras ou _. Declarao
Programao em C#
16
Tipos
Object
System.Object Classe bsica para todos os tipos System.String Cadeia de caracteres System.Sbyte Byte de 8 bits com sinal
Programao em C# 17
String sByte
Tipos
Byte
System.Byte Byte de 8 bits sem sinal System.Int16 Valor inteiro de 16 bits com sinal System.UInt16 Valor de 16 bits sem sinal
Programao em C# 18
Short
Ushort
Tipos
Int
System.Int32 Valor inteiro de 32 bits com sinal System.UInt32 Valor inteiro de 32 bits sem sinal System.Int64 Valor inteiro de 64 bits com sinal
Programao em C# 19
UInt
Long
Tipos
ULong Char
System.UInt64 Valor inteiro de 64 bits sem sinal System.Char Caracter unicode de 16 bits System.Single Nmero de ponto flutuante de 32 bits
Programao em C# 20
Float
Tipos
Double Bool
System.Double Nmero de ponto flutuante de 64 bits System.Boolean Valor booleano (true / false) System.Decimal Valores monetrios com 128 bits para 28 ou 29
dgitos
Programao em C# 21
Decimal
O programa a seguir tem como objetivo a fixao de tipos do C#. Neste programa usaremos um form com uma listBox, um textBox e 2 labels. Precisaremos de mtodos e do comando switch/case
Programao em C#
22
um comando condicional
Programao em C#
23
.... }
Programao em C#
24
Precisaremos ainda do mtodo ToString. Lembre que TextBox s aceita String, ento para transformar um nmero, por exemplo inteiro para string, podemos usar o .ToString aps a varivel. long val = 42L; tbValor.Text = val.ToString();
Programao em C#
25
Interface do exerccio
Ttulo do form Labels
TextBox
So armazenados em inteiros longos com 8 bytes que representam uma data de 1/1/1 at 31/12/9999. As horas vo de 0:00:00 at 23:59:59.
Programao em C# 29
Exemplo:
Quando vc chamar no cdigo o construtor do DateTime vai verificar que ele possui 7 overloads.
Programao em C#
30
Programao em C#
31
Regionalizar o formato da data fundamental para a boa apresentao. Precisaremos do namespace Globalization Este namespace contm as classes que tratam das culturas regionais, inlcuindo linguagem, datas, monetrio e outros. O prximo exerccio tem como objetivo tratar exatamente deste problema.
Programao em C# 32
GroupBox
DateTimePicker Labels
Programao em C#
33
Programao em C#
34
Programao em C#
35
Para terminar falta avisarmos ao C# que queremos padro Brasil. Para tal precisaremos :
36
Exerccio
Criar o evento da mudana de data no calendrio e atualizar os labels. Mudar tambm o UTC para hora do Brasil.
Programao em C#
37
Operadores Aritmticos
Programao em C#
38
Operadores Aritmticos
O prximo exerccio tem por objetivo a construo de uma calculadora de layout diferente. O usurio entra com 2 valores, escolhe a opreo, a calculadora monta a expresso algbrica e mostra o resultado.
Programao em C#
39
Operadores Aritmticos
Label TextBox Label TextBox GroupBox Label RadioButtons
Boto
Programao em C#
40
Operadores Aritmticos
Para o cdigo precisaremos de um novo mtodo, Convert. Podemos converter valores entre tipos diferentes atravs de um cast ou usando o mtodo Convert.
O mtodo Convert muito til pois converte de qualquer tipo para qualquer outro tipo.
Programao em C# 41
Operadores Aritmticos
RadioButton Adio
Programao em C#
42
Operadores Aritmticos
Programao em C#
43
Operadores Aritmticos
Programao em C#
44
Os tipos valor armazenam a si prprios e a seu contedo no mesmo local de memria, chamado de pilha. Os tipos de referncia contm uma referncia para outro lugar da memria, o heap, em que o contedo armazenado. No C# no h necessidade de se preocupar muito com isto, mas bom saber como as coisas funcionam.
Programao em C# 45
Todos os tipos so derivados de Object, que um tipo por referncia. Mesmo os int, por exemplo, derivam do Object. Foram transformados em valor para otimizao. Um tipo inteiro pagaria um preo muito alto de performance se tivesse um endereo na pilha contendo uma referncia ao heap.
Programao em C#
46
Tipos por referncia no so criados na declaarao deles (exceto o tipo string). Quando declarados so apenas reservados na pilha, e so criados e armazenados no heap aps a declarao new, ou seja, aps serem inicializados. Os tipos por valor no precisam ser inicializados, eles tm seu espao j reservado em memria quando criados.
Programao em C# 47
42
Programao em C#
48
Circle c @ object o @
42
Ao modificar c ou o modifica-se o valor do heap, como ambos apontam para o mesmo endereo, ambos vero a modificao.
Programao em C#
49
42
Se modificar o valor de i, no estar modificando o valor no heap, ele apenas uma cpia. Copiar de item da stack para o heap chamado de Boxing.
Programao em C# 50
Heap
42