Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SCREEN 12
- 'Declaracion de variables:
- VIEW SCREEN(30, 50)-(610, 425), 0, 1
- Color 3: LOCATE 7, 32: PRINT "Menu de Programas"
- Color 2: LOCATE 12, 12: PRINT "1 - Calculo de Areas"
- Color 2: LOCATE 16, 12: PRINT "2 - Ecuacion 2 grado"
- Color 2: LOCATE 20, 12: PRINT "3 - Sistema 3x3"
- Color 2: LOCATE 12, 50: PRINT "4 - Estadistica"
- Color 2: LOCATE 16, 50: PRINT "5 - Circulo"
- Color 6: LOCATE 20, 45: PRINT "Escoja un Programa"
- DO
- Color 3: LOCATE 25, 50: PRINT TIME$
- c$ = INKEY$
- LOOP UNTIL c$ = "x" OR c$ = "1" OR c$ = "2" OR c$ = "3" OR c$ = "4" OR c$ = "5"
- SELECT CASE c$
- CASE "1"
- CLS
- CALL areas
- CASE "2"
- CLS
- CALL ec2
- CASE "3"
- CLS
- CALL sistema3x3
- CASE "4"
- CLS
- CALL est
- CASE "5"
- CLS
- CALL circl
- END SELECT
- 'S U B P R O G R A M A S ////////////////////////////////////////////////////////////////////////////////////////////////
- SUB areas
- 'Script que calcula el area y el perimetro de ciertas figuras geometricas
- 'Codificado por Julio Felipe Martin
- DIM X AS INTEGER
- DIM r, BT, HT, LT1, LT2, BC, AC, LP, AP AS _Unsigned INTEGER
- PI = 3.1415926535897
- DO
- CLS
- LOCATE 6, 12: PRINT "1 CIRCULO 2 TRIANGULO"
- LOCATE 8, 12: PRINT "3 RECTANGULO 4 PENTAGONO"
- LOCATE 12, 12: PRINT "(Introduzca las medidas en centimetros)"
- LOCATE 16, 14: INPUT "SELECCIONE LA FIGURA = ", X
- LOOP UNTIL X = 1 OR X = 2 OR X = 3 OR X = 4
- SELECT CASE X
- CASE 1
- CLS
- LINE (350, 20)-(350, 600), 1
- LOCATE 6, 8: INPUT "Radio de la circunferencia = ", r
- CALL carga
- ACI = PI * r * r
- PCI = 2 * PI * r
- LOCATE 13, 49: PRINT "Area = "; ACI; "cm2"
- LOCATE 16, 49: PRINT "Perimeto = "; PCI; "cm"
- CASE 2
- DO
- CLS
- LINE (350, 20)-(350, 600), 1
- LOCATE 6, 8: INPUT "Base = ", BT
- LOCATE 8, 8: INPUT "Altura = ", HT
- LOCATE 10, 8: INPUT "Primer Lado = ", LT1
- LOCATE 12, 8: INPUT "Segundo Lado = ", LT2
- LOOP UNTIL BT > 0 AND HT > 0 AND LT1 > 0 AND LT2 > 0
- AT = (BT * HT) / 2
- PT = BT + LT1 + LT2
- CALL carga
- LOCATE 13, 49: PRINT "Area = "; AT; "cm2"
- LOCATE 16, 49: PRINT "Perimetro = "; PT; "cm"
- CASE 3
- DO
- CLS
- LINE (350, 20)-(350, 600), 1
- LOCATE 6, 8: INPUT "Primer Lado = ", BC
- LOCATE 8, 8: INPUT "Segundo Lado = ", AC
- LOOP UNTIL BC > 0 AND AC > 0
- ArC = BC * AC
- PeC = 2 * BC + 2 * AC
- CALL carga
- LOCATE 13, 49: PRINT "Area = "; ArC; "cm2"
- LOCATE 16, 49: PRINT "Perimetro = "; PeC; "cm"
- CASE 4
- DO
- CLS
- LINE (350, 20)-(350, 600), 1
- LOCATE 6, 8: INPUT "Lado = ", LP
- LOCATE 8, 8: INPUT "Apotema = ", AP
- LOOP UNTIL LP > 0 AND AP > 0
- PP = LP * 5
- ArP = (PP * AP) / 2
- CALL carga
- LOCATE 13, 49: PRINT "Area = "; ArP; "cm2"
- LOCATE 16, 49: PRINT "Perimetro = "; PP; "cm"
- END SELECT
- END
- END SUB
- '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- SUB ec2
- LINE (350, 20)-(350, 600), 1
- LOCATE 6, 8: PRINT "Introduce los valores de A, B y C"
- LOCATE 9, 8: INPUT "Introduce el valor de A = ", A
- LOCATE 11, 8: INPUT "Introduce el valor de B = ", B
- LOCATE 13, 8: INPUT "Introduce el valor de C = ", C
- D = B * B - 4 * A * C
- X1 = (-B + SQR(D)) / 2 * A
- X2 = (-B - SQR(D)) / 2 * A
- IF D < 0 THEN
- CALL carga
- LOCATE 13, 50: PRINT "N/A solucion real!"
- LOCATE 17, 50: PRINT "X1 equivale a "; X1 + X2; "I"
- LOCATE 20, 50: PRINT "X2 equivale a "; X1 - X2; "I"
- ELSE
- CALL carga
- LOCATE 17, 50: PRINT "X1 equivale a "; X1
- LOCATE 20, 50: PRINT "X2 equivale a "; X2
- END IF
- END
- END SUB
- '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- SUB sistema3x3
- LINE (350, 20)-(350, 600), 1
- LOCATE 12, 8: PRINT "La ecuacion debe tener este formato:"
- LOCATE 14, 8: PRINT "a11 X + a12 Y + a13 Z = A1"
- LOCATE 15, 8: PRINT "a21 X + a22 Y + a23 Z = A2"
- LOCATE 16, 8: PRINT "a31 X + a32 Y + a33 Z = A3"
- LOCATE 20, 8: INPUT "Introudzca el valor de a11: ", a11
- LOCATE 20, 8: INPUT "Introudzca el valor de a12: ", a12
- LOCATE 20, 8: INPUT "Introudzca el valor de a13: ", a13
- LOCATE 20, 8: INPUT "Valor de la primera ecuacion: ", a1
- CLS
- LINE (350, 20)-(350, 600), 1
- LOCATE 12, 8: PRINT "La ecuacion debe tener este formato:"
- LOCATE 14, 8: PRINT "a11 X + a12 Y + a13 Z = A1"
- LOCATE 15, 8: PRINT "a21 X + a22 Y + a23 Z = A2"
- LOCATE 16, 8: PRINT "a31 X + a32 Y + a33 Z = A3"
- LOCATE 20, 8: INPUT "Introudzca el valor de a21: ", a21
- LOCATE 20, 8: INPUT "Introudzca el valor de a22: ", a22
- LOCATE 20, 8: INPUT "Introudzca el valor de a23: ", a23
- LOCATE 20, 8: INPUT "Valor de la segunda ecuacion: ", A2
- CLS
- LINE (350, 20)-(350, 600), 1
- LOCATE 12, 8: PRINT "La ecuacion debe tener este formato:"
- LOCATE 14, 8: PRINT "a11 X + a12 Y + a13 Z = A1"
- LOCATE 15, 8: PRINT "a21 X + a22 Y + a23 Z = A2"
- LOCATE 16, 8: PRINT "a31 X + a32 Y + a33 Z = A3"
- LOCATE 20, 8: INPUT "Introudzca el valor de a31: ", a31
- LOCATE 20, 8: INPUT "Introudzca el valor de a32: ", a32
- LOCATE 20, 8: INPUT "Introudzca el valor de a33: ", a33
- LOCATE 20, 8: INPUT "Valor de la tercera ecuacion: ", A3
- CLS
- LINE (350, 20)-(350, 600), 1
- D = (a11 * a22 * a33) + (a12 * a23 * a31) + (a32 * a21 * a13) - (a13 * a22 * a31) - (a11 * a23 * a32) - (a12 * a21 * a33)
- LINE (350, 20)-(350, 600), 1
- IF D = 0 THEN
- CALL carga
- LOCATE 13, 49: PRINT "El Determinante es 0"
- LOCATE 14, 49: PRINT "No tiene Solucion"
- ELSE
- CALL carga
- LOCATE 13, 47: PRINT "El Determinante es "; D
- X = ((a1 * a22 * a33) + (a13 * A2 * a32) + (a12 * a23 * A3) - (a1 * a32 * a23) - (a12 * A2 * a33) - (a13 * a22 * A3)) / D
- Y = ((a11 * A2 * a33) + (a1 * a23 * a31) + (a13 * a21 * A3) - (a13 * A2 * a31) - (a1 * a21 * a33) - (a11 * a23 * A3)) / D
- 4
- Z = ((a11 * a22 * A3) + (a12 * A2 * a31) + (a1 * a21 * a32) - (a1 * a22 * a31) - (a11 * A2 * a32) - (a12 * a21 * A3)) / D
- LOCATE 15, 49: PRINT "X Equivale a "; X
- LOCATE 16, 49: PRINT "Y Equivale a "; Y
- LOCATE 17, 49: PRINT "Z Equivale a "; Z
- END IF
- END
- END SUB
- '///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- SUB est
- DIM t AS DOUBLE
- DIM I, x(1000), f(1000), Moda, Modaa, Mediana, Desv1, Sumo AS SINGLE
- LINE (350, 20)-(350, 600), 1
- LOCATE 8, 7: INPUT "Introduzca numero total de datos: ", N
- CLS
- LINE (350, 20)-(350, 600), 1
- LOCATE 8, 7: PRINT "Introduzca datos en orden creciente"
- FOR I = 1 TO N
- LOCATE 10, 7: INPUT "Dato= "; x(I)
- LOCATE 11, 7: INPUT "Veces que se repite = "; f(I)
- NEXT I
- Moda = 0
- FOR I = 0 TO N
- IF Modaa < f(I) THEN
- Modaa = f(I)
- Moda = x(I)
- ELSE
- Moda = Moda
- END IF
- NEXT I
- FOR j = 0 TO N
- t = t + x(j) * f(j)
- NEXT j
- FOR l = 0 TO N
- ff = ff + f(l)
- NEXT l
- media = t / ff
- FOR I = 0 TO N
- Sumo = Sumo + (((x(I) - media) ^ 2) * f(I))
- NEXT I
- Desv1 = Sumo / (ff - 1)
- desv2 = Desv1 ^ 0.5
- medianaa = ff / 2
- medianaaa = ff \ 2
- IF medianaa = medianaa THEN
- Mediana = x(medianaa - 1) + 0.5
- ELSE
- Mediana = x(medianaa - 1)
- END IF
- LINE (350, 20)-(350, 600), 1
- CALL carga
- LOCATE 15, 48: PRINT "Total ="; t
- LOCATE 16, 48: PRINT "Moda ="; Moda
- LOCATE 17, 48: PRINT "Media ="; media
- LOCATE 18, 48: PRINT "Mediana ="; Mediana
- LOCATE 19, 48: PRINT "Desviacion ="; desv2
- END
- END SUB
- '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- SUB circl
- DIM PULSADO AS STRING
- DIM Y AS INTEGER
- DIM X AS INTEGER
- 'Al anadir fullscreen cambiamos la resolucion de la ventana sin perder las propiedades de la Screen 12
- 'Declaracion de variables:
- X = 300
- Y = 210
- V = 5
- a$ = DATE$
- day$ = MID$(a$, 4, 2)
- month$ = MID$(a$, 1, 2)
- year$ = MID$(a$, 9, 2)
- 'Portada del programa: (Los prints seguidos se podrían haber puesto en una sola linea
- CLS
- PRINT
- PRINT
- PRINT
- PRINT
- PRINT
- PRINT
- PRINT
- Color 2: PRINT " Puedes mover el circulo con las teclas W A S D"
- PRINT
- Color 2: PRINT " Puedes cambiar la velocidad con las teclas + y -"
- PRINT
- PRINT
- PRINT
- Color 2: PRINT " 1 = AZUL 2 = VERDE 3 = CYAN 4 = ROJO 5 = VIOLETA"
- PRINT
- Color 2: INPUT " De que color quieres tu circulo"; c
- CLS
- SCREEN 0
- SCREEN 12
- 'Codigo para el correcto funcionamiento del los elemento decorativos y el movimiento del circulo:
- CLS
- DO
- LOCATE 25, 13: PRINT "Velocidad = "; V; "Px/s"
- LOCATE 25, 60: PRINT TIME$
- LOCATE 25, 50: PRINT day$; "/"; month$; "/"; year$
- 'El movimiento del circulo no rompe ningun print
- LINE (600, 425)-(40, 60), 15, B
- PULSADO = UCASE$(INKEY$)
- IF PULSADO = "W" AND Y > 115 THEN
- CLS
- Y = Y - V
- ELSEIF PULSADO = "S" AND Y < 425 - 55 THEN
- CLS
- Y = Y + V
- ELSEIF PULSADO = "A" AND X > 95 THEN
- CLS
- X = X - V
- ELSEIF PULSADO = "D" AND X < 600 - 55 THEN
- CLS
- X = X + V
- END IF
- 'El programa no permite el movimiento mas alla de la direccion de cada borde al estar todo definido en multiplos de 5
- IF PULSADO = "+" THEN
- V = V + 5
- ELSEIF PULSADO = "-" THEN
- V = V - 5
- END IF
- 'Si la velocidad no va de 5 en 5 el circulo puede saltarse los bordes
- CIRCLE (X, Y), 50, c
- CIRCLE (X, Y), 51, c
- CIRCLE (X, Y), 52, c
- CIRCLE (X, Y), 53, c
- CIRCLE (X, Y), 54, c
- CIRCLE (X, Y), 55, c
- 'Varios circulos sucesivos crean la ilusion de un circulo mas grueso que da un mejor aspecto al programa
- LOOP UNTIL INKEY$ = "x"
- END
- 'El comando para salir del programa no siempre responde correctamente, aun no se a que se debe, sucede de forma pseudoaleatoria
- END SUB
- SUB carga
- linea = 400
- LINE (linea, 380)-(560, 400), 3, B
- DO
- linea = linea + 1
- LINE (linea, 380)-(560, 400), 3, B
- _Delay 0.005
- LOOP UNTIL linea >= 560
- CLS
- LINE (350, 20)-(350, 600), 1
- END SUB
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement