El siguiente programa fue el resultado de un proceso de análisis (comprensión del problema), diseño (de un algoritmo en pseudocódigo), implementación (traducción del algoritmo a Java) y pruebas (de cada uno de los anteriores). El rastro del diseño se puede ver en los comentarios en el código.
]]>
Lee masas y alturas. Imprime el índice de masa corporal y la categoría nutricional de acuerdo a la OMS. Obtener código fuente.
Números aleatorios
Produce números aleatorios enteros en un rango dado, por ejemplo, si el rango es 00 a 75 (inclusive), producirá números válidos para un bingo.
Los operadores ariméticos (+, -, *, /, %) funcionan únicamente con tipos de datos primitivos (enteros y flotantes). Sólo existe una única excepción: el operador + puede concatenar textos (String). Los demás operadores de Java sólo trabajan con tipos de datos primitivos: operadores relacionales (==, >, >=, <, <=), operadores lógicos (!, &&, ||). Sin embargo hay que tener algunos cuidados. Por ejemplo, el operador de igualdad == sólo funciona con enteros, y en caso de flotantes sólo funciona cuando se compara contra 0.0.
Los operadores de asignación (=) tienen variantes cortas para cada operador aritmético (+=, -=, *=, /=, %=), y operadores de pre/post-incremento (++) y pre/post-decremento (--). Estos últimos deben evitarse combinar en una misma expresión.
Ciclos
Imprimir el rectángulo
Se mostró cómo crear un ejercicio desde cero. Las instrucciones se encuentran en la sección Ejercicios inventados del curso. El ejercicio completo puede obtenerse en:
El siguiente ejemplo muestra el resultado de cómo un problema se dividió en varios subproblemas recursivamente. Un subproblema que requiere su propio proceso de análisis, diseño e implementación, es buen canditato para implementarse como una subrutina. Cada subrutina debe tener su propia documentación. Aquí se usa notación JavaDoc.
]]>
Imprime una tabla con permutaciones y combinaciones, ambas con repetición y sin repetición. Obtener código fuente.
Crea una matriz de dimensiones arbitrarias, la llena leyendo valores de la entrada estándar, y la imprime en la salida estándar. Obtener código fuente.
Recursión
Factorial
]]>
Factorial iterativo, recursivo puro, y con recursión de cola. Obtener código fuente.
Nota: El compilador de Java no soporta recursión de cola al momento de escribir (nov-2017).
Fibonacci
]]>
Fibonacci iterativo, recursivo puro, y con recursión de cola. Obtener código fuente.
Potencia entera
]]>
Calcula la potencia entera minimizand la cantidad de multiplicaciones. Obtener código fuente.
MutableDouble.java: una clase que permite crear objetos en memoria dinámica, los cuales almacenan un único valor real. Por estar en memoria dinámica, cualquier método que tenga una referencia a estos objetos, puede modificar el double interno. Obtener código fuente.
Una clase arreglo dinámico puede crecer. En Java la clase de biblioteca ArrayList realiza esta funcionalidad.
En el siguiente ejemplo, la clase controladora Solution usa el arreglo dinámico para calcular la mediana sin saber la cantidad de datos que vienen en la entrada estándar.