Revistas en papel
 Amiga World Nº17 - Enero 1991
Anterior
MenĂº
Logotipo

El Amiga Me Encanta ha conseguido el permiso por escrito de IDG Comunications España
para ofrecer los artículos de la revista Amiga World España.

AMIGA BASE

Por Joaquín Gracia Murugarren

Todo el mundo sabe lo que es un Gestor de base de datos y para que sirve pero, si aun hay alguien que no lo sabe, voy a resumirlo en unas pocas palabras.

Un Gestor de base de datos es un programa capaz de manejar diferentes tipos de datos y manipularlos para sacarlos por la impresora, realizar cálculos, etc...

Uno de sus usos más comunes es el de llevar una agenda telefónica, otra utilidad muy conocida es la de tener una lista con todos los programas, etc... Como permite introducir cualquier campo no tiene limitaciones.

Nada mas cargas el programa aparece una pantalla en la que se puede apreciar: La hora, la fecha, a la izquierda un menú con diferentes opciones activables con el ratón, a la derecha en la zona superior, información sobre el banco de datos cargado, en la parte inferior unos interruptores (accionables con el ratón) para la elección del dispositivo de entrada y salida.

Para salir de cualquier pregunta presionar 'Help' y Return.


Menú principal

A continuación voy a describir cada una de las funciones del menú principal "por orden de aparición":

Crear nueva Base de Datos: Como su propio nombre indica sirve para crear la estructura de una Base, me explico, sirve para indicar al ordenador cual es el nombre de la Base, número de campo que contendrá y nombre de estos campos.

Introducir datos: Sirve para introducir datos en una base recién creada o para ampliar los datos de una ya existente. Para salir pulsar la tecla "Help" y luego "Return" cuando pida la introducción del primer campo.

Cargar datos: Antes de elegir esta opción se ha de seleccionar el dispositivo de entrada con los interruptores. Su utilidad como es obvio es la carga de un banco de datos ya existente, para ello introducir el nombre de dicho banco (Sin el indicador de Unidad).

Grabar los datos: Al igual que en la anterior se ha de seleccionar el dispositivo de salida con los interruptores. Para grabar los datos introducir el nombre que se desee (sin el indicador de Unidad) y pulsar "Return".

Ver los datos de la base: Su función es la de poder ver los datos de la base más rápido y eficazmente. Aparecerán en la parte inferior de la pantalla una serie de iconos:

Fecha arriba: Para desplazar la lista una posición hacia arriba.

Flecha abajo: Para desplazar la lista una posición hacia abajo.

Dos flechas arriba: Para desplazar doce posiciones hacia arriba.

Dos flechas abajo: para desplazar doce posiciones hacia abajo.

Barra horizontal con una flecha arriba: Para ir arriba del todo.

Flecha abajo con una barra horizontal: Para ir abajo del todo.

Flecha derecha: Para mover un campo a la derecha.

Flecha izquierda: Para mover un campo a la izquierda.

F I N: Para volver al menú principal.

Borrar un registro: Para borrar un registro hay que introducir el dato que el ordenador pida (Parece un lío pero es muy sencillo) y luego pregunta si se desea borrar, contestar sí.

Buscar un registro: Su utilidad parece estar clara y para emplearla sólo tienes que con el ratón indicar por que campo vas a buscar, y más tarde introducir el dato de ese campo.

Cambiar algún dato: Introduce el dato que te pida el ordenador, más tarde te pedirá el campo que quieres cambiar, introdúcelo y seguidamente el dato.

Utilidades Gráficas y numéricas: Esta opción te llevará a dicho menú.


Menú Gráficos

Como parece evidente en un programa de Amiga no podían faltar los gráficos. En el menú 'gráficos y utilidades' estas son las opciones:

Hoja de estadística: Te mostrará una serie de datos como por ejemplo: El tanto por cien, la moda, la media aritmética, la media cuadrática, etc... Para lo cual sólo tienes que introducir con el ratón el campo que quieras (Si no es un campo que contenga números no funcionará).

Imprimir: Al elegir esta opción la pantalla se divide en dos, si eliges un lado con el ratón u otro dependerá de que tu impresora imprima los datos por fichas o por una lista.

-------: Esta opción no sirve para nada, utilizable por el usuario.

Gráfica lineal: Si eliges un campo con números aparecerá una gráfica correspondiente a dichos números.

Gráfica tipo pastel: En este tipo de gráfica no es necesario que el campo tenga algún dato repetido. El resultado será una gráfica tipo pastel con diferentes tramas y su leyenda correspondiente.

Menú Principal: Esta claro, lleva al menú principal.

'  (C) 1990 AMIGA WORLD - IDG COMMUNICATIONS -
'  (C) 1990 Joaquín Garcia
CLEAR ,60000&,2000:jo$="Joaquin Garcia"
'******************* Amiga Base *******************
'********** Programado por Joaquin Garcia *********
'* Se permite cualquier modificacion siempre que **
'**** se incluyan estas cinco primeras lineas *****
'El caracter  es la tecla "Help"
GOTO inicio
mp:
DATA Crear nueva Base de Datos.
DATA Introducir Datos.
DATA Cargar Datos.
DATA Grabar los Datos.
DATA Ver los Datos de la Base.
DATA Ordenar los datos.
DATA Borrar un registro.
DATA Buscar registros.
DATA Cambiar algún dato.
DATA Utilidades gráficas y numéricas.
gn:
DATA Hoja de estadistica.
DATA Imprimir
DATA ----------
DATA Gráfica lineal.
DATA Gráfica tipo pastel.
DATA "Menú principal."
col:
  PALETTE 2,0,0,0
  FOR t=1 TO 20
  FOR t1=1 TO 5:NEXT
  c1=c1+.005:c2=c2+.0375:PALETTE 1,c2,c2,c2:PALETTE: 0,c1,c1,c1
  c3=c3+.045:c4=c4+.025:PALETTE 3,c3,c4,0
  c5=c5+.04:PALETTE 2,c1,c1,c3
  NEXT
RETURN
col1:
  PALETTE 2,0,0,0
  FOR t=1 TO 20
  for t1=1 TO 5:NEXT
  c1=c1-.005:c2=c2-.0375:PALETTE 1,c2,c2,c2:PALETTE 0,c1,c1,c1
  c3=c3-.045:c4=c4-.025:PALETTE 3,c3,c4,c1
  c5=c5-.04:PALETTE 2,c1,c1,c3
  NEXT
RETURN
tri:
    PSET (x,y),co:LINE -STEP (14,10),co
    LINE -STEP (-28,0),co:LINE -STEP (14,-10),co:PAINT (x,y+3),co
    RETURN
tri1:
    PSET (x,y+6),co:LINE -STEP (14,-10),co
    LINE -STEP (-28,0),co:LINE -STEP (14,10),co:PAINT (x,y+3),co
    RETURN
rect:
    LINE (x,y)-(x+28,y+3),co,bf:RETURN
tri2:
    PSET (x,y),co:LINE -STEP (20,7),co
    LINE -STEP (-20,7),co:LINE -STEP (0,-14),co:PAINT (x+4,y+4),co
    RETURN
tri3:
    PSET (x,y),co:LINE -STEP (-20,7),co
    LINE -STEP (20,7),co:LINE -STEP (0,-14),co:PAINT (x-4,y+4),co
    RETURN
campo:
    CLS
    GOSUB 20
    FOR p=1 to cam
    PRINT  SPC ((79-LEN(cam$(p)))\2);cam$(p)
    NEXT:ct=1
    LINE(0,(cam)*8)-(640,(cam)*8+1),1,bf:PRINT
    PRINT  SPC ((80-LEN(ti$))\2);ti$:PRINT
    PRINT  "              ELIJA EN CAMPO CON EL QUE VA A TRABAJAR"
91  IF MOUSE(0)<>0 THEN c=ct:COLOR 1,0:RETURN
    IF MOUSE(2)>(cam)*8 OR MOUSE(2)<0 THEN 91
    IF ct<>INT(MOUSE(2)\8)+8 THEN
      COLOR 1,0:LOCATE ct,1:PRINT SPC ((79-LEN(cam$(ct)))\2);cam$(ct)
      IF MOUSE(2)<(cam)*8-1 THEN ct=INT(MOUSE(2)\8)+1:COLOR 0,1
      LOCATE ct,1:PRINT SPC ((79-LEN(cam$(ct)))\2; cam$(ct)
    END IF
    GOTO 91
df:
LINE (360,120)-(550,160),0,bf
IF df$="df0:" THEN PUT (400,120),s%:PUT (450,126),p%:PUT (500,126),p%
IF df$="df1:" THEN PUT (400,126),p%:PUT (450,120),s%:PUT (500,126),p%
IF df$)"RAM:" THEN PUT (400,126),p%:PUT (450,126),p%:PUT (500,120),s%
GOSUB 20
RETURN
menu1:
     WINDOW 3,,(343,70)-(621,102),0,1
     INPUT " Esta seguro ? ",sg$
     IF UCASE$(LEFT$(sg$,1))="S" THEN WINDOW CLOSE 3:CLS:MENU RESET:END ELSE WINDOW CLOSE 3:RETURN
RETURN
ON1:
DATA 36 , 24 , 2 , 0 , 0 , 0 , 0 , 7 ,-8192 , 0 , 15
DATA -4096 , 0 , 31 ,-2048 , 0 , 31 ,-2048 , 0 , 31 ,-2048
DATA 0 , 31 ,-2048 , 0 , 15 ,-4096 , 0 , 15 ,-4096 , 0
DATA 7 ,-8192 , 0 , 7 ,-8192 , 0 , 7 ,-8192 , 0 , 3
DATA -16384 , 0 , 3 ,-16384 , 0 , 0 , 0 , 0 , 0 , 0
DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 3 ,-8192
DATA 0 , 7 ,-4096 , 0 , 15 ,-2048 , 0 , 15 ,-2048 , 0
DATA 15 ,-2048 , 0 , 15 ,-2048 , 0 , 23 ,-1024 , 0 , 503
DATA -64 , 0 , 2043 ,-16 , 0 , 8187 ,-4 , 0 , 16379 ,-2
DATA 0 , 16365 ,-1026 , 0 , 32733 ,-513 , 0 , 32767 ,-1 , 0
DATA 32735 ,-513 , 0 , 16367 ,-1026 , 0 , 16382 ,-16386 , 0 , 8191
DATA -4 , 0 , 2047 ,-16 , 0 , 511 ,-64 , 0 , 31 ,-1024
DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
OFF1:
DATA 34 , 24 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0
DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
DATA 7 ,-32768 , 0 , 7 ,-32768 , 0 , 15 ,-16384 , 0 , 15
DATA -16384, 0 , 15 ,-16384 , 0 , 31 ,-8192 , 0 , 31 ,-8192
DATA 0 , 63 ,-4096 , 0 , 63 ,-4096 , 0 , 63 ,-4096 , 0
DATA 63 ,-4096 , 0 , 31 ,-8192 , 0 , 15 ,-16384 , 0 , 0
DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 63 ,-2048
DATA 0 , 1023 ,-128 , 0 , 4095 ,-32 , 0 , 16383 ,-8 , 0
DATA 32765 , 32764 , 0 , 32735 ,-2052 , 0 ,-65 ,-1026 , 0 ,-1
DATA -2 , 0 ,-69 ,-1026 , 0 , 32731 ,-2052 , 0 , 32759 ,-4
DATA 0 , 16375 ,-8 , 0 , 4087 ,-32 , 0 , 1007 ,-128 , 0
DATA 47 ,-2048 , 0 , 31 ,-4096 , 0 , 31 ,-4096 , 0 , 31
DATA -4096 , 0 , 31 ,-4096 , 0 , 15 ,-8192 , 0 , 7 ,-16384
DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
inicio:
jo$="Joaquin Garcia"
SCREEN 1,640,255,2,2
WINDOW 1,"                                  Amiga Base",(0,1)-(631,175),0,1
DIM s%(160),p%(160):RESTORE ON1:
FOR t=0 TO 159:READ s%(t):NEXT
RESTORE OFF1:
FOR t=0 TO 159:READ p%(t):NEXT
MENU 1,0,1,"Salir"
MENU 1,1,1,"Por favor."
MENU 2,0,1,"":MENU 3,0,1,"":MENU 4,0,1,""
ON MENU GOSUB menu1:MENU ON
df$="df0:":RANDOMIZE TIMER:DEFINT op
ON ERROR GOTO derror
DIM g(1):g(0)=6355&:g(1)=6535&
DIM op(3):op(0)=&HFFFF:op(1)=&HFFFF:op(2)=&HFFFF:op(3)=&HFFFF
DIM cam$(10) :num=0:c2=.75:c1=.1:c3=.9:c4=.5:c5=.08
WIDTH 79
PALETTE 1,.75,.75,.75
PALETTE 3,1,.73,0!
PALETTE 2,1,.6,0
PALETTE 0,.1,.1,.1
GOSUB 20
men:
GOSUB col1
CLS:RESTORE mp
FOR t=0 TO 9
 LOCATE 3+t*2,6:READ s$:PRINT  s$
NEXT
x=11:FOR t=1 TO 10
 LINE (35,x)-(325,x+13),3,b:x=x+16
NEXT
GOSUB df
LOCATE 1,70:PRINT DATE$
LOCATE 3,50:PRINT  "NOMBRE:"
LOCATE 3,58:PRINT nombre$
LOCATE 5,50:PRINT  "N DE CAMPOS:"
LOCATE 5,64:PRINT  cam
LOCATE 7,50:PRINT  "N DE REGISTROS:"
LOCATE 7,66:IFF cam>0 THEN PRINT  num ELSE PRINT " 0"
LOCATE 15,51:PRINT  "DF0:  DF1:  RAM:"
FOR t=1 TO LEN (jo$)
LOCATE 4+t,78:PRINT MID$(jo$,t,1)
NEXT
GOSUB col
j:
LOCATE 1,1:PRINT TIME$
j=MOUSE(1):k=MOUSE(2)
IF MOUSE(0)<>0 THEN GOTO j1 :ELSE GOTO J
j1:
IF j>35 AND j<350 THEN j2
IF j>350 AND k>100 THEN j3
GOTO j:
IF j<450 THEN df$="df0:"
IF j>450 AND j<500 THEN df$="df1:"
IF j>500 THEN df$="RAM:"
GOSUB df:
GOTO j
j2:
IF k>12 AND k<25 THEN y=12:GOSUB sc:GOTO Crear
IF k>28 AND k<41 THEN y=28:GOSUB sc:GOTO Introducir
IF k>44 AND k<47 THEN y=44:GOSUB sc:GOTO Cargar
IF k>60 AND k<73 THEN y=60:GOSUB sc:GOTO Cerrar
IF k>74 AND k<89 THEN y=74:GOSUB sc:GOTO Ver
IF k>92 AND k<105 THEN y=92:GOSUB sc:GOTO Ordenar
IF k>108 AND k<121 THEN y=108:GOSUB sc:GOTO Borrar
IF k>124 AND k<137 THEN y=124:GOSUB sc:GOTO Buscar
IF k>140 AND k<153 THEN y=140:GOSUB sc:GOTO Cambiar
IF k>156 AND k<169 THEN y=156:GOSUB ssc:GOTO mengn
GOTO j
sc:
  FOR t=1 TO 27
  SCROLL (0,y-1)-(325,y+14),-13,0
  NEXT
RETURN
Ordenar:
    GOSUB col1:CLS:GOSUB col
    ti$="ORDENACIÓN ALFABETICA"
    IF cam=1 THEN c=1:GOTO mrs3
    GOSUB campo:
    mrs3:
    CLS:LOCATE 12,1:n=num\2+(num/2-num\2)*2:n1=num\2
    PRINT "                                   CALCULANDO..."
    FOR t=n1 TO 0 STEP -1
    FOR t1=1 TO n+t3
    IF UCASE$(ba$(t1,c))>UCASE$(ba$(t1+t,c)) THEN GOSUB inter
    NEXT:t3=t3+1:NEXT:t3=0
    GOSUB 20
GOTO men
    inter:
    FOR c7=1 TO cam
    SWAP ba$(t1,c7),ba$(t1+t,c7)
    NEXT:RETURN
Ver:
    GOSUB col1:CLS:GOSUB col
    WINDOW 3,,(0,128)-(631,179),0,1
    PALETTE 2,.6,.47,.13
    PALETTE 3,.53,.33,.0!
    PAINT (1,1),2
    x=45:y=13:co=3:GOSUB tri:y=43:GOSUB tri1
    x=146:y=4:GOSUB tri:y=42:GOSUB tri1
    y=14:GOSUB tri:y=52:GOSUB tri1:
    y=7:x=233:GOSUB rect:y=49:GOSUB rect
    y=11:x=247:GOSUB tri:y=43:GOSUB tri1
    y=7:x=380:GOSUB tri2:x=327:GOSUB tri3
    LOCATE 6,73:COLOR 3,2 :PRINT  "F I N"
    LINE (562,25)-(631,60),3,b
   IF opp=0 THEN
   cv=1:pv=1:opp=1
   END IF
   vv:
    WINDOW OUTPUT 1
    FOR t=pv TO pv+12
     PRINT ba$(t,cv)
    NEXT t:GOSUB 30
    WINDOW OUTPUT 3:LOCATE 6,41 :PRINT  UCASE$(cam$(cv)):WINDOW OUTPUT 1
re:
   IF MOUSE(0)=0 THEN re
      x=MOUSE(1):y=MOUSE(2)
      IF x<100 AND y<30 AND num>12 AND pv>1 THEN pv=pv-1
      IF x<100 AND y>30 AND num>12 AND pv<(num-12) THEN pv=pv+1
      IF x>100 AND x<200 AND y>30 AND num>12 AND pv<=(num-22) THEN pv=pv+10
      IF x>100 AND x<200 AND y<30 AND num>12 AND pv=>10 THEN pv=pv-10
      IF x>200 AND x<300 AND y<30 AND num>12 THEN pv=1
      IF x>200 AND x<300 AND y>30 AND num>12 THEN pv=num-12
      IF x>300 AND x<380 AND y<30 AND cv>1 THEN cv=cv-1:WINDOW 
OUTPUT 3:LOCATE 6,41:PRINT                           ":LOCATE
6,41:PRINT UCASE$(cam$(cv)):WINDOW OUTPUT 1
      IF x>380 AND y<30 AND cv<cam THEN cv=cv+1:WINDOW OUTPUT
3:LOCATE 6,41:PRINT "                         ":LOCATE 6,41:PRINT
UCASE$(cam$(cv)):WINDOW OUTPUT 1
      IF x>562 AND y>25 THEN f
    CLS:FOR t=pv TO pv+12
      PRINT ba$(t,cv)
    NEXT t
    IF MOUSE(0)=0 THEN GOTO re
    GOTO re
   f:
    GOSUB 30
    WINDOW CLOSE 3
    WINDOW OUTPUT 1
GOTO men:
Buscar:
    GOSUB col1:qw=1:CLS:GOSUB col
    DIM mw$(num),mw(num)
    ti$="BUSQUEDA DE REGISTROS"
    IF cam=1 THEN c=1:GOTO mrs
    GOSUB campo:
    mrs:
    CLS
    PRINT " Cu 1 es el "cam$(c);:INPUT "";do$
    IF do$="" THEN GOSUB 20:GOTO men
    WHILE (po<>num)
     po=po+1
     IF UCASE$(ba$(po,c))=UCASE(do$) THEN pw=pw+1:mw(pw)=po
    WEND
    FOR t1=1 TO pw
    FOR t2=1 TO cam
    PRINT UCASE$(cam$(t2));": ";ba$(mw(t1),t2)
    NEXT:jw=0:PRINT :NEXT
    po=0:ERASE mw,mw$:pw=0
    GOSUB 10:GOTO men
Cambiar:
    GOSUB col1:qw=1:CLS:GOSUB col
    vb1:
    PRINT "Introduce "UCASE$(cam$(1))" del registro a cambiar":INPUT "",c$
    IF c$="" THEN GOSUB 20:GOTO men
    FOR t=1 TO num
    IF UCASE$(ba$(t,1))=UCASE$(c$) THEN c=t:fl=1
    NEXT:IF fl=0 THEN PRINT "No existe ese "cam$(1):GOTO vb1 ELSE fl=0
    PRINT "Este es el registro que va a cambiar."
    FOR t=1 TO cam
    PRINT UCASE$(cam$(t));" ";ba$(c,c)
    NEXT
    INPUT"Introduce el campo que vas a cambiar";c$
    IF c$="" THEN GOSUB 20:GOTO men
    FOR t=1 TO cam
    IF UCASE$(cam$(t))=UCASE(c$) THEN cf=t
    NEXT
    PRINT  UCASE$(cam$(cf)):INPUT "",ba$(c,cf)
    jw=0
    GOSUB 20
GOTO men
Borrar:
    GOSUB col1:qw=1:CLS:GOSUB col
    vb:
    PRINT "Introduce "UCASE$(cam$(1))" del registro a borrar":INPUT "",c$
    IF c$="" THEN GOSUB 20:GOTO men
    FOR t=1 TO num
    IF UCASE$(ba(t,1))=UCASE(c$) THEN c=t:fl=1
    NEXT:IF fl=0 THEN PRINT "No existe ese "cam$(1):GOTO vb ELSE fl=0
    PRINT "Este es el registro que va a borrar."
    FOR t=1 TO cam
    PRINT UCASE$(cam$(t));" ";ba$(c,t)
    NEXT
    INPUT "Está seguro de que lo quiere borrar ";sn$:sn$=UCASE$(sn$)
    IF sn$<>"SI" AND sn$<>"S" THEN GOSUB 10:GOTO men
    FOR t=c TO num
    FOR t1=1 TO cam
    ba$(t,t1)=ba$(t+1,t1)
    NEXt:NEXT
    num=num-1
    GOSUB 20:GOTO men
Crear:
    IF qw>0 THEN GOTO j
    GOSUB col1:qw=1:CLS:GOSUB col
    INPUT"Nombre de la Base de Datos ",nombre$
    IF nombre$="" THEN GOSUB 20:GOTO men
    INPUT" Cuántos campos va a tener ";cam$
    cam=VAL(cam$):ERASE cam$:DIM cam$(cam)
    FOR t=1 TO cam
    PRINT "Nombre del campo ";t;:INPUT"",cam$(t)
    NEXT
    DIM ba$(300,cam)
    PRINT "Base de Datos "nombre$" creada."
    GOSUB 20
GOTO men
Cerrar:
    WINDOW 3,,(0,50)-(631,150),0,1
    PRINT "Unidad:" df$
    INPUT "Con qué nombre va a grabar los datos ?",nombre$
    IF nombre$="" THEN GOSUB 20:WINDOW CLOSE 3:GOTO men
    OPEN df$+nombre$+".bd" FOR OUTPUT AS 1
    WRITE #1,cam
    FOR t=1 TO cam :WRITE #1, cam$(t):NEXT
    WRITE #1,num
    FOR t=1 TO num
    FOR t1=1 TO cam
    WRITE #1,ba$(t,t1)
    NEXT:NEXT
    CLOSE #1:WINDOW CLOSE 3
    GOSUB 30
GOTO men
Cargar:
    IF qw=1 THEN GOTO j
    qw=1
    WINDOW 3,,(343,70)-(621,102),0,1
    WIDTH 34
    PRINT "Cargar una base de datos"
    PRINT "Unidad "df$
    LOCATE 3,1
48  INPUT "Nombre: ",nombre$
    IF nombre$="" THEN
        nombre$="":GOSUB 20:WINDOW OUTPUT 1
        qw=0
        WIDTH 79:GOTO men
    END IF
    OPEN df$+nombre$+",bd" FOR INPUT AS 1
    INPUT #1,cam
    FOR t=1 TO cam :INPUT #1,cam$(t):NEXT
    INPUT #1,num:DIM ba$(400,cam)
    FOR t=1 TO num
    FOR t1=1 TO cam
    INPUT #1,ba$(t,t1)
    NEXT:NEXT
    CLOSE #1
    GOSUB 30
    FOR t=1 TO 20
    SCROLL (0,0)-(631,50),3,4
    NEXT:COLOR 1,0
    WINDOW CLOSE 3:WIDTH 79
GOTO men
Introducir:
    IF qw=0 THEN j
    GOSUB col1:CLS:GOSUB col
    WHILE (XZ=0)
    PRINT "Registro número "num+1
    FOR t=1 TO cam
    PRINT UCASE$(cam$(t)):INPUT " ",dato$
    IF UCASE$(dato$)="" AND t=1 THEN xz=1:GOTO 13
    ba$(num+1,t)=dato$
    NEXT t:CLS:num=num+1
13  WEND
    xz=0
68  IF MOUSE(0)<>0 then 68
    GOTO men:
mengn:
    GOSUB col1
    CLS
    RESTORE gn
     FOR t=2 TO 7
      LOCATE 3+t*2,22
      READ s$
      PRINT  s$
     NEXT
     x=44:FOR t=1 TO 6
      LINE (160,x)-(405,x+13),3,b
      x=x+16
     NEXT:RESTORE mp
    GOSUB col
j9:
j=MOUSE(1):k=MOUSE(2)
IF MOUSE(0)=0 THEN GOTO j9 :ELSE: IF j<150 OR j>405 THEN j9
IF k>44 AND k<57 THEN x=44:GOSUB sc1:GOTO esta
IF k>60 AND k<73 THEN x=60:GOSUB sc1:GOTO Imprimir
IF k>76 AND k<89 THEN x=76:GOSUB sc1
IF k>92 AND k<105 THEN x=92:GOSUB sc1:GOTO Gl
IF k>108 AND k<121 THEN x=108:GOSUB sc1:GOTO Gp
IF k>124 AND k<137 THEN x=123:GOSUB sc1:GOSUB 30:GOTO men
GOTO j9
sc1:
  FOR t=0 TO 39
  SCROLL (160,x)-(640,x+14),13,0
  NEXT
RETURN
esta:
    GOSUB col1:CLS:GOSUB col1:
    DIM fa((num)+90,2):fa((num)+2,2)=9999999999#:tanto=num*100
    fa(1,2)=-9999999999#:fa(1,1)=0:ma=1:ma1=1:me=(num)+2
    IF cam=1 THEN c=1:PRINT :PRINT "                           CALCULANDO ...":GOTO ew1
    ti$="HOJA DE ESTADISTICA"
    GOSUB campo
    CLS:PRINT :PRINT "                              CALCULANDO..."
    ew1:
    WHILE (po<>num)
     po=po+1
     dato=VAL(ba$(po,c))
     fa(po,2)=dato
     sum=sum+dato
     sum1=sum1+dato^2
    WEND
     FOR t1=1 TO po
     FoR t=1 TO po
     IF fa(t1,2)=fa(t,2) THEN fa(t1,1)=fa(t1,1)+1
     NEXT:NEXT
     CLS
    LOCATE 3,50:PRINT "Suma: "sum
    LOCATE 5,50:PRINT "Media aritmetica: "sum/(num)
    LOCATE 7,50:PRINT "Media cuadratica: "SQR(sum1)
    FOR t=1 TO p
    IF fa(t,1)>fa(ma,1) THEN ma=t
    IF fa(t,2)>fa(ma1,2) THEN ma1=t
    IF fa(t,2)<fa(me,2) THEN me=t
    NEXT
    LOCATE 9,50:PRINT "Moda:  "fa(ma,2)
    LOCATE 11,50:PRINT "Recorrido: "fa(ma1,2)-fa(me,2)
    WINDOW 5,"F.Relativa-Dato-F.Absoluta",(65,39)-(288,183),0,1
    FOR t=1 TO po
    FOR t1=t+1 TO po
    IF fa(t,2)=fa(t1,2) THEN k=1
    NEXT
    IF k=1 THEN k=0:GOTO 418
    bd=bd+1
    fa$=STR$(fa(t,1)\tanto)+SPACE$(10-LEN(STR$(fa(t,1)\tanto)))
    fa1$=STR$(fa(t,2))+SPACE$(6-LEN(STR$(fa(t,2))))
    fa2$)STR$(fa(t,1))+SPCAE$(10-LEN(STR$(fa(t,1))))
    PRINT fa$" "fa1$" "fa2$
    IF bd/16=INT(bd/16) THEN bd=0:PRINT "-----ESPACIO-----";GOSUB 10:CLS
418 NEXT
    PRINT " -----FIN-----"
    GOSUB 20
    WHILE (MOUSE(0)=0):WEND
    bd=0
    WINDOW CLOSE 5
    po=0
    ERASE fa:sum=0:sum1=0
GOTO mengn
Gp:
    GOSUB col1:CLS:GOSUB col:k=0:po=0:tg=3:x3=1
    PALETTE 2,.4,.5,1:n6=0
    DIM fe$(num+5),fe(num+5)
    IF cam=1 THEN c=1:PRINT :PRINT "               CALCULANDO ...":GOTO ew3
    ti$=GRAFICA PASTEL"
    GOSUB campo
    CLS:PRINT :PRINT "                                  CALCULANDO..."
    ew3:
    WHILE (po<>num)
     po=po+1:fe$(po)=ba$(po,c)
    WEND
    pi=3.141592
    WINDOW 4,"Leyenda",(12,15)-(240,191),0,1:WINDOW OUTPUT 1
    CIRCLE (430,100),150,1,,,.5
     FOR t1=1 TO po
     FOR t=1 TO po
     IF fe$(t1)=fe$(t) THEN fe(t1)=fe(t1)+1
     NEXT:NEXT
    FOR t=1 TO po
    FOR t1=t+1 TO po
    IF fe$(t)=fe$(t1) THEN k=1
    NEXT
    IF k=1 THEN k=0:GOTO 563
    n6=n6+(2*pi-(fe(t)/(num)*(pi*2)))
    y6=COS(n6)*75:x6=SIN(n6)*150
    LINE (430,100)-(x6+430,y6+100),1
563 NEXT:n5=.0174532
    FOR t=1 TO po
    FOR t1=t+1  TO po
    IF fe$(t)=fe$t1) THEN k=1
    NEXT:LOCATE 2,31:PRINT "                         "
    IF k=1 THEN k=0:GOTO 564
    n5=n5+(2*pi-(fe(t)/(num)*(pi*2))):xd=xd+1:d=INT(RND*60000&)
    y4=COS(n5)*74:g(0)=INT(RND*10000):g(1)=INT(RND*20000)
    x4=SIN(n5)*148:PATTERN d,g
    WINDOW OUTPUT 4:PATTERN d,g
    IF xd=21 THEN PRINT " ----ESPACIO----":GOSUB 10:CLS:xd=1
    LINE (0,(xd-1)*8)-(24,((xd-1)*8)+8),tg,bf:y2=y2+16
    LOCATE xd,x3+3:PRINT (fe(t)/(num)*100)"% " fe$(t)
    WINDOW OUTPUT 1
    PAINT (x4+430,y4+100),tg,1:IF tg=3 THEN tg=2 ELSE tg=3
564 NEXT:p=0
    WINDOW OUTPUT 4
    PRINT " -----FIN-----"
    GOSUB 20
    WHILE (MOUSE(0)=0):WEND
    WINDOW CLOSE 4:xd=0
    CLS
    PATTERN -1,op
    po=0
    ERASE fe,fe$:sum=0:sum1=0
    n=0:GOSUB 20:GOTO mengn
Gl:
    GOSUB col1:CLS:GOSUB col
    IF cam=1 THEN c=1:GOTO ew
    ti$="GRAFICA LINIAL"
    GOSUB campo:CLS
    ew:
    mayor=1
    WHILE (po<>num)
     po=po+1
     er=VAL(ba$(po,c))
     IF er>mayor THEN mayor=er
    WEND:po=0
    alt=75/mayor
    an=600/(num)
    PALETTE 2,.6,.6,.6
    LINE (0,40)-(640,130),2,bf
    WHILE (po<>num)
     po=po+1:er=VAL(ba$(po,c)):er=er*alt
     IF po=1 THEN er1=er:GOTO y
     LINE (an*(po-1)-23,120,er1)-(an*(po)-23,120-er),3
     y:
      er1=er
     WBND:po=0:er=0:er1=0:PATTERN -1,op
GOSUB 20
WHILE (MOUSE(0)=0):WEND
GOSUB 20
GOTO mengn
Imprimir:
    GOSUB col1:CLS:GOSUB col:GOSUB 30
    PRINT  "IMPRIMIR"
    LOCATE 10,15:PRINT  "Por fichas":LOCATE 10,55:PRINT  "Por lista"
    LINE (320,0)-(320,200),3
    mou:
    IF MOUSE(0)=0 THEN mou
    IF MOUSE(1)<320 THEN
        OPEN "PRT:" FOR OUTPUT AS 2
        CLS:PRINT "                        ESC para parar la impresión"
        FOR t1=1 TO num
        FOR t1=0 TO 1000:NEXT
        FOR t=1 TO cam
        IF  INKEY$=CHR$(27) THEN PRINT #2,CHR$(27)"c":t1=num
        PRINT #2,CHR$(27)+"[4m"+UCASE$(cam$(t))+CHR$(27)+"[24m"+": "+ba$(t1,t)
        NEXT:PRINT #2,"":NEXT
94      CLOSE 2
        END IF
    IF MOUSE(1)>320               THEN
        OPEN "PRT:" FOR OUTPUT AS 2
        CLS:PRINT "                        ESC para parar la impresión"
        PRINT #2,CHR$(27)+"E"
        FOR t=1 TO cam
        im1$=cam$(t)+SPCAE$((73/cam)-LEN(cam$(t)))
        PRINT #2,UCASE$(im1$);
        NEXT:PRINT #2,CHR$(27)+"E"+"------------------------------------"
        FOR t=1 TO num
        FOR t1=1 TO cam
        IF  INKEY$=CHR$(27) THEN PRINT #2,CHR$(27)"c":t1=num
        IF LEN(ba$(t,t1))<(73/cam) THEN esp=73/cam-LEN(ba$(t,t1))
ELSE esp=1
        im1$=LEFT$(ba$(t,t1),(73/cam)-1)+SPACE$(esp)
        PRINT #2,im1$;
        NEXT:PRINT #2,"":NEXT
94      CLOSE 2
        END IF
GOSUB 30
GOTO mengn
10 IF INKEY$="" THEN 10
20 IF MOUSE(0)<>0 THEN 20
30 IF MOUSE(0)<>0 THEN 30
RETURN
derror:
    IF (ERR=53) AND (ERL=48) THEN
      color 3,0:BEEP:PRINT "Ese fichero no se encuentra en el disco."
      PRINT :FILES df$:COLOR 1,0
      RESUME 48
    END IF
    IF (ERR=57)THEN
      PRINT "La impresora no esta ON LINE"
      GOSUB 10
      RESUME 94
    END IF
    IF (ERR=70) THEN
      COLOR 3,0:BEEP:PRINT :PRINT"El disco que se encuentra en la unidad "df$" esta protegido"
      PRINT "contra la escritura."
      PRINT :PRINT "Si este es su disco de trabajo desprotejalo y pulse la barra espaciadora."
      GOSUB 10
      COLOR 1,0:RESUME
    END IF



Envía esta página web a un amigo:
Esta opción está desactivada temporalmente, rogamos disculpen las molestias

Volver a la página anterior

Al menú principal