¿Qué debo hacer cuando he estudiado las lecciones de todo el semestre, pero aún no lo he entendido en un nivel más detallado? (Tengo 2 semanas)

TL; DR: vea las respuestas de Dan Crimson y Barry Rountree – La respuesta del Sr. Crimsons, específicamente, refleja la mía y es menos verbosa.

– Descargo de responsabilidad –

No soy un profesional de la enseñanza, ni yo, en los aproximadamente 20 años que he estado programando, he obtenido un título. Sin embargo, como autodidacta, algunas de las técnicas que he usado en el pasado (y que aún uso, hasta cierto punto) para aprender nuevos lenguajes de programación podrían ayudar en esta situación.

– Respuesta completa a continuación –

Me parece que su problema no es de conocimiento, sino de falta de conexión entre el conocimiento y la expresión del conocimiento. Lo que quiero decir es que usted conoce los detalles específicos del lenguaje: cómo lo hace con los “tipos” básicos y avanzados que forman parte del lenguaje, cómo controla el flujo, etc. pero tienen dificultades para conectar ese conocimiento con su expresión. .

Una forma de resolver esto posiblemente sería desafiarte a ti mismo para diseñar y programar un juego simple de ahorcado. En detalle:

  1. Escribe las reglas de Hangman.
    1. Cada regla para el juego.
    2. Qué deben hacer el jugador y el “Verdugo” (es decir, la computadora) para jugar el juego
  2. Divida todas las partes anotadas en el paso 1 en instrucciones simples que incluso un niño de 2 o 3 años podría entender.
  3. Decida cómo se pueden agrupar esas instrucciones como funciones y configurar esas agrupaciones
  4. Comience a convertir esas agrupaciones en código real
    1. No te preocupes por la interfaz todavía
    2. En este punto, simplemente escriba el código que hará cosas que no interactúan directamente con el usuario.
    3. Coloque declaraciones de salida adicionales y una comprobación de errores adicional en todo el lugar: esto hará que el programa produzca mucha salida y se ejecute un poco más lento, pero lo ayudará a encontrar errores más adelante
    4. Ponga la lista de palabras directamente en el programa por ahora
    5. Comenta cualquier cosa que encuentres compleja o de la que no estés seguro. Esto te ayudará a descubrir en qué necesitas trabajar más adelante.
  5. Escribe el código que interactúa con el usuario.
    1. No te hagas el capricho: salida de texto simple para hacer preguntas (usa std :: cout) y entrada de texto básica (usar std :: cin está bien aquí)
    2. Comenta cualquier cosa que encuentres compleja o de la que no estés seguro. Esto te ayudará a descubrir en qué necesitas trabajar más adelante.
  6. Compilar [y, opcionalmente ejecutar]
    1. Activa el modo más completo y estricto que puedas en el compilador. Para GCC esto es algo como “-Wall -Werror” y otros compiladores tendrán configuraciones similares.
    2. Arreglar todo lo que aparece debido a 6 (a)
    3. [opcional] Intente encontrar y corregir cada error / error que ocurre una vez que su programa se está ejecutando.

Cada parte de lo anterior debe ayudarlo a conectar el conocimiento que tiene del idioma con su expresión y uso reales. El paso 1 le ayuda a definir el espacio de problemas y a decidir qué debe hacer el programa en lugar de lo que está haciendo el usuario del programa. En el paso 2, está convirtiendo el proceso de lo que la computadora está haciendo en el juego en un conjunto de pasos que serán más fáciles de escribir en el idioma elegido. El paso 3 tiene que ver con la estructura del programa: un código bien estructurado es más fácil de mantener, depurar y extender, por lo que aquí tiene que detectar los patrones en las instrucciones del paso 2 y agruparlos, algunos para convertirlos en funciones separadas, algunas solo porque lógicamente van juntos.

El siguiente paso es donde las cosas pueden complicarse. Algunas cosas, como ver si un personaje está en la palabra secreta, son relativamente simples, pero otras son más difíciles. A través de todo este código, debe usar el mecanismo de excepción de idiomas o, si no lo tiene, usar el método idiomático para detectar errores. A lo largo del código que está escribiendo en el Paso 4, no debe haber nada que interactúe directamente con el usuario; la única “interacción” que debe existir es el código que informa sobre las cosas cuando se produce un error. Y, por favor, tenga en cuenta 4 (d): poner comentarios donde no estaba seguro de que eran correctos, o cuando encontró algo difícil de implementar, etc. es un buen hábito.

Ahora, en el paso 5, debe escribir un código que realmente interactúe con el usuario. En este punto, solo está creando un programa mínimo que funciona, por lo que solo necesita un poco de “poner texto en la pantalla, leer las entradas de los usuarios”: simple y no tan sofisticado como puede ser, es todo lo que necesita.

El último paso, el número 6, solo necesita 6 (a) y 6 (b) como parte de este ejercicio de aprendizaje, ya que esto es para conectar el conocimiento teórico del idioma con habilidades prácticas y para lograr la comprensión.

Tuve una experiencia similar cuando comencé mi licenciatura en CompSci, no me preocupe. Lo que te falta no es la comprensión del material, sino la falta de habilidad para utilizar tu conocimiento para resolver el problema en cuestión. He estado allí, algo que puede solucionarse con relativa rapidez, pero solo si está dispuesto a trabajar. Creo que esta situación se presenta cuando los profesionales se centran demasiado en la teoría en lugar de enseñarle a resolver problemas desde el primer momento en que puede aplicar la teoría según sea necesario para resolver problemas.

Lo que debe comenzar a hacer es comenzar a escribir el código de inmediato. En realidad, siga el proceso de implementación y ejecución de cada ejemplo de código principal en su libro de texto. No solo copiar y pegar, sino escribir cada línea de código y luego ejecutarla. Estos ejercicios te darán una mejor comprensión de lo que está sucediendo. Asegúrate de entender lo que hace cada línea de código, Google es tu amigo.

Entonces vuelve a tu problema:

  1. perfila tu solución en oraciones
  2. Escribe el pseudo código
  3. Comience a escribir el código real
  4. Si te apesta, al menos en este punto tendrás algo específico para consultar o preguntarle a tu profesor.

Entonces, cuando fue a discutir esto con su profesor durante las horas de oficina a principios del semestre, ¿qué dijo ella?

Ok, entonces no hablaste con ella, pero fuiste y hablas con tu profesor después de los exámenes parciales, ¿verdad?

Bueno, ciertamente has hablado con tu profesor esta semana, ¿y ella te dijo que preguntaras aquí en Quora?

O no.

Espero que muchas de las clases que tomará en un futuro próximo se basen en esta. Si no entendiste el material la primera vez, dudo que esté más claro en un par de semanas.

Ve a hablar con tu profesor. Para eso está ella. Ella puede recomendar tomar un incompleto o un retiro.

En la programación, cada vez que aprenda algún concepto, intente implementarlo allí mismo. De esa manera obtendrá una mejor comprensión del tema.

Además, si solo tratas de enfrentarte a un problema mayor sin saber cómo resolver los problemas normales, seguramente enfrentarás problemas.

Ahora, en lo que respecta a su juego del ahorcado (o para cualquier otro problema en ese caso), divida su problema en partes lógicas más pequeñas (es decir, cómo lo resuelve, paso a paso) y luego intente escribir código para esas partes. ¡Sencillo!

La programación de computadoras es como el baloncesto profesional: no todos pueden ser buenos en eso. Si tienes menos de 5 pies de altura (menos de 152 cm de altura), ni siquiera debes pensar en convertirte en un jugador profesional de baloncesto. Si no puede pensar en cosas en términos de algoritmos, ni siquiera debería pensar en convertirse en un programador.

Averigua en qué eres bueno, y continúa con eso, no en lo que eres malo. No elige una profesión (o un programa de estudios de grado) según la cantidad de dinero que ganará, o el lugar donde trabajará, la elige según lo bueno que sea. El mejor jardinero es más feliz en el trabajo que el peor programador, a pesar de que el jardinero está afuera bajo el sol y la lluvia con todos los insectos y la suciedad, y gana solo una parte de lo que el programador gana.