O comando IF permite realizar um teste lógico e executar uma subrotina em caso verdadeiro ou outra rotina caso falso. Sintaxe:
IF <condição>
<comandos_caso_teste_verdadeiro>
[ELSE
<comandos_caso_teste_falso>]
ENDIF
Exemplo:
input "Nota" to nota if nota >= 7 ? "Aprovado" else ? "Reprovado" endif
Podemos testar várias condições em sequência.
input "Hora do dia (0 a 23)" to hora
if hora < 12
? "Bom dia"
else
if hora < 18
? "Boa tarde"
else
? "Boa noite"
endif
endif
Teste:
. do testeif2 Hora do dia (0 a 23): 10 Bom dia
O comando DO CASE permite realizar uma série de testes em cima de uma variável ou campo. Sintaxe:
DO CASE
CASE <condição_1>
<comandos>
[CASE <condição_2>
<comandos>]
...
[OTHERWISE
<comandos>]
ENDCASE
Podemos inserir quantos cases quisermos. A cláusula OTHERWISE é executada se, e somente se, se todos os testes falharem. Exemplo:
accept "Estado brasileiro" to estado
do case
case !(estado) = "RIO DE JANEIRO"
? "Eu conheco o estadio do Maracana"
case !(estado) = "SAO PAULO"
? "Eu conheco o estadio do Morumbi"
case !(estado) = "MINAS GERAIS"
? "Eu conheco o estadio do Mineirao"
otherwise
? "Eu nao conheco o estadio desse estado"
endcase
Exemplo de uso do arquivo:
. do testcase Estado brasileiro:Rio de Janeiro Eu conheco o estadio do Maracana
. do testcase Estado brasileiro:Goias Eu nao conheco o estadio desse estado
A estrutura de repetição DO WHILE permite repetir uma série de comandos entre o DO e o ENDDO enquanto uma condição for satisfeita. Sintaxe:
DO WHILE <condição> <comandos> ENDDO
Exemplo utilizando variáveis.
set talk off store 1 to contador do while contador < 5 ? contador store contador + 1 to contador enddo set talk on
O comando SET TALK OFF desabilita as impressões padrões do sistema. O comando SET TALK ON habilita estas impressões.
Esta estrutura é útil para varrer tabelas e obter cálculos sobre ela. Veja o exemplo a seguir que utiliza a tabela notasmat.
set talk off
use notasmat
store -1 to maiormedia
go top
do while .not. eof
store (bim1 + bim2 + bim3 + bim4) / 4 to media
if media > maiormedia
store media to maiormedia
store matricula to mat
endif
skip
enddo
use alunos
locate for matricula = mat
? "Maior media dos alunos"
? "Nome: " + Nome
? "Media: " + str(maiormedia, 5, 2)
set talk on
Ao rodar o programa, a saída será:
Maior media dos alunos Nome: Beatriz Saraiva Media: 9.90
Nota importante: ao varrer uma tabela, NUNCA se esqueça de colocar o comando SKIP para saltar para o próximo registro. Caso seja esquecido o uso do SKIP, o loop DO WHILE será ETERNO. Testamos o fim da tabela através do EOF.
O comando LOOP funciona dentro de uma estrutura DO WHILE, com o objetivo de ignorar as linhas seguintes da estrutura e voltar para o início do loop.
Exemplo:
set talk off
store 1 to i
do while i <= 5
if i = 3
store i + 1 to i
loop
endif
? i
store i + 1 to i
enddo
set talk on
Saída na tela:
1
2
4
5
Notas:
Referências:
[1]- dBASE II PLUS para MSX interativo - curso prático, Nelson Casari, Ed. Atlas, 1990.
[2]- dBASE II PLUS para MSX programável - curso prático, Nelson Casari, Ed. Atlas, 1989.
[3]- dBASE III PLUS. Curso Data Rio, Rio de Janeiro, 1990.
| << Anterior | dBASE II | Próxima >> |