Algoritmo de ordenación de raíz
PSEUDOCÓDIGO
MÓDULO Ordenacion_de_raiz
DATOS
PARÁMETROS
Recibe NOMBRE_F cadena ** fichero original
Recibe NOMBRE_F_AUX(10) de cadenas ** ficheros auxiliares
VARIABLES
SEGUIR lógica ** seguir/no seguir con las iteraciones
ITERACION entera ** contador de iteraciones
INICIO
SEGUIR ← Verdadero ** seguir iterando
ITERACION ← 1
Repetir
Separar (NOMBRE_F, NOMBRE_F_AUX, ITERACION, SEGUIR)
Concatenar (NOMBRE_F, NOMBRE_F_AUX)
ITERACION ← ITERACION +1
Hasta que (SEGUIR = Falso)
FIN
CÓDIGO C
PRONTO SERÁ INCORPORADO....
El módulo Separar realiza una partición de un fichero origen en 10 ficheros destino. La partición se realiza copiando cada registro del fichero origen en el destino que le corresponda, en función de la cifra de la clave coincidente con la posición dada por ITERACION: si la cifra es 0, el registro se lleva al primer fichero destino, si es 1, se lleva al segundo,..., si es 8 se lleva al penúltimo y si es 9 se lleva al último. El parámetro SEGUIR tomará valor Falso si no deben proseguir las iteraciones (si se han procesado todas las cifras de la clave más larga).
PSEUDOCÓDIGO
MÓDULO Separar
DATOS
PARÁMETROS
Recibe NOMBRE_ORIGEN cadena ** fichero a ordenar
Recibe NOMBRE_DESTINO(10) de cadenas ** ficheros auxiliares
Recibe ITERACION entera ** iteración actual
Transforma SEGUIR lógica ** seguir/no seguir ordenando
VARIABLES
REG de tipo REGISTRO ** registro de un fichero
CIFRA entero ** una cifra de la clave
F_O fichero de REGISTRO ** fichero origen
F_D(10) de ficheros de REGISTRO ** ficheros destino
I entera ** contador
INICIO
SEGUIR ← Falso
Para I desde 1 hasta 10
F_D(I) ← Abrir NOMBRE_DESTINO(I) para escritura
fin-para
F_O ← Abrir NOMBRE_ORIGEN para lectura
Mientras ( FF(F_O) = Falso) hacer
Leer REG, F_O
CIFRA ← Obtener_cifra(REG.CLAVE, ITERACION, SEGUIR)
Escribir REG, F_D(CIFRA+1)
fin-mientras
Para I desde 1 hasta 10
Cerrar F_D(I)
fin-para
Cerrar F_O
FIN
CÓDIGO C
PRONTO SERÁ INCORPORADO....
El módulo Obtener_cifra obtiene la cifra de la clave que corresponde a la iteración actual del algoritmo. Además, indica si el algoritmo de ordenación debe continuar con las iteraciones (si la clave tiene al menos otra cifra a la izquierda de la considerada):
PSEUDOCÓDIGO
MÓDULO Obtener_cifra devuelve entero
DATOS
PARÁMETROS
Recibe CLAVE entero ** clave de un registro
Recibe ITERACION entero ** iteración actual
Transforma SEGUIR lógica ** seguir/no seguir iterando
VARIABLES
I entero ** contador
CIFRA entero ** una cifra de la clave
N entero ** copia de la clave
INICIO
N ← CLAVE
Para I desde 1 hasta ITERACION
CIFRA ← N MOD 10 ** resto de la división
N ← N DIV 10 ** división entera
fin-para
Si (N ≠ 0) entonces
SEGUIR ← Verdadero
fin-si
DEVOLVER CIFRA
FIN
CÓDIGO C
PRONTO SERÁ INCORPORADO....
El módulo Concatenar copia el contenido de los 10 ficheros auxiliares sobre el fichero original, empezando por el fichero 1 y terminando por el 10:
PSEUDOCÓDIGO
MÓDULO Concatenar
DATOS
PARÁMETROS
Recibe NOMBRE_DESTINO cadena ** fichero a ordenar
Recibe NOMBRE_ORIGEN(10) de cadenas ** ficheros auxiliares
VARIABLES
REG de tipo REGISTRO
F_D fichero de REGISTRO
F_O(10) de ficheros de REGISTRO
I entera
INICIO
Para I desde 1 hasta 10
F_O(I) ← Abrir NOMBRE_ORIGEN(I) para lectura
fin-para
F_D ← Abrir NOMBRE_DESTINO para escritura
Para I desde 1 hasta 10
Mientras ( FF(F_O(I)) = Falso ) hacer
Leer REG, F_O(I)
Escribir REG, F_D
fin-mientras
fin-para
Para I desde 1 hasta 10
Cerrar F_O (I)
fin-para
Cerrar F_D
FIN
CÓDIGO C
PRONTO SERÁ INCORPORADO....
Comentarios
Publicar un comentario