Expressões Lógicas e Comandos de Seleção Prof. de Algoritmos IA
Expressões Lógicas São expressões que resultam em valores lógicos : verdadeiro ou falso. Em VB: a constante True representa verdadeiro a constante False representa falso
Expressões Lógicas Para compor as expressões lógicas utilizam-se os operadores: relacionais: comparam dois valores. >, <, >=, <=, <>, = like (para comparação de strings) lógicos: combinam expressões lógicas. and or not (e) (ou) (não)
Expressões Lógicas Operadores relacionais: Exemplos: > maior que 3>2 d > a < menor que 5<8 ABC < B >= maior ou igual 3>=3 Ivo >= Ira <= menor ou igual 4<=6 A <= A <> diferente 4<>5 A <> a = igual 5=5 c = c
Expressões Lógicas Operadores lógicos: Considerando que A e B são duas expressões lógicas. Tabela Verdade: A B A and B A or B not A F F F F T F T F T T T F F T F T T T T F
Expressões Lógicas Operadores Lógicos: not A : inverte o valor lógico de A A and B : para resultar True exige que as expressões A e B sejam verdadeiras ao mesmo tempo. (basta que um operando seja falso para o resultado ser falso) A or B : para resultar False exige que as expressões A e B sejam falsas ao mesmo tempo. (basta que um operando seja verdadeiro para o resultado ser verdadeiro)
Expressões Lógicas Prioridade dos Operadores: + - ( ) funções ^ *, / \ mod & +, - <, <=, >, >=, =, <>, like not and or xor
Expressões Lógicas Supondo: Dim num, val as Integer Dim flag as Boolean num = 2 val = 3 flag = true Qual o resultado das expressões? a) num<val+1 and num<=val^2-7 b) num<val and not flag c) (num<1 or flag) and val<>num
Seleção / Decisão Permite criar alternativas para o fluxo de execução de um programa (tomada de decisão). VB prevê 2 tipos de comandos de decisão: If... Then... [...] Select Case...
Comando if A sintaxe do comando if é a seguinte: If condição Then comandos Obs: a condição é uma expressão lógica
Comando if Funcionamento: - avalia-se a condição: resulta True ou False; - se o resultado for True, executa(m)-se o(s) comando(s) - se o resultado for False, não faz nada. condição True Comandos False Obs: o comando após ao if é sempre executado.
Comando if Exemplo 1 acertar numero magico. Private Sub Dim valor as Integer Const magico = 10 valor = CInt(txtvalor.Text) If valor = magico Then MsgBox Acertou!! If valor <> magico Then MsgBox Errou!! End Sub busca valor do formulario
Comando if Exemplo 2 verificar se aprovado por media 7. Private Sub Dim nota1, nota2, media as Double nota1 = CDbl(txtn1.Text) busca valor do formulario nota2 = CDbl(txtn2.Text) busca valor do formulario media = (nota1 + nota2) / 2 If media >= 7 Then MsgBox Aprovado por media! If media < 7 Then MsgBox Em exame ou reprovado! End Sub
Comando if-else Outra forma de usar o If é com a cláusula. Esse tipo de construção permite a definição de ações alternativas. Sintaxe: If condição Then comandos1 comandos2
Comando if-else Funcionamento: - avalia-se a condição: resulta True ou False; - se o resultado for True, executa(m)-se o(s) comando(s)1; - se o resultado for False, executa(m)-se o(s) comando(s)2; Obs: - executa-se um o outro comando, nunca ambos; - o comando após ao if sempre é executado;
Comando if-else condição False Comandos2 True Comandos1
Comando if-else Exemplo 1 acertar numero magico. Private Sub Dim valor as Integer Const magico = 10 valor = CInt(txtvalor.Text) If valor = magico Then MsgBox Acertou!! MsgBox Errou!! End Sub busca valor do formulario
Comando if Exemplo 2 verificar se aprovado por media 7. Private Sub Dim nota1, nota2, media as Double nota1 = CDbl(txtn1.Text) busca valor do formulario nota2 = CDbl(txtn2.Text) busca valor do formulario media = (nota1 + nota2) / 2 If media >= 7 Then MsgBox Aprovado por media! MsgBox Em exame ou reprovado! End Sub
Exemplo 1: Faça um programa que leia a idade de um nadador e classifique-o em uma das seguintes categorias: Infantil : 5 a 10 anos Juvenil : 11 a 17 anos Adulto : maiores de 17 anos
1ª Solução: Private Sub Dim idade As Integer idade = CInt(txtid.Text) busca idade do formulario If idade>=5 and idade<=10 Then MsgBox Infantil If idade>=11 and idade<=17 Then MsgBox Juvenil If idade>17 Then MsgBox Adulto End Sub Funciona para qualquer entrada de dados?
2ª Solução: Private Sub Dim idade As Integer idade = CInt(txtid.Text) busca idade do formulario If idade<0 or idade>120 Then MsgBox Idade Invalida!!! If idade>=0 and idade<5 Then MsgBox Sem categoria!!! If idade>=5 and idade<=10 Then MsgBox Infantil If idade>=11 and idade<=17 Then MsgBox Juvenil If idade>17 and idade<=120then MsgBox Adulto End Sub
3ª Solução: está certa? Private Sub Dim idade As Integer idade = CInt(txtid.Text) busca idade do formulario If idade<0 or idade>120 Then MsgBox Idade Invalida!!! If idade>=0 and idade<5 Then MsgBox Sem categoria!!! If idade>=5 and idade<=10 Then MsgBox Infantil If idade>=11 and idade<=17 Then MsgBox Juvenil MsgBox Adulto End Sub
Comandos if-else encadeados If condição1 Then comandos1 If condição2 Then comandos2 If condição3 Then comando3
4ª Solução: Private Sub Dim idade As Integer idade = CInt(txtid.Text) busca idade do formulario If idade<0 or idade>120 Then MsgBox Idade Invalida!!! If idade<5 Then MsgBox Sem categoria!!! If idade<=10 Then MsgBox Infantil If idade<=17 Then MsgBox Juvenil MsgBox Adulto End Sub
Exemplo 2: Faça um programa que leia o sexo (m/f) e a idade de uma pessoa e informe se ela é adulta ou não conforme os critérios abaixo: Homem maior que 18 anos Mulher maior que 21 anos
1ª Solução: Private Sub Dim idade As Integer Dim sexo As String idade = CInt(txtid.Text) sexo = txtsexo.text busca idade do formulario busca sexo do formulario If sexo = M ou sexo = m Then If idade >= 18 Then MsgBox Homem adulto MsgBox Homem não adulto If idade >= 21 Then MsgBox Mulher adulta MsgBox Mulher não adulta End Sub
Comando Select Case O comando Select Case é uma alternativa para o encadeamento de comandos If Then. O uso de Select Case é muito comum em menus. Select Case expressão Case lista_valores1 comandos1 Case lista_valores2 comandos2... [Case comandos_else] End Select
Exemplo: Faça um programa que leia 3 valores reais e um inteiro (opção). Se valor digitado na opção for: 1, calcula a média aritmética dos 3 valores reais; 2, calcula a média ponderada (pesos: 4,3,3); 3, calcula a média harmônica.
1ª Solução: utilizando if Private Sub Dim n1, n2, n3, med As Double Dim op as Integer label1.caption \ndigite 1 p/ aritmetica, 2 p/ ponderada ou 3 p/ harmonica: op = CInt(txtop.Text) label2.caption Entre com 3 valores n1 = CInt(txtn1.Text) n2 = CInt(txtn2.Text) n3 = CInt(txtn3.Text) If op=1 Then med = (n1+n2+n3)/3) MsgBox Media Aritmetica = + CStr(med) If op=2 Then med = (4*n1 + 3*n2 + 3*n3)/(4+3+3); MsgBox Media Ponderada = + CStr(med) If op=3 Then If n1<>0 and n2<>0 and n3<>0 Then med = 3/(1/n1+1/n2+1/n3); MsgBox Media Harmonica = + CStr(med) MsgBox Erro. Divisao por zero! MsgBox Opcao invalida. End Sub
1ª Solução: utilizando select case Private Sub Dim n1, n2, n3 As Double Dim op as Integer label1.caption \ndigite 1 p/ aritmetica, 2 p/ ponderada ou 3 p/ harmonica: op = CInt(txtop.Text) label2.caption Entre com 3 valores n1 = CInt(txtn1.Text) n2 = CInt(txtn2.Text) n3 = CInt(txtn3.Text) Select Case op Case 1 med = (n1+n2+n3)/3) MsgBox Media Aritmetica = + CStr(med) Case 2 med = (4*n1 + 3*n2 + 3*n3)/(4+3+3); MsgBox Media Ponderada = + CStr(med) Case 3 If n1<>0 and n2<>0 and n3<>0 Then med = 3/(1/n1+1/n2+1/n3); MsgBox Media Harmonica = + CStr(med) MsgBox Erro. Divisao por zero! Case MsgBox Opcao invalida. End Select End Sub