Ejercicios resueltos Realizar un programa que calcule el producto entre dos números enteros, mediante sumas sucesivas (sin usar el operador producto). Para resolver cualquier ejercicio debemos recordar el esquema: 1.Definir el Problema 2.Análisis del Problema 3.Diseñar un algoritmo de Resolución 4.Programación - codificación 5.Ejecución por Computadora El problema está definido y ahora debemos analizarlo. Es FUNDAMENTAL emborronar papel y tratar de reducir las tareas al mínimo de manera que podamos hacer que el ordenador las pueda realizar mediante un algoritmo que diseñaremos en el siguiente paso.
Ejercicios resueltos Supongamos que queremos multiplicar dos variables a=4 y b=3. Podríamos hacer algo así 4 + 4 + 4; sumamos el 4 un número de veces concreta; 3. Por tanto ahí tengo los datos de las variables para usar. Cómo le indico eso al ordenador. Guardamos el 4 y el 3 en dos variables, necesitamos otra variable para el producto, por ejemplo: a = 4 b = 3 producto = 0 Cada vez que sumo un número debo acumular ese dato y guardarlo en una variable para no perderlo, por ejemplo en la variable producto, ahora decidimos qué número sumar, podemos sumar el 4, tres veces o el 3 cuatro veces, así tendríamos: producto = producto + a Con esto agregaríamos el 4 a producto, deberíamos hacer esto tres veces;
Ejercicios resueltos Así: producto = producto + a producto = producto + a producto = producto + a De esta manera a se añade 3 veces a producto que empezó valiendo cero y ahora vale 12. No parece una solución muy limpia, si en vez de 3 veces fuesen 100, repetiríamos 100 veces este código? NO CREO. La solución pasa por usar estructuras repetitivas; sabemos qué hacer y cuántas veces, así que podemos usar un bucle.
Ejercicios resueltos El pseudocódigo podría quedar así: Nombre: SumasSucesivas INICIO Enteros: a, b, producto //Declaramos las variables de tipo entero a=4 b=3 producto = 0 //Ya tenemos las variables ahora hacemos los cálculos //Declaramos un contador y le damos el valor 0 i=0 Mientras (i < b) producto = producto + a //Aquí está el acumulador, sólo una vez //Incrementamos la variable, sino el bucle nunca terminaría i = i + 1 Fin_Mientras //El bucle ocurre mientras i no llegue a 3 (por tanto ocurre 3 veces) //Finalmente mostramos el resultado Escribir El producto es, producto FIN
Bucles. El bucle while El bucle mientras tiene su equivalente en java, el bucle while. Tiene la siguiente estructura: while (condición) acción 1; acción 2; : } Mientras la condición se cumpla el bucle realizará su código, cuando deje de hacerlo el programa continúa en la orden posterior a la llave de cierre del bucle. En nuestro caso podría quedar así: int i=0; //Se declara e inicializa la variable fuera del bucle while (i<b) producto = producto + a; i=i+1; //Si no incrementamos el contador el bucle no terminaría nunca }
Bucles. El bucle for El bucle for también nos vendrá muy bien. Tiene la siguiente estructura: for (inicialización; condición; incremento) acción 1; acción 2; : } Tiene 3 secciones; la primera define e inicializa una variable, la segunda tiene una condición lógica y la última incrementa o decrementa la variable de control. //En este caso el contador ya lo incorpora la propia estructura for for (int i=0; i<b; i++) //i++ equivale a i=i+1 producto = producto + a; }
Bucles. El bucle do while El bucle do while se caracteriza porque su contenido se ejecuta al menos una vez, por lo demás es como el resto de estructuras repetitivas: do acción 1; acción 2; : } while (concidicón); do System.out.println(" ---- MENU ----"); System.out.println("1. Nuevo Titular"); System.out.println("2. Titular existente"); System.out.println("3. Mostrar titulares-saldos"); System.out.println("4. Salir"); System.out.println("Elija opción"); opcion = teclado.nextint(); } while (opcion < 1 opcion > 4); Como vemos en el ejemplo, es muy útil para mostrar menús con sus opciones y mantenerlo hasta que no se elija la opción adecuada. En este caso se deberá teclear un valor entre 1 y 4 o el programa no abandonará nunca el bucle.
Operadores lógicos Operadores lógicos en Java && and Como observamos en la condición del último bucle podemos usar en java otro tipo de operadores muy útiles como los operadores lógicos. or! not En esencia su funcionamiento es el siguiente: &&, and, (Y lógico) - para dar un resultado cierto (true), se deben cumplir todas las condiciones propuestas, por ejemplo: 7 > 3 && 5 < 6 > true && true lo cual da true, pero; 3 < 7 && 8 > 9 > false, ya que 8 no es mayor que 9, al no cumplirse una condición el resultado final es falso. Otro ejemplo podría ser comprobar si un número está entre dos valores (entre 10 y 17): if (edad >= 10 && edad <= 17)
Operadores lógicos, OR, (O lógico) - en este caso la proposición propuesta dará como resultado true en caso de que al menos una de las condiciones se cumpla, como vimos en el bucle anterior. 7 > 3 5 > 6 > true false lo cual da true, pero; 3 == 7 8 > 9 > false false, por tanto false ya que ambas condiciones son falsas. Otro ejemplo podría ser comprobar si un número no está entre dos valores (entre 10 y 17): if (edad < 10 edad > 17)
Operadores lógicos (Operador not), NOT,!- como su nombre indica cambia el estado de la expresión. Lo que es false lo transforma en true y viceversa.!(7 > 3) > false, ya que 7>3 es true, por tanto not true es lo contrario.!(3 == 7) > true ya que 3 == 7 es false, por tanto lo contrario not false es true. A menudo vemos condiciones como esta, por ejemplo una condición que compruebe si un número (en este caso la variable a ) es distinto de cero; if (!(a == 0))