Una colección de proyectos y ejercicios de programación en C, desde conceptos básicos hasta implementaciones avanzadas.
Este repositorio contiene una variedad de programas escritos en C que abarcan diferentes conceptos de programación, algoritmos y estructuras de datos. Está diseñado tanto para principiantes que están aprendiendo C como para desarrolladores que buscan referencias y ejemplos de implementación.
C/
├── basics/ # Conceptos fundamentales de C
│ ├── hello_world.c
│ ├── variables.c
│ └── control_flow.c
├── data_structures/ # Implementaciones de estructuras de datos
│ ├── linked_list.c
│ ├── stack.c
│ └── queue.c
├── algorithms/ # Algoritmos de ordenamiento y búsqueda
│ ├── sorting/
│ └── searching/
├── projects/ # Proyectos más complejos
│ ├── calculator/
│ ├── file_manager/
│ └── mini_shell/
├── utilities/ # Funciones de utilidad
│ └── utils.h
└── Makefile # Archivo de compilación
- Compilador de C: GCC, Clang, o cualquier compilador compatible con C99/C11
- Make (opcional, para usar el Makefile)
- Sistema operativo: Linux, macOS, o Windows (con MinGW)
- Clonar el repositorio:
git clone https://github.com/Arkanabytes/C.git
cd C- Compilar un programa individual:
gcc -o programa programa.c
./programa- Usar el Makefile (si está disponible):
make all # Compilar todos los programas
make clean # Limpiar archivos compilados
make programa # Compilar un programa específico- Variables y tipos de datos
- Operadores y expresiones
- Estructuras de control (if, while, for)
- Funciones y parámetros
- Arrays y strings
- Punteros y manejo de memoria
- Lista Enlazada: Implementación básica con inserción, eliminación y búsqueda
- Pila (Stack): Operaciones push, pop y peek
- Cola (Queue): Operaciones enqueue y dequeue
- Árbol Binario: Inserción, búsqueda y recorridos
- Hash Table: Implementación básica con manejo de colisiones
- Ordenamiento:
- Bubble Sort
- Selection Sort
- Insertion Sort
- Quick Sort
- Merge Sort
- Búsqueda:
- Búsqueda Lineal
- Búsqueda Binaria
- Calculadora: Calculadora básica con operaciones aritméticas
- Gestor de Archivos: Operaciones básicas de archivos
- Mini Shell: Implementación simple de un shell de comandos
# Compilar con flags de debugging
gcc -Wall -Wextra -g -o programa programa.c
# Compilar con optimización
gcc -O2 -o programa programa.c
# Compilar con standard específico
gcc -std=c99 -o programa programa.cCC = gcc
CFLAGS = -Wall -Wextra -std=c99
TARGET = programa
SOURCES = programa.c
$(TARGET): $(SOURCES)
$(CC) $(CFLAGS) -o $(TARGET) $(SOURCES)
clean:
rm -f $(TARGET)Para probar los programas:
# Compilar y ejecutar
gcc -o test programa.c
./test
# Con debugging
gcc -g -o test programa.c
gdb ./testEste proyecto sigue las siguientes convenciones:
- Indentación: 4 espacios (no tabs)
- Nombres de funciones:
snake_case - Nombres de variables:
snake_case - Constantes:
UPPER_CASE - Comentarios: Usar
//para líneas simples,/* */para bloques
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
// Función para intercambiar dos elementos
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int array[MAX_SIZE];
int size;
printf("Ingrese el tamaño del array: ");
scanf("%d", &size);
// Resto del programa...
return 0;
}- "The C Programming Language" - Kernighan & Ritchie
- "C: A Reference Manual" - Harbison & Steele
- "Expert C Programming" - Peter van der Linden
¡Las contribuciones son bienvenidas! Para contribuir:
- Fork el repositorio
- Crear una rama para tu feature (
git checkout -b feature/nueva-feature) - Commit tus cambios (
git commit -am 'Agregar nueva feature') - Push a la rama (
git push origin feature/nueva-feature) - Crear un Pull Request
- Asegúrate de que el código compile sin warnings
- Incluye comentarios explicativos
- Sigue las convenciones de estilo del proyecto
- Añade ejemplos de uso cuando sea apropiado
Si encuentras un bug o tienes una sugerencia:
- Revisa si ya existe un issue similar
- Crea un nuevo issue con:
- Descripción clara del problema
- Pasos para reproducir
- Comportamiento esperado vs actual
- Información del sistema (OS, compilador, etc.)
Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
- A la comunidad de C por mantener vivo este lenguaje fundamental
- A todos los contribuidores que hacen posible este proyecto
- A los recursos educativos que inspiraron estos ejemplos
- GitHub: @Arkanabytes
- Issues: Reportar un problema