Aula 6 - Dei-Isep

Propaganda
Estruturas
de Decisão
APROG (Civil)
Aula 6
Tuesday, December 1, 2009
APROG
Conteúdo
Civil
• Estruturas
• Estrutura
If...Then
• Estrutura
If...Then...Else
ISEP-DEI, António Silva, © 2007-2009
ISEP–DEI, Angelo Martins © 2006
Tuesday, December 1, 2009
de Decisão
2
Estruturas de Decisão
Conceito
APROG
Civil
• As
Estruturas de Controlo servem
para
modificar
o
fluxo
das
instruções
seguidas
por
um
determinado programa.
• As
Estruturas
de
Controlo
Condicional (Estruturas de Decisão)
são usadas para escolher um entre
vários
caminhos
possíveis,
permitindo a tomada de decisões em
função da situação do momento.
ISEP-DEI, António Silva, © 2007-2009
ISEP–DEI, Angelo Martins © 2006
Tuesday, December 1, 2009
3
Estruturas de Decisão
Estruturas de Decisão
APROG
Civil
As linguagens de programação têm instruções
que permitem tomar decisões com base numa
condição (expressão lógica). Em VBA existe o
IF ... Then
−
Sintaxe (geral)‫‏‬
If <expressão lógica> then
<bloco de instruções 1>
[Else
<bloco de instruções 2>]
End If
−
O código entre parêntesis
rectos é opcional, ou seja,
não tem necessariamente
que existir.
Explicação
Se a expressão lógica for verdadeira será executado o
bloco de instruções 1, caso contrário executa-se o 2.
ISEP-DEI, António Silva, © 2007-2009
ISEP–DEI, Angelo Martins © 2006
Tuesday, December 1, 2009
4
Estruturas de Decisão
APROG
Civil
Estrutura If...Then...Else
IF...THEN
...
ELSE
Instrução
NÃO
Condição
Verdadeira?
Bloco de
Instruções 2
SIM
Bloco de
Instruções 1
Instrução
ISEP-DEI, António Silva, © 2007-2009
ISEP–DEI, Angelo Martins © 2006
Tuesday, December 1, 2009
5
Estruturas de Decisão
Estrutura If...Then
APROG
Civil
Instrução
IF...THEN
Condição
Verdadeira?
NÃO
SIM
Bloco de
Instruções
Instrução
ISEP-DEI, António Silva, © 2007-2009
ISEP–DEI, Angelo Martins © 2006
Tuesday, December 1, 2009
6
Estruturas de Decisão
APROG
Civil
Exemplo - Enunciado
Pretende-se um programa que resolva equações do 2º grau.
−
Raízes:
ISEP-DEI, António Silva, © 2007-2009
ISEP–DEI, Angelo Martins © 2006
Tuesday, December 1, 2009
7
Estruturas de Decisão
Exemplo - Código
APROG
Civil
O código do programa é o seguinte:
Para o interpretador do VBA - obriga a declarar variáveis
Declaração das variáveis
Public Sub Equation2ndDegree()
Option Explicit
Dim a As Single, b As Single, c As Single
Dim delta As Single
a = [C3]
b = [D3]
c = [E3]
Leitura dos valores contidos em 3 células da
folha activa. Não é são validados os valores.
delta = Sqr(b ^ 2 - 4 * a * c)
[C5] = (-b + delta) / (2 * a)
[C6] = (-b - delta) / (2 * a)
End Sub
Sqr() é uma função do VBA
que fornece a raiz quadrada de
um número positivo
A variável delta permite economizar alguns
cálculos, não sendo necessário repetir o
cálculo da raiz quadrada para a segunda raiz.
Caso não se trate da folha de cálculo activa, deverá
ser inserida a referência à folha específica:
a = Worksheets("Folha2").[C3]
ISEP-DEI, António Silva, © 2007-2009
ISEP–DEI, Angelo Martins © 2006
Tuesday, December 1, 2009
8
Estruturas de Decisão
Exemplo - teste
APROG
Civil
Vamos testar com outros valores: 1, 0, 1 (raízes complexas +i e -i).
Ocorreu um erro e o programa foi interrompido: a
função Sqr() não aceita argumentos negativos!
ISEP-DEI, António Silva, © 2007-2009
ISEP–DEI, Angelo Martins © 2006
Tuesday, December 1, 2009
9
Estruturas de Decisão
Exame - Solução
APROG
Civil
A função Sqr() não pode receber argumentos negativos.
Option Explicit
Private Sub Equation2ndDegree()
Dim a As Single, b As Single, c As Single
Dim delta As Single
a = [C3]
b = [D3]
c = [E3]
delta representa agora o interior da raiz
Se delta for maior ou igual a zero então
é possível calcular a raiz quadrada. Existem
raízes reais para a equação.
delta = b ^ 2 - 4 * a * c
If delta >= 0 Then
[C5] = (-b + Sqr(delta)) / (2 * a)
[C6] = (-b - Sqr(delta)) / (2 * a)
Else
Mensagem a indicar que as raízes
MsgBox "Raízes complexas!"
são complexas.
End If
End Sub
ISEP-DEI, António Silva, © 2007-2009
ISEP–DEI, Angelo Martins © 2006
Tuesday, December 1, 2009
10
Estruturas de Decisão
Exemplo - Novo teste
APROG
Civil
De novo com os valores: 1, 0, 1 (raízes complexas +i e -i).
O programa já não dá erro, informando antes o utilizador
da natureza complexa das raízes!
Sugestão:
O programa pode ainda dar erro devido a certos valores
introduzidos pelo utilizador. Tente descobrir e eliminar essa
possibilidade (pista: atenção às divisões!).
Tente também apresentar as raízes complexas da equação.
ISEP-DEI, António Silva, © 2007-2009
ISEP–DEI, Angelo Martins © 2006
Tuesday, December 1, 2009
11
Estruturas de Decisão
Download