• +34 685 967 885
  • +34 695 898 191
  • antgarprats@gmail.com
  • Antonio García Prats

inteligencia artificial

Inteligencia artificial

La inteligencia artificial (IA) es un campo de la informática que permite desarrollar sistemas capaces de realizar tareas que típicamente requieren de la inteligencia humana. Estas tareas incluyen aprendizaje, razonamiento, toma de decisiones, reconocimiento de patrones, procesamiento del lenguaje natural, entre otras. En lenguaje C, aunque no es el más común para desarrollar sistemas avanzados de IA (donde Python domina), se pueden implementar soluciones básicas como sistemas expertos, redes neuronales simples y programas que simulan aprendizaje.

A continuación, se presenta un programa en C que simula un sistema básico de IA que puede aprender respuestas a preguntas específicas introducidas por el usuario y almacenarlas para usarlas posteriormente. Aunque es un ejemplo básico, introduce conceptos fundamentales de IA como la interacción, almacenamiento y simulación de aprendizaje.

Código completo simulando la inteligencia artificial

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// Definimos el tamaño máximo para preguntas y respuestas
#define MAX_QUESTIONS 100
#define MAX_LENGTH 256

// Estructura para almacenar preguntas y respuestas
typedef struct {
    char question[MAX_LENGTH];
    char answer[MAX_LENGTH];
} QA_Pair;

// Funciones principales
void learn(QA_Pair qa[], int *count);
void respond(QA_Pair qa[], int count);
void listKnowledge(QA_Pair qa[], int count);

int main() {
    QA_Pair qa[MAX_QUESTIONS]; // Array para almacenar preguntas y respuestas
    int count = 0;             // Número de pares almacenados
    int option;

    printf("Sistema básico de inteligencia artificial\n");
    printf("=========================================\n");

    do {
        printf("\nSeleccione una opción:\n");
        printf("1. Aprender nueva pregunta/respuesta\n");
        printf("2. Responder una pregunta\n");
        printf("3. Mostrar todo el conocimiento\n");
        printf("4. Salir\n");
        printf("Opción: ");
        scanf("%d", &option);
        getchar(); // Consumir el carácter de nueva línea

        switch (option) {
            case 1:
                learn(qa, &count);
                break;
            case 2:
                respond(qa, count);
                break;
            case 3:
                listKnowledge(qa, count);
                break;
            case 4:
                printf("Saliendo del sistema. ¡Hasta pronto!\n");
                break;
            default:
                printf("Opción no válida. Intente de nuevo.\n");
        }
    } while (option != 4);

    return 0;
}

// Función para aprender una nueva pregunta/respuesta
void learn(QA_Pair qa[], int *count) {
    if (*count >= MAX_QUESTIONS) {
        printf("Base de datos llena. No se pueden agregar más preguntas.\n");
        return;
    }

    printf("Ingrese la pregunta: ");
    fgets(qa[*count].question, MAX_LENGTH, stdin);
    strtok(qa[*count].question, "\n"); // Eliminar el salto de línea

    printf("Ingrese la respuesta: ");
    fgets(qa[*count].answer, MAX_LENGTH, stdin);
    strtok(qa[*count].answer, "\n"); // Eliminar el salto de línea

    (*count)++;
    printf("Pregunta y respuesta aprendidas correctamente.\n");
}

// Función para responder a una pregunta
void respond(QA_Pair qa[], int count) {
    char input[MAX_LENGTH];
    printf("Ingrese su pregunta: ");
    fgets(input, MAX_LENGTH, stdin);
    strtok(input, "\n"); // Eliminar el salto de línea

    for (int i = 0; i < count; i++) {
        if (strcmp(input, qa[i].question) == 0) {
            printf("Respuesta: %s\n", qa[i].answer);
            return;
        }
    }
    printf("Lo siento, no tengo una respuesta para esa pregunta.\n");
}

// Función para listar todo el conocimiento almacenado
void listKnowledge(QA_Pair qa[], int count) {
    if (count == 0) {
        printf("No hay conocimiento almacenado aún.\n");
        return;
    }

    printf("\nConocimiento almacenado:\n");
    for (int i = 0; i < count; i++) {
        printf("Pregunta: %s\n", qa[i].question);
        printf("Respuesta: %s\n", qa[i].answer);
    }
}

Explicación del Código

Líneas 1-5: Inclusión de librerías y definiciones

-Se incluyen las librerías estándar necesarias para trabajar con entrada/salida (stdio.h), memoria dinámica (stdlib.h) y manipulación de cadenas (string.h).

-Se define el tamaño máximo para las preguntas/respuestas y el número máximo de pares que el sistema puede almacenar.

Estructura QA_Pair

-Almacena una pregunta y su respuesta correspondiente como cadenas de caracteres (char).

Funciones principales

learn: Permite agregar una nueva pregunta y su respuesta. Actualiza el contador de pares almacenados.

respond: Busca una pregunta en el conocimiento almacenado y devuelve su respuesta si la encuentra.

listKnowledge: Imprime todas las preguntas y respuestas aprendidas.

main

-Maneja la interacción del usuario mediante un menú. Llama a las funciones según la opción seleccionada.

Flujo de control

-Un bucle do-while permite al usuario realizar múltiples operaciones hasta que decide salir (opción 4).

Aplicaciones prácticas en C

Sistemas expertos básicos: Podrías implementar un sistema de toma de decisiones para diagnósticos médicos o solución de problemas específicos.

Algoritmos de aprendizaje supervisado: Con mayor complejidad, se pueden implementar redes neuronales o métodos como el perceptrón.

Reconocimiento de patrones: Procesamiento de datos de sensores, identificación de tendencias o clasificación.

Futuro: Aunque C no es el lenguaje ideal para IA avanzada, puede usarse para optimizar partes críticas (como el entrenamiento de redes neuronales) en sistemas de alto rendimiento debido a su eficiencia.


Este código básico muestra cómo trabajar con entrada/salida y estructuras de datos para construir un programa capaz de «aprender». Es un punto de partida ideal para proyectos más avanzados en el campo de la inteligencia artificial.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *