Pseudocódigo - Organización Aleatoria y Secuencial

--------------------------------------------------------------------------
Organización Aleatoria y Secuencial
--------------------------------------------------------------------------

49.-Hacer un pseudocodigo que nos permita dar altas en el fichero DATOS.DAT de organización directa, controlando las altas duplicadas. 

Los campos son:DNI, NOMBRE, APELLIDOS Y PUNTERO para ambos archivos.

Algoritmo( dn ) =


  • Blanco: grabamos el registro en esa posición y ponemos el puntero a cero.
  •  Cero: comprobamos cu l es el valor del campo puntero. 
  • Si es cero, grabamos el registro en esa posición (no hay sinónimos) y si es distinto de cero, comparamos el valor con el campo DNI, si son iguales, alta duplicada y dejamos de leer, y si no son iguales, introducimos el resto de la información.
  • Distinto de cero: hay un registro grabado en esa posición. 
  • Si es igual al dato introducido, alta duplicada, y si no son iguales, comprobamos el valor del puntero, si es cero grabamos el registro, y si no es cero, si es igual al campo DNI, alta duplicada y sino se graba la información en el archivo SINONIMOS.DAT.

------------------------------

PROGRAMA altas
ENTORNO:
   res <- "S"
ALGORITMO:
   ABRIR "DATOS.DAT"
   ABRIR "SINONIMOS.DAT"
   MIENTRAS res = "S" HACER
      dn <- 0
      nom <- Espacios( 15 )
      ape <- Espacios( 30 )
      dir <- Espacios( 35 )
      aux <- Espacios( 2 )
      hueco <- Espacios( 2 )
      swh <- 0
      sw <- 0
      num <- 0
      donde <- 0
      i <- 0
      Borrar_pantalla( )
      EN 10,20 ESCRIBIR "D.N.I.: "
      EN 10,29 LEER dn
      num <- Algoritmo( dn )
      SELECCIONAR "DATOS.DAT"
      LEER num
      SI dni = Str( dn ) ENTONCES
         HACER Alta_duplicada
      SINO
         SI Val( dni ) = 0 O dni = Espacios( ) ENTONCES
            swh <- 1
         FINSI
         SI Val( puntero ) = 0 O puntero = Espacios( ) ENTONCES
            HACER Introducir
            puntero <- Str( 0 )
            GRABAR num
         SINO
            HACER Buscar
            SI sw = 0 ENTONCES
               HACER Introducir
               SI swh = 1 ENTONCES
                  GRABAR num
               SINO
                  HACER Encontrar_sitio
                  SELECCIONAR "SINONIMOS.DAT"
                  GRABAR 1
                  puntero <- Str( donde )
                  SI i = 0 ENTONCES
                     SELECCIONAR "DATOS.DAT"
                     GRABAR num
                  SINO
                     SELECCIONAR "SINONIMOS.DAT"
                     GRABAR Val( aux )
                  FINSI
                  puntero <- Str( 0 )
                  SELECCIONAR "SINONIMOS.DAT"
                  GRABAR donde
               FINSI
            SINO
               HACER Alta_duplicada( )
            FINSI
         FINSI
      FINSI
      HACER Mas
   FINMIENTRAS
   Cerrar_ficheros( )
FINPROGRAMA
------------------------------
SUBPROGRAMA Introducir
   EN 12,20 ESCRIBIR "Nombre: "
   EN 14,20 ESCRIBIR "Apellidos: "
   EN 16,20 ESCRIBIR "Direcci¢n: "
   EN 12,29 LEER nom
   EN 14,32 LEER ape
   EN 16,32 LEER dir
FINSUBPROGRAMA
------------------------------
SUBPROGRAMA Encontrar_sitio
   SELECCIONAR "SINONIMOS.DAT"
   LEER 1
   SI Val( nombre ) <> 0 Y nombre <> Espacios( ) ENTONCES
      donde <- Val( nombre )
      LEER donde
      hueco <- Val( nombre )
      nombre <- Str( hueco )
   SINO
      donde <- Val( dni ) + 1
      dni <- Str( donde )
   FINSI
FINSUBPROGRAMA
------------------------------
SUBPROGRAMA Buscar
   aux <- puntero
   i <- 0
   MIENTRAS Val( puntero ) <> 0 Y sw = 0 HACER
      SELECCIONAR "SINONIMOS.DAT"
      LEER Val( puntero )
      SI dni = Str( dn ) ENTONCES
         EN 20,10 ESCRIBIR "Alta duplicada"
         Pausa( )
         sw <- 1
      SINO
         SI Val( puntero ) <> 0 ENTONCES
            i <- i + 1
            aux <- puntero
         FINSI
      FINSI
   FINMIENTRAS
FINSUBPROGRAMA
------------------------------
SUBPROGRAMA Alta_duplicada
   EN 20,10 ESCRIBIR "Alta duplicada"
   Pausa( )
FINSUBPROGRAMA

--------------------------------------------------------------------------

50.- Tenemos el fichero DATOS.DAT, que est  indexado por el campo APELLIDOS,
cuyos campos son: DNI, NOMBRE, APELLIDOS, DIRECCION y PROVINCIA. Hacer un programa que nos permita listar por pantalla todos los registros del fichero, controlando el salto de p gina cuando llegue a la línea veinte.

PROGRAMA listar
ENTORNO:
   fi <- 22
ALGORITMO:
   ABRIR "DATOS.DAT" INDICE "APELLIDO"
   MIENTRAS NO Eof( ) HACER
      SI fi = 22 ENTONCES
         HACER Cabecera
      FINSI
      EN fi,2 ESCRIBIR dni
      EN fi,12 ESCRIBIR nombre
      EN fi,28 ESCRIBIR apellidos
      EN fi,55 ESCRIBIR direccion
      EN fi,69 ESCRIBIR provincia
      fi <- fi + 1
      SI fi = 20 ENTONCES
         EN 22,20 ESCRIBIR "Pulse INTRO para continuar"
         Pausa( )
         fi <- 22
      FINSI
      Siguiente_registro( )
   FINMIENTRAS
   CERRAR "DATOS.DAT"
   Cerrar_indices( )
FINPROGRAMA
------------------------------
SUBPROGRAMA Cabecera
   Borrar_pantalla( )
   EN 3,4 ESCRIBIR "D.N.I."
   EN 3,20 ESCRIBIR "NOMBRE"
   EN 3,35 ESCRIBIR "APELLIDOS"
   EN 3,60 ESCRIBIR "DIRECCION"
   EN 3,70 ESCRIBIR "PROVINCIA"
   fi <- 5
FINSUBPROGRAMA

--------------------------------------------------------------------------

52.- Tenemos el fichero DATOS.DAT con la misma estructura anterior, que esta 
indexado por el campo DNI. Crear un programa que nos permita consultar un
registro siempre que queramos.

PROGRAMA consulta
ENTORNO:
   res <- "S"
ALGORITMO:
   ABRIR "DATOS.DAT" INDICE "DNI"
   MIENTRAS res = "S" HACER
      num <- 0
      Borrar_pantalla( )
      EN 8,20 ESCRIBIR "D.N.I. a buscar: "
      EN 8,38 LEER num
      BUSCAR num
      SI Encontrado( ) ENTONCES
         EN 10,12 ESCRIBIR "Nombre: ", nombre
         EN 12,28 ESCRIBIR "Apellidos: ", apellidos
         EN 14,55 ESCRIBIR "Direcci¢n: ", direccion
         EN 16,69 ESCRIBIR "Provincia: ", provincia
      SINO
         EN 12,20 ESCRIBIR "No est "
         EN 16,20 ESCRIBIR "Pulse INTRO para continuar"
         Pausa( )
      FINSI
      res <- Espacios( 1 )
      HACER Mas
   FINMIENTRAS
   CERRAR "DATOS.DAT"
   Cerrar_indices( )

FINPROGRAMA

Deja Tus Comentarios!!

Déjame tus dudas y comentarios: Conversion Conversion Emoticon Emoticon

Entradas Populares