Primeramente, deben pensar en forma esquematizada. Este esquema esta predefinido en un orden que yo denomino O.P.H.A (Objetivo(s), Procesos, Herramientas, Acción). Es una definición propia que decidí tomar cuando comencé a aprender programación por mi cuenta. A pesar de lo enrevesado que pueda parecer es muy sencillo.
Objetivo(s): definido como el cometido de nuestro programa, es la razón de porque lo creamos. Comienza con una idea y termina con un sistema totalmente funcional. Cabe acotar que también pueden existir objetivos propios internos del programa mas allá del resultado que queremos de este, por ejemplo podemos tener un objetivo central y objetivos secundarios para llegar al primero.
Procesos: los pasos inherentes y básicos (en orden jerárquico) a seguir para llegar a la solución del problema. En otras palabras, tu, como ser humano ¿qué realizarias para lograr llegar al objetivo?
Herramientas: selección de palabras claves, código, lenguaje a utilizar.
Acción: montaje y prueba del software (corrida en frió se incluye aquí).
Cabe acotar que todos estos procesos son retroalimentados, por cada etapa usualmente se darán cuenta que pueden mejorar la anterior, por ejemplo en el desarrollo de mis procesos entonces puede que encuentre una idea para mejorar mi objetivo, ampliarlo, durante la selección de herramientas puedo encontrar formas mas eficaces de realizar los procesos. Pensar como programador no es ser un sabio del lenguaje y conocer cada lenguaje existente en el mundo, no, es saber llevar un orden de ideas, todo lo demás es carpintería.
Ejemplo practico de este método
Supongamos que queremos realizar un programa que promedie una serie de números. Aquí ya tenemos definido nuestro objetivo (en este caso solo uno).
Partiendo de esto, nuestros procesos serian los siguientes:
- Definir la cantidad de números a promediar, si es definido por el usuario esto conlleva un sub-proceso que es -> Solicitar al usuario la cantidad de números a promediar.
- Ingresar datos, es decir, solicitar al usuario el ingreso de los números que desea promediar.
- Punto de quiebre, aqui podríamos realizar dos posibles acciones a) Sumamos en tiempo real los números a medida que se introducen o b) almacenamos los números para procesarlos luego.
- Opcional, sumar los números almacenados.
- Promediar, esto es tomar la suma total y dividirla entre la cantidad de números introducidos.
- Mostrar resultado al usuario.
En esta primera parte es un acercamiento bastante simple a lo que se podría hacer para llegar a nuestro objetivo, como pueden ver se presta a modificaciones tan simples como definir de serie una cantidad determinada de números a promediar como a cambiar esta cantidad en función de los deseos del usuario, también podriamos decidir entre almacenar numero a numero cada uno o no, para futuras referencias. Queda a discreción del programador adaptar estos procesos a sus gustos, formas de pensar y necesidad propias del programa.
Durante esta etapa lo común es representar los procesos en orden de ideas ya sea en listas como la anterior como diagramas de flujo o pseudo código. Nuevamente esto depende ya de los deseos de quien esta programando.
Ahora pasamos a las herramientas, dependerán de en que lenguaje estamos trabajando, en nuestro caso me enfocare en C, sin embargo esta etapa se admite para cualquier otro lenguaje, lo que cambiaría seria la sintaxis (forma de escribir los comandos). La lógica nos ayudara mucho en esto conociendo que la base para cualquier programa radica única y exclusivamente en dos fundamentos:
- Variables: o lugares en memoria donde se almacenan datos que pueden cambiar en tiempo real a medida que el código se ejecuta y en función de estímulos externos (como el usuario, un sensor, etc).
- Condicionales: la programación no seria lo que es sin la aparición de esto, un condicional es algo (una acción o serie de acciones) que depende de que se cumpla o no un suceso. En programación estos son los tan famosos If, While, Do, Repeat, For, etc, que aparecen en cualquier lenguaje que sea minimamente útil.
En la selección de herramientas entonces primeramente definimos el numero de variables a utilizar y luego adaptamos nuestros procesos en función de la sintaxis del lenguaje a utilizar. Sea un condiciona, imprimir en pantalla, etc. Desglosar los procesos en comandos es algo que puede llevar mucho tiempo y dependerá de dos cosas imaginación y conocimiento de que es lo que hace cada comando. Por eso como consejo diría que se deben ir buscando leer los comandos en C (en este caso, substituir C por el lenguaje a utilizar como BASIC por ejemplo). En internet hay mucha documentación al respecto muy útil.
Código en C:
//Programa que promedia N cantidad de numeros
#include
main(){
int N,ciclo; //Definir las variables donde guardare los datos que necesito
float numeros,resultado=0;
printf("introduzca la cantidad de numeros a promediar: ");scanf("%d",&N); //solicitar y almacenar el numero de digitos
for(ciclo=1;ciclo<=N;ciclo++){ // aqui comienza el proceso de sumado
printf("\n introduzca cifra numero: %d ",ciclo);scanf("%f",&numeros);
resultado=resultado+numeros;
}
resultado = resultado/N; //promediacion
printf("\n su promedio es: %.2f ",resultado); //mostrar el resultado al usuario.
getch();
}
Corrida en frió: teniendo ya la secuencia de lo que se hará, sencillamente realicen paso a paso esta secuencia dando valores arbitrarios y posiciones a sus variables (con lápiz y papel), si al llegar al final del programa consiguen el resultado esperado, entonces el código esta bien, si por el contrario no es así, hay un error y les aseguro que lo detectaran rápidamente al hacer esto. Como consejo principal al correr en frió deben es fijarse en todo momento en que sucede con los datos que manejan, si algún dato hace algo extraño verifiquen esa sección de código.
En fin, recapitulando los consejos en si son:
- Realicen un esquema de lo que harán, empezando por los objetivos.
- Aprendan que hace cada comando del lenguaje que van a utilizar.
- Lápiz y papel, no se vayan de una a la pc, primero diseñen todo en una hoja y luego si cuando estén seguros de que eso es lo que quieren, entonces vayan a la PC, esto les servirá de referencia y evitaran perderse. Con diseño me refiero a realizar diagramas de flujo o listas de procesos, no escribir el código.
- Después de tener todo escrito, corranlo en frió (nuevamente, lápiz y papel). Si el código es MUY grande, corran en frió cada sección de este antes de proceder a la siguiente.
Por ahora esto es todo, espero les sirva.
nota: por alguna razón el que va al lado del #include, se borra cuando lo edito aquí en blogger, si van a correr este programa recordar agregarlo al código.
No hay comentarios:
Publicar un comentario