next up previous contents
Next: Comando de Iteração (DO Up: Técnicas de Programação Utilizando Previous: Programação e Utilização de

Comandos de Seleção (IF-THEN e IF-THEN-ELSE)

Os comandos IF-THEN e IF-THEN-ELSE permitem selecionar quais os comandos que serão executados dependendo de uma condição.

O comando IF-THEN tem o seguinte formato:

If Condição Then
Comando 1
$\vdots$
Comando N
End If
Comando N+1

O comportamento do comando IF-THEN é o seguinte: primeiramente a condição é avaliada, podendo resultar em dois valores: TRUE (verdadeiro) ou FALSE (falso). Se a condição for verdadeira, os comandos 1 até N serão executados e, em seguida, o comando N+1. Se a condição for falsa, nenhum dos comandos de 1 a N será executado e o programa irá diretamente para o comando N+1. Por outro lado, o comando IF-THEN-ELSE tem o seguinte formato:

If Condição Then
Comando 1
$\vdots$
Comando N
Else
Comando N+1
$\vdots$
Comando N+M
End If
Comando N+M+1

O comportamento do comando IF-THEN-ELSE é o seguinte: A condição é avaliada; se ela for verdadeira, os comandos de 1 até N serão executados; se a condição for falsa, os comandos de N+1 a N+M serão executados. Em ambos os casos, o comando posterior a ser executado será o comando N+M+1.

Vejamos como exemplo o cálculo de juros progressivos em um investimento financeiro. Se a conta contém um saldo inferior a R$10.000,00, então o banco paga juros mensais de 2%. Para saldo superiores a R$10.000,00 o banco paga 3%. A função TaxaProgressiva1 calcula o saldo da conta no final de um mês.

Function TaxaProgressiva1 (Saldo As Double) As Double
'saldo ao fim de um mes
'com taxa progressiva

'Declaracoes
Dim Taxa As Double

'Descobre o valor da taxa
If Saldo < 10000 Then
Taxa = 0.02
Else
Taxa = 0.03
End If
'Retorno da funcao
TaxaProgressiva1 = Saldo * (1+ Taxa)
End Function

Outra forma de se computar exatamente a mesma função:

Function TaxaProgressiva2 (Saldo As Double) As Double
'saldo ao fim de um mes
'com taxa progressiva

'Declaracoes
Dim Taxa As Double
Dim Acrescimo As Double

'Descobre o valor da taxa
If Saldo < 10000 Then
Taxa = 0.02
Acrescimo = Saldo * Taxa
Else
Taxa = 0.03
Acrescimo = Saldo * Taxa
End If
'Retorno da funcao
TaxaProgressiva2 = Saldo + Acrescimo
End Function Conforme vimos no exemplo acima, as expressões condicionais são formadas por comparadores (o símbolo < no exemplo acima).

Uma expressão condicional simples tem o formato Expressão Aritmética comparador Expressão Aritmética. Os comparadores lógicos podem ser:

Desta forma, podemos formar expressões condicionais como (X + 2 <= Y*Z).

As expressões condicionais simples podem ser combinadas para formarem expressões condicionais compostas. Temos os seguintes combinadores lógicos:

Por exemplos, uma expressão condicional que testa se uma variável X está entre os valores MIN e MAX (inclusive) é $(X = MIN \mbox{\bf AND } X <= MAX).$

Se quisermos verificar se Y NÃO está entre MIN e MAX, podemos fazê-lo de duas formas: $(Y < MIN \mbox{\bf OR } Y > MAX)$ ou $(NOT( Y = MIN \mbox{\bf AND } Y <= MAX ))$. Retomando o exemplo dos juros progressivos, se a conta contiver um saldo inferior a R$10.000,00 então o banco pagará juros mensais de 2%. Para cada R$5.000,00 adicionais acima de R$10.000,00 o banco pagará 0,5% a mais, até atingir a taxa limite de 4%. A função TaxaProgressiva3 fica: Function TaxaProgressiva3 (Saldo As Double) As Double
'saldo ao fim de um mes
'com taxa progressiva

'Declaracoes
Dim Taxa As Double

'Descobre o valor da taxa
If Saldo < 10000 Then
Taxa = 0.02
ElseIf Saldo < 15000 Then
Taxa = 0.025
ElseIf Saldo < 20000 Then
Taxa = 0.03
ElseIf Saldo < 25000 Then
Taxa = 0.035
Else
Taxa = 0.04
End If
'Retorno da funcao
TaxaProgressiva3 = Saldo * (1+ Taxa)
End Function


Exercícios

1.
Considere a seguinte classificação de consumidores, baseada na percentagem do salário gasto com itens da cesta básica:

Esbanjador até 25% (inclusive)
Gastador entre 25% e 53% (inclusive)
Comedido entre 53% e 75% (inclusive)
Essencial entre 75% e 95% (inclusive)

(a)
Fazer um programa ClassificaConsumo, que recebe um número de 0 a 100 (real), representando a percentagem do salário gasta por uma família com itens da cesta básica, e retorna uma cadeia (string), contendo a classificação correspondente.
(b)
Fazer uma planilha com duas colunas. Na primeira, a percentagem do salário gasta por uma família com itens da cesta básica, que deve ir variando de 0 a 100% em intervalos de 10%. A segunda coluna contém a classificação.
(c)
O que acontece com 100%?

2.
Na vida real, as fronteiras de classificação são menos definidas. Suponha que nós tenhamos a seguinte classificação, ``com buracos'':

Esbanjador até 20%
Gastador entre 25% e 45%
Comedido entre 53% e 75%
Essencial entre 80% e 95%

(a)
Fazer um programa ClassificaConsumo2 tal que, se algum percentagem for fornecida que não é coberta pelos intervalos acima, o programa deve fornecer a cadeia "INDEFINIDO".
(b)
Fazer uma planilha semelhante à do exercício anterior.

3.
Considere uma equação do segundo grau (a * x2 + b*x + c = 0). Utilizando a função DELTA desenvolvida nos exercícicios do capítulo anterior, escreva um programa que calcula a(s) raíz(es) desta equação, tal que:

(a)
Se não houver raízes (Delta < 0), o programa retorna -9999.
(b)
Se houver uma única raiz (Delta = 0), o programa retorna o valor da raiz única igual a -b/2a.
(c)
Se houver duas raízes (Delta 0) o programa calcula as duas raízes: (x1 = ( -b - SQRT(Delta) )/ (2*a)) e (x2 = ( -b + SQRT(Delta) )/ (2*a))onde SQRT(X) é uma função pré-definida que calcula a raiz quadrada. O programa deve retornar a maior das duas raízes.

Crie uma planilha de 4 colunas. As três primeiras contêm os coeficientes da equação do segundo grau. A quarta contém o valor da maior raiz.


next up previous contents
Next: Comando de Iteração (DO Up: Técnicas de Programação Utilizando Previous: Programação e Utilização de
Flavio Soares Correa da Silva
2000-04-10