CAPÍTULO 2: SECUENCIACIÓN Y ESTRUCTURAS - Inicio
Transcripción
CAPÍTULO 2: SECUENCIACIÓN Y ESTRUCTURAS - Inicio
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca CAPÍTULO 2: SECUENCIACIÓN Y ESTRUCTURAS DE SELECCIÓN Empecemos el estudio de este segundo capítulo no sin antes recordar que un programa tiene un orden estricto de ejecución, en el pseudocódigo que estamos estudiando ubicamos números y letras a la izquierda de cada línea que es parte del algoritmo, vea la página 53 del texto básico, para señalar cuál es el orden de ejecución. En los programas escritos en Java o en cualquier otro lenguaje de programación no es necesario el uso de números 1 para indicar cuál es el orden de ejecución, generalmente las líneas de código se ejecutan según el orden en el que fueron escritos. A este orden se lo denomina flujo normal de ejecución. Todos los lenguajes de programación que se denominan de alto nivel, poseen un conjunto de estructuras que permite controlar y modificar el flujo de ejecución de un programa. Estas estructuras pueden clasificarse en: secuenciación, selección y repetición. En este capítulo nos dedicaremos a aprender la secuenciación y selección por lo cual necesitamos estudiar ciertas secciones del Capítulo 2 “Elementos para solucionar problemas en pseudocódigo”, el Capítulo 3 “La secuenciación” y el Capítulo 4 “La selección” del texto básico. Iniciemos este capítulo estudiando el comportamiento por defecto que tienen todos los programas, independientemente del lenguaje de programación con el que fueron escritos, y que se denomina secuenciación. 2.1 La secuenciación Realice una lectura comprensiva del Capítulo 3 “La secuenciación”. Una vez hecha la lectura regrese a este apartado para revisar algunos temas que debe tener en cuenta. ¿Qué le pareció la lectura? ¿Comprendió? Si es así avancemos y repasemos ciertos elementos de la lectura anterior. Acuda a la página 50 del texto básico y encontrará un definición de secuenciación y como se implementará en el pseudocódigo que estamos aprendiendo. Es necesario que analice a detalle los puntos 3.1 ”Nuestro primer programa” y 3.2 “Estructura y diseño de un algoritmo” ya que ellos explican como se arma un algoritmo y se plantea el primer problema a resolver, para luego en el punto 3.3 “Nuestro primer algoritmo” mostrar ya el primer algoritmo que resuelve el problema planteado. Hagamos entonces una analogía con el mundo de Java. En Java, así como en 1 En la guía todas las imágenes que muestran programas Java tienen números (a la izquierda de cada línea), esos números no son parte del programa y las usamos con el afán de hacer más sencilla la explicación de los mismos. Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca todos los lenguajes de programación, la secuenciación es una característica innata, es decir, que ya viene implementada como el comportamiento por defecto, ejecutando una tras otras las líneas de código según el orden en el que aparecen en el código fuente. El código fuente es un archivo en texto plano que muestra las instrucciones que el programa ejecutará. En Java el código fuente se graba en un archivo con la extensión .java y contiene a una clase. Analicemos ahora como Java implementa las estructuras que posee un algoritmo (apartado 3.2 del texto básico). 1. El encabezado Si bien en Java no existe una representación directa para este elemento podemos utilizar comentarios de bloque para identificar el programa. Lo haríamos así: /** * Programa CALCULAR SUELDO DE UN EMPLEADO * @author jorgaf */ Ubicaremos una descripción del programa que vamos a elaborar y otras explicaciones que le pueden ayudar a entender el propósito del programa. Además podemos ubicar el nombre de la persona que elaboró el programa, para ello debemos colocar @author y luego el nombre del programador. El @author es un comentario de documentación, por ahora no nos preocuparemos del mismo. 2. Clases Todo programa que creamos en Java es una clase y se define con el siguiente código: public class Empleado1 { Esta clase se llama Empleado1. Al final de la definición de la clase se coloca una llave de apertura, que indica el inicio del bloque de código que corresponde a la clase. Un bloque de código es una o más sentencias que se encierran entre llaves {} y pueden incluir a otras estructuras como métodos y estructuras de control Además de la clase se define el método principal, que en Java tiene la siguiente forma: public static void main(String args[]){ Los detalles lo dejaremos para el segundo bimestre cuando estudiemos métodos. Por cada clase únicamente puede existir un método principal. 3. Declaraciones Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Para las declaraciones revise la Ilustración 1 que se encuentra en el capítulo anterior de la presente guía didáctica. Las declaraciones más utilizadas serán las variables, razón por la cual debe estudiarlas con mayor detenimiento. 4. Leer, calcular e imprimir Las acciones de leer e imprimir o escritura de información lo analizamos en el capítulo anterior, vuelva a revisarlas. Los cálculos se realizan a través de sentencias de asignación, que son instrucciones que permiten asignar resultado de una expresión matemática, trigonométrica o lógica a una variable. Entraremos en detalles en la sección 2.2 Operadores aritméticos y funciones matemáticas de la presente guía didáctica. 5. Fin del método principal de la clase y del algoritmo En Java estos elementos se señalan con llaves de cierre para el método principal y la clase. No se señala el cierre del algoritmo. Como se menciona en la nota de la página 53 del texto básico, el mismo incluye un CD con los programas Java de cada uno de los algoritmos desarrollados en los diferentes capítulos. Existen algunas diferencias entre lo que planteamos en la guía didáctica y lo que encontrará en el CD. Las diferencias son: el ingreso de datos y la salida o escritura de datos. Usted está en la libertad de seleccionar la forma a la que mejor se adapte, aunque recomendamos usar lo expuesto en esta guía. En la siguiente ilustración usted encontrará la “traducción” que hemos realizado para el algoritmo que se encuentra en la página 53 del texto básico. Observe como a través de comentarios señalamos el encabezado y el inicio de algunas secciones como el método principal, las declaraciones. Vea las diferencias que existen entre el código que contiene el CD del texto básico y el código desarrollado para la materia, especialmente para el ingreso y escritura de datos. Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 1 Clase Empleado1, primer algoritmo "traducido" Es necesario que revise la explicación del algoritmo de la página 53, ponga especial atención a la nota que se encuentra en la página 54 y establezca la relación con la línea 23 de la ilustración anterior. Vea la representación esquemática de las variables en memoria. Finalmente haga la práctica que se recomienda en la página 55. Generalmente dentro de los programas como el que muestra la Ilustración 5, se utilizan espacios en blanco (saltos de línea y tabuladores) con el fin de mejorar la legibilidad del código fuente, ellos no influyen de ninguna manera en el programa (no son la causa de errores, su existencia o ausencia no hace que un programa funcione) y su uso es exclusivamente para facilitar la lectura de los programas. Cosa igual sucede con los comentarios, solamente son útiles para que el programador entienda que hace y luego recuerde lo que hizo. La secuenciación es útil para resolver problemas en los que intervienen algún tipo de cálculo (matemático, trigonométrico o lógico), como ejemplo calcular el sueldo de un empleado según las horas trabajadas, calcular el área de un triángulo, etc. Generalmente la secuenciación se aplicará para hacer algoritmos y programas que resuelven alguna fórmula. Para ello es necesario conocer los operadores matemáticos (página 43 del texto básico) y algunas funciones matemáticas (página 55 del texto básico). Seguidamente revisaremos estos temas. Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca 2.2 Operadores aritméticos y funciones matemáticas Recurra nuevamente al texto básico y lea detenidamente las páginas de 43 a la 55. Además revise los ejemplos que ahí se muestran. Para realizar algún tipo de cálculo es necesario trabajar con operadores, operandos y alguna función matemática (elevar un número x a una potencia y por ejemplo). Por tal motivo debemos definir cada una ellas. El pseudocódigo que estamos aprendiendo muestra sus operadores aritméticos en la página 43 del texto básico, concretamente en el apartado “3. Operaciones aritméticas fundamentales”, ponga atención a los notas que se muestran en las páginas 44 y 45. El último ejemplo de la página 43 muestra como “traducir” expresiones algebraicas a expresiones comprensibles por un computador, que muchas veces puede traer problemas cuando nos iniciamos en la programación. Otro punto a analizar es la precedencia de operadores que se encuentra explicado correctamente en la página 45. Finalmente vea los ejercicios de conversión que inician al final de la página 45 y terminan en la 46. Antes de pasar a analizar la correspondencia entre los operadores aritméticos del pseudocódigo con los operadores de Java, dos observaciones: - El operador de multiplicación es el asterisco (*), no la letra equis minúscula (x) o mayúscula (X) - Expresiones así: 3(2y-1) no son válidas, un computador no las comprenderá y nos lanzará un error léxico (página 25 del texto básico, el tema 2). La omisión del operador de multiplicación es un error programación, especialmente cuando somos principiantes. común en la Dentro de Java existen los mismos operadores aritméticos que muestra el texto básico, su correspondencia se muestra en la siguiente tabla: Tabla 1 Correspondencia entre operadores aritméticos Operador pseudocódigo Operador Java Ejemplo + (Suma) + a = a + 3; - (Resta) - a = a - 3; * (Multiplicación) * a = a * 3; / (División real) / a = a / 3; \ (División entera) NO EXISTE Mod (Módulo) % a = a % 3; = (Asignación) = a = 3; En Java, no existe el operador de división entera, pero cuando estamos dividiendo 2 números enteros, el resultado será un número entero (Ejemplo: 5/2 = 2). ¿Qué sucede con la parte decimal? Nada, simplemente la división entre enteros da como resultado un entero. Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca En cambio la división entre números reales (o cuándo al menos uno de los operandos es un número real), el resultado será un número real. Por ejemplo 5.0/2 = 2.5. En Java, la división entre números enteros da como resultado otro número entero, sin parte decimal, sin redondeos, ni truncamientos. Otro de los operadores que cambia de forma, entre el pseudocódigo y Java es el operador módulo, pero el resultado siempre será el mismo (el residuo de una división entera), esto limita su aplicación con números enteros, tanto en Java como pseudocódigo. El operador módulo (% en Java, Mod en pseudocódigo) solamente se puede aplicar entre números enteros. Una operación que a veces puede causar confusión es la asignación, no siempre, pero sí las que tienen la siguiente forma: int a = 5; a = a + 2; Alguna vez, nos podemos preguntar, ¿Cómo es posible que la variable a esté a ambos lados del signo igual? ¿Cuál es el valor que toma a antes de la asignación, 5 o 7? Bien cuando estemos realizando cualquier tipo de asignación (usando el signo igual), siempre se resuelve primero lo que tenemos a la derecha del igual, para luego asignar ese valor a la variable que se encuentra a la izquierda del igual. Entonces en el código anterior, en la línea en donde se realiza la suma (a la derecha del igual) a toma el valor de 5; finalmente y luego de la asignación el valor de a es 7. Las funciones matemáticas, página 55 del texto básico, difieren considerablemente en Java. En Java para invocarlas es necesario utilizar la clase estática Math. Veamos una tabla de equivalencias entre Java y pseudocódigo. Tabla 2 Equivalencia entre funciones matemáticas Función pseudocódigo Función Java Ejemplo Seno(x) Math.sin(x) Math.sin(45); Coseno(x) Math.cos(x) Math.cos(90); ArcoTan(x) Math.atan(x) Math.atan(0); Ln(x) Math.log(x) Math.log(4.3); Exp(x) Math.exp(x) Math.exp(89); Absoluto(x) Math.abs(x) Math.abs(-2.8); RaizCuad(x) Math.sqrt(x) Maht.sqrt(36); Potencia(base, exponente) Math.pow(base, exponente) Math.pow(3, 4); La tabla anterior muestra algunos ejemplos de equivalencias, solamente las definidas en el texto básico, pero la clase Math tiene algunas otras funciones y valores constantes como PI y E, Math.PI y Math.E respectivamente. Tanto para el pseudocódigo como para Java el valor de x puede ser un número entero Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca o real. Pero el resultado de una función matemática en Java, siempre será un número real. Luego de revisar la Tabla 2, posiblemente se pregunte ¿cómo calculo la raíz 7 de 127? La respuesta es usando la función potencia, debido a la siguiente equivalencia: En un ejemplo sería: Y en código Java, se expresaría así: double raiz; raiz = Math.pow(127, 1.0/7); Los siguientes programas Java muestran el uso de los operadores aritméticos y las funciones matemáticas. Ilustración 2 Programa que muestra el uso de los operados aritméticos Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca En la ilustración anterior podemos ver como se hacen las divisiones enteras y reales, fíjese en las líneas desde la 29 hasta la 34. La salida del programa se muestra en la siguiente imagen: Ilustración 3 Salida del programa de la Ilustración 6 La Ilustración 8 muestra el uso de las funciones matemáticas. Recuerde que una función matemática en Java siempre devuelve un valor real, por ese motivo la variable resultado se definió como double. En la línea 32 se muestra el cálculo de la raíz 7 de 127, usamos 1.0 para decirle a Java que el exponente debe ser un valor real. Ilustración 4 Programa que muestra el uso de las funciones matemáticas La salida del programa es la siguiente: Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 5 Salida del programa de la Ilustración 8 Observe, en la ejecución del programa, que el separador decimal es la coma (,), aunque en el código fuente de un programa en Java es el punto (.). La diferencia se da porque el sistema operativo usa como separador decimal la coma (,) y la ejecución depende del sistema operativo. Esto puede cambiar según la forma en la que trabaja su sistema operativo. Las siguientes imágenes muestran la “traducción” de los algoritmos de los ejercicios 3.4.2 (página 59) y 3.5.2 (página 61). Ilustración 10 Programa para el algoritmo 3.4.2 del texto básico Como se mencionó anteriormente la clase Math posee algunas constantes, por tal razón no se definió PI como tal, sino que se utilizó el valor que tiene la clase Math (vea las líneas 25 y 26 de la Ilustración 10). La salida del programa anterior se muestra en la siguiente imagen: Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 7 Salida del programa de la Ilustración 10 La siguiente ilustración corresponde al programa del ejemplo 3.5.2, página 61 del texto básico. Ilustración 12 Programa que representa al algoritmo 3.5.2 del texto básico La salida es la siguiente: Ilustración 9 Salida del programa que se muestra en la Ilustración 12 Para una mejor comprensión de los temas aquí tratados es necesario que revise todos los ejercicios desde el 3.4.1 (página 58) hasta el 3.5.3 (página 62) del texto básico. Antes de revisar las soluciones trate usted mismo de resolverlos y compare sus respuesta con el texto básico. Recuerde que primero debe entender el pseudocódigo y luego la programación Java. Una vez comprendidos los ejercicios, trate de codificarlos en Java. Recuerde que si tiene problemas en Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca la “traducción” a Java, puede revisar el CD del texto básico y ver los ejercicios escritos en Java, sin olvidar la diferencia que existe en la entrada y salida de datos entre el código Java que muestra el CD y el código que se expone en esta guía. Una vez que hemos analizado la secuenciación debemos iniciar el estudio de las estructuras de selección, ya que si bien la secuenciación es un mecanismo que sirve para un tipo de problemas es limitado, por lo que es necesario complementarla a través de otras estructuras como la selección. 2.3 Estructuras de selección Es el momento de realizar una lectura comprensiva del Capítulo 4 “La selección” del texto básico. Una vez concluida la lectura vuelva a este apartado para desarrollar en detalle algunas ideas que le ayudaran a comprender de mejor manera este tema. ¿Qué le pareció la lectura? ¿Comprendió? Si es así avancemos y repasemos ciertos elementos de la lectura anterior. La secuenciación, nos permite hacer un cierto tipo de ejercicios, que pueden ser clasificados como sencillos. Pero la secuenciación no es suficiente, para resolver todos los problemas a los que nos podemos enfrentar, por tal motivo se han creado las estructuras de control: selección y repetición. La primera de las estructuras de programación que analizaremos es la selección, para lo cual nos apoyaremos en el texto básico, en el Capítulo 4 “La selección”, página 67. Para empezar revise el ejercicio que se muestra en la página 68 que nos muestra la necesidad de contar con estructuras que nos permitan decir si un grupo de acciones o instrucciones se ejecutan o no. De manera general las estructuras de selección son IF-THEN-ELSE, IF-THEN y SWITCH que son analizadas en las páginas 68, 79 y 80 respectivamente. Veamos cuál es la representación de cada uno de ellos en Java, iniciando por IF-THEN-ELSE, revise por completo el punto 4.1 del texto básico. Vamos a usar el algoritmo que se muestra en la página 70, solamente mostraremos las secciones d, e y f. Ilustración 10 Ejemplo en Java de la estructura IF-THEN-ELSE Recuerde siempre revisar la explicación de cada uno de los algoritmos, para de esa manera comprenderlos. En la ilustración anterior podemos ver como la línea d del pseudocódigo corresponde a la línea 29 en Java; la línea e corresponde a la línea 31 y la línea f corresponde a la línea 33. Para que se ejecute la línea 30 es necesario que el valor de la variable horasTrab sea menor o igual a 40, sino es así (si es mayor Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuella de Ciencias d de la Computacción – UTPL Fundamentoss de la Program mación Autores: Ing g. Jorge López, Ing. Greyson Alberca que 40) se ejecutará e la línea 32 2. Vemos como exiisten bloques (línea as de códig go, encerra adas entre e llaves {})) tanto parra el if com mo para el else. En el e pseu udocódigo el bloque e del IF inicia en la siguie ente línea luego de e su decla aración y llega hasta a encontrarr la palabrra ELSE, mientras m qu ue el bloque del ELSE E inicia luego de la pa alabra ELS SE y llega hasta h la palabra ENDIF. Una sentencia que sea parte p de un u bloque IF-THEN-E ELSE debe ubicarse en e el bloque de sentencias de el IF o en bloque b del ELSE, pero nunca ffuera. Tantto en Java a como en el pseudo ocódigo se suele usa ar indentac ción, revis se la págin na 71 puntto 4.2 del texto básico, para encontrar e una u definic ción a este e término y ver algunos ejemp plos. Entre las difere encias que e podemos encontrarr entre el pseudocódi p igo y Java para el IF-THEN-EL LSE (que podemos generaliza ar para to odas las estructuras de conttrol) son: - Ell uso de las s minúscullas para las palabras reservada as IF y ELS SE. - En n Java no existe e la pa alabra THE EN. - Ell uso de los s paréntes sis para enc cerrar la co ondición qu ue en Java a es obligattorio. - Y el uso de llaves ({}) para iden ntificar los bloques de d código, tanto para a el if co omo el else e. En la a página 77 del texto o básico, encontrará e el tema 4.4 “IF’s anidados” qu ue no es otra cosa que ubicar dentro de un IF a otro u otros s IF. La sig guiente imagen mue estra un eje emplo en Java J que nos ayuda a aclarar es ste tema. Ilustración r 11 Ejem mplo de IF's anidados Veam mos ahora a la repre esentación de IF-TH HEN o tam mbién conocida com mo la selec cción simp ple (lea po or completto el aparttado 4.5 “La “ selecciión simple e (IFTHEN N)” del tex xto básico, páginas 79 y 80), en n Java. La sección de e código qu ue se toma ará corresp ponde al algoritmo de la página a 80 en los s puntos e.. y f. Ilustración r 12 Cód digo Java quee muestra la estructura e IF F-THEN La líneas l e. y f. del pseudocódigo, corrresponden a las lín neas 31 y 33 respectivamente del cód digo Java. En este caso c si el valor de horasTra ab es mayor que 40 se ejecuta ará la línea a 32, si no es así, se continua c con la línea a 34. Esta a obra ha sido licenciada con Creative C Commo ons Ecuador 3.0 0 de Reconocim miento - No com mercial Compa artir igual (http:///creativecommo ons.org/licensess/by-nc-sa/3.0/e ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca En este ejemplo no existe un caso alternativo, únicamente se cuenta con el bloque de sentencias del IF. La última estructura de selección es SWITCH, revisar por completo el acápite 4.6 “La selección múltiple (SWITCH)”, página 80 del texto básico. La siguiente sección de código muestra el algoritmo de la página 82, en las líneas d., e. y f. incluidas las líneas que están dentro. La correspondencia es la siguiente: la línea d. corresponde a la 22, la línea e. a la 44 y la f. a la 46. Ilustración 13 Ejemplo de código en Java que muestra un SWITCH Para identificar cada caso en Java se usa la palabra reservada case, además por cada caso se usa la palabra reservada break (vea las líneas 25, 28, 31, etc.) excepto, en el caso por defecto (línea 44) en donde ya no es necesario. La palabra reservada break le dice a Java que se ha ejecutado uno de los casos del switch y que termine de realizar las comparaciones, saltando a la siguiente línea luego del switch, en el programa sería la línea 47. La única operación de comparación que admite una estructura SWITCH es la igualdad, es decir se compara si el selector (numDia) es igual a uno de los valores de los casos (del 1 al 7). Si no existe ningún valor igual se ejecuta la opción default. El caso por defecto (default) es opcional, es decir que podemos construir una estructura SWITCH sin el, para ver un ejemplo revise el algoritmo de la página 106 (acciones comprendidas entre 4 y 5) del texto básico. Para aclarar el funcionamiento del SWITCH, lea la página 81 del texto básico en donde habla del funcionamiento de esta estructura. Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca En Java se cumple exactamente lo que dice el libro en la página 81 acerca del selector. Los únicos tipos de datos admitidos para la variable que hará de selector son int y char; aunque se ha anunciado que para la versión 7 de Java se soportará el tipo String 2 . Para cada caso (case) existe un bloque de sentencias, aunque no se use las llaves ({}), para mostrarlo. El bloque inicia desde los dos puntos (:) hasta donde inicia el siguiente caso.¿Cuántas y cuáles sentencias pueden ser parte del bloque de un case? La respuesta es cualquier tipo y número de sentencias, no existe restricción alguna. Aunque hasta el momento no hemos visto un bloque de un caso(case) con más de 10 sentencias. En la página 83 del texto básico se muestra otras aspectos de la estructura switch. Tanto para el ejercicio de la página 83 y 84 del texto básico, en Java se pueden programar obviando el uso de las sentencias break en cada caso. Veamos el programa Java que representa el algoritmo de la página 84 para observar cómo trabajar con caracteres (variables tipo char). Ilustración 14 Programa que representa la algoritmo de la página 84 del texto básico 2 Al momento de escribir este documento la última versión de Java era la 6 Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca La ilustración anterior muestra como leer un tipo de dato tipo char (carácter) en la línea 18. En Java, a través de la clase Scanner, no se puede leer directamente un tipo de dato char, por lo cual leemos una cadena de caracteres (método next()) y de esa cadena sacamos el primer carácter (método charAt(0), porque las cadenas de caracteres inician en la posición 0). Vemos también el manejo de los caracteres, siempre se encierra entre comilla sencilla (o apóstrofe) y existe un carácter para las mayúsculas y otro para las minúsculas que es diferente. Podemos ver como la ausencia de la sentencia break; afecta el comportamiento de un programa, permitiendo agrupar los casos. Recuerden que el break señala la salida del switch y al no existir, en los casos anteriores al caso con u (minúscula o mayúscula - líneas 24 y 32), hace que siempre se ejecute ese caso. Vea la explicación de la página 84 del texto básico para despejar sus dudas. Como se pudo haber percatado ya, para el correcto funcionamiento de las estructuras de selección se necesita implementar condiciones, por tal motivo debemos estudiar los operadores relacionales y lógicos ya que ellos permiten crear condiciones. 2.4 Operadores lógicos y relacionales Es necesario que acuda nuevamente al texto básico y lea detenidamente las páginas de la 69 a la 76. Revise a detalle los conceptos y ejercicios que ahí se desarrollan. ¿Qué le pareció la lectura? ¿Comprendió? Si es así avancemos y repasemos ciertos elementos de la lectura anterior que son necesarios destacar. Para comprender el funcionamiento de éstas estructuras de control (en especial IF-THEN-ELSE e IF-THEN), es necesario entender el concepto de condición. En la página 69 del texto básico, se da una definición de lo que es una condición. Para formar condiciones tanto en el pseudocódigo como en Java se debe hacer uso de los operadores relaciones, que son aquellos operadores que nos permiten realizar comparaciones y nos devuelven un valor de verdadero o falso. La siguiente tabla los muestra con su equivalencia en Java, en el texto básico vea la página 73. Tabla 3 Operadores relaciones en psuedocódigo y Java Operador pseudocódigo < > <= >= = <> Operador Java < > <= >= == != Significado Menor que Mayor que Menor igual que Mayor igual que Igual que Diferente de Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Observe como existen diferencias entre los operados de igual y de diferencia que usa Java y el pseudocódigo. Nuestra recomendación es que en el pseudocódigo, use el doble igual (==) para comparaciones de igualdad y (!=) para diferencia. Cuando construya algoritmos en pseudocódigo use los símbolos == y != para relaciones de igual y diferencia respectivamente. Así el proceso de “traducción” a Java será más sencillo. Es común que tengamos que realizar condiciones más complejas que incluya la comparación de los valores de varias variables. Ejemplo: si la persona tiene una edad mayor que 18 y su sexo es femenino es una mujer mayor de edad o revise el algoritmo que se muestra en la página 88 del texto básico, el algoritmo MAYOR 3 NUMEROS, para ver como se forman condiciones que evalúan el valor de más de una variable. Por la anterior podemos decir que para formar condiciones complejas se debe usar, a más de las operadores relacionales, los operadores lógicos, formando lo que se denomina expresiones lógicas. Por favor lea el punto 4.3 “Expresiones lógicas” del texto básico en la página 72. La siguiente tabla muestra los operadores lógicos en pseudocódigo y Java. Tabla 4 Operadores lógicos en Java Operador pseudocódigo AND OR XOR NOT Operador Java && || NO EXISTE 3 ! Significado Conjunción “y” Disyunción “O” “O” Exclusiva Negación Recordemos que estos operadores lógicos tienen tablas de verdad que las pueden revisar en las páginas 74 a la 76 del texto básico. Muchas de las veces, llegamos a acostumbrarnos a ver condiciones sencillas o relativamente fáciles, y eso provoca que cuando tengamos que hacer condiciones complejas no sepamos cómo actuar. Pero recuerden que una condición puede ser tan sencilla como la que se muestra en el algoritmo de la página 70 del texto básico, relativamente compleja como muestra el algoritmo de la página 88 del texto básico o compleja como la que se muestra en la siguiente imagen: Ilustración 15 Condición compleja 4 Para expresiones complejas, ya sean fórmulas matemáticas o expresiones lógicas, es necesario utilizar paréntesis para agrupar los elementos y garantizar que las operaciones se ejecuten en el orden correcto. Recuerden la precedencia de operadores que se analizó en el capítulo anterior. 3 4 Existe un operador XOR a nivel de bits que no es igual al operador lógico y no puede aplicarse. La condición ha sido formulada como un ejemplo sin interesarnos el valor de verdad de la misma. Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Dentro del pseudocódigo y en Java existe un tipo de dato boolean o lógico (página 37 del texto básico). Este tipo de dato puede tener dos valores, pseudocódigo True (en Java true) y False (en Java false). Este tipo de dato se puede usar para declarar variables o para realizar comparaciones. Inclusive en Java una variable tipo boolean puede almacenar el resultado de una expresión boleana. Veamos un ejercicio en pseudocódigo y Java. Algoritmo VARIABLES BOOLENAS Clase VarBoolean 1. Método principal a. Declaraciones Variables expre1, op1, op2 : boolean b. Calcular op1 = True, op2 = False c. Calcular expre1 = NOT((op1 AND op2) or op1) d. IF (expre1 == True) THEN 1. Imprimir el valor de expre1 es verdadero e. ELSE 1. Imprimir el valor de expre1 es falso f. ENDIF h. Fin Método principal Fin Clase VarBoolean Fin El código Java se muestra en la siguiente imagen: Ilustración 16 Ejemplo de un programa Java con valores y expresiones booleanas Los siguientes ejercicios muestra algunas características de las estructuras que hemos estudiado, por lo que les invitamos a que los revisen detalladamente. 2.5 Ejercicios Es necesario que recuerde lo siguiente: en el análisis de los ejercicios desarrollados se utiliza números para referirse a líneas de código de los programas Java. Mientras que, para los algoritmos escritos en pseudocódigo se utiliza letras del alfabeto y a veces la combinación de letras y números. Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca 1. Elabore un algoritmo y luego un programa en Java que aplicando el teorema de Pitágoras calcule el valor de la hipotenusa al cuadrado. Recuerde que: c 2 = a 2 + b 2 En dónde c es la hipotenusa, a y b son catetos. Algoritmo Calculo Hipotenusa Clase Hipotenusa 1. Método principal a. Declaraciones Variables c, a, b : Real b. Solicitar Cateto a y Cateto b c. Leer a, b d. Calcular c = (a*a) + (b*b) e. Imprimir “Hipotenusa al cuadrado =”, c f. Fin Métdo principal Fin Clase Hipotenusa Fin El código Java se muestra continación: Ilustración 17 Cálculo de la hipotenusa Ilustración 18 Ejecución de Clase Hipotenusa Análisis: Recuerde que: para el análisis del código Java todas los números de líneas hacen referencia a la Ilustración 22. Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Las entradas para este problema son los catetos a y b, el proceso es simple: aplicar la fórmula. Para elevar un cateto al cuadrado múltiplicamos por si mismo el valor del cateto(luego veremos otras formas). La salida es el valor de c elevado al cuadrado. La entrada se realiza en los puntos b. y c. del algoritmo, mientras que en Java se lo hace en las líneas de la 19 a la 22. El proceso se ejecuta en el punto d. (algoritmo) y línea 24 (Java). Finalmente la salida se lo hizo en el punto e. con la acción Imprimir y en las líneas 26 y 27 con la sentencia printf, en Java es posible dividir una sentencia en dos líneas. 2. Elabore un algoritmo y luego un programa en Java que calcule el número menor de billetes de 1, 5, 10, 20 ó 50 que se tiene que entregar a una persona que ha ingresado un valor entero. Para resolver este problema imagínese que quiere retirar dinero de una cuenta bancaria usando un cajero automático. Obviando algunos pasos, el proceso sería más o menos así, el usuario digita la cantidad a retirar, el cajero determina la mejor combinación de billetes a entregar. Algoritmo CAJERO Clase Cajero 1. Método principal a. Declaraciones Variables cantidad, nroBilletes : Entero b. Solicitar la cantidad de dinero c. Leer cantidad d. IF cantidad >= 50 THEN 1. nroBilletes = cantidad \ 50 2. Imprimir nroBilletes “ de $50” 3. cantidad = cantidad MOD 50 e. ENDIF f. IF cantidad >= 20 THEN 1. nroBilletes = cantidad \ 20 2. Imprimir nroBilletes “ de $20” 3. cantidad = cantidad MOD 20 g. ENDIF h. IF cantidad >= 10 THEN 1. nroBilletes = cantidad \ 10 2. Imprimir nroBilletes “ de $10” 3. cantidad = cantidad MOD 10 i. ENDIF j. IF cantidad >= 5 THEN 1. nroBilletes = cantidad \ 5 2. Imprimir nroBilletes “ de $5” 3. cantidad = cantidad MOD 5 k. ENDIF l. IF cantidad >= 1 THEN 1. nroBilletes = cantidad 2. Imprimir nroBilletes “ de $1” m. ENDIF n. Fin Método principal Fin Clase Cajero Fin El código Java se muestra continación: Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 19 Clase Cajero La ejecución que se obtiene luego de ejecutar el programa de la Ilustración 23 se muestra a continuación: Ilustración 20 Ejecución del programa Cajero Análisis: Tenga presente que: para el análisis del código Java todas los números de líneas hacen referencia a la Ilustración 23. Para este problema la entrada es un número entero positivo que representa la cantidad a entregar. El proceso consiste en encontrar la combinación de billetes que cubra la cantidad ingresada, sin preocuparnos por la disponibilidad de los billetes, asumiremos que siempre están disponibles. Para el proceso nos ayuda hacernos la pregunta ¿Hay billetes de x Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca denominación en y cantidad de dinero? Por ejemplo ¿Hay billetes de 50 en $69? Una vez determinada la cantidad de billetes debemos trabajar con el dinero restante, en el ejemplo, la cantidad de billetes sería 1, y el sobrante $19. Volvemos a preguntar ¿Hay billetes de 20 en $19? La respuesta es no, seguimos con otra pregunta ¿Hay billetes de 10 en $19? La respuesta es si, entonces determinados la cantidad de billetes de 10, en este caso 1 y el dinero sobrante $9. Avanzamos con otra pregunta ¿Hay billetes de 5 en $9? Respuesta si, calculalos cuántos billetes, para el caso sería 1 billete, y el dinero restante $4. Volvemos a preguntar ¿Hay billetes de 1 en $4? Si, en este caso el número de billetes será igual a la cantidad de dinero ¿porqué? Por que todo número dividido para la unidad es igual a si mismo. La salida se realiza siempre que existan billetes en la cantidad. Tanto el algoritmo como en Java, la pregunta ¿Hay billetes de x denominación en y cantidad de dinero?, se usaron sentencias IF (desde el punto d. hasta el punto i. del algoritmo – en Java líneas desde la 21 hasta la 41). Mientras que para determinar el número de billetes se usa la división entera de la cantidad de dinero para el valor de los billetes. Finalmente para determinar el dinero restante se usa el operador módulo (MOD algoritmo y % Java). Vea los puntos 1 de todas las sentencias IF del algoritmo y las líneas 22, 27, 32, 37 y 42 del programa Java. Como siempre la salida se hace con sentencias Imprimir (pseudocódigo) y printf (Java). 3. Elabore un algoritmo y luego un programa en Java que permita calcular el índice de masa corporal IMC. Para ello debe aplicar la siguiente fórmula IMC = Peso , el peso debe estar expresado en kilogramos y la Altura2 altura en metros. Una vez obetenido el valor de IMC, se debe usar la siguiente tabla 5 de clasificación: Delagadez pronunciada Delgadez Normalidad Gordura Obesidad Hombre Hasta 15 15 – 20 20 – 25 25 – 30 Arriba de 30 Mujer Hasta 13 13 – 18 18 – 23 23 – 28 Arriba de 28 El algoritmo es el siguiente: Algoritmo Calcular el índice de masa corporal Clase IndiceMasaCorporal 1. Método principal a. Declaraciones Variables peso, altura, imc : Real sexo : Carácter b. Solicitar peso, estatura, sexo 5 Tabla elaborada según la información que se encuentra en: http://bulimarexia.com.ar/ Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca c. Leer peso, altura, sexo d. Calcular imc = peso / (altura * altura) e. Imprimir “Indice masa corporal” imc f. IF sexo == ‘H’ THEN 1. IF imc <= 15 THEN a. Imprimir “Delgadez pronunciada” 2. ELSE a. IF imc > 15 AND imc < 20 THEN 1. Imprimir “Delgadez” b. ELSE 1. IF imc > 20 AND imc < 25 THEN a. Imprimir “Normalidad” 2. ELSE a. IF imc > 25 AND imc < 30 THEN 1. Imprimir “Gordura” b. ELSE 1. IF imc >= 30 THEN a. Imprimir “Obesidad” 2. ENDIF c. ENDIF 3. ENDIF c. ENDIF 3. ENDIF g. ELSE 1. IF imc <= 13 THEN a. Imprimir “Delgadez pronunciada” 2. ELSE a. IF imc > 13 AND imc < 18 THEN 1. Imprimir “Delgadez” b. ELSE 1. IF imc > 18 AND imc < 23 THEN a. Imprimir “Normalidad” 2. ELSE a. IF imc > 23 AND imc < 28 THEN 1. Imprimir “Gordura” b. ELSE 1. IF imc >= 28 THEN a. Imprimir “Obesidad” 2. ENDIF c. ENDIF 3. ENDIF c. ENDIF 3. ENDIF h. ENDIF 2. Fin Método principal Fin Clase IndiceMasCorporal Fin Y el código Java es: Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 21 Programa IMC Análisis: Recuerde que: para el análisis del código Java todas los números de líneas hacen referencia a la Ilustración 25. Para este problema las entradas son el sexo, el peso y la altura. Parte del proceso es calcular el índice de masa corporal aplicando la fórmula que se detalla en el planteamiento del problema. Con el valor del imc y el sexo se debe buscar el rango al que pertenece ese valor, según el sexo. La salida es la clasificación según el imc y el sexo. Probablemente, la tarea más compleja es determinar el rango al que pertenece el imc, para ello se utilizó una serie de sentencias IF-THENELSE. La primera sentencia IF hace la clasificación según el sexo, los siguientes IF evaluan el rango al cual pertenece imc, algunos rangos tienen un límite mínimo y otro máximo en ellos se usa el operador lógico Y (AND (Algoritmo), && (Java)) para construir la condición. 4. Elabore un algoritmo y luego un programa en Java que calcule la edad de una persona. La edad debe expresarse en años, meses y días. El algoritmo es el siguiente: Algoritmo CALCULAR EDAD Clase Edad 1. Método principal a. Declaraciones Variables añoAc, mesAc, diaAc : Entero Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca añoNa, mesNa, diaNa: Entero añosE, mesesE, diasE: Entero b. Solicitar año, mes y día actual c. Leer añoAc, mesAc, diaAc d. Solicitar año, mes y día de nacimiento e. Leer añoNa, mesNa, diaNace f. IF añoNa <= añoAc THEN 1. IF diaAc < diaNa THEN a. Calcular diaAc = diaAc + 30 b. Calcular mesAc = mesAc -1 2. ENDIF 3. IF mesAc < mesNa THEN a. Calcular mesAc = mesAc + 12 b. mesAc = mesAc – 1 4. ENDIF g. Calcular añosE = añosAc – añoNa; h. Calcular mesesE = mesAc – mesNa i. Calcular diasE = diasAc – diaNa j. Imprimir añosE, mesesE, diasE 2. ELSE 1. Imprimir “Datos incorrectos” 3. END FI 4. Fin Clase IMC FIN El programa en Java que se muestra a continuación usa algunas sentencias adicionales ya que no lee la fecha actual, sino que la obtiene del computador. Las líneas 8,9, 18 y el grupo 25-27 se usan para obtener la fecha del computador. En Java por alguna razón los meses inician desde 0 por eso en la línea 26 se agrega una unidad. Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 22 Programa en Java que calcula la edad de una persona Análisis: No olvide que: para el análisis del código Java todas los números de líneas hacen referencia a la Ilustración 26. Para este problema las entradas, en el algoritmo, son las fechas de nacimiento y actual, mientras que para el programa en Java, es únicamente la fecha de nacimiento ya que como se explico Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca anteriormente la fecha actual se obtiene del computador. El proceso consiste en restar de la fecha actual la fecha de nacimiento; restando en el siguiente orden: día actual menos día de nacimiento, mes actual menos mes de nacimiento y año actual menos año de nacimiento. Las restas se deben hacer siempre que sea posible, es decir cuando el minuendo (valores de fecha actual) es mayor que el sustraendo (valores de fecha de nacimiento). En caso de no ser posible (sustraendo mayor al minuendo) se debe actuar así: - En caso de no ser posible la resta en los días se debe pedir 30 días y sumarlos al día actual, como se pidió 30 días (es decir 1 mes) se debe disminuir en una unidad al mes actual. Vea el punto 1. bajo f. del algoritmo y las líneas 37-40 del código Java . - En el caso de los meses se debe pedir 12 meses al año actual, sumarlos al mes actual y disminuir en una unidad al año actual. Vea el punto 3. bajo f. del pseudocódigo y las líneas 41-44 del código Java. Tanto en el algoritmo como en el programa Java, primero se evalúa la factibilidad de realizar la resta, sino es así se ajustan los valores como indica el párrafo anterior; para luego sí realizar las restas puntos del g. al h. (algoritmo) y líneas 45 – 47 (Java). La salida es la edad de la persona. El algoritmo y programa también verifican que año de nacimiento sea como máximo igual al año actual (IF del punto f. del algoritmo – Línea 36 del código Java). 5. Elaborar un algoritmo que permita la conversión de un número decimal a los diferentes tipos de sistemas numéricos binario, octal, hexadecimal. Algoritmo CONVERSION TIPOS Clase Secuenciaación1. 1. Método Principal a. Declaraciones Variables i: entera hex,bin,octal: Cadena b. Solicitar numero en Decimal c. Leer i d. Calcular hex= valor hexadecimal de i; e. Calcular bin= valor binario de i; f. Calcular octal= valor octal de i g. Imprimir el valor hex, bin, octal 2. Fin del Método principal Fin de la Clase Código Java: Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 23 Programa en Java que transforma entre sistemas de numeración Análisis Tenga presente que: para el análisis del código Java todas los números de líneas hacen referencia a la Ilustración 27. Para este problema la entrada en el programa es un número en el sistema decimal (base 10) y la salida es la representación de dicho número en los sistemas numéricos de bases 2, 8 y 16. El proceso es sencillo simplemente definimos tres variables de tipo String (hex, bin y octal) que van a contener los valores luego de la conversión. Observe en las líneas, 15, 16, 17 se utiliza la clase Interger.toHexString ó Integer.toBinaryString ó Integer.toOctalString, para convertir un número de base decimal a los diferentes sistemas numéricos. Es importante observar el parámetro entero i, que es el valor que ingreso el usuario y utilizado para la conversión. Una vez almacenado los valores hex, bin y octal se procede a presentar los resultados de estas cadenas, las mismas que corresponden a el equivalente de i en los diferentes sistemas numéricos. En este capítulo hemos analizado las estructuras de control conocidas como secuenciación y selección. Aprendimos cómo trabaja la secuenciación, su utilidad y la necesidad de otras estructuras de control como la selección. También examinamos las diferentes formas de estructuras de selección, detallando y dando ciertas recomendaciones sobre cada una de ellas. Además Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/). Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca revisamos como se puede formar expresiones complejas a través de la concatenación de operadores relacionales y lógicos. Y finalmente desarrollamos algunos ejercicios que ayudan a aclarar los temas expuestos. Con el afán de que incremente sus conocimientos y aclare algunos de los conceptos que se expresaron en este capítulo, los invitamos a revisar el siguiente material adicional. Material adicional: En el CD que se adjuntó en la guía didáctica, puede revisar (programación-en-java-i\Contenidos\LecturaObligatoria\) los archivos: 2-estructuradeunprogramaenjava.pdf 3-tiposprimitivosdedato.pdf 4-operadores.pdf – A excepción del punto 4.8 5-sentenciasselectivasocondicionales.pdf Para determinar el nivel de comprensión de la materia que hasta el momento ha alcanzado, les recomendamos desarrollar la siguiente autoevaluación. Recuerde que las respuestas a todas las autoevaluaciones las puede encontrar en las secciones finales de la guía didáctica. Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).