O que é um programa em Visual Basic? - Departamento de ...asilva/page14/page16/assets/Teoricas...
Transcript of O que é um programa em Visual Basic? - Departamento de ...asilva/page14/page16/assets/Teoricas...
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
O que é um programa em Visual Basic?
1
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Conteúdo
• Exemplo de um programa– Apresentação sumária da construção de um
programa em VB.• Objectos e o mecanismo de eventos
– Apresentação dos conceitos básicos de programação em ambiente MS Windows.
• Tipos de objectos e dados– Apresentação do conjunto limitado de objectos que
são utilizados nos primeiros programas e dos principais tipos de dados.
2
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Construção do programa
• O que é um Programa?• A construção de um programa obedece a um
conjunto de passos:– Definir objectivos e funcionalidades do programa– Desenhar a interface do programa com o utilizador– Ajustar (configurar) as propriedades dos objectos– Escrever o código– Testar
3
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Exemplo de programa
• Pretende-se um programa que:– efectue a conversão ente graus Celsius e Farenheit– as formulas de conversão são:
▪ ºC = (ºF - 32) * 5/9▪ ºF = ºC * 9/5 + 32
• Decidiu-se que:– devem ser visíveis os valores nas duas escalas– a interface deve ser simples e auto-explicativa.
4
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Desenho da Interface
Duas TextBox para o utilizador introduzir valores da temperatura.
Um Label a indicar qual a função do programa.
Dois Labels para identificar a função de cada uma das TextBox.
Dois CommandButton, um para cada sentido de conversão. Quando o utilizador carrega num destes botões é efectuada a conversão correspondente.
Um CommandButton para terminar o programa.
5
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Configurar a Interface
txtC
Label1
Label2
cmdFToCcmdSair
A form do programa já tem o aspecto final, mas falta ainda atribuir nomes aos objectos.
Label3txtF
cmdCToF
Form1
6
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Escrever o Código
Option Explicit
Private Sub cmdCToF_Click() Dim c As Single c = Val(txtC.Text) txtF.Text = 9 / 5 * c + 32End Sub
Private Sub cmdFToC_Click() Dim f As Single f = Val(txtF.Text) txtC.Text = (f - 32) * 5 / 9End Sub
Private Sub cmdSair_Click() EndEnd Sub
O código do programa é o seguinte:
Código do botão cmdFToC
Código do botão cmdCToF
Código do botão cmdSair
Instrução para o interpretador do VB
7
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Teste do programa
Uma vez terminado o programa, é preciso efectuar testes. Para t a l , i n t r o d u z e m - s e valores conhecidos e v e r i f i c a - s e s e o resultado está mesmo correcto. Não adianta introduzir valores à sorte!
8
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Explicação do Código
Private Sub cmdFToC_Click()
Dim f As Single
f = Val(txtF.Text)
txtC.Text = (f - 32) * 5 / 9
End Sub
Analisemos o código associado ao botão cmdFToC:
Lê valor de txtF, converte-o para um número e guarda-o em f
Subr
otina
asso
ciada
a ca
rrega
r (cli
ck) n
o botã
o.
Efectua as operações e guarda o resultado em txtC
Declara que a a variável f é um número real (com casas decimais)
9
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Atribuição
c (f - 32) * 5 / 9
c = (f - 32) * 5 / 9
Atenção! A operação de Atribuição é destrutiva!
10
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Objectos e Eventos
• A interface de um programa em VB é composta por objectos. No exemplo utilizamos 4 tipos:
– Form – Label (Etiqueta)– TextBox (Caixa de Texto)– CommandButton (Botão de Comando)
• Quando o utilizador interage com o programa (introduz valores, arrasta a janela, carrega num objecto, etc.) são desencadeados eventos. No exemplo o programa só reage a 3 eventos:
– Click() em cada um dos botões: cmdSair, cmdFToC e cmdCToF
11
!
!
!"#$%$&'()
*+,-. # -/0 # /
123/ # 4/516 # /
/576-3/
*/00289!
:1/-69,0683/!" # $%$&'"*+,-. #(")*$ # "")+$,'"*/00289!
-"'." # !$,"/0&!"
10)$2#+5+;30450 # !$ # 6$5'"3<3!
;"# # =64>/432# 9/#/576-3/#2/#6?683/
@"#A-BC/#4/516#/#
/576-3/#+5+;
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Eventos
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Objectos• Form
– usualmente traduzido como formulário– contentor rectangular (janela) onde são colocados
os outros objectos• Label
– traduzido como etiqueta– pode conter apenas texto (caracteres e
algarismos), sendo utilizado para dar indicações ao utilizador ou para apresentar resultados.
– o utilizador não consegue alterar directamente o conteúdo do label.
13
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Objectos II• TextBox
– usualmente traduzido como caixa de texto– pode conter apenas texto (caracteres e
algarismos), sendo utilizado para o utilizador introduzir dados ou para apresentar resultados.
• CommandButton– traduzido como botão de comando– pode afixar texto (caracteres e algarismos) ou uma
figura, sendo utilizado para desencadear acções.– o utilizador não consegue alterar o texto ou figura
apresentada no botão.
14
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Propriedades
• Cada classe de objectos pa r t i l ha um con jun to de propriedades.
• Através delas pode-se controlar a a p a r ê n c i a e o u t r a s características dos objectos.
• Sintaxe: nomeObjecto.propriedadeEx.: nome = txtNome.Text
Exemplos de propriedades: NameCaptionFontVisibleLeft
15
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Propriedades• Caso se omita a propriedade do objecto, o VB
presume que se trata da propriedade principal, ou propriedade por defeito.– Exemplo:
numero = txtNum.Text equivale a numero = txtNum• No entanto, atenção a que
• A propriedade por defeito difere de classe para classe de objectos:
TextBoxLabel
• Qualquer outra propriedade terá obrigatoriamente que ser especificada de forma explícita.
16
TextCaption
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Tipos de Dados
• A representação de informação em VB usa um conjunto de tipos de dados básicos predefinidos.
– Podem ainda ser criados tipos de dados compostos por vários elementos dos tipos básicos
– Podem ser definidos objectos, que expandem as facilidades de manipulação dos tipos de dados compostos
• Só vamos utilizar quatro tipos de dados básicos:– Números Inteiros– Números Reais– Caracteres– Valores lógicos
17
25
72.5
Memória
peso = 72.5 Kg (real)idade = 25 anos (inteiro)
Dados
Variáveis
peso
idade
Nomes das variáveis
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Tipos de Dados
Dados de tipos diferentes necessitam de espaço de armazenamento diferente.
18
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Números Inteiros• Os números inteiros permitem representar valores
numéricos inteiros positivos e negativos. • Há vários tipos, mas só serão utilizados dois:
– Integer▪ Gama de valores: -32768 a 32767 ⇒ [-215, 215-1]▪ Declaração: Dim myvar as Integer
– Long▪ Gama de valores: -2147483648 a 2147483647 ⇒ [-231, 231-1]▪ Declaração: Dim myvar as Long
• As operações suportadas são:– Operações aritméticas: +, -, /, *– Quociente e resto: \, mod
19
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Números Reais
• Valores numéricos positivos e negativos com casas decimais.
• Utilizam a forma mantissa + expoente, e há dois tipos:– Single (precisão simples ⇒ 32-bit)
▪ Gama de valores: [-3.4028235E+38, -1.401298E-45] ∪ 0 ∪ [1.401298E-45, 3.4028235E+38]
▪ Declaração: Dim myvar as Single
– Double (precisão dupla ⇒ 64-bit)▪ Gama de valores:[-1.79769313486231570E+308, -4.94065645841246544E-324] ∪ 0 ∪
[4.94065645841246544E-324, 1.79769313486231570E+308]▪ Declaração: Dim myvar as Double
20
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Caracteres • Permitem representar caracteres do alfabeto,
algarismos, operadores e outros símbolos gráficos.– Exemplos
▪ “olá!”▪ “O resultado foi 3-1”
– Declaração▪ Dim st as String
– Operações▪ + e &, ambas fazem a concatenação (“colagem”) de strings.:
“eu” + “fui” -> “eufui”“marquei” & “ “ & 3 & “ golos” -> “marquei 3 golos”
▪ Há um conjunto alargado de funções que permitem manipular strings. Um exemplo:
– val(“25”) -> 25 (retorna o valor numérico representado na string)
21
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Valores Lógicos
• Permitem representar valores lógicos (verdadeiro e falso). Em VB estes estas variáveis podem tomar os valores True ou False.
– Exemplos:Dim res as Boolean, m as Booleanres = True
– Operadores▪ And, Or, Not, Xor ▪ >, <, >=, <=, <>
• O tipo de dados boolean traduz também o resultado da avaliação de condições (Ex.: peso > 100).
22
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Constantes
• Definição: Uma constante consiste num nome associado a um valor numérico, a um valor booleano ou a uma string, e que pode ser usado num programa em substituição desse valor. Tal valor não pode ser alterado durante a execução do programa.
• Utilidade: Se for definida uma constante com um valor, bastará alterar uma só vez essa definição para que tal mudança se repercuta automaticamente em todas as ocorrências da constante no programa.
– Definição:Const <nome> As <tipo> = <expressão>
– Exemplos:Const numElem As Integer = 25Const meuEmail As String = “[email protected]”
23
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Variáveis• Uma variável é um contentor onde informação de um
dado tipo pode ser guardada de modo a poder ser utilizada num programa
• Cada variável é caracterizada por:– um nome
▪ identificador da variável; tem que começar por uma letra e não pode conter espaços ou outros caracteres de pontuação:
– Nomes válidos: abc, a12, ola_mundo– Nomes inválidos: 1qa, ola-mundo, num!, ab cd (são duas variáveis)
– um tipo de dados▪ Pode ser qualquer tipo de dados predefinido ou definido pelo
programador– âmbito (visibilidade)
▪ Uma variável só está acessível dentro do bloco em que foi definida.
24
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Variáveis II
• Uma variável pode ser definida explicitamente ou ser criada pelo VB automaticamente com o tipo de dados apropriado à primeira utilização.
– Definição ExplícitaDim <nome> As <tipo>Dim a as Integer, b as Double
– Definição Implícita Dim <nome> ‘ ou omitir por completoDim a, ba = 2 ‘ variável inteirab = 3.5 ‘ “ realc = True ‘ “ booleana
– Atribuição<nome_da_variável> = <expressão>
O programador pode i n t r o d u z i r c o m e n t á r i o s n o programa, que são ignorados pelo VB. U m c o m e n t á r i o começa com um apóstrofe e termina no fim da linha.
[Desaconselhada]
25
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Porque é uma má ideia usar a declaração implícita?
Como funciona este tipo de declaração?Na ausência de uma declaração explícita, quando o interpretador de VB encontra um identificador desconhecido, presume que se trata duma variável e cria-a com os dados de que dispõe.
Caso 1...peso = 125...peso = 76.5
Caso 2...velocidade = 110...velocodade = 80
Criada a variável peso e do tipo integer
Truncagem da parte fraccionária na atribuição!
Criada a variável velocidade e do tipo integer
Criação indesejada da variável velocodade!
Em ambos os casos, os erros ocorridos não são detectados pelo Visual Basic!
26
APROG Civil
ISEP–DEI, Angelo Martins © 2006Programas Básicos ISEP–DEI, António Silva © 2007
Uso da função val
27
Extrai a informação numérica contida numa string (texto).
Conteúdo da variável texto
val(texto)
“123” 123“123quatro” 123
“um23” 0
Em instruções como num = val(txtNum.Text) a chamada da função val pode ser omitida. O VB fará a conversão necessária entre texto e valor numérico. Porém...
RISCO!peso_total = txtPeso1.Text + txtPeso2.TExt⎨StringString ⎨
interpretado como operador de concatenação...