¿Cómo os soltasteis programando?

tada

Si es por atrancarse en los bucles, lo mejor que puedes hacer es hacer ejercicios, practicar y ser constante.

Si en lo que te atrancas es en la generación de algoritmos, yo suelo dibujar en un papel los diagramas o flujo del programa para entender la solución de una forma mas visual. Después, una vez entendido el problema, paso al código.

Atascarse es bastante frecuente en la gente que esta aprendiendo.. con constancia y usando mucho la cabeza todo termina saliendo, pero no hay una vía fácil y rápida para "ver la luz".

Foxandxss

#57 La documentación se suele escribir en algunos casos basándote en lo que aprendes leyendo los tests.

B

Hice unos 700 problemas en diversos Online judges, a la vez que aprendía openGL e intentaba, junto con un amigo, hacer un juego más o menos complicado. La verdad es que lo del juego no llegó a ninguna parte, pero aprendí bastante sobre patrones de diseño y gestión de proyectos de cierto tamaño. De esa epoca aprendí bastante lo que viene a ser TDD, control de versiones, documentación y dar "demostraciones" informales de por qué un determinado código va a hacer lo que tiene que hacer. Luego con el primer trabajo acabé de asentar muchas cosas, y creo que ya puedo considerar tener una soltura aceptable.

wineMan

#30 Pseudocódigo? Eso lo ha usado alguien en la historia dev? No vi una cosa más absurda en la carrera. Modula2 (como Pascal, lo que se daba antaño) ya era un lenguaje que parecía casi un pseudocódigo.

3 respuestas
Merkury

#64 Bien comparando Pascal con pseudocodigo...

Soulscx

#64 el pseudocodigo lo veo util para pensar el algoritmo, para que preocuparte de la sintaxis si solo quieres resolver el problema sin implementarlo?

eXtreM3

#64 si tuvieras que hacer algo complejo, como por ejemplo el algoritmo para resolver un cubo de rubik de NxN, te pondrías a picar el código directamente?

1 respuesta
wineMan

#67 Ese pseudocodigo lo vas escribiendo en el lenguaje en el que vayas a implementarlo. Puedes usar el lenguaje en cuestión sin que todavía sea operativo, en bloques de pequeñas líneas que luego vas partiendo en funciones vacias. No veo la necesidad de usar el pseudocodigo para al final acabar traduciendo hacer mientras por do while y si entonces por if then. Además, escribiendo el boceto del algoritmo en el lenguaje ya te puedes ir anticipando a problemas de implementación propios del lenguaje, el framework, etc.

2 respuestas
eXtreM3

#68 y para los que están empezando y no dominan la sintaxis del lenguaje?

XarevoK

programando

Wallcroft

El psudocódigo es muy útil, con eso puedes pasarlo a cualquier lenguaje de programación, con una chuletilla de sintaxis

Merkury

#68 Vamos que no entiendes la utilidad del pseudocodigo... imagino que tampoco haras diagramas de flujo, etc?

2 respuestas
Soltrac

Tu problema no se soluciona ni con pseudocódigo ni con IDEs mágicos.

El problema es simplemente de algoritmia. Es un problema de lógica. La programación es enseñarle al ordenador a resolver un problema, si tú mismo no sabes resolverlo...¿cómo es posible pasarlo a un código, sea del lenguaje que sea, para que lo resuelva por ti?

Por poner un ejemplo tonto, si tu profesor te pide que dada una lista de números, los ordene primero los pares de menor a mayor y luego los impares de mayor a menor.

Tu cabeza automáticamente los ordena, pero tienes que pensar los pasos que tiene que hacer tu cabeza para decírselo al ordenador. Una posible solución de las muchas que hay:

1) Cojo los números y los divido en pares e impares. ¿Cómo se si un número es par o impar? Una posible solución que viene a la cabeza sería dividirlos entre 2 y si el resto es 0 es un número par y si es 1 es impar. Puede parecer bueno, pero que ocurre con el número 1? Me diría que es impar. ¿Y los números negativos? He controlado que solo acepto números enteros y positivos?

2) Como los ordeno de menor a mayor? Mi cabeza los ordena mágicamente, pero como se ordena paso a paso? Una solución que se podría pasar por tu cabeza, que creo que es la que se le pasa a todo el mundo antes de conocer algoritmia a un poco más de nivel es recorrer desde el primero hasta el último y coger el menor. ¿Y cómo cojo el menor? Tendría que ir comparando el primero con el segundo y el que sea más pequeño me lo quedo. Luego este con el tercero y el que sea más pequeño me lo quedo. Luego lo mismo con el tercero...etc. Lo mismo con los impares de mayor a menor haciendo el proceso al revés.

Una vez tienes la lógica pensada viene la implementación. Aquí puedes optar con un pseudocódigo. A mi personalmente el pseudocódigo me parece perder el tiempo, porque en mi opinión, el problema para la gente que empieza es no entender que mientras en nuestra cabeza, podemos ir colocando las cosas en un sitio finito y luego acceder a ello sin problemas (por ejemplo, en el caso de la ordenación, el hecho de ir comparando un número con otro y quedarte con el más pequeño, en tu cabeza se queda en un sitio al q puedes acceder como y cuando quieras, mientras que un ordenador necesita un espacio de memoria (una variable) para poder guardarlo y acceder a ello cuando lo necesites, según el nivel de pseudocódigo que utilices, ignorarás ciertas cosas y al final estás escribiendo un pseudocódigo que resuelve el problema de tu cabeza, pero no eres capaz de hacer que lo resuelva el ordenador porque no sabes transformarlo.

El pseudocódigo, uso de diagramas de flujo y demás parafernalia tiene sentido cuando tienes que resolver un problema tan grande que necesitas partirlo en varios trozos y esos trozos tienes que unirlos para darles un sentido. Al nivel al que está #1 no sirve, es inútil en mi opinión y no ayuda a resolver el problema.

Una vez hecho esto, por supuesto, te tocará pelearte con el debugger (en tu caso el que viene incluido con Visual Studio que es la polla) y arreglar los fallos que tengas, que serán varios.

Respecto a la pregunta de la luz, la pregunta de la luz es cuando todo lo explicado anteriormente lo resuelves en 3 segundos sin tener que hacerte un esquema de como resolver el problema que se te propone. Si tu profesor está esperando a que se aparezca como la virgen María....creo que está planteando erróneamente las clases.

Y te digo esto porque he trabajado con gente con muchos años de experiencia y que son los mejores del mundo picando código pero no saben resolver problemas. Y eso es lo peor.

2 2 respuestas
Merkury

#73 Discrepo en que el pseudocodigo es inutil.

El pseudocodigo no esta pensado para ser una guia linea a linea previa a la codificacion, es una herramienta conceptual que te ayuda a coger todos esos procesos que tu haces mentalmente y plasmarlos de una forma fisica y definida, que te dara la entrada a la codificacion.

Desde luego hay cosas que evidentemente, cuando llevas un tiempo en esto, no necesitas hacer un pseudocodigo, pero especialmente cuando estas empezando yo creo que es cuando mas util para aprender a pensar de una manera diferente, que te ayude en el planteamiento y la resolucion de problemas.

B
#73Soltrac:

Puede parecer bueno, pero que ocurre con el número 1? Me diría que es impar.

El uno es impar, no entiendo lo que quieres decir :\

De todas formas, el pseudocódigo está bien para hacer proofs of correctness sobre determinados algoritmos, no me parece tan tan estupidez. Creo que saber escribir de manera no ambigua lo que quieres hacer es importante, como también lo es luego saber probar que es correcto lo que has escrito.

Los diagramas de flujo sí, me parecen de charcutero. A partir de cierto nivell de detalle dejan de ser lo bastante informativos o empiezan a ser un lío indescifrable.

1 respuesta
Soltrac

#75 Me equivoqué, si divido 1 / 2 el resto es 0 y me diría que es par. Era un ejemplo tonto :P

1 1 respuesta
eXtreM3

#76 es que no tienes que dividir 1/2 para saber si un número es impar WTF, tienes que hacerle el módulo 1%2 y eso da 1, por lo cual es impar.

Seguid sin usar pseudocódigo, seguid.

2 respuestas
Soltrac

#77 He cometido un puto error de matemáticas de EGB y he dicho que 1 mod 2 = 0 cuando es 1, que tiene que ver con usar pseudocódigo pfff.

En serio, odio los putos aires de grandeza que os traéis algunas personas por aquí, y siempre sois los mismos, sobre todo cuando os creeis que hablais con un cualquiera que hace 3 gilipolleces en PHP. Con lo fácil que es decirme, tío, te has equivocado, es que el resto de 1/2 es 1, no es 0 y por lo tanto es impar.

Paso, en serio....

2 respuestas
Ugrek

Yo estoy empezando DAM y mi profesor de programación nos exige que hagamos el psudocódigo, de hecho lo meterá en el examen. Yo no se como será a más nivel, pero a mi me parecía un coñazo hasta que intente hacer un ejercicio en java desde 0. Con el psudocódigo ya hecho es mucho más fácil pasarlo después en Java, al menos para mi.

De hecho me he dado cuenta que todo se ve mucho más claro si lo escribo en sucio en papel antes de pasarme el IDE xD

1
eXtreM3

#78 estamos hablando de algoritmia, sueltas un tochaco de cómo calcular los impares y cometes un error básico de matemáticas. Y tienes la cara de decir que el pseudocódigo es una parafernalia.

Pero los de los aires de grandeza somos nosotros, ok.

Nunca he tenido nada contra ti, simplemente has tenido un patinazo y listo, le puede pasar a cualquiera. Pero que te pase JUSTO cuando dices que 'escribir la manera de pensar' es una tontería, pues es un lol wtf pokerface.

1 respuesta
Fyn4r

#77 y como sacas el modulo sin dividir? jaque mate xd

2 respuestas
Merkury

#78 Yo cuando he leido lo del 1/2 me he comido el error tambien eh, no me habia dado cuenta, he tenido que pararme a pensar un momento xD

#81 1%2 Jaque mate ateo XDDDD!

1 respuesta
HeXaN

#82 Pero tú programas en PHP, es normal jajaja.

1 respuesta
Merkury

#83 Podria ser peor, podria programar js.

1 1 respuesta
eXtreM3

#84 y podría ser peor aún, js en backend.

Soltrac

#80 Dios, que tío más pesadilla que eres.

Un pseudocódigo no va a solucionar un error de matemáticas de EGB. Punto. Es más, para tocarte los cojones ni me habría pasado programando porque el resharper me habría dicho que la condición es siempre FALSE y me habría dado cuenta, cosa que con el pseudocódigo no.

No le des más vueltas por favor.

1
eXtreM3

Esas huidas hacia delante.

1 respuesta
Fyn4r

#87 sisi,pero responde a #81 xD

1 respuesta
Merkury

#88 Sabes que MOD es internamente una division de enteros no?

Que no necesitas hacer especificamente / (creo) que casi ningun lenguaje moderno, para sacar el resto.

1 respuesta
Fyn4r

#89 si claro, todo viene a raiz de no tienes que dividir 1/2 para saber si un número es impar WTF,. Si que tienes que hacerlo, otra cosa es que parte del resultado te interesa (que es lo bastante común como para que tenga su propio operador)

1 respuesta