--------------------------------------------------------------------------
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.
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!!
Sign up here with your email
Déjame tus dudas y comentarios: Conversion Conversion Emoticon Emoticon