Bienvenidos, futuros funcionarios del Estado. Como profesor y preparador experto en las oposiciones de informática, sé de primera mano que el Bloque II de Tecnología Básica suele ser el filtro definitivo para muchos aspirantes. Hoy vamos a desgranar en profundidad uno de los temas más técnicos, lógicos y fundamentales del temario: el Tema 3 del Bloque II. Este tema, titulado oficialmente "Tipos abstractos y Estructuras de datos. Organizaciones de ficheros. Algoritmos. Formatos de información y ficheros", es la piedra angular sobre la que se construye toda la lógica de programación y el almacenamiento de la información.
Si tu objetivo es conseguir tu plaza como Técnico Auxiliar de Informática (TAI), dominar este contenido no es opcional. Es un tema transversal que te ayudará a entender mejor las bases de datos, el desarrollo de software y el comportamiento del sistema operativo. Prepárate un buen café, coge tus apuntes y acompáñame en esta guía exhaustiva donde analizaremos la teoría, veremos cómo se plantea en los exámenes oficiales, y te daremos las claves para superar cualquier pregunta tipo test TAI que se te ponga por delante.
¿Qué es Estructuras de Datos y por qué es clave en la oposición TAI?
El tema de Estructuras de Datos, Algoritmos y Ficheros abarca el estudio teórico de cómo la información se modela en la memoria del ordenador, cómo se procesa mediante secuencias lógicas de instrucciones (algoritmos) y cómo se almacena de forma persistente (ficheros). En el contexto de las oposiciones a Técnico Auxiliar de Informática de la Administración General del Estado (AGE), este tema es absolutamente clave porque sienta las bases computacionales que un técnico necesita para cualquier tarea de desarrollo o administración.
La importancia de este tema radica en su altísima tasa de aparición en los exámenes oficiales. Rara es la convocatoria del BOE donde no encontramos entre 3 y 5 preguntas directas sobre notación de complejidad algorítmica, características de árboles binarios, comportamiento LIFO/FIFO o formatos de serialización de datos. Además, comprender profundamente estos conceptos te facilitará enormemente el estudio de temas posteriores del Bloque III, como los lenguajes de programación y el modelado de datos.
Un buen informático no solo sabe escribir código, sino que sabe elegir la estructura adecuada para que ese código sea eficiente. ¿Debo usar una lista enlazada o un array? ¿Es mejor una organización de ficheros secuencial o directa (hash) para este problema concreto? Esas son las decisiones técnicas que el tribunal evaluador quiere comprobar que sabes tomar.
Contenido clave del Tema 3: Estructuras de Datos para la oposición TAI
Los contenidos clave del Tema 3 para la oposición TAI se dividen en cuatro grandes bloques de conocimiento: la abstracción de datos (TAD), las estructuras lógicas de almacenamiento en memoria (lineales y no lineales), la algoritmia y la complejidad, y finalmente, el almacenamiento físico (organización de ficheros) y lógico (formatos de intercambio). A continuación, desglosamos cada uno con nivel universitario, tal y como exige tu preparación.
1. Tipos Abstractos de Datos (TAD)
Un Tipo Abstracto de Datos (TAD) es un modelo matemático compuesto por una colección de operaciones definidas sobre un conjunto de datos para el modelo. Lo crucial del TAD es el principio de ocultación de la información (encapsulamiento). Define qué hace la estructura (su interfaz, sus operaciones), pero oculta cómo lo hace (su implementación interna).
Por ejemplo, un TAD "Pila" define operaciones como Apilar (Push), Desapilar (Pop) y Cima (Top). Como programador o analista, no te importa si internamente está implementado con un vector (array) estático o con una lista enlazada dinámica con punteros, siempre y cuando cumpla su contrato semántico. Este concepto es la base evolutiva que da lugar a la Programación Orientada a Objetos y UML, concepto que verás en el Bloque III.
2. Estructuras de Datos en memoria
Las estructuras de datos son la forma de organizar la información en la memoria principal (RAM) para que pueda ser utilizada de manera eficiente. Se clasifican principalmente en lineales y no lineales.
Estructuras Lineales
- Arrays (Vectores/Matrices): Colección de elementos del mismo tipo almacenados en posiciones contiguas de memoria. Su acceso es directo mediante un índice (O(1)), pero su tamaño es fijo y las inserciones/borrados en medio de la estructura son costosos porque implican desplazar elementos.
- Listas Enlazadas: Secuencia de nodos donde cada nodo contiene un dato y un puntero al siguiente nodo (lista simple), al anterior y siguiente (lista doble), o donde el último apunta al primero (lista circular). Son dinámicas, crecen en tiempo de ejecución, pero el acceso es secuencial (O(n)).
- Pilas (Stacks): Estructura lineal con política de acceso LIFO (Last In, First Out). El último elemento en entrar es el primero en salir. Se usan en la recursividad, gestión de memoria (call stack) y evaluación de expresiones matemáticas.
- Colas (Queues): Estructura lineal con política FIFO (First In, First Out). El primero en entrar es el primero en salir. Muy utilizadas en sistemas operativos para la planificación de procesos (spooling de impresión, colas de red).
Estructuras No Lineales
- Árboles: Estructura jerárquica compuesta por nodos. Existe un nodo raíz del que descienden subárboles. Un caso especial muy preguntado en test TAI es el Árbol Binario (cada nodo tiene máximo dos hijos) y el Árbol Binario de Búsqueda (ABB), donde el hijo izquierdo es menor que la raíz y el derecho mayor. Destacan también los árboles AVL (balanceados) y los Árboles B, esenciales para la indexación en SGBD relacionales y NoSQL.
- Grafos: Conjunto de vértices (nodos) y aristas (conexiones). Pueden ser dirigidos o no dirigidos, ponderados o no ponderados. Sirven para modelar redes de ordenadores, rutas GPS o relaciones en redes sociales.
A continuación, te presento una tabla resumen que suelo entregar a mis alumnos para repasar las complejidades en el caso promedio, un clásico en los exámenes de la AGE:
| Estructura de Datos | Acceso (Búsqueda) | Inserción | Borrado | Caso de uso típico |
|---|---|---|---|---|
| Array | O(1) por índice / O(n) búsqueda lineal | O(n) | O(n) | Colecciones de tamaño conocido y estático. |
| Lista Enlazada | O(n) | O(1) (si se conoce el nodo) | O(1) (si se conoce el nodo) | Estructuras de tamaño muy variable y dinámico. |
| Pila (Stack) - LIFO | O(n) | O(1) (Push) | O(1) (Pop) | Gestión de llamadas a subrutinas, deshacer acciones. |
| Cola (Queue) - FIFO | O(n) | O(1) (Enqueue) | O(1) (Dequeue) | Planificación de tareas en Sistemas Operativos. |
| Árbol Binario de Búsqueda | O(log n) (balanceado) | O(log n) | O(log n) | Búsquedas rápidas y diccionarios de datos. |
3. Algoritmos: Búsqueda y Ordenación
Un algoritmo es una secuencia finita, ordenada y no ambigua de pasos para resolver un problema. El tribunal exige conocer no solo qué hacen, sino su eficiencia mediante la Notación Asintótica Big-O.
En cuanto a algoritmos de ordenación, debes conocer a fondo:
- Ordenación de Burbuja (Bubble Sort): Compara elementos adyacentes y los intercambia si están en el orden incorrecto. Muy ineficiente, complejidad O(n²).
- Inserción y Selección: También tienen complejidad O(n²) en su caso medio y peor, útiles solo para listas muy pequeñas.
- QuickSort (Ordenación rápida): Basado en el paradigma "divide y vencerás". Elige un pivote y particiona el array. Su caso medio es excelente: O(n log n), aunque su peor caso degenera a O(n²).
- MergeSort (Ordenación por mezcla): También "divide y vencerás". Divide la lista en mitades hasta tener elementos individuales y luego los mezcla ordenadamente. Garantiza O(n log n) siempre, pero requiere espacio adicional de memoria.
En búsquedas, la gran diferencia está entre la búsqueda secuencial o lineal (que recorre uno a uno, O(n)) y la búsqueda binaria (que requiere que el array esté ordenado previamente, divide el espacio de búsqueda a la mitad en cada paso, logrando una eficiencia de O(log n)).
4. Organización de Ficheros
A diferencia de las estructuras en memoria (volátiles), la organización de ficheros trata de cómo se guardan los registros en soportes de almacenamiento secundario (discos), algo íntimamente ligado a los Sistemas operativos (Windows, Linux). Los tres modelos clásicos son:
- Organización Secuencial: Los registros se almacenan físicamente uno detrás de otro. Para leer el registro N, hay que leer los N-1 anteriores. Ideal para procesamientos por lotes (batch), como nóminas a fin de mes, pero pésimo para consultas interactivas.
- Organización Secuencial Indexada (ISAM): Los registros se guardan secuencialmente, pero se crea un archivo adicional más pequeño (el índice) compuesto por claves y punteros físicos, al estilo del índice de un libro. Permite acceso directo rápido.
- Organización Directa (Aleatoria o Hash): Se aplica una función matemática (función hash) a la clave del registro para calcular directamente su dirección física en el disco. Ofrece el acceso más rápido posible (teóricamente O(1)), pero sufre problemas de "colisiones" (cuando dos claves generan la misma dirección), requiriendo algoritmos de resolución como la exploración lineal o el encadenamiento.
5. Formatos de información y ficheros
La interoperabilidad es fundamental en la informática del Estado. Debes conocer cómo viajan y se estructuran los datos, especialmente para Aplicaciones web, HTML y XML:
- XML (eXtensible Markup Language): Lenguaje de marcas estandarizado por el W3C. Usa etiquetas anidadas, permite definir vocabularios propios y se valida mediante DTD o XML Schema. Es muy verboso y jerárquico.
- JSON (JavaScript Object Notation): Formato de texto ligero basado en pares atributo-valor e implementado sobre la sintaxis de JavaScript. Es el estándar actual en las APIs RESTful debido a su ligereza frente a XML.
- CSV (Comma-Separated Values): Archivo de texto plano donde cada línea es un registro de datos y los campos están separados por comas. Muy usado para exportar/importar datos tabulares.
¿Cómo se pregunta este tema en los exámenes TAI?
En los exámenes TAI, las preguntas sobre Estructuras de Datos suelen combinar teoría directa, reconocimiento de siglas y análisis de complejidad de algoritmos. Aquí te muestro 3 ejemplos reales del estilo que te encontrarás en las pruebas oficiales, con su correspondiente justificación técnica para que entrenes tu ojo opositor.
Ejemplo 1: Sobre estructuras dinámicas ¿Cuál de las siguientes estructuras de datos se rige por el principio LIFO (Last In, First Out)? A) Cola (Queue) B) Lista circular C) Pila (Stack) D) Árbol binario Explicación: La respuesta correcta es la C. Una pila o stack es una estructura donde el último elemento introducido es el primero en ser extraído (LIFO). Piensa en una pila de platos: el último plato que pones encima es el primero que lavas. Las colas (A) son FIFO. Las listas (B) y árboles (D) tienen políticas de acceso diferentes basadas en recorridos o posiciones.
Ejemplo 2: Sobre complejidad algorítmica Respecto al algoritmo de ordenación QuickSort, indique cuál es su complejidad algorítmica en el peor de los casos: A) O(log n) B) O(n²) C) O(n log n) D) O(1) Explicación: La correcta es la B. Aunque QuickSort es en promedio uno de los algoritmos más rápidos con una complejidad de O(n log n), su gran defecto (y lo que a las comisiones evaluadoras les encanta preguntar) es que en su peor caso (cuando la lista ya está ordenada o inversamente ordenada y se elige mal el pivote), su rendimiento decae catastróficamente a un tiempo cuadrático O(n²).
Ejemplo 3: Sobre formatos de ficheros En el lenguaje de marcas XML, ¿cuál de las siguientes afirmaciones es CORRECTA? A) Está diseñado para sustituir a HTML centrándose en el formato de presentación visual. B) Es insensible a mayúsculas y minúsculas (case-insensitive). C) Debe tener obligatoriamente un único elemento raíz que contenga a todos los demás elementos. D) Las etiquetas no necesitan ser cerradas obligatoriamente si no contienen texto. Explicación: La correcta es la C. Todo documento XML "bien formado" exige estrictamente tener un nodo o elemento raíz único. La A es falsa (XML transporta datos, HTML los presenta). La B es falsa (XML es estricto y case-sensitive). La D es falsa (toda etiqueta debe cerrarse explícitamente, o ser auto-cerrada como <tag/>).
Consejos para estudiar Estructuras de Datos para la oposición TAI
Estudiar algoritmos y estructuras no consiste en memorizar como un papagayo, sino en comprender la lógica subyacente. Para integrar este Tema 3 en tu estudio de manera efectiva de cara a los test de la oposición TAI, sigue las siguientes recomendaciones que siempre doy en mis tutorías:
- Dibuja en papel: No intentes entender los recorridos de árboles binarios (Preorden, Inorden, Postorden) o cómo se enlazan los punteros de una lista doblemente enlazada solo leyendo texto. Dibuja los nodos, dibuja las flechas y simula inserciones y borrados a mano. Tu cerebro retendrá la imagen visual.
- Hazte una tabla de Big-O: La notación asintótica asusta, pero se reduce a unas pocas reglas. Aprende de memoria la tabla comparativa de complejidades temporales en el mejor, medio y peor caso de los algoritmos de ordenación (Burbuja, QuickSort, MergeSort, HeapSort). Cae todos los años.
- Diferencia lógico de físico: Es crucial que entiendas que la "Organización de ficheros" habla de cómo el disco duro magnético o SSD graba los bloques físicos (conceptos relacionados con la Informática básica y arquitectura), mientras que un formato como XML o JSON es simplemente un estándar lógico de representación de caracteres independientemente del disco.
- Relaciona con la práctica: Cuando estudies el formato JSON, asócialo con el consumo de APIs web modernas. Cuando estudies Árboles B, asócialo con los índices de bases de datos relacionales en SQL. Conectar temas hace que el aprendizaje sea significativo.
- Practica mediante simulacros: La teoría abstracta se olvida rápido. La única manera de fijar conceptos como LIFO, colisiones Hash o la sintaxis estricta de XML es enfrentándote a preguntas redactadas por el tribunal calificador.
Practica con test de Estructuras de Datos en nuestra plataforma
¿Listo para poner a prueba tus conocimientos sobre Estructuras de Datos?
Accede a cientos de preguntas tipo test con respuestas explicadas y simulacros de examen real.
Empezar a practicar →Preguntas frecuentes sobre Estructuras de Datos en la oposición TAI
Para cerrar este extenso artículo, he recopilado las preguntas reales más comunes que me hacen los opositores noveles cuando empiezan a estudiar el Tema 3 de las oposiciones de informática de la AGE. Toma nota, porque resolver estas dudas te dará mucha tranquilidad mental.
¿Qué peso real tiene este tema en el primer ejercicio del examen TAI?
El peso es considerable. El examen TAI consta de un cuestionario único de 80 preguntas (más 5 de reserva) dividido en 4 bloques. El Bloque II suele aportar entre 15 y 20 preguntas del total. De ellas, históricamente, el Tema 3 relativo a algoritmos, estructuras y ficheros suele llevarse entre 3 y 5 preguntas. No puedes permitirte dejarlo en blanco.
¿Tengo que saber programar algoritmos completos en Java o C para aprobar?
No, absolutamente no. El Cuerpo de Técnicos Auxiliares de Informática (C1) tiene un enfoque práctico pero no exige desarrollo de código en pizarra electrónica ni exámenes prácticos de picar código. Lo que el tribunal evalúa es el pseudocódigo, la comprensión lógica de lo que hace el algoritmo y, sobre todo, su rendimiento y nomenclatura teórica.
¿Cuál es la diferencia entre Organización Secuencial e Indexada de ficheros?
La principal diferencia reside en la velocidad de acceso directo. Un fichero secuencial clásico te obliga a leer todos los registros anteriores para llegar al que buscas (como avanzar una cinta de casete antigua). El secuencial indexado (ISAM) añade una "tabla de contenidos" (el índice) para saltar casi directamente a la zona del disco donde está el dato, reduciendo drásticamente las operaciones de E/S.
Entre todos los algoritmos de ordenación, ¿cuál es el más preguntado?
Sin duda, QuickSort (Ordenación rápida) y Bubble Sort (Burbuja). Del método de la burbuja suelen preguntar su complejidad técnica (O(n²)) y su naturaleza elemental. De QuickSort preguntan insistentemente su estrategia ("divide y vencerás"), el concepto de elemento "pivote" y la particularidad de que su peor caso asintótico es deficiente frente a algoritmos como MergeSort.
En los test sobre formatos, ¿debo centrarme más en XML o en JSON?
En la actualidad, debes dominar ambos por igual. Hace una década, el 90% de las preguntas eran de XML (DTD, Schemas, XPath). Hoy, con la modernización de la Administración Electrónica hacia microservicios, el formato JSON y la arquitectura REST tienen una presencia altísima. Estudia exhaustivamente las diferencias de sintaxis (etiquetas vs. llaves/corchetes) entre ambos.
Como has podido comprobar, el camino hacia la plaza como funcionario informático pasa irremediablemente por interiorizar los tipos abstractos, los grafos, el hashing y las estructuras algorítmicas. Es un esfuerzo intelectual grande, pero profundamente gratificante y necesario. Si quieres consolidar todo lo que has leído hoy y medir tus fuerzas con garantías reales, te invito a probar nuestra plataforma de test TAI, donde encontrarás toda la teoría aplicada a preguntas extraídas directamente del histórico de la Administración General del Estado. ¡A por la plaza!