Documente Academic
Documente Profesional
Documente Cultură
Enteros
Numéricos punto fijo
Reales
punto flotante
Carácter
Alfanuméricos
Simples Cadena
Lógicos
Puntero
Constantes
Variables
Continentes
Campos
Contenidos
Estáticas
Registros
Arreglos
Ficheros secuenciales
Datos
Estructurados
Ficheros secuenciales
Pila
Densas
Cola
Dinámicas Listas
Encadenadas Simple
O Doble
Enlazadas Circulares
Árboles
Estructuras estáticas: son aquellas cuyo tamaño y estructura queda fijado en tiempo de definición y
permanecen inalterables durante la ejecución del proceso en el que fueron declaradas.
Estructuras dinámicas: son aquellas cuyo tamaño u estructura puede variar en tiempo de ejecución y su
única limitación (tamaño máximo) está dado por el tamaño de la memoria que la soporta.
Página 1 de 33
Acciones estructuradas.
SI condición ENTONCES
Acción;
FIN SI.
Primero se observa la certeza de la condición, si ésta conduce a una respuesta
cierta, la acción es ejecutada a continuación de la observación, la cual finaliza la
ejecución.
SI condición ENTONCES
Acción1;
SINO
Acción2;
FIN SI.
La ejecución del texto provoca la búsqueda en la lista de los valores de aquél que
corresponde al valor observado por el indicador. Se ejecutará una de entre todas las
acciones enumeradas. La acción n+1 se asocia en todos los casos en los cuales el
indicador no pertenece al conjunto de todos los n valores explícitamente enumerados.
1. Repetir. (post-test)
REPETIR
Acción;
HASTA QUE condicion.
2. Mientras. (pre-test)
Página 2 de 33
3. Manejada por contador.
Página 3 de 33
Secuencias
Concepto y características
Una secuencia es un conjunto de datos relacionados entre sí que deben cumplir con ciertas
características:
o Existencia del primer elemento de la secuencia: el acceso a este elemento, permite el
acceso posterior a los demás elementos de la secuencia.
o Relación de sucesión entre los elementos: todo objeto de la secuencia. salvo el último,
precede a uno de los demás elementos, su sucesor.
o Finitud: puede ser conocida o no. Puede estar dada por la cantidad de elementos o bien
por una marca de fin. Todas las secuencias deben ser finitas por lo que deben estar
acotadas por una condición de fin para evitar entrar en un ciclo infinito.
o Existencia del último elemento de la secuencia: debe estar definido un indicador de fin
de secuencia: el elemento final, permite detener la enumeración de la secuencia por la
observación de la característica de este elemento.
Declaración
Var
Sec: secuencia de caractéres;
V: caractér;
Sec: nombre de la secuencia.
V: variable con la que recorreremos la secuencia, accediendo a sus elementos de uno en uno.
Representación gráfica
Una secuencia suele representarse gráficamente de la siguiente forma:
Orden: existe un orden cuando la relacion sucesora es estroicta entre el primer elemento y el
ultimo. Debe estar explicita en el planteo del problema.
Completitud: indica que entre elemento y su sucesor no existen ausencias. No se puede
suponer, tiene que estar definida en el planteo del problema, ademas puede estar
ordenada o no.
Página 4 de 33
Subsecuencias
Son secuencias de menor nivel que pertenecen a una secuencia mayor de la cual heredan su
caracteristicas. Se pueden presentar de dos maneras: en forma anidadas o enlazadas y en
forma incluidas o jerarquizadas.
Subsecuencias anidadas o enlazadas: son las palabras.
- Palabra con contenido: conjunto de caractéres distintos de blanco y de marca. Es una
secuencia impura.
- Palabra vacía: conjunto de caractéres blancos. Es una secuencia impura.
Subsecuencias incluidas o jerarquizadas: comparten todos los elementos. Un ejemplo es el
texto.
Secuencia de caractéres
Conjunto de caractéres dispuestos en forma aleatoria y secuencial.
La máquina de caractéres
La máquina de caractéres es una máquina abstracta capaz de procesar las secuencias de
caractéres. Está compuesta por los siguientes elementos:
1. Una ventana: a través de la ventana se podrán observar los objetos que componen la
secuencia de caractéres, permitiendo el acceso de a uno por vez.
2. Un botón “arrancar”: la función de éste es colocar la cinta en la máquina para ser
tratada.
3. Un botón “avanzar”: mediante éste botón se podrá recorrer la secuencia, elemento a
elemento, siempre en la misma dirección (de izquierda a derecha), accediendo a ellos
de a uno por medio de la ventana. Luego de arrancar la secuencia, se la debe avanzar
una vez para que el primer elemento de la secuencia aparezca en la ventana.
Página 5 de 33
Acciones con secuencias
Arrancar la secuencia: Arr (Sec);
Avanzar la secuencia: Avz (Sec, V);
Entonces las acciones Iniciar_adquisición corresponde a arrancar la secuencia, y
Obtener_elemento sería avanzar la secuencia.
Para crear una secuencia se utiliza la misma acción que para arrancar una existente, pero hay
que tener en cuenta que la secuencia creada se debe cerrar para agregar al final de la misma
la marca de fin, de lo contrario el proceso de creación no concluirá perdiéndose así la totalidad
de los datos ingresados.
Arr (Sal); Crea una secuencia de nombre Sal, definida previamente en el ambiente.
Cerrar (Sal); Agrega la marca de fin a Sal y la almacena definitivamente.
Existen dos formas de controlar la finalización de una secuencia impura en la estructura pre-
test:
1. preguntando por la marca de fin, que podría ser “*”
Mientras (V<>”*”) hacer
2. utilizando el condicional No FDS (Nombre de Secuencia) - No Fin De Secuencia
Mientras No FDS (Sec) hacer
Campo continente: es un campo formado por contenido. Hay que dar el contenido.
Representación de un registro.
o Por nivel o literario: es la representación jerárquica de los datos donde cada nodo
o cada elemento ocupa un renglón de escritura y las relaciones de dependencia y
subordinación se nota mediante el uso de sangría. Describimos a continuación el
ambiente.
Alumno = registro
Legajo 6N;
Ape_nbre AN40;
Página 6 de 33
Fe_nac fecha;
FIN REGISTRO.
Ejemplito:
Alumno = Registro
nombre : AN;
leg : Entero;
materiasAprobadas : Entero;
fecha : Fecha;
calificacion : Entero;
FinRegistro
FinRegistro
- Por Enumeracion:
Ejemplo:
Satelite = Registro
Página 7 de 33
tipo = 'A';
nombre : AN;
masa : Real;
FinRegistro
Planeta = Registro
tipo = 'B';
nombre : AN;
masa : Real;
aceleracionG : Real;
FinRegistro
Estrella = Registro
tipo = 'C';
nombre : AN;
masa : Real;
aceleracionG : Real;
luminosidad : Real;
FinRegistro
Arreglos
Concepto
Un arreglo es una estructura de datos en la que se almacena una colección de datos del mismo
tipo. Se caracteriza por:
o Los elementos del arreglo se colocan en posiciones contiguas, tienen continuidad física
y se almacenan en memoria interna.
o Es estática, es decir, tiene un tamaño definido y fijo.
o Tiene un único nombre que representa a todos los elementos y estos se diferencian por
un índice.
o Acceso directo a los elementos individuales del arreglo.
o Se puede recorrer en orden inverso.
Página 8 de 33
Declaración
Tipo
Alumnos: arreglo [1..100] de enteros;
Alumnos: nombre del arreglo.
[1..100]: longitud del arreglo. En este caso se tiene un arreglo de 100 elementos.
El intervalo de longitud del arreglo suele ser de tipo simple, como entero o caractér, pero nunca
real.
Planes: arreglo [“A”..“F”] de enteros;
Un elemento del arreglo se identifica por el nombre del arreglo y el índice adecuado contenido
entre corchetes.
Alumnos[1]; Alumnos[2];…; Alumnos[100];
Planes[“A”]; Planes[“B”];…; Planes[“F”];
Los elementos componentes de un arreglo pueden ser tanto datos simples como datos
estructurados.
Tipo
Alu=registro
Leg: entero (5);
Nomb: an (30);
DNI: entero (8);
Finregistro;
A: arreglo [1..100] de Alu;
Clasificación de arreglos:
Los arreglos de clasifican en:
Unidimensionales: También llamados vectores, son aquellos que poseen una sola
dimensión, lo que implica un solo índice.
Bidimensionales: Un arreglo bidimensional es un arreglo con dos índices y son
conocidos como tablas o matrices. Para localizar o almacenar un valor en el arreglo se
deben especificar dos posiciones, uno para la fila y otro para la columna.
Multidimensionales: Tienen dos o más índices o dimensiones y se clasifican según estos
en bidimensionales (dos índices o dimensiones), tridimensionales (tres índices o
dimensiones), etc.
Página 9 de 33
Declaración
Se deben indicar:
1) Nombre del arreglo
2) Tipo del arreglo (todos los elementos serán del mismo tipo)
3) Intervalo permitido por cada índice
Tipo
Mat: arreglo [1..15, 1..50] de Alu;
Los diferentes tipos de índices no necesitan ser intervalos del mismo tipo
Tipo
Mat: arreglo [1..10, “A”..“F”] de enteros;
Representación gráfica
Manipulación de tablas
Los recorridos se realizan mediante bucles anidados, uno por cada dimensión o índice.
Búsqueda en un arreglo
Para realizar la búsqueda de un elemento o varios en un arreglo, se pueden utilizar los
siguientes métodos:
Búsqueda lineal Pura o Simple: consiste en recorrer todo el arreglo, comparando cada
elemento con el buscado.
Ventajas: se aplica tanto en arreglos ordenados como desordenados. Es útil para búsquedas
múltiples.
Página 10 de 33
Desventajas: recorre todo el arreglo aunque e elemento se haya encontrado en el primer lugar.
Algoritmo
Leer(X);
Para i:=1 hasta n hacer
Si A[i]=X entonces
Esc (“Se encontró en posición”,i);
FSi;
FPara;
FAccion
Búsqueda lineal por centinela: es similar a la búsqueda lineal pero con la mejora de que en el
momento en que se encuentra el elemento, se finaliza la búsqueda.
Algoritmo
Leer(Cent); i:=;
Mientras (A[i] <> Cent) ^ ( i<=N ) hacer
I:= i+a;
FMientras;
Si A[i]= Cent entonces
Esc (“Se encontró en posición”,i);
Sino
Esc (“No se encontró elemento”);
FSi;
FAccion
Búsqueda binaria o dicotómica: consiste en comparar el elemento central del arreglo con el
valor buscado, si este no es igual, se reduce el intervalo de búsqueda a la mitad derecha o
izquierda, según el valor sea mayor o menor que el elemento central del arreglo. Y así se irá
reduciendo el intervalo de búsqueda en mitades mediante dicha comparación, hasta que este
reduzca al mismo elemento de búsqueda, si es que existe. O sea que, la búsqueda termina
cuando se encuentra el elemento o bien cuando se anula el intervalo.
Algoritmo
Izq:=1; Der:=N; Med:=(Izq+Der) Div 2; Leer(X);
Mientras (A[Med]<>X) ^ (Izq <>Der) hacer
Si (X<A[Med]) entonces
Der:= Med-1;
Sino
Izq:= Med+a;
FSi;
Med:=(Izq+Der) Div 2;
FMientras;
Página 11 de 33
Si (X= A[Med]) entonces
Esc (“se encontró en posición”, Med);
Sino
Esc (“No se encontró”);
FSi;
FAcción.
Ordenamiento de un arreglo
Directa
Insercion Binaria
Simples,
Directos o Selección directa
Eltales. Directo o burbuja
Intercambio Directo con test de comprob.
Método de la sacudida
Métodos de ordenación
Indirectos, Inserción (con incrementos decrecientes)
Avanzados o Selección (orden según árbol o método de
Logarítmicos la criba o del montículo, heapsort)
Intercambio (orden por partes met. Ráp)
(quick sort)
Algoritmo
Cargar;
Para i:=2 hasta n hacer
x:=a[i]; a[0]:=; j:=(i-1);
Mientras (x<a[j]) hacer
a[j+1]:=a[j];
j:=j-1;
FMientras;
a[j+a]:=x;
FPara;
FAcción;
Página 12 de 33
Método de selección directa: se basa en los siguientes principios:
- Seleccionar el artículo con clave mínima.
- Enviarlo a su posición definitiva ai a la izquierda. Para eso se intercambian los item de ai
y aj.
A continuación se repiten estas operaciones con los ítems restantes a la derecha de ai. Este
método, es en cierta forma opuesto al de inserción directa, considera todos los ítems del
arreglo origen para encontrar el que tiene menor clave y depositarlo como item siguiente de la
secuencia destino. Recordamos que se entiende por arreglo origen a la parte desordenada y
como secuencia destino a la parte del arreglo ya ordenada.
Algoritmo
Carga;
Para i:=1 hasta (n-1) hacer
x:= a[i]; min:=i;
Para j:=(i+a) hasta n hacer
Si (x>a[j]) entonces
min:=j;
x:=a[j];
FSi;
FPara;
a[min]:= a[i];
a[i]:=x;
FPara;
FAcción.
Algoritmo
Carga;
Bandera:= Falso;
Mientras (Bandera =Falso) hacer
Bandera:= Verdadero;
Para j:=1 a (n-1) hacer
Si ( a[j] > a[j+1] entonces
x:= a[j];
a[j]:= a[j+1];
a[j+1]:= x;
Bandera:= Falso;
FSi;
FPara;
FMientras;
FAcción.
Página 13 de 33
ARCHIVOS O FICHEROS
Organización
Es como se almacenaran los datos. La organización es permanente, una vez definida no se
puede modificar. Es la principal característica de un archivo.
Organización directa indexada: el archivo posee dos áreas: una de datos y otra de índice. El
índice puede ser una clave simple o compleja, y permitirá el acceso de forma directa a
cualquier registro.
Los registros de un archivo indexado poseen continuidad lógica. Un registro puede ser
agregado fácilmente al archivo en una posición cualquiera de memoria, manteniendo la
correlatividad de las claves, ya que el carácter sucesor de los registros está dado por una
cuestión lógica, y no física.
Acceso
Es la forma en la que se van a recuperar o leer los registros de un archivo. El tipo de acceso a
un archivo depende de la organización del mismo. El acceso se clasifica en secuencial y
directo, y este a su vez se divide en al azar o puntual y en dinámico o mixto.
Acceso secuencial: para acceder a un registro n cualquiera, hay que leer los n-1 registros
anteriores a él.
Todo archivo, sin importar su organización, puede ser accedido secuencialmente.
Acceso directo: el acceso directo sólo es posible si el archivo tiene una organización directa.
Al azar o puntual: se necesita conocer la posición o la clave del registro al que se quiere
acceder.
Página 14 de 33
Dinámico o mixto: es una combinación del acceso directo y del secuencial. Se accede
primero de manera directa y luego secuencial, para lo cual se debe tener la posición, la
clave o una aproximación de la clave del primer elemento que se busca, y a partir de allí,
se recorre el resto del archivo secuencialmente.
Organización Acceso
Secuencial Secuencial
Secuencial
Directa Puntual
Mixta(Puntual y luego Secuencial)
Tipos de claves
Simple: un solo dato, campo.
Compleja: formada por un campo continente.
Principal: identifica al elemento dentro del subsistema al que pertenece.
Secundaria: campo relevante, pero su función es relacionar al elemento con otros
sistemas.
genérico
Individual
Corte de control
Procesos
Actualización
Múltiple directa
Mezcla Apareo
Indirecta
Unitarios o individuales
Interviene un solo archivo de entrada, pudiéndose obtener uno o más archivos de salida o un
listado. La característica fundamental es que el control de finalización de este tipo de proceso
está dado por el fin del fichero de entrada.
Página 15 de 33
Estadístico: Recorrido del archivo para contabilizar elementos, utilizando una tabla
(memoria interna) y al finalizar emitir un cuadro de resumen.
2Algoritmo:
ACCION Corte ES
Inicializar_totalizadores;
Inicializar_adquisición;
Leer_registro;
Reg1 := Clave1; Reg2 := Clave2; Reg2 := Clave3 * Resguardar claves *
MIENTRAS NO FDA(Arch) HACER
VER_CORTE
TRATAR_REGISTRO
Leer_registro;
FMientras;
Corte_3; * corte de mayor nivel *
Emitir_totales;
FACCIÓN.
Acción Ver_corte es
SI Clave3 <> Reg3
ENTONCES Corte3
SINO SI Clave2 <> Reg2
ENTONCES Corte2
SINO SI Clave1 <> Reg1
Página 16 de 33
ENTONCES Corte1
Fsi;
Fsi;
FSI;
Facción.
Acción Corte_n es
Corte n-1 * llama al corte de nivel inmediato inferior *
Emitir totales n
Acumular totales al nivel inmediato superior * tot n+1 : = tot n+1 + tot n *
Reinicializar totales de este nivel * tot n : = 0 *
Reg n : = Clave n
FAcción.
Complejos o múltiples
Existen por lo menos dos ficheros de entrada, pudiendo existir uno o mas archivos de salida.
La finalización del proceso se maneja con la técnica del apareo. Las estructuras de los ficheros
deben tener un elemento comun: la “clave de apareo” o “campo clave”.Los ficheros deben estar
ordenados por el “campo clave”.
Mezcla indirecta: los archivos de entrada tienen formatos diferentes, se debe definir
el formato del archivo de salida. El número de registros en el archivo de salida es
indeterminado.
A1 A2 An
MEZCLA
Listado de
As errores
Tipos de Mezcla:
DIRECTA INDIRECTA
Formato de los registros igual distinto
de los Ficheros de
Entrada
Página 17 de 33
Formato de los registros igual al de los ficheros de igual a alguno de los ficheros
del Fichero de Salida entrada de entrada o una combinación
de estos
Cantidad de registros es igual a la sumatoria de las no es posible predecir
del Fichero de Salida cantidades de los registros de
los ficheros de entrada:
n
# As =
Ciclos de Apareo:
- Incluyente
PROCESO
FMientras.
- Excluyente
FMientras.
Fmientras.
FMientras.
Si hay más de 2 ficheros se necesitarán más ciclos, además del ciclo principal. Por ej: para 3
ficheros se necesitarán 7 ciclos:
1 - Condición: NO FDA (Arch 1) y NO FDA (Arch 2) y NO FDA (Arch 3) - Ciclo principal que
procesa registros comunes.
2 - Condición: NO FDA (Arch 1) y NO FDA (Arch 2)
3 - Condición: NO FDA (Arch 1) y NO FDA (Arch 3)
4 - Condición: NO FDA (Arch 2) y NO FDA (Arch 3)
5 - Condición: NO FDA (Arch 1)
6 - Condición: NO FDA (Arch 2)
7 - Condición: NO FDA (Arch 3)
Página 18 de 33
La eliminación de registros – bajas
Movimientos
Tipos de actualización
Clasificación de actualización
Página 19 de 33
registro maestro es igual a la del registro movimiento implica que posee movimientos,
para lo cual se tendrá que actualizar los campos correspondientes al registro
movimiento, y luego agregar el registro al archivo de salida, si el archivo es secuencial, o
re-escribir el registro en el archivo maestro, si es indexado. Por último, si la clave del
registro maestro es mayor a la del registro movimiento, corresponde a una alta, por lo
que se debe incorporar el registro movimiento al archivo maestro actualizado o maestro.
Este es un proceso seguro, puede ser cuantificado, se puede determinar si fue un éxito o
un fracaso y en qué momento se produjo el error.
Actualización indexada: el archivo maestro está indexado, por lo tanto puede ser leído y
sobrescrito.
El archivo movimientos es el que determina el fin del proceso de actualización (ciclo
unitario). Este archivo es accedido en forma secuencial y con la clave de cada registro
se accede directamente al registro maestro: si existe un registro en el archivo maestro
con la misma clave que la del registro movimiento, puede tratarse entonces de una
modificación o una baja. En el primer caso, modificación, de realizarán los cambios
pertinentes en el registro maestro indicados en el registro movimiento y luego se
rescribirá el registro actualizado. Para el segundo caso, se dará de baja, física o
lógicamente, el registro maestro. Si no existe un registro en el archivo maestro con la
misma clave, se trata de un alta, para lo que se debe copiar el registro movimiento y
escribirlo en el archivo maestro.
ACTUALIZACIÓN (Secuencial)
MAESTRO MOVIMIENTO
ACTUALIZACIÓN
NUEVO Listado de
MAESTRO errores
Tipos de Actualización:
Página 20 de 33
Tipos de Ficheros Maestros:
- Histórico
- Común o Normal
Tipos de Movimientos:
- Alta
- Baja
- Modificación
Algoritmos:
ACCION ACT_POR_L ES
Algoritmo
Abrir_Archivos
Leer_Maestro
Leer_Movimiento
MIENTRAS (Clave_Mae <> High Value) o (Clave_Mov <> High Value) HACER
SI Clave_Mae < Clave_Mov * Maestro sin Movimiento *
ENTONCES Reg_sal : = Reg_mae
ESCRIBIR(Arch_sal, Reg_sal)
Leer_Maestro
SINO SI Clave_Mae = Clave_Mov * Maestro con Movimiento *
ENTONCES Aux : = Reg_mae
MIENTRAS Clave_Mae = Clave_Mov HACER
Proceso_Movim
Leer_Movimiento
Página 21 de 33
FMientras
Reg_sal : = Aux
ESCRIBIR(Arch_sal, Reg_sal)
Leer_Maestro
SINO * Movimiento sin Maestro ~ 1 Alta y 0-1 Modific. y/o Bajas *
* Asigna campo por campo, porque Aux y Reg_mov
tienen distinto formato *
Aux.clave : = Reg_mov.clave
Aux.campo1 : = Reg_mov.campo1
Aux.campo2 : = Reg_mov.campo2
........
Aux.campoN : = Reg_mov.campoN
Aux.Marca_baja := ‘ ‘
Leer_Movimiento
MIENTRAS Clave_Aux = Clave_Mov HACER
Proceso_Movim
Leer_Movimiento
FMientras
Reg_sal : = Aux
ESCRIBIR(Arch_sal, Reg_sal)
FSI;
FSI;
Fmientras;
Cerrar(Arch_sal)
FACCIÓN.
Acción Leer_Movimiento es
LEER(Arch_mov, Reg_mov)
SI FDA(Arch_mov)
ENTONCES Clave_mov : = High_value
FSI;
FAcción.
Acción Leer_Maestro es
LEER(Arch_mae, Reg_mae)
SI FDA(Arch_mae)
ENTONCES Clave_mae : = High_value
FSI;
FAcción.
Acción Proceso_Movim es
* Comparar la información del Registro de Movimientos y, de acuerdo a los valores que
traigan, y alterar los contenidos del Registro Auxiliar (Aux). *
SI Cod_Mov = ‘M’ * Modificación *
ENTONCES Proceso_modif_maestro
SINO SI Cod_Mov = ‘B’ * eliminación lógica *
ENTONCES Marcar_registro
Fsi;
Fsi;
FAcción.
Página 22 de 33
Si Reg_Mov.campo2 <> ‘ ‘
entonces Aux.campo2 := Reg_mov.campo2
fsi;
Si Reg_Mov.campo1 <> ‘ ‘
entonces Aux.campo3 := Reg_mov.campo3
fsi;
* ... y así sucesivamente para todos los campos del registro...*
FAcción.
Acción Marcar_registro es
Aux.Marca_baja:= ‘*’ * en vez de asterisco, se puede asignar la fecha del día,
o cualquier otro dato, según el problema *
FAcción.
Página 23 de 33
- Actualización unitaria
ACCION ACT_UNIT ES
Algoritmo
Abrir_Archivos
Leer_Maestro
Leer_Movimiento
MIENTRAS (Clave_Mae <> High Value) o (Clave_Mov <> High Value) HACER
SI Clave_Mae = Clave_Mov
ENTONCES Proceso_iguales
SINO SI Clave_Mae < Clave_Mov
ENTONCES Reg_sal : = Reg_mae
ESCRIBIR(Arch_sal, Reg_sal)
Leer_Maestro
SINO Proceso_distintos
Fsi;
FSi;
Fmientras;
Cerrar Archivos
FACCIÓN.
Acción Leer_Movimiento es
LEER(Arch_mov, Reg_mov)
SI FDA(Arch_mov)
ENTONCES Clave_mov : = High_value
FSI;
FAcción.
Acción Leer_Maestro es
LEER(Arch_mae, Reg_mae)
SI FDA(Arch_mae)
ENTONCES Clave_mae : = High_value
FSI;
FAcción.
Acción Proceso_iguales es
SI Cod_Mov = ‘ALTA’
ENTONCES ESCRIBIR(‘Error alta no existe’)
Reg_sal : = Reg_mae
ESCRIBIR(Arch_sal, Reg_sal)
SINO SI Cod_Mov = ‘MODIF’
ENTONCES Proceso_modif_maestro
Reg_sal : = Reg_mae
ESCRIBIR(Arch_sal, Reg_sal)
Página 24 de 33
Leer_Maestro
Leer_Movimiento
FAcción.
Acción Proceso_distintos es
SI Cod_Mov = ‘BAJA’
ENTONCES ESCRIBIR(‘Error baja no existe’)
SINO SI Cod_Mov = ‘MODIF’
ENTONCES ESCRIBIR(‘Error mofificación no existe)
SINO * Asigna campo por campo, porque Reg_sal y Reg_mov
tienen distinto formato *
Reg_sal.clave : = Reg_mov.clave
Reg_sal.campo1 : = Reg_mov.campo1
Reg_sal.campo2 : = Reg_mov.campo2
........
Reg_sal.campoN : = Reg_mov.campoN
Reg_sal.Marca_baja := ‘ ‘
ESCRIBIR(Arch_sal, Reg_sal)
Fsi;
Fsi;
Leer_Movimiento
FAcción.
Acción Marcar_registro es
Reg_mae.Marca_baja:= ‘*’ * en vez de asterisco, se puede asignar la fecha del día,
o cualquier otro dato, según el problema *
FAcción.
ACTUALIZACIÓN (Indexados)
Página 25 de 33
Ficheros de entrada: por lo menos dos: MAESTRO Y MOVIMIENTOS.
Ficheros de salida: el mismo MAESTRO, actualizado.
ACTUALIZACIÓN
INDEXADOS
Listado de
errores
Tipos de Actualización:
Algoritmo:
- Actualización unitaria
ACCION ACT_UNIT_INDEX ES
Algoritmo
Abrir (arch_mov)
Abrir I/O (arch_mae)
Leer (arch_mov, Reg_mov )
SI No existe
ENTONCES SI cod_mov = ‘B’
ENTONCES ESCRIBIR(‘Error baja no existe’)
SINO SI cod_mov = ‘M’
2 ENTONCES ESCRIBIR(‘Error modificación no existe’)
SINO
* Asigna campo por campo, porque Reg_mae y Reg_mov
tienen distinto formato *
Reg_mae.campo1 : = Reg_mov.campo1
Reg_mae.campo2 : = Reg_mov.campo2
........
Página 26 de 33
Reg_mae campoN : = Reg_mov.campoN
Reg_mae.Marca_baja := ‘ ‘
ESCRIBIR(arch_mae, Reg_mae)
FSI;
FSI;
SINO SI cod_mov = ‘A’
ENTONCES ESCRIBIR(‘Error clave existe, alta no es posible’)
SINO SI cod_mov = ‘M’
ENTONCES Modificar Registro Maestro
RE-ESCRIBIR(arch_mae, Reg_mae)
** o {baja física}**
BORRAR(arch_mae, Reg_mae)
FSI;
FSI;
FSI;
Fmientras;
Cerrar(Arch_mov)
Cerrar(Arch_mae)
FACCIÓN.
Listas
Página 27 de 33
Las listas son estructuras dinámicas, compuestas por nodos linealmente ordenados con
adyacencia lógica, las cuales pueden crecer o reducirse. Se recorren secuencialmente y solo
están limitadas por la cantidad de memoria.
Nodo: es un registro que posee como mínimo dos campos: uno para datos y otro es un
“puntero interno”, el cual provee la dirección del próximo nodo. Un nodo es una variable
dinámica.
Variable dinámica: es una variable simple o una estructura de datos creada en tiempo de
ejecución y accedida mediante un puntero.
Puntero: es una variable simple y estática que almacena la dirección de memoria de una
variable dinámica.
Listas particularizadas: son las pilas y las colas. En realidad son una restricción de acceso.
Pilas: todas las inserciones, eliminaciones y lectura de nodos se realizan desde el mismo
extremo. A esta estructura se la denomina LIFO (Last In First Out – último en entrar,
primero en salir).
Colas: los puntos de entrada y salida están separados, es decir que, las inserciones de
nodos se realizarán por un extremo y las eliminaciones o lectura por el otro. A es
estructura se la denomina FIFO (First In First Out – primero en entrar, primero en salir).
Listas dobles o doblemente encadenadas: es una lista en la que cada nodo se encuentra
enlazado al nodo anterior y al siguiente mediante punteros internos (ANT y SIG), a excepción
del primero, cuyo puntero ANT apunta a NIL, y del último, cuyo puntero SIG también apunta a
NIL. Por esto, la estructura de cada nodo será:
- El/los campos correspondientes a los datos;
- Dos punteros internos que indican la posición del elemento anterior y del siguiente.
La lista doble posee dos punteros externos (PRIM y ULT), de manera que uno apunte al primer
nodo y el otro al último. Ésta lista puede ser recorrida en ambos sentidos comenzando por
cualquiera de los dos punteros externos.
Página 28 de 33
Listas circulares: en estas listas no existe el elemento nulo. Pueden ser simples o dobles:
Listas circulares simples: es una lista simple en la cual el último nodo no apunta a NIL,
sino al primer nodo, quedando así formado un círculo de nodos, el cual lógicamente no
tiene fin.
Listas circulares dobles: es una lista doble en la que el puntero interno SIG del último
nodo, apunta al primer nodo y el puntero interno ANT del primer nodo apunta al último
nodo.
PILAS
Una pila es una lista de elementos en la cual se puede insertar o eliminar elementos unicamente por uno
de sus extremos. En consecuencia, los elementos de una pila seran elimidados en orden inverso al que se
insertaron, es decir, el ultimo elemento que se ingresa en la pila es el primero que se elimina. Las pilas
pertenecen al grupo de estructuras de datos lineales, ya que los componentes ocupan lugares sucesivos en
la estructura.
La estructura de datos tipo pila se puede definir como una coleccion de datos que solo puede ser accedida
por un extremo, normalmente conocido como TOPE.
Para la representacion de pilas utilizaremos arreglos, en consecuencia debera definirse cual sera el tamaño
maximo de la pila, y ademas una variable auxiliar, la cual sera un apuntador al ultimo elemento ingresado,
a la que llamaremos TOPE. Ademas se tiene la limitacion de espacio en memorias reservada, propias de
los arreglos. Luego de que el arreglo llege a su maximo no sera posible ampliar su tamaño.
Debe tener en cuenta que la variable max es el numero maximo de elementos que puede alojar la pila.
Página 29 de 33
Operaciones con Pilas:
Inicio
sino
fsi
final
Inicio
escribir "subdesbordamiento"
sino
fsi
Final
Página 30 de 33
COLAS
Una cola es una lista de elementos en la que éstos se introducen por un extremo y se eliminan por otro.
Los elementos se eliminan en el mismo orden en el que se insertaron. Por lo tanto el primer elemento en
entrar a la cola será el primero en salir. Debido a esta caracteristica, las colas tambien se conocen el
nombre de FIFO o PEPS primero en entrar, primero en salir.
Recursividad
Es la propiedad por la cual un proceso puede llamarse a sí mismo para resolver un problema.
Niveles de recursividad:
La recursividad se presenta en dos niveles:
Página 31 de 33
1. A nivel de dato – Definición recursiva.
2. A nivel de acción – Proceso recursivo.
Tipos de recursividad
Directa: un subprograma se llama a sí mismo una o más veces.
Indirecta: un subprograma A llama a un subprograma B y éste a su vez llama a A.
Caso base: es el caso para el que la solución puede establecerse de forma no recursiva.
Caso general o recursivo: caso para el cual la solución se expresa en términos de una versión
más pequeña de sí misma.
Árboles
Nodo raíz: es el nodo superior, representa la entidad mayor dentro de un árbol. Ningún nodo
puede apuntar a él.
Nodo descendiente: se encuentra debajo de otro nodo, es decir, depende de otro de nivel
superior.
Nodos hermanos: dos nodos son hermanos si tienen el mismo padre. Se llamarán hermano
izquierdo y derecho respectivamente.
Nodo interior: todo nodo no terminal, con descendientes.
Nodo terminal u hoja: es el que no tiene hijos o descendientes.
Página 32 de 33
Longitud de un camino: es el número de nodos que componen el camino menos uno, o bien el
número de aristas o ramas que los une.
Nivel de un nodo
El nivel o profundidad de un nodo se define como una cantidad mayor en uno al número de sus
ascendentes.
Altura de un árbol
La altura de un árbol es el número de nodos en el camino más largo desde la raíz a una hoja,
es decir, el número de niveles distintos.
Grado de un árbol
El grado de un árbol es el número de descendientes que puede tener cualquier nodo e incluso
la raíz, es el número de punteros internos.
Árboles binarios
Un árbol binario es aquel en el que cada nodo no puede tener más de dos hojas o
descendientes. Es un conjunto vacío o un conjunto que consta de un nodo raíz enlazado a dos
árboles binarios disjuntos denominados subárboles de izquierda y de derecha. Cada uno de
estos de estos subárboles son, a su vez, un árbol binario, y deben ser subconjuntos disjuntos
de nodos, es decir, ningún nodo puede estar en ambos subárboles.
Diagrama
Algoritmos
Diagrama ejemplo
Al recorrer el árbol y escribir los caracteres de los nodos en la secuencia en que estos se van
encontrando, se obtienen las siguientes ordenaciones:
1. Pre-orden:
2. Orden:
3. Post-orden:
Se pueden ver las tres formas de expresiones: el recorrido en pre-orden produce la notación
prefija; el recorrido en post-orden genera la notación post-fija o inversa y el recorrido en orden
produce la notación convencional.
Página 33 de 33