Your SlideShare is downloading. ×
Fundamentos do .NET Framework - Parte 2
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Fundamentos do .NET Framework - Parte 2

1,161
views

Published on

Conteúdo: …

Conteúdo:
Particularidades da linguagem
Tipos de dados
Comandos (Statements)
Declaração de variáveis
Operadores
Arrays
Boxing e Unboxing

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,161
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
215
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Core foundation - Módulo 1Pré-requisitos:•Conhecimento da estrutura do .NET Framework•Visual Studio 2005+ instaladoConteúdo:•Particularidades da linguagem•Tipos de dados•Comandos (Statements)•Declaração de variáveis•Operadores•Arrays
  • 2. Microsoft .NET C# I) Descrição da linguagem II) Estrutura de um programa C# III) Tipos de dados IV) Comandos V) Declarações de variáveis VI) Operadores VII) ArraysI) Descrição da linguagem • Introdução a linguagem • Funcionalidades da linguagem
  • 3.  A linguagem C# (lê-se Csharp) é muito similar a Java e a outras linguagens. Poderíamos dizer que a similaridade de C# 70% Java,10% C++, 5% Visual Basic e 15% é novo Tudo é um objeto. Linguagem fortemente tipada Compila para código intermediário Herança simples de classes, “herança” múltipla através de interfaces Orientada a Objetos Estruturação em blocos Instruções são separadas por „ ; ‟ Comentários de uma linha com: „ // ‟ Comentários de mais de uma linha entre „ /* ‟ e „ */ ‟ Documentação XML: „///‟ Case Sensitive
  • 4.  Programação baseada em componentes  Propriedades  Eventos Delegates Indexers Sobrecarga de operador Foreach Boxing/Unboxing Attributes Generics Reflection Remoting ....
  • 5. Microsoft .NET C# I) Descrição da linguagem II) Estrutura de um programa C# III) Tipos de dados IV) Comandos V) Declarações de variáveis VI) Operadores VII) ArraysII) Estrutura de um programa C# •Definição • Diagrama conceitual • Exemplo Hello World •Compilando um programa complexo
  • 6.  Em C#, uma aplicação é um conjunto de uma ou mais classes, estruturas de dados e outros tipos. Para ínicio do entendimeto, definiremos Classe como sendo um conjunto de dados combinado com métodos (ou funções) que podem manipular dados. 6
  • 7. ProgramaArquivo1.cs Namespace ZAquivo2.cs Classe X Classe Y Int DoIt(); static void Main(){}; Int UndoIt();ArquivoN.cs
  • 8.  Se um namespace não for especificado é assumido pelo framework um ns anônimo Namespaces podem conter, além de classes, structs, interfaces, delegates e enums. Namespaces pode ser “reabertos” em outros arquivos Caso mais simples => uma única classe, único arquivo e default namespace ( Exemplo do Hello World ). 8
  • 9. using System; class Hello { static void Main() { Console.WriteLine("Hello World"); Console.Read(); } }Assim como no C,C++ e no Java, é necessário ter o método MAIN semou com argumentos para que o programa seja iniciado.Compilação para console:csc HeloWorld.csExecução:HelloWorld
  • 10. Programa com dois arquivos sem e com referência a DLL class Contador{ using System; int valor = 0; class Programa public void Add(int x) { { static void Main() valor = valor + x; { } Contador c = new Contador(); Console.WriteLine("Antes : valor = " + c.Valor()); public int Valor() c.Add(3); { c.Add(5); return valor; Console.WriteLine("Depois : valor = " + c.Valor()); } Console.Read(); } } }Compilando os dois arquivos :Csc Contador.cs Programa.cs => Gera Programa.exeCompilando os dois arquivos com referência a DLL :Csc /target:library Contador.cs => Gera Contador.DLLCsc /reference:Contador.dll Programa.cs => Gerar Programa.exe
  • 11. Microsoft .NET C# I) Descrição da linguagem II) Estrutura de um programa C# III) Tipos de dados IV) Comandos V) Declarações de variáveis VI) Operadores VII) ArraysIII) Tipos de dados •Tipos de dados por valor e por referência •Tipos de dados por valor definidos pelo usuário •Enumerados •Compatibilidade entre tipos
  • 12. No .NET os tipos de dados são dividos da seguinte maneira:Todos os tipos herdam de System.Object. 12
  • 13. Por Valor Por referênciaVariáveis contém Valor Referência (ponteiro)Armazenados na Stack HeapNa atribuição Copia o valor Copia a referênciaExemplo Int i = 20; String s1 = “Julian”; Int j = i; String s2 = s1; i 20 s1 j 20 s2 julianLink interessante: http://www.maxi-pedia.com/what+is+heap+and+stack 13
  • 14. 14
  • 15. 15
  • 16. Enumerados são tipos por valor, são na verdade inteiros. São símbolos que possuem valores fixo e servem principalmente para facilitar a codificação. Public enum Sexo {enum Titles : int Masculino = 10, { Feminino = 20 Mr, } Ms, Mrs, Dr}; 16
  • 17. 17
  • 18. Microsoft .NET C# I) Descrição da linguagem II) Estrutura de um programa C# III) Tipos de dados IV) Comandos V) Declarações de variáveis VI) Operadores VII) ArraysIV) Comandos ( Statements ) •Comandos de seleção •Comandos de iteração ( laços) •Comandos de salto •Comandos de captura
  • 19. If.{....} else if{....} else.....int i = 10;if( i % 2 == 0) Console.WriteLine(“Número Par”);else Console.WriteLine(“Número Impar”);//Utilizando operador ternárioint i = 10;Console.WriteLine(i % 2 == 0 ? “Número Par” : “Número Impar”); 19
  • 20. Switch(X){....case..break...}SexoEnum sexo = GetSexo(); switch (sexo) { case SexoEnum.Masculino: Console.WriteLine("Homem"); break; case SexoEnum.Feminino: Console.WriteLine("Mulher"); break; default: Console.WriteLine("Não poderia ter chegado aqui"); throw new ApplicationException("Erro fatal"); break; } 20
  • 21. Segue o mesmo estilo das linguagens JAVA, C e C++:using System; //Loop infinitopublic class Program{ using System; static void Main() { public class Program{ for( int i = 0; i < 5; i++) static void Main() { { Console.WriteLine(“Iteração : {0}”,i); for(;;) } { Console.Read(); string input = Console.ReadLine(); } if(input.ToUpper()Equals(“EXIT”)) break; } Console.Read(); } 21
  • 22. Este tipo de laço é utilzado para varrer arrays ou coleções. Não precisa de uma condição booleana paraparar o laço. Não precisa inicializar variáveis. Não precisamos nos preocupar com a forma de extraçãodo conteúdo. using System; using System.Collections.Specialized; public class Program{ static void Main() { String[] nomes = new String[] { "Julian", "Maria", "Joao", "Bruno" }; foreach (String nome in nomes) { Console.WriteLine(nome); } Console.ReadKey(); } } 22
  • 23. Este tipo de laço é utilizado quando queremos que um bloco de código seja executado pelo menos umavez. using System; public class Program{ static void Main() { int i = 45; do { Console.WriteLine(i); i++; } while (i<50); Console.ReadKey(); } } 23
  • 24. Este tipo de laço é utilizado quando não sabemos o número de vezes que devemos executar um blocode código, mas apenas a condição que deve ser satisfeita para executar o bloco no corpo do while. using System; public class Program{ static void Main() { int i = 45; while (i < 50) { Console.WriteLine(i); i++; } Console.ReadKey(); } } 24
  • 25. O comando BREAK é utilizado para abandonar o laço, ou seja, interrompe imediamente a sua execução.O comando CONTINUE é utilizado para passar para o próxima iteração do loop. //BREAK //CONTINUE using System; using System; public class Program{ public class Program{ static void Main() static void Main() { { int i = 45; int i = 40; while (i < 50) while (i < 50) { { Console.WriteLine(i); i++; i++; if (i % 3 == 0) if (i % 3 == 0) continue; break; Console.WriteLine(i); } Console.ReadKey(); } } Console.ReadKey(); } } } 25
  • 26. //GOTO CASEusing System;public class Program{ static void Main() { int x = 3; switch (x) { case 1: Console.WriteLine("Case 1"); break; case 2: Console.WriteLine("Case 2"); break; case 3: goto case 2; } }} 26
  • 27. using System;public class Program{ static void Main() { int x = 0, y = 10, result = 0; try { result = y / x; } catch (Exception e) { Console.WriteLine(e.Message); } Console.ReadKey(); }} 27
  • 28. Microsoft .NET C# I) Descrição da linguagem II) Estrutura de um programa C# III) Tipos de dados IV) Comandos V) Declarações de variáveis VI) Operadores VII) ArraysV) Declaração de variáveis •Declaração de tipos primitivos •Declaração de structs •Declaração de classes e interfaces •Declaração de métodos
  • 29. using System;public class Program{ static void Main() { int i = 2147483647; //Atribuição simples i++; //Retorna -2147483648 uint p = 4294967295; double y = 10.5, z = 5.1, u = 560.698; //Atribuição simpes de várias variáveis char c1, c2, c3; c1 = c2 = c3 = J; //Atribuição múltipla DateTime hoje; hoje = DateTime.Today; ushort h = 65535; short k = 65535; //Erro float f = 3.40282332F; double d = 3.402823F; decimal dec = 3.402823M; }} 29
  • 30. using System;enum Cores { Azul, Vermelho, Prata } struct Carro { string _modelo; string _placa; Cores _cor; public Carro(string modelo,string placa,Cores cor) { _modelo = modelo; _placa = placa; _cor = cor; } public override string ToString() { return String.Format(" Carro : {0} | Placa : {1} | Cor : {2}",_modelo, _placa, _cor); } public class Program{ } static void Main() { Console.WriteLine("Exemplo Structs:"); Carro c = new Carro("Palio","HSG4015",Cores.Prata); Console.WriteLine(c); //Imprime //Carro : Palio | Placa : HSG4015 | Cor : Prata Console.ReadKey(); } } 30
  • 31. public interface IPessoa { string Falar(); }public class Pessoa : IPessoa { string _nome = null; DateTime _dtNasc; public Pessoa(String Nome, DateTime DataNascimento) { _nome = Nome; _dtNasc = DataNascimento; } #region IPessoa Members public string Falar() { public class Program{ return "Eu sou o " + _nome; } static void Main() { #endregion Pessoa p1 = new Pessoa("Julian", DateTime.Parse("19/09/1986")); } IPessoa p2 = new Pessoa("Joao",DateTime.Today); Console.WriteLine(p1.Falar()); Console.WriteLine(p2.Falar()); Console.ReadKey(); } } 31
  • 32. public class Pessoa { string _nome = null; DateTime _dtNasc; public Pessoa(String Nome, DateTime DataNascimento) { _nome = Nome; _dtNasc = DataNascimento; }public int GetIdade() { int idade = DateTime.Today.Year - _dtNasc.Year; if (DateTime.Today.Day < _dtNasc.Day && DateTime.Today.Month <= _dtNasc.Month) idade--; return idade; } } public class Program{ static void Main() { Pessoa p1 = new Pessoa("Julian", DateTime.Parse("19/09/1986")); Pessoa p2 = new Pessoa("Joao", DateTime.Today); Console.WriteLine(p1.GetIdade()); Console.WriteLine(p2.GetIdade()); Console.ReadKey(); } } 32
  • 33. public static void Inc(int valor) { valor++; } public static void IncRef(ref int valor) { valor++; } public static void IncOut(out int valor) { valor = 10; } public class Program{ static void Main() { int valor = 5; Inc(valor); Console.WriteLine(valor);// Imprime "5" IncRef(ref valor); Console.WriteLine(valor);// Imprime "6" IncOut(out valor); Console.WriteLine(valor);// Imprime "10" Console.ReadKey(); } } 33
  • 34. public static void IncOutParams(out int valor,params int[] numeros) { valor = 0; foreach (int num in numeros) valor += num; } public class Program{ static void Main() { Console.WriteLine("Exemplo Parameters Methods Params:"); int valor = 0; IncOutParams(out valor,40,60,50,25,10,15); Console.WriteLine(valor); //Imprime 200 Console.ReadKey(); } } 34
  • 35. Microsoft .NET C# I) Descrição da linguagem II) Estrutura de um programa C# III) Tipos de dados IV) Comandos V) Declarações de variáveis VI) Operadores VII) ArraysVI) Operadores •Operadores Aritméticos •Operadores Unários •Operadores Lógicos •Operadores Condicionais •Operadores Relacionais •Operadores de Igualdade •Operadores de Atribuição •Operadores Checked e Unchecked
  • 36. 36
  • 37. 37
  • 38. 38
  • 39. 39
  • 40. 40
  • 41. 41
  • 42. 42
  • 43. A palavra-chave checked é usada para controlar o estouro em operações aritméticas e conversões(overflow). Quando operações com constantes resultam em overflow, o próprio compilador acusa oerro. Quando os valores são calculados em runtime, devemos pensar em utilizar estes operadores.A unchecked faz o contrário, não controla o estouro. Este contexto é padrão e nele o resultado étruncado os bits de maior ordem que não se enquadram no tipo de destino.Sintaxe: class Test {//checked-expression: static readonly int x = 1000000; checked ( expression ) static readonly int y = 1000000;//unchecked-expression: static int F() { unchecked ( expression ) return checked(x * y); // Throws OverflowExcept } static int G() { return unchecked(x * y); // Returns -727379968 } static int H() { return x * y; // Depends on default } } 43
  • 44. Microsoft .NET C# I) Descrição da linguagem II) Estrutura de um programa C# III) Tipos de dados IV) Comandos V) Declarações de variáveis VI) Operadores VII) Arrays VIII) Boxing e UnboxingVII) Arrays •Array Unidimensional •Array Bidimensional •Array MultiDimensional •Array de arrays
  • 45. Arrays são objetos cuja a classe ancestral é System.Array, representa umconjunto de elementos que são acessados pelo seu índice no aray.Emoutras palavras, podemos dizer que são cadeias de objetos, algunsconhecem como vetor ou matriz unidimensional.Declarando array unidimensional: int[] arrayInt1 = new int[2]; int[] arrayInt2 = new int[2] { 10, 20 }; int[] arrayInt3 = new int[] { 10, 20 }; int[] arrayInt4 = { 10, 20 }; Exemplo matriz unidimensional: 45
  • 46. Arrays bidimensionais são as conhecidas matrizes, possuem linhas ecolunas.Declarando array bidimensional 2 x 3: int[,] matrizInt1 = new int[2, 3]; int[,] matrizInt2 = new int[2, 3] { { 10, 20, 30 }, { 70, 80, 90 } }; int[,] matrizInt3 = { { 10, 20, 30 }, { 70, 80, 90 } }; Exemplo matriz 4x4: 46
  • 47. Arrays multidimensionais são os arrays com mais de uma dimensão, ouseja, os bidimensionais também são multidimensionais. Entretanto seráexplicado aqui o array de três dimensões.Declarando array bidimensional 4 x 2 x 3:int[, ,] multiArray = new int[4, 2, 3]; Exemplo array 4x2x3: 47
  • 48. Conhecido também como Jagged Array.Declarando array de arrays: int[][, ,] arrayDeMultiArray = new int[2][,,] { multiArray,multiArray}; int value = arrayDeMultiArray[0][0, 0, 0]; int[][,] arrayDeBiArray = new int[2][,] { matrizInt1, new int[2, 2] { { 2, 4 }, { 5, 3 } } }; value = arrayDeBiArray[0][1, 0]; int[][] arrayDeArray = new int[2][] { arrayInt1, arrayInt2 }; value = arrayDeArray[0][1]; Exemplo array 4x2x3: 48
  • 49. Microsoft .NET C# I) Descrição da linguagem II) Estrutura de um programa C# III) Tipos de dados IV) Comandos V) Declarações de variáveis VI) Operadores VII) Arrays VIII) Boxing e UnboxingVIII) Boxing e Unboxing
  • 50. Boxing é o processo de conversão de tipo de valor um para o tipo de object ou paraqualquer tipo de interface implementada por este tipo de valor.Unboxing extrai o tipo de valor do objeto. int i = 123; object o = (object)i; // boxing o = 123; i = (int)o; // unboxing 50
  • 51. Fontes:http://www.mundoasp.net/array-c-sharp-array-vetor-array-matriz/http://msdn.microsoft.com/en-us/library/2yd9wwz4(VS.71).aspxhttp://www.maxi-pedia.com/what+is+heap+and+stack

×