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 >> |