Primero, si hay errores de sintaxis, simplemente tiene que leer los errores del compilador cuidadosamente. A menudo, una línea se resalta como un error, pero en realidad fue la línea anterior la que tiene el error.
Tenga en cuenta que, para un estudiante introductorio, puede haber algunos artefactos de edición que evitarán que se compile el programa que no se puede ver. Por ejemplo, una vez vi a un estudiante (no uno mío) que usaba la barra espaciadora en lugar de regresar: su código parecía normal en un editor que se ajustaba después de 80 columnas (el estudiante fue muy paciente), y el código incluso funcionó hasta que agregó una "// comentario al estilo ", que comentaba todo el resto del programa. De manera similar, si copia ejemplos de código de un sitio web, a menudo también se copian caracteres no imprimibles (dependiendo de cómo el sitio web formateó el código). En caso de duda, vuelva a escribir una línea sin copiar y pegar. [Es sorprendente, pero lo he visto suceder mucho más últimamente.]
Para errores desagradables del compilador, es posible que tenga que hacer crecer el programa, creando un nuevo archivo y escribiendo todo el código a medida que avanza. Asegúrese de compilar después de cada paso importante antes de pasar al siguiente.
Bien, ¿y si no hay errores de sintaxis? ¡Entonces es hora de pasar por el código! Puede usar un depurador para esto, pero realizar llamadas a printftodo el código también es muy efectivo. Por ejemplo, si hay un forciclo, agregue una declaración de impresión para el contador del ciclo. En el caso de los forbucles anidados , es posible que se incremente la variable incorrecta.
La ventaja de usar printfs es su capacidad de "comprimir" en el tiempo / espacio lo que estás viendo actualmente. Cuando te encuentras con un depurador, también ves mucho estado irrelevante y puede ser más tedioso. Además, sin ver un historial de lo que se ha impreso en la consola, puede perder algunos patrones. El punto aquí es que el depurador y printfs son técnicas complementarias, y ninguno es siempre mejor que el otro.
Finalmente, ¡simplemente pregúntale a tu amigo qué está pasando! En lugar de mirarlo y decir "uh" pregúnteles qué están haciendo: "¿y ahora qué hace n?" Al iniciar el diálogo, pueden terminar respondiendo su propia pregunta, o puede darse cuenta de la forma en que conceptualizaron que el programa tenía una falla, que puede llevarlo a una solución.
Como se comentó en otra parte, todo esto mejora con la experiencia. A pesar de que he estado programando durante 20 años, no fue hasta los últimos 5 años que estuve trabajando con estudiantes que mejoré al ayudarlos con sus errores.