Skip to content

Arkanabytes/C

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 

Repository files navigation

🔧 C Programming Projects

C License Build

Una colección de proyectos y ejercicios de programación en C, desde conceptos básicos hasta implementaciones avanzadas.

📋 Descripción

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.

🗂️ Estructura del Repositorio

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

🚀 Comenzar

Prerequisitos

  • 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)

Instalación

  1. Clonar el repositorio:
git clone https://github.com/Arkanabytes/C.git
cd C
  1. Compilar un programa individual:
gcc -o programa programa.c
./programa
  1. Usar el Makefile (si está disponible):
make all          # Compilar todos los programas
make clean        # Limpiar archivos compilados
make programa     # Compilar un programa específico

📚 Contenido

🎯 Conceptos Básicos

  • 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

🏗️ Estructuras de Datos

  • 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

🔍 Algoritmos

  • Ordenamiento:
    • Bubble Sort
    • Selection Sort
    • Insertion Sort
    • Quick Sort
    • Merge Sort
  • Búsqueda:
    • Búsqueda Lineal
    • Búsqueda Binaria

💼 Proyectos

  • 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

🛠️ Compilación

Compilación Manual

# 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.c

Usando Makefile

CC = gcc
CFLAGS = -Wall -Wextra -std=c99
TARGET = programa
SOURCES = programa.c

$(TARGET): $(SOURCES)
	$(CC) $(CFLAGS) -o $(TARGET) $(SOURCES)

clean:
	rm -f $(TARGET)

🧪 Testing

Para probar los programas:

# Compilar y ejecutar
gcc -o test programa.c
./test

# Con debugging
gcc -g -o test programa.c
gdb ./test

📖 Guías de Estilo

Este 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

Ejemplo de Código

#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;
}

📝 Recursos de Aprendizaje

Libros Recomendados

  • "The C Programming Language" - Kernighan & Ritchie
  • "C: A Reference Manual" - Harbison & Steele
  • "Expert C Programming" - Peter van der Linden

Enlaces Útiles

🤝 Contribuir

¡Las contribuciones son bienvenidas! Para contribuir:

  1. Fork el repositorio
  2. Crear una rama para tu feature (git checkout -b feature/nueva-feature)
  3. Commit tus cambios (git commit -am 'Agregar nueva feature')
  4. Push a la rama (git push origin feature/nueva-feature)
  5. Crear un Pull Request

Guías de Contribución

  • 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

🐛 Reportar Issues

Si encuentras un bug o tienes una sugerencia:

  1. Revisa si ya existe un issue similar
  2. Crea un nuevo issue con:
    • Descripción clara del problema
    • Pasos para reproducir
    • Comportamiento esperado vs actual
    • Información del sistema (OS, compilador, etc.)

📊 Estadísticas del Proyecto

GitHub Stats

📄 Licencia

Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para más detalles.

🙏 Agradecimientos

  • 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

📞 Contacto


¡Happy Coding! 🚀

⭐ Si te gustó este proyecto, ¡dale una estrella!

GitHub stars

About

c

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published