proyectos - programacion en c basico
Interesante proyecto para aprender C? (15)
Tengo algunos conocimientos básicos de C (y un poco más de C ++). Tengo una copia de K & R, y quiero usarla para ayudarme a profundizar en el lenguaje. ¿Cuál es una buena idea que implicará usar la mayoría de las características de C y la biblioteca estándar? Además, ¿qué diferencias importantes entre C89 y C99 debo tener en cuenta?
EDITAR: se olvidó de mencionar, esto debería ser principalmente factible para un principiante. No estoy pidiendo un tutorial de programación; más bien, algo a media escala. Entiendo que las cosas del sistema operativo es uno de los propósitos principales de C, pero ¿no sería demasiado complicado?
Además, leer y responder preguntas siempre es una buena idea, pero quiero obtener práctica real, crear un programa que haga las cosas.
¿Hardware (sistema de microprocesador incorporado) y códigos del núcleo del sistema operativo?
¿Qué tal http://projecteuler.net/ hecho con c? Eso debería desencadenar algunas células cerebrales :)
Construye un juego de ajedrez. Esto puede ser bastante trivial ya que incluso puedes hacerlo con una consola simple. Le permite implementar cierta lógica, usar estructuras de datos, trabajar con punteros, etc. Guarde el puntaje para que pueda trabajar con persistencia.
Cuando quiero aprender un nuevo idioma, siempre encuentro alguna utilidad que me parece útil y escribo eso. Encuentro que escribir un programa real que se va a usar me enseña más que solo una prueba de conceptos.
Por ejemplo, puede escribir un programa que, comenzando en el directorio especificado, se transpondrá hacia abajo creando una lista de todos los archivos y haciendo algo con ellos. Como darle una lista simple de todos los archivos más grandes que un tamaño especificado. Luego, descubra cómo agregar filtros para que cuando los complete pueda usarlos para limpiar directorios. Puede buscar la palabra "copia de seguridad" o archivos que contengan tmp. No olvide tener al menos una función que pase un puntero a un puntero para obtener una buena sensación para ellos.
Sí, sé que puedes hacer eso como un guión, pero también puedes personalizarlo para algo específico para ti.
Dependiendo de cuán profundo quieras ir, ¿tal vez Doom ?
El problema del Concurso ICFP 2006 fue increíblemente divertido. La primera parte, la implementación de la máquina virtual, es un problema pequeño que es exactamente el tipo de cosa para la que C sigue siendo apropiado. Sin embargo, no le enseñará gran parte de la biblioteca estándar.
Haz algo de hackeo de kernel
sudo apt-get install git-core
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git linux-2.6
Utilizo ubuntu, así que hice un apt-get, también uso gentoo, el comando es # emerge dev-util/git
Implementa un lenguaje de programación. Esto no tiene que ser terriblemente difícil, hice el lenguaje que no debe nombrarse , pero te obligará a aprender muchas partes importantes de C. Si no quieres escribir un lector y / o analizador usted mismo, puede usar lex / flex y yacc / bison, pero si planea hacerlo, puede comenzar con un proyecto algo más pequeño.
Tome algún programa que tenga en un lenguaje de nivel superior y vuelva a escribirlo. Si tiene un script Perl / Python / Ruby / Bash que usa mucho, y nota un tiempo de retraso mientras se ejecuta, vuelva a escribirlo en C con un enfoque en el rendimiento.
Es mi opinión, sin embargo, que si estás escribiendo un programa para aprender C, es mejor reinventar la rueda. La programación en C tiene que ver con hacer y ajustar la rueda, y si solo aprendes C usando bibliotecas que abstraen la rueda por ti, bueno, realmente no estás aprendiendo C. Puede ser más rápido, y cuando trabajas en un proyecto real en C, por supuesto, no reinvente la rueda, pero si está haciendo esto para aprender, entonces aprenda cómo funciona la rueda.
Leer y responder preguntas C en es una buena forma de aprender detalles del lenguaje.
Mi programa favorito para implementar en situaciones como esta es un programa de concordancia Regex, que usa una sintaxis bastante básica pero usa muchas de las características de bajo nivel de un lenguaje (y dado que C es un lenguaje de bajo nivel, esa es la mayoría) .
Porque la diferencia en idiomas no es mucho. No hay muchos de ellos, pero aún así. (Estoy escribiendo c durante 2 años, pero todavía no sé qué stadard está allí, si obtuve el compilador no compatible tarda unos minutos en corregir el código)
Una de las cosas más frustrantes que puede suceder es definir valores en el medio del código como en (int i; i <2; i ++); loop que se considera solo especificación de c ++. Eso era a lo que me enfrentaba. En la compilación cruzada encontrará otra cosa mucho más frustrante que la diferencia estándar.
Para comenzar en c, sugiero aprender algoritmos y sistemas operativos o sistemas integrados (c por mucho, el lenguaje más común en sistemas incrustados de bajo / medio extremo)
Obtenga algo de paz de hardware, por ejemplo, de microchip, atmel o freescaleand y compruebe su compatibilidad con RTOS incrustado.
Recomendaría trabajar con estos: http://projecteuler.net/ . Por supuesto, a veces ayuda hacer algunos de estos ineficientemente en C, para tener una idea de cuánto tiempo toma la fuerza bruta. ¡Entonces intenta inventar una forma más inteligente y realmente veas la belleza de C bien hecha!
Tal vez vea (y mejore) bigfiles.c y el uso de man 3 fts (recorra una jerarquía de archivos):
Un intérprete para un lenguaje gramatical simple. Por supuesto, no se deben usar generadores lexer / analizadores para hacerlo interesante.
Una simple aplicación de base de datos (lista de contactos, películas, álbumes, etc.) también podría ser un buen proyecto; involucraría E / S de archivos, E / S interactivas, administración de memoria, estructuras de datos razonablemente carnosas, etc.