CLRS Kit Españolclrs-kit-esp es una extensión para Visual Studio Code orientada al soporte de un lenguaje de pseudocódigo, fuertemente inspirado en la sintaxis utilizada en el libro Introducción a Algoritmos (CLRS). 💻 Inicio rápido
Recomendado:⚙️ Estado actual (versión 1.2.5)
📖 Filosofía del lenguajeEl lenguaje está diseñado bajo los siguientes principios:
🛠️ Requisitos
🧑💻 AutorProyecto desarrollado por j-hernandez-dev como herramienta educativa abierta. 📜 Licencia (GPLv2)Este proyecto es de código abierto. Puede ser modificado y extendido libremente, siempre que se mantenga la atribución al autor original. ⚠️ Problemas conocidos
🧮 Características del lenguajeComentariosCLRS únicamente admite comentarios de una sola línea mediante
Copiar código
VariablesLas variables son dinámicas y débilmente tipadas. Esto significa que pueden almacenar valores de distintos tipos y cambiar de tipo durante la ejecución mediante conversiones implícitas cuando sea necesario.
Copiar código
Las variables son siempre mutables; el lenguaje no dispone de constantes. Su ámbito es local a la función donde se definen y la asignación se realiza mediante el operador
Copiar código
Las variables deben inicializarse en el momento de su creación, por lo que no es posible declararlas sin asignarles un valor inicial. Los valores admitidos son numéricos, cadenas y lógicos.
Copiar código
ArreglosLos arreglos son dinámicos. Su tamaño y número de dimensiones se determinan automáticamente conforme se accede a nuevas posiciones.
Copiar código
Es posible asignar un arreglo completo a una variable o el contenido de una variable a un arreglo. En ambos casos, la asignación copia el contenido correspondiente.
Copiar código
Entrada y salidaLa instrucción
Copiar código
La instrucción
Copiar código
Estructuras de selecciónLa única estructura de selección es
Copiar código
OperadoresCLRS dispone de operadores lógicos, relacionales y aritméticos similares a los de otros lenguajes. La comparación de igualdad utiliza el operador
Copiar código
Ciclo
|
| Función CLRS | Descripción | Retorno |
|---|---|---|
LEER_ARCHIVO(ruta) |
Lee el contenido de un archivo de texto. | Cadena |
EXISTE_ARCHIVO(ruta) |
Verifica si un archivo existe. | Lógico |
PESO_ARCHIVO(ruta) |
Obtiene el tamaño del archivo en bytes. | Número |
CREAR_ARCHIVO(ruta) |
Crea un archivo vacío. | - |
ESCRIBIR_ARCHIVO(ruta, contenido) |
Escribe contenido al final del archivo. | - |
ELIMINAR_ARCHIVO(ruta) |
Elimina un archivo si existe. | - |
🔢 Matemáticas
| Función CLRS | Descripción | Retorno |
|---|---|---|
ASB(x) |
Valor absoluto de un número. | Número |
MIN(a, b) |
Devuelve el menor de dos valores. | Número |
MAX(a, b) |
Devuelve el mayor de dos valores. | Número |
REDONDEA(x) |
Redondea al entero más cercano. | Número |
PISO(x) |
Redondea hacia abajo. | Número |
RAIZ(x) |
Raíz cuadrada. | Número |
RAIZCUB(x) |
Raíz cúbica. | Número |
EXP(x) |
e elevado a x. | Número |
LOGN(x) |
Logaritmo natural. | Número |
LOG10(x) |
Logaritmo base 10. | Número |
LOG2(x) |
Logaritmo base 2. | Número |
SEN(x) |
Seno de un ángulo. | Número |
COS(x) |
Coseno de un ángulo. | Número |
TAN(x) |
Tangente de un ángulo. | Número |
ARC(x) |
Arcoseno. | Número |
ARCOCOS(x) |
Arcocoseno. | Número |
RAD(x) |
Convierte grados a radianes. | Número |
GRAD(x) |
Convierte radianes a grados. | Número |
PI() |
Constante π. | Número |
E() |
Constante e. | Número |
ALEAT(min, max) |
Número aleatorio. | Número |
PROM(x) |
Promedio de un arreglo. | Número |
SUM(x) |
Suma total de un arreglo. | Número |
MED(x) |
Mediana de un conjunto. | Número |
VAR(x) |
Varianza de un conjunto. | Número |
🔤 Cadenas
| Función CLRS | Descripción | Retorno |
|---|---|---|
LONG(x) |
Longitud de una cadena o estructura. | Número |
CAR_EN(cadena, posición) |
Obtiene un carácter en una posición. | Cadena |
SUBCAD(cadena, inicio, fin) |
Extrae una subcadena. | Cadena |
MAYUS(cadena) |
Convierte a mayúsculas. | Cadena |
MAYUS(cadena) |
Convierte a minúsculas. | Cadena |
RECORTA(cadena) |
Elimina espacios en blanco. | Cadena |
REEMP(cadena, viejo, nuevo) |
Reemplaza texto. | Cadena |
DIV(cadena, separador) |
Divide en arreglo. | Arreglo |
ES_CAD_NUM(cadena) |
Verifica si es número. | Lógico |
ES_VAC(cadena) |
Verifica si está vacía. | Lógico |
EMP_CON(cadena, texto) |
Verifica prefijo. | Lógico |
TERM_CON(cadena, texto) |
Verifica sufijo. | Lógico |
📦 Arreglos
| Función CLRS | Descripción | Retorno |
|---|---|---|
AGREGA(arreglo, valor) |
Agrega un elemento al final. | Arreglo |
ELIM(arreglo, índice) |
Elimina un elemento. | Arreglo |
INSER(arreglo, índice, valor) |
Inserta en posición. | Arreglo |
INDICE(arreglo, valor) |
Índice de un elemento. | Número |
CONT(arreglo, valor) |
Verifica existencia. | Lógico |
ORDENA(arreglo) |
Ordena el arreglo. | Arreglo |
INVER(arreglo) |
Invierte el arreglo. | Arreglo |
COPIA(arreglo) |
Copia el arreglo. | Arreglo |
UNE(arreglo, separador) |
Une elementos en cadena. | Cadena |
🔩 Tipos
| Función CLRS | Descripción | Retorno |
|---|---|---|
ES_NUM(valor) |
Verifica si un valor es de tipo numérico. | Lógico |
ES_CAD(valor) |
Verifica si un valor es de tipo cadena. | Lógico |
ES_LOG(valor) |
Verifica si un valor es de tipo lógico (booleano). | Lógico |
A_CAD(valor) |
Convierte un valor a una cadena de texto. | Cadena |
A_NUM(valor) |
Convierte un valor a un número. | Número |
A_LOG(valor) |
Convierte un valor a un valor lógico. | Lógico |
⚠️ Errores
| Función CLRS | Descripción | Retorno |
|---|---|---|
LANZAR_ERROR(mensaje) |
Genera un error con un mensaje personalizado e interrumpe la ejecución. | - |
📊 Análisis de costo
El análisis de costo permite visualizar cómo se construye la función de costo de un algoritmo de forma teórica directamente desde el código fuente.
| Funcionalidad | Descripción |
|---|---|
| Expresión de costo de bloque | Muestra la expresión de costo encima de funciones y estructuras de control. |
| Expresión de costo de línea | Muestra el costo individual de cada instrucción al final de la línea correspondiente. |
| Copiar expresión | Permite copiar cualquier expresión de costo al portapapeles mediante un clic. |
| Mostrar/Ocultar | Activa o desactiva toda la visualización del análisis desde un botón en el editor. |
La herramienta de análisis de costo genera expresiones de costo a partir del Árbol de Sintaxis Abstracta (AST). El análisis se basa únicamente en la estructura sintáctica del código y no realiza un análisis semántico avanzado.
Por ello, estructuras cuya complejidad depende del comportamiento de las variables, de la reducción del problema en bucles o de la recursión no pueden resolverse automáticamente. Estos son los casos en los que la herramienta no puede determinar el costo de forma exacta.
| Complejidad | Determina el costo | Observaciones |
|---|---|---|
| O(1) | ✅ | Operaciones de costo constante. |
| O(n) | ✅ | Bucles lineales y recorridos simples. |
| O(n²) | ✅ | Dos niveles de iteración anidados. |
| O(n³) | ✅ | Tres niveles de iteración anidados. |
| O(nᵏ) | ✅ | Cualquier número fijo de ciclos anidados puede deducirse estructuralmente. |
| O(log n) | ❌ | Requiere identificar reducciones del problema (por ejemplo, dividir entre dos en cada iteración). |
| O(n log n) | ❌ | Generalmente implica recursión o una combinación de iteración con reducción del problema. |
| O(2ⁿ) | ❌ | Requiere analizar recursión múltiple o crecimiento exponencial. |
| O(n!) | ❌ | Depende de estructuras recursivas o permutaciones, no sólo de la sintaxis. |
| Complejidades definidas por recurrencias | ❌ | Es necesario resolver ecuaciones de recurrencia mediante técnicas matemáticas. |
Aunque no calcula automáticamente la notación asintótica, sí genera la función de costo correspondiente, la cual puede simplificarse algebraicamente para obtener la notación Big O.
No sustituye el análisis manual, pero proporciona una referencia visual que facilita el análisis de costo en una amplia variedad de casos.



















