sábado, 25 de octubre de 2008

abrearchivo

'Abre el archivo que le pasamos como par metro y le asigna un descriptor
'usado FREEFILE que devuelve el pr¢ximo disponible.
'
SUB AbreArchivo (archivo$)

DIM registro AS tipopersona
OPEN archivo$ FOR RANDOM AS FREEFILE LEN = LEN(registro)

END SUB

Compacta.bas

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...        
'
'______________________________________________________________________
'         
SUB Compacta
   DIM registro AS tipopersona
   numregS = (LOF(1) / LEN(registro)) 'Calculamos cuantos registros hay

   AbreArchivo "Agenda.tmp" 'Creamos archivo temporal para ir copiando
                            'registros si no est n borrados y quedarnos
                            'solo con los que sirven.
   CLS
   PRINT , "COMPACTAR BASE DE DATOS"
   PRINT
   PRINT "Compactando..."
   PRINT

   n1 = 1 'Contador para recorrer archivo original
   n2 = 1 'Contador para recorrer archivo nuevo
   WHILE n1 <= numregS
      GET #1, n1, registro

      IF registro.nombre <> SPACE$(LEN(registro.nombre)) OR registro.direccion <> SPACE$(LEN(registro.direccion)) OR registro.telefono <> SPACE$(LEN(registro.telefono)) OR registro.edad <> -1 THEN
         'Si el registro no est  vac¡o lo copiamos al nuevo fichero
         PUT #2, n2, registro
         n2 = n2 + 1  'Y aumentamos su contador
      END IF
      n1 = n1 + 1 'aumentamos el contador del fichero original siempre
   WEND
                                         
   CLOSE 'Cerramos LOS DOS archivos

   KILL "Agenda.dat" 'Borramos el archivo viejo
   NAME "Agenda.tmp" AS "Agenda.dat"'Renombramos el temporal como "Agenda.dat"
  
   AbreArchivo "Agenda.dat" 'Abrimos para seguir normalmente con el programa

   'ahora sacamos un mensaje para terminar
   PRINT
   PRINT "La base de datos ha sido compactada"
   SLEEP
END SUB

Segundo Programa PintaMenu.bas


'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...       OYM DOMINICANA
'
'______________________________________________________________________
'         
'Dibuja en la pantalla el t¡tulo del programa y las opciones del men£
'
SUB PintaMenu

CLS
PRINT
PRINT , , "* * * * * * * * * * * *"
PRINT , , "* AGENDA ESTUDIANTE   *"
PRINT , , "*                     *"
PRINT , , "* INSTRUCTIVO O&M     *"
PRINT , , "* * * * * * * * * * * *"
PRINT
PRINT
PRINT , "A ... A¤adir nueva persona"
PRINT , "B ... Borrar persona"
PRINT , "M ... Modificar persona"
PRINT
PRINT , "N ... Buscar persona por nombre"
PRINT , "D ... Buscar persona por direcci¢n"
PRINT , "T ... Buscar persona por tel‚fono"
PRINT , "E ... Buscar persona por edad"
PRINT
PRINT , "L ... Ver listado de personas"
PRINT
PRINT , "C ... Compactar base de datos"
PRINT
PRINT , "S ... Salir"


END SUB

Primer Programa del Menu Agenda.bas QBasic

'
'  © PROGRAMA HECHO PARA PARTE INSTRUCTIVA
'
'
'  Procedente de...        UNIVERSIDAD O&M DOMINICANA
'
'______________________________________________________________________
'         
DECLARE SUB Compacta ()
DECLARE SUB AbreArchivo (archivo$)
DECLARE SUB Modifica ()
DECLARE SUB Listado ()
DECLARE SUB BuscaDireccion ()
DECLARE SUB BuscaTelefono ()
DECLARE SUB BuscaEdad ()
DECLARE SUB Borra ()
DECLARE SUB Nuevo ()
DECLARE SUB BuscaNombre ()
DECLARE SUB PintaMenu ()

TYPE tipopersona
   nombre AS STRING * 20
   direccion AS STRING * 30
   telefono AS STRING * 9
   edad AS INTEGER
END TYPE


AbreArchivo "Agenda.dat"

DO
   PintaMenu
   WHILE INKEY$ <> "": WEND 'Para limpiar INKEY$
   DO
      tecla$ = UCASE$(INKEY$)'Transforma a may£sculas para evitar confusiones
   LOOP WHILE tecla$ = ""    'Espera activa mientras no pulsemos una tecla

   SELECT CASE tecla$
      CASE "A": Nuevo
      CASE "B": Borra
      CASE "M": Modifica
      CASE "N": BuscaNombre
      CASE "D": BuscaDireccion
      CASE "T": BuscaTelefono
      CASE "E": BuscaEdad
      CASE "L": Listado
      CASE "C": Compacta
      CASE "S"  'Aqui no hacemos nada poque ya vamos a salir del bucle
      CASE ELSE: BEEP 'Toque de timbre si puls¢ tecla no v lida
   END SELECT
LOOP UNTIL tecla$ = "S"

CLOSE #1

sábado, 18 de octubre de 2008

Manual QBasic

http://nutriserver.com/Cursos/Informatica_Aplicada/QBASIC/QBASIC_IMC.html

sábado, 4 de octubre de 2008

Ejecicios

Para los siguientes problemas, determine los objetos conocidos, desconocidos, las condiciones y el tipo de problema. Para aquellos problemas algorítmicos desarrolle adicionalmente un algoritmo que permita encontrar una solución.

1. Se tienen dos jarras (A y B) de capacidades 3 y 7 litros respectivamente, sobre las cuales se pueden efectuar las siguientes acciones: Llenar totalmente cualquiera de las dos jarras, vaciar una de las dos jarras en la otra hasta que la jarra origen este vacía o hasta que la jarra destino este llena y vaciar el contenido de una jarra (este llena o no) en un sifón. ¿Cómo se puede dejar en la jarra A un solo litro utilizando solamente las anteriores acciones?.

2. Es cierta o no es cierta la siguiente frase: “Esta frase no es cierta”.

3. Si Juan tiene el doble de la edad de Pedro y la suma de las edades de los dos es 33 años, ¿Cuántos años tiene Juan y cuántos tiene Pedro?.

4. ¿Qué figura se forma al unir los puntos marcados con números consecutivos con una línea?

5. Calcular de manera exacta el número de átomos del universo.

6. Calcular el costo de una serie de productos comprados en el supermercado.

7. Determinar quien es el mejor jugador de fútbol de toda la historia.

8. Construir un barco de papel.

EJERCICIOS DE ALGORITMOS

EJERCICIOS DE ALGORITMOS

Para los siguientes problemas dar un algoritmo y si es posible una ejecución del mismo.

1. Buscar en el directorio telefónico, el número de:

a. José González Pérez
b. Pedro Gómez Bernal.
c. Escribir un algoritmo que sirva para buscar a cualquier persona.

2. Calcular el número de días entre las fechas:

a. Enero 17 de 1972 y Julio 20 de 1973
b. Febrero 2 de 1948 y Agosto 11 de 1966
c. Escribir un algoritmo que sirva para calcular la cantidad de días entre cualquier dos fechas.

3. Solicitar en préstamo algún libro de una biblioteca.

4. haga una caja de cartón con tapa de:

a. 20 cm de largo, por 10 cm de ancho y 5 cm de alto.
b. 10 cm de largo, por 30 cm de ancho y 15 cm de alto.
c. Escribir un algoritmo que sirva para construir una caja de cartón con tapa de cualquier tamaño.

5. Construir un avión de papel.

6. Calcular manualmente la división de cualquier par de números naturales. El resultado también debe ser un número natural. Escribir un algoritmo para calcular el residuo de la división.

7. Un juego muy famoso entre dos niños es el de adivina mi número,el cual consiste en que cada niño trata de adivinar el número pensado por el otro niño. Dicho número generalmente está entre 1 y 100. Las reglas del juego son las siguientes:

a. Cada niño posee un turno en el que trata de averiguar el número del otro.
b. En su turno el primer niño pregunta si un número que dice es el pensado por el segundo.
c. Si el número que ha dicho el primer niño es el que pensó el segundo, este último debe informarle al primero que ganó.
d. Si el número no es el segundo niño debe decir si su número pensado es menor o mayor al que el primer niño dijo.
e. Luego el segundo niño tiene su turno y de esta manera se van intercalando hasta que alguno de los dos gane.Desarrollar un algoritmo para jugar adivina mi número.

8. Una balanza se encuentra en equilibrio cuando el producto de la carga aplicada sobre el brazo derecho por la longitud de este brazo, es igual al producto de la carga aplicada sobre el brazo izquierdo por la longitud de este otro brazo. Determinar si la balanza se encuentra en equilibrio si:

a. La longitud del brazo izquierdo es3 m, la del derecho es 2 m, la carga aplicada al brazo izquierdo es 5 Kg y la carga aplicada al derecho es 7 Kg.
b. La longitud del brazo izquierdo es4 m, la del derecho es 2 m, la carga aplicada al brazo izquierdo es 4 Kg y la carga aplicada al derecho es 4 Kg.
c. Desarrollar un algoritmo que sirva para cualquier conjunto de valores para las longitudes de los brazos y las cargas aplicadas.