Implementación de Patrones Algorítmicos de Recorrido y Búsqueda Secuencial
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 4,21 KB
Problema 1: Recorrido con Tratamiento Especial del Primer Elemento (Conteo de Inversiones)
Este es un problema de recorrido en el que no se puede tratar el primer elemento como el resto, pues se trata de comparar el Elemento Actual (EA) con el anterior, y el primero no tiene predecesor. Usaremos, por tanto, el Tercer Esquema de Recorrido.
Esquema Algorítmico
Léxico
S : Secuencia de Entero; // Del 2º Modelo de Acceso Secuencial
anterior : Entero;
inversiones : Entero;
Algoritmo
Iniciar (S);
SEGÚN EsVacia (S)
EsVacia (S) : Escribir (“Secuencia vacía, no hay inversiones”);
NO EsVacia (S) :
// Tratamiento del primer elemento:
Avanzar (S);
anterior ← EA (S);
inversiones ← 0;
MIENTRAS NO EsUltimo (S) HACER
Avanzar (S);
SI EA (S) < anterior ENTONCES
inversiones ← inversiones + 1
FIN_SI;
anterior ← EA (S)
FIN_MIENTRAS;
Escribir (inversiones)
FIN_SEGÚN
FIN.
Problema 2: Búsqueda Simple en Secuencia (Múltiplo de N)
Se trata de un problema de búsqueda simple del Primer Modelo de Acceso Secuencial. La propiedad buscada es que el Elemento Actual (EA) sea múltiplo de N, es decir, que EA(S) MOD N = 0.
Función ExisteMultimoN
ExisteMultimoN : una función (Dato-Resultado S : Secuencia de Entero; N : Entero > 0) → Booleano;
Algoritmo
Comenzar (S);
MIENTRAS EA (S) ≠ MarcaFin Y DESPUÉS EA (S) MOD N ≠ 0 HACER
Avanzar (S)
FIN_MIENTRAS;
ExisteMultimoN ← EA (S) ≠ MarcaFin
FIN;
Problema 3: Búsqueda Simple en Tabla Bidimensional
Se trata de una búsqueda simple en tabla bidimensional. Siguiendo el orden habitual (creciente por filas y en cada fila creciente por columnas), lo resolveremos utilizando el esquema de búsqueda en tablas bidimensionales del Tercer Modelo de Acceso Secuencial.
Función ExisteCaramelo
ExisteCaramelo : una función (TT : TipoTablero; TCa : TipoCaramelo) → Booleano;
Léxico
fila : RangoFilas;
columna : RangoColumnas;
Algoritmo
fila ← 1;
columna ← 1;
MIENTRAS NO (fila = N Y columna = M) Y TTfila,columna ≠ TCa HACER
SI columna < M ENTONCES
columna ← columna + 1
SI_NO
columna ← 1;
fila ← fila + 1
FIN_SI
FIN_MIENTRAS;
ExisteCaramelo ← TTfila,columna = TCa
FIN;
Problema 4: Combinación de Recorrido y Búsqueda en Tablas
Se trata de dos problemas combinados: un recorrido por filas, pues necesitamos comprobar todas ellas para saber cuántas cumplen la propiedad, y dentro del tratamiento de cada fila hay una búsqueda por columnas, pues tan pronto nos encontremos con un caramelo del color buscado no habrá que continuar. Esta búsqueda por columnas dentro de la fila la haremos según el esquema conocido del Tercer Modelo de Acceso Secuencial.
Función ContarFilasColor
ContarFilasColor : una función (TT : TipoTablero; TCo : TipoColor) → Entero;
Léxico
numero_de_filas : Entero;
fila : TipoFilas;
columna : TipoColumnas;
Algoritmo
numero_de_filas ← 0;
// Recorrido por filas
fila RECORRIENDO [1, N] HACER
// Dentro de la fila “fila” haremos una búsqueda por columnas
columna ← 1;
MIENTRAS columna ≠ M Y TTfila,columna.color ≠ TCo HACER
columna ← columna + 1
FIN_MIENTRAS;
// A la salida de la búsqueda comprobamos la propiedad
SI TTfila,columna.color = TCo ENTONCES
numero_de_filas ← numero_de_filas + 1
FIN_SI
FIN_RECORRIENDO;
ContarFilasColor ← numero_de_filas
FIN;
Fragmento Redundante del Código Fuente
El siguiente fragmento parece ser una repetición parcial del código de búsqueda bidimensional (Problema 3) incluido en el documento original:
SI columna < M ENTONCES columna ← columna + 1 SI_NO columna ← 1; fila ← fila + 1 FIN_SI FIN_MIENTRAS; ExisteCaramelo ← TTfila,columna = TCa