Ver Mensaje Individual
  #10 (permalink)  
Antiguo 27/09/2015, 14:37
agleiva
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 3 meses
Puntos: 52
Respuesta: ¿Describir situaciones y el cómo se llega a ellas?

Cita:
Iniciado por Kritik Ver Mensaje
Tienes un problema con la abstracción de tu programa. No estás abstrayendo de forma correcta el problema.
Este, mis queridos amigos, es el meollo de la cuestión. Siempre lo ha sido.

Ya te lo dije antes, @Tachikomaia, por más que no te guste que te lo digan. Necesitás ampliar tu marco de referencia. El nivel de abstracción que manejás es demasiado limitado y no te permite elaborar soluciones adecuadas para los problemas que estás planteando.

El Software no se trata de variables sueltas, escribir en archivos de texto y poner una cantidad infinita de if para ver todas las opciones posibles o cosas por el estilo. Se trata de aplicar las abstracciones adecuadas a cada problema, que te permitan escribir el código como un conjunto de reglas de interacción entre esas abstracciones.

Para darte un ejemplo, esto es lo que haría yo para el problema del ta-te-ti:

Código F#:
Ver original
  1. type Jugador = { Nombre: String}
  2.  
  3. type Posicion = { Fila: int; Columna: int }
  4.  
  5. type Valor =
  6.      | Vacío
  7.      | Marcado of Jugador
  8.  
  9. type Casillero = { Posicion: Posicion; Valor: Valor }
  10.  
  11. type Jugada = { Jugador: Jugador; Casillero: Casillero }
  12.  
  13. type Juego = {
  14.     Jugador1: Jugador;
  15.     Jugador2: Jugador;
  16.     Casilleros: Casillero list;
  17.     Jugadas: Jugada list }

Teniendo estas abstracciones, podés empezar a definir el juego como una interacción entre ellas, y el código mismo te va ayudando a programar correctamente porque ya tenés el modelo bien definido. A esto me refiero exactamente cuando te digo que para programar algo necesitás armar estructuras adecuadas, y no usar un montón de variables sueltas.

Para ampliar tu marco de referencia, la única forma que conozco el LEER. Leer sobre OOP, Programacion funcional, paradigmas de diseño, arquitectura, etc. etc. etc. Eso, y ver cómo resuelven este tipo de cuestiones otros programadores.