Core foundation - Módulo 1




Pré-requisitos:
•Conhecimento da estrutura do .NET Framework
•Visual Studio 2005+ instalado

Conteúdo:
•Particularidades da linguagem
•Tipos de dados
•Comandos (Statements)
•Declaração de variáveis
•Operadores
•Arrays
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




I) Descrição da linguagem

         • Introdução a linguagem
         • Funcionalidades da linguagem
   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
   Programação baseada em componentes
     Propriedades
     Eventos
   Delegates
   Indexers
   Sobrecarga de operador
   Foreach
   Boxing/Unboxing
   Attributes
   Generics
   Reflection
   Remoting
   ....
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




II) Estrutura de um programa C#
    •Definição
    • Diagrama conceitual
    • Exemplo Hello World
    •Compilando um programa complexo
 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
Programa

Arquivo1.cs
              Namespace Z
Aquivo2.cs
              Classe X                 Classe Y
                                          Int DoIt();
               static void Main(){};     Int UndoIt();
ArquivoN.cs
   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
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 sem
ou com argumentos para que o programa seja iniciado.
Compilação para console:
csc HeloWorld.cs

Execução:
HelloWorld
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.exe

Compilando os dois arquivos com referência a DLL :

Csc /target:library Contador.cs        => Gera Contador.DLL
Csc /reference:Contador.dll Programa.cs => Gerar Programa.exe
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




III) 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
No .NET os tipos de dados são dividos da seguinte maneira:




Todos os tipos herdam de System.Object.




                                                             12
Por Valor                   Por referência
Variáveis contém             Valor                        Referência (ponteiro)

Armazenados na               Stack                        Heap
Na atribuição                Copia o valor                Copia a referência

Exemplo                      Int i = 20;                  String s1 = “Julian”;
                             Int j = i;                   String s2 = s1;


                                  i    20                     s1
                                  j    20                     s2                  julian




Link interessante: http://www.maxi-pedia.com/what+is+heap+and+stack
                                                                                           13
14
15
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
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




IV) Comandos ( Statements )
    •Comandos de seleção
    •Comandos de iteração ( laços)
    •Comandos de salto
    •Comandos de captura
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ário
int i = 10;

Console.WriteLine(i % 2 == 0 ? “Número Par” : “Número Impar”);




                                                                 19
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
Segue o mesmo estilo das linguagens JAVA, C e C++:
using System;                                          //Loop infinito

public 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
Este tipo de laço é utilzado para varrer arrays ou coleções. Não precisa de uma condição booleana para
parar o laço. Não precisa inicializar variáveis. Não precisamos nos preocupar com a forma de extração
do 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
Este tipo de laço é utilizado quando queremos que um bloco de código seja executado pelo menos uma
vez.

     using System;

     public class Program{
        static void Main()
            {
              int i = 45;
             do
             {
                Console.WriteLine(i);
                i++;
             } while (i<50);
             Console.ReadKey();
          }
     }




                                                                                                     23
Este tipo de laço é utilizado quando não sabemos o número de vezes que devemos executar um bloco
de 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
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
//GOTO CASE

using 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
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
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




V) 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
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
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
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
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
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
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
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




VI) 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
37
38
39
40
41
42
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 o
erro. 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
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 Unboxing




VII) Arrays
    •Array Unidimensional
    •Array Bidimensional
    •Array MultiDimensional
    •Array de arrays
Arrays são objetos cuja a classe ancestral é System.Array, representa um
conjunto de elementos que são acessados pelo seu índice no aray.Em
outras palavras, podemos dizer que são cadeias de objetos, alguns
conhecem 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
Arrays bidimensionais são as conhecidas matrizes, possuem linhas e
colunas.

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
Arrays multidimensionais são os arrays com mais de uma dimensão, ou
seja, 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
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
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 Unboxing




VIII) Boxing e Unboxing
Boxing é o processo de conversão de tipo de valor um para o tipo de object ou para
qualquer 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
Fontes:
http://www.mundoasp.net/array-c-sharp-array-vetor-array-matriz/
http://msdn.microsoft.com/en-us/library/2yd9wwz4(VS.71).aspx
http://www.maxi-pedia.com/what+is+heap+and+stack

Fundamentos do .NET Framework - Parte 2

  • 1.
    Core foundation -Módulo 1 Pré-requisitos: •Conhecimento da estrutura do .NET Framework •Visual Studio 2005+ instalado Conteú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) Arrays I) 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) Arrays II) 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.
    Programa Arquivo1.cs Namespace Z Aquivo2.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; classHello { static void Main() { Console.WriteLine("Hello World"); Console.Read(); } } Assim como no C,C++ e no Java, é necessário ter o método MAIN sem ou com argumentos para que o programa seja iniciado. Compilação para console: csc HeloWorld.cs Execução: HelloWorld
  • 10.
    Programa com doisarquivos 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.exe Compilando os dois arquivos com referência a DLL : Csc /target:library Contador.cs => Gera Contador.DLL Csc /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) Arrays III) 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 ostipos de dados são dividos da seguinte maneira: Todos os tipos herdam de System.Object. 12
  • 13.
    Por Valor Por referência Variáveis contém Valor Referência (ponteiro) Armazenados na Stack Heap Na atribuição Copia o valor Copia a referência Exemplo Int i = 20; String s1 = “Julian”; Int j = i; String s2 = s1; i 20 s1 j 20 s2 julian Link interessante: http://www.maxi-pedia.com/what+is+heap+and+stack 13
  • 14.
  • 15.
  • 16.
    Enumerados são tipospor 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.
  • 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) Arrays IV) 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ário int 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 mesmoestilo das linguagens JAVA, C e C++: using System; //Loop infinito public 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 delaço é utilzado para varrer arrays ou coleções. Não precisa de uma condição booleana para parar o laço. Não precisa inicializar variáveis. Não precisamos nos preocupar com a forma de extração do 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 delaço é utilizado quando queremos que um bloco de código seja executado pelo menos uma vez. 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 delaço é utilizado quando não sabemos o número de vezes que devemos executar um bloco de 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 CASE using System; publicclass 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 classProgram{ 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) Arrays V) 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 classProgram{ 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 voidInc(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 voidIncOutParams(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) Arrays VI) 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.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 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 o erro. 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 Unboxing VII) Arrays •Array Unidimensional •Array Bidimensional •Array MultiDimensional •Array de arrays
  • 45.
    Arrays são objetoscuja a classe ancestral é System.Array, representa um conjunto de elementos que são acessados pelo seu índice no aray.Em outras palavras, podemos dizer que são cadeias de objetos, alguns conhecem 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ãoas conhecidas matrizes, possuem linhas e colunas. 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ãoos arrays com mais de uma dimensão, ou seja, 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 comoJagged 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 Unboxing VIII) Boxing e Unboxing
  • 50.
    Boxing é oprocesso de conversão de tipo de valor um para o tipo de object ou para qualquer 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.