¿Cómo abordar un problema de codificación?

Los desarrolladores y estudiantes resuelven muchas preguntas de codificación de estructuras de datos y algoritmos, pero la mayoría de ellos no entienden la importancia de esto. Muchos de ellos también tienen esta opinión de que la estructura de datos y los algoritmos solo ayudan en las entrevistas y, después de eso, no sirven de nada todas esas cosas complicadas en los trabajos diarios. 

How-to-Approach-a-Coding-Problem

Usted puede ser uno de ellos que está contento con aprender un nuevo lenguaje o marco y crear algunas aplicaciones con eso, pero una vez que ingrese a la industria del mundo real, se dará cuenta de que su trabajo no es solo escribir el código y hacer que las cosas funcionen. Tu verdadero trabajo es escribir la cantidad correcta de buen código, lo que significa que debe ser eficiente y robusto , y aquí viene el papel de las estructuras de datos y los algoritmos. Las estructuras de datos y los algoritmos no solo ayudan a obtener la lógica de su programa, sino que también ayudan a escribir el código eficiente para su software. Ya sea que hablemos de la complejidad del tiempo o la gestión de la memoria, la refactorización del código o la reutilización del código, comprenderá su valor en cada parte de su aplicación. 

En proyectos del mundo real, su cerebro debería poder escribir una solución rápida y eficiente para cosas complicadas y solo puede hacerlo cuando practica muchas preguntas de codificación. Comprenda que el lenguaje y los marcos son solo herramientas, no le enseñarán habilidades para resolver problemas. Desarrollas habilidades para resolver problemas cuando practicas muchas preguntas de codificación. En primer lugar, comprenda la importancia de DSA con estos dos artículos…

Cada desarrollador tiene sus propios trucos y sigue su propio patrón para resolver problemas de codificación, pero cuando se trata de nuevos desarrolladores, siempre no saben por dónde empezar. Muchos de ellos entienden los problemas, la lógica y los conceptos básicos de la sintaxis, también entienden los códigos de otra persona y pueden seguirlos, pero cuando se trata de resolver las preguntas por su cuenta, se atascan. No entienden cómo convertir sus pensamientos en código aunque entienden la sintaxis o la lógica. Vamos a compartir algunos pasos simples que lo ayudarán a abordar una pregunta de codificación. 
 

Comprender y analizar el problema

No importa si ha visto la pregunta en el pasado o no, lea la pregunta varias veces y entiéndala completamente. Ahora, piensa en la pregunta y analízala cuidadosamente. A veces leemos algunas líneas y asumimos el resto de las cosas por nuestra cuenta, pero un ligero cambio en su pregunta puede cambiar muchas cosas en su código, así que tenga cuidado con eso. Ahora toma un papel y anota todo. ¿Qué se da (entrada) y qué necesita saber (salida)? Mientras analiza el problema, debe hacerse algunas preguntas usted mismo…

  1. ¿Entendiste completamente el problema?
  2. ¿Serías capaz de explicarle esta pregunta a otra persona?
  3. ¿Qué y cuántas entradas se requieren?
  4. ¿Cuál sería la salida para esas entradas?
  5. ¿Necesita separar algunos módulos o partes del problema?
  6. ¿Tienes suficiente información para resolver esa pregunta? Si no es así, vuelva a leer la pregunta o límpiela al entrevistador.

Por ejemplo: si le dan una array y necesita devolver la array que contiene solo números pares, primero analice el problema con cuidado. Mientras analiza el problema, debe hacerse algunas preguntas antes de saltar a la solución.

  1. ¿Cómo identificar un número par? Divida ese número por 2 y vea si su resto es 0.
  2. ¿Qué debo pasar a esta función? Una array
  3. ¿Qué contendrá esa array? Uno o más números
  4. ¿Cuáles son los tipos de datos de los elementos de la array? Números
  5. ¿Cuál es el objetivo final? El objetivo es devolver la array de números pares. Si no hay números pares, devuelve una array vacía.

Revise los datos de muestra y los ejemplos a fondo

Cuando intente comprender el problema, tome algunas entradas de muestra e intente analizar la salida. Tomar algunas entradas de muestra lo ayudará a comprender el problema de una mejor manera. También obtendrá claridad sobre cuántos casos puede manejar su código y cuál puede ser la salida posible o el rango de salida. Lea los puntos que se dan a continuación…  

  • Considere algunas entradas o datos simples y analice la salida.
  • Considere alguna entrada compleja y más grande e identifique cuál será la salida y cuántos casos necesita tomar para el problema.
  • Considere también los casos extremos. Analice cuál sería la salida si no hay entrada o si da alguna entrada no válida.

Por ejemplo: si necesita devolver la array de números pares de una array determinada, a continuación encontrará una variedad de casos o entradas de muestra para las que puede analizar el problema y su salida.  

[1]
[1, 2]
[1, 2, 3, 4, 5, 6]
[-300.35]
[-700.1, 1000, 5.1, -1000.25, 52, 900]

Romper el problema

Cuando vea una pregunta de codificación que es compleja o grande, en lugar de tener miedo y confundirse sobre cómo resolver esa pregunta, divida el problema en partes más pequeñas y luego intente resolver cada parte del problema. A continuación hay algunos pasos que debe seguir para resolver las complejas preguntas de codificación… 

  • Haz un diagrama de flujo o un UML para el problema en cuestión.
  • Divida el problema en subproblemas o partes más pequeñas.
  • Resuelva los subproblemas. Haz funciones independientes para cada subproblema.
  • Conecte las soluciones de cada subproblema llamándolos en el orden requerido, o según sea necesario.
  • Donde sea necesario, use clases y objetos mientras maneja preguntas (para problemas del mundo real como sistemas de gestión, etc.)

Escribir pseudocódigo

Antes de saltar a la solución, siempre es bueno escribir un pseudocódigo para su problema. Básicamente, el pseudocódigo define la estructura de tu código y te ayudará a escribir cada línea de código que necesites para resolver el problema. La lectura del pseudocódigo da una idea clara de lo que se supone que debe hacer su código. Mucha gente o programadores experimentados se saltan este paso, pero cuando escribes pseudocódigo, el proceso de escribir el código final se vuelve más fácil para ti. Al final, solo tendrá que traducir cada línea de pseudocódigo a código real. Así que escribe cada paso y lógica en tu pseudocódigo. A continuación se muestra uno de los ejemplos de pseudocódigo que devuelve la array de números pares…

function getEvenNumbers
evenNumbers = []
for i = 0 to i = length of evenNumbers
  if (element % 2 === 0) 
    add to that to the array evenNumbers
return evenNumbers

Reemplazar pseudocódigo con código real

Una vez que haya escrito el pseudocódigo, es hora de traducirlo a código real. Reemplace cada línea de su pseudocódigo en código real en el idioma en el que está trabajando. Si ha dividido su problema en subproblemas, escriba el código para cada subproblema. Al escribir el código, tenga en cuenta tres cosas… 

  • El punto donde empezaste
  • ¿Dónde estás ahora mismo?
  • ¿Cuál es su destino (resultado final)?

No olvide probar su código con conjuntos de datos de muestra (lo hemos discutido en el paso 2) para verificar si la salida real es igual a la salida esperada. Una vez que haya terminado con la codificación, puede deshacerse del pseudocódigo. A continuación se muestra el código para el ejemplo que hemos considerado en los pasos anteriores… 

Javascript

function getEvenNumbers(arrayofNumbers) {
  let evenNumbers = []
for (var i = 0; i < arrayofNumbers.length; i++) {
    if (arrayofNumbers[i] % 2 === 0) {
      evenNumbers.push(arrayofNumbers[i])
    }
  }
return evenNumbers
}

Cuando esté escribiendo el código en sus entrevistas, siga diciéndole al entrevistador cómo está abordando el problema. 

  • Dígale al entrevistador cómo está tratando de comenzar
  • Cuéntale al entrevistador tu enfoque para resolver el problema.
  • Discuta con el entrevistador la parte más difícil que enfrenta en su problema.
  • Informe al entrevistador sobre el enfoque para resolver cada subproblema a fin de obtener el resultado final.
  • Discuta los datos de muestra o los casos de prueba con el entrevistador.
  • Discuta la mejor solución con el entrevistador.

Simplifique y optimice su código

Intenta siempre mejorar tu código. Mire hacia atrás, analícelo una vez más e intente encontrar una solución mejor o alternativa. Hemos mencionado anteriormente que siempre debe intentar escribir la cantidad correcta de buen código, por lo que siempre busque la solución alternativa que sea más eficiente que la anterior. Escribir la solución correcta a su problema no es lo último que debe hacer. Explore el problema por completo con todas las soluciones posibles y luego escriba la solución más eficiente u optimizada para su código. Entonces, una vez que haya terminado de escribir la solución para su código, a continuación hay algunas preguntas que debe hacerse.

  • ¿Este código se ejecuta para todas las entradas posibles, incluidos los casos extremos?
  • ¿Hay una solución alternativa para el mismo problema?
  • ¿Es eficiente el código? ¿Puede ser más eficiente o se puede mejorar el rendimiento?
  • ¿De qué otra forma puedes hacer que el código sea más legible?
  • ¿Hay más pasos o funciones adicionales que pueda sacar?
  • ¿Hay alguna repetición en tu código? Llevarlo a cabo.

A continuación se muestra la solución alternativa para el mismo problema de la array que devuelve números pares… 

function getEvenNumbers(arrayofNumbers) {
  let evenNumbers = arrayofNumbers.filter(n => n % 2 === 0)
  return evenNumbers
}

Publicación traducida automáticamente

Artículo escrito por anuupadhyay y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *