Apostila c#+ ASP
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