Calculadora "clássica"

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

UKclipper
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 13 Fev 2007 16:29

Calculadora "clássica"

Mensagem por UKclipper »

Pessoal, aí vai o código de uma calculadora "clássica" em puro clipper summer'87.

Código: Selecionar todos

*****************************************************************************
*                                                                           *
*    PROGRAMA: CALC.PRG                                                     *
*    FINALIDADE: PROPICIAR UMA CALCULADORA IDENTICA A DO WINDOWS            *
*    OBSERVACAO: COMPILAR COM O TLINK. COM O PLINK86 DA ERRO.               *
*                                                                           *
*****************************************************************************

* SALVA TELA E CORES ANTERIORES E LIMPA TELA.
SAVE SCREEN TO TELAPREVIA
CORPREVIA = SETCOLOR()
SET CURSOR OFF

* DEFINICAO DE VARIAVEIS USADAS NO PROGRAMA.
ACAO = "NADA"
VISOR = "0"
LIMPAVISOR = "S"
MOSTRADOR = SPACE(1)
VALOR_01 = SPACE(01)
VALOR_02 = SPACE(02)
DO WHILE .T.
   SET COLOR TO W+/B
   @ 06,31 CLEAR TO 17,46
   @ 06,31 TO 17,46 DOUBLE
   @ 08,32 TO 16,45
   @ 09,33 SAY " 1  2  3  + "
   @ 11,33 SAY " 4  5  6  - "
   @ 13,33 SAY " 7  8  9  * "
   @ 15,33 SAY " .  0  =  / "
   @ 16,34 SAY "<ESC> SAIR"
   IF ACAO = "NADA"
      @ 08,36 SAY "ACAO ="
   ELSEIF ACAO = "SOMA"
      @ 08,36 SAY "ACAO +"
   ELSEIF ACAO = "SUBTRACAO"
      @ 08,36 SAY "ACAO -"
   ELSEIF ACAO = "MULTIPLICACAO"
      @ 08,36 SAY "ACAO *"
   ELSEIF ACAO = "DIVISAO"
      @ 08,36 SAY "ACAO /"
   END IF
   MOSTRADOR = VISOR
   IF LEN(MOSTRADOR) < 12
      DO WHILE LEN(MOSTRADOR) < 12
          MOSTRADOR = SPACE(01) + MOSTRADOR
      END DO
   ELSE
        MOSTRADOR = LEFT(MOSTRADOR,12)
   END IF
   SET COLOR TO W+/N
   @ 07,33 SAY MOSTRADOR
   INKEY(0)
   IF LASTKEY() = 27
      * TECLA <ESC>
      EXIT
   ELSEIF LASTKEY() = 13 .OR. LASTKEY() = 61
      * TECLA <ENTER> OU IGUAL
      IF ACAO = "NADA"
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "SOMA"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) + VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "SUBTRACAO"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) - VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "MULTIPLICACAO"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) * VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "DIVISAO"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) / VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      END IF
      ACAO = "NADA"
      LIMPAVISOR = "S"
      LOOP
   ELSEIF LASTKEY() = 43
      * TECLA MAIS
      IF ACAO = "NADA"
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "SOMA"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) + VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "SUBTRACAO"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) - VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "MULTIPLICACAO"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) * VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "DIVISAO"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) / VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      END IF
      ACAO = "SOMA"
      LIMPAVISOR = "S"
      LOOP
   ELSEIF LASTKEY() = 45
      * TECLA MENOS
      IF ACAO = "NADA"
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "SOMA"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) + VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "SUBTRACAO"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) - VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "MULTIPLICACAO"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) * VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "DIVISAO"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) / VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      END IF
      ACAO = "SUBTRACAO"
      LIMPAVISOR = "S"
      LOOP
   ELSEIF LASTKEY() = 42
      * TELCA ASTERISCO
      IF ACAO = "NADA"
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "SOMA"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) + VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "SUBTRACAO"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) - VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "MULTIPLICACAO"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) * VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "DIVISAO"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) / VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      END IF
      ACAO = "MULTIPLICACAO"
      LIMPAVISOR = "S"
      LOOP
   ELSEIF LASTKEY() = 47
      * TECLA BARRA
      IF ACAO = "NADA"
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "SOMA"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) + VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "SUBTRACAO"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) - VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "MULTIPLICACAO"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) * VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      ELSEIF ACAO = "DIVISAO"
         VALOR_02 = VISOR
         VISOR = ALLTRIM(STR(VAL(VALOR_01) / VAL(VALOR_02)))
         VALOR_01 = VISOR
         VALOR_02 = SPACE(01)
      END IF
      ACAO = "DIVISAO"
      LIMPAVISOR = "S"
      LOOP
   ELSEIF LASTKEY() = 44 .OR. LASTKEY() = 46
      * VIRGULA OU PONTO
      IF AT(".",VISOR) = 0
           VISOR = VISOR + "."
      END IF
   ELSEIF LASTKEY() = 48
      * ZERO.
      IF LIMPAVISOR = "S"
           VISOR = "0"
      ELSE
           VISOR = VISOR + "0"
      END IF
      LIMPAVISOR = "N"
      LOOP
   ELSEIF LASTKEY() = 49
      * UM.
      IF LIMPAVISOR = "S"
           VISOR = "1"
      ELSE
           IF LEN(ALLTRIM(VISOR)) < 12
                VISOR = VISOR + "1"
           END IF
      END IF
      LIMPAVISOR = "N"
      LOOP
   ELSEIF LASTKEY() = 50
      * DOIS.
      IF LIMPAVISOR = "S"
           VISOR = "2"
      ELSE
           IF LEN(ALLTRIM(VISOR)) < 12
                VISOR = VISOR + "2"
           END IF
      END IF
      LIMPAVISOR = "N"
      LOOP
   ELSEIF LASTKEY() = 51
      * TRES.
      IF LIMPAVISOR = "S"
           VISOR = "3"
      ELSE
           IF LEN(ALLTRIM(VISOR)) < 12
                VISOR = VISOR + "3"
           END IF
      END IF
      LIMPAVISOR = "N"
      LOOP
   ELSEIF LASTKEY() = 52
      * QUATRO.
      IF LIMPAVISOR = "S"
           VISOR = "4"
      ELSE
           IF LEN(ALLTRIM(VISOR)) < 12
                VISOR = VISOR + "4"
           END IF
      END IF
      LIMPAVISOR = "N"
      LOOP
   ELSEIF LASTKEY() = 53
      * CINCO.
      IF LIMPAVISOR = "S"
           VISOR = "5"
      ELSE
           IF LEN(ALLTRIM(VISOR)) < 12
                VISOR = VISOR + "5"
           END IF
      END IF
      LIMPAVISOR = "N"
      LOOP
   ELSEIF LASTKEY() = 54
      * SEIS.
      IF LIMPAVISOR = "S"
           VISOR = "6"
      ELSE
           IF LEN(ALLTRIM(VISOR)) < 12
                VISOR = VISOR + "6"
           END IF
      END IF
      LIMPAVISOR = "N"
      LOOP
   ELSEIF LASTKEY() = 55
      * SETE.
      IF LIMPAVISOR = "S"
           VISOR = "7"
      ELSE
           IF LEN(ALLTRIM(VISOR)) < 12
                VISOR = VISOR + "7"
           END IF
      END IF
      LIMPAVISOR = "N"
      LOOP
   ELSEIF LASTKEY() = 56
      * OITO.
      IF LIMPAVISOR = "S"
           VISOR = "8"
      ELSE
           IF LEN(ALLTRIM(VISOR)) < 12
                VISOR = VISOR + "8"
           END IF
      END IF
      LIMPAVISOR = "N"
      LOOP
   ELSEIF LASTKEY() = 57
      * NOVE.
      IF LIMPAVISOR = "S"
           VISOR = "9"
      ELSE
           IF LEN(ALLTRIM(VISOR)) < 12
                VISOR = VISOR + "9"
           END IF
      END IF
      LIMPAVISOR = "N"
      LOOP
   ENDIF
END DO

CLEAR SCREEN
SET COLOR TO CORPREVIA
RESTORE SCREEN FROM TELAPREVIA
SET CURSOR ON
RETURN
Espero que alguém goste!
Editado pela última vez por Pablo César em 17 Fev 2013 19:30, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Responder