Hi people, I'm new here, and I wrote a calculator in FreeBASIC. It's called 
"DOSCALC".
The source code is attached to this message. Suggestions are welcome.
                                          
#lang "fblite"
Option GoSub

DIM A AS DOUBLE
DIM B AS DOUBLE
DIM C AS DOUBLE
DIM D AS DOUBLE
DIM E AS DOUBLE
DIM F AS INTEGER
DIM G AS INTEGER
DIM P AS INTEGER
DIM P$(1 TO 10)

DATA "Result:","Resultado:","Make another operation? (Y/N)","Efetuar outra 
opera‡„o? (S/N)"
DATA "Using the result of the current operation? (Y/N)","Utilizando o resultado 
da opera‡„o atual? (S/N)"
DATA "Average of the values:","M‚dia dos valores:","Body mass index:","IMC:"

FOR F = 1 TO 10
    READ P$(F)
NEXT F

CLS
PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
PRINT "º Language / L¡ngua º"
PRINT "ÌÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹"
PRINT "º 1 º English       º"
PRINT "º 2 º Portuguˆs     º"
PRINT "ÈÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
F = 0
DO WHILE F = 0
    A$ = INKEY$
    IF A$ = "1" THEN F = 1
    IF A$ = "2" THEN F = 2
LOOP
SELECT CASE F
    CASE 1
        F = 0
        P = 1
        CLS
        GOSUB Presents
    CASE ELSE
        F = 0
        P = 2
        CLS
        GOSUB Apresenta
END SELECT
DO WHILE B$ = ""
    PRINT ""
    IF P = 1 THEN PRINT P$(3) ELSE PRINT P$(4)
    F = 0
    A$ = ""
    DO WHILE F = 0
        A$ = INKEY$
        IF A$ = "S" OR A$ = "s" THEN F = 1
        IF A$ = "Y" OR A$ = "y" THEN F = 1
        IF A$ = "N" OR A$ = "n" THEN F = 2
    LOOP
    SELECT CASE F
        CASE 1
            GOSUB OutraOperacao
        CASE ELSE
            CLS: SYSTEM
    END SELECT
LOOP

Apresenta:
PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
PRINT "º DOSCALC por Carlos Henrique Baldo º"
PRINT "º Lan‡ado sob a GNU GPL - use-o por º"
PRINT "º * sua pr¢pria conta. 07/04/2012 * º"
PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
GOSUB MenuPrincipal
RETURN

Presents:
PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
PRINT "º DOSCALC by Carlos Henrique Baldo º"
PRINT "º  Released under GNU GPL, use it  º"
PRINT "º * at your own risk. 2012-04-07 * º"
PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
GOSUB MainMenu
RETURN

MenuPrincipal:
PRINT "ÉÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
PRINT "º * º Tecle o n£mero correspondente º"
PRINT "ÌÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹"
PRINT "º 1 º Calcular adi‡„o               º"
PRINT "º 2 º Calcular subtra‡„o            º"
PRINT "º 3 º Calcular divis„o              º"
PRINT "º 4 º Calcular multiplica‡„o        º"
PRINT "º 5 º Calcular potencia‡„o          º"
PRINT "º 6 º Calcular raiz quadrada        º"
PRINT "º 7 º Calcular porcentagem          º"
PRINT "ÌÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹"
PRINT "º 8 º Calcular m‚dia de valores     º"
GOSUB Verificar
PRINT "ÈÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
GOSUB DetectaTecla
RETURN

MainMenu:
PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
PRINT "º  Press the corresponding number  º"
PRINT "ÌÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹"
PRINT "º 1 º Calculate addition           º"
PRINT "º 2 º Calculate subtraction        º"
PRINT "º 3 º Calculate division           º"
PRINT "º 4 º Calculate multiplication     º"
PRINT "º 5 º Calculate exponentiation     º"
PRINT "º 6 º Calculate square root        º"
PRINT "º 7 º Calculate percentage         º"
PRINT "ÌÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹"
PRINT "º 8 º Calculate average of values  º"
GOSUB Check
PRINT "ÈÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
GOSUB DetectaTecla
RETURN

DetectaTecla:
F = 0
A$ = ""
DO WHILE F = 0
    A$ = INKEY$
    IF A$ = "1" THEN F = 1
    IF A$ = "2" THEN F = 1
    IF A$ = "3" THEN F = 2
    IF A$ = "4" THEN F = 1
    IF A$ = "5" THEN F = 3
    IF A$ = "6" THEN F = 4
    IF A$ = "7" THEN F = 5
    IF A$ = "8" THEN F = 6
    IF A$ = "9" THEN F = 7
LOOP
CLS
SELECT CASE F
    CASE 1
        GOSUB OperacaoComum
    CASE 2
        GOSUB Divisao
    CASE 3
        GOSUB Potencia
    CASE 4
        GOSUB RaizQuadrada
    CASE 5
        GOSUB Porcentagem
    CASE 6
        GOSUB Media
    CASE ELSE
        GOSUB IMC
END SELECT
RETURN

OperacaoComum:
IF G < 7 AND P = 1 THEN INPUT "1st value: ", C
IF G < 7 AND P = 2 THEN INPUT "1§ valor: ", C
IF G = 7 AND P = 1 THEN INPUT "Value: ", E
IF G = 7 AND P = 2 THEN INPUT "Valor: ", E
IF G < 7 AND P = 1 THEN INPUT "2nd value: ", E
IF G < 7 AND P = 2 THEN INPUT "2§ valor: ", E
IF G = 7 THEN C = D
IF A$ = "1" THEN D = C + E
IF A$ = "2" THEN D = C - E
IF A$ = "4" THEN D = C * E
PRINT ""
GOSUB Resultado
RETURN

Resultado:
IF P = 1 THEN PRINT P$(1); D ELSE PRINT P$(2); D
RETURN

Potencia:
IF G < 7 THEN INPUT "Base: ", C
IF P = 1 THEN INPUT "Exponent: ", E ELSE INPUT "Expoente: ", E
IF G = 7 THEN C = D
D = C ^ E
PRINT ""
GOSUB Resultado
RETURN

Divisao:
IF G < 7 AND P = 1 THEN INPUT "Dividend: ", C
IF G < 7 AND P = 2 THEN INPUT "Dividendo: ", C
IF G = 7 THEN C = D
INPUT "Divisor: ", E
DO WHILE E = 0
    CLS
    IF G < 7 AND P = 1 THEN PRINT "Dividend:"; C
    IF G < 7 AND P = 2 THEN PRINT "Dividendo:"; C
    INPUT "Divisor: ", E
LOOP
D = C / E
PRINT ""
GOSUB Resultado
RETURN

OutraOperacao:
PRINT ""
IF P = 1 THEN PRINT P$(5) ELSE PRINT P$(6)
F = 0
A$ = ""
DO WHILE F = 0
    A$ = INKEY$
    IF A$ = "S" OR A$ = "s" THEN F = 1
    IF A$ = "Y" OR A$ = "y" THEN F = 1
    IF A$ = "N" OR A$ = "n" THEN F = 2
LOOP
SELECT CASE F
    CASE 1
        G = 7
        PRINT ""
        IF P = 1 THEN GOSUB MainMenu
        IF P = 2 THEN GOSUB MenuPrincipal
    CASE ELSE
        G = 6
        PRINT ""
        IF P = 1 THEN GOSUB MainMenu
        IF P = 2 THEN GOSUB MenuPrincipal
END SELECT
RETURN

Verificar:
IF F = 0 OR G = 6 THEN PRINT "º 9 º Calcular IMC                  º"
RETURN

Check:
IF F = 0 OR G = 6 THEN PRINT "º 9 º Calculate body mass index    º"
RETURN

RaizQuadrada:
IF G < 7 AND P = 1 THEN INPUT "Value: ", E: PRINT
IF G < 7 AND P = 2 THEN INPUT "Valor: ", E: PRINT
IF G = 7 THEN E = D
D = SQR(E)
GOSUB Resultado
RETURN

Porcentagem:
IF G = 7 THEN C = D
IF G = 7 THEN GOSUB JaPorcentou
IF P = 1 THEN INPUT "Value: ", C ELSE INPUT "Valor: ", C
GOSUB JaPorcentou
RETURN

JaPorcentou:
IF P = 1 THEN INPUT "Percentage (without %): ", E ELSE INPUT "Porcentagem (sem 
%): ", E
D = (C * E) / 100: PRINT
GOSUB Resultado
RETURN

Media:
IF G = 7 THEN E = D
IF P = 1 THEN INPUT "1st value: ", A ELSE INPUT "1§ valor: ", A
IF P = 1 THEN INPUT "2nd value: ", B ELSE INPUT "2§ valor: ", B
IF P = 1 THEN INPUT "3rd value: ", C ELSE INPUT "3§ valor: ", C
IF G = 7 THEN GOSUB Media2
IF P = 1 THEN INPUT "4th value: ", E ELSE INPUT "4§ valor: ", E
GOSUB Media2
RETURN

Media2:
D = (A + B + C + E) / 4: PRINT
IF P = 1 THEN PRINT P$(7); D ELSE PRINT P$(8); D
RETURN

IMC:
IF P = 1 THEN INPUT "Mass (kg): ", C ELSE INPUT "Peso (kg): ", C
IF P = 1 THEN INPUT "Height (m): ", E ELSE INPUT "Altura (m): ", E
D = C / (E ^ 2): PRINT
IF P = 1 THEN PRINT P$(9); D: PRINT ELSE PRINT P$(10); D: PRINT
IF P = 1 THEN GOSUB Message ELSE GOSUB Mensagem
RETURN

Mensagem:
IF D < 18.5 THEN GOSUB Abaixo
IF D > 18.5 AND D < 25 THEN GOSUB Ideal
IF D > 40 THEN GOSUB Acima4
IF D > 35 AND D < 40 THEN GOSUB Acima3
IF D > 30 AND D < 35 THEN GOSUB Acima2
IF D > 25 AND D < 30 THEN GOSUB Acima
RETURN

Message:
IF D < 15 THEN GOSUB Low3
IF D < 16 AND D > 15 THEN GOSUB Low2
IF D < 18.5 AND D > 16 THEN GOSUB Low
IF D > 18.5 AND D < 25 THEN GOSUB Normal
IF D > 40 THEN GOSUB High4
IF D > 35 AND D < 40 THEN GOSUB High3
IF D > 30 AND D < 35 THEN GOSUB High2
IF D > 25 AND D < 30 THEN GOSUB High
RETURN

Ideal:
PRINT "ÉÍÍÍÍÍÍÍÍÍÍ»"
PRINT "º Saud vel º"
PRINT "ÈÍÍÍÍÍÍÍÍÍͼ"
RETURN

Abaixo:
PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
PRINT "º Abaixo do peso º"
PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
RETURN

Acima:
PRINT "ÉÍÍÍÍÍÍÍÍÍ»"
PRINT "º Peso em º"
PRINT "º excesso º"
PRINT "ÈÍÍÍÍÍÍÍÍͼ"
RETURN

Acima2:
PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
PRINT "º Obesidade de º"
PRINT "º    Grau I    º"
PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
RETURN

Acima3:
PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
PRINT "º Obesidade de Grau II º"
PRINT "º       (severa)       º"
PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
RETURN

Acima4:
PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
PRINT "º Obesidade de Grau III º"
PRINT "º       (m¢rbida)       º"
PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
RETURN

Normal:
PRINT "ÉÍÍÍÍÍÍÍÍÍ»"
PRINT "º Healthy º"
PRINT "ÈÍÍÍÍÍÍÍÍͼ"
RETURN

Low3:
PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
PRINT "º Very severely º"
PRINT "º  underweight  º"
PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
RETURN

Low2:
PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
PRINT "º Severely underweight º"
PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
RETURN

Low:
PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
PRINT "º Underweight º"
PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍͼ"
RETURN

High:
PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍ»"
PRINT "º Overweight º"
PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍͼ"
RETURN

High2:
PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
PRINT "º Obese Class I º"
PRINT "º  (Moderated)  º"
PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
RETURN

High3:
PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
PRINT "º Obese Class II º"
PRINT "º    (Severe)    º"
PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
RETURN

High4:
PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
PRINT "º Obese Class III º"
PRINT "º  (Very severe)  º"
PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
RETURN
------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to