Apostila de ASP Net, C# e Visual Basic .Net (Págs.141)_Elisete_IDA

download Apostila de ASP Net, C# e Visual Basic .Net (Págs.141)_Elisete_IDA

of 141

Transcript of Apostila de ASP Net, C# e Visual Basic .Net (Págs.141)_Elisete_IDA

Curso de Introduo a Plataforma .Net FrameWork SDK

Aprenda de uma forma simples , objetiva e direta os principais conceitos da Plataforma .Net FrameWork SDK. O curso apresenta o ASP.Net a primeira ferramenta RAD produzida para o desenvolvimento de aplicaes baseadas na Web. Alm de apresentar as linguagens C# e Visual Basic.Net.

Instrutores: Breno Gontijo [email protected] Cludio Jnior [email protected]

ndice Analtico

Captulo 1 Introduo a Plataforma .Net FrameWork SDK ....................... 1 Introduo ......................................................................................................1 Sutes .............................................................................................................1 Termos da Plataforma ..................................................................................2 Captulo 2 ASP.Net .......................................................................................4 Introduo .....................................................................................................4 Do HTML ao ASP.Net ..................................................................................4 Como o ASP.Net Funciona ..........................................................................6 Criando Pginas ASP.Net ............................................................................7 Mantendo o Estado de uma Pgina ASP.Net ............................................11 ViewState ...................................................................................................11 Importando Espaos de Nomes .................................................................13 Objeto SESSION ........................................................................................14 Vantagens Adicionais .................................................................................15 Captulo 3 Variveis .....................................................................................16 Variveis na Linguagem C# .......................................................................18 Inteiros ..................................................................................................18 Lgicos ..................................................................................................19 Caracteres .............................................................................................19 Ponto Flutuante .....................................................................................20 Decimal .................................................................................................20 String .....................................................................................................21 Object ....................................................................................................22 Converso de Valores ..........................................................................22 Checked e Unchecked ..........................................................................24 Operadores ............................................................................................25 Enum .....................................................................................................25 Struct .....................................................................................................26 New .......................................................................................................27 Arrays ....................................................................................................29 Exemplos e Exerccios ..........................................................................30 Variveis na Linguagem Visual Basic.Net ..................................................33 Inteiros ..................................................................................................33 Lgicos ..................................................................................................34 Caracteres .............................................................................................34 Ponto Flutuante .....................................................................................35 Date .......................................................................................................35 String .....................................................................................................36 Object ....................................................................................................37 Converso de Valores ..........................................................................37

Operadores ...........................................................................................41 Array ......................................................................................................42 Atribuindo Valores aos Arrays .........................................................42 Arrays Multidimensionais .................................................................43 As funes REDIM e ERASE ...............................................................43 Exemplos e Exerccios ..........................................................................44 Captulo 4 Estruturas de Controle ............................................................46 Estruturas de Deciso ...........................................................................46 Instruo if .. then .. else ..elseif ......................................................46 Instruo switch e case ...................................................................48 Estruturas de Repetio .......................................................................49 Instruo For ....................................................................................49 Instruo While ................................................................................50 Instruo Do While ..........................................................................50 Instruo Do Loop ...........................................................................51 Exemplos e Exerccios ..........................................................................52 Captulo 5 Formatao ................................................................................57 Formatao de Nmeros ......................................................................57 Formatao de Nmeros na Linguagem C# .........................................57 Formatao de Nmeros na Linguagem VB.Net ..................................60 Exemplos ...............................................................................................64 Formatao de Datas e Horas ...............................................................65 Formatao de datas e Horas na Linguagem C# .................................65 Exemplos ..............................................................................................69 Formatao de datas e Horas na Linguagem VB.Net ..........................70 Exemplos ...............................................................................................76 Captulo 6 WEB FORMS ..............................................................................78 Principais Eventos do Web Forms ........................................................79 Page_Load ......................................................................................79 OnClick ............................................................................................80 OnSelectedIndexChanged ..............................................................81 Principais Componentes do ASP.Net ...................................................83 TextBox ............................................................................................85 Label ................................................................................................86 Button ..............................................................................................86 DropDownList ..................................................................................87 ListBox .............................................................................................89 CheckBox ........................................................................................89 CheckBoxList ...................................................................................90 RadioButton .....................................................................................91 RadioButtonList ...............................................................................91 HyperLink .........................................................................................92 Panel ................................................................................................93 Exemplos e Exerccios ..........................................................................94

Captulo 7 Controle de Validao ...............................................................98 RequiredFieldValidator ..........................................................................99 CompareValidator ...............................................................................100 RangeValidator ...................................................................................101 CustomValidator ..................................................................................103 RegularExpressionValidator ...............................................................103 ValidationSummary .............................................................................105 Exemplos e Exerccios .........................................................................106 Captulo 8 - ADO.NET ..................................................................................109 Vantagens do ADO.NET ......................................................................109 OleDb ...................................................................................................110 SQL .....................................................................................................111 DataSet ...............................................................................................111 Conectando com um Banco de Dados ................................................112 Lendo um Banco de Dados .................................................................113 Incluir Dados ........................................................................................115 Excluir Dados .......................................................................................116 Atualizar Dados ....................................................................................117 DataGrid ...............................................................................................118 Exemplos e Exerccios .........................................................................121 Captulo 9 Componentes ..........................................................................126 Vantagens ............................................................................................126 Problemas ............................................................................................126 Namespaces ........................................................................................127 Criando um Componente .....................................................................128 Usando o Componente ........................................................................129 Exemplos e Exerccios .........................................................................130 Captulo 10 - Web Services .......................................................................133 SOAP ...................................................................................................134 Criando um WebService .....................................................................134 Usando o WebService .........................................................................135

Curso de Introduo a Plataforma .Net FrameWork SDK

1

Captulo 1 - Introduo a Plataforma .Net FrameWorkINTRODUO A Plataforma Microsoft.NET oferece uma alternativa de ambiente para produzir e executar aplicaes web, rodando-as em PCs, micros de mo e outros dispositivos, como telefones celulares. O plano da Microsoft tornar a infra-estrutura dessa plataforma amplamente disponvel. Tanto que ela j pode ser baixada em seu site e dever fazer parte das prximas verses do Windows. A Plataforma .NET tambm a principal arma com a qual a Microsoft tenta marcar posio no concorridssimo mercado dos Servios Web (Web Services) nome dado a programas ou componentes que devem ser utilizados na Internet. Estes servios on-line so a pedra de toque da Internet, tal como os estrategistas das grandes empresas a imaginam num futuro prximo. Por meio de servios web, empresas trocaro informaes e faro negcios. Aplicaes que rodam num local podero usar mdulos localizados num servidor remoto, consolidando um modelo de computao distribuda. Residentes em servidores web, esses servios podem fornecer produtos finais - por exemplo, documentos e informaes - ou desempenhar tarefas especficas, como realizar clculos e autenticar transaes. Espera-se, assim, que os sites operem de forma integrada, gerando benefcios para empresas e indivduos. Na essncia, essa viso dos servios web hoje compartilhada por grandes nomes como IBM, Sun e Oracle, e todos tm iniciativas nessa rea. Uma caracterstica central da Plataforma .NET aderir aos padres da Internet sem abrir mo de procedimentos j consagrados no Windows. Para isso conta com o Visual Studio.NET, sute de programao definida pela Microsoft como "especialmente voltada para a rpida construo e integrao de Web Services". O produto incorpora as linguagens Visual Basic, Visual C++ e Visual C# ("CSharp), todas com sobrenome .NET. Linguagens tradicionais, as duas primeiras sofreram ajustes para a nova plataforma, enquanto o C# comea do zero.

SUTES A sute, que j est no mercado brasileiro, oferecida em trs pacotes diferentes: Enterprise Architect, Enterprise Developer e Professional. O primeiro o mais completo e inclui, alm das trs linguagens, ferramentas para depurao e modelagem, desenvolvimento em grupos e todos os servidores do Windows. O Enterprise Developer, mais simples, no tem, por exemplo, os recursos de modelagem. Mais voltada para o programador individual, a edio Professional no traz servidores nem itens de trabalho em grupo.

Curso de Introduo a Plataforma .Net FrameWork SDK

2

TERMOS DA PLATAFORMA CLR - Sigla de Common Language Runtime. Base comum a todas as linguagens .NET, o CLR o ambiente que gerencia a execuo de cdigo escrito em qualquer linguagem. Faz parte do Framework. FRAMEWORK - o modelo da plataforma .NET para construir, instalar e rodar qualquer aplicao, no desktop ou na Internet. Para executar um programa .NET, preciso ter o Framework instalado. IDE COMPARTILHADO - Ambiente integrado de programao (Integrated Development Environment) do Visual Studio.NET. Diferentes linguagens usam o mesmo editor de cdigo e depurador e compilam executveis na linguagem MSIL. Alm das linguagens da Microsoft, j h mais de 20 outras (Perl, Cobol, Pascal, etc) que podem usar esse ambiente. MSIL - Microsoft Intermediate Language. Quando se compila uma aplicao .NET, ela convertida para uma linguagem intermediria, a MSIL, um conjunto de instrues independentes de CPU. Na hora de executar o programa, um novo compilador, chamado Just-in-time (JIT) Compiler, o converte para o cdigo nativo, ou seja, especfico para o processador da mquina. MANAGED CODE - Cdigo administrado, ou seja, cdigo escrito para rodar com o runtime do VS.NET. No VS.NET, somente o C++ produz programas que no dependem do runtime, o chamado Unmanaged code. SOAP - Sigla de Simple Objetc Access Protocol, ou protocolo simples de acesso a objetos. O SOAP um padro aberto, baseado em XML, criado pela Microsoft, Ariba e IBM para padronizar a transferncia de dados entre aplicaes. Pode ser usado em combinao com vrios outros protocolos comuns da Internet, como HTTP e SMTP. UDDI - Iniciais de Universal Description, Discovery and Integration, uma espcie de pginas amarelas para web services. Na UDDI, empresas expem seus servios para que outras possam utiliz-los. WEB SERVICES - programa completo ou componente de software residente num servidor web. XML - Sigla de Extensible Markup Language, o XML uma linguagem baseada em tags semelhante ao HTML. Sua principal caracterstica a extensibilidade. Quem emite um documento XML pode criar tags personalizadas, que so explicadas num documento anexo, que tem extenso XSD. XSD - Sigla de XML Schema Definition. Arquivo associado a um documento XML que descreve e valida aos dados no documento. Assim como as linguagens de programao, os XSDs aceitam dados de diferentes tipos, como nmeros, data e moeda.

Curso de Introduo a Plataforma .Net FrameWork SDK

3

XML WEB SERVICES - Blocos fundamentais para a criao de sistemas de computao distribuda na Internet. Um servio web uma poro de cdigo localizada num servidor web e que pode ser utilizada por uma aplicao qualquer. O web service pode produzir documentos ou procedimentos. Uma das caractersticas centrais dos web services serem baseados em padres abertos. WSDL - Web Service Description Language. Submetida W3C - o rgo padronizador da Internet - . A linguagem WSDL define regras baseadas em XML para descrever servios web.

Curso de Introduo a Plataforma .Net FrameWork SDK

4

Captulo 2 - ASP.NETIntroduo A Microsoft sabendo da dificuldade que os desenvolvedores tm para construir sites complexos para Web, resolveu criar uma nova plataforma de desenvolvimento. a que aparece o ASP.Net, uma soluo poderosa, produtiva, e fcil de usar que vai muito alm de pginas HTML convencionais. O ASP.Net uma nova verso do ASP (Active Server Pages), uma plataforma unificada de desenvolvimento da Web, que fornece os servios necessrios para os desenvolvedores construrem conjuntos de aplicaes da Web atravs de um novo modelo de programao, a arquitetura de trs camadas. O ASP.Net vai revolucionar o desenvolvimento para a Web, pois a primeira ferramenta RAD (Rapid Application Design) para o desenvolvimento de aplicativos especficos para a Web, por isso podemos afirmar que todo o ciclo de desenvolvimento ser o mesmo de outras tecnologias como Visual Basic tradicional e Delphi. Os aplicativos ASP.Net rodam sob o Servidor Web da Microsoft IIS (Information Internet Server) com algumas rotinas suplementares instaladas. Apesar do ASP.Net rodar somente no Servidor Web IIS da Microsoft, as pginas so acessveis em qualquer navegador, mesmo que no tenha sido desenvolvido pela Microsoft, e em qualquer Sistema Operacional, pois aplicao depender apenas do Browser, ou seja, do navegador. Se repararmos o processo de evoluo para a criao de aplicativos para a Web, vamos observar que o grande intuito desta nova tecnologia resolver os problemas encontrados no ciclo de desenvolvimento das ferramentas atuais. Para quem deseja aplicar esta nova tecnologia, importante ressaltar que no necessrio entender de outras tecnologias como JavaScript, HTML, VbScript, ou mesmo o ASP tradicional, pois o ASP.Net tem como base a inspirao em ferramentas RAD como VB Tradicional e o Delphi, por isso podemos afirmar que o enfoque o desenvolvimento de software. Isso tudo representa uma nova maneira de analisar o desenvolvimento de software para a Web.

Do HTML ao ASP.NET Originalmente, os sites para a Web eram muito simples. Havia pginas somente em HTML, por isso dizemos que eram aplicaes estticas. O que funcionava muito bem para alguns sites como Jornais, Exposio de Catlogos e Materiais Didticos, dentre outros. O HTML evoluiu, j era possvel criar uma interatividade com o usurio, mas um contedo dinmico ainda estava faltando. Ento o processamento de servidor foi introduzido, surgindo da o modelo cliente/ servidor. A Internet trabalha no modelo cliente/servidor. Isto , dois computadores trabalham juntos, enviando as informaes de um lado para outro, para realizar uma tarefa. Neste cenrio as informaes esto contidas no servidor, o cliente apenas faz a solicitao daquilo que lhe conveniente.

Curso de Introduo a Plataforma .Net FrameWork SDK

5

Quando o cliente envia uma solicitao de informaes ao computador servidor, este ento processa o pedido e retorna as informaes de solicitao em HTML. Esse paradigma o modelo de solicitao/resposta, e parte integrante do modelo cliente/ servidor. Este modelo permite que o servidor retorne contedo dinmico ao cliente, como dados em banco de dados e o resultado de clculos. Este fluxo de trabalho o seguinte: 1. O Cliente (Navegador Web) localiza o servidor da Web por URL (como www.globo.com). 2. O Cliente solicita uma pgina (como cadastro.asp) 3. O Servidor examina a solicitao e processa a sada codificada em HTML. 4. O Cliente recebe o documento e o exibe. Neste cenrio, o servidor no tem a mnima idia do que o cliente esta fazendo, a menos que este faa outra solicitao. O ASP.Net trabalha em outro modo de comunicao entre clientes e servidores Web, que conhecido como modelo baseado em eventos. Isso quer dizer que o servidor espera algo acontecer no cliente. Quando ocorre, o Servidor toma medidas para realizar alguma funcionalidade. Ento podemos afirmar que o Servidor vai responder a suas aes. Se o cliente clica em uma imagem ou seleciona um CheckBox, o Servidor exerce uma ao. O ASP.Net funciona assim detecta aes e as responde. Para isso o ASP.Net conta com um processamento inteligente do lado cliente para simular um modelo baseado em eventos. Voc deve estar questionando ento, como o ASP.Net sabe o que est acontecendo no cliente j que um script do lado cliente no pode interagir com o cdigo do lado servidor, e sabendo tambm que a nica maneira de o cliente comunicar-se como servidor durante uma solicitao. Bem, o ASP.Net inteligentemente limita esse problema. Ao utilizar o script do lado cliente, o ASP.Net fornece informaes sobre o que o cliente est fazendo as solicitaes, como se o ASP.Net coloca-se alguns espies no cliente, de modo que o servidor seja informado sobre tudo que est acontecendo do lado do cliente. Os espies do ASP.Net so os scripts do lado do cliente, que no podem interagir com o lado servidor, mas podem transmitir mensagens por meio de postagens para o servidor. Portanto, o ASP.Net faz essa unio com o servidor e o cliente. Este conceito que o ASP.Net implementa facilita a vida o programador, que no precisa mais se concentrar em direcionar solicitaes e respostas, o programador fica livre para se concentrar na construo da lgica. Voc pode reagir s ocorrncias do usurio imediatamente em vez de esperar que os formulrios sejam submetidos. E pode conhecer a estrutura da interface com o usurio e como lidar com elas antecipadamente. O ASP.Net realmente facilita a vida dos desenvolvedores.

Curso de Introduo a Plataforma .Net FrameWork SDK

6

Como o ASP.Net Funciona Assim como o VB e o Delphi, o desenvolvimento feito sobre formulrios (pginas .aspx + fonte em linguagem de alto nvel). Um formulrio esta associado a um arquivo com a extenso .aspx e tambm a um fonte de linguagem de alto-nvel, como VB.Net, C#, J#, entre outras. Sobre os formulrios so adicionados componentes que tm propriedades, mtodos e eventos. Por isso podemos afirmar que esta tecnologia orientada a objetos. Este modelo de fcil entendimento e muito mais produtivo. O ASP.Net tambm mais rpido que os scripts como o JavaScript, e tecnologias como o antigo ASP. Isso ocorre porque seus programas so compilados, o que d mais velocidade e segurana de cdigo-fonte. Entretanto devemos observar que, em vez de compilar em algo que o computador entenda, o desenvolvedor o compila em uma linguagem intermediaria, chamada Microsoft Intermediate Language ( MSIL ). As pginas ASP.Net so compiladas em MSIL. Ao compilar em MSIL, suas aplicaes criam algo chamado metadados. Que so as informaes descritas sobre o seu aplicativo. Ento, quando voc quiser executar seu programa, a CLR (Common Language Runtime) assume e compila o cdigo mais uma vez na linguagem nativa do computador. Dessa maneira, a MSIL pode se comunicar com qualquer tipo de computador. A CLR pode falar muitas linguagens de computador diferentes, como C#, VB.Net, J#, Cobol.Net, Pascal.Net, entre outras, alm de fazer toda a compilao. Acompanhe na figura 2.1 o esboo da estrutura tradicional de um aplicativo versus a .Net FrameWork. Figura 2.1 Modelo Tradicional versus Modelo .Net FrameWork.

Modelo Tradicional

Compila em cdigo de mquina

CDIGO

APLICATIVO

Curso de Introduo a Plataforma .Net FrameWork SDK

7

Modelo .Net FrameWork

Compila em cdigo de mquina

CDIGO MSIL com metadados CLS

Aplicativo

A CLR utiliza os metadados para descobrir como executar o aplicativo. Com metadados no h nenhuma necessidade de requerer informaes sobre os aplicativos a serem armazenados em um registro, como era realizado no modelo tradicional, porque todas as informaes necessrias so armazenadas com os arquivos do aplicativo; assim, qualquer alterao que voc fizer ser colocada em efeito automaticamente. Imagine instalar um novo aplicativo somente copiando alguns arquivos! O cdigo que trabalha com CLR chamado cdigo gerenciado. Esse nome dado ao CLR pelo fato dele gerenciar sua execuo e fornecer benefcios (como gerenciamento de recursos, tratamento de erros, recursos de segurana, controle de verso, etc) sem o programador ter que constru-lo manualmente. O cdigo que executado fora da CLR conhecido como cdigo no-gerenciado.

Criando Pginas ASP.Net As pginas ASP.Net so simplesmente texto puro, como arquivos em HTML. Para que as pginas possam ser executadas e mostradas, voc precisa ter instalado o .Net FrameWork e um servidor Web(IIS). As pginas ASP.Net tm extenso .aspx, ento quaisquer arquivos que voc quer que o servidor interprete como um aplicativo ASP.Net deve terminar em .aspx, como index.aspx. Mas antes de apresentar um aplicativo na maneira ASP.Net, vamos mostrar a criao e execuo de um programa em C# na maneira convencional.

Curso de Introduo a Plataforma .Net FrameWork SDK

8

Maneira Convencional Vamos apresentar um exemplo de um programa no interativo, que apenas escreve as palavras MEU PRIMEIRO EXEMPLO!, na tela do monitor. Existem no mercado muitas ferramentas de desenvolvimento para os aplicativos .Net, como Microsoft Visual Studio.Net e Macromedia Dreamweaver MX. Neste curso utilizaremos o famoso Bloco de Notas para desenvolver nossos aplicativos. Teremos com certeza mais trabalho em desenvolver nossos aplicativos com o bloco de notas, mas teremos a vantagem de no ficaremos presos a uma ferramenta. Siga os seguintes passos para a criao e execuo deste exemplo: 1. Abra o bloco de notas e digite as linhas abaixo:using System; class Primeiro { public static void Main( ) { // Parte renderizvel Console.WriteLine(VarMensagem);

}

// Parte programtica static String VarMensagem = Meu Primeiro Exemplo!; }

2. Crie um diretrio (digamos com o nome: CursoNet) e nela grave o arquivo digitado acima com o nome: Primeiro.cs. 3. Abra a janela de comando (janela do DOS) e atravs o comando cd dirige-se para o diretrio criado anteriormente onde voc salvou o arquivo. 4. Para compilar o programa, digite:

csc Primeiro.csSer criado um arquivo: Primeiro.exe 5. Para disparar o programa basta digitar:

Primeiro6. O programa comea a ser executado, o momento chamado de init. 7. feito o render (desenho na tela do monitor) do que o programa previa que deveria ser renderizado. A figura 2.2 apresenta os passos seguidos.

Curso de Introduo a Plataforma .Net FrameWork SDK

9

Figura 2.2 acompanhe a compilao e execuo do programa.

Maneira ASP.Net Se voc j instalou o .Net FrameWork SDK 1.0 em seu computador, ento voc est pronto para criar seu primeiro programa na tecnologia ASP.Net. Este nosso primeiro exemplo tem o mesmo objetivo do programa desenvolvido para a maneira convencional, o programa exemplo vai renderizar na tela do monitor de um cliente a mensagem - Meu Primeiro Exemplo! que vem de um computador servidor. Para o exemplo usaremos apenas um nico computador. Ou seja, o computador servidor e o computador cliente sero o mesmo. Para que o cliente ento possa acessar o servidor (virtualmente falando), usaremos o endereo: http://127.0.0.1 no browser, ou tambm o endereo http://localhost. Basta acompanhar os passos abaixo para que o exemplo funcione: 1. Abra o bloco de notas e digite as linhas de cdigo do programa.

private String VarMensagem = Meu Primeiro Exemplo!; public void Page_Load(Object sender, EventArgs ea) { saida.Text = VarMensagem; }

Curso de Introduo a Plataforma .Net FrameWork SDK

10

2.

Vamos criar um diretrio com o nome CursoNet, sob o path de diretrios j existentes(so diretrios ligadas ao IIS), onde o padro : c:\Inetpub\Wwwroot, e salve o arquivo digitado acima com o nome de: primeiro.aspx.

3.

Abrir o browser e colocar o seguinte endereo : http://127.0.0.1/cursonet/primeiro.aspx ou http://localhost/cursonet/primeiro.aspx Este passo acontece no cliente!

4.

O programa compilado automaticamente por um compilador Just In Time e depois executado. Ento o programa disparado automaticamente e comea a ser executado. Este momento chamado de init. Este passo acontece no servidor!

Curso de Introduo a Plataforma .Net FrameWork SDK

11

5.

realizado o render (desenho na tela do monitor do cliente) do que o programa previa que deveria ser renderizado. Este passo acontece no servidor e no cliente!

Mantendo o Estado de uma Pgina ASP.Net A manuteno de estado dos componentes quando existe um PostBack (um post para a prpria pgina) automtica. Isso possvel porque quando uma determinada pgina .aspx chamada pela primeira vez criado na memria do servidor um pool de algumas instancias da classe que tem o nome da pgina e que herdeira de uma classe Page. Novas solicitaes daquela mesma pgina, seja ela pelo mesmo cliente ou por outro, no criaro, ao menos que o arquivo sofra alguma mudana, novas instancias desse objeto. O que criado junto com a primeira solicitao daquela pgina um objeto da classe ViewState, que por sua vez cria uma referencia quele dado objeto herdeiro de Page. Quando uma pgina reenviada para o servidor comea um novo ciclo chamado de ROUNDTRIP que consegue localizar aquela sua instancia de ViewState e remonta um objeto tipo Page idntico ao anterior. Este esquema desenvolvido faz parecer como se cliente tivesse um objeto tipo Page permanentemente dele, o tempo todo conectado, o que no verdade. Isso faz com que os componentes utilizados na aplicao consigam manter automaticamente os seus valores. A informao de estado em si pode ser armazenada em diversos locais. O mais comum na memria do servidor, como o Asp tradicional faz hoje, mas podemos tambm armazenar informaes de estado em um servidor de estado, no SQL Server ou at mesmo escrevendo cdigo para exercer tal funcionalidade.

ViewState O ViewState descreve o aspecto de um objeto em um dado momento. Dizemos que um aplicativo que monitora essas informaes mantm (ou monitora) o estado. Os formulrios Web em HTML no tm esse poder, isso porque a Web uma mdia sem informaes de estado. O ASP.Net monitora automaticamente o ViewState para voc. Isso pode ser feito porque o ASP.Net gera sada de campos de formulrios ocultos em HTML sempre que voc instruir um formulrio a executar no servidor. Para que isto ocorra preciso que o desenvolvedor instrua o formulrio e seus componentes a executar no servidor, portanto devemos incluir a clausula runat em cada um destes componentes:

Curso de Introduo a Plataforma .Net FrameWork SDK

12

Acompanhe a sintaxe:

runat=serverPor exemplo, veja a linha a seguir escrita no servidor:

Isso envia o cdigo a seguir em HTML para o navegador:

O campo oculto do formulrio com o nome - _VIEWSTATE, possui um valor em uma string de caracteres, que a forma que o ASP.Net utiliza para reconhecer cada controle. Quando o formulrio enviado, o ASP.Net recupera esse valor automaticamente e utiliza para preencher as informaes do formulrio novamente. Este esquema o ASP.Net utiliza para escrever lembretes para si prprio nas pginas que so enviadas para o cliente. Na figura 2.3 podemos acompanhar o fluxograma do ASP.Net, desde o instante da solicitao ao servidor at exibio do cdigo para o cliente. Figura 2.3 - Fluxograma do ASP.Net, da solicitao exibio.

SERVIDORSOLICITAO

CLIENTE

RETORNA HTML PARA EXIBIO

PRIMEIRA VEZ? No TRATA DE EVENTOS

Sim COMPILA

EXECUTA O CDIGO

TRADUZ PARA HTML

Curso de Introduo a Plataforma .Net FrameWork SDK

13

Quase todo o HTML da pgina gerado em tempo de execuo pelos componentes. Por isso o componente gera HTML conforme o seu estado e o navegador usado naqueles instantes. Se necessrio o componente gera JavaScript. uma maneira de os componentes funcionarem independentes do navegador. Em termos de desenvolvimento de ASP.Net, a CLR d ao programador muito menos com que se preocupar. Ele gerencia a memria e oferece aos aplicativos ASP.Net muito mais desempenho e estabilidade. Com o melhor isolamento de falhas no mais necessrio a pratica de reinicializar o servidor de Web IIS ou qualquer outro servidor Web, se a aplicao cair. Por isso podemos dizer que o ASP.Net muito mais estvel e eficiente que os mtodos anteriores de desenvolvimento para a Web. Importando Espaos de Nome Cada espao de nome na .Net FrameWork essencialmente uma coleo de bibliotecas. O ASP.Net possui suas prprias bibliotecas, mas, s vezes, esse conjunto no suficiente. Portanto voc pode desenvolver suas prprias bibliotecas, o que j de costume na programao. Voc pode acessar suas bibliotecas adicionais utilizando a palavra-chave Import. Acompanhe um exemplo:

Estas linhas importam todas as classes dos namespaces descritos acima. O espao de nome System.Data.SqlClient importa por exemplo, os objetos SqlConnection, SqlCommand, SqlDataReader e SqlDataAdapter. Este recurso facilita bastante para o desenvolvedor chamar seus objetos e mtodos no aplicativo. apenas uma maneira mais fcil e rpida de fazer isso. Existe ainda uma outra maneira de se fazer isso, utilizando a seguinte sintaxe: Dim Conn As System.Data.SqlClient.SqlConenction Dim Cultura As System.Globalization.CultureInfo

DICA:Importar um espao de nome, porm, no importa os espaos de nome abaixo dele. Somente as classes que pertencem a essa interface so importadas.

Curso de Introduo a Plataforma .Net FrameWork SDK

14

Objeto SESSION Na primeira solicitao de um determinado cliente ao aplicativo ASP.Net, criado um objeto do tipo Dictionary chamado Session. Nele podemos guardar qualquer valor com strings e nmeros que podero ser lidos em qualquer pgina da aplicao. Em cada objeto tipo ViewState do cliente existe um pointer para ele. Para fixar melhor ento, podemos dizer que um cliente vai ter um objeto Session e vrios objetos do tipo ViewState. Quando uma pgina chamada pela primeira vez disparado o evento OnStarSession. Na pasta da aplicao podemos adicionar um arquivo chamado global.asax em que possvel programar o mtodo Session_OnStart que ser executado quando ocorrer o evento. Podemos ento criar variveis de sesso no objeto Session, que podero ser lidas em todas as pginas. Este recurso muito utilizado para contar o numero de usurios conectados no site por exemplo. Portanto, para tornar uma varivel acessvel em outras pginas da aplicao, devemos desenvolver variveis de sesso usando aquele objeto Session. Acompanhe o exemplo abaixo:
public Sub MetodoEnviar(Obj As Object, ea As EventArgs) Dim VarTemp As String VarTemp = entrada.Text Session.Add("VarSessao", VarTemp) saida.Text = Convert.ToString(Session.Item("VarSessao")) End Sub

Curso de Introduo a Plataforma .Net FrameWork SDK

15

Vantagens Adicionais Alm de aumentar a produtividade no desenvolvimento, o ASP.Net traz diversos novos recursos que os desenvolvedores iro apreciar como novidades para manter sesses, configurar o Servidor atravs de arquivos xml, gerenciar idiomas, criar WebServices e manter a segurana do cdigo fonte atravs de compilao. Vamos ver com mais detalhes: Flexibilidade para manter estado do aplicativo, pois evita o uso de variveis de sesses, mantendo automaticamente os seus valores. A configurao do aplicativo feita atravs de arquivos XML. Isto significa que ela fcil de alterar e no exige a interferncia do administrador do servidor. Facilidade em utilizar diversas culturas diferentes. Trocar a cultura usada em seu aplicativo implica em mudar uma nica linha no arquivo XML de configurao. Pode tambm ser tratada no cdigo, em tempo de execuo. Possui um mesmo modelo de projeto, podendo conter pginas aspx e tambm WebServices. Os aplicativos em ASP.Net so compilados ganhando em velocidade de execuo e possui a impossibilidade de pessoas no autorizadas enxergarem o seu cdigo-fonte. O ASP.Net um grande passo frente no desenvolvimento de aplicativos que rodam em servidores Web. Os ganhos de produtividade e a facilidade de desenvolvimento so inmeras vezes maiores que algumas tecnologias utilizadas, como ASP, PHP, CGI, JavaScript, entre outras.

Curso de Introduo a Plataforma .Net FrameWork SDK

16

Captulo 3 VariveisPodemos dizer que uma varivel um espao alocado na memria RAM para ser utilizada por um ou mais processos que necessitam de armazenar ou manipular alguma informao. Ou ainda, variveis representam locais de armazenamento. Essas variveis so reconhecidas por um nome que lhe atribudo. As variveis devem ser declaradas, assim ter um tipo associado a ela que determinar que valores podem ser armazenados e manipulados. O contedo de uma varivel pode mudar no decorrer do programa. Voc pode dar o nome que quiser a uma varivel, mas existem algumas restries como: O nome deve conter letras, nmeros, ou caracteres de sublinhado( _ ); Este nome deve conter no mximo 255 caracteres.

importante ressaltar que voc adote um padro para a declarao destas variveis, para facilitar possveis reparos no sistema desenvolvido.

Como definido no podemos atribuir qualquer valor a uma varivel, sem antes defini-la. Veja abaixo a sintaxe para declarao de variveis em C# e VB.NET:

Para C#: Exemplo:

TIPO NomeDaVariavel string Recebe_Indice;

Para VB.Net: Dim NomeDaVariavel AS TIPO Exemplo: Dim Recebe_ndice AS Integer;

Se estas variveis forem declaradas dentro de um procedimento ou bloco, podero ser acessveis apenas dentro deste procedimento ou bloco. Na figura 3.1, o programa feito em C# tem um procedimento chamado de TestaVariavel( ), onde declarado uma varivel com o nome de VarEscreve. Esta varivel estar acessvel somente no procedimento em que foi declarada, neste exemplo, no procedimento TesteVariavel( ). Portanto se tentar solicitar esta varivel fora do procedimento acontecer um erro.

Curso de Introduo a Plataforma .Net FrameWork SDK

17

Figura 3.1 programa em C#.using System; public class BlocoTeste { public void TestaVariavel( ) { string VarEscreve; // ser acessvel apenas neste procedimento VarEscreve = "Teste de varivel"; Console.WriteLine(VarEscreve); } public static void Main( ) { BlocoTeste objBloco = new BlocoTeste( ); objBloco.TestaVariavel( ); }

}

Na figura 3.2, um programa em Visual Basic.Net , tem um exemplo de uma varivel declarada com o nome VarEscreve em um bloco de execuo. Esta varivel ser acessvel apenas neste bloco de execuo, qualquer chamada a esta varivel fora, vai ocorrer um erro.

Figura 3.2 - programa em Visual Basic.netImports System Public Class BlocoTeste Public Shared Sub Main() Dim K AS Integer For K = 1 To 10 Dim VarEscreve E AS Integer ser acessvel apenas neste bloco If (k Mod 2) = 0 Then VarEscreve = k Console.WriteLine(VarEscreve) End If Next K End Sub End Class

Dica: utilize nomes que sejam adequadamente descritivos. No utilize

nomes de variveis temporrias, nem reutilize nomes isso vai tomar o cdigo confuso!

Curso de Introduo a Plataforma .Net FrameWork SDK

18

3.1 Variveis na linguagem C#.Na linguagem C# as variveis esto agrupadas em algumas categorias como: Static: Existe apenas uma nica cpia desta varivel para todas as instancias de uma classe. Uma varivel static comea a existir quando um programa comea a executar, e deixa de existir quando o programa terminar. Instance: existe uma cpia para cada instancia de uma classe. Uma varivel Instance comea a existir quando uma instancia daquele tipo criado, e deixa de existir quando no houver nenhuma referncia quela instancia ou quando e mtodo Finalize executado. Array: uma matriz que criada em tempo de execuo. Tipos Podemos armazenar muitos tipos de informaes diferentes dentro de uma varivel, como nmeros, datas, e strings. Nesta linguagem, seus tipos podem ter dois tipos: Por Valor: os valores so gerenciados diretamente na memria. Por Referencia: os valores so passados por meio de um ponteiro. Inteiros (por valor) Este tipo um numero inteiro sem frao ou parte decimal. Por exemplo, o nmero 1058 um numero inteiro. O tipo inteiro subdividido em alguns subtipos. Veja a figura 3.1.1 que mostra estes tipos de inteiro. Figura 3.1.1 tipos de inteiro. Tipobyte sbyte int uint long ulong short ushort

DescrioInteiro de 1 bit sem sinal (0 a 255) Inteiro com sinal de 8 bits (-127 a 128) Inteiro de 32 bits com sinal (-2.147.483.648 a 2.147.483.147) Inteiro de 32 bits sem sinal (0 a 4.294.967.295) Inteiro com sinal de 64 bits (-9.223.372.036.854.775.808 a 9.223.372.036.854.775.807) Inteiro sem sinal de 64 bits (0 a 18.446.744.073.709.551.615) Inteiro com sinal de 16 bits (-32.768 a 32.767) Inteiro sem sinal de 16 bits (0 a 65.535)

Exemplos: byte VarIdade = 25; int VarValor = 1.542; long VarValor = 5.684.548.520; short VarInd = 25.620;

Curso de Introduo a Plataforma .Net FrameWork SDK

19

Lgicos (por valor) Esses tipos so usados para comparao. Portanto esses tipos s podem assumir os valores verdadeiro ou falso. Tipobool

Descriotrue ou false

Exemplos: bool VarDesativado = false; bool VarCondicao = true;

Caracteres (por valor) Este tipo armazenado em 16 bits, representa um caractere de uma string. Essas variveis so armazenadas no padro Unicode. Tipochar

DescrioUm nico caractere Unicode de 16 bits.

Exemplos: Char VarChar = a; Representa um caractere literal. Char VarChar = \x0025; Representa um caractere hexadecimal. Char VarChar = \u0025; Representa um caractere Unicode. Char VarChar = (char)25; Retorna o caractere correspondente na Tabela ASCII.

Figura 3.1.2 - neste exemplo retornado o valor correspondente ao caractere 25 da tabela ASCII.using System; public class CharTeste { public static void Main() { char VarTeste = (char)25; Console.WriteLine(VarTeste); } }

Curso de Introduo a Plataforma .Net FrameWork SDK

20

Ponto Flutuante (por valor) As variveis com este tipo possuem nmeros com ponto flutuante utilizando o padro IEEE de 4 a 8 bytes. Tipodouble float

DescrioPonto flutuante binrio de 8 bytes ( 1.5 x 10 -45 a 1.7 x 10308 ) Este tipo tem uma preciso de 15 casas decimais. Ponto flutuante binrio de 4 bytes ( 1.5 x 10 -45 a 3.4 x 1038 ) Este tipo tem uma preciso de 7 casas decimais.

As operaes com este tipo no geram erros, mas h alguns ressaltos que devemos saber: Se o valor retornado para a varivel conter um nmero muito pequeno, este valor torna-se zero. Uma diviso por zero no causa um erro, mas produzido um valor infinito. Operaes de ponto flutuante devolvem NaN (Not a Number) para sinalizar que aquele resultado da operao indefinido. Portanto se um dos operadores for NaN o resultado retornado ser NaN. Exemplos: float VarIndice = 3.1356F; double VarCorrecao = 5.12D;

Decimal (por valor) O tipo decimal representa com mais preciso nmeros no inteiros e com um valor muito alto. Tipodecimal

DescrioPonto flutuante decimal de 128 bytes ( 1.5 x 10 -45 a 1.7 x 10308 ) Este tipo tem uma preciso de 28 casas decimais.

Exemplos: decimal VarIndice = 560.5m; decimal VarCorrecao = 545.2m;

Curso de Introduo a Plataforma .Net FrameWork SDK

21

String (por referncia) Este tipo pode conter at 1 gigabyte de caractere e alocado dinamicamente, por isso dizemos que este tipo por referncia.

Tipostring

DescrioUnicode com at 1 gigabyte de caractere.

Exemplos: string VarNome = Claudio Junior; string VarEmail = [email protected]; string VarConcatenar = VarNome + VarEMail; As strings so compostas por caracteres e podem conter literais caracteres. Veja a representao dos literais strings: Tipo\ \ \\ \0 \a \b \f \n \r \t \v \uNNNN

DescrioApstrofo Aspas Barra invertida Zero binrio ou nulo Alerta Retrocesso Avano de pgina Salto de linha Retorno de carro Tabulao horizontal Tabulao vertical NNNN o cdigo em hexadecimal

Uma representao importante das string a arroba ( @ ), utilizada para especificar nomes de arquivos e pastas. Exemplos: string VarLinha = Pula Linha \n; string VarCaminho = @c:\temp\oledb.txt; Neste caso com o uso da arroba ( @ ) a representao dos caracteres de barra invertida ( \ ) no feita dentro da string.

Curso de Introduo a Plataforma .Net FrameWork SDK

22

Object (por referncia) Este tipo muito utilizado por programadores, um termo geral para uma varivel que no especificado como outro tipo de dados, por isso torna-se um tipo universal. Em certas situaes torna-se indispensvel atribuir e instanciar um objeto.

Tipoobject

DescrioAtribuir a um objeto.

Exemplos: Object VarNome = Rubens Barrichello; Este objeto recebe o valor de uma string. Object VarIdade = 29; Este objeto recebe o valor de um numero; Object VarAtivar = true; Este objeto recebe um valor lgico.

Converso de Valores Converter um tipo de dado em nmero ou em literal comum em situaes de programao. Quando esta aplicao for destinada a Web com intervenes de internautas, esse recurso utilizado com mais freqncia ainda. comum o internauta testar a aplicao para ter certeza que o desenvolvedor se preocupou com as devidas converses de valores. Devemos considerar alguns aspectos para a converso de nmeros: Como existem diversos tipos de nmeros, inteiros, ponto flutuante ou decimal, os valores so convertidos sempre para o tipo de maior faixa de valores. Por exemplo, o tipo long convertido para o ponto flutuante, mais importante ressaltar que o contrario causa um erro. Os tipos de menor faixa so convertidos para os de maior faixa. Por exemplo, o tipo int pode ser convertido para: long, float, double ou decimal. A converso dos tipos de ponto flutuante(float, double) para decimal causa erro. A converso entre os tipos com sinal e sem sinal de valores inteiros com o mesmo tamanho causa erro. Por exemplo, entre o tipo int e unit.

Curso de Introduo a Plataforma .Net FrameWork SDK

23

Caso precise forar uma converso mesmo que haja perda de informaes, a linguagem disponibiliza um operador com este recurso. Exemplos: int VarValor = (int)8544555L; Neste caso a varivel inteira vai receber o quanto poder suportar do tipo long. long VarValor = (long)29.145; Neste caso a varivel inteira do tipo long suportar o quanto for possvel do nmero no inteiro.

Em alguns casos os tipos de converso no precisam ser especificados pelo desenvolvedor, essa converso feita automaticamente. Figura 3.1.3 - os tipos de converso automtica: Tiposbyte byte short ushort int uint long ulong char float

Converte emshort, int, long, float, double, decimal short, ushort, int, uint, long, ulong, float, double, decimal int, long, float, double, decimal int, uint, long, ulong, float, double, decimal long, float, double, decimal long, ulong, float, double, decimal float, double, decimal long, double, decimal ushort, int, uint, long, ulong, float, double, decimal double

Exemplos: int VarInteiro = 32450; long VarLong = VarInteiro; float VarFloat = VarLong; double VarDouble = VarFloat; decimal VarDecimal = VarLong; byte VarByte = (byte)VarInteiro; int VarInteiro = (int)31.245F;

Curso de Introduo a Plataforma .Net FrameWork SDK

24

Checked e Unchecked Toda converso pode causar erro , mas existe uma forma de forar a converso sem que cause um erro. Para isso so utilizados o checked e o unchecked. Figura 3.1.4 Exemplo do checked e do unchecked.using System; public class Checar { public static void Main() { int X = 2147483647; int Y = 2; int Produto = 0; unchecked { Produto = X * Y; Console.WriteLine("Resultado da Converso: "+Produto); // retorna -2 } checked { try { Produto = X * Y; Console.WriteLine("Resultado da Converso: "+Produto); } catch(OverflowException e) { Console.WriteLine("Mensagem de Erro: "+e.ToString()); }// Causa erro na compilao

} }

Veja a sada deste programa:

Curso de Introduo a Plataforma .Net FrameWork SDK

25

Operadores Operadores so smbolos utilizados para efetuar alguma ao. Veja a tabela de operadores que o C# suporta. Tipoaritmticos lgicos concatenao Incremento e decremento deslocamento relacional Igualdade atribuio condicional criao de objetos primrios

Operador+ - * / % & | ^ ! ~ && || + ++ -> < > = == != = *= /= %= += = &= ^= ?: new typeof sizeof is checked unchecked

Tipos definidos pelo programador Uma grande maioria das linguagens de programao permite ao desenvolvedor definir seus prprios tipos, que podem ser usados em qualquer situao que normalmente um outro tipo poderia ser utilizado. Enum (por valor) O tipo enum usado para declarar uma enumerao, um tipo distinto que consiste em um jogo de constantes nomeadas chamadas a lista de enumerados. Figura 3.1.5 exemplo de um tipo enum, definido pelo desenvolvedor.using System; public class EnumTest { enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; public static void Main() { int x = (int) Days.Sun; int y = (int) Days.Fri; Console.WriteLine("Sun = {0}", x); Console.WriteLine("Fri = {0}", y); } }

Curso de Introduo a Plataforma .Net FrameWork SDK

26

Veja a sada do programa da figura 3.1.5.

Struct (por valor) Permite declarar tipos que contem diversos valores identificados pelo nome. Um tipo de struct um tipo de valor que pode conter construtores, constantes, campos, mtodos, propriedades, dentre outros. A declarao de um struct leva a forma seguinte:

Atributo struct IdentificadorDoTipoFigura 3.1.6 exemplo de um tipo struct.using System; public struct Point { public int x, y; public Point(int x, int y) { this.x = x; this.y = y; }

} class MainClass { public static void Main() { // Declare an object: Point myPoint; // Initialize: myPoint.x = 10; myPoint.y = 20; // Display results: Console.WriteLine("My Point:"); Console.WriteLine("x = {0}, y = {1}", myPoint.x, myPoint.y); } }

Curso de Introduo a Plataforma .Net FrameWork SDK

27

Veja a sada do programa da figura 3.1.6.

New Independente do tipo todas as variveis podem ser inicializadas com o operador new. Caso sejam do tipo class, struct ou array, este operador obrigatrio. Exemplos do operador new: Para tipos primitivos:Tipo NomeVariavel = new Tipo( ); Int Valor = new int( );

Para classes:NomeClasse NomeInstancia = new NomeClasse( ); ClasseAluno ObjAluno = new ClasseAluno( );

Para structs:NomeStruct InstanciaTipo = new NomeStruct( ); RegistroAluno RegAluno = new RegistroAluno( );

No exemplo a seguir temos a criao de um tipo definido pelo desenvolvedor, o tipo struct, e a criao de um objeto de classe.

Curso de Introduo a Plataforma .Net FrameWork SDK

28

using System; class NewTest { struct MyStruct { public int x; public int y; public MyStruct (int x, int y) { this.x = x; this.y = y; } } class MyClass { public string name; public int id; public MyClass () { } public MyClass (int id, string name) { this.id = id; this.name = name; }

} public static void Main() { // Criao de objetos usando o construtor sem valores. MyStruct Location1 = new MyStruct(); MyClass Employee1 = new MyClass(); // Valores de sada: Console.WriteLine("Valores Default:"); Console.WriteLine(" Membros do Struct: {0}, {1}", Location1.x, Location1.y); Console.WriteLine(" Membros da Classe: {0}, {1}", Employee1.name, Employee1.id); // Criando objetos usando construtores parametrizados: MyStruct Location2 = new MyStruct(10, 20); MyClass Employee2 = new MyClass(1234, "John Martin Smith"); // Valores de sada: Console.WriteLine("Valores Inicializados pelo construtor:"); Console.WriteLine(" Struct members: {0}, {1}", Location2.x, Location2.y); Console.WriteLine(" Class members: {0}, {1}", Employee2.name, Employee2.id);

} }

Curso de Introduo a Plataforma .Net FrameWork SDK

29

Arrays Um tipo array uma matriz de valores do mesmo tipo, que criada em tempo de execuo, podendo ser acessada por meio de um ndice. A declarao do array sempre faz o uso de um colchete( [ ] ) depois do tipo da varivel. O uso da instruo new sempre deve ser utilizado, pois obrigatrio. O tipo array pode ter diversas dimenses, o tamanho desta definido pelo desenvolvedor, mas devemos saber que o primeiro ndice sempre zero. No tipo array devemos sempre inicializar seus elementos, pois obrigatrio tambm. Veja abaixo a forma de sintaxe para a declarao de arrays.TIPO [ ] NomeDoArray = new TIPO [ tamanho do array ]; float [ ] ValorIndice = new float [ 10 ]; string [ ] ElementoVetor = new string [ 10 ];

Veja abaixo a forma de sintaxe para a declarao de um array de duas ou mais dimenses.TIPO [ , ] NomeDoArray = new TIPO [ tamanho do array, tamanho do array ]; float [ , ] ValorIndice = new float [ 10 , 10 ]; string [ , , ] ElementoVetor = new string [ 10 , 10 , 10 ];

Veja abaixo a forma de sintaxe para a declarao de uma matriz de arrays.TIPO [ ] [ ] NomeDoArray = new TIPO [ tamanho do array ] [ tamanho do array ]; float [ ] [ ] ValorIndice = new float [ 10 ] [ 10 ]; string [ ] [ ] [ ] ElementoVetor = new string [ 10 ] [ 10 ] [ 10 ];

Veja abaixo a forma de sintaxe para a inicializao de arrays.TIPO [ ] NomeDoArray = new TIPO [ tamanho do array ] { valores }; float [ ] ValorIndice = new float [ 5 ] { 1.25, 2, 3.23, 1.32, 5 }; string [ , ] ElementoVetor = new string[3, 3] {{ab, ac, bc} , {ab, ac, bc}}; int [ ] [ ] MatrizDeInteiro = new int [ 2 ] [ ]; MatrizDeInteiro[ 0 ] = new int [ 5 ] {1,3,5,7,9}; MatrizDeInteiro[ 1 ] = new int [ 4 ] {2,4,6,8};

Curso de Introduo a Plataforma .Net FrameWork SDK

30

Exemplos e Exerccios: Exemplo 01 comparao.using System; public class Comparacao { public static void Main( ) { // Exemplos com nmeros. Console.Write("10 == 10: "); Console.WriteLine(10 == 10); Console.Write("10 != 10: "); Console.WriteLine(10 != 10); // Exemplos com objetos. object objeto1 = 10; object objeto2 = 10; Console.Write("objeto1 == objeto2: "); Console.WriteLine(objeto1 == objeto2); // Exemplos com strings. string VarA = "Unifenas"; string VarB = "Unifenas"; string VarC = String.Copy(VarA); Console.Write("VarA == VarB: "); Console.WriteLine(VarA == VarB); Console.Write("(object)VarA == (object)VarB: "); Console.WriteLine((object)VarA == (object)VarB); Console.Write("(object)VarA == (object)VarC: "); Console.WriteLine((object)VarA == (object)VarC); Console.Write(" VarA + VarB : "); // Concatenando strings Console.WriteLine(VarA + VarB);

} }

Veja a sada do programa acima:

Curso de Introduo a Plataforma .Net FrameWork SDK

31

Exemplo 2 Operaes matemticas.

using System; public class OperacoesMat { public static void Main( ) { int Valor1; // forma normal int Valor2 = new int ( ); // forma alternativa Valor1=Valor2=10; Console.WriteLine(" Console.WriteLine(" Console.WriteLine(" Console.WriteLine(" Console.WriteLine(" Console.WriteLine(" } } Valor1 = Valor2 = 10: "); Valor1: "+Valor1); ++Valor1: "+ ++Valor1); Valor2- - : "+Valor2--); Valor1 + 15 : "+(Valor1 + 15)); Valor2 - 5 : "+(Valor2 - 5));

Veja a sada do programa acima:

Curso de Introduo a Plataforma .Net FrameWork SDK

32

Exemplo 3 operadores lgicos:using System; public class Logicos { public static void Main( ) { bool VarA = true; bool VarB = !true; Console.Write(" VarA ? 'verdade' : 'falso' : "); Console.WriteLine(VarA ? "verdade" : "falso"); Console.Write(" VarB ? 'verdade' : 'falso' : "); Console.WriteLine(VarB ? "verdade" : "falso"); } }

Veja a sada do programa acima:

Curso de Introduo a Plataforma .Net FrameWork SDK

33

3.2 Variveis na linguagem Visual Basic.NetA linguagem Visual Basic.net tambm faz uso de variveis como toda linguagem de programao. O uso de variveis nos aplicativos desenvolvidos muito comum, principalmente para armazenamentos temporrios de informaes. Para a Web a utilizao de variveis inevitvel.

Tipos Toda varivel deve ter um tipo que define qual o tipo de informaes ou dados lhe convm. Para isso, toda varivel tem um conjunto de regras que determina o seu uso. Nesta linguagem os tipos so divididos em cinco categorias diferentes: inteiros, nmeros de ponto flutuante, booleanas, datas e strings.

Inteiros ( por valor ) Um nmero inteiro sem frao ou parte decimal dito como inteiro. Existem alguns subtipos de inteiros, de modo que voc possa assegurar um tamanho de memria adequado para um determinado dado. A figura 3.2.1 mostra os tipos de inteiros que a linguagem suporta. Figura 3.2.1 Subtipos de inteiros. TipoByte Short Integer

DescrioInteiro de 1 byte sem sinal (0 a 255) (tambm conhecido System.Int) como

Inteiro de 2 bytes com sinal ( -32.678 a 32.677) (tambm conhecido como System.Int16) Inteiro de 4 bytes com sinal ( -2.147.483.648 a 2.147.483.647) (tambm conhecido como System.Int32) Inteiro de 8 bytes com sinal ( - 9.223.372.036.854.775.808 a 9.223.372.036.854.775.807) (tambm conhecido como System.Int64)

Long

Exemplos: Dim Dim Dim Dim VarIdade As Byte = 25 VarValor As Int = 1542145120 VarValor As Long = 5684548520 VarInd As Short = 25620

Curso de Introduo a Plataforma .Net FrameWork SDK

34

Lgicos (por valor) O tipo lgico ou booleano utilizado para valores do tipo verdadeiro/falso. Na linguagem Visual basic.Net este tipo s pode ser verdadeiro ou falso, diferentes de outras linguagem onde poderia receber sim/no ou ainda 1/0. A figura 3.2.2 mostra o tipo booleano que a linguagem suporta. Figura 3.2.2 Tipos lgicos ou booleanos. TipoBoolean

DescrioPode ser somente true ou false. ( tambem conhecido como System.Boolean )

Exemplos: Dim VarAtivar As Boolean = true Dim VarAtivar As Boolean = false Dim VarAtivar As Boolean = Not true

Caracteres (por valor) Este tipo armazenado em 16 bits, representa um caractere de uma string. Essas variveis so armazenadas no padro Unicode. A figura 3.2.3 mostra o tipo char. Figura 3.2.3 tipo Char. Tipochar

DescrioUm nico caractere System.Char) Unicode. ( tambm conhecido como

Exemplos: Option Strict On ' ... Dim CharVar As Char CharVar = "Z" ' No pode converte de string para caractere com Option Strict On. CharVar = "Z"C ' Sucesso em atribuir um nico caractere a varivel CharVar.

Curso de Introduo a Plataforma .Net FrameWork SDK

35

Ponto Flutuante (por valor) Os nmeros com parte fracionria ou no inteiros so definidos como ponto flutuante. Nesse tipo tambm h subtipos, para que o desenvolvedor possa adequar melhor o tipo de informao com o espao reservado na memria. A figura 3.2.4 mostra os subtipos do ponto flutuante. Figura 3.2.4 Subtipos do ponto flutuante. Tipo DescrioUm nmero de 4 bytes com ponto de frao decimal. ((-3.4028235E+38 a -1.401298E-45 para valores negativos) e (1.401298E-45 a 3.4028235E+38 para valores positivos)). ( tambem conhecido como System.Single ) Um numero de 8 bytes com ponto de frao decimal. ((-1.79769313486231570E+308 a -4.94065645841246544E-324 para nmeros negativos) e (4.94065645841246544E-324 a 1.79769313486231570E+308 para valores positivos)). ( tambem conhecido como System.Double) Um numero de 12 bytes com ponto de frao decimal. ( tambem conhecido como System.Decimal)

Single

Double

Decimal

Exemplos: Dim VarSingle As Single = 312. 12 Dim VarDouble As Double = 5400. 45 Dim BigDec1 As Decimal = 9223372036854775807 Dim BigDec2 As Decimal = 9223372036854775808 Dim BigDec3 As Decimal = 9223372036854775808D

' No overflow. ' Overflow. ' No overflow.

Date (por referncia) Esse tipo armazena valores de datas e horas. O tipo de dados real chamado DateTime. As datas podem ser armazenadas em muitas formas diferentes, como por exemplo, 13/1/2002, segunda-feira, 13 de janeiro de 2002 6:02:58PM, dentre outras. Para o Visual Basic.net tudo isso data e fcil de fazer a converso de uma para outra. Voc deve estar perguntando porque no armazenar essas datas em strings. Bem voc pode se assim preferir, mais perde algumas funes que o Visual Basic.Net traz para este tipo de dado como - somar dias, horas e minutos. Vejamos abaixo a figura que mostra alguns detalhes do tipo Date.

Curso de Introduo a Plataforma .Net FrameWork SDK

36

Figura 3.2.5 Tipo Date TipoDate

DescrioSo armazenados em nmeros inteiros longos com 8 bytes que representam uma data na faixa de 1/1/1 at 31/12/9999. Com relao s horas valem de 0:00:00 at 23:59:59.

Exemplos: Dim Dim Dim Dim VarHoje As Date = Now VarData As Date = Today VarHoras As Date = TimeOfDay VarSegundos As Date = Time

Strings (por referncia) Este tipo pode conter at 1 gigabyte de caractere e alocado dinamicamente, por isso dizemos que este tipo por referncia. As strings so grupos de caracteres como Cludio Junior, dizer-lhe, #2!455^% ou ainda 1234. As Strings em Visual Basic.Net so includas entre aspas duplas ( Visual Basic.Net ). Veja na figura 3.2.6 o tipo string. Figura 3.2.6 Tipo String Tipostring

DescrioAproximadamente 2 bilhes de caracteres.

Exemplos: Dim VarNome As String = Claudio Dim VarEmail As String = [email protected] Dim VarSobrenome As String = Junior Dim VarConcatenar As String = VarNome & VarSobrenome Dim VarConcatenar As String = VarNome + ( VarSobrenome )

Curso de Introduo a Plataforma .Net FrameWork SDK

37

Object (por referncia) Este tipo muito utilizado por programadores, um termo geral para uma varivel que no especificado como outro tipo de dados, por isso torna-se um tipo universal. Em certas situaes torna-se indispensvel atribuir e instanciar um objeto. Figura 3.2.7 Tipo Object. Tipoobject

DescrioAtribuir a um objeto.

Exemplos: Dim Dim Dim Dim VarObjeto VarObjeto VarObjeto VarObjeto As As As As Object Object Object Object = = = = Rubens Barrichello 234.214D Not false TimeOfDay

Converso de Valores Converter um tipo de dado em nmero ou em literal comum em situaes de programao. Quando esta aplicao for destinada a Web com intervenes de internautas, esse recurso utilizado com mais freqncia ainda. A converso pode ser implcita(converses implcitas) ou explicita(converses especificadas explicitas) de uma varivel. Devemos observar que uma varivel convertida num outro tipo de maior faixa. Em alguns casos os tipos de converso no precisam ser especificados pelo desenvolvedor, essa converso feita automaticamente. Figura 3.2.8 - os tipos de converso automtica: TipoByte Short Integer Long Decimal Single Double Char Qualquer Tipo

Converte emByte, Short, Integer, Long, Decimal, Single, Double. Short, Integer, Long, Decimal, Single, Double. Integer, Long, Decimal, Single, Double. Long, Decimal, Single, Double. Decimal, Single, Double. Single, Double. Double String Object

Curso de Introduo a Plataforma .Net FrameWork SDK

38

Figura 3.2.9 - veja as funes para os tipos de converses explcitas. FunoAsc Cbool Cbyte CChar Cdate CDbl Cdec Chr Cint CLng Cobj Cshort CSng CStr Ctype Str Val

Converte emRetorna o numero correspondente a tabela ASCII Boolean Byte Char Date Double Decimal Char Integer Long Object Short Single String Converte para o tipo especificado String Converte para o tipo numrico especificado.

Exemplos:

Dim MyInt As Integer MyInt = Asc("A") ' MyInt recebe 65. MyInt = Asc("a") ' MyInt recebe 97. MyInt = Asc("Apple") ' MyInt recebe 65.

Dim A, B, C As Integer Dim Check As Boolean A=5 B=5 Check = CBool(A = B) C=0 Check = CBool(C)

' Check recebe True. ' Check recebe False.

Curso de Introduo a Plataforma .Net FrameWork SDK

39

Dim MyDouble As Double Dim MyByte As Byte MyDouble = 125.5678 MyByte = CByte(MyDouble)

' MyByte recebe 126.

Dim MyString As String Dim MyChar As Char MyString = "BCD" ' CChar converte somente o primeiro caracter do string. MyChar = CChar(MyString) ' MyChar recebe "B".

Dim MyDateString, MyTimeString As String Dim MyDate, MyTime As Date MyDateString = "February 12, 1969" MyTimeString = "4:35:47 PM" ' ... MyDate = CDate(MyDateString) ' Converte para Data. MyTime = CDate(MyTimeString) ' Converte para Data.

Dim MyDec As Decimal Dim MyDouble As Double MyDec = 234.456784D MyDouble = CDbl(MyDec * 8.2D * 0.01D)

' Converte o resultado para Double.

Dim MyDouble As Double Dim MyDecimal As Decimal MyDouble = 10000000.0587 MyDecimal = CDec(MyDouble)

' Converte para Decimal.

Dim MyDouble As Double Dim MyInt As Integer MyDouble = 2345.5678 MyInt = CInt(MyDouble)

' MyInt recebe 2346.

Dim MyDbl1, MyDbl2 As Double Dim MyLong1, MyLong2 As Long MyDbl1 = 25427.45 MyDbl2 = 25427.55 MyLong1 = CLng(MyDbl1) ' MyLong1 recebe 25427. MyLong2 = CLng(MyDbl2) ' MyLong2 recebe 25428.

Curso de Introduo a Plataforma .Net FrameWork SDK

40

Dim MyDouble As Double Dim MyObject As Object MyDouble = 2.7182818284 MyObject = CObj(MyDouble)

' Valor de MyDouble apontado para por MyObject.

Dim MyByte as Byte Dim MyShort as Short MyByte = 100 MyShort = CShort(MyByte)

' Converte para Short.

Dim MyDouble1, MyDouble2 As Double Dim MySingle1, MySingle2 As Single MyDouble1 = 75.3421105 MyDouble2 = 75.3421567 MySingle1 = CSng(MyDouble1) ' MySingle1 recebe 75.34211. MySingle2 = CSng(MyDouble2) ' MySingle2 recebe 75.34216.

Dim MyDouble As Double Dim MyString As String MyDouble = 437.324 MyString = CStr(MyDouble)

' MyString recebe "437.324".

Dim MyDate As Date MyDate = #2/12/69 00:00:01# MyString = CStr(MyDate) ' MyString recebe "2/12/1969 12:00:01 AM".

Dim MyNumber As Long Dim MyNewType As Single MyNumber = 1000 MyNewType = CType(MyNumber,Single)

' MyNewType recebe 1000.0.

Dim MyString As String MyString = Str(459) ' Retorna " 459". MyString = Str(-459.65) ' Retorna "-459.65". MyString = Str(459.001) ' Retorna " 459.001".

Dim ValResult As Double ValResult = Val("2457") ' ValResult recebe 2457. ValResult = Val(" 2 45 7") ' ValResult recebe 2457. ValResult = Val("24 and 57") ' ValResult recebe 24.

Curso de Introduo a Plataforma .Net FrameWork SDK

41

Operadores Os operadores so smbolos utilizados para executar alguma ao. Voc j deve conhecer alguns dos operadores, pois toda linguagem faz-se uso de operadores. Acompanhe na figura abaixo os tipos de operadores e suas respectivas funes. Figura 3.2.10 Operadores da linguagem Visual Basic.net Operador^ +,*,/ \ Mod & , + (string) =, < >, = =, ^=, *=, /=, \=, +=, -=, &= NOT, AND, OR, XOR BitNot, BitAnd, BitOr, BitVor

FunoExponencial Adio e subtrao Multiplicao e Diviso Diviso ( 10 \ 3 = 3.333333 ) Mdulo ( 6 mod 4 = 2 ) Concatenao Igual a, no-igual a, maior que, menor que Menor ou igual a, Maior ou igual a Atribuio Lgico: Negao, E, Ou, Ou exclusivo Lgico Binrio: Negao, E, Ou, Ou exclusivo

TypeOf ... Is, Is, Like

Relacional

ExemplosSub ControlProcessor(ByVal MyControl As Control) If TypeOf MyControl Is ComboBox Then Console.WriteLine (" do tipo " & TypeName(MyControl)) ElseIf TypeOf MyControl Is CheckBox Then Console.WriteLine (" do tipo " & TypeName(MyControl)) ElseIf TypeOf MyControl Is TextBox Then Console.WriteLine (" do tipo " & TypeName(MyControl)) End If End Sub Dim A As Integer = 10 Dim B As Integer = 8 Dim C As Integer = 6 Dim myCheck As Integer myCheck = (A And B) ' Retorna 8. myCheck = (A And C) ' Retorna 2. myCheck = (B And C) ' Retorna 0. Dim myTest As Boolean myTest = A > B And B > C ' Retorna True. myTest = B > A And B > C ' Retorna False.

Curso de Introduo a Plataforma .Net FrameWork SDK

42

Array Um tipo array uma matriz de valores do mesmo tipo, ou seja, ou conjunto de elementos do mesmo tipo dentro de uma nica varivel, que criada em tempo de execuo, podendo ser acessada por meio de um ndice. A declarao do array sempre faz o uso de um parntese( ( ) ) depois do nome da varivel. O tipo array pode ter diversas dimenses, o tamanho desta definido pelo desenvolvedor, mas devemos saber que o primeiro ndice sempre zero. Portanto um array declarado com 10 posies, na realidade ser de 11 posies de 0 a 10. Veja abaixo a forma de sintaxe para a declarao de arrays.Dim NomeDoArray ( tamanho do vetor ) As Tipo Dim VarValores ( 10 ) As Integer Dim VarValores ( ) As Integer = { valores } Dim Nomematriz ( tamanho do vetor, tamanho do vetor ) As Tipo Dim VarMatriz ( 5, 5 ) As String

Atribuindo Valores aos Arrays Para atribuir um valor aos elementos de um array, voc deve montar um looping ou atribuir um valor especifico a cada elemento do array. Vejamos abaixo a atribuio nos dois casos comentados.Imports System Module Atribuir Sub Main ( ) Dim i As Integer Dim VarValores(5) As Integer For i=0 to 5 VarValores(i) = i * 2 Next i End Sub End Module

Imports System Module Atribuir Sub Main ( ) Dim VarCores ( ) As String = {azul, preto, branco, verde} Dim VarNomes ( 3 ) As String VarNomes (0) = Adriana VarNomes (1) = Beatriz VarNomes (2) = Juliana VarNomes (3) = Maria End Sub End Module

Curso de Introduo a Plataforma .Net FrameWork SDK

43

Arrays Multidimensionais O array tambm pode ser declarado com vrias dimenses. Muito utilizado quando precisamos de uma matriz. Vejamos abaixo a sintaxe deste array.

Dim NomeDaMatriz ( tamanho do vetor, tamanho do vetor ) As Tipo Dim VarMatriz ( 15 , 15 ) As Integer Vejamos abaixo um exemplo de atribuio de valores para um array multidimensional.Imports System Module Atribuir Sub Main ( ) Dim VarMatriz ( , ) As Integer = {{1, 2, 3}, {4, 5, 6}} Dim I As Integer Dim J As Integer For I=0 to 2 For J=0 to 2 Console.WriteLine("VarMatriz("& I &", "& J &"): "& VarMatriz(I, J)) Next J Next I End Sub End Module

As Funes REDIM e ERASE Depois de declarado um array com um nmero especifico de elementos voc fica limitado a este tamanho. Entretanto o Visual Basic.Net traz uma funo chamada REDIM para redimensionar o tamanho do array. Devemos observar algumas minuciosidades deste processo: Quando o vetor redimensionado para outro tamanho, seus valores so destrudos. Porem se for utilizada a palavra-chave preserve os valores so salvos e atribudos ao novo array. Se o novo valor especificado para o redimensionamento for maior, os ndices extras so inicializados com o valor padro. Se o novo valor especificado para o redimensionamento for menor, os ndices que no fazem parte da nova faixa do vetor so destrudos. Uma outra funo bastante til a ERASE. Esta funo configura cada elemento do array para Nothing, ou seja, atribui um valor NULO as variveis do vetor.

Curso de Introduo a Plataforma .Net FrameWork SDK

44

Exemplos e Exerccios Exemplo 1 Trabalhando com arrays no Visual Basic.NetImports System Module CapArray Sub Main ( ) Dim I As Integer Dim J As Integer Dim VarCores( ) As String = {"azul", "amarelo", "preto", "verde"} Console.WriteLine(" ------ Inicializao do array VarCores ------ ") For I=0 to 3 Console.WriteLine("VarCores("& I &"): "& VarCores(I)) Next I Dim VarValores(5) As Integer Console.WriteLine() Console.WriteLine(" ----- Inicializao do array VarValores ----- ") For I=0 to 5 VarValores(I) = I Console.WriteLine("VarValores("& I &"): "& VarValores(I)) Next I Dim VarMatriz(3, 2) As Integer Console.WriteLine() Console.WriteLine(" ------ Inicializao do array VarMatriz ------ ") For I=0 to 3 For J=0 to 2 VarMatriz(I, J) = I + J Console.WriteLine("VarMatriz("& I &", "& J &"): "& VarMatriz(I, J)) Next J Next I Dim VarMatrizB( , ) As Integer = {{1, 2, 3}, {4, 5, 6}} Console.WriteLine() Console.WriteLine(" ------ Inicializao do array VarMatrizB ----- ") For I=0 to 1 For J=0 to 2 Console.WriteLine("VarMatrizB("& I &", "& J &"): "& VarMatrizB(I, J)) Next J Next I Redim VarValores(8) Console.WriteLine() Console.WriteLine(" ---- Redimensionamento do array VarValores ---- ") J=0 For Each I in VarValores Console.WriteLine("VarValores("& J &"): "& VarValores(I)) J = J+1 Next ReDim Preserve VarMatriz(3, 5) 'Apenas o ultimo valor pode ser redimensionado Console.WriteLine() Console.WriteLine(" ---- Redimensionamento do array VarMatriz ---- ") For I=0 to 3 For J=0 to 5 Console.WriteLine("VarMatriz("& I &", "& J &"): "& VarMatriz(I, J)) Next J Next I Erase VarCores Redim Preserve VarCores(3) Console.WriteLIne() Console.WriteLine(" ---- Redimensionamento do array VarCores ---- ") For I=0 to 3 Console.WriteLine("VarCores("& I &"): "& VarCores(I)) Next I End Sub End Module

Curso de Introduo a Plataforma .Net FrameWork SDK

45

Curso de Introduo a Plataforma .Net FrameWork SDK

46

Captulo 4 Estruturas de ControlePara o aplicativo executar a lgica desejada dependendo das informaes que lhe so atribudas, existem as estruturas de controle. Assim o aplicativo executara as instrues de acordo com uma certa deciso, tendo ou no a participao do internauta. Estas estruturas de controle existem em qualquer linguagem de programao. 4.1 Estruturas de deciso As estruturas de deciso ou tambm chamada de lgica condicional, permite especificar qual cdigo deve ser executado dependendo das condies satisfeitas. Este recurso torna-se necessrio para qualquer lgica implementada. 4.1.1 Instruo if .. then ... else ... elseif a forma mais simples de se aplicar lgica condicional. A instruo if simples. Se a condio for satisfeita ento o cdigo executado. Vamos ver a forma de sintaxe para esta instruo ( if ).Para C# If ( condio ) { Instrues; } if ( VarIdade >= 18 ) { Console.WriteLine(Usurio de maior idade); }

exemplo C#:

Para VB

if ( condio ) Then Instrues end if if VarIdade >= 18 Then Console.WriteLine(Usurio de maior idade) end if

exemplo VB:

A instruo else opcional e indica a instruo que o aplicativo deve executar se a condio imposta pelo if no for satisfatria. Temos tambm a instruo elseif que permite testar outras condies. Vamos ver a forma de sintaxe para estas instrues ( else, elseif ).

Curso de Introduo a Plataforma .Net FrameWork SDK

47

Para C#

If ( condio ) { Instrues; } else if ( condio ) { Instrues; } else { Instrues; } If ( Numero < 10 ) { Console.WriteLine(O Nmero possui 1 dgito); } else if ( Numero < 100 ) { Console.WriteLine(O Nmero possui 2 dgitos); } else { Console.WriteLine(O N possui mais de 2 dgitos); }

exemplo C#:

outra forma para c#: if ( condio ? InstrucaoVerdade : InstrucaoFalsa ); exemplo c#: Console.Write ( idade >= 18 ? Maior idade : Menor idade );

Para VB

If ( condio ) then Instrues elseif ( condio ) then Instrues else Instrues end if If ( Number < 10 ) then Console.WriteLine(O Nmero possui 1 digito) elseif ( Number < 100 ) then Console.WriteLine(O Nmero possui 2 dgitos) else Console.WriteLine(O N possui mais de 2 dgitos) end if

exemplo VB:

outra forma para vb: iif ( condio , InstrucaoVerdade , InstrucaoFalsa ) exemplo vb: Console.Write( iif ( idade >= 18 , Maior idade , Menor idade ) )

Curso de Introduo a Plataforma .Net FrameWork SDK

48

4.1.2 Instruo switch(c#) e case(vb) A instruo switch(c#) e case(vb) so utilizadas em situaes em que houver a necessidade de diversos testes condicionais. So basicamente uma combinao de instruo if com oraes de elseif. Estas instrues examinam uma condio e especifica qual bloco de cdigo deve ser executado. Vamos examinar a sintaxe da instruo switch(c#).switch ( condio ) { case condio 1 : Instrues; case condio 2 : Instrues; case condio N : Instrues; default: instrues default; } Exemplo: switch ( Estado ) { case PR : Console.WriteLine(Viagem para Curitiba);

break; break; break;

break; break; break;

case MG : Console.WriteLine(Viagem para Belo Horizonte); case RJ : Console.WriteLine(Viagem para o Rio de Janeiro); default: Console.WriteLine(Viagem para So Paulo); } break;

Vamos examinar a sintaxe para a instruo Select case(vb).select case condio case condio 1 : Instrues case condio 2 : Instrues case condio N : Instrues case else: instrues default end select Exemplo: Select case Estado case PR : Console.WriteLine(Viagem para Curitiba) case MG : Console.WriteLine(Viagem para Belo Horizonte) case RJ : Console.WriteLine(Viagem para o Rio de Janeiro) case select: Console.WriteLine(Viagem para So Paulo) end select

Curso de Introduo a Plataforma .Net FrameWork SDK

49

4.2 Estruturas de Repetio As estruturas de repetio so utilizadas em situaes onde preciso executar um conjunto de instrues determinadas vezes, at que a condio imposta para o fim da repetio for satisfeita. 4.2.1 Instruo For Esta estrutura de repetio utilizada quando o desenvolvedor sabe quantas vezes o cdigo deve ser executado. Por isso devemos definir as faixas inicial e final. Esse loop incrementa um contador para dizer quando encerrar a execuo desta repetio. Vamos acompanhar abaixo a sintaxe desta instruo ( for ).Para C#: for ( varivel; condio; incremento ) { Instrues; } for ( int i=1; i 2) { if (VarNumero < 8) { Final = VarNumero; } else { Final = 2; } } Console.WriteLine( Final==2 ? "Valor Incorreto" : "Valor Correto" ); while ( Condicao < = Final ) { Console.WriteLine("Valor da variavel Condicao: {0}", Condicao); Condicao++; } } }

Curso de Introduo a Plataforma .Net FrameWork SDK

53

Acompanhe a sada do programa acima:

Curso de Introduo a Plataforma .Net FrameWork SDK

54

Exemplo 2 Estruturas de controle na linguagem Visual Basic.NetImports System Module ExemploVb Sub Main() Dim VarNumero As Integer = 0 Console.WriteLine(" ---------------Instruo IF ------------------- ")

Console.Write("Fornea um nmero: ") Dim Leia As String Leia = Console.ReadLine() VarNumero = Integer.Parse(Leia) If (VarNumero < 10) Then Console.WriteLine(" O Numero possui 1 digito ") ElseIf (VarNumero < 100) Then Console.WriteLine(" O Numero possui 2 dgitos ") Else : Console.WriteLine(" o Numero possui 3 ou mais nmeros ") End If Console.WriteLine() Console.WriteLine(" ---------------Instruo SELECT CASE ------------ ")

Console.Write("fornea a sigla de um Estado da regio Sudeste: ") Leia = Console.ReadLine() Leia = Leia.ToUpper() Select Case Leia Case "MG" : Console.WriteLine("A capital se chama: Belo Horizonte") Case "SP" : Console.WriteLine("A capital se chama: So Paulo") Case "RJ" : Console.WriteLine("A capital se chama: Rio de Janeiro") Case "ES" : Console.WriteLine("A capital se chama: Vitria") Case Else : Console.WriteLine("Voc no digitou uma sigla correta") End Select Console.WriteLine() Console.WriteLine(" ---------------- Instruo WHILE ------------------- ") Dim Condicao As Integer = 1 Console.Write("Fornea um valor para repetio de 3 - 7 :") Leia = Console.ReadLine() VarNumero = Integer.Parse(Leia) 'Transforma string em inteiro Dim Final As Integer = 1 If VarNumero > 2 And VarNumero < 8 Then Final = VarNumero Else : Final = 2 End If if Final = 2 then Console.WriteLine("Valor Incorreto") Else : Console.WriteLine("Valor Correto") End if While Condicao = 0) { RecebeNome.Items.RemoveAt(RecebeNome.SelectedIndex); selecionado no ListBox } } public void Limpar(object sender, EventArgs ea) { RecebeNome.Items.Clear( ); //limpa o ListBox }

//Exclui o item

Curso de Introduo a Plataforma .Net FrameWork SDK

95

public void Ordenar(object sender, EventArgs ea) { ArrayList objVetor = new ArrayList( ); int contador; contador=RecebeNome.Items.Count; if (contador > 0) { for(int i=0; i a ) { for(int j=a, i=a+1; i < contador; i++) { if ( objVetor[j].ToString().CompareTo(objVetor[i].ToString()) > 0 ) { string temp; temp=objVetor[i].ToString(); objVetor[i] = objVetor[j]; objVetor[j] = temp; condicao = false; } } if (condicao != false) { a++; } condicao=true; } if (saiObj != null) { saiObj.Items.Clear(); } for (int i=0; i < contador; i++) { saiObj.Items.Add(objVetor[i].ToString()); }

} }

Curso de Introduo a Plataforma .Net FrameWork SDK

96

Exemplo 02 Propriedade Visible dos controles. Sub Page_Load(sender As Object, e As EventArgs) If Check1.Checked Then Panel1.Visible = False Else Panel1.Visible = True End If Dim numlabels As Integer = Int32.Parse(DropDown1.SelectedItem.Value) Dim i As Integer For i = 1 To numlabels Dim l As New Label() l.Text = "Label" + i.ToString() l.ID = "Label" + i.ToString() Panel1.Controls.Add(l) Panel1.Controls.Add(New LiteralControl("
")) Next i Dim numtexts As Integer = Int32.Parse(DropDown2.SelectedItem.Value) For i = 1 To numtexts Dim t As New TextBox() t.Text = "TextBox" & i.ToString() t.ID = "TextBox" & i.ToString() Panel1.Controls.Add(t) Panel1.Controls.Add(New LiteralControl("
")) Next i End Sub Panel Example Panel1: Controles Viviseis... Numero de Labels Visveis: 0 1 2 3 4
Numero de TextBoxes Visveis: 0 1 2 3 4

Curso de Introduo a Plataforma .Net FrameWork SDK

97

Exerccio 01 - Implemente o exemplo 01 na linguagem VB.Net.

Exerccio 02 Implemente o exemplo 02 na linguagem C#.

Curso de Introduo a Plataforma .Net FrameWork SDK

98

Captulo 7 Controle de Validao essencialmente importante para a aplicao que o desenvolvedor tenha uma poltica de validao de dados eficiente. O asp.net traz alguns controles para facilitar a vida do programador. Voc pode acrescentar validao de entrada em suas pginas Web Forms usando controles de validao prontos. Controles de validao provem um mecanismo fcil de usar para todos os tipos comuns de critrios de validao - por exemplo, testando datas vlidas ou valores dentro de uma gama entre outros modos para prover validao de escrita. Alm disso, os controles de validao lhe permitem personalizar completamente como ser exibida a informao de erro ao usurio. O controle de validao pode ser usado com qualquer controle que processado no arquivo da classe de uma pgina Web Form, incluindo HTML e controles Web Server. O controle de validao semelhante aos outros controles estudados anteriormente. Portanto como todo controle, tambm tem suas propriedades comuns, das quais veremos mais em diante. A diferena entre estes controles que os controles de validao no exibem nada, a no ser a mensagem de erro causa ocorra. Enfim, o usurio no pode interagir com eles. Portanto, a funo do controle de validao observar um controle de servidor e validar seu contedo. Para especificar qual controle vai ser validado, usaremos a propriedade ControlToValidate comum a todos controles de validao. vlido observar que as consistncias so digitadas pelo usurio, e no em contedos vlidos. Caso o browser no suporte tal consistncia, ela realizada no servidor, pois o prprio .Net FrameWork identifica o browser que fez a solicitao e designa se tem ou no o suporte para realizar tal tarefa. Para validao existem tais componentes que a plataforma disponibiliza: ComponenteRequiredFieldValidator CompareValidator RangeValidator

DescrioVerifica se um campo requerido est em branco. Compara o valor de um ou mais controles. Compara se a informao digitada esta dentro de uma faixa de valor determinada para a validao. Um valor entre 5 e 10 por exemplo. Verifica os valores digitados em relao a uma validao que voc mesmo codifica. Verifica se o valor de um campo satisfaz uma expresso constante determinada. Serve para agrupar em uma nica lista na pgina todos os erros gerados.

CustomValidator

RegularExpressionValidator

ValidationSummary

Curso de Introduo a Plataforma .Net FrameWork SDK

99

Os controles de validao apenas validaro a entrada com um subconjunto de controles de servidor do asp.net. Na maioria das vezes estes controles sero mais que suficiente para validar toda a entrada do usurio. Veja abaixo a relao dos controles que podem ter sua entrada validada pelo controles de validao. Podem ser validados os seguintes controles: HtmlInputText HtmlTextArea HtmlSelect HtmlInputFile TextBox ListBox DropDownList RadioButtonList

Para que um controle de validao passe a funcionar em sua aplicao basta o desenvolvedor adicion-lo como qualquer outro controle. Acompanhe a sintaxe do controle de validao RequiredFieldValidator e um exemplo abaixo:

Name:

Curso de Introduo a Plataforma .Net FrameWork SDK

100

Acompanhe a sintaxe do controle de validao CompareValidator e um exemplo abaixo:

Digite um valor maior ou igual a 10:




public void MetodoValidar(Object sender, EventArgs ea) { Comparar.Validate( ); if (Comparar.IsValid == true) { saida.Text = "Numero CORRETO ! "; } else { saida.Text="Numero INCORRETO ! "; } }

Curso de Introduo a Plataforma .Net FrameWork SDK

101

Vamos acompanhar agora, uma tabela mostrando os operadores que o controle CompareValidator utiliza para a propriedade Operator. Tabela 7.1 Operadores para a propriedade Operator.Operador DataTypeCheck Equal GreaterThan GreaterThanEqual LessThan LessThanEqual NotEqual

DescrioVerifica se o tipo de informao compatvel com um certo tipo de dados(string, Integer e assim por dinate) Verifica se igual Verifica se maior que Verifica se maior ou igual Verifica se menor que Verifica se menor ou igual Verifica se diferente

Vamos acompanhar agora, uma tabela mostrando os tipos de informao que o controle CompareValidator utiliza para a propriedade Type. Tabela 7.2 Tipos de informaes para a propriedade Type.Tipo Currency Date Double Integer String Descrio Valores monetrios. Valores de data. Valores de nmeros fracionrios. Valores de nmeros inteiros. Valores de string

RangeValidator O controle RangeValidator testa se um valor de um controle de entrada est dentro de uma faixa de valores especificada no componente. O controle RangeValidator utiliza quatro propriedades chave para executar sua validao. A propriedade ControlToValidate contm o nome do controle de entrada para validar. As propriedades MinimumValue e MaximumValue especificam respectivamente o valor mnimo e o valor mximo para validar a entrada de informaes em uma faixa de valores vlidos. A propriedade Type usada para especificar os tipos de dados usados para realizar a comparao de valores. Estes valores so convertidos para o tipo determinado para que a validao possa ser realizada. A tabela seguinte lista os diferentes tipos de dados que podem ser comparados.

Curso de Introduo a Plataforma .Net FrameWork SDK

102

Tabela 7.3 Tipos de dados da propriedade Type do controle RangeValidator.Tipo Currency Date Double Integer String Descrio Valores monetrios. Valores de data. Valores de nmeros fracionrios. Valores de nmeros inteiros. Valores de string

Veja a sintaxe deste controle abaixo: Sub ButtonClick(sender As Object, e As EventArgs) If Page.IsValid Then Label1.Text="Pagina valida !!." Else Label1.Text="Pagina no valida !!" End If End Sub RangeValidator Examplo Entre com valores entre 1 e 10:





Curso de Introduo a Plataforma .Net FrameWork SDK

103

CustomValidator Use o controle CustomValidator para prover uma funo de validao definida pelo desenvolvedor para um controle de entrada. O controle CustomValidator um controle separado dos demais controles de entrada validos, e que permite controlar onde a mensagem de validao exibida. Em outras palavras, quando o usurio insere dados, o controle CusTomValidator executa um mtodo de validao personalizado, implementado pelo prprio desenvolvedor. Os controles de validao sempre executam validao no servidor. Eles tambm tm implementao no lado cliente desde que tenha suporte a DHTML que o caso dos browsers mais recentes (como Internet Explorer 4.0 e depois). A validao no lado cliente aumenta o processo de validao conferindo a entrada de dados do usurio antes de fosse enviado ao servidor. Isto permite descobrir erros no cliente, antes de a aplicao ser submetida, evitando com isso a viagem de ida-e-volta de informao. Acompanhe a sintaxe deste controle.

RegularExpressionValidator O controle RegularExpressionValidator confere se o valor do controle de entrada corresponde ao definido pela expresso regular. Este tipo de validao lhe permite conferir previsveis sucesses de carter, como esses nmeros de previdncia social, endereos de e-mail, nmeros de telefone, e cdigos postais. A validao tem sucesso se o controle de contribuio estiver vazio. Se um valor requerido para o controle de contribuio associado, use um controle de RequiredFieldValidator para requerer um campo. As validaes so executadas no lado servidor e no lado cliente a menos que o browser no apie a validao no lado cliente ou a va