lunes, 24 de abril de 2017

APRENDER A PROGRAMAR

INTRODUCCIÓN
 
Aunque pueda parecer extraño, buena parte de los quebraderos de cabeza a los que nos enfrentamos programando derivan de no saber bien lo que queremos hacer. Esto responde al siguiente esquema:
 

Este sistema es posible pero muy poco recomendable ya que equivale a:
 
 
Lo cual implica, simplemente, comenzar una tarea sin la preparación necesaria. En el ejemplo del edificio sólo en situaciones de extrema sencillez (por ejemplo levantar un cuarto) el resultado será satisfactorio. En el resto de los casos la falta de método llevará a defectos o colapsos debido a la ausencia de proyecto, planos, cálculos, etc.
 
No podemos pretender desarrollar un programa simplemente en base a ideas, intuiciones, nociones. Necesitaremos método y esquemas claros que raramente estarán en nuestra cabeza. Necesitarán de un trabajo de desarrollo.
 
El buen programador, al igual que el buen proyectista en arquitectura, ha de tener claros cuáles son los pasos a ir dando para desarrollar una construcción sólida. La precipitación, la falta de reflexión o las prisas por terminar son malas consejeras.
 
Cada programador tiene sus propios esquemas de trabajo, pero en líneas generales podemos distinguir las siguientes fases en el desarrollo de un programa:
 


CONOCER EL PROBLEMA A RESOLVER
Como primer paso a la hora de desarrollar un programa tenemos "conocer el problema a resolver". Necesitaremos un conocimiento profundo de todos los aspectos relacionados con el problema, lo cual implica saber responder las siguientes preguntas:
 
1.     ¿Cuál es mi objetivo?
2.     ¿Cuáles son los condicionantes que afectan al problema?
3.     ¿Qué método o esquema de resolución voy a aplicar?
4.     ¿Cuáles son los datos de partida?
5.    ¿Qué resultado quiero obtener?
 
 
 
SOBRE EL OBJETIVO
 
A la hora de plantear un objetivo trataremos de subdividir la extensión y complejidad del problema hasta niveles lo más fácilmente abarcables por una persona, según la conocida estrategia del "divide y vencerás".
 
Aunque será la experiencia la que mejor nos guíe a la hora de plantear objetivos podemos usar esta regla: "Sólo trataremos de programar aquello que mentalmente somos capaces de abarcar en método, extensión y condicionantes".
 
Ejemplo: Supongamos que trabajamos en el sector de logística y almacenamiento de combustibles y venimos haciendo diversos cálculos manuales relativos a determinación de volúmenes de depósitos. Por cambios productivos se empiezan a instalar depósitos de formas geométricas muy diversas y decidimos programar para obtener volúmenes.
 
Posibles planteamientos de objetivos:
 
a)    Desarrollar un programa para el cálculo de volúmenes para cualquier forma de depósito contenedor de un líquido.
 
Comentarios: incumplimos la premisa de plantear algo que mentalmente seamos capaces de abarcar. Lo planteado posiblemente se puede programar, pero al nivel en que nos encontramos (somos programadores individuales y no expertos) el objetivo resultaría inalcanzable. Entre otras cosas por la gran cantidad de formas regulares (esferas, elipsoides, pirámides, conos, cuñas, paraboloides, hiperparaboloides, etc.) que en el caso de las irregulares o combinaciones entre irregulares se tornan en infinitas posibilidades. Los datos de partida y los métodos resultarían de extensión y complejidad inabarcable.




Fuente: aprenderaprogramar