Apostila c#+ ASP

download Apostila c#+ ASP

of 207

Transcript of Apostila c#+ ASP

  • 7/31/2019 Apostila c#+ ASP

    1/207

    1

  • 7/31/2019 Apostila c#+ ASP

    2/207

    2

    Agenda

    Prximos

    Tpicos

    Objetivos do Treinamento

    Introduo ao Ambiente .NET

    A Linguagem de Programao C#

    Declarao de Variveis

    Estruturas de Controle

    Arrays

  • 7/31/2019 Apostila c#+ ASP

    3/207

    3

    Agenda

    Prximos

    Tpicos

    Objetivos do Treinamento

    Introduo ao Ambiente .NET

    A Linguagem de Programao C#

    Declarao de Variveis

    Estruturas de Controle

    Arrays

  • 7/31/2019 Apostila c#+ ASP

    4/207

    4

    Objetivos

    Prticas Execuo e acompanhamento de uma srie de atividades prticas para fixao

    dos conceitos e aprendizado da programao C#.

    Conceitos Aprofundar os conceitos e de programao atravs do uso das principais

    estruturas e da linguagem de programao C#.

    Ferramenta Aquisio de conhecimentos prticos e tcnicas de utilizao da ferramenta Visual

    Studio, suas principais opes, teclas de atalho e recursos.

    Debates e Experincias Promoo de debates e troca de experincias onde todos os participantes possam

    contribuir ativamente com experincias passadas e lies aprendidas

  • 7/31/2019 Apostila c#+ ASP

    5/207

    5

    Agenda

    Prximos

    Tpicos

    Objetivos do Treinamento

    Introduo ao Ambiente .NETA Linguagem de Programao C#

    Declarao de Variveis

    Estruturas de Controle

    Arrays

  • 7/31/2019 Apostila c#+ ASP

    6/207

    6

    Introduo ao Ambiente .NET

    Resolvendo a Sopa de Letras

    Vamos iniciar desvendando a sopa de letras que existe atualmente no ambientede programao .NET

    .NET: Plataforma nica de desenvolvimento Microsoft

    Visual Studio: a IDE (Integrated Development Environment, Ambiente deDesenvolvimento Integrado) mais conhecida da Microsoft. um editor de

    cdigos, com uma srie de recursos que iremos explorar. Em nosso treinamentoutilizaremos o Visual Studio 2008. Outros: Visual Studio 2003, Visual Studio 2005e agora o Visual Studio 2010.

    Framework: Conjunto de bibliotecas de Classes do qual a plataforma .NET seutiliza para a compilao, e do qual ns utilizaremos por conta de uma variedadede rotinas l existentes. Ns utilizaremos a verso do Framework 3.5. Outras:Framework 1.1, Framework 2.0 e agora o Framework 4.0

    C#, VB.NET, F#, C++: Principais linguagens de programao suportadas pelaplataforma .NET;

  • 7/31/2019 Apostila c#+ ASP

    7/207

    7

    Introduo ao Ambiente .NET

    Compilao e Execuo.NET

    Programas construdos em C# sob a plataforma .NET so programas duplamentecompilados.

    H um primeiro momento de compilao, onde o cdigo C# submetido ao quese chama de distribuio. Esta compilao submetida ao Frameworknovamente. Ou seja, na mquina onde o programa COMPILADO necessria apresena do Framework.

    Esta primeira compilao feita em nossas mquinas (de desenvolvedores) eneste momento gerado um cdigo intermedirio, normalmente conhecido porbytecode, que a Microsoft batizou de MSIL (Microsoft Intermediate Language).

    Esta pr-compilao pode entregar um Arquivo Executvel EXE (para AplicaesConsole e WindosApplication por exemplo), ou um Arquivo de Biblioteca DLL (para

    Aplicaes de Classes), ou um conjunto de Pginas ASPX (para WebSites por

    exemplo)

    Este cdigo, primeiramente compilado, ser ento promovido a uma mquina deproduo (na implantao) onde ele ser novamente compilado na primeiraexecuo deste cdigo. Esta execuo submetida ao Framework novamente.Ou seja, na mquina onde o programa EXECUTADO tambm necessria apresena do Framework.

  • 7/31/2019 Apostila c#+ ASP

    8/207

    8

    Introduo ao Ambiente .NET

    Framework

    O Framework, como citado anteriormente, uma imensa Biblioteca de Classes,que se faz necessria para compilao e execuo de nossos programas.

    Porm ela tambm nos ser muito til, uma vez que nos entrega um conjuntovariado de rotinas. Desde rotinas que envolvem a programao mundana, comoConverses, Formataes de Texto, Tratamento de Datas e Valores, Envio eRecebimento de Emails, Conexes de Banco de Dados, at rotinas mais

    sofisticadas e requintadas como Utilizao de Threads, Entradas e Sadas deArquivos (I/O), Renderizaes Grficas, Rotinas de Segurana, Serializao deObjetos e muito mais.

    O Framework que utilizamos, o 3.5, foi construdo a partir do 2.0 e traz uma sriede novas possibilidades linguagem C#.

  • 7/31/2019 Apostila c#+ ASP

    9/207

    9

    Introduo ao Ambiente .NET

    Visual Studio 2008

    Para criao de nossos projetos iniciais, estaremos utilizando um tipo de projetodo Visual Studio, que nos possibilitar a programao do C#, sem nospreocuparmos como elementos grficos e visuais. Pelo menos neste momento.

    O tipo de projeto que trabalharemos um projeto de Console Application.

    Para criar um primeiro projeto.

    Abra o Visual Studio 2008

    Selecione o Menu File New Project

    Ao lado esquerdo, selecione a opo Visual C#

    Ao lado direito, selecione a opo Console Application.

    Indique o nome do projeto como PrimeiraAplicacao

  • 7/31/2019 Apostila c#+ ASP

    10/207

    10

    Introduo ao Ambiente .NET

    Visual Studio 2008

    Criando um primeiro projeto.

  • 7/31/2019 Apostila c#+ ASP

    11/207

    11

    Introduo ao Ambiente .NET

    Visual Studio 2008

    A caixa Solution Explorer.

    A caixa Solution Explorer, que pode ser acessada do menu View, normalmenteficar ao seu lado direito.

    um utilitrio que permite que seja visualizada toda o conjunto de arquivos deuma soluo, bem como todos os assemblies referenciados.

    Ao criarmos a nossa soluo, o Visual Studio automaticamente incorpora algunsassemblies, bem como cria um primeiro arquivo de cdigo chamado Program.cs

  • 7/31/2019 Apostila c#+ ASP

    12/207

    12

    Agenda

    Prximos

    Tpicos

    Objetivos do Treinamento

    Introduo ao Ambiente .NET

    A Linguagem de Programao C#

    Declarao de Variveis

    Estruturas de Controle

    Arrays

  • 7/31/2019 Apostila c#+ ASP

    13/207

    13

    A Linguagem de Programao C#

    A linguagem C#

    A codificao C# exige que todo a lgica da programao esteja contida em umadefinio de tipo, sendo este tipo uma classe, uma estrutura, uma interface ou umenumerador.

    Em C# no possvel criar funes globais ou variveis globais, como em muitaslinguagens de programao.

    C# uma linguagem de programao case-sensitive, ou seja, Cliente diferentede cliente, e WriteLine diferente de Writeline.

    Palavras-chave em C# so sempre escritas em letras minsculas, como porexemplo, class, private, public, interface, if, while, etc...

    Tipos e Namespaces so sempre escritas com a primeira em maiscula, asdemais em minsculas, e palavras significativas comeando em maiscula, como

    por exemplo, System, Console, SqlConnection, etc...

    Entenderemos as palavras-chave, os tipos e as namespaces aos poucos.

  • 7/31/2019 Apostila c#+ ASP

    14/207

    14

    A Linguagem de Programao C#

    O arquivo Program.cs

    O arquivo Program.cs adicionado automaticamente ao projeto, tem a seguinteestrutura:

    using System;using System.Collections.Generic;using System.Linq;using System.Text;

    namespace PrimeiraAplicacao{

    class Program{

    static void Main(string[] args){}

    }}

    Vamos entender os seus blocos de cdigo.

  • 7/31/2019 Apostila c#+ ASP

    15/207

    15

    A Linguagem de Programao C#

    O arquivo Program.cs - usings

    Existe um bloco inicial que indica o uso de algumas bibliotecas, como System,System.Linq e System.Text.

    O fato delas estarem relacionadas no indica necessariamente que estejam sendoutilizadas, porm o Visual Studio j as adiciona naturalmente, entendendo queprovavelmente voc precisar delas. A medida que o treinamento avanar, iremosadicionar novas bibliotecas para consumo.

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    namespace PrimeiraAplicacao{

    class Program{

    static void Main(string[] args){}

    }}

  • 7/31/2019 Apostila c#+ ASP

    16/207

    16

    A Linguagem de Programao C#

    O arquivo Program.cs - namespace A namespace um container de classes, ou seja, um depsito lgico por onde

    poderemos encontrar nossas classes no futuro. A namespace PrimeiraAplicacaofoi criada a partir do nome do projeto.

    Num projeto, podem existir dezenas de namespaces, de forma a separarlogicamente classes de cdigo correlatos.

    Uma mesma namespace pode estar contida em vrios arquivos. Por exemplo o

    arquivo Program.cs coloca cdigo na namespace PrimeiraAplicacao, nem comoo arquivo Program2.cs tambm pode colocar cdigo neste mesma namespace.

    using System;using System.Collections.Generic;using System.Linq;using System.Text;

    namespace PrimeiraAplicacao{class Program{

    static void Main(string[] args){}

    }

    }

  • 7/31/2019 Apostila c#+ ASP

    17/207

    17

    A Linguagem de Programao C#

    O arquivo Program.cs - class

    Como dito anteriormente, todo o cdigo C# estar representado dentro de umtipo. Seja uma classe, interface, enumerador ou estrutura.

    Tipicamente nossos cdigos sero colocados dentro de classes, e o Visual Studioj adiciona automaticamente a classe Program, para que possamos iniciar anossa codificao.

    Em breve aprofundaremos um pouco os aspectos inicias da Orientao a Objetos.using System;using System.Collections.Generic;using System.Linq;using System.Text;

    namespace PrimeiraAplicacao{

    class Program{

    static void Main(string[] args){}

    }}

  • 7/31/2019 Apostila c#+ ASP

    18/207

    18

    A Linguagem de Programao C#

    O arquivo Program.cs - Main

    Para a nossa class Program foi adicionado automaticamente um mtodo (rotina)Main. Este mtodo um ponto de entrada para a execuo de nosso programa.

    Por enquanto no nos interessa abordar as palavras-chave static void e oargumento string[] args.

    Por momento, vamos assumir que precisamos deste mtodo para iniciarmos a

    execuo de nosso programa.using System;using System.Collections.Generic;using System.Linq;using System.Text;

    namespace PrimeiraAplicacao{

    class Program{

    static void Main(string[] args)

    {

    }}

    }

  • 7/31/2019 Apostila c#+ ASP

    19/207

    19

    A Linguagem de Programao C#

    Escrevendo no Console

    Para apresentarmos alguma informao na Console, podemos utilizar o comandoConsole.WriteLine.

    using System;using System.Collections.Generic;using System.Linq;using System.Text;

    namespace PrimeiraAplicacao{

    class Program{

    static void Main(string[] args){

    Console.WriteLine("Meu primeiro programa!");}

    }

    }

    Da forma como nosso programa foi construdo, ele funcionar normalmente,imprimindo um texto no Console, porm no ser possvel ler tal texto, pois oConsole ser aberto, ser ento impressa a mensagem, e o Console serfechado.

  • 7/31/2019 Apostila c#+ ASP

    20/207

    20

    A Linguagem de Programao C#

    Executando a Aplicao

    Opes de Execuo

    Menu Debug Start Debugging (F5) Executa o programa com possibilidade de depurao, que veremos mais adiante.

    Menu Debug Start Without Debugging (Ctrl + F5) Executa o programa sem possibilidade de depurao, que veremos mais adiante.

    Para executar nossa aplicao, vamos pressionar F5.

    Veja que no h tempo de verificarmos o resultado da execuo.

  • 7/31/2019 Apostila c#+ ASP

    21/207

    21

    A Linguagem de Programao C#

    Segurando o Console

    Para que possamos visualizar o resultado de nossa execuo antes dofechamento da Console, vamos usar de um macete.

    Vamos adicionar um comando ReadKey, para que seja aguardada a digitao deuma tecla qualquer.

    using System;using System.Collections.Generic;using System.Linq;using System.Text;

    namespace PrimeiraAplicacao{

    class Program{

    static void Main(string[] args)

    { Console.WriteLine("Meu primeiro programa!");

    Console.ReadKey();}

    }}

  • 7/31/2019 Apostila c#+ ASP

    22/207

    22

    A Linguagem de Programao C#

    Primeiro Programa Executado

    Para que possamos visualizar o resultado de nossa execuo antes dofechamento da Console, vamos usar de um macete.

  • 7/31/2019 Apostila c#+ ASP

    23/207

    23

    A Linguagem de Programao C#

    Adicionando Comentrios

    Existem algumas formas de adicionarmos comentrios ao nosso cdigo. Ou utilizamos um // para comentrios de uma nica linha. Ou utilizamos um /* */ para comentrios um mltiplas linhas.

    using System;using System.Collections.Generic;using System.Linq;using System.Text;

    namespace PrimeiraAplicacao{class Program{

    static void Main(string[] args){

    //Exibir mensagem na ConsoleConsole.WriteLine("Meu primeiro programa!");

    /*Aguardar que uma

    tecla seja pressionada

    */

    Console.ReadKey();}

    }}

  • 7/31/2019 Apostila c#+ ASP

    24/207

    24

    A Linguagem de Programao C#

    Dvidas

    Anotaes

  • 7/31/2019 Apostila c#+ ASP

    25/207

    25

    Agenda

    Prximos

    Tpicos

    Objetivos do Treinamento

    Introduo ao Ambiente .NET

    A Linguagem de Programao C#

    Declarao de Variveis

    Estruturas de Controle

    Arrays

  • 7/31/2019 Apostila c#+ ASP

    26/207

    26

    Declarao de Variveis

    Tipos de Dados Numricos

    Seguem os principais tipos de dados da linguagem C#.

    Tipo de Sistema Abreviao Descrio Variao

    System.Byte byte Nmeros inteiros de 8bits sem sinal 0 a 255

    System.Int16 short Nmeros inteiros de 16bits com sinal -32.768 a 32.767

    System.Int32 int Nmeros inteiros de 32bits com sinal -2.147.483.648 a 2.147.483.647

    System.Int64 long Nmeros inteiros de 64bits com sinal -9.223.372.036.854.775.808 a9.223.372.036.854.775.807

    System.Sbyte sbyte Nmeros inteiros de 8bits com sinal -128 a 127

    System.UInt16 ushort Nmeros inteiros de 16bits sem sinal 0 a 65.535

    System.UInt32 uint Nmeros inteiros de 32bits sem sinal 0 a 4.294.967.295

    System.UInt64 ulong Nmeros inteiros de 64bits sem sinal 0 a 18.446.744.073.709.551.615

  • 7/31/2019 Apostila c#+ ASP

    27/207

    27

    Declarao de Variveis

    Tipos de Dados Reais

    Seguem os principais tipos de dados da linguagem C#.

    Tipo de Sistema Abreviao Descrio Variao

    System.Single float Nmeros de ponto flutuante de 32bits +/- 1,5 x 10E-45 a +/- 3,4 x10E38

    System.Double double Nmeros de ponto flutuante de 64bits +/- 5,0 x 10E-324 a +/- 1,7 x10E308

    System.Decimal decimal Nmeros de ponto flutuante de 96bits +/- 1,0 x 10E-28 a +/- 7,9 x10E28

    Tipos de Dado Lgico

    Seguem os principais tipos de dados da linguagem C#.

    Tipo de Sistema Abreviao Descrio Variao

    System.Boolean bool Tipo booleano (Verdadeiro ou Falso) true ou false

  • 7/31/2019 Apostila c#+ ASP

    28/207

    28

    Declarao de Variveis

    Tipos de Dados Caracter

    Seguem os principais tipos de dados da linguagem C#.

    Tipo de Sistema Abreviao Descrio Variao

    System.Char char Um nico caracter unicode de 16bits

    System.String string Cadeia (conjunto) de caracteresunicode

    Tipos de Dado Data/Hora

    Seguem os principais tipos de dados da linguagem C#.

    Tipo de Sistema Abreviao Descrio Variao

    System.DateTime DateTime Tipo data e hora 01/01/0001 00:00:00 a31/12/9999 23:59:59

  • 7/31/2019 Apostila c#+ ASP

    29/207

    29

    Declarao de Variveis

    Declarao

    Para a declarao normalmente utilizaremos os tipos abreviados.

    Sintaxe: ;

    Exemplos:

    static void Main(string[] args){

    int numeroInteiro;

    string nomeCliente;

    }

    Regras para a declarao de variveis:O nome deve iniciar com letra ou _;

    No so permitidos espaos no nome;No so permitidos caracteres de pontuao;Podem ser utilizados nmeros;No podem ser utilizadas palavras reservadas como nome;O nome deve ser nico no contexto;Evitar nomes como a, b, x, z que no so significativos;

  • 7/31/2019 Apostila c#+ ASP

    30/207

    30

    Declarao de Variveis

    Atribuio

    Para a atribuio de valores nas variveis iremos utilizar a seguinte sintaxe.

    Sintaxe: = valor;

    Exemplos:

    static void Main(string[] args){

    string nomeCliente;

    nomeCliente = "Pedro Ferreira";

    Console.WriteLine(Valor Varivel: + nomeCliente);

    }

    Declarao e Inicializao:Podemos declarar e atribuir numa nica instruo

    static void Main(string[] args){

    string nomeCliente = Pedro Ferreira;

    }

  • 7/31/2019 Apostila c#+ ASP

    31/207

    31

    Declarao de Variveis

    Atribuio

    Podemos atribuir valor a N variveis numa nica instruo.

    Sintaxe: = = = ... = valor;

    Exemplos:

    static void Main(string[] args){

    int numero1;int numero2;int numero3;

    numero1 = numero2 = numero3 = 10;

    Console.WriteLine(Valores: + numero1 + , + numero2);

    }

  • 7/31/2019 Apostila c#+ ASP

    32/207

    32

    Declarao de Variveis

    Converses

    Em alguns casos ser obrigatrio a converso de tipos para atribuio de valoresentre variveis.

    Exemplos:static void Main(string[] args){

    short numeroShort = 10;int numeroInt = 90;

    numeroInt = numeroShort;

    }

    Esta converso (implcita) ocorrer sem problemas uma vez que um valor do tiposhort cabe dentro de uma varivel do tipo int.

    static void Main(string[] args){

    short numeroShort = 10;int numeroInt = 90;

    numeroShort = numeroInt;

    }

    Esta converso implica em um erro de compilao uma vez que um valor do tipoint no cabe dentro de uma varivel do tipo short. Mesmo que o valor 90 caibanum short, o C# ir criticar a atribuio.

  • 7/31/2019 Apostila c#+ ASP

    33/207

    33

    Declarao de Variveis

    Converses

    Para efetuar converses entre tipos similares.

    Sintaxe:varivel = (tipo)valor;

    Tais converses somente so possveis entre tipos da mesma famlia. Porexemplo, de short para int, de int para long, de double para decimal, de int paradouble, mas no de string para int

    Exemplos:

    static void Main(string[] args){

    short numeroShort = 10;int numeroInt = 90;

    numeroShort = (short)numeroInt;

    Console.WriteLine(Nmero Short: + numeroShort);}

  • 7/31/2019 Apostila c#+ ASP

    34/207

    34

    Declarao de Variveis

    Converso Nmero para String

    Para efetuar converses de valores numricos para string .

    Sintaxe:varivel = valor.ToString();

    Exemplos:

    static void Main(string[] args)

    {short numeroShort = 10;string numeroTexto;

    numeroTexto = numeroShort.ToString();

    Console.WriteLine(Nmero em Texto: + numeroTexto);}

    l d

  • 7/31/2019 Apostila c#+ ASP

    35/207

    35

    Declarao de Variveis

    Converso Data para String

    Para efetuar converses de valores data para string .

    Sintaxe:varivel = valor.ToString(formato);

    Exemplos:

    static void Main(string[] args)

    {DateTime data = DateTime.Now;string dataFormatada;string dataHoraFormatada;

    dataFormatada = data.ToString(dd/MM/yyyy);dataHoraFormatada = data.ToString(dd/MM/yyyy HH:mm);

    Console.WriteLine(Data no formatada: + data);

    Console.WriteLine(Data formatada: + dataFormatada);Console.WriteLine(Data/Hora formatada: + dataHoraFormatada);

    Console.ReadKey();}

    l d i i

  • 7/31/2019 Apostila c#+ ASP

    36/207

    36

    Declarao de Variveis

    Converso String para Nmeros

    Para efetuar converses de valores string para valores numricos.

    Sintaxe:varivel = Convert.FORMATO(texto);

    Exemplos:

    static void Main(string[] args)

    {string valorTexto = "20";

    Console.WriteLine("Valor: " + Convert.ToInt32(valorTexto));

    Console.ReadKey();}

    As opes mais comuns da classe Convert so.Convert.ToInt16Convert.ToInt32Convert.ToInt64Convert.ToSingleConvert.ToDecimalConvert.ToDoubleConvert.ToDateTime

    D l d V i i

  • 7/31/2019 Apostila c#+ ASP

    37/207

    37

    Dvidas

    Anotaes

    Declarao de Variveis

    A d

  • 7/31/2019 Apostila c#+ ASP

    38/207

    38

    Agenda

    Prximos

    Tpicos

    Objetivos do Treinamento

    Introduo ao Ambiente .NET

    A Linguagem de Programao C#

    Declarao de Variveis

    Estruturas de Controle

    Arrays

    E t t d C t l

  • 7/31/2019 Apostila c#+ ASP

    39/207

    39

    Estruturas de Controle

    Operadores Aritmticos Chamamos de operadores aritmticos o conjunto de smbolos que representa as

    operaes bsicas da matemtica.

    Operador Descrio Exemplo

    + Adio 5 + 6 = 11

    -Subtrao 5 2 = 3

    * Multiplicao 6 * 3 = 18

    / Diviso 10 / 2 = 5

    % Resto da Diviso 10 % 3 = 1

    Math.Pow(x, y) X elevado potncia y Math.Pow(2, 4) = 16

    Math.Sqrt(x) Raiz quadrada de x Math.Sqrt(16) = 4

    E t t d C t l

  • 7/31/2019 Apostila c#+ ASP

    40/207

    40

    Estruturas de Controle

    Biblioteca Matemtica Existe, no framework uma biblioteca com uma srie de operaes matemticas.

    Vejamos algumas delas.

    Operador Descrio Exemplo

    Math.Pow(x, y) X elevado potncia y Math.Pow(2, 4) = 16

    Math.Sqrt(x) Raiz quadrada de x Math.Sqrt(16) = 4

    Math.Abs(x) Valor absoluto Math.Abs(-10) = 10

    res = Math(x, y, out div) Resto e diviso resto = Math(15, 6, out divid)resto = 3 e divid = 2

    Math.Round(x) Arredondamento Math.Round(5.111) = 5Math.Round(5.999) = 6

    Math.Round(x, dec) Arredondamento com casasdecimais

    Math.Round(5.344, 2) = 5.34Math.Round(5.346, 2) = 5.35

    Math.Truncate(x) Truncamento Math.Truncate(5.111) = 5Math.Truncate(5.999) = 5

    E t t d C t l

  • 7/31/2019 Apostila c#+ ASP

    41/207

    41

    Estruturas de Controle

    Operaes Matemticas

    A resoluo de expresses aritmticas seguem a seguinte hierarquia de clculos:

    Parnteses mais externos;Potncia e Raiz Quadrada;Multiplicao, Diviso, mod e div;Adio e Subtrao

    Para operaes de mesma prioridade, segue-se a ordem especificada, daesquerda para a direita;

    Para priorizar determinados clculos usa-se o parnteses

    Estr t ras de Controle

  • 7/31/2019 Apostila c#+ ASP

    42/207

    42

    Estruturas de Controle

    Operadores Relacionais

    Utilizamos operadores relacionais para comparar dois valores de um mesmo tipoprimitivo.

    Tais valores podem ser: constantes, variveis, expresses aritmticas. O resultado obtido da comparao sempre um valor lgico: verdade ou falso

    Operador Descrio Exemplo

    = Igual a 2 = 2

    > Maior que 5 > 4

    < Menor que 3 < 7

    >= Maior ou igual a 5 >= 2

  • 7/31/2019 Apostila c#+ ASP

    43/207

    43

    Estruturas de Controle

    Prioridades

    Operadores Aritmticos NO E, OU, OU EXCLUSIVO segue-se a ordem especificada, da esquerda para a

    direita;

    Operador Operador C# DescrioNO ! Inverte o estado lgico de uma preposio

    E & Retornar verdade somente se as duas condies forem verdade

    OU | Retornar verdade se pelo menos uma das condies for verdade

    OU EXCLUSIVO ^ Retornar verdade se somente uma das condies for verdade

    Operadores Lgicos

    So conectores para a formao de novas preposies lgicas compostas a partirde outras preposies lgicas simples.

    Temos quatro conectores: NO, E, OU, OU EXCLUSIVO

    Estruturas de Controle

  • 7/31/2019 Apostila c#+ ASP

    44/207

    44

    Estruturas de Controle

    Operadores Lgicos

    Exemplos:static void Main(string[] args){

    bool result;

    result = 6 > 7;Console.WriteLine(Resultado: + result);

    result = 6 > 7 & 10 > 5;Console.WriteLine(Resultado: + result);

    Console.ReadKey();}

    Estruturas de Controle

  • 7/31/2019 Apostila c#+ ASP

    45/207

    45

    Estruturas de Controle

    Operador Operador C# DescrioE Condicional && Retornar falso se a primeira condio for falso, ou verdade

    somente se as duas condies forem verdade

    OU Condicional || Retornar verdade se a primeira condio for verdade, ou verdadese pelo menos uma das condies for verdade

    Operadores Lgicos Condicionais

    Os operadores lgicos E e OU, se usados como no exemplo anterior podemacarretar testes lgicos desnecessrios.

    Por exemplo, na expresso lgica 6 > 7 & 10 > 5, a resoluo seria como:6 > 7 & 10 > 5False & TrueFalse

    Nesta situao, em que o primeiro termo False, nem seria necessrio compararo segundo termo, pois False E Qualquer Condio sempre False. O mesmoocorre com o OU pois True OU Qualquer Condio sempre True.

    No C# podemos utilizar operadores lgicos condicionais, para economizar testesdesnecessrios

    Estruturas de Controle

  • 7/31/2019 Apostila c#+ ASP

    46/207

    46

    Estruturas de Controle

    Coletando Entradas do Usurio

    Exemplos:static void Main(string[] args){

    Console.WriteLine("Digite um nmero");

    string valorDigitado = Console.ReadLine();

    Console.WriteLine("O valor digitado foi: " + valorDigitado);

    Console.ReadKey();}

    Estruturas de Controle

  • 7/31/2019 Apostila c#+ ASP

    47/207

    47

    Estruturas de Controle

    Passos para Execuo dos Exerccios Para cada exerccio que praticarmos, vamos seguir a sequncia de passos.

    Passo 1) No menu Project selecione a opo Add Class

    Passo 2) Na caixa de dilogo apresenta informe o nome da classe a seradicionada. Procure usar nomes que possibilitem o estudo posterior, como onmero do exerccio.

    Estruturas de Controle

  • 7/31/2019 Apostila c#+ ASP

    48/207

    48

    Estruturas de Controle

    Passos para Execuo dos Exerccios

    Passo 3) Ser adicionado um novo arquivo com o nome informado no passo 2,com a seguinte codificao inicial

    namespace PrimeiraAplicacao{

    class Exercicio_3_1{}

    }

    Vamos alterar o cdigo adicionando um ponto de entrada (Main) em nossa classe.

    namespace PrimeiraAplicacao{

    class Exercicio_3_1{

    static void Main(string[] args)

    {

    }}

    }

    Estruturas de Controle

  • 7/31/2019 Apostila c#+ ASP

    49/207

    49

    Estruturas de Controle

    Passos para Execuo dos Exerccios

    Passo 4) Como agora temos dois pontos de entrada em nosso projeto,precisamos indicar por qual deles iniciar. Para isto, no Menu Project, selecionea opo PrimeiraAplicacao Properties

    Na caixa de opo Startup object, selecione a classe que deseja ser a classeinicial de execuo.

    Operadores Aritmticos e Operadores Lgicos

  • 7/31/2019 Apostila c#+ ASP

    50/207

    50

    Operadores Aritmticos e Operadores Lgicos

    Dvidas

    Anotaes

    Operadores Aritmticos e Operadores Lgicos

  • 7/31/2019 Apostila c#+ ASP

    51/207

    51

    Operadores Aritmticos e Operadores Lgicos

    Exerccio 1Construa os seguintes programas

    Exerccio 1.1

    Ler 2 valores inteiros para as variveis A e B e efetuar a troca dos valores de forma que a

    varivel A passe a possuir o valor da varivel B e a varivel B passe a possuir o valor da varivel

    A. Apresentar os valores trocados.

    Exerccio 1.2

    Ler uma temperatura em graus Celsius e apresent-la convertida em Fahrenheit a frmula de

    converso F = (C * 1,8) + 32, sendo F a temperatura em Fahrenheit e C a temperatura em

    Celsius.

    Operadores Aritmticos e Operadores Lgicos

  • 7/31/2019 Apostila c#+ ASP

    52/207

    52

    Operadores Aritmticos e Operadores Lgicos

    Exerccio 1 - ContinuaoConstrua os seguintes programas

    Exerccio 1.3

    Fazer um algoritmo que efetue o clculo da quantidade de litros de combustvel gastos em

    uma viagem, utilizando um automvel que faz 12 km por litro. Para obter o clculo, o usurio

    deve fornecer o tempo gasto (tempo) e a velocidade mdia (velocidade) durante a viagem.Desta frmula ser possvel obter a distncia percorrida com a frmula (distncia tempo *

    velocidade). Possuindo o valor da distncia , basta calcular a quantidade de litros de

    combustvel utilizada na viagem utilizando a frmula (litros = distncia/12). Ao final, o

    algoritmo deve apresentar os valores da velocidade mdia (velocidade), tempo gasto na

    viagem (tempo), a distncia percorrida (distncia) e a quantidade de litros (litros) utilizados na

    viagem

    Estruturas de Controle

  • 7/31/2019 Apostila c#+ ASP

    53/207

    53

    Estruturas de Controle

    Estrutura de Deciso Simples

    Uma estrutura de deciso permite a escolha de um grupo de aes (bloco) a serexecutado quando determinadas condies, representadas por expresseslgicas ou relacionais, so ou no so satisfeitas.

    Quando precisamos testar uma certa condio antes de executar uma ao,usamos uma deciso simples.

    Exemplo:

    float nota1 = 9;float nota2 = 6;float media = (nota1 + nota2) / 2;if (media >= 5){

    Console.WriteLine(Aluno aprovado);

    }

    Estruturas de Controle

  • 7/31/2019 Apostila c#+ ASP

    54/207

    54

    Estruturas de Controle

    Estrutura de Deciso Composta

    Quando existirem situaes em que duas alternativas dependem de uma mesmacondio, uma da condio verdadeira, e outra da condio falsa, usamos aestrutura de deciso composta.

    Exemplo:

    float nota1 = 9;float nota2 = 6;float media = (nota1 + nota2) / 2;if (media >= 5){

    Console.WriteLine(Aluno aprovado);}else{

    Console.WriteLine(Aluno reprovado);}

    Estruturas de Controle

  • 7/31/2019 Apostila c#+ ASP

    55/207

    55

    Estruturas de Controle

    Estrutura de Deciso Composta

    Quando existirem situaes em que deseja-se testar N condies lgicas, teremosduas opes.

    else ifswitch

    Exemplo de else if:float nota1 = 9;float nota2 = 6;float media = (nota1 + nota2) / 2;if (media >= 7){

    Console.WriteLine(Aluno aprovado);}else if (media >= 5)

    {Console.WriteLine(Aluno em recuperao);

    }else{

    Console.WriteLine(Aluno reprovado);}

    Estruturas de Controle

  • 7/31/2019 Apostila c#+ ASP

    56/207

    56

    Estruturas de Controle

    Estrutura de Deciso Composta

    Veremos agora o uso do switch

    Exemplo de switch:

    string uf;uf = RR;

    switch (uf)

    { case SP:Console.WriteLine(So Paulo);break;

    case RJ:Console.WriteLine(Rio de Janeiro);break;

    case BA:Console.WriteLine(Bahia);

    break;default:

    Console.WriteLine(Outros estados);break;

    }

    Estruturas de Controle

  • 7/31/2019 Apostila c#+ ASP

    57/207

    57

    Estruturas de Controle

    Estrutura de Deciso Composta

    Veremos agora o uso do switch

    Outro Exemplo de switch:

    string cidade;uf = Sorocaba;

    switch (cidade)

    { case Campinas:case Itu:case Sorocaba:case Jau:

    Console.WriteLine(Estado de So Paulo);break;

    case Nova Iguau:case Olaria:

    case Resende:case Itatiba:

    Console.WriteLine(Estado do Rio de Janeiro);break;

    default:Console.WriteLine(Outro estado);break;

    }

  • 7/31/2019 Apostila c#+ ASP

    58/207

    Estruturas de Deciso

  • 7/31/2019 Apostila c#+ ASP

    59/207

    59

    Exerccio 2Construa os seguintes programas

    Exerccio 2.1

    Construa um algoritmo que calcule os juros de um determinado produto. Se o produto for

    pago em 30 dias (8%), em 60 (15%) e em 90 (21%). O programa deve fazer a leitura do nome

    do produto, do valor e da condio do pagamento e depois fazer o clculo.

    Exerccio 2.2

    Desenvolva um algoritmo, que a partir da altura e do sexo de uma pessoa, calcule o seu peso

    ideal, utilizando as seguintes frmulas:

    para homens: (72,7 * altura) 58

    para mulheres (62,1 * altura) 44,7.

    Exerccio 2.3

    Desenvolva um algoritmo, que leia o ano de nascimento de uma pessoa, calcule e mostre sua

    idade, bem como se esta pessoa j possui idade para votar (16 anos ou mais) e se j possui

    idade para conseguir a Carteira de Habilitao (18 anos ou mais).

    Estruturas de Controle

  • 7/31/2019 Apostila c#+ ASP

    60/207

    60

    Repetio com Teste no Incio Estrutura de controle do fluxo de execuo que permite repetir diversas vezes um

    mesmo trecho do algoritmo, porm sempre verificando antes de cada execuose permitido executar este trecho.

    Sintaxe:while (condio de entrada){

    instruo 1;instruo 2;

    ......instruo N;

    }

    Exemplo:int a;a = 1;

    while (a

  • 7/31/2019 Apostila c#+ ASP

    61/207

    61

    Repetio com Teste no Final Estrutura de controle do fluxo de execuo que permite repetir diversas vezes um

    mesmo trecho do algoritmo, porm sempre verificando depois de cada execuose permitido executar novamente o trecho.

    Sintaxe:do{

    instruo 1;instruo 2;

    ...instruo N;}while (condio de trmino)

    Exemplo:int a;a = 1;

    do{

    Console.WriteLine(Iterao: + a);a++;

    }while (a

  • 7/31/2019 Apostila c#+ ASP

    62/207

    62

    Repetio com Varivel de Controle Estrutura de controle do fluxo de execuo que permite repetir um nmero definido

    de vezes um mesmo trecho do algoritmo, pois ela possui limites fixos.

    Sintaxe:for (contador = Valor Inicial; condio de trmino; incremento){

    instruo 1;instruo 2;...instruo N;

    }

    Onde:Contador:varivel de controle

    Valor Inicial:

    Valor inicial da varivel contador

    Valor Final:Valor final da varivel contador, ou seja, a condio de trmino

    Incremento:Valor do incremento da varivel contador

    Estruturas de Controle

  • 7/31/2019 Apostila c#+ ASP

    63/207

    63

    Repetio com Varivel de Controle Estrutura de controle do fluxo de execuo que permite repetir um nmero definido

    de vezes um mesmo trecho do algoritmo, pois ela possui limites fixos.

    Exemplo 1:for (int i = 0; i = 0; i--){

    Console.WriteLine(Iterao: + a);}

    Exemplo 3:for (int i = 0; i

  • 7/31/2019 Apostila c#+ ASP

    64/207

    64

    p

    Dvidas

    Anotaes

    Estruturas de Repetio

  • 7/31/2019 Apostila c#+ ASP

    65/207

    65

    Exerccio 3Construa os seguintes programas

    Exerccio 3.1

    A converso de graus Fahrenheit para centgrados obtida pela frmula

    C = 5 * (F 32) / 9. Escreva um algoritmo que calcule e imprima uma tabela de graus

    centgrados em funo de graus Fahrenheit que variem de 50 a 150de 1 em 1. Exemplo:

    50F = 10C

    51F = 10,55C

    52F = 11,1C.

    Exerccio 3.4

    Escreva um algoritmo que determine o valor de S, em que:S = (1 / 1) (2 / 4) + (3 / 9) (4 / 16) + (5 / 25) (6 /36) + ...... (10 / 100).

    Agenda

  • 7/31/2019 Apostila c#+ ASP

    66/207

    66

    Prximos

    Tpicos

    Objetivos do Treinamento

    Introduo ao Ambiente .NET

    A Linguagem de Programao C#

    Declarao de Variveis

    Estruturas de Controle

    Arrays

    Arrays

  • 7/31/2019 Apostila c#+ ASP

    67/207

    67

    Manipulao de Arrays Um array um conjunto de itens de dados de um mesmo tipo, acessado atravs

    de um ndice numrico.

    Sintaxe:tipo[] identificador = new tipo[tamanho];

    Exemplo:int[] numerosInteiros = new int[4];

    Para atribuir valores s posies do array, utilizaremos a seguinte sintaxe.

    Sintaxe:identificador[posio] = valor;

    Exemplo:int[0] = 95; //primeira posio do arrayint[1] = 36; //segunda posio do array

    int[2] = 48; //terceira posio do array

    Arrays

  • 7/31/2019 Apostila c#+ ASP

    68/207

    68

    Manipulao de Arrays A inicializao pode ser feita junto sua declarao. Desta forma no

    necessrio especificar o tamanho do array, uma vez que os prprios itensinicializados j determinam o seu tamanho.

    Sintaxe:tipo[] identificador = new tipo[] { valor1, valor2, valor3, ... };

    Exemplo:string[] nomes = new string[] { Pedro, Joo, Z, Maria };

    //Imprimindo o terceiro nomeConsole.WriteLine(Nome da terceira posio: + nomes[2]);Console.ReadKey();

    Arrays

  • 7/31/2019 Apostila c#+ ASP

    69/207

    69

    Repetio com Array Estrutura de controle do fluxo de execuo que permite repetir um nmero definido

    de vezes, a partir de um array limites fixos.

    Sintaxe:foreach (tipo identificador in array){

    instruo 1;instruo 2;...instruo N;

    }

    Exemplo:string[] nomes = new string[] { Pedro, Joo, Z, Maria };

    foreach (string item in nomes){

    Console.WriteLine(Nome: + item);

    }Console.ReadKey();

    Arrays

  • 7/31/2019 Apostila c#+ ASP

    70/207

    70

    Operaes com Arrays - Length

    Existem duas formas de obter o tamanho de um array.

    Exemplo:string[] nomes = new string[] { Pedro, Joo, Z, Maria };

    Console.WriteLine(Tamanho: + nomes.Length);

    Exemplo:

    string[] nomes = new string[] { Pedro, Joo, Z, Maria };

    Console.WriteLine(Tamanho: + nomes.Count());

    Arrays

  • 7/31/2019 Apostila c#+ ASP

    71/207

    71

    Operaes com Arrays - Reverse

    Operao para inverter os itens em um array

    Exemplo:string[] nomes = new string[] { Pedro, Joo, Z, Maria };

    Array.Reverse(nomes);

    foreach (string item in nomes)

    { Console.WriteLine(Nome: + item);}Console.ReadKey();

    Arrays

  • 7/31/2019 Apostila c#+ ASP

    72/207

    72

    Operaes com Arrays - Sort

    Operao para ordenar os itens em um array

    Exemplo:string[] nomes = new string[] { Pedro, Joo, Z, Maria };

    Array.Sort(nomes);

    foreach (string item in nomes)

    { Console.WriteLine(Nome: + item);}Console.ReadKey();

    Arrays

  • 7/31/2019 Apostila c#+ ASP

    73/207

    73

    Operaes com Arrays - IndexOf

    Operao para ordenar os itens em um array

    Exemplo:string[] nomes = new string[] { Pedro, Joo, Z, Maria };

    int posicao = Array.IndexOf(nomes, Z);

    if (posicao != -1)

    { Console.WriteLine(O Z foi encontrado na posio: + posicao);}else{

    Console.WriteLine(O Z no foi encontrado!);}Console.ReadKey();

    Arrays

  • 7/31/2019 Apostila c#+ ASP

    74/207

    74

    Dvidas

    Anotaes

    Arrays

  • 7/31/2019 Apostila c#+ ASP

    75/207

    75

    Exerccio 4Construa os seguintes programas

    Exerccio 4.1

    Desenvolva um algoritmo, que leia um vetor de 10 posies de inteiros e imprima o menor e o

    maior nmero encontrado dentre todos os valores entrados no vetor..

    Exerccio 4.2

    Desenvolva um algoritmo, que leia um vetor de 8 posies de inteiros e imprima a mdia

    aritmtica dentre todos os valores entrados no vetor.

    Exerccio 4.3

    Desenvolva um algoritmo, que leia um vetor de 15 posies de inteiros e imprima a soma de

    todos os nmeros que so pares dentre os valores entrados no vetor.

    Agenda

  • 7/31/2019 Apostila c#+ ASP

    76/207

    76

    Prximos

    Tpicos

    Criao de Funes

    Depurao de Cdigo

    Recursos da IDE

    Trabalhando com Textos, Nmeros e Datas

    Colees

    Introduo Orientao a Objetos

    Agenda

  • 7/31/2019 Apostila c#+ ASP

    77/207

    77

    Prximos

    Tpicos

    Criao de Funes

    Depurao de Cdigo

    Recursos da IDE

    Trabalhando com Textos, Nmeros e Datas

    Colees

    Introduo Orientao a Objetos

    Criao de Funes

  • 7/31/2019 Apostila c#+ ASP

    78/207

    78

    Funes

    Uma funo um agrupamento de instrues que tem por objetivo resolver umproblema especfico, dentro de um contexto maior que construir uma aplicao.

    A separao das instrues em pedaos de cdigo pode:Reduzir a quantidade de cdigo duplicado;Decompor problemas grandes em problemas pequenos e facilitar o entendimentodo todo;

    Ajudar na interpretao do programa;

    Permitir a reutilizao de rotinas j prontas sem a necessidade de re-escrevercdigos;

    Agilizar o processo de desenvolvimento;

    Sob um ponto de vista conceitual, o entendimento de uma funo :Seu mtodo de acesso: pblica ou privadaSeu nome;Seus argumentos de entrada;Seu retorno, se houver. Caso no exista retorno, utilizar o tipo de retorno = void.Seu corpo, que o bloco de instrues para atingir o objetivo desejado.

    Criao de Funes

  • 7/31/2019 Apostila c#+ ASP

    79/207

    79

    Onde codificar?

    Vamos codificar nossas funes dentro de nossas classes. Posteriormenteveremos que estas funes contidas dentro de classes so chamadas demtodos.

    using System;using System.Collections.Generic;using System.Linq;using System.Text;

    namespace PrimeiraAplicacao{

    class Program{

    static void Main(string[] args){}

    private string MinhaFuncao(string nome){

    }}

    }

    Criao de Funes

  • 7/31/2019 Apostila c#+ ASP

    80/207

    80

    A Sintaxe

    Antes de iniciar a codificao de uma funo busque saber:Qual ser o seu nome?Qual sero os seus argumentos de entrada (se houverem)?Qual ser o tipo de retorno?Qual ser o escopo da minha funo?

    Tendo estas respostas em mos, vamos sintaxe

    (argumentos){

    }

    EscopoPode ser private ou public. Mais a frente veremos que h outros escopospossveis

    Tipo de RetornoQual o tipo de retorno: int, string, decimal, etc.. Caso no retorne nada ser void

    ArgumentosUm por um, separados por vrgula, sendo sempre tipo e nome

    Criao de Funes

  • 7/31/2019 Apostila c#+ ASP

    81/207

    81

    Exemplo

    Vamos a um exemplo.

    using System;using System.Collections.Generic;using System.Linq;using System.Text;

    namespace PrimeiraAplicacao{

    class Program{

    static void Main(string[] args){}

    private int MultiplicaNumeros(int Fator, int Produto)

    {

    }}}

    Criao de Funes

  • 7/31/2019 Apostila c#+ ASP

    82/207

    82

    Codificando a Funo

    Uma vez estabelecida a assinatura da funo vamos codificao da mesma.Neste momento h que se juntar o entendimento do problema, com oconhecimento da linguagem para codificar o algoritmo.

    Toda funo que retorna algum valor (ou seja, no de retorno void), deveobrigatoriamente conter um palavra return para cada caminho lgico possvel.

    namespace PrimeiraAplicacao

    {class Program{

    static void Main(string[] args){}

    private int MultiplicaNumeros(int Fator, int Produto)

    {

    return Fator * Produto;

    }}

    }

    Criao de Funes

  • 7/31/2019 Apostila c#+ ASP

    83/207

    83

    Codificando a Funo

    O C# chato o suficiente para criticar se um caminho lgico no tem retorno.

    namespace PrimeiraAplicacao{

    class Program{

    static void Main(string[] args){}

    private int CalculoNumeros(int Num1, int Num2)

    {

    if (Num1 > 10)

    {

    return Num1 Num2;

    }

    else

    {

    int ret = Num1 + Num2;

    }

    }}

    }

    Criao de Funes

  • 7/31/2019 Apostila c#+ ASP

    84/207

    84

    A palavra reservada static

    Inicialmente vamos criar nossas funes com um modificadorstatic.

    A palavra chave static nos garante que uma funo possa ser executada a partirda classe e no a partir de um objeto instanciado a partir da classe. Como aindano vimos Orientao a Objetos, o uso desta palavra ser fundamental para quepossamos executar nossas funes.

    class Program

    {static void Main(string[] args){}

    private static int MultiplicaNumeros(int Fator, int Produto)

    {

    return Fator * Produto;

    }}

    Criao de Funes

  • 7/31/2019 Apostila c#+ ASP

    85/207

    85

    Executando a Funo

    Uma vez criada a funo chegou a hora de execut-la.

    namespace PrimeiraAplicacao{

    class Program{

    static void Main(string[] args){

    Console.WriteLine(Calc: + MultiplicaNumeros(3,4));

    }

    private static int MultiplicaNumeros(int Fator, int Produto){

    return Fator * Produto;}

    }}

    Criao de Funes

  • 7/31/2019 Apostila c#+ ASP

    86/207

    86

    Sobrecarga de Funes

    A sobrecarga, ou sobreposio, ou overload, de funes se d por criar umasegunda funo que tem exatamente o MESMO NOME da primeira, o MESMOTIPO DE RETORNO da primeira, e:

    Tipos de argumentos de entrada diferentes Ou nmeros de argumentos de entrada diferentes

    class Program{

    static void Main(string[] args){}

    private static int Soma(int Num1, int Num2)

    {

    return Num1 + Num2;

    }

    private static int Soma(int Num1, int Num2, int Num3)

    {

    return Num1 + Num2 + Num3;

    }}

    Criao de Funes

  • 7/31/2019 Apostila c#+ ASP

    87/207

    87

    Dvidas

    Anotaes

    Criao de Funes

  • 7/31/2019 Apostila c#+ ASP

    88/207

    88

    Exerccio 5Construa os seguintes programas

    Exerccio 5.1

    Construa uma funo que imprima todos os nmeros divisveis por 3 e por 5 entre 1 e 1000.

    Exerccio 5.2

    Construa um funo que retorna a nota final de um atleta de saltos ornamentais, levando em

    considerao que em competies deste tipo, 6 juzes informam notas reais variando de 0 a

    10. A nota final do atleta deve excluir a maior e a menor nota dos juzes e composta pela

    soma das quatro demais. Faa um programa que l do usurio as seis notas e informa a nota

    final do atleta (a soma das notas excluindo a menor e a maior delas).

    Agenda

  • 7/31/2019 Apostila c#+ ASP

    89/207

    89

    Prximos

    Tpicos

    Criao de Funes

    Depurao de Cdigo

    Recursos da IDE

    Trabalhando com Textos, Nmeros e Datas

    Colees

    Introduo a Orientao a Objetos

    Depurao de Cdigo

  • 7/31/2019 Apostila c#+ ASP

    90/207

    90

    Depurao

    O processo de depurao consiste em procurar (e se possvel encontrar) erros emum programa previamente escrito ou codificado.

    Atravs do Visual Studio poderemos adicionar pontos de parada (Breakpoint) paraverificao de cdigo, executar o programa passo a passo (Step Into e Step Over)alm de possibilitar a visualizao de valores de variveis em tempo de execuo.

    Teclas de atalho utilizadas

    Breakpoint F9 Adiciona / Remove um Ponto de Parada

    Step Into F11 Avana para a prxima instruo a ser executada, seja naprpria funo ou rotina em que a execuo se encontra, seja em outra rotinaqualquer.

    Step Over F10 Avana para a prxima instruo a ser executada, dentro daprpria funo ou rotina em que a execuo se encontra.

    Quick Watch Shift + F9 Mostra o contedo de uma varivel ou uma equaopreviamente selecionada

    Next Statement Ctrol + Shift + F10 Avana ou retrocede a execuo para ainstruo selecionada

    Depurao de Cdigo

  • 7/31/2019 Apostila c#+ ASP

    91/207

    91

    Breakpoint (F5)

    Para adicionando ou remover um breakpoint : pressione F9 na linha desejada. Alinha ficar destacada.

    Depurao de Cdigo

  • 7/31/2019 Apostila c#+ ASP

    92/207

    92

    Executando o programa

    Ao executar o programa (F5) e a execuo identificar o ponto de parada, aexecuo ir parar no breakpoint esperando que a continuao seja feita.

    Depurao de Cdigo

  • 7/31/2019 Apostila c#+ ASP

    93/207

    93

    Step Into (F11) e Step Over (F10)

    Ao continuar a execuo pressionando F11 a depurao entra dentro da funoMultiplicaNumeros. Caso seja pressionado F10 ao invs de F11, o depuradorexecutar a rotina porm seguir na prxima da funo que est sendoexecutada.

    Step IntoF11 Avana o depurador para a prxima instruo, independente sea prxima instruo da mesma rotina ou de outra rotina.

    Step OverF10 Avana o depurador para a prxima instruo da rotina queest sendo executada.

    Depurao de Cdigo

  • 7/31/2019 Apostila c#+ ASP

    94/207

    94

    Averiguando valores de variveis

    possvel averiguar o valor de uma varivel simplesmente passando o mouseacima dela.

    Depurao de Cdigo

  • 7/31/2019 Apostila c#+ ASP

    95/207

    95

    Averiguando valores de variveis Quick Watch (Shift + F9)

    Pode-se tambm, uma vez que o cursor est em algum ponto de uma varivelacionar o Quick Watch atravs de Shift + F9. Atravs do Quick Watch pode-semodificar o valor da varivel em tempo de execuo.

    Depurao de Cdigo

  • 7/31/2019 Apostila c#+ ASP

    96/207

    96

    Dvidas

    Anotaes

    Agenda

  • 7/31/2019 Apostila c#+ ASP

    97/207

    97

    Prximos

    Tpicos

    Criao de Funes

    Depurao de Cdigo

    Recursos da IDE

    Trabalhando com Textos, Nmeros e Datas

    Colees

    Introduo Orientao a Objetos

    Recursos da IDE

  • 7/31/2019 Apostila c#+ ASP

    98/207

    98

    Recursos Interessantes

    Vamos ver agora uma srie de recursos interessantes que facilitam o nosso dia-a-dia durante a programao, alm de serem boas prticas de programao.

    O que veremos:

    Procura

    Sumrio

    Go To Definition

    Find All References

    Code Snippet

    Recursos da IDE

  • 7/31/2019 Apostila c#+ ASP

    99/207

    99

    Recursos Interessantes: Procura Basicamente existem duas formas de pesquisa de textos no Visual Studio:

    Procura Rpida e Procura em Arquivos. A procura rpida (Ctrol + F), abre uma janela de pesquisa onde ser possvel

    pesquisa o texto desejado. Na caixa Look in possvel procurar em Toda asoluo, no Projeto Corrente, no Documento Corrente, no Bloco (Funo)Corrente e em todos os arquivos abertos.

    Ele procurar o texto e na primeira ocorrncia encontrada ele esperar at que

    seja solicitada nova procura (F3)

    Recursos da IDE

  • 7/31/2019 Apostila c#+ ASP

    100/207

    100

    Recursos Interessantes: Procura

    A procura em arquivos (Ctrol + Shift + F), abre uma janela de pesquisa ondetambm ser possvel pesquisa o texto desejado. Na caixa Look in possvelprocurar em Toda a soluo, no Projeto Corrente, no Documento Corrente e emtodos os arquivos abertos.

    Ele procurar o texto de acordo com o escopo (Look in) solicitado e apresentaruma lista de pontos encontrados.

    Pode-se navegar entre os pontos encontrados utilizando a tecla de atalho F8.

    Recursos da IDE

  • 7/31/2019 Apostila c#+ ASP

    101/207

    101

    Recursos Interessantes: Sumrio

    O sumrio uma espcie de auto-documentao que pode ajudar e muito aconstruo de nossos programas.

    Para adicionar o sumrio em nossas funes, digite trs barras na linhaimediatamente acima da assinatura da funo.

    class Program{

    static void Main(string[] args){}

    ///

    /// Funo que calcula a soma de dois nmeros

    ///

    /// Primeiro nmero da soma

    /// Segundo nmero da soma///

    private static int Soma(int Num1, int Num2){

    return Num1 + Num2;}

    }

    Recursos da IDE

  • 7/31/2019 Apostila c#+ ASP

    102/207

    102

    Recursos Interessantes: Go To Definition

    Em alguns momentos, classes muito grandes ou funes espalhadas em vriospontos, podem complicar a localizao de onde est tal cdigo. Acima do nome deuma funo em sua chamada, acione o boto direito Go To Definition (F12) e oVisual Studio te direcionar para a definio da funo.

    Tambm vale para definio de variveis.

    Recursos da IDE

  • 7/31/2019 Apostila c#+ ASP

    103/207

    103

    Recursos Interessantes: Find All References

    Modificar uma funo pode ser um tanto traumtico, afinal: quantos sero ospontos que teremos no mnimo testar novamente?

    Para descobrir todos os pontos de chamada de uma funo ou todos os pontos deutilizao de uma varivel, sobre o nome da funo ou da varivel, utilize o botodireito Find All Referentes (Shift + F12)

    Recursos da IDE

  • 7/31/2019 Apostila c#+ ASP

    104/207

    104

    Recursos Interessantes: Code Snippet

    Caso voc tenha esquecido a sintaxe do while, existe uma forma de a IDE teajudar.

    No cdigo digite while + TAB + TAB.

    Ele preenche a sintaxe do comando.

    O Code Snippet tambm pode ser acessado por Ctrol + K, Ctrol + X.

    Recursos da IDE

  • 7/31/2019 Apostila c#+ ASP

    105/207

    105

    Dvidas

    Anotaes

    Agenda

  • 7/31/2019 Apostila c#+ ASP

    106/207

    106

    Prximos

    Tpicos

    Criao de Funes

    Depurao de Cdigo

    Recursos da IDE

    Trabalhando com Textos, Nmeros e

    Datas

    Colees

    Introduo Orientao a Objetos

    Trabalhando com Textos, Nmeros e Datas

  • 7/31/2019 Apostila c#+ ASP

    107/207

    107

    Estrutura de Deciso Composta

    Vamos ver uma srie de funes especficas do Framework que nos ajudam naprogramao mundana.

    Veremos funes de texto, nmeros e datas.

    Trabalhando com Textos, Nmeros e Datas

  • 7/31/2019 Apostila c#+ ASP

    108/207

    108

    Funo Trim() Remoo de Espaos

    Funo:

    Trim()

    Objetivo:Remover espaos sobressalentes de ambos os lados de um texto.

    Exemplo:

    static void Main(string[] args){string nome = " Pedro Ferreira ";

    Console.WriteLine("Nome sem espaos: " + nome.Trim());

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

  • 7/31/2019 Apostila c#+ ASP

    109/207

    109

    Funo TrimStart() Remoo de Espaos Iniciais

    Funo:

    TrimStart()

    Objetivo:Remover espaos sobressalentes no incio de um texto.

    Exemplo:

    static void Main(string[] args){string nome = " Pedro Ferreira ";

    Console.WriteLine("Nome sem espaos no incio: " + nome.TrimStart());

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

  • 7/31/2019 Apostila c#+ ASP

    110/207

    110

    Funo TrimEnd() Remoo de Espaos Finais

    Funo:

    TrimEnd()

    Objetivo:Remover espaos sobressalentes no final de um texto.

    Exemplo:

    static void Main(string[] args){string nome = " Pedro Ferreira ";

    Console.WriteLine("Nome sem espaos no final: " + nome.TrimEnd());

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

  • 7/31/2019 Apostila c#+ ASP

    111/207

    111

    Funo ToUpper() Caixa Alta

    Funo:

    ToUpper()

    Objetivo:Transformar um texto em caixa alta.

    Exemplo:

    static void Main(string[] args){string nome = " Pedro Ferreira ";

    Console.WriteLine("Nome em maisculos: " + nome.ToUpper());

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

  • 7/31/2019 Apostila c#+ ASP

    112/207

    112

    Funo ToLower() Caixa Baixa

    Funo:

    ToLower()

    Objetivo:Transformar um texto em caixa baixa.

    Exemplo:

    static void Main(string[] args){string nome = " Pedro Ferreira ";

    Console.WriteLine("Nome em minsculos: " + nome.ToLower());

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

  • 7/31/2019 Apostila c#+ ASP

    113/207

    113

    Funo Contains(texto) Contm

    Funo:

    Contains(texto)

    Objetivo:Procura um texto e retorna true ou false. Lembre-se que C# case-sensitive.

    Exemplo:

    static void Main(string[] args){string nome = " Pedro Ferreira ";

    Console.WriteLine(Contm a letra e: " + nome.Contains(e));

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

  • 7/31/2019 Apostila c#+ ASP

    114/207

    114

    Funo StartsWith(texto) Inicia Com

    Funo:

    StartsWith(texto)

    Objetivo:Retorna true ou false se texto inicia com argumento de entrada. Lembre-se que C# case-sensitive.

    Exemplo:

    static void Main(string[] args){

    string nome = "Pedro Ferreira";

    Console.WriteLine(Inicia com A: " + nome.StartsWith(A));

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

  • 7/31/2019 Apostila c#+ ASP

    115/207

    115

    Funo IndexOf(texto) ndice do Texto

    Funo:

    IndexOf(texto)

    Objetivo:Procura um texto em outro e se encontrar retorna a primeira posio encontradainiciando da posio 0. Caso no seja encontrado, retorna -1.

    Exemplo:

    static void Main(string[] args){

    string nome = "Pedro Ferreira";

    Console.WriteLine(Primeira Posio de e: " + nome.IndexOf(e));

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

  • 7/31/2019 Apostila c#+ ASP

    116/207

    116

    Funo Replace(de, por) Substituio de Texto

    Funo:

    Replace(de, por)

    Objetivo:Troca texto (primeiro argumento) por outro texto (segundo argumento)

    Exemplo:

    static void Main(string[] args){string nome = "Pedro Ferreira";

    Console.WriteLine(Nome maluco: " + nome.Replace(e, x));

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

  • 7/31/2019 Apostila c#+ ASP

    117/207

    117

    Funo PadLeft(tamanho, caracter) Complemento Esquerda

    Funo:

    PadLeft(tamanho, caracter)

    Objetivo:Complementa o texto esquerda no tamanho especificado e o caracterespecificado

    Exemplo:

    static void Main(string[] args){

    string nome = "Pedro Ferreira";

    Console.WriteLine(X a esquerda: " + nome.PadRight(30, x));

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

  • 7/31/2019 Apostila c#+ ASP

    118/207

    118

    Funo PadRight(tamanho, caracter) Complemento Direita

    Funo:

    PadRight(tamanho, caracter)

    Objetivo:Complementa o texto direita no tamanho especificado e o caracter especificado

    Exemplo:

    static void Main(string[] args){string nome = "Pedro Ferreira";

    Console.WriteLine(X a direita: " + nome.PadLeft(30, x));

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

  • 7/31/2019 Apostila c#+ ASP

    119/207

    119

    Funo Substring(incio, tamanho) Parte do Texto

    Funo:

    Substring(incio, tamanho)Substring(incio)

    Objetivo:Retorna parte de um texto, ou por incio e tamanho, ou somente por incio

    Exemplo:

    static void Main(string[] args){

    string nome = "Pedro Ferreira";

    Console.WriteLine(Posio 6, Tamanho 4: " + nome.Substring(6, 4));

    Console.WriteLine(Posio 6 em diante: " + nome.Substring(6));Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

  • 7/31/2019 Apostila c#+ ASP

    120/207

    120

    Funo AddDays(dias) Adiciona Dias

    Funo:

    AddDays(dias)

    Objetivo:Recalcula uma data, adicionando ou subtraindo dias.

    Exemplo:

    static void Main(string[] args){DateTime data = DateTime.Now;

    Console.WriteLine(Daqui uma semana: " + data.AddDays(7));

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

  • 7/31/2019 Apostila c#+ ASP

    121/207

    121

    Funo ToString(formato) Formatao de Datas

    Funo:

    ToString(formato)

    Objetivo:Formata a apresentao de uma data.

    Ano: yyyyMs: MMMs abreviado: MMMDia: ddDia da Semana abreviado: dddHora: HH ou hhMinuto: mmSegundo: ss

    Exemplo:

    static void Main(string[] args)

    { DateTime data = DateTime.Now;

    Console.WriteLine(Data formatada: " + data.ToString(dd/MM/yyyy));

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

    F AddM h ( ) Adi i M

  • 7/31/2019 Apostila c#+ ASP

    122/207

    122

    Funo AddMonths(meses) Adiciona Meses

    Funo:

    AddMonths(meses)

    Objetivo:Recalcula uma data, adicionando ou subtraindo meses.

    Exemplo:

    static void Main(string[] args){DateTime data = DateTime.Now;

    Console.WriteLine(Ms que vem: " + data.AddMonths(1));

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

    F AddY ( ) Adi i A

  • 7/31/2019 Apostila c#+ ASP

    123/207

    123

    Funo AddYears(anos) Adiciona Anos

    Funo:

    AddYears(anos)

    Objetivo:Recalcula uma data, adicionando ou subtraindo anos.

    Exemplo:

    static void Main(string[] args){DateTime data = DateTime.Now;

    Console.WriteLine(Ano passado: " + data.AddYears(-1));

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

    F T L D t St i () D t E t

  • 7/31/2019 Apostila c#+ ASP

    124/207

    124

    Funo ToLongDateString() Data por Extenso

    Funo:

    ToLongDateString()

    Objetivo:Retorna a data por extenso.

    Exemplo:

    static void Main(string[] args){DateTime data = DateTime.Now;

    Console.WriteLine(Data completa: " + data.ToLongDateString());

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

    P i d d D OfW k Di d S

  • 7/31/2019 Apostila c#+ ASP

    125/207

    125

    Propriedade DayOfWeek Dia da Semana

    Propriedade:

    DayOfWeek

    Objetivo:Apresenta o dia da semana, Sunday, Monday, etc...

    Exemplo:

    static void Main(string[] args){DateTime data = DateTime.Now;

    Console.WriteLine(Dia da semana: " + data.DayOfWeek);

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

    F t d V l

  • 7/31/2019 Apostila c#+ ASP

    126/207

    126

    Formatando Valores

    Formatar um valor em formato moeda:

    Exemplo:

    static void Main(string[] args){

    decimal valor = (decimal)14.5;

    Console.WriteLine(Valor Moeda: " + String.Format({0:C}, valor));

    Console.ReadKey();

    }

    Formatar um valor em formato numrico:

    Exemplo:

    static void Main(string[] args){decimal valor = (decimal)14.5;

    Console.WriteLine(Valor Moeda: " + String.Format({0:F}, valor));

    Console.ReadKey();

    }

    Trabalhando com Textos, Nmeros e Datas

  • 7/31/2019 Apostila c#+ ASP

    127/207

    127

    Dvidas

    Anotaes

    Trabalhando com Textos, Nmeros e Datas

  • 7/31/2019 Apostila c#+ ASP

    128/207

    128

    Exerccio 6Construa os seguintes programas

    Exerccio 6.1

    Construa um programa que apresente o seguinte texto na Console.

    HAAAAMMDDARQSAIDA ;

    0001NOME PARTICIPANTE 1 ;0002NOME PARTICIPANTE 2 ;0003NOME PARTICIPANTE 3 ;T00005 ;

    Onde,

    - H e T so tipos de registros Header e Trailler.

    - No Header, o YYYYMMDD a data corrente.

    - No header h um texto fixo ARQSAIDA com 35 posies (espaos a direita)

    - Os registro intermedirios so compostos de sequencial de 4 posies, com zeros a esquerda, o nome de

    cada participante do treinamento com 40 posies (espaos direita).

    - No Trailler, o 00005 o nmero total de linhas, inclusive header e trailler.

    Todos os registros finalizam com ; e quebra de linha (Environment.NewLine)

    Agenda

  • 7/31/2019 Apostila c#+ ASP

    129/207

    129

    Prximos

    Tpicos

    Criao de Funes

    Depurao de Cdigo

    Recursos da IDE

    Trabalhando com Textos, Nmeros e Datas

    Colees

    Introduo Orientao a Objetos

    Colees

    N S t C ll ti

  • 7/31/2019 Apostila c#+ ASP

    130/207

    130

    Namespace System.Collections

    A namespace System.Collections fornece uma variedade de classes mais flexveis

    e mais sofisticadas de trabalho com arrays.

    Vamos estudar uma destas classes: a classe List

    Declarao de uma Lista:List colecao = new List;

    Exemplo:List numerosInteiros = new List();

    Veja que neste caso no necessrio destacar o tamanho da lista como era feitocom array.

    Colees

    Adi i d It

  • 7/31/2019 Apostila c#+ ASP

    131/207

    131

    Adicionando um Item

    Para adicionar um item na coleo podemos utilizar duas funes: Add() ou

    Insert()

    Exemplo:List numerosInteiros = new List();

    //Insere item na prxima posionumerosInteiros.Add(10);

    //Insere item na prxima posionumerosInteiros.Add(20);

    Console.WriteLine(Primeiro Item: + numerosInteiros[0]);

    Exemplo:List numerosInteiros = new List();

    //Insere item na primeira posionumerosInteiros.Insert(0, 10);

    //Insere item na primeira posionumerosInteiros.Insert(0, 20);

    Console.WriteLine(Primeiro Item: + numerosInteiros[0]);

    Colees

    Adi i d It

  • 7/31/2019 Apostila c#+ ASP

    132/207

    132

    Adicionando Itens

    Para adicionar N itens na coleo podemos utilizar a funo AddRange()

    Exemplo:List numerosInteiros = new List();List numerosPares = new List();List numerosImpares = new List();

    //Insere ParesnumerosPares.Add(2);

    numerosPares.Add(4);

    //Insere nmeros mparesnumerosImpares.Add(1);numerosImpares.Add(3);

    //Insere Lista FinalnumerosInteiros.AddRange(numerosPares);

    numerosInteiros.AddRange(numerosImpares);

    Console.WriteLine(Qtd itens: + numerosInteiros.Count);

    Colees

    Limpando a Coleo Inteira

  • 7/31/2019 Apostila c#+ ASP

    133/207

    133

    Limpando a Coleo Inteira

    Para limpar todos os itens na coleo podemos utilizar a funo Clear()

    Exemplo:List numerosInteiros = new List();List numerosPares = new List();List numerosImpares = new List();

    //Insere ParesnumerosPares.Add(2);

    numerosPares.Add(4);

    //Insere nmeros mparesnumerosImpares.Add(1);numerosImpares.Add(3);

    //Insere Lista FinalnumerosInteiros.AddRange(numerosPares);numerosInteiros.AddRange(numerosImpares);

    numerosPares.Clear();

    numerosImpares.Clear();

    Console.WriteLine(Qtd itens: + numerosInteiros.Count);

    Colees

    Removendo um Item da Coleo

  • 7/31/2019 Apostila c#+ ASP

    134/207

    134

    Removendo um Item da Coleo Para remover itens da coleo podemos utilizar as funes RemoveAt() ou

    Remove()

    Exemplo:List numerosInteiros = new List();

    //Insere NmerosnumerosInteiros.Add(9);numerosInteiros.Add(8);numerosInteiros.Add(7);

    numerosInteiros.Add(6);

    //Remove o Item da Posio 2numerosInteiros.RemoveAt(2);

    foreach (int item in numerosInteiros){

    Console.WriteLine(L1 - Nmero: + item);}

    //Remove o Nmero 9numerosInteiros.Remove(9);

    foreach (int item in numerosInteiros){

    Console.WriteLine(L2 - Nmero: + item);}

    Colees

    Revertendo a Coleo

  • 7/31/2019 Apostila c#+ ASP

    135/207

    135

    Revertendo a Coleo

    Tambm podemos reverter os itens atravs da funo Reverse()

    Exemplo:List numerosInteiros = new List();

    //Insere NmerosnumerosInteiros.Add(6);numerosInteiros.Add(7);numerosInteiros.Add(8);

    numerosInteiros.Add(9);

    //Reverte a listanumerosInteiros.Reverse();

    foreach (int item in numerosInteiros){

    Console.WriteLine(L1 - Nmero: + item);}

  • 7/31/2019 Apostila c#+ ASP

    136/207

  • 7/31/2019 Apostila c#+ ASP

    137/207

    Colees

  • 7/31/2019 Apostila c#+ ASP

    138/207

    138

    Exerccio 7Construa os seguintes programas

    Exerccio 7.1

    Usando colees, calcule a soma dos 50 primeiros nmeros naturais.

    Exerccio 7.2

    A sequncia de Fibonacci dada por:0 1 1 2 3 5 8 13 ...

    Elaborar um programa que recebe do usurio a quantidade de nmeros da sequncia que ele

    deseja imprimir, e imprimi os nmeros da sequncia de Fibonacci solicitados.

    Exerccio 7.3

    Clculo do permetro: Faa um programa que solicita ao usurio a quantidade de lados de um

    polgono. Logo em seguida o programa deve solicitar o tamanho de cada um dos lados (se ousurio informou 3 lados, o sistema deve solicitar o tamanho dos 3 lados). Aps a digitao do

    tamanho de todos os lados, o sistema deve apresentar: Se um polgono regular (todos os

    lados so iguais) ou no, e o permetro (soma dos lados) do polgono.

    Agenda

    P i

  • 7/31/2019 Apostila c#+ ASP

    139/207

    139

    Prximos

    Tpicos

    Criao de Funes

    Depurao de Cdigo

    Recursos da IDE

    Trabalhando com Textos, Nmeros e Datas

    Colees

    Introduo Orientao a Objetos

    Introduo Orientao a Objetos

    Classes e Objetos

  • 7/31/2019 Apostila c#+ ASP

    140/207

    140

    Classes e Objetos

    Classe:

    Representa uma categoria de objetos que possuem exatamente as mesmaspropriedades (atributos) e executam as mesmas aes (mtodos).

    Objeto: a instncia nica de uma classe. Um objeto nico mesmo que seus atributosapresentem valores idnticos ao de outro objeto.

    Representao de uma classe criada em C# usando a notao UML.

    Introduo Orientao a Objetos

    Atributos e Mtodos

  • 7/31/2019 Apostila c#+ ASP

    141/207

    141

    Atributos e Mtodos

    Atributos:

    Os atributos representam as caractersticas de uma classe, ou seja, aspeculiaridades que costuma variar de objeto para objeto.

    Para um objeto MONITOR, temos Marca, Modelo, Tipo, Cor, etc...

    Mtodos:Os mtodos representam aes que um objeto de uma classe pode executar,

    podendo ou no receber parmetros de execuo, e podendo ou no retornarvalores. So funes.

    Para um objeto MONITOR, temos Ligar, Desligar, Mudar Contraste, Mudar Brilho,etc...

    Introduo Orientao a Objetos

    Atributos e Propriedades Pblicas

  • 7/31/2019 Apostila c#+ ASP

    142/207

    142

    Atributos e Propriedades Pblicas

    Atributos

    Os atributos representam as caractersticas que definem a classe.

    Codificando os atributos

    public class Cliente{

    //Atributosprivate int m_id;

    private string m_nome;

    }

    Introduo Orientao a Objetos

    Atributos e Propriedades Pblicas

  • 7/31/2019 Apostila c#+ ASP

    143/207

    143

    Atributos e Propriedades Pblicas

    Propriedades Pblicas get

    As propriedades pblicas get ou mtodos de acesso garantem que outras classesou programas acessem o valor dos atributos da classe.

    Propriedades Pblicas setAs propriedades pblicas set ou mtodos modificadores garantem que outrasclasses ou programas alterem o valor dos atributos da classe

    Codificando as propriedades pblicas

    public class Cliente{

    private int m_id;private string m_nome;

    //Propriedades Pblicas Get e Setpublic int Id {

    get { return m_id; }

    set { m_id = value; }}

    public string Nome {

    get { return m_nome; }

    set { m_nome = value; }

    }

    }

    Introduo Orientao a Objetos

    Construtores

  • 7/31/2019 Apostila c#+ ASP

    144/207

    144

    Construtores

    O construtor um mtodo cujo nome deve ser o mesmo nome da classe e no

    deve ter nenhum tipo de retorno, nem mesmo a palavra reservada void.

    Uma classe pode ter mais de um construtor. Para isto precisaremos criar umasobreposio (ou sobrecarga, ou overload) ao construtor. Veremos a sobreposiodetalhadamente mais a frente.

    O construtor invocado no momento da criao do objeto por meio do operador

    new. Por boa prtica, toda classe deve possuir pelo menos um Construtor.

    Caso no exista um mtodo construtor sem parmetros, o prprio compilador C#ir criar implicitamente

    Introduo Orientao a Objetos

    Construtores

  • 7/31/2019 Apostila c#+ ASP

    145/207

    145

    Construtores

    Codificando o construtor

    public class Cliente{

    private int m_id;private string m_nome;

    //Propriedades Pblicas Get e Setpublic int Id {

    get { return m_id; }set { m_id = value; }

    }

    public string Nome {get { return m_nome; }set { m_nome = value; }

    }

    //Construtor Vaziopublic Cliente() {m_id = int.MinValue;

    m_nome = string.Empty;

    }

    }

    Introduo Orientao a Objetos

    Sobreposio de Construtores

  • 7/31/2019 Apostila c#+ ASP

    146/207

    146

    Sobreposio de Construtores

    Codificando um segundo construtor

    public class Cliente{

    private int m_id;private string m_nome;

    //Propriedades Pblicas Get e Set......

    //Construtor Vaziopublic Cliente() {

    m_id = int.MinValue;

    m_nome = string.Empty;

    }

    //Construtor com Parmetros

    public Cliente(int id, string nome) {m_id = id;

    m_nome = nome;

    }

    }

    Introduo Orientao a Objetos

    Instanciao

  • 7/31/2019 Apostila c#+ ASP

    147/207

    147

    Instncia = objeto.

    A criao de um objeto (ou uma instncia) envolve o operador new e pode serfeita de duas maneiras. A declarao e a criao podem ser feitas em instruesisoladas ou numa nica instruo.

    Forma 1Cliente objCliente;

    objCliente = new Cliente();

    Forma 2Cliente objCliente = new Cliente();

    Introduo Orientao a Objetos

    Mtodos

  • 7/31/2019 Apostila c#+ ASP

    148/207

    148

    Toda classe possui pelo menos um mtodo chamado de mtodo construtor, que

    um mtodo com o mesmo nome da classe, conforme j vimos.

    Podemos criar outros mtodos em nossas classes.

    Mtodos so rotinas ou funes, que executam um conjunto de instrues paraatingir um determinado objetivo.

    Estes mtodos podem ou no receber parmetros de entrada, e podem ou noretornar algum valor.

    Introduo Orientao a Objetos

    Mtodos

  • 7/31/2019 Apostila c#+ ASP

    149/207

    149

    Codificando um mtodo

    public class Cliente{

    private int m_id;private string m_nome;

    //Propriedades Pblicas Get e Set......

    //Construtores......public bool ValidarNome()

    {

    if (m_nome == string.Empty)

    {

    return false;}

    else

    {

    return true;

    }

    }

    }

    Introduo Orientao a Objetos

    Mtodos

  • 7/31/2019 Apostila c#+ ASP

    150/207

    150

    Para consumir um mtodo:

    Cliente objCliente = new Cliente();bool clienteValido = false;

    clienteValido = objCliente.ValidarNome();

    Chamamos o acionamento dos mtodos de troca de mensagens. O programaconsumidor enviou uma mensagem ao objeto informando que este objeto

    validasse o nome do cliente. Neste caso deve retornar FALSO.Cliente objCliente = new Cliente();objCliente.Nome = Pedro Ferreira;bool clienteValido = false;

    clienteValido = objCliente.ValidarNome();

    Neste caso deve retornar TRUE.

    Introduo Orientao a Objetos

    Membros Estticos (Atributos ou Mtodos)

  • 7/31/2019 Apostila c#+ ASP

    151/207

    151

    ( ) Um atributo esttico, fica disponvel para todos os objetos instanciados desta

    classe, de forma que qualquer objeto criado desta classe possa us-lo.

    Um mtodo esttico fica disponvel para consumo mesmo que no tenha sidoinstanciado um objeto a partir da classe.

    Para isto precisamos usar o modificadorstatic na definio do atributo ou domtodo.

    public class Cliente {

    //Atributo Estticoprivate static int m_qtdClientesEmMemoria = 0;

    //Construtorpublic Cliente(){

    m_qtdClientesEmMemoria++;

    }

    //Mtodo Estticopublic static int obterQtdClientes(){

    return m_qtdClientesEmMemoria;}

    }

    Introduo Orientao a Objetos

    Membros Estticos (Atributos ou Mtodos)

  • 7/31/2019 Apostila c#+ ASP

    152/207

    152

    A criao de um objeto continua idntica.

    Cliente objClientePedro = new Cliente();

    Neste momento foi acionado o Construtor da classe e consequentementeincrementado 1 no atributo esttico m_qtdClientesEmMemoria.

    Por ser o primeiro objeto instanciado o atributo m_qtdClientesEmMemoria devecontm o valor 1.

    Para criar um segundo objeto a partir da classe:

    Cliente objClienteJose = new Cliente();

    Neste momento foi acionado o Construtor da classe novamente econsequentemente incrementado 1 no atributo esttico m_qtdClientesEmMemoria.

    Por ser o segundo objeto instanciado o atributo m_qtdClientesEmMemoria devecontm o valor 2.

    Introduo Orientao a Objetos

    Membros Estticos (Atributos ou Mtodos)

  • 7/31/2019 Apostila c#+ ASP

    153/207

    153

    Esta a forma INCORRETA de consumo de um mtodo esttico:

    Console.WriteLine(Qtd: + objClientePedro.obterQtdClientes);

    Esta a forma CORRETA de consumo de um mtodo esttico:

    Console.WriteLine(Qtd: + Cliente.obterQtdClientes);

    O uso de atributos ou mtodos estticos deve ser feito atravs da Classe e no do

    Objeto, isto porque membros estticos so comuns a todos os objetos da mesmaclasse (caso pblicos) e no faria sentido consumir algo que comum a todos, apartir de um nico objeto instanciado.

    Introduo Orientao a Objetos

    Herana

  • 7/31/2019 Apostila c#+ ASP

    154/207

    154

    O conceito de herana baseia-se na definio de uma classe com base em uma

    outra classe.

    Chamamos a classe usada como referncia de:Superclasse, Classe-me, Classe-base ou Generalizao

    Chamamos a classe criada a partir de uma outra classe de:Subclasse, Classe-filha, Classe-derivada ou Especializao

    public class ContaComum {

    //Atributos//Propriedades Pblicas get//Propriedades Pblicas set//Construtor

    }

    public class ContaEspecial : ContaComum {

    //Outros Atributos//Outras Propriedades Pblicas get//Outras Propriedades Pblicas set//Outro Construtor

    }

    Introduo Orientao a Objetos

    Polimorfismo

  • 7/31/2019 Apostila c#+ ASP

    155/207

    155

    O conceito de polimorfismo est associado ao conceito de herana. O

    polimorfismo prev a re-declarao de mtodos previamente herdados por umaclasse. Esses mtodos, embora semelhantes, diferem de alguma forma daimplementao utilizada na superclasse, sendo necessrio, portanto,reimplement-los na sub-classe

    Implementao da Classe Me

    public class ContaComum {

    //Atributos, Propriedades Pblicas get e set e Construtor

    public string Sacar (float valor){

    if (valor > m_saldo) {return Saldo Insuficiente!;

    }

    else {//Debita Saldo Conta//Registra Movimento//Entrega Dinheiroreturn Saque realizado com sucesso!;

    }}

    }

    Introduo Orientao a Objetos

    Polimorfismo

  • 7/31/2019 Apostila c#+ ASP

    156/207

    156

    Implementao da Classe Filha

    public class ContaEspecial : ContaComum {

    //Outros Atributos, Outras Propriedades Pblicas get e set

    public string Sacar (float valor){

    if (valor > (m_saldo + m_limite)) {return Saldo Insuficiente!;

    }else {

    //Debita Saldo Conta//Registra Movimento//Debita Limite (para Calculo de Juros)//Entrega Dinheiroreturn Saque realizado com sucesso!;

    }

    }}

    Introduo Orientao a Objetos

  • 7/31/2019 Apostila c#+ ASP

    157/207

    157

    Dvidas

    Anotaes

    Introduo Orientao a Objetos

    Exerccio 8

  • 7/31/2019 Apostila c#+ ASP

    158/207

    158

    Exerccio 8Construa a seguinte classe e seus mtodos

    Exerccio 8.1

    A partir da definio da classe abaixo, implemente seus atributos, propriedades pblicas, um

    construtor vazio e todos os seus mtodos matemticos.

    Crie tambm um arquivo do Console para testar os mtodos de sua classe.

    Agenda

    Prximos

  • 7/31/2019 Apostila c#+ ASP

    159/207

    159

    Tpicos

    ADO.NET

    Tratamento de Excees

    DataTables e XML

    Outros Aspectos C#

    Introduo a LINQ

    Agenda

    Prximos

  • 7/31/2019 Apostila c#+ ASP

    160/207

    160

    Tpicos

    ADO.NET

    Tratamento de Excees

    DataTables e XML

    Outros Aspectos C#

    Introduo a LINQ

    ADO.NET

    A Plataforma ADO.NET

  • 7/31/2019 Apostila c#+ ASP

    161/207

    161

    ADO.NET um conjunto de namespaces, separadas em diversas classes que

    fornecem rotinas especficas para conexo com banco de dados relacionais.

    A plataforma ADO.NET suporta a utilizao de diversos provedores de dados, quepor sua vez permitem conexes com banco de dados como Microsoft SQL Server,Oracle, MySQL, etc.

    Utilizaremos aqui, exemplos prticos de conexo ao SGBD Microsoft SQL Server,mas nada impede que voc pratique outros SGBDs com outros provedores de

    acesso.

    ADO.NET tambm fornece suporte para utilizao de objetos (conectados oudesconectados) como DataSets e DataTables, alm de permitir serializaes emarquivos XML

    ADO.NET

    A Linguagem SQL

  • 7/31/2019 Apostila c#+ ASP

    162/207

    162

    A linguagem SQL uma linguagem declarativa utilizada para facilitar o acesso s

    informaes armazenadas num banco de dados relacional.

    Tais acesso so realizados por meio de consultar, atualizaes e manipulaes dedados.

    Utilizaremos a linguagem SQL para acessar ou manipular nosso dados de duasmaneiras diferentes: por comandos declarados dentro do C# e por meio destored procedures estocadas no SQL Server.

    Entendemos aqui, que todos ns estamos aptos a pelo menos entender oscomandos SQL aqui utilizados.

    ADO.NET

    Preparando o Ambiente

  • 7/31/2019 Apostila c#+ ASP

    163/207

    163

    Para nossas prticas, vamos criar duas tabelas num Database SQL Server.

    Passo 1Conectando no SQL Server

    Server: CUBO00XX\SQLEXPRESSUsurio: saSenha: admin99*

    Passo 2Criando o Database

    CREATE DATABASE db_ecommerceGO

    ADO.NET

    Preparando o Ambiente

  • 7/31/2019 Apostila c#+ ASP

    164/207

    164

    Passo 3Criar as tabelas apresentadas acima

    ADO.NET

    Preparando o AmbienteS i t d i

  • 7/31/2019 Apostila c#+ ASP

    165/207

    165

    Script de criao.

    Use db_ecommercego

    CREATE TABLE TB_CATALOGO( CD_CATALOGO smallint NOT NULL,

    NM_CATALOGO varchar(40) NOT NULL );

    ALTER TABLE TB_CATALOGO ADD CONSTRAINT PK_TB_CATALOGOPRIMARY KEY (CD_CATALOGO);

    CREATE TABLE TB_PRODUTO( CD_PRODUTO int NOT NULL,

    NM_PRODUTO varchar(80) NOT NULL,DS_PRODUTO varchar(500) NOT NULL,VL_VENDA numeric(10,2) NOT NULL,VL_PRECO_REPOSICAO numeric(10,2) NOT NULL,IS_PROMOCAO char(1) NOT NULL,VL_DESCONTO_PROMOCAO numeric(10,2) NULL,DT_VALIDADE_PROMOCAO datetime NULL,CD_CATALOGO smallint NOT NULL )

    ALTER TABLE TB_PRODUTO ADD CONSTRAINT PK_TB_PRODUTOPRIMARY KEY (CD_PRODUTO);

    ALTER TABLE TB_PRODUTO ADD CONSTRAINT FK_TB_PRODUTO_TB_CATALOGOFOREIGN KEY (CD_CATALOGO) REFERENCES TB_CATALOGO (CD_CATALOGO);

    ADO.NET

    Preparando o Ambiente

  • 7/31/2019 Apostila c#+ ASP

    166/207

    166

    Efetuando um carga inicial.

    Use db_ecommercego

    INSERT INTO TB_CATALOGO VALUES (1, Livros);INSERT INTO TB_CATALOGO VALUES (2, DVDs);INSERT INTO TB_CATALOGO VALUES (3, Softwares);

    INSERT INTO TB_PRODUTO VALUES (1, C# Avanado, Livro C# avanado queaborda..., 100.00, 70.00, S, 7.00, 20101231, 1);

    INSERT INTO TB_PRODUTO VALUES (2, Visual Studio 2008, Ferramenta deDesenvolvimento ..., 500.00, 400.00, N, NULL, NULL, 3);

    Pronto!

    Estamos aptos a nossas primeiras prticas.

    ADO.NET

    Estruturas Utilizadas

  • 7/31/2019 Apostila c#+ ASP

    167/207

    167

    Tipicamente, executar comandos SQL atravs do ADO.NET exige trs passos.

    Preparar a ConexoPreparar o ComandoExecutar o Comando

    Para conexo com nosso banco de dados SQL Server utilizaremos o provedorSqlClient. Para isto adicionaremos sempre duas namespaces ao nosso cdigo

    using System.Data;using System.Data.SqlClient;

    Para o provedor SqlClient teremos os seguintes objetos

    Preparar a Conexo SqlConnectionPreparar o Comando SqlCommandExecutar o Comando SqlDataReader

    ADO.NET

    Obtendo um Leitor SqlDataReader

  • 7/31/2019 Apostila c#+ ASP

    168/207

    168

    Para obter um SqlDataReader a partir de um comando SELECT

    SqlConnection conexao = new SqlConnection();conexao.ConnectionString = @"Data Source=cubo00XX\sqlexpress;

    Initial Catalog=db_ecommerce;User ID=SA;Password=admin99*";

    SqlCommand comando = new SqlCommand();comando.CommandType = CommandType.Text;

    comando.CommandText = "select * from tb_catalogo";comando.Connection = conexao;comando.Connection.Open();

    SqlDataReader leitor;leitor = comando.ExecuteReader();

    while leitor.Read()){

    Console.WriteLine(leitor["nm_catalogo"].ToString());}

    leitor.Close();conexao.Close();

    ADO.NET

    Leitor x DataTable

  • 7/31/2019 Apostila c#+ ASP

    169/207

    169

    Um objeto do tipo SqlDataReader um CURSOR em memria que aberto na

    memria do servidor de banco de dados e trabalha de forma conectada.

    Este por sua vez acessado registro por registro atravs do mtodo Read().

    A cada leitura (Read) o CURSOR movimentando para o prximo registro eretorna um valor booleano (true ou false) indicando se foi possvel efetuar a leituraou no.

    Um objeto do tipo SqlDataReader Foward-Only, ou seja, somente AVANA, noRETROSCEDE.

    Podemos tambm criar um outro tipo de CURSOR na memria da mquinaCLIENT da conexo de banco de dados, chamado de DataTable.

    Este objeto por sua vez pode trabalhar desconectado, o que exige que todos os

    dados sejam transmitidos da memria do Servidor de Banco de Dados para amquina (Servidor Web) de onde foram solicitados os dados.

    ADO.NET

    Obtendo um Leitor DataTable

  • 7/31/2019 Apostila c#+ ASP

    170/207

    170

    Para obter um DataTable a partir de um comando SELECT

    SqlConnection conexao = new SqlConnection();conexao.ConnectionString = @"Data Source=cubo00XX\sqlexpress;

    Initial Catalog=db_ecommerce;User ID=SA;Password=admin99*";

    SqlCommand comando = new SqlCommand();comando.CommandType = CommandType.Text;

    comando.CommandText = "select * from tb_catalogo";comando.Connection = conexao;comando.Connection.Open();

    DataTable dtLeitor = new DataTable();

    SqlDataAdapter adaptador = new SqlDataAdapter(comando);adaptador.Fill(dtLeitor);

    foreach (DataRow row in dtLeitor.Rows){

    Console.WriteLine(row["nm_catalogo"].ToString());}

    conexao.Close();

    ADO.NET

    Executando um comando DML (Insert, Update, Delete)

  • 7/31/2019 Apostila c#+ ASP

    171/207

    171

    Para obter um DataTable a partir de um comando SELECT

    SqlConnection conexao = new SqlConnection();conexao.ConnectionString = @"Data Source=cubo00XX\sqlexpress;

    Initial Catalog=db_ecommerce;User ID=SA;Password=admin99*";

    SqlCommand comando = new SqlCommand();comando.CommandType = CommandType.Text;

    comando.CommandText = insert into tb_catalogo values (4, Artigos)";comando.Connection = conexao;comando.Connection.Open();

    comando.ExecuteNonQuery();

    O mtodo ExecuteNonQuery() executa o comando e no retorna nenhumresultado (CURSOR) de banco de dados. Ele simplesmente retorna a quantidadede linhas afetadas.

    ADO.NET

  • 7/31/2019 Apostila c#+ ASP

    172/207

    172

    Dvidas

    Anotaes

    ADO.NET

    Exerccio 9

  • 7/31/2019 Apostila c#+ ASP

    173/207

    173

    Exerccio 9Construa os seguintes programas

    Exerccio 9.1

    Construa uma rotina que solicita ao usurio um cdigo de produto, e uma vez informado,

    apresenta os dados do produto conforme abaixo.

    Nome do Produto: XXXXXXDescrio do Produto: XXXXXX

    Preo: $$$$,$$

    Preo Promocional: $$$$,$$$

    Vlido At: dd/mm/aaaa

    Os dados de Preo Promocional e Valido At somente devem ser apresentados se o produto

    est em promoo.

    SQL:

    SELECT * FROM TB_PRODUTO WHERE CD_PRODUTO = [cdigo informado]

    ADO.NET

    Exerccio 9 - ContinuaoC t i t

  • 7/31/2019 Apostila c#+ ASP

    174/207

    174

    Construa os seguintes programas

    Exerccio 9.2

    Construa uma rotina que solicita ao usurio um cdigo de catlogo e um nome de catlogo, e

    uma vez informados estes dados, atualize o nome do catlogo.

    A rotina deve verificar se o cdigo do catlogo informado existe.

    Caso no existe apresentar mensagem Registro no encontrado

    Caso atualize, apresentar mensagem Catlogo atualizado com sucesso

    SQL:

    UPDATE TB