Você está na página 1de 204

Wagner Roberto de Carvalho

Informática
Visual Basic
Java
Oracle
SQL Server

IESDE Brasil S.A.


Curitiba
2010
© 2010 – IESDE Brasil S.A. É proibida a reprodução, mesmo parcial, por qualquer processo, sem autorização por escrito dos autores e
do detentor dos direitos autorais.

C33li Carvalho, Wagner Roberto de. / Informática. / Wagner Roberto


de Carvalho. — Curitiba : IESDE Brasil S.A., 2010.
204 p.

ISBN: 978-85-387-1473-6

1. Informática. 2. Visual Basic. Net. 3. Java 4. Banco de dados. I. Título.

CDD 001.6

Capa: IESDE Brasil S.A.


Imagem da capa: IESDE Brasil S.A.

Todos os direitos reservados.

IESDE Brasil S.A


Al. Dr. Carlos de Carvalho, 1.482. CEP: 80730-200
Batel – Curitiba – PR
0800 708 88 88 – www.iesde.com.br
Wagner Roberto de Carvalho
Bacharel em Direito e Administrador de Em-
presas pela Universidade Mackenzie. Técnico
Eletrônico pela Escola Técnica Federal. Consul-
tor e instrutor especialista na área de Banco de
Dados Relacional e Analista de Sistemas Main-
frames com passagem pelas empresas Oracle,
IBM, Unisys e Labo.
sumário
sumário Visual Basic.Net – introdução e ambiente
9 | Introdução
11 | Ambiente de desenvolvimento
9

17
Visual Basic.Net – estrutura da linguagem
17 | Entendendo a linguagem
17 | Como realizar comentários em meio ao código
18 | Identificadores
18 | Variáveis Numéricas, String e Booleanas
19 | Declarando variáveis
21 | Declarando e inicializando Arrays
22 | Opções de compilação
24 | Operadores
25 | Estruturas condicionais: If...Then...Else
27 | O comando Select Case
27 | Estruturas loop
29 | Controles de interface
30 | Propriedade Name
30 | O objeto Form
32 | O objeto Button
33 | O objeto TextBox
35 | O objeto Label
35 | O objeto GroupBox
36 | O objeto Radio Button
36 | Interação com o usuário
39 | Tratando erros de processamento
45
mário

Visual Basic.Net – exercícios


91
Java – introdução e ambiente
92 | Principais características do Java
94 | O Java e o C++
95 | Resumo das principais características do Java
95 | Versões do Java
96 | O JBuilder
97 | Ambiente de desenvolvimento
103
Java – estrutura da linguagem
103 | Comentários
103 | Identificadores
104 | Blocos de comando
105 | Declaração de variáveis e tipos compostos
110 | Operadores
112 | Estruturas condicionais
113 | Objetos de tela
116 | Estruturas de loop
121
Java – exercícios
153
Banco de dados Oracle
153 | Introdução
154 | Oracle
157 | Manipular dados em tabelas no banco de dados
169
Exemplo de aplicação Java com Oracle
sumário
sumário Banco de dados – SQL Server
174 | A linguagem T-SQL
173

176 | Criar uma tabela no banco de dados – CREATE TABLE


178 | Alterar uma tabela no banco de dados – ALTER TABLE
179 | Manipular dados em tabelas no banco de dados
185 | Banco de dados SQL Server – resumo
193
Exemplo de aplicação Visual Studio.Net com SQl Server
mário
Visual Basic.Net –
introdução e ambiente

Introdução
A linguagem BASIC (Beginners All-Purpose Symbolic Instruction Code) foi
criada por J. Kemeny e T. Kurtz em 1963 com o intuito de tornar mais faci-
litado e claro o ensino dos conceitos de linguagem de programação, pois
na época existiam apenas as linguagens FORTRAN e Assembly que empre-
gavam rotinas de baixo nível para controles e eram compiladas, não sendo
muito fácil sua compreensão por um grande número de alunos.

A ideia do BASIC era justamente não utilizar métodos e algoritmos com-


plexos para construção de programas e compilação. Essas eram as duas
grandes reclamações que tornavam muito difícil a compreensão para as lin-
guagens de programação na época.

A declaração de comandos também tinha inovações de simplificação, pois


cada linha começava com um número de linha e as instruções não tinham
subníveis sendo que as instruções GOSUB e GOTO utilizavam o número de
linha exato para desviar a sua execução.

Kemeny e Kurtz criaram então dessa forma e com esses simples objetivos
os fundamentos do que seria a linguagem BASIC.

Na década de 1970 a empresa DEC (Digital


Reprodução.

Equipment Corporation) coloca uma versão do


BASIC interpretado em seus grandes computa-
dores, que são bastante utilizados pelas univer-
sidades americanas para lecionar linguagens de
programação.

O objetivo da DEC era o de criar uma legião de


acadêmicos simpatizantes da sua marca e também
mão de obra qualificada em seu produto para o
mercado de trabalho na computação.

O objetivo é atingido e a DEC torna-se bastante popular e querida no


ambiente acadêmico sendo que em 1974 quase que a totalidade dos jogos
Visual Basic.Net – introdução e ambiente

desenvolvidos para computador baseados no seriado Star Trek rodavam em


BASIC interpretado nos equipamentos da Digital.
Em 1975 um primeiro conceito de computador pessoal é criado com uma
máquina chamada Altair que com pouca capacidade de processamento e me-
mória adota também o BASIC interpretado como uma de suas linguagens.
O Altair passa a ser uma poderosa ferramenta de propagação da com-
putação no ambiente acadêmico, sendo que nele foi digitado as primeiras
linhas do desenvolvimento do DOS (Disk Operating System) ou sistema ope-
racional em disco por Bill Gates, da Microsoft.
Em 1983, com o sucesso do PC, a IBM apresenta oficialmente o primeiro
Personal Computer (PC), incluindo também um compilador para o BASIC, o
IBM BASIC Compiler 1.0.

Reprodução.

Primeiro PC da IBM – 1982.

Em 1985, já como uma empresa, a Microsoft entra no mercado da lingua-


gem BASIC com um produto chamado QuickBASIC, que na verdade era o
sucessor do IBM BASIC Compiler.
Com o lançamento do Windows 3.1 a Microsoft inicia naturalmente a ade-
quação de todos os seus produtos para o novo ambiente e também um novo
projeto para a linguagem BASIC voltando-o para o ambiente gráfico.
Em 1991, a primeira versão do Visual BASIC (VB 1.0) é apresentada ao mer-
cado como um ambiente de desenvolvimento onde os layouts das telas eram
gráficos, pois se baseavam no Windows, além de terem a condução intuitiva
10
Visual Basic.Net – introdução e ambiente

do usuário guiada por um mouse, o que era uma grande inovação para os
padrões de interface da época em que se utilizavam somente as teclas de
atalho para essa finalidade.
A aceitação pela comunidade de programadores e a popularidade do
produto é muito grande, criando uma verdadeira legião de desenvolvedores
em VB.
Em 1993 a Microsoft apresenta o que o mercado considera como a versão
mais madura e profissional do VB, a versão 3.0, que permite ao produto co-
nectividade e acesso aos Bancos de Dados Relacionais do mercado, que era
uma tecnologia que vinha se desenvolvendo em paralelo e tornou-se um
padrão de mercado em armazenamento de dados.
Em 1997 a Microsoft reúne em um único pacote de
Reprodução.

distribuição, chamado de Visual Studio, todas as lingua-


gens de desenvolvimento que já oferecia ao mercado.
O diferencial seria oferecer no pacote um conjunto de
serviços unificados que pudessem ser compartilhados
por todas as linguagens.
O conceito inicial do Visual Studio prosperou e foi
incorporando em suas versões, ao longo do tempo,
linguagens e conceitos voltados para o ambiente de
desenvolvimento da internet de modo que tornou a suíte uma poderosa fer-
ramenta para o desenvolvimento de aplicações atualmente.

Ambiente de desenvolvimento

Introdução
Muitas novidades foram implementadas ao Visual BASIC, mas uma das
mais sensíveis aos desenvolvedores é o ambiente de desenvolvimento ou
IDE (Integrated Development Environment) do VB.
Em versões anteriores, cada ferramenta do Visual Studio possuía um am-
biente, com características, configurações, comandos, opções e assistentes
diferentes.
A ideia da Microsoft agora é integrar todas essas linguagens de desenvol-
vimento em um único ambiente chamado Visual Studio.NET, que engloba
todas as características para todas as ferramentas.
11
Visual Basic.Net – introdução e ambiente

Como a ideia da plataforma .NET é integrar, a partir de agora todas as lin-


guagens serão integradas em um único ambiente chamado Visual Studio.NET,
que engloba todas as características para todas as ferramentas.

Assim, a pessoa que precisa desenvolver uma parte do sistema em VB,


outra em C# e ainda publicar uma página ASP, não precisará mais trocar
de ambiente. Dentro do próprio Visual Studio.NET (VS.NET) você encontra
todos os recursos para a criação, depuração, teste, execução e publicação de
aplicativos desktop e web.

Isso quer dizer que você não precisa mais conhecer uma série de ferra-
mentas. Você usa uma única ferramenta, bastando apenas escolher qual lin-
guagem você quer usar.

O mais interessante disso tudo é que apesar de ser um ambiente integra-


do, ele não é obrigatório.

É possível criar aplicativos em qualquer uma das linguagens, utilizan-


do um editor de texto comum como o Bloco de Notas. Obviamente, nesse
caso, você não terá todas as vantagens e recursos do VS.NET, mas mesmo as-
sim você pode depurar, compilar etc., rodando comandos manualmente
através do prompt de comando.

Durante este capítulo, iremos apresentar as principais janelas do Visual


Studio.Net, descrevendo as características de cada uma.

O Visual Studio.Net é um software desenvolvido e comercializado pela


Microsoft – para maiores informações e downloads acesse: <www.microsoft.
com/visualstudio/pt-br/>.

Ao carregar o Visual Studio.NET, você verá a seguinte janela:

12 Fonte: Microsoft Visual Studio, 2008.


Visual Basic.Net – introdução e ambiente

Você pode perceber que na área central do VS.NET é exibida a Start Page
com as principais opções. Se você tiver conectado à internet, você terá como
acessar páginas da Microsoft com informações e novidades sobre a platafor-
ma .NET.

No primeiro quadro, Recent Projects, você pode selecionar os últimos pro-


jetos abertos para continuar trabalhando; também aparecem duas opções,
para abrir um projeto existente (Open) e para criar um novo projeto (Create).

Já no segundo quadro, Getting Started, você tem opções de ajuda e


exemplos do VS.NET.

O quadro Visual Studio News traz as novidades da versão.

Escolhendo a opção Create Project ou no menu File/New Project, será


apresentada uma janela para que você escolha o tipo de projeto que você
quer criar.

Fonte: Microsoft Visual Studio, 2008.

Selecionando um projeto de Visual BASIC, template para Windows


Application, indicando o nome do projeto e o local onde ele será salvo, você
pode clicar no botão OK e terá o ambiente completamente carregado.

Fonte: Microsoft Visual Studio, 2008. 13


Visual Basic.Net – introdução e ambiente

Veja agora a descrição das principais janelas.

Form Designer
Cada janela em um aplicativo é representada por um Form ou formulá-
rio. É a partir do Form Designer que você irá criar a interface gráfica de sua
janela. Essa janela é considerada um objeto, portanto possui suas próprias
características.

Além disso, o Form Designer lhe dá a imagem de como irá ficar a janela
quando o aplicativo for executado.

Fonte: Microsoft Visual Studio, 2008.

Toolbox
Essa janela carrega uma lista com os controles que serão usados para criar
a interface gráfica de um Form. Existem diferentes conjuntos de controles
disponíveis, dependendo do tipo de projeto que está ativo no ambiente.

Fonte: Microsoft Visual Studio, 2008.

14
Visual Basic.Net – introdução e ambiente

Janela de propriedades
Quando você está criando a interface gráfica de sua
janela, você vai precisar configurar as características dos
controles adicionados no formulário. Essa janela apresen-
ta uma lista com as propriedades disponíveis do objeto
selecionado.

Além disso, no topo dessa janela, existe uma lista


composta por todos os controles existentes dentro do
formulário corrente. Através dessa lista você pode sele-
cionar outros objetos, além de visualizar o nome e tipo
de cada um deles.

Fonte: Microsoft Visual Studio,


2008.

Editor de código
É dentro dessa janela que você irá codificar seu aplicativo. Todos os even-
tos, procedures, métodos, propriedades e comandos de linguagem ficam
aqui.

Para abrir essa janela, basta você dar um duplo clique em qualquer con-
trole do formulário ou apertar F7. Nesse momento, o editor de código será
apresentado com o evento default do controle pressionado. Caso você não
queira esse evento, você pode usar as listas acima da janela para escolher o
objeto desejado, e para esse objeto, o evento que você quer codificar.

Fonte: Microsoft Visual Studio, 2008.

15
Visual Basic.Net –
estrutura da linguagem

Entendendo a linguagem
Para iniciar nossa programação em Visual Basic.Net veremos alguns recur-
sos e funções da própria linguagem.

Como realizar comentários em meio ao código


No VB.Net, para deixarmos um comentário em meio ao código, precisa-
mos marcar cada uma das linhas de comentário com apóstrofo (aspas sim-
ples), ou seja, não há como criar um bloco de comentário. Exemplo:

‘ Este comentário funciona em apenas uma linha


‘ Para criar várias linhas de comentário,
‘ devemos iniciar cada uma dessas linhas
‘ com aspas simples.

x = 10 ‘Comentário após comando

Como digitar um comando em várias linhas


No VB.Net executa-se os comandos linha a linha, no entanto, podemos
também escrever um comando em várias linhas, desde que usemos, no final
de cada linha a ser quebrada, os caracteres “ _” (espaço e underscore). Por
exemplo:

MsgBox(“Mensagem”, MsgBoxStyle.Critical _

+ MsgBoxStyle.OKOnly, “AVISO”)
Visual Basic.Net – estrutura da linguagem

Identificadores
Um identificador é um nome que define unicamente um elemento da
linguagem como uma variável, classe, objeto ou método.

Existem algumas regras que devem ser obedecidas no momento de de-


clarar um elemento de linguagem.

 Podem ter até, no máximo, 255 caracteres.

 Devem começar com uma letra.

 Podem incluir números, letras e o underscore (_).

 Não podem conflitar com palavras reservadas da linguagem.

Uma palavra reservada da linguagem é um identificador predefinido que


1
Compilador: é um pro-
grama que permite trans-
tem um significado especial para o compilador1 e que não pode ser
formar o código escrito na
linguagem de programa-
redefinido.
ção usada em linguagem
de máquina, gerando o
código binário que pode

Variáveis Numéricas, String e Booleanas


ser executado e que a má-
quina entenda.

Números
Números podem estar sempre em duas categorias: ou é um número in-
teiro ou então é um número que possui casas decimais (o chamado ponto
flutuante). E, apesar de existirem inúmeros tipos possíveis para se criar
uma variável que contenha um número inteiro ou um número ponto flu-
tuante, usaremos neste material o seguinte padrão para tipos de variáveis
numéricas:

 Integer – variável numérica inteira.

 Double – variável numérica ponto flutuante.

String
Para representar texto de forma geral, independentemente de quantos
caracteres possua, usaremos o tipo String.

18
Visual Basic.Net – estrutura da linguagem

 Uma observação importante é que, no Visual Basic.Net , o delimitador


de String é aspas duplas ( “ ).

Booleana
Uma variável booleana apenas pode possuir os seguintes valores: True ou
False, ou seja, verdadeira ou falsa.

Declarando variáveis
Estaremos sempre declarando as variáveis, em meio a um código, passan-
do a palavra Dim seguida do nome da variável, a palavra As e o tipo com o
qual desejamos criá-la. Exemplo:

Private Sub Button1_Click(ByVal sender ...)

Dim iValor As Integer

Dim sNome As String

Dim bTeste As Boolean

End Sub

Onde a primeira declaração cria uma variável de nome iValor do tipo In-
teger, logo depois é criada a variável sNome, cujo conteúdo será um valor
do tipo String, e em seguida a variável bTeste que receberá valores boole-
anos. Em linguagem de programação, é comum colocar antes do nome da
variável uma letra que já expresse qual é o seu tipo; no exemplo anterior o s
que aparece na variável sNome é para facilitar o reconhecimento que esta é
uma variável do tipo String.

Atribuindo valores às variáveis


Para isso, em seu código, utilize instruções seguindo a sintaxe:

<NomeVariável> = <Valor>

19
Visual Basic.Net – estrutura da linguagem

Onde “NomeVariável” é o nome da variável (declarada anteriormente)


que desejamos tratar, “Valor” é o valor a ser atribuído à mesma, e finalmente,
“=” é o operador de atribuição.

Continuando o exemplo anterior:

Dim sNome As String

Dim iValor As Integer

Dim bTeste As Boolean

sNome = “João”

iValor = 1500

bTeste = True

Aqui estamos armazenando o valor “João” na variável sNome. O valor


está entre aspas duplas, respeitando o tipo da variável que é String. E, logo
depois, estamos deixando a variável iValor (numérica, inteira) com o valor
1500 e, por fim, a variável booleana bTeste com o valor True.

Conversão de tipos
Muitas vezes, poderemos nos deparar com situações em que exista in-
compatibilidade de tipos entre expressões e variáveis.

Para convertermos o valor (que tem um tipo original) para o tipo espera-
do, precisamos usar as funções de conversão do Visual Basic, apresentadas
a seguir:

Função Descrição
CStr Converte para String
CInt Converte para Integer
CDbl Converte para Double
CDate Converte para Date
Format Converte para String

20
Visual Basic.Net – estrutura da linguagem

Criando variáveis globais


Muitas vezes, pode surgir a necessidade de criarmos uma variável que
possa ser utilizada nos vários eventos do Form.

Para isso, você deve posicionar o cursor, na janela de código, no início do


código e fora de um Evento (bloco de código), como na ilustração a seguir.

Fonte: Microsoft Visual Studio, 2008.

Então, declare suas variáveis, seguindo a mesma sintaxe anterior. Exemplo:

Dim iGlobal As Integer

onde temos a declaração da variável iGlobal do tipo Integer.

Fonte: Microsoft Visual Studio, 2008.

Declarando e inicializando Arrays


Um Array é uma estrutura de dados que pode carregar vários valores do
mesmo tipo, independentemente de qual seja este tipo.
21
Visual Basic.Net – estrutura da linguagem

Esses valores são divididos em elementos dentro do Array, que são inde-
xados por um número. Através desse número é que você poderá ler e atribuir
valores.

Um Array, quando declarado, necessita de um valor que determina o


índice de maior valor do Array.

Dim valores(9) As Integer

valores(0) = 100

valores(9) = 300

Dim dias() As String = {“seg”, “ter”, “qua”, _

“qui”, “sex”, “sab”, “dom”}

Repare que no primeiro exemplo o Array foi declarado com o número 9.


Isso quer dizer que seu Array terá 10 elementos, indexados de 0 a 9.

Já no segundo caso, você pôde declarar o Array e já dar valores iniciais


para os elementos. Esse Array será indexado de 0 a 6 com um total de 7
elementos.

Opções de compilação
As opções de compilação podem afetar várias partes do seu aplicativo.
Duas dessas opções influenciam diretamente como os data types se com-
portam e como você pode usá-los. São elas: Option Explicit e Option Strict.

Elas devem ser colocadas no início do seu código (antes da abertura da


classe “Public Class”), e podem ser ligadas (On) ou desligadas (Off ):

Option Strict On

Option Explicit On

Ou

Option Strict Off

Option Explicit Off

22
Visual Basic.Net – estrutura da linguagem

Fonte: Microsoft Visual Studio, 2008.

Option Strict

Com o Option Strict habilitado (On), todas as conversões de valores nas


variáveis em tempo de execução são corrigidas.

Com o Option Strict desabilitado (Off ), quando uma conversão falhar


gera-se erro.

Option Explicit

Com o Option Explicit habilitado (On), toda variável que for usada no
código deve ser obrigatoriamente declarada. Caso contrário, um erro de
compilação será gerado.

Quando essa opção estiver desabilitada, você não é obrigado a declarar


todas as variáveis. Isso quer dizer que elas serão declaradas automaticamen-
te pelo VB.NET e seu data type será Object por default.

Isso pode ser perigoso! Suponha que você estivesse utilizando uma va-
riável chamada Salario. Se por um acaso, no momento de atribuir um valor,
você errar esse nome, você terá problemas, pois ao invés de utilizar a variável
Salario, ele irá declarar outra automaticamente.

Dim Salario As Double

Dim Bonus As Double

Salario = 1000

Bonus = Salrio * 0.1

Nesse caso, a variável Bonus não irá receber o resultado correto do cál-
culo já que a variável Salrio não foi declarada. Se você estivesse usando o

23
Visual Basic.Net – estrutura da linguagem

Option Explicit, o compilador iria gerar um erro e lhe obrigar a declarar expli-
citamente a variável ou, como no caso, corrigi-la.

Operadores
Operadores são símbolos especiais que realizam uma função específica.
Existem vários tipos de operadores, como aritméticos, lógicos, de compara-
ção, atribuição etc.

Veja uma lista com os principais:

Aritméticos
Operador Descrição Exemplo
^ Potência 10 ^ 3 = 1 000
- Subtração 10 - 3 = 7
+ Adição 10 + 3 = 13
* Multiplicação 10 * 3 = 30
/ Divisão real 10 / 3 = 3,3333333333333
\ Divisão de tipos inteiros 10 \ 3 = 3
mod Resto da divisão 10 Mod 3 = 1

Operadores relacionais
Utilizamos os operadores chamados relacionais para montarmos condi-
ções, seja para uma estrutura condicional ou de loop.

Como operadores relacionais temos os apresentados a seguir.

Comparação
Operador Descrição
= Igualdade
<> Diferente
< Menor que
> Maior que
<= Menor ou igual
>= Maior ou igual

24
Visual Basic.Net – estrutura da linguagem

Estruturas condicionais: If...Then...Else


Esta estrutura é o equivalente, em português estruturado, como Se...
Então...Senão.

Nessa estrutura, é obrigatório o uso das palavras-chave If e Then, de


forma que a estrutura básica de um If seria:

If <condição> Then

<comandos>

End If

onde temos a seguinte ideia: o(s) comando(s) citado(s) apenas seriam re-
alizados se a condição fosse verdadeira. A estrutura If estaria sendo encerra-
da no End If.

Além disso, podemos precisar processar alguma instrução caso a con-


dição seja falsa. É esse o papel do Else dentro da estrutura If (apenas para
lembrar, o Else é opcional, apenas sendo empregado em meio ao código
quando realmente se fizer necessário). Exemplo:

If <condição> Then

<comando>

Else

<comando>

End If

Aqui foram utilizadas instruções simples, tanto para o Then quanto para
o Else. Note que, nesse caso, novamente, o If se encerraria no End If final.

Podemos também avaliar, na mesma estrutura, diversas condições, espe-


cificando instruções que serão associadas a cada uma das condições citadas.
Exemplo:

25
Visual Basic.Net – estrutura da linguagem

If <condição> Then

<instrução>

<instrução>

ElseIf <condição2> Then

<instrução>

<instrução>

Else

<instrução>

<instrução>

End If

Ifs Encadeados
Podemos também construir Ifs Encadeados. Dessa forma, teríamos uma
sintaxe semelhante a:

If <condição> Then // Primeiro IF

<instrução>

<instrução>

Else

If <condição> Then // Segundo IF

<instrução>

<instrução>

Else

<instrução>

<instrução>

End If // Fim do Segundo IF

<instrução>

End If // Fim do Primeiro IF


26
Visual Basic.Net – estrutura da linguagem

O comando Select Case


É uma outra opção para se avaliar condições, mas sua estrutura serve so-
mente nos casos em que precisamos avaliar os possíveis diversos valores de
uma variável ou expressão.

Sintaxe da estrutura Select Case:

Select Case <variável>

Case <Valor1>

<instrução>

<instrução>

Case <Valor2>

<instrução>

<instrução>

Case Else

<instrução>

End Select

Um detalhe importante é que a estrutura Select Case também pode pos-


suir um Else, para que passemos alguma última instrução. Então, se a variável
citada não possuir nenhum dos valores discriminados na estrutura, automa-
ticamente o VB executaria as instruções passadas dentro do Case Else.

Estruturas loop
Loop é uma estrutura que pode ser composta por diversas instruções,
sendo executada repetidamente até determinada condição ser atendida.

Quando um loop está sendo processado repetidas vezes, sempre o pro-


cessamento se dá desde a primeira linha do loop, linha a linha, até atingir a
última, quando retorna para a primeira linha do loop novamente.

No VB, podemos elaborar, basicamente, dois tipos de loops diferentes: o


Do While e o For. Começaremos, então, a entender o funcionamento dos
mesmos, nessa ordem.
27
Visual Basic.Net – estrutura da linguagem

Do While...Loop
A estrutura básica do loop While é a que segue:

Do While <condição>

<instrução>

<instrução>

Loop

onde o loop inicia na primeira linha (com a palavra While) e encerra com
a palavra loop.

No caso, duas instruções integram esse loop, e serão executadas repeti-


damente enquanto a condição for verdadeira (aliás, a tradução da primeira
linha – Do While – é justamente: “faça enquanto”). Caso a condição se torne
falsa, a execução do loop é suspensa, de forma que o processamento segue
para a linha seguinte (logo após a palavra loop).

Exemplo:

Dim i As Integer

i=5

Do While i > 0

i=i-1

MsgBox (CStr(i))

Loop

Loop For...Next
Loop que é executado um número preestabelecido de vezes. A estrutura
básica do loop For é a que segue:

28
Visual Basic.Net – estrutura da linguagem

For <var> = <vInicial> To <vFinal> [ Step <Passo> ]

<comandos>

Next

onde o loop inicia na primeira linha (com a palavra For) e encerra com a
frase Next. Ao iniciar o processamento desse loop, a variável citada assume
o valor passado como inicial. O Passo é o número inteiro a ser incrementado
(caso seja um valor positivo) ou decrementado (caso seja um valor negativo)
da variável citada sempre que o loop é reexecutado, quando, automatica-
mente, compara o novo valor (resultado dessa operação) com o valor final.
Caso a variável tenha por novo valor um número inferior ou igual ao valor
final citado, o loop será executado novamente; caso contrário, encerra-se o
processamento do loop (já que a variável já ultrapassou o valor final citado).

Exemplo:

For i = 0 To 4 Step 1

MsgBox(CStr(i))

Next

Controles de interface
Agora, aprenderemos controles de tela para, então, começarmos a criar
alguns exercícios em Visual Basic.Net.

Os controles que aprenderemos serão:

 Form;

 Button;

 TextBox;

 Label;

29
Visual Basic.Net – estrutura da linguagem

 GroupBox;

 Panel.

Propriedade Name
Utilizamos a propriedade Name para personalizar os objetos na tela, faci-
litando, assim, sua referência via código.

No Visual Basic.NET, na Caixa de Propriedades, encontraremos essa pro-


priedade sempre entre parênteses, de forma que geralmente será sempre a
primeira propriedade citada para os objetos.

O objeto Form
Nós visualizamos o objeto Form logo no início da explicação sobre o
Visual Basic.Net, quando nosso objetivo era entender como funcionava o
ambiente de programação dessa linguagem.

Sempre que criarmos uma nova aplicação (menu File, opção New Pro-
ject), um novo Form automaticamente será exibido.

Principais propriedades

Text
Essa propriedade serve para configurar o texto estático que aparece na
barra título do Form.

Para alterar uma propriedade, sempre clicaremos inicialmente no nome


da propriedade que queremos alterar. Assim, localize, na Janela de Proprieda-
des, a propriedade Text, clicando sobre o nome desta. Em seguida, pressione
Tab, para que o valor da propriedade fique em vídeo reverso, indicando que
já está selecionado. Assim, digite o novo valor desejado e pressione a tecla
Enter para finalizar a entrada, a fim de que o valor seja atribuído definitiva-
mente à propriedade.

30
Visual Basic.Net – estrutura da linguagem

StartPosition
Inicialmente, um formulário sempre aparecerá na posição em que foi
construído ou aparecerá aleatoriamente, a cada momento, em uma posição
diferente da tela.

Para o usuário é muito mais cômodo que sempre o formulário apareça,


em tempo de execução, centralizado. Para isso, configuramos essa proprie-
dade com o valor CenterScreen.

FormBorderStyle
Para não permitir que o usuário redimensione a janela, iremos configurar
essa propriedade com os valores: Fixed ToolWindow (para que a janela fique
com a aparência das janelas de ferramentas – seja propriedade, projeto, ou
qualquer outra – do ambiente VB.Net – ou seja, a janela ficará sem os botões
de minimizar e maximizar) ou Fixed Single (deixando a borda da janela fixa,
com os botões de maximizar e minimizar).

MaximizeBox
Essa propriedade representa o botão de maximizar do Form. Para desabi-
litar esse botão, devemos alterar o valor dessa propriedade para False.

Font
Permite que mudemos a fonte default do formulário (a qual também será
o default para todos os controles que colocarmos sobre o Form).

BackColor
Permite alterar a cor de fundo do Formulário.

AcceptButton
Permite selecionar um botão no formulário que será acionado ao apertar
a tecla Accept <ENTER>.

31
Visual Basic.Net – estrutura da linguagem

CancelButton
Tem a mesma função do AcceptButton, porém o botão é acionado quando
é pressionada a tecla Cancel <ESC>.

Eventos do Form
Load: o código especificado nesse evento sempre será executado assim
que o formulário for criado em memória, logo no início da execução de sua
aplicação.

O objeto Button
Sempre que desejarmos criar um botão sobre o formulário, usaremos
este controle, identificado pelo ícone:

ab Button
Fonte: Microsoft Visual Studio, 2008.

Para inserirmos um botão (ou qualquer outro controle) no Form:

 Dê um duplo clique sobre o ícone Button, e o botão aparecerá centra-


lizado no Form.

 Dê um único clique sobre o ícone Button, vá até o Form, e dê um único


clique no Form com o botão esquerdo, e mantendo-o pressionado, mo-
vimente o mouse. Um pontilhado mostra como vai ficar o tamanho do
controle. Quando o tamanho for o desejado, largue o botão do mouse.

Voltando ao Button, vamos então conhecê-lo mais detalhadamente. A


principal finalidade do comando é que podemos codificar algo a ser dispara-
do quando o usuário pressionar esse botão.

Propriedades do Button

Text
Lembrando, a propriedade Text permite que configuremos o texto está-
tico que aparece na face do botão, para o usuário, em tempo de execução.

32
Visual Basic.Net – estrutura da linguagem

Esse texto também pode ser configurado usando um “&” antes da letra que,
juntamente com a tecla Alt, permite o disparo do mesmo controle, como se
tivéssemos pressionado o mesmo.

Enabled
Essa propriedade permite habilitar ou desabilitar o botão.

Eventos do Button
Click: aqui codificamos o que deve ocorrer quando o botão for
pressionado.

O objeto TextBox
O objeto TextBox é a caixa de texto do Visual Basic, ou seja, uma caixa
própria para o usuário informar uma linha (ou até várias) de texto, sendo
identificado pelo ícone:

abl TextBox
Fonte: Microsoft Visual Studio, 2008.

Propriedades do TextBox

Enabled
Caso, em algum instante, você queira exibir uma caixa de texto, mas que
seja utilizada simplesmente para exibir, por exemplo, um resultado do seu
processamento, ao invés de ser um controle disponível para edição pelo usu-
ário, é necessário mudar o valor dessa propriedade para False, indicando
que o controle está desabilitado, ou seja, ele existe, mas não para edição
do usuário, que é a finalidade padrão do controle; você o usará para exibir
algum dado não passível de alterações.

Text
É nessa propriedade que o Visual Basic guarda o texto digitado pelo usuá-
rio no controle. Podemos utilizá-la também para que o controle já apareça,
33
Visual Basic.Net – estrutura da linguagem

em tempo de execução, com um determinado valor (que seria o valor deixa-


do nessa propriedade).

MultiLine
Quando essa propriedade tem seu valor alterado para True, a caixa de
texto será utilizada não para o informe de somente uma linha de texto, mas
sim para que informemos várias linhas.

ScrollBars
Quando utilizamos uma caixa de texto para edição de várias linhas (pro-
priedade MultiLine com valor True), podemos configurar que o mesmo
controle terá também barras de rolagem. Os valores possíveis serão: None
(nenhuma barra de rolagem), Horizontal (barra de rolagem horizontal),
Vertical ou ainda Both (nesse último caso, terá as duas barras, horizontal e
vertical).

WordWrap
A propriedade WordWrap determina se o TextBox (quando MultiLine está
em True) fará a quebra de linha automática ou não (True para automática e
False para manual).

Métodos do TextBox
Focus: quando, em meio ao nosso código, utilizarmos esse método, es-
taremos jogando o foco para o controle TextBox, ou seja, estamos fazendo
com que o cursor seja “jogado” nesse controle.

Clear: ao utilizar o método Clear, o TextBox irá limpar (deixar sem texto).

Eventos do TextBox
KeyPress: através desse evento podemos fazer uma validação da entrada
feita pelo usuário, a cada letra pressionada (o próprio VB nos disponibiliza o
código Ascii da última tecla pressionada – basta nos referenciar a KeyAscii
dentro desse evento, em meio ao código).

34
Visual Basic.Net – estrutura da linguagem

O objeto Label
O objeto Label é um texto estático, não sujeito à digitação direta do usuá-
rio, que nos permite exibir alguma frase (que oriente a operação do usuário
na aplicação) ou algum resultado de processamento.

A Label
Fonte: Microsoft Visual Studio, 2008.

Propriedades do Label

Text
É através dessa propriedade que configuramos o texto que será exibido
através do controle.

AutoSize
É através dessa propriedade que definimos um autoajuste de tamanho
para o Label.

O objeto GroupBox
O objeto GroupBox é um objeto com botões do tipo Radio. Esses botões
são de seleção única.

XY
GroupBox
Fonte: Microsoft Visual Studio, 2008.

Propriedades do GroupBox

Text
É através dessa propriedade que configuramos o texto que será apresen-
tado na parte superior do GroupBox.

35
Visual Basic.Net – estrutura da linguagem

Enabled
É através dessa propriedade que habilitamos com True ou False o acesso
aos objetos internos do GroupBox.

O objeto Radio Button


É o Botão de Rádio, ou seja, um botão redondo (circular), que fica marcado
quando selecionado. Lembrando, só podemos selecionar um único dos diver-
sos botões que existem em uma área, sendo essa área, por exemplo, um
Frame.

RadioButton
Fonte: Microsoft Visual Studio, 2008.

Propriedades do Radio Button

Text
Através dessa propriedade, configuramos o texto dessa opção que apa-
recerá para o usuário.

Checked
Essa propriedade define se o Botão será selecionado por padrão na inicia-
lização do programa.

Interação com o usuário


Existem algumas caixas de diálogo padrão (seja para exibir uma mensa-
gem ou até mesmo para solicitar um texto ao usuário) sobre as quais apren-
deremos agora.

Essas caixas de diálogo, que começaremos a estudar detalhadamente,


são:

36
Visual Basic.Net – estrutura da linguagem

 MessageBox;

 InputBox.

Usando MessageBox
Caso você queira exibir uma mensagem, dentro de uma caixa de diálo-
go, para o usuário, você precisará usar MessageBox, seguindo, em meio ao
código, a sintaxe a seguir.

MessageBox.Show(<Mensagem>, <Título>, <Botão>, <Ícone>)

Nela temos 4 argumentos a serem passados, sendo “Mensagem” onde


deve ser utilizada uma variável String ou o texto a ser exibido na caixa de
diálogo. “Título” deve ser utilizada uma variável ou o texto que queremos
na barra de título da caixa de diálogo. Já nos argumentos “Botão” e “Ícone”
devem ser selecionados os tipos de botão e ícone que serão apresentados
ao usuário. Mais à frente segue a lista de Botões e Ícones.

Então, se desejarmos exibir esta caixa de diálogo:

precisaríamos codificar a seguinte instrução:

MessageBox.Show(“Mensagem”, “MessageBox”, _

MessageBoxButtons.OKCancel

onde MessageBoxButtons.OKCancel representa o botão OK e


Cancelar.

37
Visual Basic.Net – estrutura da linguagem

A lista a seguir mostra os possíveis botões e ícones.


Nome Tipo Descrição
AbortRetryIgnore Representa os botões Abortar, Repetir e Ignorar
Ok Representa o botão OK
OkCancel Representa os botões OK e Cancelar
MessageBoxButtons
RetryCancel Representa os botões Repetir e Cancelar
YesNo Representa os botões Sim e Não
YesNoCancel Representa os botões Sim, Não e Cancelar
Error Representa o ícone de Situação Crítica
Information Representa o ícone de Informação
MessageBoxIcon
Exclamation Representa o ícone de Exclamação
Question Representa o ícone de Questão

Os nomes exibidos nos botões estarão em inglês ou em português, de-


pendendo do idioma do Windows instalado.

Como podemos, ainda usando essa função, exibir até mais de um botão,
é natural que precisemos verificar qual foi o botão selecionado pelo usuário
na caixa de diálogo. A função MessageBox retorna exatamente qual foi esse
botão, e o Visual Basic disponibiliza algumas constantes que representam
justamente o retorno da função.
Retorno Descrição
DialogResult.Abort O Botão Abort foi pressionado
DialogResult.Cancel O Botão Cancel foi pressionado
DialogResult.Yes O Botão Yes foi pressionado
DialogResult.No O Botão No foi pressionado
DialogResult.Retry O Botão Retry foi pressionado
DialogResult.Ok O Botão Ok foi pressionado

Poderemos verificar o retorno dessa função, utilizando o código especifi-


cado abaixo:

If MessageBox.Show(“Deseja Continuar?”, “Questão”, _


MessageBoxButtons.YesNo, MessageBoxIcon.Question)_=
DialogResult.Yes Then

MessageBox.Show(“Você Clicou em SIM !”)

Else

MessageBox.Show(“Você Clicou em NÃO !”)

End If
38
Visual Basic.Net – estrutura da linguagem

Com esse código poderemos ter o retorno em função de qual botão foi
pressionado pelo usuário.

Usando InputBox
Essa função exibe uma caixa de diálogo composta por um Label, um Text
Box e dois botões: Ok e Cancel. A utilizamos como caixa de entrada. Por-
tanto, sempre que precisamos que o usuário nos informe um determinado
valor, podemos utilizar esta função, que tem por sintaxe:

<Variável> = InputBox ( <Texto>, <Título> )

onde temos uma variável que receberá o valor digitado pelo usuário na
caixa de texto, e 2 argumentos a serem passados para a função InputBox.
“Título” é o texto a ser exibido na barra de título da caixa de diálogo; “Texto”
é o texto que aparecerá como valor do Label, uma frase que orientará o usu-
ário sobre o valor que ele deverá informar na caixa de texto.

Caso o usuário cancele a caixa de diálogo, a variável receberá como valor


um String nulo (“”).

Vamos supor que precisamos solicitar uma mensagem ao usuário através


dessa caixa de diálogo:

Para isso, deveríamos criar uma variável (no exemplo, será a de nome
sTexto) e depois usarmos a função InputBox como segue:

Dim sTexto As String

sTexto = InputBox(“Digite um valor:”, “InputBox”)

Tratando erros de processamento


Para tratarmos qualquer erro dentro do Visual Basic, estaremos sempre
utilizando, logo no início do evento que codificarmos, a instrução:
39
Visual Basic.Net – estrutura da linguagem

On Error Goto <Nome>

onde instruiremos o VB a desviar para um determinado Nome em caso de


erro. Portanto, o código do evento estará antes desse nome, enquanto que o
tratamento do erro estará logo após o nome.

Então, terminada a codificação do evento, teríamos as instruções:

Exit Sub

<Nome>:

<instruções de tratamento do erro>

End Sub

Nome seria o mesmo utilizado na instrução On Error. Após o código,


sempre teremos esse nome seguido de “:”. E nas linhas seguintes, as instru-
ções a serem processadas em caso de erro. Ou seja, o tratamento (que começa
quando citamos o Nome) será sempre a última parte do código do evento.

Se o erro ocorrer, automaticamente o processamento desviará para o


Nome, a fim de tratá-lo. No entanto, se o erro NÃO tiver ocorrido, teremos que
evitar o tratamento, e para isso, devemos deixar sempre antes do tratamento
do erro a instrução Exit Sub, cancelando o processamento do evento.

Vamos criar um exemplo.

Vamos solicitar a idade do usuário através de um InputBox e calcular a quan-


tidade de dias que ele viveu exibindo em um MessageBox. O usuário deverá
informar números inteiros, porém existe a possibilidade de digitar caracteres,
e ao realizar algum cálculo ou conversão do mesmo acontecerá um erro.

40
Visual Basic.Net – estrutura da linguagem

O código teria ficado assim:

Dim Valor As String

Dim Dias as Integer

On Error GoTo Erros

Valor = InputBox(“Digite sua idade:”, “Entrada”)

Dias = CInt(Valor) * 365

MessageBox.Show(CStr(Dias), “Qtd Dias” _

,MessageBoxButtons.OK _

,MessageBoxIcon.Information)

Exit Sub

Erros:

MessageBox.Show(“Valor inválido, digite números”)

Caso aconteça erro na conversão (através da função CInt) ou no cálculo,


nenhuma linha é executada até “Erros:”, se nenhum erro ocorrer o Exit Sub
faz com que o VB termine o evento.

Podemos também trabalhar com um TextBox no Form e prevenir o erro ao


invés de tratá-lo, inibindo o usuário de digitar caracteres alfabéticos.

Para isso devemos utilizar o evento Key Press do TextBox, fazendo com que
seja avaliado qual caracter foi digitado e permitindo ou não a sua utilização.

41
Visual Basic.Net – estrutura da linguagem

Exemplo:

Private Sub TextBox1_KeyPress(...

Select Case e.KeyChar

Case “0”c To “9”c, Chr(8)

Case Else

Beep()

e.Handled = True

End Select

End Sub

Dessa forma, caso o usuário digite algum caractere que não esteja entre
“0” e “9”ou a tecla backSpace, o programa simplesmente ignora a tecla
pressionada.

42
Visual Basic.Net – exercícios

Exercício 1

Neste exercício, deixaremos o formulário com a aparência a seguir.

Objetivo

O usuário deverá informar a quantidade de piscinas olímpicas em que já


nadou (o informe será feito na caixa de texto).

Devemos validar o informe de forma que apenas sejam aceitos dígitos


(de 0 a 9).

No final da digitação, caso ele tecle Enter ou caso clique com o mouse
sobre o botão Piscinas (as ações serão equivalentes), teremos que avaliar a
quantidade informada, de forma que se a quantidade não foi informada, de-
vemos exibir um erro; caso contrário, devemos prosseguir o processamento,
exibindo uma caixa de diálogo com a mensagem:

“Você está fora de forma!” (se a quantidade for menor ou igual a 20);

“Você está em forma!” (se a quantidade for inferior a 50 e maior que 20);

“Você está pronto para competir!” (se a quantidade for maior ou igual a 50).

Resolução

Selecione a opção New no menu File e siga as intruções do Project


Wizard. Para esse objeto, altere as seguintes propriedades:

Form1
Nome da propriedade Valor
Name Piscinas
StartPosition CenterScreen
FormBorderStyle FixedSingle
Text Voltas na Piscina
Visual Basic.Net – exercícios

Em seguida, monte o layout apresentado na ilustração, incluindo os se-


guintes controles sobre o nosso formulário: 1 Label, 1 TextBox e 1 Button
(distribua-os segundo o layout).

Vamos alterar agora as propriedades desses controles:

Label1
Nome da propriedade Valor
Text Número de Piscinas

TextBox1
Nome da propriedade Valor
Name txtPiscinas
Text

Button1
Nome da propriedade Valor
Text Resultado
Name btnPiscinas

O layout da tela já está montado. Vamos iniciar a codificação.

Abra o evento KeyPress do objeto de nome txtPiscinas (que é a


caixa de texto). Sempre colocaremos em negrito aquilo que o VB mostra
automaticamente.

Select Case e.KeyChar

Case “0”c To “9”c, “,”c, Chr(8)

Case Else

Beep()

e.Handled = True

End Select

O código aqui se resume a uma instrução If que avalia a tecla pressionada.


O próprio VB nos fornece o código correspondente à tecla pressionada atra-
vés do valor de KeyAscii (que ele mesmo declara no cabeçalho deste evento,
mais precisamente na 1.a linha que ele nos exibe, junto ao nome da função,
entre parênteses, como sendo do tipo Integer).

46
Visual Basic.Net – exercícios

Agora, vamos codificar o que acontecerá caso o usuário acione o botão,


seja clicando sobre o mesmo com o mouse ou teclando Enter. Assim, iremos
codificar o evento Click do objeto de nome btnPiscinas (que é o botão):

Dim iVoltas As Integer

Dim sTexto As String

Dim sTitulo As String

If txtPiscinas.Text = “” Then

Beep()

MessageBox.Show(“Informe a quantidade de “ & _

“piscinas que você nadou”, “Erro”, _

MessageBoxButtons.OK, _

MessageBoxIcon.Exclamation)

txtPiscinas.Focus()

Exit Sub

End If

iVoltas = CInt(txtPiscinas.Text)

If iVoltas <= 20 Then

sTexto = “Você está fora de forma!”

ElseIf iVoltas < 50 Then

sTexto = “Você está em forma!”

Else

sTexto = “Você está pronto para competir!”

End If

47
Visual Basic.Net – exercícios

sTitulo = “Nº de voltas: “ & CStr(iVoltas)

MessageBox.Show(sTexto, sTitulo, _

MessageBoxButtons.OK, _

MessageBoxIcon.Information)

txtPiscinas.Clear()

txtPiscinas.Focus()

Inicialmente, nesse código, foram declaradas 3 variáveis:

 iVoltas – variável inteira que conterá o valor informado na caixa de


texto pelo usuário, ou seja, o número de piscinas olímpicas em que a
pessoa nadou;

 sTexto – variável String que conterá a mensagem de texto que será


exibida para o usuário;

 sTitulo – variável String que conterá o texto a ser utilizado na barra de


título da caixa de diálogo que apresentará a mensagem.

Logo depois começa o código, onde podemos encontrar uma estrutura If:

If txtPiscinas.Text = “” Then

Beep()

MessageBox.Show(“Informe a quantidade de “ & _

“piscinas que você nadou”, “Erro”, _

MessageBoxButtons.OK, _

MessageBoxIcon.Exclamation)

txtPiscinas.Focus()

Exit Sub

End If

48
Visual Basic.Net – exercícios

Nele estamos verificando se a propriedade Text do controle txtPiscinas


(caixa de texto) possui valor vazio, ou seja, estamos verificando se o usuá-
rio deixou de informar algo na caixa de texto. Caso isso aconteça, o informe
está inválido, portanto, emitimos um beep, exibimos uma caixa de erro com a
função MsgBox, para, logo depois, jogar o foco no controle de caixa de texto
(txtPiscinas.Focus) e, finalmente, cancelar a execução desse código (Exit Sub).

Em seguida, encontramos a instrução:

iVoltas = CInt(txtPiscinas.Text)

onde armazenamos o que o usuário digitou (valor da propriedade Text do


controle de caixa de texto) dentro da variável inteira de nome iVoltas. Como
são tipos incompatíveis, estamos convertendo o valor de Text de String para
inteiro (Int).

Na estrutura If que segue:

If iVoltas <= 20 Then

sTexto = “Você está fora de forma!”

ElseIf iVoltas < 50 Then

sTexto = “Você está em forma!”

Else

sTexto = “Você está pronto para competir!”

End If

estamos avaliando o valor informado pelo usuário (que ficou, segundo


instrução explicada anteriormente, dentro da variável iVoltas). Se o valor for
menor ou igual a 20 então o valor da variável sTexto será “Você está fora de
forma!”; se, no entanto, o valor não estiver nessa faixa (1.º Else), estamos veri-
ficando se o valor é inferior a 50, e em caso afirmativo, deixamos o valor “Você
está em forma!” dentro da variável sTexto; caso o valor não seja inferior a 50
(2.º Else), sabemos que o valor é, então, superior ou igual a 50, quando então
deixamos a variável sTexto com o valor “Você está pronto para competir!”.

49
Visual Basic.Net – exercícios

Por último, encontramos as instruções:

sTitulo = “Nº de voltas: “ & CStr(iVoltas)

MessageBox.Show(sTexto, sTitulo, _

MessageBoxButtons.OK, _

MessageBoxIcon.Information)

onde a variável sTitulo recebe o valor “Nº de voltas: “ seguido da quantida-


de informada pelo usuário.

Por último, a função MsgBox é executada para exibir uma caixa de diálogo
onde o texto apresentado é justamente a mensagem armazenada na variá-
vel sTexto, e o título da caixa é o valor da variável sTitulo.

Exercício 2

Neste exercício, deixaremos o formulário com a aparência a seguir.

Objetivo

O usuário deverá informar dois números inteiros positivos (um em cada


caixa de texto).

Devemos validar o informe de forma que apenas sejam aceitos dígitos


(de 0 a 9).

No final da digitação, caso ele tecle Enter ou caso clique com o mouse
sobre o botão “Maior” (as ações serão equivalentes), teremos que determinar
e apresentar o maior dentre os dois números informados na parte inferior
da tela.
50
Visual Basic.Net – exercícios

Resolução

Selecione a opção New Project no menu File. Com a nova aplicação


em tela, já temos o objeto Form1. Para esse objeto, altere as seguintes
propriedades:

Form1
Nome da propriedade Valor
Name frmMaior
FormBorderStyle Fixed ToolWindow
StartPosition CenterScreen
Text Maior número

Em seguida, monte o layout apresentado na ilustração, incluindo os se-


guintes controles sobre o nosso formulário: 2 Label, 2 TextBox e 1 Button
(distribua-os segundo o layout).

Vamos alterar agora as propriedades desses controles:

Label1
Nome da propriedade Valor
Text Nro 1:

TextBox1
Nome da propriedade Valor
Name txtN1
Text

Label2
Nome da propriedade Valor
Text Nro 2:

TextBox2
Nome da propriedade Valor
Name txtN2
Text

Label3
Nome da propriedade Valor
Name lblResultado
Text

51
Visual Basic.Net – exercícios

Button1
Nome da propriedade Valor
Text &Maior ?
Name btnMaior

O layout da tela já está montado. Vamos iniciar a codificação.

Para que apenas sejam aceitos dígitos no informe que o usuário fará na
caixa de texto, teremos que codificar, assim como no exercício anterior, o
evento KeyPress do objeto txtNro1 (que é a primeira caixa de texto) – o
código também é idêntico ao do exercício anterior:

Select Case e.KeyChar

Case “0”c To “9”c, Chr(8)

Case Else

Beep()

e.Handled = True

End Select

Informe esse mesmo código para o evento de mesmo nome (KeyPress)


do objeto txtNro2.

Em seguida, vamos codificar o que acontecerá caso o usuário acione o


botão, seja clicando sobre o mesmo com o mouse ou teclando Enter. Assim,
iremos codificar o evento Click do objeto de nome btnMaior (que é o
botão):

Dim N1 As Integer
Dim N2 As Integer
Dim Resultado As String

If txtN1.Text = “” Or txtN2.Text = “” Then


Beep()

52
Visual Basic.Net – exercícios

MessageBox.Show( _
“Informe dois nº inteiros.” _
, “Erro” _
, MessageBoxButtons.OK _
, MessageBoxIcon.Error)
Exit Sub
End If

N1 = CInt(txtN1.Text)
N2 = CInt(txtN2.Text)

If N1 > N2 Then
Resultado = CStr(N1) + _
“ é maior que “ + CStr(N2)
ElseIf N2 > N1 Then
Resultado = CStr(N2) + _
“ é maior que “ + CStr(N1)
Else
Resultado = CStr(N1) + _
“ é igual a “ + CStr(N2)
End If

lblResultado.Text = Resultado

Após a codificação execute seu código.

Exercício 3

Neste exercício, deixaremos o formulário com a aparência a seguir.

53
Visual Basic.Net – exercícios

Objetivo

O programa deverá calcular o valor final de um produto, já deduzido o


desconto, sendo que este só poderá ser de 0% até 100%, informando uma
mensagem de erro caso o usuário digite um valor inválido.

Resolução

Altere as seguintes propriedades:

Form1
Nome da propriedade Valor
Name frmDesconto
FormBorderStyle FixedSingle
StartPosition CenterScreen
Text Calcular Desconto

Em seguida, monte o layout apresentado na ilustração, incluindo os se-


guintes objetos no formulário: 4 Label, 2 TextBox, 2 Button.

Label1
Nome da propriedade Valor
Name lblValorTotal
Text Valor Total

Label2
Nome da propriedade Valor
Name lblDesconto
Text Desconto

Label3

54
Visual Basic.Net – exercícios

Nome da propriedade Valor


Name lblValorFinal
Text Valor Final:

Label4
Nome da propriedade Valor
Name lblPorcentagem
Text %

TextBox1
Nome da propriedade Valor
Name txtValorTotal
Text

TextBox2
Nome da propriedade Valor
Name txtDesconto
Text

Button1
Nome da propriedade Valor
Text &Calcular
Name btnCalcular

Button2
Nome da propriedade Valor
Name btnSair
Text &Sair

Agora clique duas vezes sobre o botão Calcular e digite os seguintes co-
mandos no evento Click.

Dim Valor As Double

Dim Desconto As Double

Dim Final As Double

On Error Go To erros

55
Visual Basic.Net – exercícios

Valor = CDbl(txtValorTotal.Text)

Desconto = CDbl(txtDesconto.Text)

If Desconto < 0 Or Desconto > 100 Then

MessageBox.Show( _

“O desconto deve ser entre 0% e 100%” _

,“Erro”, MessageBoxButtons.OK_

, MessageBoxIcon.Error)

txtDesconto.Clear()

txtDesconto.Focus()

ExitSub

EndIf

Final = Valor * (1 - Desconto / 100)

lblValorFinal.Text = “ValorFinal: “

ExitSub

erros:

MessageBox.Show(_

“Digite corretamente os valores”,_

“Erro”, MessageBoxButtons.OK,_

MessageBoxIcon.Error)

txtValor.Clear()

txtDesconto.Clear()

txtValor.Focus()

56
Visual Basic.Net – exercícios

Agora abra o evento Click do botão sair e digite os seguintes comandos.


Close()

Explicação dos códigos:

Aqui declaramos as variáveis necessárias para os cálculos, uma para o


valor total informado, uma para o desconto e uma para o valor final:

Dim Valor As Double

Dim Desconto As Double

Dim Final As Double

Depois cada variável é preenchida com seu respectivo campo:

Valor = CDbl(txtValorTotal.Text)

Desconto = CDbl(txtDesconto.Text)

Aqui estamos verificando se o desconto informado está dentro do inter-


valo de 0 a 100.

If Desconto < 0 Or Desconto > 100 Then

MessageBox.Show( _

“O desconto deve ser entre 0% e 100%” _

, “Erro”, MessageBoxButtons.OK _

, MessageBoxIcon.Error)

txtDesconto.Clear()

txtDesconto.Focus()

Exit Sub

End If

Caso o desconto esteja correto o valor final é calculado e exibido em


seguida.

57
Visual Basic.Net – exercícios

Final = Valor * (1 - Desconto / 100)

lblValorFinal.Text = “Valor Final:”

Após a codificação execute seu programa.

Exercício 4

Neste exercício, deixaremos o formulário com a aparência a seguir.

Objetivo

O usuário deverá clicar no botão (ou teclar Enter), quando então serão
solicitados três números, cujos valores devemos armazenar dentro de uma
matriz de três posições.

À medida que lemos esses três números, devemos somá-los e, uma vez
determinado o resultado dessa soma, devemos apresentá-lo em tela, dentro
da caixa de texto.

A caixa de texto, neste exercício, será usada somente para exibir o resulta-
do do cálculo, de forma que o usuário não poderá editar o seu conteúdo.

Resolução

Altere as seguintes propriedades:

Form1
Nome da propriedade Valor
Name frmSoma
FormBorderStyle Fixed ToolWindow
StartPosition CenterScreen
Text Soma de Números

58
Visual Basic.Net – exercícios

Em seguida, coloque os seguintes controles sobre o formulário: 1 Label, 1


TextBox e 1 Button (distribua-os segundo o layout), definindo suas proprie-
dades conforme abaixo:

Label1
Nome da propriedade Valor
Text Resultado da Soma:

TextBox1
Nome da propriedade Valor
Name txtResultado
Text
Enabled False

Button1
Nome da propriedade Valor
Text &Solicitar 3 Nros
Name btnResultado

O layout da tela já está montado. Vamos iniciar a codificação.

Abra o evento Click do objeto btnResultado:

on error goto erros

Dim i As Integer

Dim Valor(3) As Integer

Dim Soma As Integer

Dim Texto As String

On Error GoTo erros

txtResultado.Clear()

i=1

Soma = 0

For i = 1 To 3 Step 1

59
Visual Basic.Net – exercícios

Texto = InputBox(“Informe o “+CStr(i) _

+ “º numero:”, “Entrada”)

Valor(i) = CInt(Texto)

Soma += Valor(i)

Next

txtResultado.Text = CStr(Soma)

Exit Sub

erros:

If Texto = “” Then

MessageBox.Show( _

“Cancelado pelo usuário.” _

, “Erro” _

, MessageBoxButtons.OK _

, MessageBoxIcon.Error)

Else

MessageBox.Show( _

“Valor Inválido!” _

, “Erro” _

, MessageBoxButtons.OK _

, MessageBoxIcon.Error)

End IF

60
Visual Basic.Net – exercícios

Antes de mais nada, podemos encontrar no código:

On Error GoTo Erros

onde instruímos que, em caso de erro, deve-se desviar o processamento


até o rótulo “Erros”. Este, como estudamos, fica no final do código do evento,
onde encontramos as instruções:

erros:

If Texto = “” Then

MessageBox.Show( _

“Cancelado pelo usuário.” _

, “Erro” _

, MessageBoxButtons.OK _

, MessageBoxIcon.Error)

Else

MessageBox.Show( _

“Valor Inválido !” _

, “Erro” _

, MessageBoxButtons.OK _

, MessageBoxIcon.Error)

End If

Aqui, temos exibições diferentes de mensagens dependendo do conteú-


do da variável Texto (que receberá cada um dos números informados pelo
usuário). Se a variável estiver vazia, significa que o usuário terá cancelado o
informe dos números (primeira mensagem de erro); caso contrário, exibirá
uma segunda mensagem, já que nos demais casos o informe teria sido feito,
mas de forma errada.

61
Visual Basic.Net – exercícios

Fonte: Microsoft Visual Studio, 2008.

Fonte: Microsoft Visual Studio, 2008.

Fonte: Microsoft Visual Studio, 2008.

62
Visual Basic.Net – exercícios

Fonte: Microsoft Visual Studio, 2008.

Fonte: Microsoft Visual Studio, 2008.

Temos a declaração de 4 variáveis:

 Valor – Array (ou seja, matriz) com 3 posições, numeradas de 1 a 3, que


conterão os números inteiros informados pelo usuário;

 i – variável inteira que controlará a posição da matriz que estará sendo


trabalhada;

 Soma – variável inteira onde somaremos os valores informados;

 Texto – variável String onde inicialmente estará o valor informado pelo


usuário.

63
Visual Basic.Net – exercícios

Logo depois, vem um loop For onde a variável contadora é i, que começa-
rá com valor 1 e irá até o valor 3, que são justamente as posições de Valor que
precisam receber valor. O loop servirá para ler os 3 valores, armazenando-os
na matriz, bem como para obter a soma desses mesmos valores, resultado
que ficará na variável Soma.

A primeira coisa feita dentro do loop é atribuir um String vazio à variável


Texto para, logo em seguida, chamar, em meio a uma estrutura If, a função
InputBox que está sendo usada para solicitar um dos números. Esse valor
ficará armazenado inicialmente dentro da variável Texto.

Logo depois, Texto ainda é tratado com a função Trim que elimina os espa-
ços em branco das extremidades do texto (esquerda e direita), caso tenham
sido informados.

Em seguida, encontramos o seguinte:

Valor(i) = Cint(Texto.Trim())

onde convertemos o informe do usuário (que estaria na variável Texto) para


um número inteiro (usando a função Int), e o resultado seria armazenado na
variável MatrizNros, dentro da posição indicada pelo valor atual do contador
do loop For, a variável i. Em seguida, somamos ao valor já calculado (valor da
variável Soma) o número informado (que ficou na posição i de Valor):

Soma + = Valor(i)

Por último, após finalizar o loop, exibimos o resultado da soma (variável


Soma), atribuindo seu valor à propriedade Text (responsável pelo conteúdo)
do controle txtResultado:

txtResultado.Text = Cstr(Soma)

e a instrução:

Exit Sub

que manda abandonar a execução do evento (se chegou até esse ponto
do código, tudo funcionou), de forma que não seja executado o tratamento
de erro que vem a seguir, no final do código.

64
Visual Basic.Net – exercícios

Exercício 5

Neste exercício, deixaremos o formulário com a aparência a seguir.

Objetivo

O usuário deverá clicar no botão (ou teclar Enter), quando então serão
calculadas a média e a situação final do aluno.

Verificar se o informe das notas foi feito, e em caso afirmativo, se está cor-
reto (valores entre 0 e 10), emitindo mensagem de erro se for o caso.

Determinar a média do aluno (média aritmética das notas) e, a partir


desta, a situação do aluno: se a média for maior ou igual a 5, “APROVADO”; se
a média for menor que 5 e maior ou igual a 3, “EXAME”; se a média for inferior
a 3, “REPROVADO”.

Exibir, dentro do controle inferior da tela (o último TextBox, de nome txt-


Media): as notas, a média e a situação. Esse controle não pode estar disponí-
vel para edição.

Resolução

Altere as seguintes propriedades:

Form1
Nome da propriedade Valor
Name frmMedia
FormBorderStyle FixexSingle
StartPosition CenterScreen
Text Média De Um Aluno

65
Visual Basic.Net – exercícios

Em seguida, coloque os seguintes controles sobre o formulário: 2 Label, 3


TextBox e 1 Button (distribua-os segundo o layout), definindo suas proprie-
dades conforme abaixo:

Label1
Nome da propriedade Valor
Text Nota 1:

Label2
Nome da propriedade Valor
Text Nota 2:

TextBox1
Nome da propriedade Valor
Name txtNota1
Text

TextBox2
Nome da propriedade Valor
Name txtNota2
Text

Button1
Nome da propriedade Valor
Text &Calcula
Name btnCalcula

TextBox3
Nome da propriedade Valor
Name txtMedia
Enabled False
MultiLine True
Text

O layout da tela já está montado. Vamos iniciar a codificação.

Abra o evento Click do objeto btnCalcula, codificando:

66
Visual Basic.Net – exercícios

Dim nt1 As Double

Dim nt2 As Double

Dim media As Double

Dim situacao As String

On Error GoTo erros

nt1 = CDbl(txtNota1.Text)

nt2 = CDbl(txtNota2.Text)

If ((nt1 < 0) Or (nt1 > 10) Or _

(nt2 < 0) Or (nt2 > 10)) Then

MessageBox.Show(“Nota(s) Inválida(s)!”, _

“Erro”, MessageBoxButtons.OK, _

MessageBoxIcon.Error)

txtNota1.Focus()

Exit Sub

End If

media = (nt1 + nt2) / 2

If media >= 5 Then

situacao = “Aprovado”

ElseIf media >= 3 Then

situacao = “Exame”

67
Visual Basic.Net – exercícios

Else

situacao = “Reprovado”

End If

txtMedia.Text = _

“Nota 1 => “ + CStr(nt1) + _

Chr(13) + Chr(10) + _

“Nota 2 => “ + CStr(nt2) + _

Chr(13) + Chr(10) + _

“Media => “ + FormatNumber(media, 2) + _

Chr(13) + Chr(10) + _

“Situação: “ + situacao

txtNota1.Focus()

Exit Sub

erros:

MessageBox.Show(“Verifique as Notas”, _

“Erro”, MessageBoxButtons.OK, _

MessageBoxIcon.Error)

txtNota1.Focus()

Temos aqui a declaração de 4 variáveis. Uma delas, String, é a de nome


situacao que guardará a situação final do aluno, se aprovado, reprovado ou
de exame. As três outras variáveis são todas do tipo Double: Nt1 (conterá a

68
Visual Basic.Net – exercícios

primeira nota informada), Nt2 (conterá a segunda nota informada) e Media


(que conterá a média do aluno).

Caso ocorra algum erro, o tratamento a ser feito é o de nome Erros.

No processamento, inicialmente, tenta-se converter as notas que foram


informadas nos controles txtNota1 e txtNota2, de String para ponto flutuante
(CDbl), armazenando esses valores, respectivamente, nas variáveis Nt1 e Nt2.
Para validar os valores, precisamos verificar se os números estão no intervalo
de 0 a 10. Caso a 1.ª ou a 2.ª nota sejam inferiores a zero ou superiores a 10,
emitimos um erro em tela, colocando o foco sobre o 1.º valor, e cancelando
o processamento.

Uma vez que foram informadas somente notas válidas, a média é


calculada:

Media = (Nt1 + Nt2) / 2

E, a partir dela, é verificada a situação final do aluno (que ficará na variável


Situacao):

If media >= 5 Then

situacao = “aprovado”

ElseIf media >= 3 Then

situacao = “exame”

Else

situacao = “reprovado”

End If

Se Media (média final do aluno) for maior ou igual a 5, o aluno foi “apro-
vado”; caso contrário (já sabemos que é menor que 5), se a média for maior
ou igual a 3, o aluno está de “exame”; caso contrário, a média é inferior a 3, de
forma que o aluno foi “reprovado”.

69
Visual Basic.Net – exercícios

Por fim, montamos o conteúdo do controle txtMedia da seguinte forma:

txtMedia.Text = _

“Nota 1 => “ + CStr(nt1) + _

Chr(13) + Chr(10) + _

“Nota 2 => “ + CStr(nt2) + _

Chr(13) + Chr(10) + _

“Media => “ + FormatNumber(media, 2) + _

Chr(13) + Chr(10) + _

“Situação: “ + situacao

txtNota1.Focus()

Esse controle exibirá “Nota 1 => ” concatenado ao valor informado no


controle txtNota1. Logo depois, é a vez da segunda nota para, em seguida,
exibirmos a média e, por fim, a situação do aluno.

No final desse processamento, jogamos o foco mais uma vez no controle


txtNota1, como segue:

txtNota1.Focus

No VB.Net, Chr(13) concatenado a Chr(10) causam a mudança de linha


dentro do controle de caixa de texto.

Fonte: Microsoft Visual Studio, 2008.

70
Visual Basic.Net – exercícios

Exercício 6

Neste exercício, deixaremos o formulário com a aparência a seguir.

Objetivo

Quando o usuário clicar no botão “Solicita Valores”, devemos solicitar 10


valores, armazenando-os, cada um, em uma das 10 posições de uma variável
matriz.

Uma vez informados os valores, quando o usuário clicar no botão “Exibe


Valores”, devemos verificar cada um dos 10 valores que foram armazenados
na matriz, montando, em uma mesma caixa de diálogo, todos os números
positivos informados, desde que sejam maiores que zero.

Caso o usuário clique no botão “Exibe Positivos” assim que iniciou a apli-
cação, devemos acusar um erro, já que ele ainda não informou os valores.

A exibição dos valores positivos deve ser feita em uma caixa de diálogo,
como segue:

Resolução

Altere as seguintes propriedades:

Form1
Nome da propriedade Valor
Name frmMatrizPositivos
FormBorderStyle FixedSingke
StartPosition CenterScreen
Text Matriz - Exibe Positivos

71
Visual Basic.Net – exercícios

Em seguida, coloque 2 Button sobre o formulário, distribuindo-os segun-


do o layout apresentado. Defina suas propriedades conforme abaixo:

Button1
Nome da propriedade Valor
Text &Solicita Valores
Name BtnSolicita

Button2
Nome da propriedade Valor
Text &Exibe Positivos
Name btnExibe

O layout da tela já está montado. Vamos iniciar a codificação.

Precisamos definir algumas variáveis globais (que possam ser utilizadas


por todos os códigos associados a qualquer objeto desse Form. Para isso, vá
até a área inicial da classe, incluindo as declarações das seguintes variáveis
(as instruções que não estão em negrito):

Public Class frmPositivos

Dim aValor(10) As Integer

Dim BInforme As Boolean

Aqui criamos duas variáveis:

 aValor – é um Array que possui 10 posições, numeradas de 1 a 10. Cada


posição, nessa matriz, conterá um número inteiro. É nela que deixare-
mos os valores, à medida que os solicitarmos;

 bInforme – é uma variável booleana que servirá para indicar se a variá-


vel aValor já contém valores ou não (respectivamente, True e False).

Abra o evento Load do objeto frmMatrizPositivos, codificando:

bInforme = False

ou seja, quando o formulário for criado em memória, logo que a aplicação


começar, ainda não existem números na matriz. Por isso, a variável bInforme
está recebendo o valor False.

72
Visual Basic.Net – exercícios

Agora, abra o evento Click do objeto btnSolicita, codificando:

Dim Texto As String

Dim i As Integer

On Error GoTo erros

For i = 1 To 10 Step 1

Texto = InputBox(“Informe o “ + _

CStr(i) + “º numero:”, “Entrada”)

aValor(i) = CInt(Texto)

Next

BInforme = True

btnExibe.Focus()

Exit Sub

erros:

If Texto = “” And _

Not IsNumeric(Texto) Then

MessageBox.Show(“Valor Inválido!” _

, “Erro”, MessageBoxButtons.OK _

, MessageBoxIcon.Error)

Else

MessageBox.Show(

“Cancelado pelo usuário” _

, “Erro”, MessageBoxButtons.OK _

, MessageBoxIcon.Information)

End If
73
Visual Basic.Net – exercícios

Aqui declaramos duas variáveis: sTexto (será usado para sempre conter o
último número informado pelo usuário) e i (que utilizaremos para controlar
qual é a posição da matriz que estamos processando).

O processamento resume-se a um loop For controlado justamente pela va-


riável i que iniciará com o valor 1 e irá até 10 (são 10 as posições da matriz).

Caso ocorra algum erro durante o processamento, já deixamos claro que


o mesmo será tratado em Erros, onde, inicialmente, verificamos se a variável
sTexto tem um conteúdo não numérico, porque, nesse caso, o informe está
errado; caso contrário, o informe foi cancelado pelo usuário.

Para cada posição, solicitamos o número que será armazenado na posi-


ção atual. Para isso, utilizamos a função InputBox, que deixará o resultado (o
que o usuário digitou) dentro da variável sTexto. Então, esse valor será arma-
zenado na posição i da variável aValor.

Caso o usuário tenha informado todos os 10 números corretamente, che-


gará ao final do loop For, quando deixamos a variável bInforme com valor
True, indicando que já existem números dentro da matriz, para, em seguida,
abandonarmos esse processamento, já que foi realizado corretamente e, por
isso, não é necessário se tratar nenhum erro.

Falta agora codificar o evento Click do objeto btnExibe:

Dim Positivo As Integer

Dim i As Integer

Dim MSG As String

If Not BInforme Then

MessageBox.Show(“Informar os Valores” _

, “Erro”, MessageBoxButtons.OK _

, MessageBoxIcon.Information)

btnSolicita.Focus()

Exit Sub

End If

74
Visual Basic.Net – exercícios

MSG = “”

For i = 1 To 10 Step 1

Positivo = aValor(i)

If Positivo > 0 Then

If MSG = “” Then

MSG = “Positivos informados: “ _

+ Chr(13) + Chr(10)

End If

MSG += Chr(13) + Chr(10) _

+ CStr(Positivo)

End If

Next

If MSG = “” Then

MessageBox.Show( _

“Não foram informados valores positivos” _

, “Resultado”, MessageBoxButtons.OK _

, MessageBoxIcon.Exclamation)

Else

MessageBox.Show(MSG _

, “Resultado”, MessageBoxButtons.OK _

, MessageBoxIcon.Information)

End If

Aqui declaramos as variáveis Positivo (que utilizaremos para armazenar


um dos 10 números da matriz), i (que representará a posição da matriz que
estivermos acessando) e MSG (que usaremos para ir montando o texto a ser
exibido na caixa de diálogo final).
75
Visual Basic.Net – exercícios

Lembrando, esse botão, uma vez pressionado, deverá apresentar os valo-


res positivos que foram informados pelo usuário.

Por isso, já começamos descartando o caso em que o usuário ainda não


teria realizado o informe, exibindo um erro e cancelando o processamento
se o valor da variável bInforme for False:

If Not BInforme Then

MessageBox.Show(“Informar os Valores” _

, “Erro”, MessageBoxButtons.OK _

, MessageBoxIcon.Information)

btnSolicita.Focus()

Exit Sub

End If

Em seguida, a variável sMsg recebe um String vazio, já que vamos montá-


-la. Para montar o conteúdo da mesma, temos um loop For, cuja variável con-
troladora é justamente i que começa em 1 e vai até 10 (ou seja, representa
cada posição da matriz), sendo incrementada de 1 em 1. Para cada posição,
fazemos o seguinte:

For i = 1 To 10 Step 1

Positivo = aValor(i)

If Positivo > 0 Then

If MSG = “” Then

MSG = “Positivos informados: “ _

+ Chr(13) + Chr(10)

End If

MSG += Chr(13) + Chr(10) _

+ CStr(Positivo)

End If

Next
76
Visual Basic.Net – exercícios

Primeiro, resgatamos o valor de dentro da posição i da matriz, armaze-


nando-o na variável Positivo. As instruções restantes do loop só serão proces-
sadas se esse valor for positivo (“Positivo > 0”).

Caso seja um número positivo, verificamos se a variável MSG está vazia. Se


vazia, antes de mais nada, ela é inicializada com o texto “Positivos Informados:”,
seguido de um Enter (Chr(13)) e um LineFeed para mudança de linha (Chr(10)).

De qualquer forma, à variável MSG concatenamos o valor lido (Positivo) –


lembrando, isso apenas acontecerá se o valor for positivo.

Uma vez realizado o loop, já tendo sido verificadas todas as 10 posições,


verificamos o conteúdo da variável sMensagem:

If MSG = “” Then

MessageBox.Show( _

“Não foram informados valores positivos” _

, “Resultado”, MessageBoxButtons.OK _

, MessageBoxIcon.Exclamation)

Else

MessageBox.Show(MSG _

, “Resultado”, MessageBoxButtons.OK _

, MessageBoxIcon.Information)

End If

Se a variável estiver vazia, avisamos que não foram informados números po-
sitivos. Caso contrário, a variável tem conteúdo, o qual é exibido para o usuário.

Fonte: Microsoft Visual Studio, 2008.


77
Visual Basic.Net – exercícios

Exercício 7

Neste exercício, deixaremos o formulário com a aparência a seguir.

Objetivo

Quando o usuário clicar no botão “Solicita”, devemos solicitar 10 valores,


armazenando-os, cada um, em uma das 10 posições de uma variável matriz.

Uma vez informados os valores, quando o usuário clicar no botão “Calcu-


la”, devemos informar qual é a média aritmética de todos os valores positivos
informados, conforme a imagem apresentada abaixo. (Considere como posi-
tivo todo valor maior que zero).

Resolução

Altere as seguintes propriedades:

Form1
Nome da propriedade Valor
Name frmMedia
FormBorderStyle FixedSingle
StartPosition CenterScreen
Text Média dos Positivos

Em seguida, coloque 2 Button sobre o formulário, distribuindo-os segun-


do o layout apresentado. Defina suas propriedades conforme abaixo:

Button1
Nome da propriedade Valor
Text &Solicita
Name btnSolicita

78
Visual Basic.Net – exercícios

Button2
Nome da propriedade Valor
Text &Calcula
Name btnCalcula

TextBox1
Nome da propriedade Valor
Name txtResultado
ReadOnly True
Text
Multiline True

Crie um Array de 10 posições logo após a instância da classe:

Public Class frmMedia

Dim aValor(10) As Double

Abra o evento Click do botão btnSolicita e digite o seguinte código:

Dim Texto As String


Dim i As Integer

On Error GoTo erros

For i = 1 To 10 Step 1
Texto = InputBox(“Informe o “ + _
CStr(i) + “º Número:”, “Entrada”)
aValor(i) = CDbl(Texto)
Next

btnCalcula.Enabled = True
btnSolicita.Enabled = False
Exit Sub

erros:

79
Visual Basic.Net – exercícios

If Texto <> “” And _


Not IsNumeric(Texto) Then

MessageBox.Show(“Valor inválido” _
, “Erro”, MessageBoxButtons.OK _

, MessageBoxIcon.Error)

Else

MessageBox.Show( _

“Cancelado pelo usuário” _

, “Aviso”, MessageBoxButtons.OK _

, MessageBoxIcon.Information)

End If

Abra o evento Click do botão btnCalcula e digite o seguinte código:

Dim i, Pos As Integer

Dim Soma, Media As Double

For i = 1 To 10 Step 1

If aValor(i) > 0 Then

Soma += aValor(i)

Pos += 1

End If

Next

If Pos > 0 Then

80
Visual Basic.Net – exercícios

Media = Soma / Pos

txtResultado.Text = _

“Quantidade de valores: “ _

+ CStr(Pos) + Chr(13) + Chr(10) _

+ “Soma: “ _

+ CStr(Soma) + Chr(13) + Chr(10) _

+ “Média dos Positivos: “ + _

FormatNumber(Media, 2)

Else

txtResultado.Text = _

“Não foi informado valor positivo”

End If

btnSolicita.Enabled = True

btnCalcula.Enabled = False

Fonte: Microsoft Visual Studio, 2008.

81
Visual Basic.Net – exercícios

Exercício 8

Neste exercício, deixaremos o formulário com a aparência a seguir.

Objetivo

O usuário deverá clicar no botão (ou teclar Enter), quando então serão
determinados os dados para parcelamento. Só haverá parcelamento se o
valor da compra for maior ou igual a 500.

Verificar se o informe foi feito, e em caso afirmativo, se está correto, emi-


tindo mensagem de erro se for o caso.

Determinar se o parcelamento é possível. Em caso afirmativo, determinar


o valor de cada parcela (são 2), e as datas de cada uma delas (0 e 30 dias).

Exibir, dentro do controle inferior da tela (o último TextBox, de nome txt


Resultado), a(s) parcela(s) e a(s) data(s) de pagamento correspondente(s). No
label acima desse controle, devemos exibir, ao lado do texto “Resultado: ”, a
situação de parcelamento (se “2 PARCELAS” ou “PARCELA ÚNICA”).

82
Visual Basic.Net – exercícios

Resolução

Altere as seguintes propriedades:

Form1
Nome da propriedade Valor
Name FrmParcelamento
FormBorderStyle FixedSingle
StartPosition CenterScreen
Text Verifica Parcelamento

Em seguida, coloque os seguintes controles sobre o formulário: 2 Label, 2


TextBox e 1 Button (distribua-os segundo o layout), definindo suas proprie-
dades conforme abaixo:

Label1
Nome da propriedade Valor
Text Valor da Compra:

TextBox1
Nome da propriedade Valor
Name txtValor

Button1
Nome da propriedade Valor
Text &Calcular
Name btnCalcular

Label2
Nome da propriedade Valor
Text Resultado:
Name lblResultado

TextBox2
Nome da propriedade Valor
Name txtResultado
Enabled False
MultiLine True

O layout da tela já está montado. Vamos iniciar a codificação.

Abra o evento Click do objeto btnCalcular, codificando:


83
Visual Basic.Net – exercícios

Dim ValorTotal As Double

Dim ValorParcela As String = “”

Dim Data1, QtdParcelas, Data2 As String

On Error GoTo erros

ValorTotal = CDbl(txtValor.Text)

If ValorTotal <= 0 Then

MessageBox.Show(“Valor inválido” _

, “Erro”, MessageBoxButtons.OK _

, MessageBoxIcon.Error)

txtValor.Clear()

txtValor.Focus()

Exit Sub

End If

If ValorTotal >= 500 Then

QtdParcelas = “2 Parcelas”

ValorParcela = FormatNumber _

((ValorTotal / 2), 2)

Data1 = Format(Now, “dd/MM/yyyy”)

Data2 = Format(Now.AddMonths(1), _

“dd/MM/yyyy”)

84
Visual Basic.Net – exercícios

Else

QtdParcelas = “À Vista”

Data1 = Format(Now, “dd/MM/yyyy”)

End If

lblResultado.Text = _

“Resultado: “ + QtdParcelas

txtResultado.Text = _

“Valor da Compra: R$” + _

FormatNumber(ValorTotal, 2) _

+ Chr(13) + Chr(10)

If ValorParcela = “” Then

txtResultado.Text += _

“Para: “ + Data1 _

+ Chr(13) + Chr(10)

Else

txtResultado.Text += _

“1ª Parc: R$” + ValorParcela _

+ “ ==> Para: “ + Data1 _

+ Chr(13) + Chr(10) _

+ “2ª Parc: R$” + ValorParcela _

+ “ ==> Para: “ + Data2

End If

txtValor.Focus()

Exit Sub

85
Visual Basic.Net – exercícios

erros:

MessageBox.Show(“Valor inválido” _

, “Erro”, MessageBoxButtons.OK _

, MessageBoxIcon.Error)

txtValor.Clear()

txtValor.Focus()

Inicialmente, informamos que, em caso de erro, deve ser realizado o tra-


tamento de nome Erros.

No código, então, tenta-se converter o valor de compra (informado no


controle txtCompra) para um número ponto flutuante, armazenando-o na
variável ValorTotal. Para validar esse informe, verificamos, logo depois, se
o valor que ficou na variável ValorTotal é menor ou igual a zero. Caso seja,
emitimos um erro em tela, colocando o foco sobre o controle txtCompra, e
cancelando o processamento.

Uma vez que temos um valor de compra válido, precisamos verificar se o


parcelamento será feito. Para isso, perguntamos se “ValorTotal >= 500”. Caso
seja:

If ValorTotal >= 500 Then

QtdParcelas = “2 Parcelas”

ValorParcela = FormatNumber _

((ValorTotal / 2), 2)

Data1 = Format(Now, “dd/MM/yyyy”)

Data2 = Format(Now.AddMonths(1), _

“dd/MM/yyyy”)

86
Visual Basic.Net – exercícios

a variável QtdParcela ficará com o valor “2 PARCELAS”, calculamos o valor


de cada parcela, e as datas. Observe a instrução:

Data1 = Format(Now, “dd/MM/yyyy”)

A função Now retorna a data corrente registrada em seu computador.

Já a função Format permite que formatemos não apenas datas, mas até
mesmo horas, deixando esses dados no formato que desejamos. No nosso
caso, precisamos exibir a data como sendo dia/mês/ano, mas ano com 4 dígi-
tos. Dessa forma, estamos utilizando o formato “dd/MM/yyyy” (2.o argumen-
to passado) para impor esse formato à nossa data corrente (1.o argumento
passado).

Já na última instrução, temos que a data da segunda parcela será daqui a


30 dias, ou seja, utilizamos “ Now.AddMonths(1)”.

Caso o valor de compra (ValorTotal) seja inferior a 500, temos as seguintes


instruções:

Else

QtdParcelas = “À Vista”

Data1 = Format(Now, “dd/MM/yyyy”)

End If

ou seja, QtdParcelas ficará com o valor “À Vista”, ValorTotal ficará com o


valor total informado – já que não existe o parcelamento.

Em seguida, modificamos o Label lblResultado para exibir a quantidade


de parcelas:

lblResultado.Text = _

“Resultado: “ + QtdParcelas

lembrando que a propriedade responsável pelo texto que o Label exibe é


justamente a de nome Text.

87
Visual Basic.Net – exercícios

Mudamos, então, o conteúdo do mesmo txtResultado, exibindo valor e


data da primeira parcela e, caso o valor da segunda parcela seja diferente de
zero, também exibe o valor e data dessa segunda parcela.

If ValorParcela = “” Then

txtResultado.Text += _

“Para: “ + Data1 _

+ Chr(13) + Chr(10)

Else

txtResultado.Text += _

“1ª Parc: R$” + ValorParcela _

+ “ ==> Para: “ + Data1 _

+ Chr(13) + Chr(10) _

+ “2ª Parc: R$” + ValorParcela _

+ “ ==> Para: “ + Data2

End IF

Else

txtResultado.Text += _

“1ª Parc: R$” + ValorParcela _

+ “ ==> Para: “ + Data1 _

+ Chr(13) + Chr(10) _

+ “2ª Parc: R$” + ValorParcela _

+ “ ==> Para: “ + Data2

End If

88
Visual Basic.Net – exercícios

Por fim, jogamos o foco no controle txtValor e cancelamos o processamento.

txtValor.Focus()

Exemplos de aplicação

Uma compra à vista

Fonte: Microsoft Visual Studio, 2008.

Uma compra a prazo

Fonte: Microsoft Visual Studio, 2008.

89
Java – introdução e ambiente

A Sun Microsystem, conhecido fabricante de computadores, iniciou na


década de 1990 um movimento em direção ao que chamava de conceito de
computação Open System.

Reprodução.
Os quatro fundadores da Sun com o primeiro computador fa-
bricado pela empresa, em foto de 2006.

A ideia desse conceito era permitir que os grandes clientes corporativos


pudessem montar seu ambiente de computação através do fornecimento
de soluções compostas de fabricantes diferentes, o que na ocasião não era
possível, pois o conceito vigente era o da computação proprietária, isto é,
um único fabricante provia o cliente corporativo de toda a sua solução verti-
cal de ambiente computacional; do hardware, passando pelo sistema opera-
cional e aplicações comerciais, tudo era fornecido por um fabricante ou por
uma de suas empresas licenciadas.

O conceito de computação proprietária da época deixava os clientes lite-


ralmente presos à solução do fabricante escolhido, tornando esse “descasa-
mento” caro e complicado.

A Sun vislumbrou então uma oportunidade de tirar o mercado dos grandes


fabricantes já estabelecidos, como a IBM, UNISYS, HP e DIGITAL, criando esse con-
ceito novo e evidentemente um novo mercado para seus produtos e serviços.
Java – introdução e ambiente

A visão da Sun do futuro do mercado era mais radical, pois ela entendia
que os microchips tornariam-se cada vez mais baratos e por consequência
seriam adotados em eletrodomésticos comumente usados pelas pessoas no
seu dia a dia.

Para participar desse suposto futuro, a ideia então era criar uma linguagem
de programação capaz de atender tanto a necessidade de desenvolvimento
dos clientes corporativos quanto a dos dispositivos eletrodomésticos.

Baseada nessa ideia, em 1991 a Sun criou a base de um projeto de lingua-


gem de programação no formato de orientação a objetos que tornou-se co-
nhecida como Java, cujos mentores foram Patrick Naughton, Mike Sheridan
e James Gosling.

A Sun recebeu dois grandes impulsos que foram também responsáveis


pelo sucesso da adoção do Java pelo mercado:

1. a comunidade de desenvolvedores que viram na linguagem aberta


um novo conceito de liberdade e participação, pois a linguagem aber-
ta poderia receber constantemente melhorias vindas dessa comuni-
dade;

2. a convergência da telefonia com a computação e internet, onde os ce-


lulares e browsers necessitam de sistemas operacionais poderosos e
portáteis capazes de manipular dados, voz, imagem e som.

Atualmente o Java é utilizado em web browsers, mainframes, servidores


de redes, celulares, palmtops, cartões inteligentes, entre outros dispositivos
móveis, justamente como imaginavam seus criadores da década de 1990.

Em 2009, a Sun teve seu controle acionário assumido pela Oracle Cor-
poration, que promete continuar desenvolvendo os produtos e serviços da
empresa com o mesmo estilo visionário e arrojo que foi a marca registrada
da Sun.

Principais características do Java


 Orientação a objeto – baseado no modelo de Smalltalk e Simula67 que
são padrões de modelos para linguagens orientadas a objeto.

 Portabilidade e independência de plataforma.

92
Java – introdução e ambiente

 Grandes recursos para rede possuindo extensa biblioteca de rotinas


que facilitam a cooperação com protocolos TCP/IP, HTTP e FTP.

 Segurança – pode executar programas via rede com restrições de exe-


cução.

 Bytecode interpretado, ao invés de compilado.

 Facilidades para criação de programas distribuídos e multitarefa (múl-


tiplas linhas de execução num mesmo programa).

 Desalocação de memória automática por processo de coletor de códi-


go de programa não utilizado.

 Carga dinâmica de código de programa onde programas em Java são


formados por uma coleção de classes de objetos armazenadas indepen-
dentemente e que podem ser carregadas no momento de utilização.

Máquina Virtual Java


Os programas em Java não são compilados para a linguagem de máquina
como outras linguagens que são estaticamente compiladas. Eles são compi-
lados para um código intermediário, chamado de bytecodes.

Os bytecodes são interpretados pela máquina virtual do Java (JVM – Java


Virtual Machine). Bastando então apenas que o sistema operacional tenha
esta JVM ativada para interpretação dos bytecodes.

Através desse mecanismo é que o Java consegue sua grande portabilida-


de em várias plataformas.

Outras características da JVM


 Carga dinâmica de classes: quando um programa feito em Java pre-
cisa executar alguma rotina armazenada em outra classe ou biblioteca,
é responsabilidade da JVM carregar os bytecodes necessários para a
função ser interpretada, independentemente do local onde ela este-
ja armazenada fisicamente. Dessa forma, no momento em que outra
classe tentar executar essa mesma função, a JVM saberá que os byteco-
des já foram interpretados e estão disponíveis em memória, bastando

93
Java – introdução e ambiente

apenas executá-los. A JVM também pode descarregar esses bytecodes


da memória quando eles não estiverem mais em uso, a fim de aliviar
recursos de memória.

 Garbage collection: um problema muito comum em desenvolvimento


de aplicativos é a alocação e desalocação de memória. Os programa-
dores inadvertidamente alocam espaços em memória para algum pro-
cessamento e depois se esquecem de desalocar aqueles espaços ou
simplesmente alteram um ponteiro para uma área da memória que já
está sendo usada. Isso causa problemas de travamento dos programas
tornando-os instáveis. Com Java, as coisas acontecem de forma um pou-
co diferente. A JVM é capaz de procurar por todas as referências de cada
objeto. Quando não existem mais referências àquele objeto, a JVM auto-
maticamente libera da memória o espaço que estava sendo usado.

 Segurança: programas feitos em Java são limitados a realizar aquilo que


a JVM interpreta. Dessa forma, um sistema de segurança foi implemen-
tado nela para garantir que os aplicativos e Applets (um tipo programa
encapsulado que é executado pelo browser) não realizem ações indevi-
das. Assim, quando um programa tenta acessar um espaço em memória
não inicializado, converter um tipo incompatível etc. a JVM não deixará
isso ocorrer. Além disso, a segurança implementada na JVM impede que
Applets Java acessem recursos de sistema como o HD, memória ou até
mesmo a rede. Isso garante que programas maliciosos não consigam
funcionar como vírus ou Trojans mantendo a segurança.

 Acesso ao código nativo (API): muitos sistemas operacionais possuem


capacidades que não são definidas como parte do Java. Assim, o Java
não possui suporte direto aos recursos de hardware como portas seriais,
áudio, dispositivos especiais etc. Entretanto, a JVM tem a capacidade de
realizar chamadas ao código nativo do sistema operacional (API), dando
a chance de você poder utilizar esses recursos. Tenha em mente que o
uso desse tipo de chamada deve ser feito em último caso já que você
estará amarrando seu programa ao sistema operacional, anulando a ca-
pacidade de rodar em qualquer ambiente.

O Java e o C++
Java é uma linguagem de desenvolvimento orientada a objetos. Em pri-
meira instância, um programa feito em Java pode se parecer muito com pro-

94
Java – introdução e ambiente

gramas escritos em C++ já que algumas sintaxes e estruturas de controle das


duas linguagens são bem parecidas.

Isso pode ajudar as pessoas que já possuem algum conhecimento em


C++, porém não resolvem o problema, já que as duas linguagens se diferem
em vários aspectos. No geral, o Java é mais simples já que os recursos mais
complicados como gerenciamento de memória, heranças múltiplas, sobre-
posição de operadores, ponteiros etc. não fazem parte do desenvolvimento
de um aplicativo Java.

Resumo das principais características do Java


É orientado a objetos. Isso quer dizer que não existem estruturas defini-
das fora de uma classe.

Todos os objetos são derivados de uma única classe base chamada Object
que compartilha toda sua funcionalidade.

O programador nunca precisa desalocar a memória associada a um objeto


explicitamente. Esse trabalho é papel do Garbage Collection.

Muitas tarefas como comunicação com a rede, interface gráfica do usuá-


rio, manipulação de estruturas de dados etc., já estão prontas a partir de uma
série de bibliotecas do próprio Java.

É multiplataforma, já que não depende de nada do sistema operacional,


sendo, assim, completamente autossuficiente.

Versões do Java
Assim que um novo recurso é adicionado ao Java, a Sun cria uma nova
versão dele e a disponibiliza. Essas versões são numeradas de acordo com o
JDK (Java Development Kit) anterior.

Os números da versão correspondem ao seguinte formato:

JDK 1. 2. 2

Versão Sub Correção


Principal Versão de bugs

95
Java – introdução e ambiente

Além disso, existem 3 distribuições básicas do Java:

 J2SE (Java Standard Edition)

É o principal pacote de distribuição, já que ele contém as principais


bibliotecas e ferramentas para o desenvolvimento de aplicativos. Nele
se encontram a JVM, o compilador e o depurador Java, além das APIs
para a criação de programas que se conectam a bancos de dados.

 J2EE (Java Enterprise Edition)

Esse pacote de distribuição contém todos os recursos do JSE. Além


disso, contém também as últimas versões das bibliotecas para utiliza-
ção de tecnologias como Enterprise JavaBeans (EJB), JavaServer Pages
(JSP), Java API for XML Parsing (JAXP), entre outras.

 J2ME (Java Micro Edition)

Menor pacote dos três, já que é usado para pequenos dispositivos. Da


mesma forma, possui uma JVM específica para pequenas plataformas,
as APIs para desenvolvimento etc. A diferença fica por conta dos re-
cursos. Essa versão pode ser usada para a criação de aplicativos que
rodem em handhelds (PDAs, computadores de bolso), telefones celu-
lares, smart-cards, pagers etc.

O JBuilder
Hoje em dia, existem várias formas de você desenvolver programas em
Java. A forma mais barata e mais trabalhosa é utilizar qualquer editor de
texto. Nesse caso, basta que você tenha o JSDK (que é a mesma coisa que o
JDK – a implementação do S é para definir o formato Standard Edition do Kit)
instalado em seu ambiente.

Quando você desenvolve programas em outras linguagens como Visual


Basic ou Delphi, não há outra forma a não ser utilizar o próprio produto. Com
Java isso é diferente, pois as ferramentas que desenvolvem em e para Java
também foram desenvolvidas em Java.

Você pode utilizar algum produto que crie um ambiente de desenvolvi-


mento integrado onde você poderá editar, testar, executar, depurar e geren-
ciar seus programas Java com grande produtividade.

96
Java – introdução e ambiente

Existem vários produtos no mercado que atingem esse objetivo, muitos


deles inclusive gratuitos como o Eclipse. Aqui optamos por mostrar o desen-
volvimento em Java no ambiente do produto JBuilder.

O JBuilder em que mostramos o Java é um ambiente visual (gráfico),


onde você utiliza comandos e recursos prontos de bibliotecas deixando que
a parte do código mais trabalhosa e cheia de detalhes seja gerado automati-
camente pelo próprio JBuilder.

Ambiente de desenvolvimento

Descrição do ambiente
Antes de você começar a conhecer melhor os recursos da linguagem
Java, é preciso conhecer o ambiente do JBuilder para que você possa nave-
gar entre as janelas.

Assim que você carrega o JBuilder, ele já deverá carregar o último projeto
aberto. Se for a primeira vez, ele deverá trazer um projeto de demonstração
que apresenta um tutorial sobre o JBuilder.

Portanto, assim que ele for carregado por completo, você deverá visuali-
zar uma tela parecida com esta:

Fonte: Borland Corporation, JBuilder versão 6.

97
Java – introdução e ambiente

Content Pane
Essa é a principal área do JBuilder. Dentro dela você pode ver abas que
podem mudar o conteúdo apresentado:

Source
Apresenta o código fonte do arquivo corrente. A partir desse ponto, você
pode editar seu programa definindo novas classes, estruturas, funções etc.

Fonte: Borland Corporation, JBuilder versão 6.

Design
Local usado para a criação da interface gráfica e configuração dos com-
ponentes e caixas de diálogo. Ele possui uma paleta com os componentes
usados na criação do aplicativo além do Inspector, onde você tem acesso às
propriedades e eventos dos componentes.

Fonte: Borland Corporation, JBuilder versão 6.

98
Java – introdução e ambiente

Project Pane
Essa área apresenta a estrutura de arquivos do projeto corrente. Através
do Project Pane você pode gerenciar, adicionar, remover, recompilar, execu-
tar e configurar cada arquivo do projeto.

Os arquivos que compõem um projeto, bem como sua estrutura e confi-


gurações, serão discutidos adiante.

Fonte: Borland Corporation, JBuilder versão 6.

Structure Pane
Apresenta a estrutura do arquivo que está sendo mostrado no Content
Pane.

Esse painel possui dois modos. Se o Content Pane está mostrando o


código fonte, então o Structure Pane irá mostrar a hierarquia da classe que
está editada no código fonte, com as definições de atributos, métodos etc.

Caso o Content Pane esteja apresentando o Design, o Structure Pane irá


mostrar a hierarquia dos componentes de interface gráfica que pertencem
ao arquivo corrente. Essa hierarquia pode incluir elementos como instâncias
de botões, menus, campos de edição ou até mesmo componentes de cone-
xão com base de dados.

99
Java – introdução e ambiente

Fonte: Borland Corporation, JBuilder versão 6.

Inspector
O Inspector é responsável por apresentar as propriedades e eventos de
um objeto que esteja selecionado.

Nesse caso, para saber qual o objeto selecionado, basta utilizar o Structu-
re Pane em modo de Design. Quando você selecionar um elemento da lista,
suas propriedades e eventos aparecerão no Inspector.

Fonte: Borland Corporation, JBuilder versão 6.

100
Java – introdução e ambiente

Paleta de componentes
Nessa paleta, que aparece quando selecionado o modo Design, você irá
encontrar a maioria dos componentes usados para a criação de um progra-
ma Java. Repare que ela é dividida em abas que categorizam os componen-
tes. Além disso, você também pode desenvolver novos componentes ou até
mesmo comprá-los ou adquiri-los pela internet e adicioná-los a essa paleta.
Dessa forma, você pode expandir os recursos do JBuilder.

Fonte: Borland Corporation, JBuilder versão 6.

101
Java – estrutura da linguagem

O sucesso da adoção da Linguagem Java reside na sua característica es-


trutural, desenvolvida para trabalhar com orientação a objeto. A orientação
a objeto para desenvolvimento de grandes sistemas composto de centenas
de programas e milhares de linhas de código torna o trabalho mais seguro e
de fácil manutenção. Além da orientação a objeto o Java possui uma porta-
bilidade muito grande, onde uma mesma aplicação pode rodar no telefone
celular, no grande servidor ou até em um mainframe.

Comentários
Comentários são linhas de código que serão ignoradas pelo compila-
dor. Essas linhas normalmente são usadas para descrever a codificação do
aplicativo.
Existem duas formas de criar comentários no Java.
 Comentário em bloco: esse tipo possibilita você criar várias linhas no
mesmo bloco de comentário. Ele inicia com /* e termina com */.

Exemplo:

/*Comentários em

várias linhas*/

 Comentário de linha: esse tipo de comentário é usado para comen-


tar apenas uma única linha de código. Ele inicia com // e não possui
fechamento.

Exemplo:

x = a + b; //Comentários em linha

Identificadores
Um identificador é um nome que define unicamente um elemento da
linguagem como uma variável, classe, objeto ou método.
Java – estrutura da linguagem

Existem certas regras que devem ser obedecidas no momento de decla-


rar um elemento de linguagem, definindo seu identificador.
As principais regras:
 Todos os identificadores devem começar com uma letra, underscore (_)
ou cifrão ($).
 Pode conter números.
 Não pode conter espaços ou caracteres especiais.
 São case-sensitive (distinguem letras maiúsculas de minúsculas).
 Não podem conflitar com palavras-reservadas (são palavras já utiliza-
das internamente pelo próprio Java) da linguagem Java.

Blocos de comando
Comandos são representados em uma ou mais linhas do código fonte de
seu aplicativo.
Assim, uma sequência de comandos deve ser isolada em blocos. Um
bloco de comandos é um grupo de comandos com comportamento único.
No Java, os blocos são delimitados por chaves (“{“ e “}”). A maioria das es-
truturas de código, como classes, estruturas de loop, estruturas condicionais,
tratamento de exceções etc., utilizam esta ideia.
Veja um exemplo:

<condicao>

<comando>

<comando>

<comando> }

<comando>

}
104
Java – estrutura da linguagem

Declaração de variáveis e tipos compostos


A declaração de variáveis e tipos compostos no Java envolve a utilização
de um datatype. Os datatypes são responsáveis por definir que tipo de infor-
mação será armazenada em memória.

Existem duas categorias de datatypes no Java, cada uma delas voltada ao


armazenamento do tipo de informação mais adequado:

 Tipos primitivos – são os tipos implementados pela própria lingua-


gem. Portanto, são interpretados pelo compilador e não precisam de
bibliotecas adicionais. Entre os principais tipos primitivos, podemos
citar os tipos numéricos, booleanos.

 Tipos compostos – são tipos que possuem recursos especiais. Nor-


malmente são classes definidas em bibliotecas e portanto são consi-
derados objetos. Os principais tipos são String e Array.

A declaração das variáveis envolve a definição de um identificador e um


datatype. Com isso, um espaço em memória será alocado para armazenar
um valor literal.

Veja a sintaxe básica de declaração de variáveis:

[final] datatype identificador

[= valorInicial];

Repare que a declaração inicia com o tipo de dado, seguida pelo nome da
variável e opcionalmente por um valor de inicialização. Caso você não defina
um valor inicial, a JVM (Java Virtual Machine) irá inicializar a variável com um
valor default de acordo com o datatype. Repare também que a palavra final
é opcional. Quando usada, ela define que o conteúdo da variável não muda,
ou seja, ela é uma constante.

Você também pode declarar variáveis do mesmo tipo separando-as por


vírgula.

A declaração também pode ser feita em qualquer parte do código, bas-


tando apenas utilizar a sintaxe correta. Outro detalhe importante é que Java
é considerada uma linguagem altamente tipada. Isso quer dizer que toda
variável obrigatoriamente deve ser declarada antes de ser usada.
105
Java – estrutura da linguagem

Veja alguns exemplos de declarações válidas:

int x;

double a = 10, b, c = 3.2;

boolean flag = true;

Tipos primitivos
Lembre-se que os tipos primitivos são aqueles que são reconhecidos di-
retamente pelo compilador e não precisam de bibliotecas adicionais.

Veja a descrição dos principais tipos primitivos:

Numéricos
Se uma variável numérica não for inicializada, a JVM irá atribuir automati-
camente o valor 0. Os principais tipos numéricos do Java são:

Tipo Tamanho Faixa


byte 8 -128 127
short 16 -32768 32767
int 32 -2.14e + 9 2.14e + 9
long 64 -9.22e + 18 9.22e + 18
float 32 1.402e – 45 3.402e + 38
double 64 4.94e – 324 1.79e + 308

Veja um exemplo:

int critBusca = 10;

int codCliente;

Boolean
O tipo boolean possui apenas dois valores que são True e False. Variá-
veis booleanas que não foram inicializadas são carregadas automaticamente
com False.

106
Java – estrutura da linguagem

int x = 10, y = 15;

boolean flag = x < y;

No exemplo como x < y o resultado será True, caso os valores fossem


invertidos (x=15 e y=10) o resultado seria False.

Tipos compostos
Lembre-se que os tipos compostos são tipos que possuem recursos es-
peciais. Normalmente são classes definidas em bibliotecas e portanto são
considerados objetos. Os principais tipos são String e Array.

Strings
String é uma sequência de caracteres. Esse datatype é membro de uma
package chamada java.lang. Isso quer dizer que String não é um tipo primi-
tivo, e sim uma classe. Portanto, sempre que você quiser utilizar uma String
você terá que importar essa package em seu aplicativo.

Uma variável String não pode ser alterada depois de inicializada. O que
acontece na verdade é que a variável aponta para um espaço em memória
onde está o objeto guardando o texto. Sempre que você quiser alterar seu
conteúdo, o que acontece é a criação de um novo objeto com o novo valor
em outro endereço de memória. Nesse caso, a variável passa a apontar para
esse novo endereço.

O fato de String ser uma classe também altera a sintaxe de criação da


variável. Veja um exemplo:

String nomeCliente =

new String (“Nome da minha empresa”);

nomeCliente = “IESDE”;

Existe também uma outra classe para manipulação de Strings chamada


StringBuffer. A diferença entre String e StringBuffer é que o conteúdo de

107
Java – estrutura da linguagem

StringBuffer pode ser alterado. Isso quer dizer que ela possui alguns méto-
dos capazes de alterar seu conteúdo sem mudar o endereço de memória.

No exemplo abaixo estamos usando StringBuffer e adicionando conteúdo:

StringBuffer nomeCliente = new StringBuffer


(“IESDE”);

nomeCliente.append(“Sistemas”);

nomeCliente.append(“de”);

nomeCliente.append(“ensino”);

Arrays
Um Array é uma estrutura de dados que pode carregar vários valores do
mesmo tipo, independentemente de qual seja esse tipo: primitivo, compos-
to ou até mesmo classes definidas pelo usuário.

Os Arrays do Java podem ser simples ou multidimensionais (Arrays cujos


elementos são outros Arrays). Arrays dinâmicos não são suportados, a não
ser por outras classes.

A criação de um Array deve definir quantos elementos ele pode ter. Como
a base de um Array é sempre 0, um Array de 10 elementos está indexado de
0 a 9. Veja alguns exemplos:

//Array simples

int valores[] = new int[10];

Para você acessar o conteúdo de um Array, você deve indicar entre chaves
o índice do elemento desejado. Veja o exemplo, neste caso estamos atribuin-
do valores aos elementos do Array, ou seja, uma inserção.

108
Java – estrutura da linguagem

valores[0] = 1234;

valores[9] = 4321;

Casting e conversão de tipos


Existem casos em que você precisa converter o valor de uma variável para
um tipo diferente do atual. Por exemplo: você pode querer pegar um valor
String e atribuí-lo em uma variável do tipo int.

Existem formas diferentes de você conseguir isso, mas a principal é utili-


zando uma técnica chamada casting. Para realizar um cast no tipo da variá-
vel, você deve colocar o tipo desejado entre parênteses antes do nome da
variável. Veja um exemplo:

int i = 10;

float f = (float) i;

Você deve tomar cuidado já que nem sempre é possível realizar o cast,
pois ele pode resultar em perda de dados. Esse problema é identificado pelo
compilador que gera uma mensagem de erro. A regra básica para o cast é
que os tipos têm que ser pelo menos do mesmo tamanho do tipo original.
Veja uma tabela com as possíveis conversões:

Tipo original Tipo de cast


byte short, char, int, long, float, double
short int, long, float, double
chart int, long, float, double
int long, float, double
long float, double
float double

Entretanto, existem alguns tipos que não suportam cast. String é um


deles. Nesse caso, existem algumas classes no Java que fazem o trabalho de

109
Java – estrutura da linguagem

conversão. Por exemplo, a classe que manipula tipos int se chama Integer.
Repare o nome com inicial maiúscula. Isso indica que é uma classe. Veja uma
tabela com as classes mais importantes:

Tipo primitivo Classe


byte Byte
short Short
char Character
int Integer
long Long
float Float

Essas classes possuem métodos capazes de converter um tipo para outro,


inclusive para String. Considere as seguintes variáveis e veja um exemplo:

int i = 10;

float f = (float) i;

String s = new String(“teste”);

s = String.valueOf(i);

i = Integer.ParseInt(s);

Operadores
Operadores são símbolos especiais que realizam uma função específica.
Existem vários tipos de operadores como aritméticos, lógicos, de compara-
ção, atribuição etc.

Os operadores também podem ser divididos em duas categorias.

Unários
São operadores que atuam somente a partir de uma variável. Eles são de-
clarados na parte da frente da variável. Existem dois operadores desse tipo:
o Incremento ++ e o Decremento --. O que eles fazem é, respectivamente, au-
mentar e diminuir em 1 o valor de qualquer número inteiro na variável.

110
Java – estrutura da linguagem

Exemplo seguindo a sequência lógica:

int teste=10; //A variável teste é inicializada e passa a valer 10

teste++; //A variável teste passa a valer 11

teste--; //A variável teste passa a valer 10

teste--; //A variável teste passa a valer 9

Binários
Operadores binários são aqueles que necessitam de dois operandos para
realizar uma ação. Por exemplo, “+” usado para somar dois valores: 2 + 2.

Veja uma descrição dos principais operadores:

Aritméticos
Operador Descrição
+ +/- - Autoincremento/decremento
+/- Unário positivo/negativo
* Multiplicação
/ Divisão
% Módulo (resto da divisão)
+/– Adição/subtração

Lógicos
Operador Descrição
! Unário. Negação (not)
&& Short-circuit AND
|| Short-circuit OR

exemplo1:

resultado1 = (x < y) || (a > b);

exemplo2:

resultado2 = (x < y) && (a > b);

111
Java – estrutura da linguagem

Comparação
Operador Descrição
< Menor que
> Maior que
<= Menor ou igual a
>= Maior ou igual a
== Igual
!= Diferente

Atribuição
Operador Descrição
= Atribuição simples
+= Adição e atribuição
-= Subtração e atribuição
*= Multiplicação e atribuição
/= Divisão e atribuição

Repare a sintaxe reduzida de atribuição junta-


mente com algum cálculo:

x += 10;

Equivalente a:

x = x + 10;

Estruturas condicionais
Estruturas condicionais são usadas para definir qual caminho será usado
pelo programa dependendo do retorno de uma expressão.

Essas expressões podem ser testadas de formas diferentes dependendo


do seu contexto.

As principais estruturas condicionais do Java são:

If...Else
O comando If é usado em blocos que são executados dependendo de
uma condição. Apenas um dos blocos será executado quando a estrutura

112
Java – estrutura da linguagem

definir uma condição True. Ele também pode ter um Else opcional. A sintaxe
básica é a seguinte:

if (condição)

//código verdadeiro

else if (condição)

//código verdadeiro

else

//código falso

Objetos de tela
Agora vamos conhecer os principais objetos de tela do JBuilder:

 JFrame;

 JPanel;

 JButton;

 JTextField;

 JLabel;

 JTextArea.

Entre as principais propriedades desses objetos, podemos citar:

113
Java – estrutura da linguagem

JFrame
Propriedade Descrição
background Indica a cor de fundo da janela.
resizable Indica se a janela poderá ser redimensionada ou não.
title Representa o texto que irá aparecer na barra de título da janela.

JPanel
Propriedade Descrição
border Nessa propriedade, você pode configurar as características da borda do
componente.
layout Aqui você seleciona o layout manager que será usado para controlar o po-
sicionamento e redimensionamento dos componentes dentro do Panel.

As principais propriedades do botão são:

JButton
Propriedade Descrição
enabled Com essa propriedade você pode habilitar ou desabilitar o componente.
text Texto que aparece na face do botão.
mnemonic Caractere usado como atalho para o botão.
toolTipText Define o texto que aparece como descrição do componente quando o
usuário parar com o mouse sobre ele.

JTextField
Você usará um JTextField para obter informações do usuário ou para mos-
trar informações para o usuário.

As principais propriedades são:

JTextField
Propriedade Descrição
editable Indica se o conteúdo do campo pode ser alterado.
text Conteúdo do campo.

114
Java – estrutura da linguagem

Entre os principais eventos do jTextField, encontram-se:

Eventos JTextField
Propriedade Descrição
keyPressed Dispara quando uma tecla é pressionada.
keyTyped Dispara quando uma tecla de comando (Enter, Backspace, CTRL+carac.,
ALT+carac. etc.) é pressionada.
keyReleased Dispara quando o usuário solta a tecla.

JLabel
Um JLabel mostra um texto estático. Ele normalmente é utilizado para
descrever outros controles que não têm uma propriedade que os descreva.
Um exemplo deste tipo de componente é o JTextField. Em alguns casos, o
JLabel também é utilizado para mostrar mensagens ao usuário, já que ele é
um componente que não pode ter seu conteúdo alterado pelo usuário.

Sua principal propriedade é:

JLabel
Propriedade Descrição
text Representa o texto mostrado pelo JLabel.

JTextArea
Um JTextArea tem propriedades e aparência similares às do JTextField.
Esse objeto é usado para inserção de múltiplas linhas de texto.

Suas principais propriedades são:

JTextArea
Propriedade Descrição
editable Indica se o conteúdo do campo pode ser alterado.
text Conteúdo do campo.

115
Java – estrutura da linguagem

Estruturas de loop
Estruturas de loop possibilitam a você indicar os procedimentos que o
programa tem que executar repetidas vezes.

Os principais tipos de loop são:

While
Esse loop é usado para criar um bloco de código capaz de ser executado
enquanto uma condição for verdadeira. A sintaxe básica dele é:

while (condição)

//código do loop

Do
Esse tipo de loop é parecido com o While. A diferença é que o While testa
a condição no início da estrutura; o Do testa a condição no final. Isso quer
dizer que o código dentro de Do será executado pelo menos uma vez.

do

//código do loop

} while (condição);

For
O loop For é considerado o mais poderoso já que ele envolve uma con-
dição baseada em um contador que é incrementado a cada volta. A sintaxe
básica do For é:

116
Java – estrutura da linguagem

for (int i = 0; i <= 10; i++)

//código do loop

Nesse exemplo, o loop irá incrementar a variável i de 0 a 10, incrementan-


do de um em um. Repare que você não precisou declarar a variável antes; a
declaração foi feita diretamente no loop. Nesse caso, no momento em que o
loop acabar, a variável perde seu escopo e morre.

Break e Continue
Existem casos em que você precisa cancelar a execução de um loop e rea-
lizar uma “quebra” na estrutura. Existem dois comandos usados para isso:

Break
Esse comando é usado quando você precisa sair da estrutura de loop
antes da condição ser testada. Portanto, assim que o comando Break é en-
contrado, o loop termina imediatamente ignorando o código que havia a
seguir. Veja um exemplo em que o loop deveria rodar de 0 a 10, porém o
Break para a execução do loop no 7:

for (int i = 0; i <= 10; i++)

if (i == 7)

break;

//código do loop

117
Java – estrutura da linguagem

Continue
O comando Continue é usado quando você precisa quebrar o loop e rei-
niciar uma nova volta. Veja um exemplo em que o loop roda de 0 a 10, porém
pula a execução do número 7:

for (int i = 0; i <= 10; i++)

if (i == 7)

continue;

//código do loop

118
Java – exercícios

Exercício 1

Neste exercício, deixaremos o formulário com a aparência a seguir.

Objetivo

O usuário deverá informar a quantidade de piscinas olímpicas em que já


nadou (o informe será feito na caixa de texto).

Devemos validar o informe de forma que apenas sejam aceitos dígitos


(de 0 a 9).

No final da digitação, caso ele tecle Enter ou caso clique com o mouse
sobre o botão Resultado (as ações serão equivalentes), teremos que avaliar a
quantidade informada, de forma que: se a quantidade não foi informada, de-
vemos exibir um erro; caso contrário, devemos prosseguir o processamento,
exibindo uma caixa de diálogo com a mensagem:

“Você está fora de forma!” (se a quantidade for menor ou igual a 20);

“Você está em forma!” (se a quantidade for inferior a 50 e maior que 20);

“Você está pronto para competir!” (se a quantidade for maior ou igual a 50).

Resolução

Selecione a opção New no menu File e siga as intruções do Project


Wizard. Para esse objeto, altere as seguintes propriedades:
Java – exercícios

JFrame (this)
Nome da propriedade Valor
State normal
Title Piscinas que nadou

ContentPanel
Nome da propriedade Valor
Layout Xy layout
Name Piscinas

Em seguida, monte o layout apresentado na ilustração, incluindo os se-


guintes controles sobre o nosso formulário: 1 JLabel, 1 JTextField e 1 JButton
(distribua-os segundo o layout).

Vamos alterar agora as propriedades desses controles:

JLabel1
Nome da propriedade Valor
Text Número de Piscinas

JtextField
Nome da propriedade Valor
Name txtPiscinas
Text

JButton1
Nome da propriedade Valor
Text Resultado
Mnemonic R
Name btnPiscinas

ToolTipText Exibe resultados

O layout da tela já está montado. Vamos iniciar a codificação.

Abra o evento KeyTyped do objeto de nome txtPiscinas (que é a caixa


de texto):

122
Java – exercícios

char c = e.getKeyChar();

if (!(((c >= ‘0’)&&(c <= ‘9’)) || (c == e.VK_DELETE) || (c ==


e.VK_BACK_SPACE)))

Toolkit.getDefaultToolkit().beep();

e.consume();

Sempre colocaremos em negrito aquilo que o VB mostra automaticamente.

O código aqui se resume a uma instrução If que avalia a tecla pressionada.


O próprio JBuilder nos fornece o código correspondente à tecla pressionada
através do valor de KeyChar (que ele mesmo declara no cabeçalho desse
evento, mais precisamente, na 1.a linha que ele nos exibe, junto ao nome da
função, entre parênteses, como sendo do tipo Integer).

Agora, vamos codificar o que acontecerá caso o usuário acione o botão,


seja clicando sobre o mesmo com o mouse ou teclando Enter. Assim, iremos
codificar o evento actionPerformed do objeto de nome btnPiscinas (que
é o botão):

String piscinas = txtPiscinas.getText();

String msg = null;

int nro = 0;

if ( piscinas.equals(“”) )

msg = “Valor não informado!”;

else

123
Java – exercícios

nro = Integer.parseInt(piscinas);

if ( nro < 20 )

msg = “Você está fora de forma”!;

else if ( nro >= 50 )

msg = “Você está pronto para competir!”;

else

msg = “Você está em forma!”;

JOptionPane.showMessageDialog(null, msg, “alerta”, JOptionPane.


INFORMATION_MESSAGE);

Nesse último código definimos as variáveis:

 piscinas – que receberá o valor informado pelo usuário;

 msg – que receberá a mensagem a ser exibida ao final do processamento;

 nro – que receberá o valor digitado convertido para número inteiro.

No primeiro If vamos verificar se o usuário realmente digitou um valor,


caso ele não tenha digitado nada, a variável msg será abastecida com o valor
“Valor não informado!”.

Caso o valor tenha sido preenchido pelo usuário, vamos converter esse
valor para inteiro e vamos atribuir esse valor convertido para a variável nro.

Após essa conversão no segundo If vamos testar o valor da variável nro;


se o valor for menor que 20, a variável msg será abastecida com o valor “Você
está fora de forma!”; caso o valor informado seja maior ou igual a 50, a variá-
vel msg será abastecida com o valor “Você está pronto para competir! “; e se
o valor não estiver em nenhuma dessas condições a variável msg receberá o
valor “Você está em forma!”.

Após o processamento, vamos exibir o resultado por meio de uma caixa


de mensagem do JBuilder, que exibirá o valor da variável msg.
124
Java – exercícios

Exercício 2

Neste exercício, deixaremos o formulário com a aparência a seguir.

Objetivo

O usuário deverá informar dois números inteiros positivos (um em cada


caixa de texto).

Devemos validar o informe de forma que apenas sejam aceitos dígitos


(de 0 a 9).

No final da digitação, caso ele tecle Enter ou caso clique com o mouse
sobre o botão “Exibe Maior” (as ações serão equivalentes), teremos que de-
terminar e apresentar o maior entre os dois números informados na parte
inferior da tela.

Resolução

Monte o layout apresentado na ilustração, incluindo os seguintes contro-


les sobre o nosso ContentPanel: 3 JLabel, 2 JTextField e 1 JButton (distribua-
-os segundo o layout ).

125
Java – exercícios

ContentPanel
Nome da propriedade Valor
Layout XY layout
Text Maior de 2 Números

JLabel1
Nome da propriedade Valor
Text Numero 1:

JLabel2
Nome da propriedade Valor
Text Numero 2:

JLabel3
Nome da propriedade Valor
Name lblResultado
horizontalAlignment Center
Text

JTextField1
Nome da propriedade Valor
Name txtNro1
Text

JTextField2
Nome da propriedade Valor
Name txtNro2
Text

JButton1
Nome da propriedade Valor
Text Exibe Maior ?
Name btnExibe
Mnemonic E

126
Java – exercícios

Agora dê um duplo clique no botão btnExibe e faça a codificação abaixo:

String msg = null;

int nro1 = 0;

int nro2 = 0;

if (txtNro1.getText().length()==0 |txtNro2.getText().length()==0)

msg = “Valor nao informado!”;

else

nro1=Integer.parseInt(txtNro1.getText());

nro2=Integer.parseInt(txtNro2.getText());

if ( nro1 > nro2 )


msg = txtNro1.getText() +” é maior que “
+ txtNro2.getText();

else if ( nro2 > nro1 )

msg = txtNro2.getText() +” é maior que “

+ txtNro1.getText();

else

msg = txtNro1.getText() +” é igual a “ +

txtNro2.getText();

lblResultado.setText(msg);

Para este exercício utilizamos 3 variáveis:


 msg – essa variável receberá a mensagem que será exibida para o usu-
ário ao final do processamento;
127
Java – exercícios

 nro1 – essa variável receberá o primeiro número digitado pelo usuário;

 nro2 – essa variável receberá o segundo número digitado pelo usuário.

No primeiro If vamos verificar se o usuário realmente digitou os dois va-


lores corretamente, para isso vamos verificar se o tamanho do texto é maior
que 0; caso um dos campos esteja em branco, a variável msg receberá o valor
“Valores não informados”.

Caso o usuário tenha informado os dois valores, vamos converter esses


valores inteiros e atribuí-los as variáveis nro1 e nro2.

Depois de fazer a atribuição dos valores para as variáveis, vamos verificar


se o primeiro valor é maior que o segundo; se o primeiro valor não for maior
que o segundo vamos fazer a pergunta reversa, se o segundo valor é maior
que o primeiro, caso nenhuma das condições seja satisfeita, o primeiro valor
será igual ao segundo valor.

Por fim vamos atribuir o valor da variável msg ao JLabel lblResultado.

Agora vamos codificar o evento KeyTyped do txtNro1:

char c = e.getKeyChar();

if (!(((c >= ‘0’)&&(c <= ‘9’)) || (c == e.VK_DELETE) || (c ==


e.VK_BACK_SPACE)))

Toolkit.getDefaultToolkit().beep();

e.consume();

Também vamos atribuir uma referência no objeto txtNro2 para que ele
execute o mesmo código do txtNro1, também no evento KeyTyped:

txtNro1_keyTyped(e);

Dessa forma os dois objetos executarão o mesmo código.

128
Java – exercícios

Exercício 3

Neste exercício, deixaremos o formulário com a aparência a seguir.

Objetivo

O usuário deverá clicar no botão (ou teclar Enter), quando então serão
solicitados três números, cujos valores devemos armazenar dentro de uma
matriz de três posições.

À medida que lemos esses três números, devemos somá-los e, uma vez
determinado o resultado dessa soma, devemos apresentá-lo em tela, dentro
da caixa de texto.

A caixa de texto, neste exercício, será usada somente para exibir o resulta-
do do cálculo, de forma que o usuário não poderá editar o seu conteúdo.

Resolução

Altere as seguintes propriedades:

ContentPane
Nome da propriedade Valor
Layout XY Layout

Em seguida, coloque os seguintes controles sobre o formulário: 1 JLabel,


1 JTextField e 1 JButton (distribua-os segundo o layout), definindo suas pro-
priedades conforme apresentado a seguir:

JLabel1
Nome da propriedade Valor
Text Resultado da Soma:

129
Java – exercícios

JTextField1
Nome da propriedade Valor
Name txtResultado
Text
Enabled False

JButton1
Nome da propriedade Valor
Text Solicita os 3 Nros
Name btnSoma

Agora vamos codificar o actionPerformed do objeto btnSoma

int soma = 0;

for (int i = 0; i < 3; i++)

try

soma += Integer.parseInt(JOptionPane.

showInputDialog(“Digite um número:”));

catch (NumberFormatException nfe)

JOptionPane.showMessageDialog(null,
“Número inválido: \n” +

nfe.getMessage());

return;

txtResultado.setText(String.valueOf(soma));

}
130
Java – exercícios

Neste exercício trabalhamos com duas variáveis inteiras, a variável Soma,


que acumulará o resultado dos valores informados e a variável i, que contro-
lará o índice do For.

Para evitar erros de digitação trabalharemos com um tratamento de erros


do Java que controlará o tipo de informação que está sendo digitada, caso
aconteça algum erro no processamento será exibida uma mensagem para o
usuário e o processamento será cancelado.

No final do processamento será exibido o valor da variável Soma dentro


do campo txtResultado.

Exercício 4

Neste exercício, deixaremos o formulário com a aparência a seguir.

Objetivo
O programa deverá calcular o valor final de um produto já deduzido o
desconto, sendo que este só poderá ser de 0% até 100%, informando uma
mensagem de erro caso o usuário digite um valor inválido.
Resolução
Altere as seguintes propriedades:
ContentPane
Nome da propriedade Valor
Layout Xy Layout
Title Calcular Desconto

Em seguida, monte o layout apresentado na ilustração, incluindo os se-


guintes objetos no formulário: 4 JLabel, 2 JTextField, 2 JButton.

131
Java – exercícios

JLabel1
Nome da propriedade Valor
Name lblValor
Text Valor Total

JLabel2
Nome da propriedade Valor
Name lblDesconto
Text Desconto

JLabel3
Nome da propriedade Valor
Name lblValorFinal
Text Valor Final:

JLabel4
Nome da propriedade Valor
Name lblPorcentagem
Text %

JButton1
Nome da propriedade Valor
Text Calcular
Name btnCalcular

JButton2
Nome da propriedade Valor
Text Sair
Name btnSair

JTextField1
Nome da propriedade Valor
Text
Name txtValor

132
Java – exercícios

JTextField2
Nome da propriedade Valor
Text
Name txtDesconto

Agora vamos codificar o evento Action Performed do btnCalcular.

double valor = 0;

double perc = 0;

double resultado = 0;

String msg = null;

if (txtValor.getText().equals(“”)||

txtDesconto.getText().equals(“”) )

msg = “Valores inválidos!”;

else

perc =Double.parseDouble (txtDesconto.getText());

if ( (perc<=0) || (perc>=100) )

msg = “Percentual entre 0 a 100!”;

lblValorFinal.setText( msg );

return;

valor = Double.parseDouble( txtValor.getText() );

msg =”Valor Total: “+

133
Java – exercícios

String.valueOf(valor -

(valor * perc / 100));

lblValorFinal.setText( msg );

No código anterior utilizamos 4 variáveis, sendo 3 do tipo Double e uma


do tipo String.

Logo após a criação das variáveis testamos para saber se os campos txt
Valor e txtDesconto foram preenchidos, caso qualquer um dos campos não
tenha sido preenchido a variável msg será carregada com a informação “va-
lores inválidos”.

Se os dois campos foram informados vamos fazer a conversão de String


para Double do valor do campo txtDesconto e atribuir seu valor para a va-
riável perc.

Após a atribuição verificamos se o valor informado está entre 0 e 100;


caso não esteja será apresentado um aviso ao usuário.

Por fim, caso todos os valores estejam corretos, vamos efetuar o cálculo
do desconto e atribuir o resultado ao Label, lblValor Final.

Agora vamos codificar para garantir que o usuário digite somente núme-
ros nos dois campos; para isso vamos codificar o evento KeyTyped do objeto
txtValor.

char c = e.getKeyChar();

if (!(((c >= ‘0’)&&(c <= ‘9’)) ||

(c == e.VK_DELETE) || (c == e.VK_BACK_SPACE)))

Toolkit.getDefaultToolkit().beep();

e.consume();

134
Java – exercícios

Vamos atribuir essa execução do campo txtValor para o campo txtDes-


conto também no evento KeyTyped.

txtValor_keyTyped(e);

Para finalizar, vamos codificar o evento ActionPerformed do btnSair.

System.exit(0);

Exercício 5

Neste exercício, deixaremos o formulário com a aparência a seguir.

Objetivo

Verificar se o informe das notas foi feito e, em caso afirmativo, se está cor-
reto (valores entre 0 e 10), emitindo mensagem de erro se for o caso.

Determinar a média do aluno (média aritmética das notas) e, a partir


desta, a situação do aluno: se média for maior ou igual a 5, “APROVADO”; se
média for menor que 5 e maior ou igual a 3, “EXAME”; se a média for inferior
a 3, “REPROVADO”.

Exibir, dentro do controle inferior da tela (o último JTextArea, de nome


txtMedia): as notas, a média e a situação. Este controle não pode estar dispo-
nível para edição.

135
Java – exercícios

Resolução

Altere as seguintes propriedades:

ContentPane
Nome da propriedade Valor
Name frmMedia
Layout XY Layout

Em seguida, coloque os seguintes controles sobre o formulário: 2 JLabel,


2 JTextField, 1 JTextArea e 1 JButton (distribua-os segundo o layout), definin-
do suas propriedades conforme apresentado a seguir.

JLabel1
Nome da propriedade Valor
Text Nota 1:

JLabel2
Nome da propriedade Valor
Text Nota 2:

JTextField1
Nome da propriedade Valor
Name txtNota1
Text

JTextField2
Nome da propriedade Valor
Name txtNota2
Text

JButton1
Nome da propriedade Valor
Text Calcular
Mnemonic C
Name btnCalcular

136
Java – exercícios

JTextArea1
Nome da propriedade Valor
Name txtResultado
Enabled False
Text

Agora vamos codificar o evento KeyTyped do objeto txtNota1:

char c = e.getKeyChar();

if (!(((c >= ‘0’)&&(c <= ‘9’)) || (c == e.VK_DELETE)


|| (c == e.VK_BACK_SPACE)))

Toolkit.getDefaultToolkit().beep();

e.consume();

Agora vamos atribuir a mesma execução acima para o objeto txtNota2


também no evento KeyTyped; para isso selecione o evento KeyTyped do
objeto txtNota2 e digite o código abaixo.

txtNota1_keyTyped(e);

Agora vamos codificar o evento KeyReleased do objeto txtNota1 para


que quando os dois campos de nota forem preenchidos o botão btnCalcu-
lar seja habilitado:

btnCalcular.setEnabled((

txtNota1.getText().length()>0 &&txtNota2.getText().length()>0));

Agora vamos atribuir a mesma execução acima para o objeto txtNota2


também no evento KeyReleased; para isso selecione o evento KeyReleased
do objeto txtNota2 e digite o código abaixo.

txtNota1_keyReleased(e);
137
Java – exercícios

Agora vamos codificar o evento ActionPerformed do objeto btn-


Calcular.

double nota1= Double.parseDouble

(txtNota1.getText());

double nota2 = Double.parseDouble

(txtNota2.getText());

double media = 0;

String msg=null;

if (nota1 <0 || nota1 >10||

nota2 <0 || nota2 >10)

msg = “nota inválida”;

else

media = (nota1+nota2)/2;

if (media<5)

msg = “REPROVADO”;

else if ( media>5)

msg = “APROVADO”;

138
Java – exercícios

else,

msg = “EXAME”;

txtResultado.setText(“Situação: “ + msg +

“\nNota 1 : “ + txtNota1.getText() +

“\nNota 2 :” + txtNota2.getText() +

“\nMédia= “+String.valueOf(media));

Neste exercício utilizamos 4 variáveis, sendo 3 variáveis Double e uma do


tipo String.
A variável nota1 e nota2 receberão os valores digitados pelo usuário e
farão a conversão de texto para ponto flutuante; a variável média receberá o
valor da média já calculada.
A variável msg será usada para interagir com o usuário recebendo infor-
mações de erros ou a situação do usuário.
No final do processamento vamos informar o resultado final dentro do
campo txtResultado.

Exercício 6

Neste exercício, deixaremos o formulário com a aparência a seguir.

139
Java – exercícios

Objetivo

O usuário deverá clicar no botão (ou teclar Enter), quando então serão
determinados os dados para parcelamento. Só haverá parcelamento se o
valor da compra for maior ou igual a 500.

Verificar se o informe foi feito e, em caso afirmativo, se está correto, emi-


tindo mensagem de erro se for o caso.

Determinar se o parcelamento é possível. Em caso afirmativo, determinar


o valor de cada parcela (são 2) e as datas de cada uma delas (0 e 30 dias).

Exibir, dentro do controle inferior da tela (o último JTextArea, de nome


txtResultado): a(s) parcela(s) e a(s) data(s) de pagamento correspondente(s).

Resolução

Altere as seguintes propriedades:

ContentPane
Nome da propriedade Valor
Layout XyLayout

Em seguida, coloque os seguintes controles sobre o formulário: 2 JLabel,


1 JTextField, 1JTextArea e 1 JButton (distribua-os segundo o layout), definin-
do suas propriedades conforme apresentado a seguir.

JLabel1
Nome da propriedade Valor
Name lblValor
Text Valor da Compra:

JTextField
Nome da propriedade Valor
Name txtValor
Text

140
Java – exercícios

JButton
Nome da propriedade Valor
Text Calcular
Mnemonic C
Name btnCalcula

JLabel2
Nome da propriedade Valor
Text Resultado:
Name lblResultado

JTextArea
Nome da propriedade Valor
Name txtResultado
Enabled False
Text

O layout da tela já está montado. Vamos iniciar a codificação.

Antes de começarmos precisaremos fazer a importação de duas packages


adicionais para podermos trabalhar com objetos e formatações de data; para
isso vá até a área de código do Jbuilder e digite o seguinte código logo após
o nome da nossa Package (no início do código).

import java.util.*;

import java.text.*;

Abra o evento ActionPerformed do objeto btnCalcula, codificando:

double Vtotal = Double.parseDouble(txtValor.getText());

double parcela =0;

String msg=null;

Calendar data1 = Calendar.getInstance();

Calendar data2 = Calendar.getInstance();

141
Java – exercícios

data2.add(Calendar.MONTH, 1);

SimpleDateFormat sdf = new SimpleDateFormat(“dd/MM/yyyy”);

if (Vtotal > 500) {

msg=”2 Parcelas”;

parcela=Vtotal / 2;

txtResultado.setText(“Situação: “ + msg +

“\nData 1= “ + sdf.format(data1.getTime()) +

“\nData 2= “ + sdf.format(data2.getTime()) +

“\nParcelas= “+String.valueOf(parcela)+

“\nValor Total= “ +String.valueOf(Vtotal));

else

msg=”Valor inferior a 500”;

txtResultado.setText(“Situação: “ + msg +

“\nValor Total= “ +String.valueOf(Vtotal));

No código anterior temos a declaração de 5 variáveis, sendo:

 1 variável do tipo Double para receber o valor informado pelo usuário;

 1 variável do tipo Double para receber o valor da parcela, se for o caso


de parcelamento;

 1 variável do tipo String para receber a mensagem de interação com


o usuário;

 2 variáveis do tipo data que receberá a data atual do sistema.

142
Java – exercícios

Além dessas variáveis, também vamos instanciar um objeto para forma-


tação de SimpleDateFormat, que está dentro da package java.text.

Para que possamos trabalhar com esse objeto, fizemos a importação des-
sa Package além da Package java.util, sendo que essa tem os objetos de ca-
lendário que usamos nas variáveis de data.

Agora vamos codificar o evento KeyTyped do objeto txtValor:

char c = e.getKeyChar();

if (!(((c >= ‘0’)&&(c <= ‘9’)) ||(c==’ . ’)|| (c == e.VK_DELETE) || (c ==


e.VK_BACK_SPACE)))

Toolkit.getDefaultToolkit().beep();

e.consume();

Como já foi visto em exercícios anteriores, o código acima não permitirá a


inserção de valores não numéricos.

Agora vamos inserir o código no evento KeyReleased do objeto


txtValor.

btnCalcula.setEnabled(txtValor.getText().length()>0);

O código acima fará com que o botão btnCalcula seja habilitado automa-
ticamente sempre que um valor for preenchido no campo txtValor.

Exercício 7

Neste exercício, deixaremos o formulário com a aparência a seguir.

143
Java – exercícios

Objetivo

Quando o usuário clicar no botão “Solicita”, devemos solicitar 10 valores,


armazenando cada um em uma das 10 posições de uma variável matriz.

Uma vez informados os valores, quando o usuário clicar no botão “Exibe”


devemos informar qual é o maior número, entre aqueles que ele informou.

Resolução

Altere as seguintes propriedades:

ContentPane
Nome da propriedade Valor
Name frmMaior
Layout XyLayout

Em seguida, coloque 2 JButtons sobre o formulário, distribuindo-os se-


gundo o layout apresentado. Defina suas propriedades conforme abaixo:

JButton1
Nome da propriedade Valor
Name btnSolicita
Mnemonic S
Text Solicita

JButton2
Nome da propriedade Valor
Name btnMaior
Mnemonic E
Text Exibe

O layout da tela já está montado. Vamos iniciar o código criando um Array


Global que deve ser inserido na classe do Frame1, logo após a instância dos
objetos feita pelo JBuilder.

int valores[] = new int[10];

144
Java – exercícios

Agora vamos codificar o evento ActionPerformed do objeto btnSolicita.

String resultado = null;

try{

for (int i = 0; i <= 9; i++)

resultado = JOptionPane.showInputDialog

(“Digite o “ + String.valueOf(i + 1)

+ “º número:”);

if ( (resultado == null) ||

(resultado.equals(“”)) )

return;

else

valores[i] = Integer.parseInt(resultado);

btnExibe.setEnabled(true);

btnSolicita.setEnabled(false);

catch(NumberFormatException nfe){

JOptionPane.showMessageDialog( null, “Informe Inválido”);

No código acima estamos abastecendo o Array para podermos verifi-


car qual dos 10 valores informados é o maior. Para evitar erros no proces-
samento estamos fazendo uma verificação a cada inserção para saber se o
valor informado é numérico; para isso estamos trabalhando com a estrutura
de tratamento de erro try e com a exceção catch, por meio do tratamento
NumberFormatException.

145
Java – exercícios

Agora vamos codificar o evento ActionPerformed do objeto btnExibe.

int maior = 0;

for (int i = 0; i <= 9; i++)

if (valores[i] > maior)

maior = valores[i];

JOptionPane.showMessageDialog( null, “O maior número é: “ +


String.valueOf(maior) );

maior=0;

btnExibe.setEnabled(false);

btnSolicita.setEnabled(true);

No código acima vamos ler cada valor que o usuário digitou e no final do
processamento vamos exibir o valor da variável maior, que receberá sempre
o maior valor informado porque em cada valor lido nós comparamos esse
valor com o da variável maior, e caso o valor lido seja maior do que o já car-
regado nós atribuímos esse valor para a variável maior.

Exercício 8

Neste exercício, deixaremos o formulário com a aparência a seguir:

146
Java – exercícios

Objetivo

Quando o usuário pressionar o botão “Solicita Valores”, devemos solicitar


10 valores, armazenando cada um em uma das 10 posições de uma variável
matriz.

Uma vez informados os valores, quando o usuário clicar no botão “Exibe


Média”, devemos informar qual é a média aritmética de todos os valores posi-
tivos informados, conforme a imagem apresentada a seguir (considere como
positivo todo valor maior que zero).

Resolução

Altere as seguintes propriedades:

ContentPanel
Nome da propriedade Valor
Name frmMedia
Layout XyLayout

Em seguida, coloque 2 JButtons sobre o formulário, distribuindo-os se-


gundo o layout apresentado. Defina suas propriedades conforme apresen-
tado a seguir.

JButton1
Nome da propriedade Valor
Text Solicita Valores
Mnemonic S
Name btnSolicita

147
Java – exercícios

JButton2
Nome da propriedade Valor
Text Exibe Média
Mnemonic E
Name btnExibe

Com o layout criado vamos criar o Array valores; a criação desse Array
deve ser global, ou seja, ele deve ser declarado antes do primeiro código
para botões.

int valores[]= new int[10];

Agora vamos codificar o evento ActionPerformed do objeto btnSolicita.

String resultado = null;

try {

for (int i = 0; i <= 9; i++)

resultado = JOptionPane

.showInputDialog(“Digite o “ +
String.valueOf(i + 1) +

“º número:”);

if ( (resultado == null) ||

(resultado.equals(“”)) )

return;

else

valores[i] = Integer.parseInt

(resultado);

148
Java – exercícios

catch(NumberFormatException nfe)

JOptionPane.showMessageDialog

( null, “Informe Inválido”);

Agora vamos codificar o evento ActionPerformed do objeto btnExibe.

String positivos = “Valores positivos informados: \n”;

int contador=0;

double soma=0;

double media=0;

for (int i = 0; i <= 9; i++)

if (valores[i] > 0)

soma+=valores[i];

contador++;

if (contador>0)

media=soma/contador;

149
Java – exercícios

else

return;

JOptionPane.showMessageDialog( null,

“Total= “+String.valueOf(soma)+”\n” +

“Contador= “+String.valueOf(contador)+”\n” +”Média=

“+String.valueOf(media)+”\n”);

150
Banco de dados Oracle

Introdução
O conceito original de banco de dados iniciou-se no ambiente acadêmi-
co e foi desenvolvido para o mercado comercialmente pela IBM na década
de 1970, visando atender seus grandes clientes corporativos. Nesse mesmo
período o governo americano, através da agência CIA, procurava também de-
senvolver ferramentas que possibilitassem armazenar e recuperar de forma
segura uma quantidade muito grande de informações. O objetivo desses pro-
jetos eram o de possuir um grande banco de dados com informações que
pudessem ser inseridas, cruzadas e refinadas sem a necessidade de desenvol-
vimento de códigos de programação com procedimentos definidos e fixos.

A linguagem SQL (Structured Query Language) natural dos bancos de


dados firmou-se como a melhor opção para esse projeto. Na época a lingua-
gem e seu conceito existiam apenas em ambiente acadêmico.

O interesse da CIA era de possuir uma ferramenta de consulta e cruza-


mento de dados no banco extremamente flexível e fora dos padrões conven-
cionais de consulta a arquivos digitais com desenvolvimento de código de
programas fixos, que era a única tecnologia na época.

O SQL então atendia plenamente essa necessidade, pois é uma lingua-


gem declarativa, isto é, o usuário declara o que quer como resultado e o ge-
renciador do banco de dados busca as informações em uma ou várias tabe-
las dependendo do que foi solicitado, trazendo as linhas que correspondem
à declaração.

Na época o governo americano financiava o desenvolvimento de vários


projetos para uso militar e governamental, o que possibilitou inclusive, entre
outros, a criação da nossa atual e conhecida internet.

Essa política de financiamento e pesquisa governamental permitiu o


nascimento de outras empresas no setor de tecnologia de banco de dados
relacional como a Oracle, que teve o mérito de implementar e agregar cons-
tantemente ao conceito inicial acadêmico uma série de funcionalidades
Banco de dados Oracle

vindas principalmente da evolução tecnológica na computação (hardware e


software), integrando sempre o produto a outros conceitos e arquiteturas
computacionais como a computação Cliente/Servidor e agora mais recente-
mente o conceito de computação na nuvem (cloud computing).

Atualmente, no mercado de banco de dados existem diversas alternativas


para desenvolvimento de projetos, sendo que também nesse mercado o con-
ceito de software livre é bastante expressivo onde produtos como o MySQL e
PostGree são alternativas gratuitas para desenvolvimento de aplicações.

Aqui vamos focar no mercado de banco de dados representado por li-


cenciamento pago que é atualmente polarizado entre as empresas Oracle e
Microsoft, com seus respectivos produtos.

Oracle
O Oracle caracteriza-se no mercado corporativo por sua grande capaci-
dade de portabilidade, o que lhe permite rodar em diversas plataformas de
sistemas operacionais, diferentemente do SQL Server da Microsoft, que é
voltado e integrado ao sistema operacional Windows.

A linguagem SQL Plus


A linguagem para consulta a banco de dados logo seria padronizada evi-
tando vários dialetos técnicos entre a comunidade acadêmica, fabricantes
de software e usuários, o que ficou conhecido como padrão SQL ANSI (Ame-
rican National Standards Institute).

Entretanto, o receio inicial não conseguiu evitar o desenvolvimento de dia-


letos técnicos da linguagem original, pois ela mostrou-se insuficiente e pobre
de recursos para especificação de código de programação e também para fazer
frente à integração do produto banco de dados com as novas tecnologias con-
quistadas pelas novas arquiteturas de computação com o passar dos anos.

Os fabricantes, para solucionarem esse problema, estão partindo para


criar cada um ao seu modo implementações ao código original ANSI, permi-
tindo a integração e modernização de seus produtos às novas tecnologias e
arquiteturas.

No caso da Oracle, ela chama essas implementações ao código ANSI de


PL/SQL Plus.
154
Banco de dados Oracle

Evidentemente é uma linguagem muito poderosa e com vários recursos,


para os mais complexos desenvolvimentos.

Dentro do objetivo de aprendizado, vamos comentar e utilizar alguns co-


mandos da linguagem SQL manualmente neste capítulo, no qual abordare-
mos os comandos no produto da Oracle.

Criar uma tabela no banco de dados – CREATE


TABLE
A instrução CREATE TABLE cria a tabela, que é um objeto no Banco para
armazenarmos dados. Esse tipo de instrução é classificado como uma instru-
ção do tipo DDL (Data Definition Language).

Esta instrução possui efeito imediato no banco de dados e também regis-


tra informações no dicionário de dados.

SINTAXE:

CREATE TABLE (nome da tabela

( nome da coluna datatype (size);

Existem vários tipos de datatypes que são tratados pela Oracle:

Datatype Descrição
VARCHAR2(size) Recebe dados tipo caracter de tamanhos variáves.
CHAR (size) Recebe dados tipo caracter com tamanho fixo.
NUMBER(size,size) Recebe dados numéricos inteiros e decimais.
DATE Recebe dados de data e hora.

Exemplo:

Criar uma tabela chamada ALUNO com código de 7 posições numérico e


nome com 25 posições alfanumérico:

CREATE TABLE ALUNO

(CODIGO number(7), NOME varchar2 (25));

155
Banco de dados Oracle

Alterar uma tabela no banco de dados –


ALTER TABLE
Podemos usar o comando ALTER TABLE para adicionar, modificar ou
mesmo excluir uma coluna.

SINTAXE:

ALTER TABLE nome da tabela

ADD nome da coluna

(nome da coluna datatype (size));

A nova coluna será a última coluna da tabela

Exemplo 1:

Adicionar a coluna SEXO na tabela ALUNO.

ALTER TABLE ALUNO

ADD (SEXO char(1));

Exemplo 2:

Alterar a coluna SEXO na tabela ALUNO.

SINTAXE:

ALTER TABLE nome da tabela

MODIFY (nome da coluna datatype (size));

ALTER TABLE ALUNO

MODIFY (SEXO char(9));

156
Banco de dados Oracle

Exemplo:

Cancelar a coluna SEXO na tabela ALUNO.

SINTAXE:

ALTER TABLE nome da tabela

DROP COLUMN nome da coluna;

ALTER TABLE ALUNO

DROP COLUMN SEXO;

Manipular dados em tabelas no banco de dados


Para manipulação de linhas de dados em tabelas temos os seguintes co-
mandos: INSERT (inserir), UPDATE (alterar) e DELETE (deletar). Essas instru-
ções são do tipo DML (Data Manipulation Language).

Declaração Descrição
INSERT Adiciona uma nova linha à tabela.
UPDATE Modifica linhas existentes.
DELETE Remove linhas existentes.
Torna todas as mudanças de dados pendentes em perma-
COMMIT
nentes.
ROLLBACK Desfaz todas as mudanças de dados pendentes.

COMMIT e ROLLBACK
Commit (confirmar, gravar em disco) e Rollback (desfazer, retornar)
são comandos utilizados obrigatoriamente para finalizar as transações.

INSERT
Inserir uma linha na tabela ALUNO.

157
Banco de dados Oracle

SINTAXE:

INSERT INTO nome da tabela

VALUES (Valor, Valor);

 Valor: os valores devem ser digitados na ordem de criação das colunas


na tabela. Caracteres e valores de data devem ser declarados dentro
de aspas simples. Não inclua aspas entre valores numéricos.

Exemplo:

Inserir uma linha na tabela ALUNO.

INSERT INTO ALUNO VALUES (1, ‘ANTONIO CARLOS’);

UPDATE
Alterar uma linha na tabela ALUNO.

SINTAXE:

UPDATE nome da tabela

SET nome da coluna = valor

WHERE = Condição

Para a execução correta do comando UPDATE, temos que localizar a linha


exata da tabela que queremos atualizar.

Essa localização é fornecida pela cláusula WHERE.

Exemplo:

Alterar o valor da coluna NOME na linha na tabela ALUNO cujo código


seja = 1.

158
Banco de dados Oracle

UPDATE ALUNO

SET NOME = ‘ANTONIO CARLOS DE SOUZA’

WHERE CODIGO = 1

DELETE
Excluir uma linha na tabela ALUNO.

SINTAXE:

DELETE nome da tabela

WHERE = Condição

Para a execução correta do comando DELETE, temos de localizar a linha


exata da tabela que queremos deletar.

Essa localização é fornecida pela cláusula WHERE.

Exemplo:

Deletar a linha da tabela ALUNO cujo código seja = 1.

DELETE ALUNO WHERE CODIGO = 1

SELECT
É o principal comando da linguagem e é utilizado para declaração do tipo
de leitura ou linhas que se deseja resgatar no banco. Como a instrução per-
mite a combinação e concatenação com outros comandos e tabelas, torna-se
um poderoso instrumento de busca em qualquer banco de dados relacional.

159
Banco de dados Oracle

SINTAXE:

SELECT CONDIÇÃO TABELA COLUNA

FROM TABELA

WHERE CONDIÇÃO

Exemplo:

Selecionar a coluna NOME da tabela ALUNO cujo código seja =1.

Select NOME

From ALUNO

WHERE CODIGO = 1

ORDENAÇÃO:

Podemos declarar na consulta SQL que os dados sejam mostrados de


forma ordenada. Para tanto devemos usar a cláusula ORDER BY, especifican-
do por qual valor de coluna queremos ordenar a consulta.

A ordenação é sempre o último comando da declaração. Ela pode ser as-


cendente ASC (padrão) ou descendente DESC.

SINTAXE:

ORDER BY

160
Banco de dados Oracle

Exercícios
O Oracle historicamente projetado em sistemas sem interface gráfica
nativa, como o Unix, AIX, HP-UX, Linux, Solaris etc., preserva sua ferramen-
ta de manipulação SQL com as características de caractere até as versões
atuais. Ela também fornece versões gráficas para trabalhar com a linguagem
SQL*PLUS, e no mercado existe uma série de ferramentas gráficas para ma-
nipulação e estatística de código SQL que trabalham inclusive com outros
bancos de dados.

Para exercitar no produto de forma nativa, vamos mostrar o ambiente ca-


ractere no Oracle e gráfico no SQL Server.

Para o Login no SQL*PLUS:

Digite o nome do usuário/senha e String do host (servidor ou <enter>


caso seja um PC em que o banco esteja instalado).

Fonte: Oracle Corporation, Oracle Sql*Plus, versão 10g.

O ambiente do SQL*PLUS é o mesmo de um editor de texto. Para execu-


tar o comando digite (;) ou (/) caso seja um script copiado e colado de outra
fonte. Nesses casos (/) não esqueça de numerar cada linha para que o SQL
entenda seu comando como vindo de um script externo.

161
Banco de dados Oracle

Fonte: Oracle Corporation, Oracle Sql*Plus, versão 10g.

1. Criar uma tabela de empregados chamada EMP com as seguintes de-


finições:
CODIGO numérico de 7
NOME alfanumérico de 25
SOBRENOME alfanumérico de 25
COD_USUÁRIO alfanumérico de 8
COMENTARIOS alfanumérico de 20
COD_GERENTE numérico de 7
CARGO alfanumérico de 20
COD_DEPTO numérico de 7
SALARIO numéricas de 11 inteiras e 2 decimais
PCT_COMISSÃO numéricas de 4 inteiras e 2 decimais

2. Inserir 4 linhas na tabela EMP com códigos 1, 7, 14 e 19 e preencher os


outros campos livremente, mas respeitando a definição da tabela.

3. Alterar a linha código = 7, passando o sobrenome para RIBEIRO DE


LIMA.

4. Alterar a tabela incluindo a coluna MANEQUIM – numérico de 2 posi-


ções.

5. Selecionar as colunas NOME, SOBRENOME, CARGO da tabela EMP cujo


código seja = 7.

6. Selecionar as colunas NOME, CARGO e SALARIO da tabela EMP orde-


nada pela coluna NOME.

162
Banco de dados Oracle

Gabarito
1.

Fonte: Oracle Corporation, Oracle Sql*Plus, versão 10g.

SINTAXE:

CREATE TABLE EMP

(CODIGO NUMBER(7),

NOME VARCHAR2(25),

SOBRENOME VARCHAR2(25),

COD_USUARIO VARCHAR2(8),

COMENTARIOS VARCHAR2(20),

COD_GERENTE NUMBER(7),

CARGO VARCHAR2(25),

COD_DEPTO NUMBER(7),

SALARIO NUMBER(11,2),

PCT_COMISSAO NUMBER(4,2) );

163
Banco de dados Oracle

2.

Fonte: Oracle Corporation, Oracle Sql*Plus, versão 10g.

SINTAXE:

1 INSERT INTO

2 EMP VALUES (1, ‘ANDRE GOMES’, ‘RIBEIRO’, ‘A48’, ‘usa bigode’,

3 768, ‘vendedor’, 45, 2000, 10)

1 INSERT INTO

2 EMP

3 VALUES (7, ‘LUCIA HELENA’, ‘SILVA COSTA’, ‘M73’,

4 ‘usa lente corretiva’, 59, ‘Supervisora de Marketing’, 27, 3000, 8)

1 INSERT INTO

2 EMP

3 VALUES (14, ‘MARIA ANTONIA’, ‘CAVALCANTE DE LIMA’, ‘M83’,

164
Banco de dados Oracle

4 ‘hipertensa’, 44, ‘Atendente Comercial’, 27, 1200, 10)

1 INSERT INTO

2 EMP

3 VALUES (19, ‘PEDRO HENRIQUE’, ‘VICENTE DE ABREU’, ‘K88’,

4 ‘calvo’, 767, ‘Vendedor Externo’, 50, 2500, 12)

commit;

3.

Fonte: Oracle Corporation, Oracle Sql*Plus, versão 10g.

SINTAXE:

UPDATE EMP

SET SOBRENOME = ‘RIBEIRO DE LIMA’

WHERE CODIGO = 7;

commit;

165
Banco de dados Oracle

4.

Fonte: Oracle Corporation, Oracle Sql*Plus, versão 10g.

SINTAXE:

ALTER TABLE EMP

ADD (MANEQUIM number(2));

5.

Fonte: Oracle Corporation, Oracle Sql*Plus, versão 10g.

166
Banco de dados Oracle

SINTAXE:

1 SELECT NOME, SOBRENOME, CARGO

2 FROM EMP

3 WHERE CODIGO = 7

6.

Fonte: Oracle Corporation, Oracle Sql*Plus, versão 10g.

SINTAXE:

1 SELECT NOME, CARGO, SALARIO

2 FROM EMP

3 ORDER BY NOME

167
Exemplo de aplicação
Java com Oracle

Agora vamos criar uma pequena aplicação utilizando o JBuilder e o


Banco de Dados Oracle.

Após a importação das classes vamos começar a montar o layout da tela


conforme a figura a seguir.

Fonte: Borland Corporation, JBuilder versão 6.

Para criar esse exemplo você vai precisar dos seguintes objetos:

04 jdbTextField
01 jdbTextArea
01 jdbNavToolBar
01 jdbStatusLabel
01 database
01 queryDataSet

Você irá localizar esses objetos distribuídos em duas abas diferentes:

 DataExpress – database, queryDataSet;

 dbSwing – jdbTextField, jdbTextArea, jdbNavToolBar, jdbStatusLabel.


Exemplo de aplicação Java com Oracle

Agora vamos começar a alterar as Propriedades dos nossos objetos:

ContentPanel
Propriedade Valor
Layout XyLayout

jdbTextField1
Propriedade Valor
Name txtTitulo
dataSet queryDataSet1
columnName Nome

jdbTextField2
Propriedade Valor
Name txtCodigo
dataSet queryDataSet1
columnName codigo

jdbTextField3
Propriedade Valor
Name txtDuracao
dataSet queryDataSet1
columnName duracao

jdbTextField4
Propriedade Valor
Name txtCategoria
dataSet queryDataSet1
columnName tipo

170
Exemplo de aplicação Java com Oracle

jdbTextArea
Propriedade Valor
Name txtSinopse
dataSet queryDataSet1
columnName sinopse

jdbNavToolBar
Propriedade Valor
Name navFilmes
dataSet queryDataSet1

jdbStatusLabel
Propriedade Valor
Name lblStatus
dataSet queryDataSet1

Database
Propriedade Valor
Name dbFilmes
DRIVER oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@
URL
Connection instrutor:1521:ORCL
USERNAME aluno
PASSWORD senha

queryDataSet1
Propriedade Valor
Name queryDataSet1
dataBase dbFilmes
query select * from filmes

Agora é só executar nossa aplicação para testar.

171
Banco de dados – SQL Server

O SQL Server da Microsoft inaugura a entrada da empresa no mercado de


banco de dados relacionais dominado por empresas como Oracle e IBM.

A Microsoft apresenta seu banco de dados explorando bastante a arqui-


tetura Cliente/Servidor, que o Oracle também implementa de forma bastan-
te madura.

A arquitetura Cliente/Servidor facilita o desenvolvimento e a distribui-


ção de aplicativos, reduz consideravelmente o tráfego de rede, pois retorna
ao usuário apenas os dados solicitados, além de garantir a integridade dos
dados que ficam centralizados no servidor SQL Server.

Um sistema de banco de dados Cliente/Servidor é composto por dois


componentes:

 programas que proveem uma interface para que os usuários (Client)


acessem os dados;

 a estrutura de banco de dados para gerenciar e armazenar dados em


um servidor.

Server 3 Server
APPLICATION DATABASE

4 2

5
1
CLIENT
Banco de dados – SQL Server

O SQL Server é um sistema de gerenciamento de banco de dados rela-


cional (Relacional Database Management System – RDBMS) com arquitetura
Cliente/Servidor, destinado a suportar aplicações utilizando a linguagem de
consulta estruturada Transact-SQL (Strutured Query Language) para enviar
solicitações entre o servidor SQL Server e os clientes.

A linguagem T-SQL
Da mesma forma que a Oracle, a Microsoft também se deparou com os
problemas de falta de recursos técnicos da linguagem SQL ANSI, para especi-
ficação de código de programação mais denso e também para continuidade
de integração do banco de dados com as novas tecnologias conquistadas
pelas novas arquiteturas de computação com o passar dos anos.

A Microsoft, além desse problema, também precisava oferecer um banco


de dados confiável e robusto ao seu próprio mercado de desenvolvedores
de aplicação, para quem preparava uma suíte completa de desenvolvimento
que mais tarde seria o Visual Studio.

Ela então criou implementações ao código original ANSI permitindo


a integração e modernização de seu SQL Server às novas tecnologias e
arquiteturas.

No caso da Microsoft, ela chama essas implementações ao código ANSI


de Transact-SQL ou T-SQL.

O Instituto Americano de
Padronização (American Natio-
nal Standards Institute – ANSI)
e a Organização de Padroni-
zação Internacional (Interna-
tional Standards Organization
– ISO) definiram padrões para
a linguagem SQL.

O Transact-SQL oferece su-


porte para o padrão ANSI SQL Fonte: Microsoft SqlServer 2005 .

mais recente publicado em


1992, chamado ANSI SQL-92.

Evidentemente, é uma linguagem muito poderosa e de recursos para os


mais complexos desenvolvimentos.
174
Banco de dados – SQL Server

Dentro do nosso objetivo de aprendizado vamos comentar e utilizar os co-


mandos da linguagem SQL utilizando o SQL Server Management Studio, que é
o ambiente de desenvolvimento e manutenção do banco de dados totalmen-
te gráfico e nativo. A vantagem da utilização desse produto é a grande produ-
tividade que ele permite com a facilidade de interpretação de código SQL na
qual a construção de objetos, como tabelas e regras de integridade, funcionam
com o clicar e arrastar botões, que é a forma de trabalho do Windows.

Para se conectar ao Management Studio:

Digite:

Server Type: Database Engine


Server name: Nome do Servidor onde está instalado o SQL Server
Autentication: Senha do Windows (padrão) ou do SQL Server

Fonte: Microsoft SQl Management Studio, 2005.

Esta é a tela inicial carregada como o ambiente do SqlServer:

Fonte: Microsoft SQl Management Studio, 2005. ’


175
Banco de dados – SQL Server

Selecione dentro do Database principal, à sua esquerda, Database/


tempdb, que é o Banco de Dados que vamos trabalhar.

Fonte: Microsoft SQl Management Studio, 2005.

Criar uma tabela no banco de dados –


CREATE TABLE
A criação da tabela no Sql Server é feita pelo aplicativo Management
Studio que envia uma instrução CREATE TABLE para o banco.

Essa instrução possui efeito imediato no banco de dados e também regis-


tra informações no dicionário de dados.

Existem vários tipos de datatypes que são tratados pelo SQL Server. Aqui
vamos comentar os seguintes:

Datatype Descrição
VARCHAR(size) Recebe dados tipo caracter de tamanhos variáves.
CHAR (size) Recebe dados tipo caracter com tamanho fixo.
DECIMAL (size,size) Recebe dados numéricos inteiros e decimais.
DATETIME Recebe dados de data e hora.

Exemplo:

Criar uma tabela chamada ALUNO com código de 7 posições numérico e


nome com 25 posições alfanumérico:

Em tempdb, clique com o botão direito do mouse dentro de tables.

176
Banco de dados – SQL Server

Ele vai abrir a janela a seguir com as opções e selecionamos New Table.

Fonte: Microsoft SQl Management Studio, 2005.

O ambiente de criação da tabela então vai se montar à nossa direita, con-


forme pode ser visto na tela a seguir:

Fonte: Microsoft SQl Management Studio, 2005.

Digite o nome da coluna em Column Name e em Data Type seu tamanho


e 7 em Alow Nulls.

Veja que na parte de baixo ele abre uma janela mostrando as proprieda-
des de criação para cada coluna criada.

Terminadas as duas colunas (código e nome), selecione a opção de salvar


(ícone do disquete) na barra de ferramentas superior e confirme o nome da
tabela:

177
Banco de dados – SQL Server

Fonte: Microsoft SQl Management Studio, 2005.

Alterar uma tabela no banco de dados –


ALTER TABLE
Conforme pode-se observar na tela abaixo, podemos adicionar (a nova
coluna será a última coluna da tabela), modificar ou mesmo excluir uma
coluna no banco de dados.

Fonte: Microsoft SQl Management Studio, 2005.

Exemplo 1:

Adicionar a coluna SEXO na tabela ALUNO com as seguintes característi-


cas: SEXO char(1).

Navegando em tempdb/tables ela já aparece como uma tabela criada


com todas as suas propriedades. Clique com o botão direito do mouse na
propriedade columns que o aplicativo vai permitir de forma idêntica à ante-
rior incluir mais uma coluna (New Column). Confirme com a opção salvar na
caixa superior (como na criação da tabela).
178
Banco de dados – SQL Server

Exemplo 2:

Alterar a coluna SEXO na tabela ALUNO para as seguintes características:


SEXO char(9).

Navegando em tempdb/tables/aluno/columns ela já aparece como


uma tabela criada com todas as suas colunas. Clique com o botão direito
do mouse na coluna sexo; o aplicativo vai abrir a possibilidade de alterar a
coluna (Modify column) de forma idêntica à de incluir mais uma coluna. Con-
firme com a opção salvar na caixa superior (como na criação da tabela).

Exemplo 3:

Cancelar a coluna SEXO na tabela ALUNO.

Na aba com a especificação das colunas da tabela clique com o botão


direito do mouse na coluna e escolha a opção de cancelamento (Delete) e
confirme com a opção salvar.

Fonte: Microsoft SQl Management Studio, 2005.

Manipular dados em tabelas no banco de dados


Para manipulação de linhas de dados em tabelas temos os seguintes co-
mandos: INSERT (inserir), UPDATE (alterar) e DELETE (deletar). Essas instru-
ções são do tipo DML (Data Manipulation Language). No SQL Server pode-
mos inserir linhas através de um editor ou mesmo rodando um script em
arquivo com os comandos desejados.

INSERT
O comando INSERT é utilizado para inserir linha em uma tabela e sua sin-
taxe é:
179
Banco de dados – SQL Server

SINTAXE:

INSERT INTO nome da tabela

VALUES (Valor, Valor)

 Valor: os valores devem ser digitados na ordem de criação das colunas


na tabela. Caracteres e valores de data devem ser declarados dentro
de aspas simples. Não inclua aspas entre valores numéricos.

Exemplo:
Inserir uma linha na tabela ALUNO.

INSERT INTO ALUNO VALUES (1, ‘ANTONIO CARLOS’, ‘masculino’)

Podemos inserir linhas através de um editor ou mesmo rodando um script


em arquivo com os comandos desejados. Navegando em tempdb/tables/
aluno clique com o botão direito do mouse na tabela aluno e selecione a
opção de inserir um comando de script (Script Table as). Dentro dessa opção
selecione Insert e dentro de Insert a opção de digitar um novo comando
(New Query Editor Window).

O Management Studio traz para a aba as propriedades e opções da tabela


para a inserção do texto desejado já inserindo a opção do comando SQL
INSERT. Digite os valores e confirme com a opção Execute acima da aba. Caso
o valor digitado esteja correto, uma mensagem de sucesso da linha inserida
aparece em texto abaixo. Caso esteja incorreto, o Management abrirá um
texto de comentário do erro em vermelho.

Fonte: Microsoft SQl Management Studio, 2005.


180
Banco de dados – SQL Server

UPDATE
O comando UPDATE é utilizado para alterar uma linha em uma tabela e
sua sintaxe é:

SINTAXE:

UPDATE nome da tabela

SET nome da coluna = valor

WHERE = Condição

Para a execução correta do comando UPDATE, temos que localizar a linha


exata da tabela que queremos atualizar.

Essa localização é fornecida pela cláusula WHERE.

Exemplo:

Alterar o valor da coluna NOME na linha na tabela ALUNO cujo código


seja = 1:

UPDATE ALUNO

SET NOME = ‘ANTONIO CARLOS DE SOUZA’

WHERE CODIGO = 1

Podemos alterar as linhas através de um editor ou mesmo rodando um


script em arquivo com os comandos desejados. Navegando em tempdb/
tables/aluno, clique com o botão direito do mouse na tabela aluno e selecio-
ne a opção de inserir um comando de script (Script Table as). Dentro dessa
opção selecione Update e dentro de Update a opção de digitar um novo
comando (New Query Editor Window).

O Management Studio traz para a aba as propriedades e opções da tabela


para o Update do texto desejado já inserindo a opção do comando SQL
UPDATE. Digite os valores e confirme com a opção Execute acima da aba.
Caso o valor digitado esteja correto, uma mensagem de sucesso da linha in-
serida aparece em texto abaixo. Caso esteja incorreto, o Management abrirá
um texto de comentário do erro em vermelho.

181
Banco de dados – SQL Server

Fonte: Microsoft SQl Management Studio, 2005.

DELETE
Para a execução correta do comando DELETE, temos de localizar a linha
exata da tabela que queremos deletar.
Essa localização é fornecida pela cláusula WHERE.

SINTAXE:

DELETE FROM nome da tabela

WHERE = Condição

Exemplo:
Deletar a linha da tabela ALUNO cujo código seja = 1:

DELETE FROM ALUNO WHERE CODIGO = 1

Podemos deletar as linhas através de um editor ou mesmo rodando um


script em arquivo com os comandos desejados. Navegando em tempdb/
tables/aluno, clique com o botão direito do mouse na tabela aluno e selecio-
ne a opção por um comando de script (Script Table as). Dentro dessa opção
selecione Delete as e dentro de delete a opção de digitar um novo comando
(New Query Editor Window).

O Management Studio traz para a aba as propriedades e opções da tabela


para o Update do texto desejado já inserindo a opção do comando SQL
182
Banco de dados – SQL Server

DELETE. Digite os valores e confirme com a opção Execute acima da aba.


Caso o valor digitado esteja correto, uma mensagem de sucesso da linha in-
serida aparece em texto abaixo. Caso esteja incorreto, o Management abrirá
um texto de comentário do erro em vermelho.

Fonte: Microsoft SQl Management Studio, 2005.

COMMIT e ROLLBACK
COMMIT (confirmar, gravar em disco) e ROLLBACK (desfazer, retornar) são
comandos utilizados obrigatoriamente para finalizar as transações. No Ma-
nagement a confirmação é efetuada clicando o botão Parse (um ícone de set
do lado direito do botão execute).

SELECT
É o principal comando da linguagem e utilizado para declaração do tipo de
leitura ou linhas que se deseja resgatar no banco. Como a instrução permite
a combinação e concatenação com outros comandos e tabelas, torna-se um
poderoso instrumento de busca em qualquer banco de dados relacional.

SINTAXE:

SELECT CONDIÇÃO TABELA COLUNA

FROM TABELA

WHERE CONDIÇÃO

183
Banco de dados – SQL Server

Exemplo:

Selecionar a coluna NOME da tabela ALUNO cujo código seja =1.

Select NOME

From ALUNO

WHERE CODIGO = 1

Podemos selecionar as linhas através de um editor ou mesmo rodando


um script em arquivo com os comandos desejados. Navegando em tempdb/
tables/aluno, clique com o botão direito do mouse na tabela aluno e selecio-
ne a opção por um comando de script (Script Table as). Dentro dessa opção
selecione Select to e dentro de delete a opção de digitar um novo comando
(New Query Editor Window).

O Management Studio traz para a aba as propriedades e opções da


tabela para o select do texto desejado já inserindo as opções do comando
SQL SELECT. Digite os valores e confirme com a opção Execute acima da aba.
Caso o valor digitado esteja correto uma mensagem de sucesso da linha in-
serida aparece em texto abaixo. Caso esteja incorreto o Management abrirá
um texto de comentário do erro em vermelho.

Fonte: Microsoft SQl Management Studio, 2005.

Ordenação
Podemos declarar na consulta SQL que os dados sejam mostrados de
forma ordenada. Para tanto devemos usar a cláusula ORDER BY especifican-
do por qual valor de coluna queremos ordenar a consulta.

184
Banco de dados – SQL Server

A ordenação é sempre o último comando da declaração. Ela pode ser as-


cendente ASC (padrão) ou descendente DESC.

SINTAXE:

ORDER BY

No exemplo a seguir estamos selecionando os dados da tabela ALUNO e


solicitando a ordenação ascendente dos dados pela coluna NOME.

SELECT CODIGO, NOME

FROM ALUNO

ORDER BY NOME

Banco de dados SQL Server – resumo


O SQL Server da Microsoft é um banco de dados que implementa a arqui-
tetura cliente/servidor e roda em ambiente nativo do Windows.

Possui um software de apoio e gerenciamento de Banco que é o SQL


Server Management Studio, onde podemos criar, alterar, inserir, deletar e
consultar dados e estrutura de tabelas em ambiente totalmente gráfico.

Atividades
1. Criar uma tabela de empregados chamada EMP com as seguintes de-
finições:

CODIGO numérico de 7
NOME alfanumérico de 25
SOBRENOME alfanumérico de 25
COD_USUÁRIO alfanumérico de 8
COMENTARIOS alfanumérico de 20
COD_GERENTE numérico de 7
CARGO alfanumérico de 20

185
Banco de dados – SQL Server

COD_DEPTO numérico de 7
SALARIO numéricas de 11 inteiras e 2 decimais
PCT_COMISSÃO numéricas de 4 inteiras e 2 decimais

2. Inserir 4 linhas na tabela EMP com códigos 1, 7, 14 e 19 e preencher os


outros campos livremente, mas respeitando a definição da tabela.

3. Alterar a linha código = 7 passando o sobrenome para RIBEIRO DE


LIMA.

4. Alterar a tabela incluindo a coluna MANEQUIM – numérico de 2 posi-


ções.

5. Selecionar as colunas NOME, SOBRENOME, CARGO da tabela EMP cujo


código seja = 7.

6. Selecionar as colunas NOME, CARGO e SALARIO da tabela EMP orde-


nada pela coluna NOME.

Gabarito
1.

Fonte: Microsoft SQl Management Studio, 2005.

186
Banco de dados – SQL Server

2.

Inserir Andre Gomes:

Fonte: Microsoft SQl Management Studio, 2005.

Inserir Lucia Helena:

Fonte: Microsoft SQl Management Studio, 2005.

187
Banco de dados – SQL Server

Inserir Maria Antonia:

Fonte: Microsoft SQl Management Studio, 2005.

Inserir Pedro Henrique:

Fonte: Microsoft SQl Management Studio, 2005.

188
Banco de dados – SQL Server

Confirmar as transações:

Fonte: Microsoft SQl Management Studio, 2005.

3.

Fonte: Microsoft SQl Management Studio, 2005.

189
Banco de dados – SQL Server

4.

Fonte: Microsoft SQl Management Studio, 2005.

5.

Fonte: Microsoft SQl Management Studio, 2005.

190
Banco de dados – SQL Server

6.

Fonte: Microsoft SQl Management Studio, 2005.

191
Exemplo de aplicação Visual
Studio.Net com SQL Server

Agora vamos criar uma pequena aplicação utilizando o Visual Studio.Net


e o Banco de Dados Microsoft SQL Server.

Após a importação das classes vamos começar a montar o layout da tela


conforme a figura abaixo:

Fonte: Microsoft Visual Studio, 2008.

Para criar esse exemplo você vai precisar dos seguintes objetos:

05 TextBox
05 Label
01 BindingNavigator
01 BindingSource

Agora vamos começar a personalizar nossos objetos.

Form
Propriedade Valor
Name frmFilmes
Text Cadastro de Filmes
FormBorderStyle FixedSingle
StartPosition centerScreen
Exemplo de aplicação Visual Studio.Net com SQL Server

TextBox1
Propriedade Valor
Name txtCodigo

TextBox2
Propriedade Valor
Name txtTitulo

TextBox3
Propriedade Valor
Name txtDuracao

TextBox4
Propriedade Valor
Name txtCategoria

TextBox5
Propriedade Valor
Name txtSinopse
multitline true
ScrollBars Vertical
WordWrap True

Label1
Propriedade Valor
Name lblCodigo
text Código:

Label2
Propriedade Valor
Name lblTitulo
text Título:

194
Exemplo de aplicação Visual Studio.Net com SQL Server

Label3
Propriedade Valor
Name lblDuracao
text Duração:

Label4
Propriedade Valor
Name lblCategoria
text Categoria:

Label5
Propriedade Valor
Name lblSinopse
text Sinopse:

Adicione um BindingSource ao projeto, altere a propriedade Name para


“BS”.

O componente BindingSource é o encarregado de efetuar a interface da


aplicação com a fonte de dados; em nosso exemplo é ele que controla e sim-
plifica o processo de vinculação das linhas na tabela do SQL Server.

O BindingSource pode ser selecionado dentro da Toolbox no grupo


Data.

Dentro de suas propriedades no grupo Design, altere em (Name) o nome


sugerido.

Fonte: Microsoft Visual Studio, 2008.

195
Exemplo de aplicação Visual Studio.Net com SQL Server

O objeto BindingSource não é visível para o usuário, nele você deve para
configurar a conexão com o SQL Server e o Dataset, que é responsável pela
troca de dados com a tabela no BD.

Fonte: Microsoft Visual Studio, 2008.

Na propriedade DataSource clique em “Add Project DataSource” para criar


uma nova Conexão e um DataSet.

No assistente de configuração do DataSource, selecione o tipo de cone-


xão DataBase e clique em Next.

Fonte: Microsoft Visual Studio, 2008.

196
Exemplo de aplicação Visual Studio.Net com SQL Server

Para criar uma nova conexão clique no botão New Connection. Caso já
exista alguma conexão criada no projeto é possível selecioná-la no único
menu existente na tela.

Fonte: Microsoft Visual Studio, 2008.

Agora vamos configurar a conexão com o banco de dados:

Fonte: Microsoft Visual Studio, 2008.

197
Exemplo de aplicação Visual Studio.Net com SQL Server

O tipo de DataSource que vamos utilizar é Microsoft SQL Server (SQL-


Client). Confirme se está configurado corretamente e altere as seguintes
opções:

Server Name: INSTRUTOR\SQLINTRUTOR

User Name: alunoX

Password: senhaX

DataBase Name: Northwind

Clique em Test Connection, e se conectado com sucesso finalize clicando


em OK.

Nessa próxima tela temos a opção de salvar a conexão para reutilizar em


outros projetos. Clique em Next.

Fonte: Microsoft SQl Server, 2005.

Nessa tela vamos criar o DataSet, selecione a tabela Filmes e altere o Da-
taSet Name para DsFilmes.

Fonte: Microsoft SQl Server, 2005.

198
Exemplo de aplicação Visual Studio.Net com SQL Server

Clique em Finish para finalizar a configuração do DataSource.

Agora é necessário configurar o DataMember do BindingSource para que


ele utilize a mesma tabela manipulada pelo DataSet.

Fonte: Microsoft Visual Studio, 2008.

Ao término das configurações realizadas teremos no mínimo os 3 objetos


mostrados abaixo em nosso projeto:

 BS;

 DsFilmes;

 FilmesTableAdapter.

Fonte: Microsoft Visual Studio, 2008.

Selecione o txtCodigo e nas propriedades em DataBindings/Text esco-


lha a coluna da tabela que será exibida BS - codigo.

Repita a operação para os demais TextBox selecionando em cada um


deles o campo apropriado da tabela.
199
Exemplo de aplicação Visual Studio.Net com SQL Server

Fonte: Microsoft Visual Studio, 2008.

Depois de atribuir todos os TextBox será possível visualizar os dados da


tabela Filmes.

Agora selecione o BindingNavigator e altere a propriedade DataSource


para BS. Adicione um novo botão à barra (clicando no último botão da pró-
pria barra).

O controle BindingNavigator é o responsável pelo controle de navega-


ção na aplicação das linhas que foram lidas na tabela no SQL Server. Na
maioria dos casos, um BindingNavigator sempre trabalha associado a um
BindingSource.

O BindingNavigator pode ser selecionado dentro da Toolbox no grupo


Data.

Dentro de suas propriedades no grupo Data, altere na propriedade Bin-


dingSource associando ao BS, que é o Label do BindingSource, pois o Bin-
dingNavigator trabalha associado ao BindingSource.

200
Exemplo de aplicação Visual Studio.Net com SQL Server

Fonte: Microsoft Visual Studio, 2008.

Altere as seguintes propriedades do novo botão:

 Name: btnSalvar;

 Text: Salvar.

É possível alterar a imagem de exibição do botão. Para isso, na proprieda-


de Image escolha qual imagem deseja utilizar.

Na área de código crie o evento Click do btnSalvar.

Private Sub btnSalvar_Click (ByVal ...)

Me.BS.EndEdit()

Me.FilmesTableAdapter.Update(Me.DsFilmes.Filmes)

Me.FilmesTableAdapter.Fill(Me.DsFilmes.Filmes)

MessageBox.Show(“Alterações Salvas” _

, “Salvar”, MessageBoxButtons.OK _

, MessageBoxIcon.Information)

End Sub

201
Exemplo de aplicação Visual Studio.Net com SQL Server

Gerando a aplicação, a tela é montada habilitando os botões para inser-


ção, manutenção e navegação nos dados no SQL Server.

Fonte: Microsoft Visual Studio, 2008.

202
Anotações

Você também pode gostar