Tema 71: Tipos de datos, estructuras y ficheros
1. Tipos elementales de datos
Los tipos de datos elementales son las bases fundamentales para la representación de la información en los sistemas. Entre los más comunes se encuentran:
- Numéricos: Enteros (int) y reales (float/double).
- Carácter: Representación de un solo símbolo (char).
- Booleanos: Valores lógicos (true/false).
Estos tipos son cruciales para operaciones básicas y se utilizan como bloques de construcción en estructuras de datos más complejas.
2. Estructuras convencionales de datos
Son organización de datos que facilitan el almacenamiento y acceso eficiente a la información. Ejemplos:
- Arrays (vectores): Colecciones de datos homogéneos indexados.
- Matrices: Extensión de los arrays para datos multidimensionales.
- Registros (structs): Conjunto de campos heterogéneos.
- Listas: Secuencia ordenada de elementos, pudiendo ser simples, dobles o circulares.
- Pilas y colas: Estructuras lineales con operaciones restringidas (LIFO y FIFO, respectivamente).
3. Estructuras dinámicas de datos
Estas estructuras permiten una gestión flexible de la memoria y son fundamentales en problemas complejos:
- Listas enlazadas: Nodos que contienen datos y referencias a otros nodos.
- Árboles: Estructuras jerárquicas donde cada nodo tiene hijos.
- Especialmente útiles: árboles binarios y árboles de búsqueda.
- Grafos: Conjuntos de nodos conectados mediante aristas.
- Clasificación: dirigidos/no dirigidos y ponderados/no ponderados.
- Tablas hash: Asociación eficiente clave-valor mediante funciones hash.
4. Ficheros: tipos, descripción y funcionalidad
Los ficheros son estructuras para almacenar datos de manera persistente. Los principales tipos incluyen:
- De texto: Datos en formato legible (ASCII o Unicode).
- Binarios: Datos en formato no legible, optimizados para rendimiento.
Clasificación según contenido:
- Ficheros de datos, ejecutables, configuración, registros, entre otros.
Clasificación según acceso:
- Secuenciales: Lectura y escritura en orden.
- Aleatorios: Acceso directo a cualquier parte.
5. Organización de ficheros
La organización afecta al rendimiento y facilidad de uso. Principales modelos:
- Organización secuencial: Los registros se almacenan uno tras otro.
- Organización indexada: Uso de índices para acelerar el acceso.
- Organización directa: Acceso mediante cálculos en la posición física (hash).
6. Métodos de acceso en ficheros
Los métodos de acceso definen cómo se procesan los datos en un fichero:
- Acceso secuencial: Lectura o escritura en orden lineal.
- Acceso directo: Permite saltar a cualquier punto del fichero.
- Acceso indexado: Combina secuencialidad con índices.
- Acceso por particiones: División del fichero en bloques o segmentos.
Entendido, voy a generar un conjunto de preguntas con sus respectivas respuestas explicadas. Aquí tienes el primer bloque:
Pregunta 1: ¿Qué tipo de dato se utiliza para representar valores lógicos en los sistemas de programación?
- Entero
- Real
- Booleano
- Carácter
Respuesta correcta: 3. Booleano
- Justificación: Los valores lógicos representan dos estados: verdadero (true) y falso (false). Esto se realiza a través del tipo de dato booleano, fundamental en operaciones condicionales y control de flujo.
Respuestas incorrectas:
- 1. Entero: Aunque los enteros pueden usarse para simular valores lógicos (e.g., 0 para falso y 1 para verdadero), no es su propósito principal.
- 2. Real: Los datos reales son números con punto decimal y no se relacionan con valores lógicos.
- 4. Carácter: Los caracteres almacenan un único símbolo textual, no valores lógicos.
Pregunta 2: ¿Cuál de las siguientes es una estructura de datos dinámica?
- Array
- Lista enlazada
- Registro (struct)
- Matriz
Respuesta correcta: 2. Lista enlazada
- Justificación: Las listas enlazadas son dinámicas porque permiten añadir o eliminar nodos durante la ejecución del programa, gestionando eficientemente la memoria.
Respuestas incorrectas:
- 1. Array: Es una estructura estática, ya que su tamaño se define al inicio y no puede cambiar.
- 3. Registro: Los registros son estructuras convencionales que agrupan campos heterogéneos, pero su tamaño es fijo.
- 4. Matriz: Como extensión del array, su tamaño también se define de forma estática.
Pregunta 3: ¿Cuál es la organización de ficheros que permite acceso rápido mediante índices?
- Secuencial
- Directa
- Indexada
- Por particiones
Respuesta correcta: 3. Indexada
- Justificación: En la organización indexada, los índices actúan como punteros que facilitan el acceso directo a registros específicos, optimizando la velocidad de búsqueda.
Respuestas incorrectas:
- 1. Secuencial: Los registros se leen en orden, lo que puede ser lento si se busca un dato específico.
- 2. Directa: Aunque permite acceso rápido mediante cálculo de posición, no utiliza índices intermedios.
- 4. Por particiones: Se refiere a dividir un fichero en bloques, pero no facilita directamente el acceso mediante índices.
Pregunta 4: ¿Qué método de acceso se caracteriza por la lectura lineal de los registros?
- Secuencial
- Directo
- Indexado
- Hash
Respuesta correcta: 1. Secuencial
- Justificación: El acceso secuencial lee los registros en el orden en que están almacenados, sin saltar posiciones. Es útil para procesar todos los datos.
Respuestas incorrectas:
- 2. Directo: Permite saltar a cualquier posición, sin necesidad de seguir un orden lineal.
- 3. Indexado: Usa índices para acceso específico, no para lectura continua.
- 4. Hash: Utiliza funciones hash para calcular posiciones, no sigue un orden predefinido.
Pregunta 5: ¿Cuál es el objetivo principal de las tablas hash?
- Almacenar datos jerárquicos.
- Optimizar el almacenamiento de datos binarios.
- Asociar claves y valores de forma eficiente.
- Ordenar registros de manera secuencial.
Respuesta correcta: 3. Asociar claves y valores de forma eficiente
- Justificación: Las tablas hash permiten acceder a valores asociados a claves únicas de forma rápida, utilizando funciones hash para calcular su ubicación.
Respuestas incorrectas:
- 1. Almacenar datos jerárquicos: Esto es propio de los árboles, no de las tablas hash.
- 2. Optimizar almacenamiento de datos binarios: Las tablas hash no están diseñadas específicamente para datos binarios.
- 4. Ordenar registros de manera secuencial: Las tablas hash no garantizan ningún orden en los datos almacenados.
Aquí tienes un nuevo bloque de preguntas con el mismo formato:
Pregunta 6: ¿Qué estructura de datos sería la más adecuada para representar una jerarquía, como un árbol genealógico?
- Lista enlazada
- Árbol
- Grafo
- Tabla hash
Respuesta correcta: 2. Árbol
- Justificación: Un árbol es la estructura más adecuada para representar jerarquías, ya que cada nodo puede tener un conjunto de nodos hijos, estableciendo relaciones padre-hijo.
Respuestas incorrectas:
- 1. Lista enlazada: Solo permite relaciones lineales, no jerárquicas.
- 3. Grafo: Aunque puede representar relaciones complejas, no está optimizado para jerarquías con un nodo raíz.
- 4. Tabla hash: Es útil para asociaciones clave-valor, pero no para estructurar datos jerárquicos.
Pregunta 7: ¿Qué tipo de fichero es el más adecuado para almacenar configuraciones legibles por humanos?
- Binario
- Texto
- Indexado
- Directo
Respuesta correcta: 2. Texto
- Justificación: Los ficheros de texto son legibles por humanos y se utilizan comúnmente para almacenar configuraciones en formatos como JSON, XML o INI.
Respuestas incorrectas:
- 1. Binario: Es más eficiente en términos de espacio y rendimiento, pero no es legible sin herramientas específicas.
- 3. Indexado: La organización indexada no está relacionada con la legibilidad.
- 4. Directo: Se refiere al método de acceso, no a la estructura del fichero.
Pregunta 8: ¿Cuál es una ventaja clave de las listas enlazadas frente a los arrays?
- Mayor velocidad de acceso por índice.
- Uso eficiente de memoria para inserciones y eliminaciones.
- Menor uso de memoria en general.
- Soporte para datos heterogéneos.
Respuesta correcta: 2. Uso eficiente de memoria para inserciones y eliminaciones
- Justificación: Las listas enlazadas no requieren reasignar memoria para agregar o eliminar elementos, a diferencia de los arrays, donde las operaciones pueden ser costosas si requieren redimensionamiento.
Respuestas incorrectas:
- 1. Mayor velocidad de acceso por índice: Las listas enlazadas no tienen índices directos; su acceso es secuencial.
- 3. Menor uso de memoria en general: Las listas enlazadas consumen más memoria debido a los punteros adicionales.
- 4. Soporte para datos heterogéneos: Esto también es posible con registros, pero no es una ventaja exclusiva de las listas enlazadas.
Pregunta 9: ¿Qué método de acceso es el más eficiente para grandes volúmenes de datos con claves únicas?
- Secuencial
- Directo
- Indexado
- Hash
Respuesta correcta: 4. Hash
- Justificación: Las tablas hash permiten acceder rápidamente a los datos utilizando claves únicas, con complejidad promedio de O(1) para búsquedas e inserciones.
Respuestas incorrectas:
- 1. Secuencial: Es lento para grandes volúmenes, ya que requiere recorrer todos los registros.
- 2. Directo: Requiere un cálculo preciso de posición, pero no es eficiente para claves complejas.
- 3. Indexado: Es eficiente, pero generalmente más lento que el hashing para búsquedas directas.
Pregunta 10: ¿Cuál de las siguientes estructuras permite relaciones complejas entre nodos, como redes sociales?
- Árbol
- Grafo
- Pila
- Array
Respuesta correcta: 2. Grafo
- Justificación: Los grafos permiten representar relaciones complejas entre nodos, como amigos en una red social, donde los nodos representan personas y las aristas, las relaciones.
Respuestas incorrectas:
- 1. Árbol: Es adecuado para jerarquías, pero no para relaciones complejas entre nodos.
- 3. Pila: Es una estructura lineal sin conexiones entre elementos.
- 4. Array: No soporta relaciones entre elementos, solo un almacenamiento secuencial.
¡Por supuesto! Aquí tienes un nuevo conjunto de 10 preguntas, con las respectivas explicaciones:
Pregunta 11: ¿Qué estructura de datos es más adecuada para implementar un sistema de deshacer (undo)?
- Cola
- Pila
- Árbol
- Lista enlazada
Respuesta correcta: 2. Pila
- Justificación: Las pilas funcionan con el principio LIFO (último en entrar, primero en salir), ideal para sistemas de deshacer donde la última acción realizada es la primera en revertirse.
Respuestas incorrectas:
- 1. Cola: Funciona con el principio FIFO, lo que no es adecuado para deshacer.
- 3. Árbol: No está diseñado para manejar un historial de acciones.
- 4. Lista enlazada: Aunque podría usarse, no es tan eficiente ni natural como la pila para esta tarea.
Pregunta 12: ¿Qué característica define una matriz frente a un array?
- Los elementos pueden ser heterogéneos.
- Tiene múltiples dimensiones.
- Permite acceso directo por claves.
- Usa memoria dinámica.
Respuesta correcta: 2. Tiene múltiples dimensiones
- Justificación: Una matriz es una extensión de un array, con dos o más dimensiones, lo que permite representar datos tabulares.
Respuestas incorrectas:
- 1. Los elementos pueden ser heterogéneos: Los elementos de una matriz deben ser homogéneos.
- 3. Permite acceso directo por claves: Esto es propio de tablas hash, no de matrices.
- 4. Usa memoria dinámica: No es obligatorio para una matriz; muchas veces se almacenan en memoria estática.
Pregunta 13: ¿Qué ventaja tiene la organización de ficheros directa sobre la secuencial?
- Ocupa menos espacio en disco.
- Permite acceso más rápido a registros específicos.
- Es más fácil de implementar.
- Mejora la integridad de los datos.
Respuesta correcta: 2. Permite acceso más rápido a registros específicos
- Justificación: La organización directa permite saltar a cualquier registro calculando su posición, en lugar de recorrer los registros secuencialmente.
Respuestas incorrectas:
- 1. Ocupa menos espacio en disco: El espacio depende más de los datos y no del método de organización.
- 3. Es más fácil de implementar: La implementación es más compleja que la secuencial.
- 4. Mejora la integridad de los datos: Esto no depende directamente del método de organización.
Pregunta 14: ¿Qué estructura es más adecuada para almacenar una cola de impresión?
- Lista enlazada circular
- Árbol binario
- Cola
- Pila
Respuesta correcta: 3. Cola
- Justificación: La cola sigue el principio FIFO (primero en entrar, primero en salir), ideal para manejar trabajos en el orden en que se reciben.
Respuestas incorrectas:
- 1. Lista enlazada circular: Aunque puede implementarse como base, no es el modelo lógico ideal.
- 2. Árbol binario: No es necesario estructurar las tareas jerárquicamente.
- 4. Pila: El LIFO de las pilas no refleja el comportamiento de una cola de impresión.
Pregunta 15: ¿Qué método de acceso a ficheros es más adecuado para procesar todos los registros uno por uno?
- Secuencial
- Directo
- Indexado
- Hash
Respuesta correcta: 1. Secuencial
- Justificación: El acceso secuencial es óptimo para recorrer todos los registros en el orden en que se encuentran almacenados.
Respuestas incorrectas:
- 2. Directo: Está pensado para acceso puntual, no para procesamiento completo.
- 3. Indexado: Se usa para localizar registros específicos rápidamente.
- 4. Hash: Se centra en búsquedas eficientes por clave, no en recorrer secuencialmente.
Pregunta 16: ¿Qué tipo de estructura de datos permite almacenar pares clave-valor?
- Array
- Tabla hash
- Pila
- Cola
Respuesta correcta: 2. Tabla hash
- Justificación: Las tablas hash están diseñadas para almacenar y acceder a pares clave-valor de forma eficiente mediante funciones hash.
Respuestas incorrectas:
- 1. Array: No permite asociar claves con valores directamente.
- 3. Pila: Es una estructura LIFO, no diseñada para pares clave-valor.
- 4. Cola: Funciona bajo el principio FIFO y no admite pares clave-valor.
Pregunta 17: ¿Qué estructura de datos es ideal para modelar redes, como carreteras o vuelos?
- Árbol binario
- Grafo
- Lista enlazada
- Pila
Respuesta correcta: 2. Grafo
- Justificación: Los grafos son ideales para modelar redes, ya que pueden representar relaciones complejas como conexiones entre ciudades o vuelos.
Respuestas incorrectas:
- 1. Árbol binario: No puede representar relaciones complejas como las redes.
- 3. Lista enlazada: Es lineal y no adecuada para conexiones múltiples.
- 4. Pila: No tiene la capacidad de modelar relaciones.
Pregunta 18: ¿Cuál es una desventaja de las listas enlazadas frente a los arrays?
- Uso de memoria adicional por los punteros.
- Incapacidad de modificar su tamaño.
- Complejidad para insertar elementos.
- Acceso secuencial a los elementos.
Respuesta correcta: 1. Uso de memoria adicional por los punteros
- Justificación: Las listas enlazadas requieren memoria extra para almacenar referencias a los nodos siguiente y/o anterior.
Respuestas incorrectas:
- 2. Incapacidad de modificar su tamaño: Las listas enlazadas son dinámicas.
- 3. Complejidad para insertar elementos: La inserción es sencilla en listas enlazadas.
- 4. Acceso secuencial a los elementos: Aunque es una limitación, no es una desventaja exclusiva frente a arrays.
Pregunta 19: ¿Qué método de acceso se combina con índices para optimizar la búsqueda?
- Secuencial
- Directo
- Indexado
- Hash
Respuesta correcta: 3. Indexado
- Justificación: El método indexado utiliza índices como punteros para localizar registros más rápido sin recorrer todo el fichero.
Respuestas incorrectas:
- 1. Secuencial: No usa índices.
- 2. Directo: Usa cálculos para acceder directamente a posiciones, pero no índices.
- 4. Hash: Es un enfoque basado en claves únicas, no en índices.
Pregunta 20: ¿Qué estructura permite gestionar tareas con prioridad?
- Cola simple
- Cola de prioridad
- Árbol binario
- Lista enlazada
Respuesta correcta: 2. Cola de prioridad
- Justificación: La cola de prioridad asigna niveles a las tareas, procesando primero las más prioritarias.
Respuestas incorrectas:
- 1. Cola simple: Procesa en orden FIFO, sin prioridades.
- 3. Árbol binario: Aunque podría implementarse, no es específico para manejar prioridades.
- 4. Lista enlazada: No incluye una gestión explícita de prioridades.