Un conjunto de objetos está organizado en forma de secuencia si se puede definir:
- El primer objeto de la secuencia: un primer objeto que se distingue de los demás. Acceder a este objeto permite acceder a los demás elementos.
- Relación de sucesión entre los objetos: todo objeto salvo el último precede a un sucesor, o todo elemento excepto el primero es sucesor de otro.
- Finitud: debe estar definido un indicador de fin de secuencia que sea un elemento final conocido, o una marca, o la longitud exacta de la secuencia. Sirve para saber cuando dejar de recorrer la secuencia.
- Orden: existe o no un orden cuando la sucesión es estricta.
- Completitud: no se puede suponer. Explicita que entre elementos no hay ausencias.
Las secuencias se almacenan en memoria persistente (disco). El tamaño de una secuencia no es fijo, y para su procesamiento se debe emplear un esquema de asignación de almacenamiento en memoria dinámico.
Procesamiento
Según su procesamiento, las secuencias se clasifican en:
- Definida: se usa una estructura iterativa manejada por contador.
- Indefinida pura: se usa una estructura post-test porque se conoce el **último elemento.
- Indefinida impura: se usa una estructura pre-test porque tiene marca de fin.
Máquina de Caracteres
Si imaginamos la secuencia como una cinta de caracteres de los cuales solo se puede ver un caracter a la vez a través de una ventana, surgen las siguientes instrucciones:
ARR: arranca el tratamiento de la secuencia (no avanza la cinta, no se ve ningún caracter).AVZ: avanza la cinta mostrando el siguiente caracter.ventana: Variable que muestra el valor de un caracter de la cinta (al que se puede acceder).
Ejemplo del recorrido de una secuencia indefinida pura:
ARR(s);
cont := 0;
REPETIR
AVZ(S, ventana);
cont := cont + 1;
HASTA QUE ventana = "."
FIN_REPETIR
Ejemplo del recorrido de una secuencia indefinida impura:
ARR(s);
cont := 0;
AVZ(S, ventana);
mientras V <> "." hacer
cont := cont + 1;
avz(s, VENTANA);
FIN_MIENTRAS