IngSimulatorIngeniería Crea tu cuenta

Guía de programación

Aprende C desde cero: cómo aprovechar el simulador

C es el lenguaje con el que se programan microcontroladores, sistemas operativos y la mayoría de las cosas que tienen un procesador dentro. Es pequeño, rápido y no esconde nada: cada variable es un espacio de memoria y cada puntero una dirección. Por eso cuesta al principio y por eso vale tanto. El simulador está hecho para que veas esa memoria mientras el programa corre.

1. En qué orden ir

Las 24 lecciones están en el orden en que se dan en la materia de programación de casi cualquier ingeniería. Cada bloque supone el anterior:

  • 1–5: estructura del programa, variables, scanf, operadores y printf. Aquí se decide si entiendes la división entera y el módulo; no sigas hasta que el ejercicio de segundos a horas te salga a la primera.
  • 6–10: if, switch, while, for y ciclos anidados. Es la parte de «pensar en algoritmos»: dibujar patrones y buscar primos entrena exactamente eso.
  • 11–12: funciones y recursividad. Ejecuta el ejemplo de factorial con Entrar (F11) y mira la pila de llamadas crecer y vaciarse.
  • 13–15: arreglos, cadenas y matrices. Aprende que el índice empieza en 0 y que una cadena termina en '\0'.
  • 16–19: punteros, punteros con arreglos, estructuras y memoria dinámica. El bloque difícil; abajo hay consejos para pasarlo.
  • 20–24: búsqueda y ordenamiento, caracteres, aleatorios, archivos y el proyecto final con menú.

Cada lección tiene un ejemplo que puedes modificar sin miedo (siempre lo puedes volver a cargar) y un ejercicio que se califica solo con varias entradas. Cuando pasas todas las pruebas, la lección queda marcada; tu avance se guarda en el navegador.

2. Cómo usar el depurador para entender punteros

Un puntero deja de ser misterioso cuando ves la dirección. Carga el ejemplo de la lección 16 y ejecútalo con Paso (F10):

  • En el panel Variables, x aparece con su valor y p con una dirección y una flecha: 0x003FFFFC → x. Eso es «p apunta a x».
  • Al ejecutar *p = 99, la fila de x se ilumina: cambió sin que nadie escribiera «x =». Es el efecto que quieres entender.
  • En intercambiar(&x, &y) entra con F11: los parámetros a y b son punteros que apuntan a las variables de main, y por eso la función sí las cambia.

Con malloc (lección 19) abre la sección Memoria dinámica: cada bloque aparece con su dirección, su tamaño y sus bytes; los que todavía no se escriben se ven punteados. Si olvidas free, al terminar el programa el simulador te dice cuántos bytes se fugaron.

3. Qué hacer con cada error

En un compilador real muchos de estos errores no avisan: el programa imprime basura o se cierra sin explicación. El simulador los detiene en la línea exacta y te dice por qué:

  • «Falta un punto y coma» o «Falta cerrar una llave»: errores de compilación. Casi siempre están en la línea anterior a la que se señala.
  • «scanf: falta el & antes de n»: scanf necesita la dirección de la variable. Sin el & escribirías en cualquier lugar de la memoria.
  • «Índice fuera del arreglo»: un arreglo de 5 elementos va de 0 a 4. Revisa la condición del ciclo (<, no <=).
  • «Se usa la variable x sin haberle dado un valor»: declarar no es inicializar; en C real contendría basura.
  • «La condición usa =»: comparar es ==; con un solo = asignas y la condición siempre es verdadera.
  • «Se usó un puntero nulo» y «memoria de una función que ya terminó»: el puntero no apunta a nada válido. Un puntero a una variable local muere con la función.
  • «Desbordamiento de pila»: una recursión sin caso base. Pon el if que la detiene antes de la llamada.
  • «Fuga de memoria» y «double free»: cada malloc necesita exactamente un free, con el mismo puntero.

4. Trucos del editor

  • Haz clic en un número de línea para poner un punto de interrupción; el programa se detiene ahí y puedes revisar las variables. F9 lo pone en la línea del cursor.
  • La velocidad Lenta ejecuta el programa línea por línea resaltando cada una: sirve para ver un ciclo completo sin presionar Paso veinte veces.
  • En la pestaña Entrada escribe los datos de antemano, uno por línea. Así repites la misma prueba cada vez que cambias algo.
  • Tab sangra, Mayús+Tab quita la sangría y Ctrl+/ comenta la selección. Al escribir { y Enter, la llave de cierre se acomoda sola.
  • Guarda tu programa como archivo .c: abre tal cual en Code::Blocks, Dev-C++, Visual Studio o gcc. Lo que funciona aquí funciona allá.

5. Lo que el simulador no hace

Es un intérprete pensado para aprender, no un compilador completo. Ya acepta punteros a función, qsort/bsearch y goto, pero no campos de bits ni bibliotecas externas; los archivos viven en memoria sólo mientras corre el programa, y la secuencia de rand() no coincide con la de tu PC. Si tu profesor te pide algo de eso, es la señal de que ya puedes pasar a un compilador real: todo lo que aprendiste aquí se usa igual.

Prueba lo que aprendiste: escribe el programa y ejecútalo paso a paso.

Abrir el simulador de C