Mientras practico la programación, muchas veces no puedo escribir código para un algoritmo o pseudocódigo, incluso después de entender el algoritmo claramente en papel. ¿Cómo supero este problema?

Gracias por A2A.

Lamentablemente, no hay atajos.

La génesis de un algoritmo está en la mente del programador. Nunca luché por la perfección en el primer intento. Seguí escribiendo y reescribiendo código. Mejoró con el tiempo. Así que no seas dogmático sobre el algoritmo. La mejor manera es aprender de abajo hacia arriba. Aquí hay algunas cosas que hice:

1. Resolver cualquier / todo problema matemático con la programación. ¡No hace falta decir que has pasado noches por esto! Consulte los problemas del proyecto euler.

2. Construye pequeños proyectos con pequeños equipos. Los repositorios de código gratuitos como Unuddle y otros están disponibles fácilmente. Por lo tanto, forme un pequeño equipo, obtenga una pequeña declaración del problema y comience a codificar.

3. Finalmente, confíe más en las imágenes. Cualquier flujo / lógica que desee representar: dibuje. No lo escribas

De una manera extraña, la codificación se asemeja a la poesía. Un objetivo principal de escribir código eficiente y mantenible es la comunicación. Este problema no se trata solo de practicar la programación para entrevistas de trabajo, etc., sino que se extiende a través de la escritura de código fácil de leer para nuestros colegas desarrolladores.

Creo que una de las principales cosas que debes hacer es dominar un idioma en particular primero. Del mismo modo con respecto a mi analogía con la poesía. Es posible que tenga ideas, una bonita historia que contar, una gran rima, pero a menos que sea un maestro del lenguaje, no puede expresar su pensamiento a través de él. Ya sea inglés, francés, alemán, el idioma que elija.

Ahora, llegando a la programación, supongamos que está tratando de expresar esto

  si (a> b)
   c = verdadero;
 más
   c = falso;

hay otra forma de expresarlo
c=a>b?true:false;

Ahora es totalmente su elección si desea hacer un compromiso entre la legibilidad o la longitud del código. Aunque en el primer caso se necesitan 4 líneas de código para expresarme, la concepción es clara. El segundo caso es mucho más conciso pero compromete la legibilidad. Este fue un ejemplo muy simple, pero encontrará algo similar a esto cuando escriba más código.

Ahora, en su caso, cuando tiene un algoritmo / pseudocódigo desarrollado en su mente, se imagina un puntero imaginario que cae secuencialmente de línea en línea ejecutando cada línea de su código. Y así es como funciona el intérprete interpretando línea por línea. Ahora, uno de los principales obstáculos que enfrentan las personas son las diferentes ideas que evolucionan en diferentes partes del código en problemas de recidiva o DP. Lo que siempre puede hacer es pensar secuencialmente (supongo que no está escribiendo código de programación funcional donde este enfoque podría no ser útil). por ejemplo, si está ejecutando un código en la recursividad, primero escribe la firma de la función. Pero luego, en lugar de escribir la función recursiva, primero intente pensar en los casos de esquina. ¿Cuándo debe la función romper / volver? Aunque la mayor parte de su desarrollo de pseudocódigo fue derivar la función recursiva, al escribir código le preocupa más averiguar los casos de esquina. ¿Cuándo vuelve mi programa? Porque si no hace la verificación de retorno al principio, seguirá llamándose a sí mismo y se ejecutará en un bucle sin fin. Algo así, diseñas todos los casos de esquina, luego escribes la función recursiva principal y listo.

El quid de la historia es analizar su problema e intentar resolver uno a la vez.

Comience más simple. Si su problema es extremo, comience con algo tan simple como la búsqueda lineal. Entiéndelo, escribe un pseudocódigo limpio en papel, escribe un código limpio y nítido. Tome casos de prueba para analizar el código. Pase al siguiente algoritmo, clasificando los algoritmos preferiblemente.
Pruebe y calcule sus algoritmos usando casos de prueba. Las ejecuciones en seco siempre ayudan a comprender el código. Esto también ayuda a depurar cualquier error lógico en su código. Pruebe esto con algoritmos simples y comenzará a desarrollar su propia técnica para probar un código.
Una vez que conozca su código al revés, desarrollará la confianza que mejora su capacidad de pensar de manera estructurada, lo que finalmente es lo que se necesita para escribir algoritmos.

Puede que lo estés intentando demasiado.

Comience desde lo básico.
Antes de intentar comenzar a hacer problemas algorítmicos normales, te sugiero que juegues con las estructuras de datos y sus trucos básicos. Resolver algunos problemas relacionados con estructuras de datos básicas lo ayudará a comprender cuándo y dónde usarlos.

Luego pasa a Algoritmos.

No estoy diciendo que lo que estás haciendo está mal. Solo estoy sugiriendo un enfoque más fácil si aún no lo ha probado.

En cualquier caso, resolver problemas algorítmicos será difícil y frustrante. Sigue haciéndolo, no te rindas y te verás mejorando día a día.

geeksforgeeks.com es un buen lugar para comenzar a aprender DS si aún no ha explorado el sitio

Gracias por A2A.

Sí, todos enfrentan este problema al comienzo, por lo que no es un tema de pánico.

Comience a resolver problemas pequeños (sección fácil en orden descendente de envíos no. De ese problema) desde CodeChef y HackerRank.

Con estos pequeños hábitos de codificación, conocerá los enfoques del código, es decir

“Cómo implementar su lógica” .

También vaya a GeeksforGeeks y comience a aprender estructuras de datos de sus.
Esto lo ayudará a pensar y enmarcar códigos de una manera más inteligente 🙂

Disfruta de la codificación = D

El problema es con la lógica del programa. Comprender un algoritmo es fácil, pero construir su propio algoritmo requiere lógica.
Lógica: cómo organizar las declaraciones de tal manera que se resuelva nuestro problema.
Necesitas aprender eso.

Me enfrenté a problemas similares. Le insto a que pruebe los problemas de Acerca de – Proyecto Euler. Me ha ayudado mucho.
Los problemas, creo, están organizados en orden de dificultad. Después de resolver 10 problemas más o menos (con un intento honesto), estoy seguro de que tendrá un mejor enfoque algorítmico para resolver problemas como lo hice.
La mejor de las suertes.

GRACIAS POR A2A

nadie puede escribir el código correctamente al primer intento, ya que lo intentas honestamente después de escribir el código cuando el compilador detecta errores en el código, solo escríbelos, repite esto de 2 a 5 veces y luego lee tus errores, apuesto a que habrá errores comunes , la mayoría de las veces los errores se producen ya sea debido a una declaración incorrecta o una semi-columna o valores devueltos o un uso incorrecto de los operadores, después de analizarse a sí mismo, nunca volverá a repetir sus errores 🙂 tenga cuidado, buena suerte, espero que lo ayude

Es fácil, solo da lo mejor de ti y trata de descubrir los casos en los que tu código falla y sigue corrigiéndolos. Si todavía no es completamente correcto, intenta comparar tu código con otros e intenta descubrir qué te estás perdiendo.

Un algoritmo o un psedeudocódigo no es más que el código en lenguaje sencillo. Si no puede entender un algoritmo particular, intente dividirlo en partes pequeñas y luego intente resolverlo. Véalo como rompecabezas: una pieza conectada a otra. Si conoce el problema, intente escribir el algoritmo usted mismo y luego intente compararlo con el algoritmo principal. Esto ampliará tu mente y hará que tu proceso de pensamiento sea más fluido y lógico. Los procesos de depuración pueden parecer beneficiosos utilizando varios casos de prueba, tanto normales como extremos.

¡Practique, pregunte problemas en http://stackoverflow.com y divida sus problemas en otros más pequeños!