Modulo 4 - Decisões

Propaganda
CFAC: Visual Basic: IV - Decisões
FEUP/DEMec/SDI
Visual Basic
IV - Decisões
CFAC – Concepção e Fabrico Assistidos
por Computador
João Manuel R. S. Tavares
Sumário
1) Operadores Relacionais e Lógicos;
2) Blocos If;
3) Blocos Select Case.
@2009 - João Manuel R. S. Tavares
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
2
1
CFAC: Visual Basic: IV - Decisões
FEUP/DEMec/SDI
Operadores Relacionais

A execução de um bloco If é controlada por uma
expressão
ã Booleana.
B l

Uma expressão Booleana pode ser Verdadeira ou
Falsa.

Expressões Booleanas são formadas pela utilização de
seis operadores Relacionais e três operadores
Lógicos.
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
3
Operadores Relacionais
Notação Matemática
Notação Visual Basic Significado Numérico
=
#
<
>
<=
>=
@2009 - João Manuel R. S. Tavares
@2009 - João Manuel R. S. Tavares
=
<>
<
>
<=
>=
Igual a
Diferente de
Menor do que
M i do
Maior
d que
Menor ou igual a
Maior ou igual a
CFAC: Visual Basic: IV - Decisões
4
2
CFAC: Visual Basic: IV - Decisões
FEUP/DEMec/SDI
Operadores Relacionais com Strings

Os computadores utilizam um sistema de codificação
especial
i l para a comparação
ã de
d cadeias
d i de
d caracteres.

Usualmente é utilizado nos PCs o sistema de
codificação ANSI (também designado por ASCII).
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
5
Exemplos de Comparação de
Cadeias de Caracteres
Expressão
Resultado
“Chase” < “Chaz”
“ Cat” < “Cat”
“Pay” < “Pay ”
“Jones” <> “James”
“Hope” < “Hopeful”
@2009 - João Manuel R. S. Tavares
@2009 - João Manuel R. S. Tavares
Verdadeiro
Verdadeiro
Verdadeiro
Verdadeiro
Verdadeiro
CFAC: Visual Basic: IV - Decisões
6
3
CFAC: Visual Basic: IV - Decisões
FEUP/DEMec/SDI
Operadores Lógicos

O resultado de um operador lógico é Verdadeiro
ou Falso (True/False).

Os três operadores lógicos são:
Not
(negação)
And
((e))
Or
(ou)
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
7
Not

Negação de uma única expressão (operador
unário).

Exemplo: Supondo que answ = “Y”
Not ( answ = “y”) dá Verdadeiro
@2009 - João Manuel R. S. Tavares
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
8
4
CFAC: Visual Basic: IV - Decisões
FEUP/DEMec/SDI
And

Combina duas expressões (operador binário); cada
expressão
ã deve
d
ser verdadeira
d d i para a expressão
ã
resultante ser verdadeira.

Exemplo:
 (answ
Supondo que answ = “Y”
= “Y”)
Y ) And (answ = “y”)
y ) dá Falso
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
9
Or

Combina duas expressões; uma das expressões (ou ambas
as expressões)
õ ) deve
d
ser verdadeira
d d i para a expressão
ã
resultante ser verdadeira.

Exemplo: Supondo que answ = “Y”
 (answ = “Y”) Or (answ = “y”) dá Verdadeiro
@2009 - João Manuel R. S. Tavares
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
10
5
CFAC: Visual Basic: IV - Decisões
FEUP/DEMec/SDI
Determinar se as condições seguintes
são verdadeiras ou falsas?

(“Y” <> “X”) And (143.55 < 143.55)

( 0 = 14) Or (6 ^ 2 - 3 <= 4 / 2 + 8)

Not ( 6 = 7) And ( 44 > 33)
Respostas: 1ª é falsa; 2ª é falsa e a 3ª é verdadeira.
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
11
Estruturas de Controlo

Permitem ao programador alterar o fluxo
normal de execução do programa.

Tipos de estruturas de controlo:

Repetição (Loop);

Decisão (Decision).
@2009 - João Manuel R. S. Tavares
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
12
6
CFAC: Visual Basic: IV - Decisões
FEUP/DEMec/SDI
Tipos de Estruturas de Decisão

A declaração If
 Com
alternativa simples: if
 Com alternativa composta: if….else

A declaração Select Case
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
13
Decisão com Alternativa Simples

Uma acção é executada se a condição for verdadeira,
caso contrário
á i o controlo
l do
d programa vaii para a
próxima declaração.
Fluxograma:
Sintaxe:
Falsa
If condição Then
acção/acções
End If
@2009 - João Manuel R. S. Tavares
@2009 - João Manuel R. S. Tavares
Verdadeira
condição
acção/acções
CFAC: Visual Basic: IV - Decisões
14
7
CFAC: Visual Basic: IV - Decisões
FEUP/DEMec/SDI
Exemplo de Decisão com
Alternativa Simples
If (grade > = 90) Then
picOutput.Print “Excellent Student”
letterGrade = “A”
picOutput.Print “Your grade is “; letterGrade
End If
Se o valor da variável grade for superior ou igual a 90 as três
instruções são executas; senão são desprezadas e é executada a
instrução imediatamente a seguir ao End If.
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
15
Decisão com Alternativa Composta

Sintaxe:
If condição Then
acção1
Else
acção2
End If
Fluxograma:
Falsa
Verdadeira
condição
accão2
accão1
Se a condição for verdadeira é executa a acção1, se é falsa é executa a
acção2.
@2009 - João Manuel R. S. Tavares
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
16
8
CFAC: Visual Basic: IV - Decisões
FEUP/DEMec/SDI
Exemplo de uma declaração de If composto
(determinar o maior de dois números)
Private Sub cmdFindLarger_Click()
Di largerNum
Dim
l
N
A
As Si
Single
l
picResult.Cls
If Val(txtFirstNum.Text) > Val(txtSecondNum.Text) Then
largerNum = Val(txtFirstNum.Text)
Else
largerNum = Val(txtSecondNum
Val(txtSecondNum.Text)
Text)
End If
picResult.Print "The larger number is"; largerNum
End Sub
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
17
Notas Importantes na utilização da
declaração If

Utilizar indentação;

Em declarações de If’s embutidos cada If deve
ter a sua própria declaração End If;

Devesse ter cuidado para tentar criar blocos de
If fá
Ifs
fáceis
i de
d compreender.
d
@2009 - João Manuel R. S. Tavares
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
18
9
CFAC: Visual Basic: IV - Decisões
FEUP/DEMec/SDI
Exemplo
If cond1 Then
If cond2
d2 Then
Th
acção(s)
End If
End If
Um bloco If confuso
@2009 - João Manuel R. S. Tavares
If cond1 And cond2 Then
acção(s)
ã ()
End If
M i fácil
Mais
fá il de
d compreender
d
CFAC: Visual Basic: IV - Decisões
19
Decisões Alternativas Embutidas
 Sintaxe:
If condição1 Then
acção1
ElseIf condição2 Then
acção2
ElseIf condição3 Then
acção3
ç
Else
acção4
End If
@2009 - João Manuel R. S. Tavares
@2009 - João Manuel R. S. Tavares
É procurada a primeira condição
verdadeira, executada a acção
correspondente, e depois o
controlo salta para a declaração
imediatamente a seguir a End If.
O Else pode não existir.
CFAC: Visual Basic: IV - Decisões
20
10
CFAC: Visual Basic: IV - Decisões
FEUP/DEMec/SDI
Exemplo (determinar o maior de dois números, e
informar se os dois números são iguais)
Private Sub cmdFindLarger_Click()
picResult Cls
picResult.Cls
If Val(txtFirstNum.Text) > Val(txtSecondNum.Text) Then
picResult.Print "The larger number is"; txtFirstNum.Text
ElseIf Val(txtSecondNum.Text) > Val(txtFirstNum.Text) Then
picResult.Print "The larger number is "; txtSecondNum.Text
Else
picResult.Print "The two numbers are equal."
End If
End Sub
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
21
Exemplo (determinar o custo de uma chamada telefónica de NY
para LA)
Private Sub cmdDisplay_Click()
Dim length As Single
Call InputLength (length)
Call DisplayCost(length)
End Sub
@2009 - João Manuel R. S. Tavares
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
22
11
CFAC: Visual Basic: IV - Decisões
FEUP/DEMec/SDI
Subrotinas DisplayCost e InputLenght
Private Sub DisplayCost (length As Single)
' Di
Display
l the
h cost off a call
ll
PicOutput.Print "Cost of call: " ; FormatCurrency ( Cost (length))
End Sub
Private Sub InputLength(length As Single)
'R
Requestt the
th length
l th off a phone
h
call
ll
length = Val (InputBox("Duration of the call in minutes? "))
End Sub
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
23
Função Cost
Private Function Cost (length As Single) As Single
If length
l
h < 1 Then
Th
Cost = .46
Else
Cost = .46 + (length –1) * .36
End If
End Function
@2009 - João Manuel R. S. Tavares
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
24
12
CFAC: Visual Basic: IV - Decisões
FEUP/DEMec/SDI
Bloco Select Case

Similar à declaração If;

Utilizado em vez de Ifs embutidos;

Uma acção é seleccionada a partir de uma lista
de alternativas;

Evita a confusão de blocos If profundamente
embutidos.
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
25
Sintaxe do Bloco Select Case
Select Case selector
C
Case
valor1
l 1
acção1
Case valor2
acção2
…..
Case Else
acção por defeito
End Select
@2009 - João Manuel R. S. Tavares
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
26
13
CFAC: Visual Basic: IV - Decisões
FEUP/DEMec/SDI
Bloco Select Case

Cada valor contém um ou mais dos seguintes tipos de
itens separados por virgulas:
 uma
constante;
 uma
variável;
 uma
expressão;
 um
sinal de desigualdade procedido de Is e seguido de
uma constante, variável, ou expressão;
 uma
gama de valores expressa na forma a To b, onde
a e b são constantes, variáveis, ou expressões.
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
27
Exemplo de um Bloco Select Case
letterGrade = txtGrade.text
S l C
Select
Case letterGrade
l
G d
Case “A”, “B”
picOutput.Print “ Good Work”
Case “C”
picOutput.Print “Average Work”
Case Else
picOutputPrint “Poor Work”
End Select
@2009 - João Manuel R. S. Tavares
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
28
14
CFAC: Visual Basic: IV - Decisões
FEUP/DEMec/SDI
Exemplo com If’s embutidos
letterGrade = txtGrade.Text
If ( letterGrade
l
G d = “A”) O
Or (l
(letterGrade
G d = “B”) Then
Th
picOutput.print “Good Work”
ElseIf (letterGrade = “C”) Then
picOutput.Print “ Average Work”
Else
picOutput.Print “Poor Work”
End If
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
29
Exemplo com Vários tipos de valores
para o bloco Select Case
Private Sub cmdInterpret_Click()
Dim x As Integer, y As Integer, num As Integer
' One, Two, Buckle Myy Shoe
picPhrase.Cls
x=2
y=3
num = Val(txtNumber.Text)
Select Case num
Case y - x, x
picPhrase.Print "Buckle my shoe."
Case Is <= 4
picPhrase.Print "Shut the door."
Case x + y To x * y
picPhrase.Print "Pick up sticks."
Case 7, 8
picPhrase.Print "Lay them straight."
Case Else
picPhrase.Print "Start all over again."
End Select
End Sub
@2009 - João Manuel R. S. Tavares
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
30
15
CFAC: Visual Basic: IV - Decisões
FEUP/DEMec/SDI
Exemplo com um Selector do tipo String
Private Sub cmdInterpret_Click()
Dim firstName As String
firstName = txtAnswer.Text
Select Case firstName
Case "Thomas"
picSolution.Print "Correct."
Case "Woodrow"
picSolution.Print "Sorry, his full name was"
picSolution.Print "Thomas Woodrow Wilson."
C
Case
"P id "
"President"
picSolution.Print "Are you for real?"
Case Else
picSolution.Print "Nice try, but no cigar."
End Select
End Sub
@2009 - João Manuel R. S. Tavares
@2009 - João Manuel R. S. Tavares
CFAC: Visual Basic: IV - Decisões
31
16
Download