Me enseñaron C ++ en la escuela secundaria como primer lenguaje de programación, aunque era más como "C +", ahora que lo mencionas; solíamos cout
escribir texto en la consola y los archivos, pero también algunas funciones C ( getch()
era mi favorito).
Creo que la forma más efectiva (y posiblemente divertida) de enseñar los conceptos básicos es usar un plan de estudios orientado a objetivos: comenzar mostrando cómo generar cosas, luego ingresar el teclado, luego E / S de archivos simples, etc. Progresar a un texto simple. juego basado (o el equivalente en robótica). Luego, cuando preguntan: "¿Cómo hago X?", Puedes desglosar X en términos de ejemplos que ya han visto, por ejemplo, "Primero tendrás que obtener la entrada del usuario como lo hicimos en Z, luego ..."(obviamente no es tan fácil en la práctica, ya que X es probable que sea algo que necesitan un conocimiento adicional con el fin de hacerlo, por ejemplo, 'gráficos en 3D', pero aún se podía explicar cómo sería trabajar en un alto nivel camino).
Los ejemplos que les muestres comenzarán como magia copiada en recuadro negro, cuyos misterios se descifran a medida que las piezas del rompecabezas de programación se descifran lentamente. Por ejemplo, sus alumnos aprenderán los conceptos básicos de if
s con bastante rapidez, pero probablemente no se darán cuenta de que una expresión booleana no se limita exclusivamente al uso dentro de una if
condición (que conduce al if (blah) return true; else return false;
código clásico ).
Las sutilezas de si elige una matriz o un vector como contenedor parecerán irrelevantes para los estudiantes al principio. Un vector / matriz simplemente será una forma de tener muchas variables como una variable, accesible a través de un índice. Cíñete a uno donde puedas. Los punteros no se entenderán hasta más tarde tampoco. Eso no quiere decir que no debas explicar las cosas; solo que no puedes explicar todo de una vez, y las cosas que explicas no serán completamente absorbidas. Los humanos aprenden orgánicamente, no linealmente. ¡Lo había estado usando cout
durante un par de años antes de entender correctamente qué era la sobrecarga del operador!
Ah, y no tengas miedo a la repetición. "Esto es como el programa Hello World que hicimos. ¿Recuerdas cómo escribimos el texto en la consola?" (no ...) "Hagámoslo de nuevo solo para asegurarnos". ... y hacer preguntas! Mantenga a los estudiantes interesados con ejemplos divertidos y mucha interacción.
C ++ es un lenguaje complejo, y no importa lo que haga, una cantidad significativa de esa complejidad (y la del oficio de programación en general) se perderá en sus estudiantes. Todo lo que les muestres será nuevo para ellos; la mayor parte no se hundirá en un nivel profundo de comprensión (al menos, no de inmediato). Cómo funciona la memoria, cómo interactúan los componentes de una PC, cuáles son la pila y el montón, los punteros, las clases, incluso los bucles y las cadenas if-else no serán entendidas adecuadamente por la mayoría. ¡Esto esta bien! No es necesario que se entiendan para usarlos: se puede escribir una increíble cantidad de programas geniales con funciones súper feas de 1000 líneas con if
s redundantes quíntuples y 43 variables con nombres similares x_2r
. Lo importante es que los estudiantes están constantemente aprendiendo y mejorando. Las cajas negras están bien siempre que se vuelvan transparentes (o al menos gris translúcido) a la larga. Al final del curso, es posible que no sepan qué son los patrones de diseño, pero deberían poder volver a mirar los programas que escribieron en las primeras semanas y encogerse por su código. Deben entender con un nivel de detalle significativo cómo funciona realmente el primer programa que escribieron (mientras que cuando lo escribieron no tenían idea). Pero no lo sabrán todo ... todavía .