Clipper On Line • Ver Tópico - Calculadora "clássica"

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

 

Calculadora "clássica"

Mensagempor UKclipper » 06 Mar 2007 11:12

Pessoal, aí vai o código de uma calculadora "clássica" em puro clipper summer'87.
*****************************************************************************
*                                                                           *
*    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!
Nota de Moderação:
Pablo César: Mensagem editada para colocar a tag [ code ]
Veja como utilizar esta tag: Clique aqui
UKclipper
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 27
Data de registro: 13 Fev 2007 15:29
Curtiu: 0 vez
Mens.Curtidas: 0 vez



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 17 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro