ANSI C
Programación en ANSI C
Adquisición y Tratamiento de Datos
Licenciatura en Ciencias y Técnicas Estadísticas
Licenciatura en Ciencias y Técnicas Estadísticas
Apuntes de clase
Relaciones de ejercicios
Problemas y ejercicios resueltos
El juego de Nim
El juego de Nim (o juego de los palillos) consiste en que los jugadores vayan retirando palillos de un montón. Pierde el juego el jugador que se ve forzado a retirar el último palillo del montón.
Las siete y media
El juego de cartas de las siete y media consiste en ir pidiendo cartas intentando sumar 7.5 puntos sin pasarse. Gana el jugador que más se acerca a 7.5. Se utiliza una baraja española. Sota, caballo y rey valen medio punto. Las demás cartas puntúan según su valor numérico (de 1 a 7).
El problema de las N reinas
El problema consiste en colocar N reinas de ajedrez en un tablero de NxN de tal forma que ninguna reina esté amenazada (esto es, no puede haber dos reinas en la misma fila, ni en la misma columna, ni en la misma diagonal). El programa recibe como parámetro el número N de reinas que deseamos colocar en el tablero.
Alternativa 1: Encontrar una solución al problema ( código fuente .C | fichero ejecutable .EXE ).
Alternativa 2: Encontrar todas las soluciones del problema( código fuente .C | fichero ejecutable .EXE ).
WC: Contador de caracteres, palabras y líneas
Un pequeño programa en C que cuenta el número de caracteres, palabras y líneas de un fichero de texto (que lee de stdin).
Frecuencias
Un programa en C que muestra cuál es la frecuencia de cada carácter en un fichero de texto (que se lee de stdin). El programa muestra como resultado una tabla con los caracteres ordenados de mayor a menor frecuencia.
Filtro
Un programa en C que sólo muestra las líneas de un fichero que incluyen una determinada cadena (que se le pasa como parámetro al programa).
Cadenas de Markov
El problema consiste en generar textos "aleatorios" a partir de un texto de entrada que se toma como modelo. Partimos de un texto T cuyas últimas palabras representamos por P. Para elegir la palabra que añadiremos al texto T, escogemos al azar una palabra de las que aparecen a continuación de P en el texto que tomamos como modelo.
Aquí puede encontrar algunos textos con los que se puede comprobrar el funcionamiento del programa, precursor de los LLM actuales (grandes modelos del lenguaje, como los usados en ChatGPT, Grok y sistemas similares).
Modelo de coste temporal de las operaciones de C
Medición del tiempo necesario para realizar cada una de las operaciones que se realizan al ejecutar un programa: operaciones aritméticas con números enteros y reales, funciones matemáticas, comparaciones, acceso a los elementos de un vector...
Resultados medidos en una máquina concreta utilizando distintos compiladores de C (el tiempo de cada operación, en nanosegundos, aparece en la última columna): Borland C/C++ 3.1 (16 bits), Borland C/C++ 3.1 (32 bits), Borland C++ Builder 4, Watcom C/C++ 10.0.
Cuaderno de prácticas
Exámenes
Web original en Internet Archive: https://elvex.ugr.es/decsai/c/
Proyectos de programación
(mayoritariamente en ANSI C)
(mayoritariamente en ANSI C)
Bases de datos en C
Este programa completo permite gestionar bases de datos al estilo de dBase (crear tablas, actualizarlas, buscar datos en ellas, ordenar los datos, etc.). Las bibliotecas para el manejo de ficheros están escritas por completo en ANSI C y pueden reutilizarse en la construcción de aplicaciones más complejas.
Código fuente (ANSI C con bibliotecas auxiliares de E/S).
Ejecutables generados con el compilador de Watcom (véase el makefile incluido en el código fuente).
El fichero ZIP incluye un par de "bases de datos" (biblioteca de informática y diccionario de citas).
Módulos del sistema: El sistema está dividido en los siguientes módulos...
Programas
DB: Programa principal para manipular datos contenidos en ficheros (introducir datos, recorrer los datos existentes, realizar búsquedas u ordenar los datos).
DBMS: Programa para crear los ficheros en los que se almacenarán los datos (la estructura de las tablas de la base de datos).
Bibliotecas de manejo de datos
DB_DAT: Manipulación de ficheros de datos
DB_DOS: E/S de datos por pantalla en MS-DOS
DB_FRM: Manipulación de ficheros de formato (donde se define la estructura de las tablas de la base de datos).
DB_SEC: Acceso secuencial al fichero de datos (más eficiente que ir leyendo registro por registro).
DB_SORT: Ordenación de los datos de un fichero
DB_SRC: Búsqueda de datos en un fichero
Bibliotecas de algoritmos y TDAs
FB_CMP: Funciones de comparación (utilizadas por los métodos genéricos de ordenación).
FB_LIST: TDA Lista doblemente enlazada.
FB_TEXT: TDA Texto (lista dinámica de cadenas de caracteres).
FB_STR: Algoritmos de búsqueda en cadenas de caracteres (búsqueda eficiente de subcadenas y búsqueda con expresiones regulares, no tan eficiente).
Bibliotecas auxiliares de E/S
FBG_CRT: E/S por pantalla.
FBG_DATE: E/S de fechas.
FBG_KBD: Control del teclado (a bajo nivel).
FBG_MENU: Creación dinámica de menús.
FBG_TEXT: E/S de textos.
FBG_UTIL: Utilidades varias de E/S de cadenas de caracteres y números.
Procesamiento de imágenes en C
Todos los algoritmos de procesamiento de imágenes están implementados en ANSI C y la interfaz gráfica ha sido desarrollada utilizando el C++Builder de Borland/Inprise.
Imágenes de ejemplo (en formato GRX)
Este software recoge algunos de los algoritmos más empleados en Procesamiento de Imágenes y en Visión Artificial:
Reflejado, rotación, escala y zoom por interpolación
Suavizado, afilado y gradiente
Modificación del histograma: Negativado, ecualización, extensión del contraste...
Morfología: Erosión, dilatación, apertura, clausura, gradiente, suavizado...
Segmentación: Umbralización automática (histéresis, entropía, Otsu, Pun, Kapur, Yager, error mínimo, relajación...) y texturas (energía, contraste, homogeneidad, entropía...)
Detección de contornos: laplaciana, cracks, Marr/Hildreth, Canny, Shen/Castan, congruencia de fase...
Transformada de Fourier: filtros paso bajo y paso alto (ideal, Butterworth y exponencial), filtros paso banda (ideal y exponencial) y filtros homomórficos
Transformadas de Haar, Daubechies y Walsh.
Transformada de Hough para la detección de líneas
Ruido aditivo y multiplicativo (uniforme, normal o exponencial)
Para obtener información adicional, se recomiendan los siguientes libros:
A. K. JAIN
"Fundamentals of Digital Image Processing"
Prentice Hall, 1989.
J. R. PARKER
"Algorithms for Image Processing and Computer Vision"
John Wiley & Sons, 1997