Resolución de problemas
Resolución de problemas
Es importante que antes de explicar acerca del lenguaje de programación java, primero, se inicie por comprender cómo resolver un problema algorítmico; para lo cual es necesario comprender la diferencia entre algoritmo y programa.
Explicar sobre un lenguaje de programación Java o cualquier otro, no sería fácil si antes no se tiene claro el proceso de resolución de problemas algorítmicos; por eso hay que iniciar comprendiendo la diferencia entre algoritmo y programa.
De acuerdo con Joyanes y Zahonero (2011) “Un algoritmo es un método para resolver un problema mediante una serie de pasos precisos, definidos y finitos” (p. 27) y “Un programa es la secuencia de instrucciones que indica las acciones que ha de ejecutar la computadora” (Joyanes, 1998, p. 45).
Teniendo esto en cuenta, se puede decir que el algoritmo se define como una serie de pasos a seguir para resolver un problema algorítmico y el programa es la codificación del algoritmo que ejecuta la computadora. Un algoritmo puede convertirse en un programa mediante la codificación en un lenguaje de programación. En este sentido, es fundamental entender cómo se debe dar resolución a un problema algorítmico.
El análisis es el primer paso para programar de manera efectiva, esto supone descomponer y comprender el problema identificando los detalles clave de este, tales como:
¿Qué nos pide resolver?
¿Qué necesitamos como datos de entrada?
¿Qué datos nos proporciona?
¿Cuáles serían las acciones necesarias para resolver este problema?
Estos detalles nos darán la base para resolverlo; para ello se debe de leer cuidadosamente. Una manera útil para ayudar al análisis y rescatar algunos datos es la técnica de subrayar las palabras clave.
Una vez hecho el análisis del problema, se procede al desarrollo del algoritmo. Este consiste en plasmar la información proporcionada del problema a una factible solución paso a paso. Puede haber muchas soluciones para un problema, unas más eficientes que otras, esto dependerá de la experiencia del programador.
Para iniciar el desarrollo del algoritmo, se debe identificar lo siguiente:
Entrada
Proceso
Salida
Entrada
Con entrada se entiende a aquellos datos que se necesitan para obtener el resultado deseado; así como datos contenidos dentro de la definición del problema de manera explícita o implícita. Estos datos serán procesados durante la ejecución del programa para generar una salida; es decir, la solución de nuestro problema algorítmico planteado.
Los datos no definidos de manera explícita o implícita dentro de la definición del problema algorítmico se ingresarán desde el teclado o cualquier otro dispositivo de entrada.
Proceso
El proceso consiste en la transformación de los datos de entrada en la salida deseada o resultado a obtener para resolver el problema algorítmico.
Con proceso nos referimos a la realización de todas las instrucciones de nuestro programa. En el serán tratados todos nuestros datos, esto incluye las variables y operaciones del programa para poder obtener nuestra salida.
Salida
La salida es el resultado del procesamiento de los datos al ejecutar el programa, este resultado será nuestra solución al problema planteado.
Nota: se recomienda realizarlo en el siguiente orden: entrada, salida y proceso, primero identificar nuestra entrada (¿Qué datos se tiene o qué datos se necesita?), después identificamos la salida (¿Qué se pide como resultado?) y finalmente nuestro proceso, teniendo en cuenta que se pide y que se tiene para resolverlo.
Dentro de la etapa de desarrollo se utiliza generalmente los diagramas de flujo, que se describen en la siguiente liga:
La prueba del algoritmo consiste en evaluar paso a paso el algoritmo diseñado, desde el inicio del algoritmo y continuando con cada una de las instrucciones de este, hasta alcanzar la solución o resultado deseado.
Para las pruebas de los algoritmos, se utilizará un método conocido como prueba de escritorio. La prueba de escritorio consiste en una o varias tablas, las cuales van a recibir una entrada de datos, para posteriormente ejecutar cada operación paso a paso (proceso) hasta obtener la salida. Esto ayudará a detectar errores en el algoritmo y ver si el resultado es el deseado.
Cada algoritmo tendrá su propia lógica de representar su prueba de escritorio. Para la realización de una prueba de escritorio se requiere del debido análisis del problema y del algoritmo que lo planea resolver, resultando en una prueba de escritorio distinta cada vez.
Cada algoritmo tiene una forma diferente de representarse en una prueba de escritorio.
4. Codificación
La codificación consiste en pasar el algoritmo propuesto a código; no importa el lenguaje de programación, siempre y cuando la solución haya pasado satisfactoriamente la prueba de escritorio establecida, dando la salida esperada.
Actualmente esta codificación se lleva a cabo en un Entorno de Desarrollo Integrado (IDE, por sus siglas en ingles).
Un IDE es un software en el cual se puede programar en uno o varios lenguajes de programación, esto dependerá del IDE elegido, suelen ser de gran ayuda tanto visual como al detectar posibles errores.
Dentro del IDE existe un botón que corresponde a la acción “correr” o “ejecutar”, una vez seleccionado, el software se encargará de transformar nuestro algoritmo a lenguaje máquina para que pueda ejecutarse el programa.
Victoria trabaja como programadora en una empresa de tecnología, su jefe le ha solicitado un programa para evaluar que empleados son candidatos para recibir un aumento del 20% de su sueldo este año. La condición que le han dado a Victoria para el aumento es que el sueldo actual del trabajador sea inferior a 10,000.
¿Qué nos pide resolver?
Un algoritmo que haga un aumento del 20% si el sueldo es inferior a 10,000.
¿Qué necesitamos como datos de entrada?
El sueldo actual del trabajador.
¿Qué datos nos proporciona?
Que el algoritmo debe evaluar con una condición el sueldo del empleado.
¿Cuáles serían las acciones necesarias para resolver este problema?
Se necesita del uso de operadores relacionales, para evaluar si es candidato para recibir el aumento.
Entrada: sueldo actual.
Salida: Sueldo con aumento solo si cumple la condición.
Proceso: Evaluar la condición y si se cumple realizar aumento.
En este caso se muestra la codificación en Pseudocódigo y Java.
En la ejecución de mostrará lo siguiente:
Dame el sueldo que ganas
xxxx <- Datos que como usuario ingresamos
El sueldo que ganas es xxxx