Contenido 1
Raptor Flowchart ............................ .......................................... ............................ ............................. ............................. ............................ ............................ ............................ ............................ ............................ ...................... ........ 6 1.1 1.1.1
Diagramas de flujo ........................... ......................................... ............................ ............................. ............................. ............................ ............................ ............................ ............................ ...................... ........ 6
1.1.2
Pseudocódigo............................ .......................................... ............................ ............................. ............................. ............................ ............................ ............................ ............................ ............................ ................ 6
1.1.3
Etapas para resolver un problema ............................. ........................................... ............................ ............................ ............................ ............................. ............................. ........................ .......... 6
1.2
2
Raptor......................... Raptor........................................ ............................. ............................ ............................ ............................ ............................ ............................ ............................. ............................ ........................... .................... ...... 8
1.2.1
Estructura ............................ ........................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ............................ .................... ...... 8
1.2.2
Símbolos........................ Símbolos....................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ............................ ........................... ............. 8
1.2.3
Menús ........................... .......................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ............................ ........................... ............. 9
1.2.4
Haciendo un programa Raptor ........................... ......................................... ............................ ............................ ............................ ............................. ............................. ............................ ................. ... 9
Símbolos Assignment, Input y Output ............................ .......................................... ............................ ............................ ............................ ............................. ............................ ........................... .................. .... 12 2.1
Variables............................ ........................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ............................ ......................... ........... 12
2.2
Símbolo Input ........................... .......................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ............................ .................. .... 13
2.3
Símbolo Assignment........................... ......................................... ............................ ............................ ............................ ............................ ............................ ............................ ............................. ....................... ........ 14
2.3.1
Operadores aritméticos .......................... ........................................ ............................ ............................. ............................. ............................ ............................ ............................ ........................... ............. 14
2.3.2
Funciones matemáticas básicas ............................ ........................................... ............................. ............................ ............................ ............................ ............................ ........................... ............. 15
2.3.3
Jerarquía operadores aritméticos............................ .......................................... ............................ ............................ ............................ ............................ ............................ ......................... ........... 15
2.4
Símbolo Output ........................... ......................................... ............................ ............................ ............................ ............................ ............................ ............................ ............................. ............................. ................ 16
2.5
Comentarios ........................... ......................................... ............................ ............................. ............................. ............................ ............................ ............................ ............................ ............................ .................... ...... 17
2.6
Ejemplos............................ ........................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ............................ ......................... ........... 18
2.6.1
Sumar 2 números........................... ......................................... ............................ ............................ ............................ ............................ ............................ ............................ ............................. ....................... ........ 18
2.6.2
Área de un círculo .......................... ........................................ ............................ ............................ ............................ ............................ ............................ ............................ ............................. ....................... ........18
2.6.3
Calcular cubo y raíz de un número positivo ................. ............................... ............................. ............................. ............................ ............................ ............................ .................... ...... 19
2.7 3
Algoritmo .......................... ......................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ............................ ........................... ............. 6
Ejercicios ........................... .......................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ............................ ......................... ........... 20
Símbolo Selection ............................ .......................................... ............................ ............................. ............................. ............................ ............................ ............................ ............................ ............................ .................... ...... 22 3.1
Introducción ........................... ......................................... ............................ ............................. ............................. ............................ ............................ ............................ ............................ ............................ .................... ...... 22
3.2
Formas diferentes de utilizar el símbolo Selection .................................... .................................................. ............................. ............................. ............................ ...................... ........ 23
3.3
Operadores relacionales ........................... ......................................... ............................ ............................ ............................ ............................. ............................. ............................ ............................ ................ 24
3.4............................ 3.4.......................................... ............................ ............................ ............................ ............................. ............................. ............................ ............................ ............................ ............................ ............................ .................... ...... 24 3.5
Operadores lógicos ............................ .......................................... ............................ ............................ ............................ ............................ ............................ ............................ ............................. ....................... ........ 25
3.6
Jerarquía operadores ........................... ......................................... ............................ ............................. ............................. ............................ ............................ ............................ ............................ .................... ...... 26
3.7
Ejemplos............................ ........................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ............................ ......................... ........... 27
3.7.1
Calificaciones versión 1.0 ........................... ......................................... ............................ ............................ ............................ ............................. ............................ ........................... ......................... ........... 27
3.7.2
Calificaciones versión 2.0 ........................... ......................................... ............................ ............................ ............................ ............................. ............................ ........................... ......................... ........... 27
3.7.3
Calificaciones versión 3.0 ........................... ......................................... ............................ ............................ ............................ ............................. ............................ ........................... ......................... ........... 28
3.8
Ejercicios ........................... .......................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ............................ ......................... ........... 29 2
4
Símbolo Loop ............................ .......................................... ............................ ............................ ............................ ............................. ............................. ............................ ............................ ............................ ........................... ............. 32 4.1
Introducción ........................... ......................................... ............................ ............................. ............................. ............................ ............................ ............................ ............................ ............................ .................... ...... 32
4.2
Contador ........................... .......................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ............................ ......................... ........... 33
4.3
Acumulador ............................ .......................................... ............................ ............................. ............................. ............................ ............................ ............................ ............................ ............................ .................... ...... 34
4.4
Formas diferentes de utilizar Loop ........................... .......................................... ............................. ............................ ............................ ............................ ............................ ........................... ............. 35
4.5
Ejemplos............................ ........................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ............................ ......................... ........... 36
4.5.1
Contar número de aprobados y reprobados de 5 calificaciones .............................. ............................................. ............................ ........................... .................. .... 36
4.5.2
Sumar una lista de gastos ............................ .......................................... ............................ ............................ ............................ ............................. ............................. ............................ ...................... ........ 37
4.5.3
Leer lista de números y mostrar la suma de los positivos y la suma de los negativos ................................ ........................................... ........... 38
4.6 5
Introducción a las computadoras y Java ................................ .............................................. ............................ ............................ ............................ ............................ ............................ ......................... ........... 41 5.1
Teoría ............................ .......................................... ............................ ............................ ............................ ............................ ............................ ............................ ............................. ............................. ............................ ................ 41
5.1.1
Que es una computadora? .......................... ........................................ ............................ ............................ ............................ ............................. ............................. ............................ ...................... ........ 41
5.1.2
Lenguajes de programación ........................... ......................................... ............................ ............................. ............................. ............................ ............................ ............................ .................... ...... 41
5.1.3
Sistemas operativos ............................ .......................................... ............................ ............................ ............................ ............................ ............................ ............................ ............................ .................. .... 41
5.1.4
Java ........................... ......................................... ............................ ............................ ............................ ............................ ............................ ............................ ............................. ............................. ............................ ................ 41
5.1.5
Especificación del lenguaje Java, API, JDK e IDE ....................................... ..................................................... ............................ ............................ ............................ .................... ...... 41
5.2
Lenguaje Java ........................... .......................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ............................ .................. .... 43
5.3
Un programa simple en Java ............................ .......................................... ............................ ............................ ............................ ............................. ............................. ............................ ...................... ........ 44
5.4
Palabras reservadas de Java ........................... ......................................... ............................ ............................ ............................ ............................. ............................ ........................... ......................... ...........47
5.5
Creando, compilando y ejecutando un u n programa en Java ......................... ....................................... ............................ ............................. ............................. ...................... ........ 48
5.6
Descargar e instalar Java y NetBeans ........................ ....................................... ............................. ............................ ............................ ............................ ............................ ........................... ............. 50
5.7
Utilizando NetBeans........................... ......................................... ............................ ............................ ............................ ............................ ............................ ............................ ............................. ....................... ........ 52
5.8
Convenciones de código Java ........................... ......................................... ............................ ............................ ............................ ............................. ............................. ............................ ...................... ........57
5.9
Errores de programación .......................... ........................................ ............................ ............................ ............................ ............................. ............................. ............................ ............................ ................ 58
5.9.1
Errores de compilación ........................... ......................................... ............................ ............................. ............................. ............................ ............................ ............................ ........................... ............. 58
5.9.2
Errores de ejecución ........................... ......................................... ............................ ............................ ............................ ............................. ............................. ........................... ........................... .................. .... 58
5.9.3
Errores de lógica ............................ .......................................... ............................ ............................ ............................ ............................ ............................ ............................ ............................. ....................... ........ 59
5.10 6
Ejercicios ........................... .......................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ............................ ......................... ........... 39
Ejercicios ........................... .......................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ............................ ......................... ........... 60
Programación Elemental .......................... ......................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ......................... ........... 61 6.1 6.1.1
Ejemplo simple ............................ .......................................... ............................ ............................ ............................ ............................ ............................ ............................ ............................. ............................. ................ 61 Caracteres especiales............................ especiales.......................................... ............................ ............................ ............................ ............................. ............................. ............................ ............................ ................ 62
6.2
Secuencias de escape ........................... ......................................... ............................ ............................. ............................. ............................ ............................ ............................ ............................ .................... ...... 63
6.3
Leyendo datos del teclado .......................... ........................................ ............................ ............................. ............................. ............................ ............................ ............................ ........................... .............64
6.4
Identificadores ............................ .......................................... ............................ ............................ ............................ ............................ ............................ ............................ ............................. ............................. ................ 66
6.5
Variables............................ ........................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ............................ ......................... ........... 67
6.6
Constantes ........................... ......................................... ............................ ............................ ............................ ............................ ............................ ............................ ............................. ............................. ...................... ........ 68 3
7
8
6.7
Convenciones para nombres de identificadores ......................................................................................................... 69
6.8
Tipos de datos numéricos ...........................................................................................................................................70
6.8.1
Como leer números del teclado .............................................................................................................................. 70
6.8.2
Operadores aritméticos .......................................................................................................................................... 71
6.8.3
Evaluar expresiones y jerarquía de operadores aritméticos .................................................................................. 73
6.8.4
Literales numéricas ................................................................................................................................................. 74
6.8.5
Operadores de asignación, incremento y decremento .......................................................................................... 74
6.8.6
Conversiones........................................................................................................................................................... 75
6.9
Clase Math .................................................................................................................................................................. 76
6.10
Tipo de dato char ........................................................................................................................................................77
6.11
Tipo de dato boolean ..................................................................................................................................................78
6.12
Clase String .................................................................................................................................................................. 79
6.13
Cajas de diálogo .......................................................................................................................................................... 80
6.14
Ayuda de Java .............................................................................................................................................................. 81
6.15
Ejercicios ..................................................................................................................................................................... 84
Decisiones ............................................................................................................................................................................. 89 7.1
Introducción ................................................................................................................................................................ 89
7.2
Tipo de dato Boolean .................................................................................................................................................. 90
7.3
Sentencia if .................................................................................................................................................................. 91
7.3.1
if .............................................................................................................................................................................. 92
7.3.2
if else ....................................................................................................................................................................... 93
7.3.3
if else if .................................................................................................................................................................... 94
7.3.4
if anidados............................................................................................................................................................... 95
7.4
Comparando caracteres (char) .................................................................................................................................... 96
7.5
Comparando cadenas de caracteres (String) .............................................................................................................. 98
7.6
Operadores lógicos ..................................................................................................................................................... 99
7.7
Sentencia switch ....................................................................................................................................................... 102
7.8
Jerarquía de operadores ...........................................................................................................................................104
7.9
Operador ternario ? .................................................................................................................................................. 105
7.10
Dando formato a la salida: System.out.printf y String.format .................................................................................. 106
7.11
Ejercicios ................................................................................................................................................................... 107
Ciclos ................................................................................................................................................................................... 113 8.1
Ciclo while ................................................................................................................................................................. 114
8.2
Ciclo while utilizando contador.................................................................................................................................115
8.3
Ciclo while utilizando valor centinela ........................................................................................................................ 116
8.4
Ejemplos ciclo while .................................................................................................................................................. 117
8.5
Ciclo do/while ........................................................................................................................................................... 119 4
8.6
Ciclo for ..................................................................................................................................................................... 120
8.7
Que ciclo utilizar ........................................................................................................................................................ 122
8.8
Ciclos anidados .......................................................................................................................................................... 123
8.9
break ......................................................................................................................................................................... 124
8.10
continue .................................................................................................................................................................... 125
8.11
Ejercicios ................................................................................................................................................................... 126
5
1 Raptor Flowchart 1.1 Algoritmo Un algoritmo es un conjunto de pasos, procedimientos o acciones que nos permiten alcanzar un resultado o resolver un problema.
1.1.1
Diagramas de flujo
Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones.
1.1.2
Pseudocódigo
El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de programación, como asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar. Es utilizado para describir algoritmos en libros y publicaciones científicas, y como producto intermedio durante el desarrollo de un algoritmo, como los diagrama s de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocódigo requieren menos espacio para representar instrucciones complejas.
1.1.3
Etapas para resolver un problema
Problema
Análisis profundo del problema
Construcción del algoritmo
Verificación del algoritmo
6
Las características que los algoritmos deben reunir son las siguientes:
Precisión: Los pasos a seguir en el algoritmo deben ser precisados claramente. Determinismo: El algoritmo, dado un conjunto de datos idénticos de entrada, siempre debe arrojar los mismos resultados. Finitud: El algoritmo, independientemente de la complejidad del mismo, siempre debe ser de longitud finita
Por otra parte, un algoritmo consta de tres secciones o módulos principales.
Algoritmo
Datos de entrada
Procesamiento de los datos
Impresión de resultados
El módulo 1 representa la operación o acción que permite el ingreso de los datos del problema. El módulo 2 representa la operación o conjunto de operaciones secuenciales, cuyo objetivo es obtener la solución al problema. El módulo 3 representa una operación o conjunto de operaciones que permiten comunicar al exterior el o los resultados alcanzados.
7
1.2 Raptor Es un ambiente de programación con base en diagramas de flujo, diseñado específicamente para a yudar a los estudiantes a visualizar sus algoritmos y evitar el bagaje sintáctico. El Raptor puede ser descargado de la siguiente dirección de internet: http://raptor.martincarlisle.com
1.2.1
Estructura
Un programa Raptor es un conjunto de símbolos relacionados que representan las acciones a realizar. Las flechas que conectan los símbolos determinan el orden en que se realizan las acciones. Cuando se ejecuta un programa RAPTOR, se empieza en el símbolo de inicio y sigue las flechas para ejecutar el programa. Un programa RAPTOR deja de ejecutar cuando se alcanza el símbolo End. El programa RAPTOR más pequeño (que no hace nada) se representa en la siguiente imagen. Mediante la colocación de las declaraciones RAPTOR adicionales entre los símbolo Start y End se pueden crear programas RAPTOR significativos.
1.2.2
Símbolos
RAPTOR tiene siete (7) símbolos básicos, donde cada símbolo representa un tipo único de instrucción. Los símbolos básicos se muestran en la siguiente imagen.
8
1.2.3
Menús
A continuación se muestran algunas de las operaciones básicas que se utilizan para empezar a trabajar con Raptor
Menu File o
o o o o
New crea un nuevo diagrama de flujo Open abre un diagrama de flujo previamente guardado Save guarda el diagrama de flujo actual Save As guarda el diagrama de flujo actual con otro nombre Print to Clipboard copia una imagen del diagrama de flujo actual al portapales, para que por ejemplo desde Microsoft Word selecciones la opción “Pegar” y se agregue la imagen al do cumenta de Word
o
Menú Scale
o
Exit cierra raptor
Permite cambiar el zoom de nuestro diagrama de flujo
Menú Run
o
Step ejecuta el programa Raptor paso por paso, un símbolo a la vez, de esta forma podemos ver cómo
o
se va ejecutando el programa Reset/Execute F5 detiene la ejecución del programa, borra el valor de todas las variables, y reinicia la ejecución desde el principio
Menú Mode
o
Object-oriented este es el modo que debemos seleccionar al hacer nuestros diagramas de flujo, ya que de no hacerlo, el símbolo “Loop” se comporta de forma diferente al que se utiliza en el lenguaje Java.
Menú Help
o
1.2.4
General Help F1 contiene toda la ayuda necesaria para comprender la forma en que trabaja Raptor
Haciendo un programa Raptor Seleccionamos File\New
9
Clic al símbolo que deseamos agregar y luego clic sobre el diagrama para agregar el símbolo. Al estar haciendo estas operaciones, Raptor nos puede pedir que primero guardemos nuestro programa antes de continuar agregando símbolos a nuestro diagrama. Los archivos de Raptor se guardan con la extensión .rap
Una vez terminado nuestro diagrama de flujo presionamos la tecla F5 o damos clic al símbolo para ejecutar nuestro diagrama. Los resultados de nuestro diagrama se muestran en la ventana Master Console. Además podemos ver el valor de nuestras variables (área y radio) en la ventana Watch Window.
10
11
2 Símbolos Assignment, Input y Output 2.1 Variables Las variables son las localidades de memoria de computadoras que poseen un valor. En un momento dado una variable sólo puede contener un único valor. Sin embargo, el valor de una variable puede variar (modificarse) conforme se ejecuta un programa. Es por eso que se llaman "variables". Descripción
Valor de X
Cuando se inicia el programa, no existen variables. En RAPTOR, las variables se crean automáticamente cuando se utilizan por primera vez en una sentencia.
La primera sentencia de asignación, X←32 asigna el valor de 32 a
X.
La siguiente sentencia de asignación, X←X+1, toma el valor de X
que es 32, y le suma 1, y asigna el resultado de 33 a la variable X.
Programa
Indefinido
32
33
La siguiente sentencia de asignación, X←X*2, toma el valor de X
que es 33, y lo multiplica por 2, y asigna el resultado de 66 a la variable X.
66
Durante la ejecución del programa de ejemplo anterior, la variable X almacena tres valores distintos. Tenga en cuenta que el orden de las declaraciones en un programa es muy importante. Si cambia el orden de estas tres instrucciones de asignación, los valores almacenados en X serían diferentes. Todas las variables deben tener nombres significativos y descriptivos para el programador. Los nombres de variables deben estar relacionados con el propósito para el cual sirve la variable en el programa. Un nombre de variable debe comenzar con una letra y puede contener letras, dígitos y guiones bajos (pero sin espacios u otros caracteres especiales). Si un nombre de variable contiene múltiples "palabras", el nombre es más "legible" si cada palabra está separado por un carácter de subrayado. La siguiente tabla muestra algunos ejemplos de buenas, malas, e ilegales nombres de variables. Bien sueldo_empleado peso_alumno distance_kms iva
Mal a millasporhora my4to
(no es descriptivo) (agregar guión bajo) (no es descriptivo)
Ilegal 4sale (No debe empezar con digito) sales tax (No debe llevar espacios) sales$ (No debe llevar caracteres especiales)
Cuando un programa RAPTOR comienza su ejecución, no existen variables. La primera vez que RAPTOR se encuentra con un nuevo nombre de variable, se crea automáticamente una nueva localidad de memoria y se asocia este nombre de variable con la nueva memoria. La variable existirá desde ese punto de la ejecución del programa hasta que el programa termina. Cuando se crea una nueva variable, su valor inicial determina si la variable almacenará datos numéricos o de texto. Esto se llama tipo de datos de la variable. El tipo de datos de una variable no puede cambiar durante la ejecución de un programa. En resumen, las variables se crean automáticamente por Raptor y pueden contener ya sea: • •
Números como por ejemplo 12, 567, -4, 3.1415, 0.000371, o Cadenas de caracteres (Strings) como, "Hola, ¿cómo estás?", "James Bond", "El valor de x es" 12
2.2 Símbolo Input
El símbolo Input permite al usuario de un programa, introducir un valor cuando el programa se está ejecutando. El símbolo Input lleva 2 valores, un texto entre comillas que contiene una descripción de lo que se le está pidiendo al usuario y el nombre de una variable donde se va a guardar el valor que introduzca el usuario.
Cuando se ejecuta el programa lo que muestra el símbolo es lo siguiente:
13
2.3 Símbolo Assignment
El símbolo de asignación se utiliza para realizar un cálculo y asignar el resultado a una variable. El nombre de la variable se escribe en “Set” y el cálculo a realizar en “to”.
A continuación se muestras los operadores aritméticos y funciones matemáticas básicas que podemos utilizar con el símbolo Assignment. Si desea información más completa, la puede consultar en la ayuda de Raptor presionando la tecla F1.
2.3.1
Operadores aritméticos Operador ^ * /
Nombre Signo de negativo Potencia Multiplicación División
rem
Residuo
+ -
Suma Resta
Ejemplos -5, -10.4 4 ^ 2 es 16 4 * 2 es 8 4 / 2 es 2 4 rem 2 es 0 4 rem 3 es 1 10 rem -3 es 1 -10 rem 3 es -1 4 + 2 es 6 4 – 2 es 2
14
2.3.2
Funciones matemáticas básicas
Función
Descripción
abs
Valor absoluto
ceiling
Redondea al entero mayor.
e
Constante e.
floor
Redondea al entero menor.
log
Logaritmo natural base e.
max min pi
Devuelve el mayor de 2 argumentos Devuelve el menor de 2 argumentos Constante pi
random
Devuelve un número aleatorio en el rango de 0 a 1 sin incluir el 1.
sqrt
Raiz cuadrada
2.3.3
Ejemplos abs(-3.7) es 3.7000 abs(23) es 23 abs(-3) es 3 ceiling(15.9) es 16 ceiling(3.1) es 4 ceiling(-4.1) es -4 ceiling(23) es 23 e es 2.7183 floor(15.9) es 15 floor(3.1) es 3 floor(-4.1) es -5 floor(23) es 23. log(5) es 1.6094 max(5,7) es 7 min(5,7) es 5 pi es 3.1416 random es 0.8965 random es 0.9999 random es 0.1934 random es 0.0 sqrt(5) es 2.2362 sqrt(9) es 3
Jerarquía operadores aritméticos
La jerarquía de los operadores aritméticos se refiere al orden en el cual se evaluará una expresión aritmética. En la siguiente tabla se muestra el orden de mayor a menor prioridad. Cuando varios operadores tienen la misma jerarquía como en el caso de la suma y resta, o multiplicación, división y rem, estos se evalúan de izquierda a derecha. ( ) ^ * / rem + -
Paréntesis Signo negativo Potencia Multiplicación, División y Residuo Suma y Resta
Observe bien las siguientes operaciones y vea el resultado de la expresión aritmética según la jerarquía de los operadores. 4+2*3 (4 + 2) * 3 10 / 2 * 3 10 * 2 / 4 4 + 2 * max(5,3)
10 18 15 5 14
15
2.4 Símbolo Output
El símbolo Output muestra un resultado o resultados en la Master Console. Normalmente primero se escribe un texto encerrado entre comillas con una descripción del resultado que se va a mostrar, seguido del operador “+” y la variable que contiene el resultado.
16
2.5 Comentarios Un comentario es un texto que se utiliza para explicar alguna parte del programa. El comentario se puede agregar a cualquier símbolo. Para agregar un comentario hay que dar clic con el botón derecho del mouse sobre el símbolo y seleccionar la opción “Comment” que aparece en el menú.
17
2.6 Ejemplos 2.6.1
Sumar 2 números
2.6.2
Área de un círculo
18
2.6.3
Calcular cubo y raíz de un número positivo
19
2.7 Ejercicios Ex201 Ex202 Ex203
Dado el costo de un artículo vendido y la cantidad de dinero entregada por el cliente, calcule e imprima el cambio que se debe entregar al mismo. Dadas la base y la altura de un triángulo, calcule e imprima su área. Calcular el área y el volumen de una esfera. En un hospital existen tres áreas: Ginecología, Pediatría, Traumatología. El presupuesto anual del hospital se reparte conforme a la sig. tabla: Area
Ex204
Ginecología Traumatología Pediatría
% del Presupuesto 40% 35% 25%
Obtener la cantidad de dinero que recibirá cada área, para cualquier monto presupuestal.
Ex205
Un alumno desea saber cuál será su calificación final en la materia de Física. Dicha calificación se co mpone de los siguientes porcentajes: 55% del promedio de sus tres calificaciones parciales. 30% de la calificación del examen final. • 15% de la calificación de un trabajo final.
Ex206
Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas invierte una cantidad distinta. Obtener el porcentaje que cada quien invierte con respecto a la cantidad total invertida.
Ex207
El dueño de una tienda compra un artículo a un precio determinado. Obtener el precio en que lo debe vender para obtener una ganancia del 30%.
Ex208
Dado como datos el nombre de un dinosaurio, su peso y su altura, expresados estos dos últimos en libras y pies respectivamente; escriba el nombre del dinosaurio, su peso expresado en kilogramos y su altura expresada en metros. Resuelva el problema que tienen en una gasolinera. Los surtidores de la misma registran lo que “surten” en galones,
Ex209
Ex210 Ex211
pero el precio de la gasolina está fijado en litros. El diagrama de flujo debe calcular e imprimir lo que hay que cobrarle al cliente. Dado como datos el radio y la altura de un cilindro, calcule e imprima el área y su volumen. Construya un diagrama de flujo que calcule e imprima el número de segundos que hay en un determinado número de días. Dados los tres lados de un triángulo, determine su área. Esta la calculamos aplicando la siguiente fórmula:
Ex212
= ( 1)( 2)( 3) 1 2 3 = 2 Calcular la distancia entre dos puntos, dado como datos las coordenadas de los puntos P1 y P2.
Ex213
= (1 2) (1 2) 20
Ex214 Ex215 Ex216
Dados 2 puntos en un plano cartesiano que forman un rectángulo, calcular su área. Convertir un tiempo en segundos a H:M:S. Convertir de grados centígrados a grados Fahrenheit
Evaluar la siguiente expresión Ex217
Ex218
Ex219
Ex220
a7c 2b b 2 a
Un vendedor recibe un sueldo base más un 10% extra por comisión de sus ventas, el vendedor desea saber cuánto dinero obtendrá por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibirá en el mes tomando en cuenta su sueldo base y comisiones. El costo de un automóvil nuevo para el consumidor es la suma total del costo del vehículo, del porcentaje de ganancia del vendedor y de los impuestos locales o estatales aplicables (sobre el precio de venta). Su póngase una ganancia del vendedor del 12% en todas las unidades y un impuesto del 6%. Leer el costo del automóvil e imprimir el costo final para el consumidor. Calcule e imprima el pago mensual para un vendedor de autos, basándose en lo siguiente: El pago base es de $350, más una comisión de $15 por cada auto vendido y un bono de $40 si vendió más de 15 autos. El impuesto a pagar es el 25% del pago total. Los datos de entrada son el nombre del vendedor y el número de autos vendidos en el mes. Se desea imprimir el nombre del vendedor, el sueldo bruto, el impuesto y el sueldo neto.
Ex221
Dada un cantidad en pesos, obtener la equivalencia en dólares, asumiendo que la unidad cambiaría es un dato desconocido.
Ex222
Todos los lunes, miércoles y viernes, una persona corre la misma ruta y cronometra los tiempos obtenidos. Determinar el tiempo promedio que la persona tarda en recorrer la ruta en una semana cualquiera.
Ex223
Ex224
Ex225
Convertir una temperatura en grados Centígrados a grados Fahrenheit. Un vendedor recibe un sueldo base más un 10% extra por comisión de sus ventas, el vendedor desea saber cuánto dinero obtendrá por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibirá en el mes tomando en cuenta su sueldo base y comisiones. Realizar un programa que calcule la edad de una persona.
21
3 Símbolo Selection 3.1 Introducción
Una sentencia de selección permite hacer "decisiones" en el código sobre el estado actual de los datos del programa y luego tomar uno de dos caminos alternativos para la siguiente sentencia a ejecutarse. El código Raptor que se muestra ilustra una sentencia de selección, que siempre se dibuja como un rombo. Todas las decisiones se expresan como preguntas "sí / no". Cuando se ejecuta un programa, si la respuesta a una decisión es "sí" (o verdadero), entonces se ejecutan las sentencias de la izquierda. Si la respuesta es "no" (o falsa), entonces se ejecutan las sentencias de la derecha. En el ejemplo se ejecutarán, bien la sentencia 2a o 2b, pero nunca ambos. Tenga en cuenta que hay dos posibles ejecuciones de este programa de ejemplo:
Possibility 1
Possibility 2
Statement 1
Statement 1
Statement 2a
Statement 2b
Statement 3
Statement 3
Cualquiera de las dos opciones de una selección puede estar vacía o contener varias sentencias. No sería apropiado que ambas opciones estén vacías o que ambas tengan las mismas sentencias exactas, porque entonces su decisión, Sí o No, no tendría ningún efecto durante la ejecución del programa (ya que nada diferente pasaría sobre la base de la decisión). Las decisiones o expresiones lógicas se forman utilizando los operadores relacionales, lógicos y aritméticos.
22
3.2 Formas diferentes de utilizar el símbolo Selection
23
3.3 Operadores relacionales Operador
Nombre
=
Igual
>
Mayor
<
Menor
!=
Diferente
>=
Mayor o igual
<=
Menor o igual
Ejemplos 4 = 5 es False 4 = 4 es True 4 > 5 es False 4 > 2 es True 4 < 5 es True 4 < 2 es False 4 != 5 es True 4 != 4 es False 4 >= 5 es False 4 >= 4 es True 4 >= 3 es True 4 <= 5 es True 4 <= 4 es True 4 <= 3 es False
3.4
24
3.5 Operadores lógicos Operador
Nombre
Ejemplo
Not And Or
No Y O
Not(4>5) es True (4 > 2) And (3*2<20) es True (4>2) Or (5<3) es True
Expresiones A
B
True True False False
True False True False
A And B
A Or B
Not A
True False False False
True True True False
False False True True
25
3.6 Jerarquía operadores
La jerarquía de los operadores se refiere al orden en que se evalúa una expresión cuando están involucrados diferentes tipos de operadores. Cuando varios operadores tienen la misma jerarquía como en el caso de la suma y resta, o multiplicación, división y rem, estos se evalúan de izquierda a derecha.
Funciones ( ) ^ * / rem +> < >= <= != = not and xor or
4+2 > 5 + 1 4 > 2 and 4 > 1 7 rem 2 = 1 and 8 < 10 not(9<2) 2^3 and 6=9
False True True True Expresión incorrecta
26
3.7 Ejemplos 3.7.1
Calificaciones versión 1.0
3.7.2
Calificaciones versión 2.0
27
3.7.3
Calificaciones versión 3.0
28
3.8 Ejercicios Dado como datos la matrícula y 3 calificaciones de un alumno; imprima la matrícula, el promedio y la palabra
Ex301 “Aprobado” si el alumno tiene un promedio mayor o igual que 6, y la palabra “Reprobado” en caso contrario.
Ex302
Ex303
Ex304 Ex305 Ex306
Ex307
Ex308
Ex309 Ex310
Calcular el sueldo semanal de un trabajador en base a las horas trabajadas y el pago por hora trabajada X. Horas ordinarias (40 primeras horas de trabajo). Se paga X pesos por hora. Horas extras 1.5 veces precio hora ordinaria (Después de las 40 horas trabajadas) Imprimir el costo de una llamada telefónica, capturando la duración de la llamada en minutos y conociendo lo siguiente : Toda llamada que dure tres minutos o menos tiene un costo de $5. Cada minuto adicional cuesta $3 Dado como dato un número entero, determine e imprima si el mismo es positivo, negativo o cero. Dado un número entero A, determinar si el mismo es par, impar o nulo. Dado como datos de entrada tres números enteros, determine si los mismos están en orden ascendente. En una tienda efectúan un descuento a los clientes dependiendo del monto de la compra. El descuento se efectúa con base en el siguiente criterio: Si el monto es menor que $500 no hay descuento. Si el monto está comprendido entre $500 y $1 000 inclusive 5% de descuento. Si el monto está comprendido entre $1 000 y $7 000 inclusive 11% de descuento. Si el monto está comprendido entre $7 000 y $15 000 inclusive 18% de descuento. Si el monto es mayor a $15 000 25% de descuento. Dado el monto de la compra de un cliente, determine lo que el mismo debe pagar. En un cierto país el impuesto que se debe pagar por los artículos se calcula mediante la siguiente regla: los primeros $20 no causan impuesto, los siguientes $20 tienen el 30% de impuesto y el resto el 40% de impuesto, pero si el costo del producto es mayor a $500, entonces en lugar del 40% se cobra el 50%. Leer el costo básico de un artículo y calcule su precio total (precio total = precio básico + impuesto). Determinar el mayor de cuatro números diferentes. Dado como datos tres números enteros, identifique cuál es el mayor. Considere que los números pueden ser iguales. El costo de las llamadas telefónicas internacionales depende de la zona geográfica en la que se encuentre el país destino y del número de minutos hablados. En la siguiente tabla se presenta el costo del minuto por zona. A cada zona se le ha asociado una clave.
Ex311
Clave 12 15 17 21
Zona Canadá USA Centroamérica Sudamérica
Precio 2.2 1.8 1.9 2.5
29
Calcular lo que hay que pagarle a un trabajador teniendo en cuenta su sueldo y las horas extras trabajadas. Para el pago de horas extras se toma en cuenta la categoría del trabajador. Categoría
Ex312
Ex313
Precio Hora Extra 1 $30 2 $35 3 $40 4 $47 Cada trabajador puede tener como máximo 30 horas extras, si tienen más sólo se les pagarán 30. A los trabajadores con categoría mayor a 4 no debemos pagarles horas extras. En un hospital se ha hecho un estudio sobre los pacientes registrados durante los últimos 10 años, con el objeto de hacer una aproximación de los costos de internación por paciente. Se obtuvo un costo promedio diario según el tipo de enfermedad que aqueja al paciente. Además se pudo determinar que en promedio todos los pacientes con edad entre 14 y 22 años implican un costo adicional del 10%. La siguiente tabla expresa los costos diarios, según el tipo de enfermedad. Tipo de Enfermedad Costo/Paciente/Día 1 $80 2 $115 3 $145 4 $178 Calcular e imprimir el costo total que representa un paciente.
Ex314 Ex315
Conociendo los lados de un triángulo determinar si el equilátero, isósceles o escaleno. Leer una hora en formato (horas, minutos, segundos) e indicar cuál será el tiempo dentro de un segundo. Leer tres números enteros y, si el primero de ellos es negativo, calcular el producto de los tres, en caso contrario
Ex316 calcular la suma de ellos. Sea un sistema de ecuaciones de la forma:
= =
que puede resolverse usando las siguientes fórmulas: Ex317
=
ce bf af cd y= aebd
Leer los coeficientes (a, b, c, d, e, f) y resuelva el sistema. El programa deberá indicar los casos en los que el sistema de ecuaciones no tenga solución.
Ex318
Ex319
En un supermercado se hace una promoción, mediante la cual el cliente obtiene un descuento dependiendo de un número que se escoge al azar. Si el número escogido es menor que 50 el descuento es del 15% sobre el total de la compra, si es mayor o igual a 50 el descuento es del 20%. Obtener cuánto dinero se le descuenta. Leer tres números diferentes y determine el número medio del conjunto de los tres números (el número medio es aquel número que no es ni mayor, ni menor). Escribir un programa que pida un año y diga si es bisiesto o no.
Ex320 Nota: Un año es bisiesto si es múltiplo de 4 salvo el caso en que sea múltiplo de 100, que no es bisiesto, y no sea múltiplo de 400. Por ejemplo, el año 1900 no fue bisiesto, el 2000 sí y el 2100 no lo es.
Ex321
Leer tres números enteros y, si el primero de ellos es negativo, calcular el producto de los tres, en caso contrario calcular la suma de ellos. 30
Ex322
Ex323
Ex324
Ex325
En un supermercado se hace una promoción, mediante la cual el cliente obtiene un descuento dependiendo de un número que se escoge al azar. Si el número escogido es menor que 50 el descuento es del 15% sobre el total de la compra, si es mayor o igual a 50 el descuento es del 20%. Obtener cuánto dinero se le descuenta. Una empresa de bienes raíces ofrece casas de interés social, bajo la s siguientes condiciones: Si los ingresos del comprador son menores de $800,000 el primer pago será del 15% del costo de la casa y el resto se distribuirá en pagos mensuales, a pagar en diez años. Si los ingresos del comprador son de $800,000 o más la cuota inicial será del 30% del costo de la casa y el resto se distribuirá en pagos mensuales a pagar en 7 años. La empresa quiere obtener cuanto debe pagar un comprador por concepto del primer pago y cuanto por cada pago parcial. En Reindustrias se ha establecido una promoción de las llantas marca “Hancock”, dicha promoción consiste en lo siguiente: Si se compran menos de cinco llantas el precio es de $130 cada una, de $120 si se compran de cinco a 10 y de $115 si se compran más de 10. Obtener la cantidad de dinero que una persona tiene que pagar por cada una de las llantas que compra y la que tiene que pagar por el total de la compra. Que lea tres números diferentes y determine el número medio del conjunto de los tres números (el número medio es aquel número que no es ni mayor, ni menor).
31
4 Símbolo Loop 4.1 Introducción
Una sentencia Loop permite repetir una o más sentencias mientras una condición sea verdadera. Este tipo de sentencia de control es lo que hace que las computadoras sean tan importantes. Una computadora puede ejecutar repetidamente las mismas instrucciones una y otra vez. El símbolo Loop se repite mientras la condición sea verdadera. Cuando la condición se hace falso, se termina.
Para que el símbolo Loop se repita mientras la condición sea verdadera se debe seleccionar la opción Object -oriented del menú Mode, esta es la forma en la que se va a trabajar con este símbolo ya que en el lenguaje de programación Java, así es como trabajan los ciclos. Si no configuramos esta opción, el símbolo Loop se va a repetir mientras la condición sea falsa.
32
4.2 Contador Un contador es una variable que se utiliza para llevar la cuenta de algo en particular (número de estudiantes, número de aprobados, etc). El contador primero se debe inicializar y posteriormente se va incrementado de 1 en 1. En el siguiente diagrama, el símbolo Loop repite 5 veces la palabra Hola, para ello utilizamos la variable contador c, que es la que lleva la cuenta del número de repeticiones. El símbolo Loop se repite mientras c sea menor o igual a 5.
33
4.3 Acumulador Un acumulador es una variable que después de haberse inicializado, se incrementa con el valor de otra variable. A diferencia del contador que se incrementa de 1 en 1, el acumulador o sumador se incrementa de forma variable. En el siguiente diagrama se suma una lista de 5 números aleatorios.
34
4.4 Formas diferentes de utilizar Loop El símbolo Loop lo podemos utilizar de 2 formas diferentes:
Contador. Utilizando una variable contador para que se repita un determinado número de veces. Como es el caso de los ejemplos anteriores. Valor bandera. Utilizando una variable cuya condición mientras sea verdadera se repita.
35
4.5 Ejemplos 4.5.1
Contar número de aprobados y reprobados de 5 calificaciones
36
4.5.2
Sumar una lista de gastos
37
4.5.3
Leer lista de números y mostrar la suma de los positivos y la suma de los negativos
38
4.6 Ejercicios Ex401
Mostrar la serie: 1 2 3 4 5 … 20
Ex402
Mostrar la serie: 50 49 48 47 … 3 2 1 0
Ex403
Mostrar la serie: 0 2 4 6 8 …. 100
Ex404 Ex405 Ex406 Ex407
Mostrar la serie de n1 a n2 con incrementos de n Mostrar una tabla que muestre el cuadrado y el cubo de una lista de números del 1 al 10 Dado como datos 5 números enteros, obtenga la suma de los números impares y el promedio de los números pares. Mostrar la tabla de multiplicar de un número entre 1 y 10.
Ex408
Obtenga la suma e imprima los términos de la siguiente serie: 2 ,5 , 7, 10, 12,15, 17, ... 1 800
Ex409
Generar y mostrar una lista de números aleatorios en el rango de 0 a 10. El diagrama de flujo deberá terminar cuando el número 3 se haya mostrado 3 veces.
Ex410
Ex411
Ex412 Ex413
Ex414
Calcule el aumento de sueldo para un grupo de empleados de una empresa teniendo en cuenta el siguiente criterio: Si el sueldo es inferior a $1 000 : Aumento 15% Si el sueldo es mayor o igual a $1 000 : Aumento 12% Imprima el sueldo nuevo del trabajador y el total de nómina de la empresa, considerando este nuevo aumento. Se termina cuando se introduzca un sueldo negativo. Dado N números enteros como dato hacer lo siguiente: a) Obtenga cuántos números leídos fueron mayores que cero. b) Calcule el promedio de los números positivos. c) Obtenga el promedio de todos los números. Dado N números enteros como dato, calcule el mayor y el menor de estos números. Un vendedor ha hecho N ventas y desea conocer aquellas de $200 o menos, las mayores a $200 pero inferiores a $400, y el número de ventas de $400 o superiores a tal cantidad. Haga un diagrama de flujo que le proporcione al vendedor esta información después de haber leído los datos de entrada. La siguiente se llama la conjetura de ULAM en honor del matemático S. Ulam: • Comience con cualquier entero positivo • Si es par, divídalo entre 2; si es impar, multiplíquelo por 3 y agréguele 1. • Obtenga enteros sucesivamente repitiendo el proceso. Al final, obtendrá el número 1, independientemente del entero inicial. Por ejemplo, cuando el entero inicial es 26, la secuencia será: 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1. Lea un entero positivo y obtenga e imprima la sucesión de ULAM.
39
Ex415
Supóngase que en una reciente elección hubo cuatro candidatos (con identificadores 1, 2, 3, 4). Usted habrá de encontrar, mediante un programa, el número de votos correspondiente a cada candidato y el porcentaje que obtuvo respecto al total de los votantes. El usuario tecleará los votos de manera desorganizada, tal y como se obtuvieron en la elección, el final de datos está representado por un cero. Observe, como ejemplo, la siguiente lista: 13142214111213140 Donde 1 representa un voto para el candidato 1; 3 un voto para el candidato 3; y así sucesivamente.
Ex416
Ex417
Ex418
Ex419
Leer una lista de calificaciones y mostrar: Número de aprobados Número de reprobados Cuantas calificaciones fueron 10 Promedio general El diagrama de flujo deberá terminar cuando se introduzca una calificación negativa Generar y mostrar una lista de números aleatorios en el rango de 0 a 5. El diagrama de flujo terminará cuando salgan 2 números consecutivos iguales. Calcular lo que hay que pagar por un conjunto de llamadas telefónicas. Por cada llamada se ingresa el tipo (Internacional, Nacional, Local) y la duración en minutos. El criterio que se sigue para calcular el costo de cada llamada es el siguiente: • Internacional: 3 primeros minutos $7.59 Cada minuto adicional $3.03 • Nacional: 3 primeros minutos $1.20 Cada minuto adicional $0.48 • Local: Las primeras 3 llamadas no se cobran. Luego, cada llamada cuesta $0.60 Se termina cuando se introduce en el tipo de llamada una X. Calcular el promedio de edades de hombres, mujeres y de todo un grupo de alumnos.
Ex420
Diseñe un diagrama que lea los 100 votos otorgados a los 3 candidatos a gobernador e imprima el número del candidato ganador y su cantidad de votos. Utilice números aleatorios.
Ex421
Al cerrar un expendio de naranjas, 15 clientes que aún no han pagado recibirán un 15% de descuento si compran más de 10 kilos. Determinar cuánto pagara cada cliente y cuanto percibirá la tienda por esas compras.
Ex422
Ex423 Ex424 Ex425
Realiza un diagrama que pinte la letra L por pantalla hecha con asteriscos. El programa pedirá la altura. El palo horizontal de la L tendrá una longitud de la mitad (división entera entre 2) de la altura más uno. * * * *** Hacer un diagrama que muestre por pantalla todos los números enteros positivos menores a uno leído por teclado que no sean divisibles entre otro también leído de igual forma. Escribe un diagrama que muestre, cuente y sume los múltiplos de 3 que hay entre 1 y un número leído por teclado. Realiza un programa que pida primero un número y a continuación un dígito. El programa nos debe dar la posición (o posiciones) contando de izquierda a derecha que o cupa ese dígito en el número introducido.
40
5 Introducción a las computadoras y Java 5.1 Teoría Entregar escrito a mano para el final del parcial.
5.1.1
Que es una computadora?
1.1 What are hardware and software? 1.2 List five major hardware components of a computer. 1.3 What does the acronym “CPU” stand for?
1.4 What unit is used to measure CPU speed? 1.5 What is a bit? What is a byte? 1.6 What is memory for? What does RAM stand for? Why is memory called RAM? 1.7 What unit is used to measure memory size? 1.8 What unit is used to measure disk size? 1.9 What is the primary difference between memory and a storage device?
5.1.2
Lenguajes de programación
1.10 What language does the CPU understand? 1.11 What is an assembly language? 1.12 What is an assembler? 1.13 What is a high-level programming language? 1.14 What is a source program? 1.15 What is an interpreter? 1.16 What is a compiler? 1.17 What is the difference between an interpreted language and a compiled language?
5.1.3
Sistemas operativos
1.18 What is an operating system? List some popular operating systems. 1.19 What are the major responsibilities of an operating system? 1.20 What are multiprogramming, multithreading, and multiprocessing?
5.1.4
Java
1.21 Who invented Java? Which company owns Java now? 1.22 What is a Java applet? 1.23 What programming language does Android use?
5.1.5
Especificación del lenguaje Java, API, JDK e IDE
1.24 What is the Java language specification? 1.25 What does JDK stand for? 1.26 What does IDE stand for? 1.27 Are tools like NetBeans and Eclipse different languages from Java, or are they dialects or extensions of Java?
41
42
5.2 Lenguaje Java Java es un lenguaje de programación de propósito general, concurrente, orientado a objetos que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido en inglés como WORA, o "write once, run anywhere"), lo que quiere decir que el código que es ejecutado en una plataforma no tiene que ser recompilado para correr en otra. Java es, a partir de 2012, uno de los lenguajes de programación más populares en uso, particularmente para aplicaciones de cliente-servidor de web, con unos 10 millones de usuarios reportados. El lenguaje de programación Java fue originalmente desarrollado por James Gosling de Sun Microsystems (la cual fue adquirida por la compañía Oracle) y publicado en 1995 como un componente fundamental de la plataforma Java de Sun Microsystems. Su sintaxis deriva en gran medida de C y C++, pero tiene menos utilidades de bajo nivel que cualquiera de ellos. Las aplicaciones de Java son generalmente compiladas a bytecode (clase Java ) que puede ejecutarse en cualquier máquina virtual Java (JVM) sin importar la arquitectura de la computadora subyacente
43
5.3 Un programa simple en Java
Un programa en Java se ejecuta desde el método main en la clase. El ejemplo muestra el mensaje “Hola Mundo. Bienvenidos a la programación en Java.” en la consola. El término consola está asociado con el teclado y la pantalla de la computadora. 1 2 3 4 5 6 7 8 9
package fundamentos; // Este es un programa simple en Java public class Simple { public static void main(String[] args) { System.out.println("Hola Mundo. Bienvenidos a la programación en Java."); } } Hola Mundo. Bienvenidos a la programación en Java. _
Un paquete es una forma de organizar grupos de clases
En el ejemplo la clase Simple se guarda en el paquete “fundamentos”. El paquete “fundamentos” está asociado a una ca rpeta y dentro de ella
package
Un comentario es un texto escrito por el usuario para describir una parte del programa // es para indicar un comentario de una sola línea /* y */ es para escribir comentarios de varias líneas
class define una clase en Java
Cada programa de Java debe tener al menos una clase Una clase en Java por convención deberá de iniciar con una letra mayúscula El nombre de la clase de Java, en este caso Simple, es el mismo nombre con el que se debe guardar el archivo Simple.java
comentarios
class
estará el archivo de la clase Simple.java Cuando no se indica el nombre de un paquete se dice que se guarda en el paquete por default
44
main
Palabras reservadas
Las llaves en Java forman un bloque de código. En este ejemplo, hay dos pares de llaves, el primer par delimita el bloque de código que contiene la clase Simple. El segundo par delimita el bloque de código del método main. El método main pertenece a la clase Simple porque está dentro de las llaves de la clase Simple.
}
println es un método que nos permite mostrar un mensaje en pantalla Los mensajes que mostramos con el método println, deben estar encerrados entre comillas
El punto y coma marca el final de una sentencia.
;
1 2 3 4 5 6 7 8 9 10 11 12
class, static, void, package, public son palabras reservadas Las palabras reservadas tienen un significado y función específica dentro de Java que no pueden ser utilizadas para otros propósitos diferentes Hay que tener cuidado con las mayúsculas y minúsculas cuando escribimos un programa. Por ejemplo el método principal se debe escribir como main, cualquier otra forma de escribirlo Main, MAIN, etc será incorrecto. Lo mismo para con las palabras reservadas, estas siempre van escritas en minúsculas.
println
empieza a ejecutar el programa. Una clase de Java puede tener varios métodos, pero main, es el método principal. Un método en Java es un conjunto de instrucciones definidas dentro de una clase, que realizan una determinada tarea y a las que podemos invocar mediante un nombre.
Letras mayúsculas y minúsculas
{
main es el método principal de una clase en Java, a partir del cual se
package fundamentos; /* Otro programa simple en Java */ public class SimplePrintln { public static void main(String[] args) { System.out.println("Hola Mundo."); System.out.println("Bienvenidos a la programación en Java."); } } Hola Mundo. Bienvenidos a la programación en Java. _
45
46
5.4 Palabras reservadas de Java
47
5.5 Creando, compilando y ejecutando un programa en Java A continuación se muestran los pasos que se deben seguir para escribir y ejecutar un programa en Java desde la consola de comandos de Windows. 1
Escribir el programa en Java (código fuente). Podemos escribir nuestro programa utilizando el bloc de notas. En este caso nuestra clase se lla ma “Welcome”, por lo que debemos guardar el programa con el nombre de “Welcome.java”. Los archivos de Java (código fuente) deben de tener la extensión .java
2
Compilar. En el siguiente paso compilamos nuestro programa. La compilación genera a partir del código fuente “Welcome.java” un archivo Bytecode con el no mbre de “Welcome.class”. Este archivo es el que
contiene las instrucciones que entiende y puede ejecutar la JVM (Java Virtual Machine). Si al momento de compilar se genera un error, hay que editar nuestro programa fuente Welcome.java, corregir los errores y volver a compilar. Para compilar un programa en java escribimos: javac Welcome.java 3
Ejecutar. En el último paso ejecutamos nuestro archivo en Bytecode “Welcome.class” para que nos muestre
el resultado de nuestro programa. Java Welcome
En las siguientes dos figuras se resume todo el proceso para crear un programa en java, compilar y ejecturar.
48
49
5.6 Descargar e instalar Java y NetBeans Para poder trabajar con Java en nuestra computadora personal, primero lo tenemos que instalar. Java es gratuito. Para descargarlo hay que e scribir en el buscador Google, “download java se” y dar clic al primer resultado que nos muestra.
Una vez que estamos en la página de Oracle, dar clic a la imagen “NeatBeans”. Esta opción nos permite instalar el Java y al
mismo tiempo instalar el editor NetBeans.
NetBeans es un editor que nos permite de una manera rápida y sencilla escribir programas en Java, compilarlos y ejecutarlos.
50
51
5.7 Utilizando NetBeans
Para empezar a trabajar con NetBeans primero creamos un Proyecto: File\New Project. Seleccionamos de “Categories” la opción “Java” y de “Projects” la opción “Java Application”. Clic al botón “Next”
Enseguida en la opción “Project Name” escribimos el nombre de nuestro proyecto y desmarcamos la opción “Create Main Class”. Clic al botón de “Finish”. El botón “Browse…” nos permite seleccionar una carpeta diferente donde
queremos que se guarde nuestro proyecto.
52
Para organizar de una mejor forma todas nuestras clases en Java, podemos crear paquetes. Por ejemplo podemos crear un paquete llamado “parcial1” d onde se guarden todas las clases que se vayan a ver en ese periodo de evaluación durante el curso. Para hacerlo, clic con el botón derecho del mouse sobre el proyecto, seleccionamos “New” y “Java Package…”. D espués escribimos el nombre de nuestro paquete “parcial1” (Por reglas de convención los nombres de los paquetes siempre van escritos en minúsculas).
53
Ahora p ara crear un programa, clic con el botón derecho del mouse sobre el nombre del paquete “parcial1” y seleccionamos la opción New\ Java Class…, enseguida escribimos el nombre de nuestra clase “Ejemplo” y clic al botón “Finish” (Recuerde que por reglas de convención la primera letra del nombre de clase va en mayúscula).
54
55
Una vez escrito nuestro programa, para ejecutarlo, clic con el botón derecho del mouse sobre el nombre de la clase y seleccionamos la opción “Run File”.
56
5.8 Convenciones de código Java Las convenciones de código Java se refiere a la forma en que escribimos nuestros programas. Algunos aspectos que cubre son:
El uso de comentarios La sangría y espacio entre las variables y operadores Los bloques de código Nombres de variables Uso de mayúsculas y minúsculas Etc.
Es importante que se fije en la forma que están escritos los programas de ejemplo y copie el estilo de los mismos en sus programas. Las convenciones de código son importantes para los programadores por un gran número de razones:
El 80% del coste del código de un programa va a su mantenimiento. Casi ningún software lo mantiene toda su vida el auto original. Las convenciones de código mejoran la lectura del software, permitiendo entender código nuevo mucho más rapidamente y más a fondo. Si distribuyes tu código fuente como un producto, necesitas asegurarte de que e sta bien hecho y presentado como cualquier otro producto. Para que funcionen las convenciones, cada persona que escribe software debe seguir la convención.
En la siguiente dirección de internet puede descarga el documento completo de las convenciones o puede buscar en Google escribiendo “Convenciones de código java”:
http://blog.codexion.com/wp-content/uploads/2010/02/Convenciones_Codigo_Java.pdf
57
5.9 Errores de programación Los errores de programación se pueden clasificar en 3 tipos: errores de compilación, ejecución y lógica.
5.9.1
Errores de compilación
Los errores de compilación, también conocidos como errores del compilador, son errores que impiden que el programa se ejecute. La mayoría de los errores del compilador se deben a errores cometidos al escribir el código. Por ejemplo en el siguiente programa se omitió escribir “void” en la línea 5 y cerrar comillas en la línea 6.
5.9.2
Errores de ejecución
Los errores en tiempo de ejecución son errores que aparecen mientras se ejecuta su programa. Estos errores aparecen normalmente cuando su programa intenta una operación que es i mposible que se lleve a cabo. Un ejemplo de esto es la división por cero.
58
5.9.3
Errores de lógica
Los errores lógicos son errores que impiden que el programa haga lo que estaba previsto. Su código puede compilarse y ejecutarse sin errores, pero el resultado de una operación puede generar un resultado no esperado. En el ejemplo siguiente el cálculo del promedio muestra un resultado incorrecto porque la suma de las variables num1, num2 y num3 debe ir encerrado entre paréntesis.
59
5.10 Ejercicios Ex501 Ex502
(Display three messages) Write a program that displays Welcome to Java, Welcome to Computer Science, and Programming is fun. (Display five messages) Write a program that displays Welcome to Java five time (Display a pattern) Write a program that displays the following pattern:
Ex503
60
6 Programación Elemental 6.1 Ejemplo simple 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
package entradasalida; public class CirculoArea { public static void main(String[] args) { double radio; double area; radio = 20; area = radio * radio * 3.14159; System.out.println("El área para el círculo de radio " + radio + " es de " + area); } } El área para el círculo de radio 20.0 es de 1256.636 _
Programas
Escribir un programa requiere de diseñar una estrategia para resolver un programa y entonces utilizar un lenguaje de programación para implementar esa estrategia.
Algoritmos
El algoritmo en general para resolver los diferentes problemas básicos de esta parte del curso consta de 3 pasos: Leer datos Hacer operaciones Mostrar resultados Escribir un programa involucra diseñar un algoritmo y traducir este algoritmo en instrucciones de programación o código.
class y main
double radio; double area;
Operador =
println y print
Cada programa inicia con la definición de una clase en el cual se escribe la palabra reservada class seguida del nombre de la clase Cada programa debe tener un método main a partir del cual se empieza a ejecutar nuestro programa En esta parte del programa se declaran 2 variables de tipo double Una variable de tipo double nos permite guardar números con fracción decimal Las variables siempre se deben declarar antes de utilizarse La línea radio = 20 permite asignar el valor de 20 a la variable radio La línea area = radio * radio * 3.14159 permite hacer una operación aritmética utilizando el valor de la variable radio y asignar el resultado a la variable area El método println permite mostrar un mensaje, el cual va encerrado entre comillas y a su vez concatenarlo o unirlo con el valor de la variable área El método println muestra un mensaje y el cursor se muestra en el siguiente renglón El método print muestra un mensaje y el cursor se muestra al final del mensaje
61
6.1.1
Caracteres especiales
62
6.2 Secuencias de escape Un caracter precedido por un backslash (\) es una secuencia de escape que tiene un significado especial para el compilador.
1 2 3 4 5 6 7 8 9 10 11 12 13
package entradasalida; public class SecuenciasEscape { public static void main(String[] args) { System.out.println("Hola\nComo\nEstas\n\tFin del texto"); System.out.println("\"Java\""); System.out.print("Programación "); System.out.print("en "); System.out.print("Java"); } } Hola Como Estas Fin del texto "Java" Programación en Java_
63
6.3 Leyendo datos del teclado Este programa permite calcular el área de un círculo, el valor del radio es introducido por el usuario desde el teclado. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
package entradasalida; import java.util.Scanner; public class CirculoArea2 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Escribir el valor del radio: "); double radio = input.nextDouble(); double area = radio * radio * 3.14159; System.out.println("El área para el cículo de radio " + radio + " es de " + area); } } Escribir el valor del radio: 20 El área para el cículo de radio 20.0 es de 1256.636 _
import
import es una palabra reservada de Java para indicar dentro de un programa que se va a utilizar otra clase de Java que se encuentra en un paquete diferente. En este caso s e va a utilizar la clase Scanner que pertenece al paquete java.util Si escribimos java.util.* indicamos que vamos a utilizar cualquier clase de Java que pertenezca a ese paquete. Cuando utilizamos una clase de java debemos agregar el paquete al cual pertenece No es necesario agregar el paquete java.lang, este lo agrega Java por default. System es una clase que pertenece al paquete java.lang.
System.in, System.out
Java utiliza System.in para referirse a la entrada estándar que es el teclado y System.out para referirse a la salida estándar que es la pantalla
Scanner
Scanner es la clase de Java que utilizamos para pedir datos desde la consola utilizando el teclado Para utilizar la clase Scanner debemos primero crear un objeto Scanner input = new Scanner(System.in) Una vez creado el objeto podemos utilizar la referencia input para pedir los datos double radio = input.nextDouble() El nombre de la referencia puede ser cualquier identificador válido (entrada, leer,..) no necesariamente se tiene que llamar input El método nextDouble() indica que vamos a leer un dato de tipo double (Un número que puede contener fracción decimal)
64
Ejemplo de cómo leer 3 números introducidos desde el tecl ado y mostrar el promedio. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
package entradasalida; import java.util.Scanner; public class Promedio3 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Escribir 3 números: "); double numero1 = input.nextDouble(); double numero2 = input.nextDouble(); double numero3 = input.nextDouble(); double promedio = (numero1 + numero2 + numero3) / 3; System.out.println("El promedio de " + numero1 + " " + numero2 + " " + numero3 + " es " + promedio); } Escribir 3 números: 30 15 12 El promedio de 30.0 15.0 12.0 es 19.0 _
65
6.4 Identificadores Los identificadores son los nombres que identifican los elementos de un programa como son las clases, métodos y variables en un programa. Reglas:
Un identificador es una secuencia de caracteres que consiste de letras, dígitos, guion bajo ( _ ) y signo de peso ( $ ). Un identificador debe comenzar con una letra, guión bajo ( _ ) o signo de peso ( $ ). NO puede comenzar con un dígito. Un identificador no puede ser una palabra reservada. Un identificador no puede ser true, false o null. Un identificador puede ser de cualquier longitud.
Como Java hace diferencia entre mayúsculas y minúsculas, area, Area y AREA, se consideran identificadores diferentes.
66
6.5 Variables Las variables se utilizan para guardar valores que pueden cambiar en un programa. En el siguiente ejemplo se puede ver como las variables radius y area toman diferentes valores durante la ejecución del programa.
Antes de utilizar una variable en un programa Java, hay que declararlas. Las variables se pueden declarar de la siguiente manera: Declarar una variable a la vez double sueldo; double altura; int edad;
Declarar varias variables al mismo tiempo double sueldo, altura; Int edad, días, alumnos;
Declarar e inicializar una variable double sueldo = 5000; double altura = 1.80; int edad = 25;
67
6.6 Constantes
Una constante es un identificador que representa un valor que no cambia durante la ejecución de un programa. Las constantes se declaran como final tipo_dato NOMBRECONSTANTE = value; Los nombres de las constantes por convención se escriben en MAYUSCULAS
1 2 3
double precio = 100; final double IVA = 0.16; double pagar = precio + (precio * IVA);
68
6.7 Convenciones para nombres de identificadores Siguiendo las convenciones para nombre de identificadores en Java, hace que los programas sean más fáciles de leer y evita cometer errores. Los nombres que se elijan para las variables, clases, constantes y métodos deben ser descriptivos, sencillos y con significado. Como se mencionó anteriormente se debe tener cuidado con las minúsculas y mayúsculas, ya que Java las trata de forma diferente.
Utilice minúsculas para los nombre de variables y métodos. Si un nombre tiene varias palabras, la primera palabra se escribe con minúsculas y la primera letra de la segunda parabra con mayúscula. Ejemplos: area, peso, alturaAlumno, sueldoTrabajador. En el nombre de las clases la primera letra se debe escribir en mayúscula. Ejemplo: Escuela, AreaCirculo, EjemploOperaciones. Los nombre de las constantes van en mayúsculas. Ejemplo: IVA, IMPUESTO, AUMENTO.
69
6.8 Tipos de datos numéricos Tipo de Dato byte short int
Bytes 1 2 4
long
8
float double
4 8
6.8.1
Rango −128 a +127 −32,768 a +32,767 −2,147,483,648 a +2,147,483,647 −9,223,372,036,854,775,808 a +9,223,372,036,854,775,807 −38 38 ±3.4 × 10 a ±3.4 × 10 con 7 dígitos de precisión −308 308 ±1.7 × 10 a ±1.7 × 10 con 15 dígitos de precisión
Ejemplos -90, 80, 0, 75, -120 0, -3, -30000,25908,45 26453, 9,-834223 8374482233742,-2,99883 2.5, -0.00001, 9, 8929934.9087 343434354.0994, -2, 90.89
Como leer números del teclado
Para leer datos con el teclado utilizamos la clase Scanner. El método utilizado para leer estos datos depende del tipo d e dato de la variable. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Scanner input = new Scanner(System.in); System.out.print("Enter a byte value: "); byte byteValue = input.nextByte(); System.out.print("Enter a short value: "); short shortValue = input.nextShort(); System.out.print("Enter an int value: "); int intValue = input.nextInt(); System.out.print("Enter a long value: "); long longValue = input.nextLong(); System.out.print("Enter a float value: "); float floatValue = input.nextFloat();
70
6.8.2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Operadores aritméticos
package entradasalida; import java.util.Scanner; public class DisplayTime { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Enter an integer for seconds: "); int seconds = input.nextInt(); int minutes = seconds / 60; // Find minutes in seconds int remainingSeconds = seconds % 60; // Seconds remaining System.out.println(seconds + " seconds is " + minutes + " minutes and " + remainingSeconds + " seconds"); } } Enter an integer for seconds: 500 500 seconds is 8 minutes and 20 seconds
Ejemplos de cómo trabaja el operador %. Por ejemplo 7 % 3 da como resultado 1.
71
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
package entradasalida; public class ShowCurrentTime { public static void main(String[] args) { // Obtain the total milliseconds since midnight, Jan 1, 1970 long totalMilliseconds = System.currentTimeMillis(); // Obtain the total seconds since midnight, Jan 1, 1970 long totalSeconds = totalMilliseconds / 1000; // Compute the current second in the minute in the hour long currentSecond = totalSeconds % 60; // Obtain the total minutes long totalMinutes = totalSeconds / 60; // Compute the current minute in the hour long currentMinute = totalMinutes % 60; // Obtain the total hours long totalHours = totalMinutes / 60; // Compute the current hour long currentHour = totalHours % 24; // Display results System.out.println("Current time is " + currentHour + ":" + currentMinute + ":" + currentSecond + " GMT"); } } Current time is 23:17:29 GMT
72
6.8.3
Evaluar expresiones y jerarquía de operadores aritméticos
Cuando Java evalúa una expresión aritmética aplica las siguientes reglas, según este orden: 1) Primero se evalúa lo que está entre paréntesis 2) Después se evalúa la multiplicación (*), división (/) y residuo (%). Cuando hay varios de estos operadores aritméticos en la misma expresión, se evalúan de izquierda a derecha. 3) Por último la suma (+) y la resta(-).Cuando hay varios de estos operadores aritméticos en la misma expresión, se evalúan de izquierda a derecha.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
package entradasalida; import java.util.Scanner; public class FahrenheitToCelsius { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Enter a degree in Fahrenheit: "); double fahrenheit = input.nextDouble(); double celsius = (5.0 / 9) * (fahrenheit - 32); System.out.println("Fahrenheit " + fahrenheit + " is " + celsius + " in Celsius"); } } Enter a degree in Fahrenheit: 100 Fahrenheit 100.0 is 37.77777777777778 in Celsius
73
6.8.4
Literales numéricas
Una literal es un valor constante que aparece directamente en el programa. 10, 98, -1000,80 -9.2, 80.456, 8.0 0B11001 07612 0XAB1, 0xFF 100.79F 9000000L 1.2E3 1.2E-3
6.8.5
Cualquier valor entero se considera por default de tipo int Cualquier valor con decimal se considera por default de tipo double Cualquier valor que empiece con 0B o 0b se considera un número binario Cualquier valor que empiece con 0 se considera un número octal Cualquier valor que empiece con 0X o 0x se considera un número hexadecimal Cualquier valor que termine con F o f se considera un número float Cualquier valor que termine con L o l, se considera un numero long Equivale al número 1200 Equivale al número 0.0012
Operadores de asignación, incremento y decremento
Los operadores +, -, *, / y % se pueden combinar con el operador de asignación para crear un nuevo tipos de operador de asignación aumentado.
El operador de incremento (++) y el operador de decremento (--), incrementan y decrementan una variable en 1.
74
6.8.6
Conversiones
Java emplea siempre que puede la representación en forma int de 32 bits, por razones de eficacia, por lo tanto permite la conversión automática o promoción donde el tipo más pequeño puede ser colocado en el espacio compatible más grande, así un tipo byte, puede ser colocado perfectamente en una variable int, la cual tiene espacio para contener el valor. Lo contrario no siempre es cierto y se hace necesaria una conversión explícita, estrechamiento o casting: 1 2
int a=100; byte b= (byte) a;
El casting se utiliza cuando Java no puede realizar automáticamente la conver sión de tipo, generalmente dado que el receptor tiene menos espacio que el tipo de origen, por lo que se hace necesario un casting. El casting, pues, es la conversión explícita y se realiza anteponiendo al tipo origen el nombre del tipo al que se desea realizar la conversión entre paréntesis: int intValue= (int) floatValue; El casting es automático desde los tipos de pequeña ocupación a los de gran ocupación:
longValue=intValue; // Permitido. El tipo convertido es menor que el tipo hacia el que se convierte longValue= (int) intValue; // Escrito de forma explícita, no necesario para este caso, pero correcto
Sin embargo si se quiere hacer la conversión a un tipo más pequeño:
intValue=longValue; // El compilador nos lanzaría un error intValue=(int) longValue; // Esta permitido, sin embargo corremos el riesgo de pérdida de datos
En las operaciones pueden entremezclarse cualesquiera tipos decimales, pero el resultado se promociona a un tipo que no dé problemas de desbordamiento: Si solo intervienen tipos byte, short, int el resultado es int. Si interviene un tipo long el resultado es long. Si interviene un tipo float el resultado es float. Si interviene un tipo double el resultado es double.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
package entradasalida; public class Casting { public static void main(String[] args) { byte valorByte = 20; int valorInt = valorByte; // Casting en automático int valorInt2 = 20; //byte valorByte2 = valorInt2; // ERROR byte valorByte2 = (byte) valorInt2; // Hay que hacer casting System.out.println(5/2); // El resultado es 2 System.out.println(5.0/2); // El resultado es 2.5 } }
75
6.9 Clase Math Java tiene la clase Math que pertenece al paquete java.lang, que contiene diferentes métodos para realizar cálculos matemáticos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
package entradasalida; public class ClaseMath { public static void main(String[] args) { double num = 3; System.out.println("Raiz cuadrada: " + Math.sqrt(num)); System.out.println("Potencia de 2: " + Math.pow(num,2)); System.out.println("Potencia de 5: " + Math.pow(num,5)); System.out.println("Raiz de 5: " + Math.pow(num,1.0/5)); System.out.println("Numero aleatorio: " + Math.random()); System.out.println("Numero aleatorio: " + Math.random()); System.out.println("Numero aleatorio: " + Math.random()); System.out.println("Número aleatorio entre 0 y 10: " + (int) (Math.random()*11)); System.out.println("Método ceil: " + Math.ceil(5.6)); System.out.println("Método ceil: " + Math.ceil(5.3)); System.out.println("Método floor: " + Math.floor(5.6)); System.out.println("Método floor: " + Math.floor(5.3)); System.out.println("Constante PI: " + Math.PI); System.out.println("Mayor de 2 números: " + Math.max(5,4)); System.out.println("Menor de 2 números: " + Math.min(5,4)); } } Raiz cuadrada: 1.7320508075688772 Potencia de 2: 9.0 Potencia de 5: 243.0 Raiz de 5: 1.2457309396155174 Numero aleatorio: 0.09926439967151035 Numero aleatorio: 0.8086403390666566 Numero aleatorio: 0.2436520656732687 Número aleatorio entre 0 y 10: 8 Método ceil: 6.0 Método ceil: 6.0 Método floor: 5.0 Método floor: 5.0 Constante PI: 3.141592653589793 Mayor de 2 números: 5 Menor de 2 números: 4
76
6.10 Tipo de dato char El tipo de dato char se utiliza para guardar caracteres. Una variable de tipo char solo puede guardar un caracter a la vez. Las literales de caracter van encerradas entre apóstrofes (comillas simples). 1 2 3 4 5 6 7 8 9 10 11 12 13
package entradasalida; public class TipoChar { public static void main(String[] args) { char letter; letter = 'A'; System.out.println(letter); letter = 'B'; System.out.println(letter); } } A B
Cuando queremos leer un carácter del teclado, lo que hacemos es leer una cadena de caracteres utilizando nextLine( ) y llamamos al método chartAt() que nos toma el primer carácter de la cadena que acabamos de escribir. 1 2 3 4 5 6
String input; char answer; Scanner keyboard = new Scanner(System.in); System.out.print("Are you having fun? (Y=yes, N=no) "); answer = keyboard.nextLine().chartAt(0)
77
6.11 Tipo de dato boolean El tipo de dato boolean permite crear variables que pueden contener solo 2 posibles valores: true o false. Las variables de tipos booleano se utilizan para evaluar condiciones (expresiones lógicas).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
package entradasalida; public class TipoBoolean { public static void main(String[] args) { boolean bool; bool = true; System.out.println(bool); bool = false; System.out.println(bool); System.out.println("5 > 2 : " + (5>2)); System.out.println("5 < 2 : " + (5<2)); } } true false 5 > 2 : true 5 < 2 : false
78
6.12 Clase String La clase String permite crear objetos que contienen cadenas de caracteres. Las cadenas de caracteres van encerradas entre comillas (“Soy una cadena de caracteres“). La clase String contiene diferentes métodos que permiten manipular las cadena s de caracteres. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
package entradasalida; public class ClaseString { public static void main(String[] args) { String nombre = "Jose Francisco"; System.out.println("Mayúsculas: " + nombre.toUpperCase()); System.out.println("Minúsculas: " + nombre.toLowerCase()); System.out.println("# de caracteres: " + nombre.length()); System.out.println("Posición 0: " + nombre.charAt(0)); System.out.println("Posición 5: " + nombre.charAt(5)); System.out.println("Comparar por igualdad: " + nombre.equals("Jose")); System.out.println("Comparar por igualdad: " + nombre.equals("Jose Francisco")); System.out.println("Extraer subcadena: " + nombre.substring(2,4)); System.out.println("Extraer subcadena: " + nombre.substring(5,8)); System.out.println("Concatenar: " + nombre.concat(" Rojero")); } } Mayúsculas: JOSE FRANCISCO Minúsculas: jose francisco # de caracteres: 14 Posición 0: J Posición 5: F Comparar por igualdad: false Comparar por igualdad: true Extraer subcadena: se Extraer subcadena: Fra Concatenar: Jose Francisco Rojero
Para leer una cadena de caracteres escribimos: 1 2 3 4
String name; Scanner keyboard = new Scanner(System.in); System.out.print("Enter your name: "); name = keyboard.nextLine();
79
6.13 Cajas de diálogo La clase JOptionPane visualiza una caja de diálogo para mostrar o solicitar datos al usuario. La clase JOptionPane pertenece al paquete javax.swing. A partir de la versión 8 se recomienda utilizar las clases Alert o TextInputDialog para mostrar cajas de diálogo. Estas clases pertenecen a JavaFX. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
package entradasalida; import javax.swing.JOptionPane; public class CajasDialogo { public static void main(String[] args) { String nombre; int horasTrabajadas; double sueldoHora; double sueldo; nombre = JOptionPane.showInputDialog("Como te llamas"); horasTrabajadas = Integer.parseInt(JOptionPane.showInputDialog("Cuantas horas trabajaste")); sueldoHora = Double.parseDouble(JOptionPane.showInputDialog("Cuanto ganas por hora")); sueldo = horasTrabajadas * sueldoHora; JOptionPane.showMessageDialog(null, "Hola " + nombre + "\nTu sueldo es de " + sueldo); } }
80
6.14 Ayuda 6.14 Ayuda de Java Java ofrece una muy completa documentación donde podemos consultar información acerca de alguna clase o método que nos interese conocer. Para consultar esta ayuda en internet hacemos lo que se muestra en las siguientes imágenes.
81
Otra forma de consultar la documentación de java y en la cual no es necesario estar conectado a internet, es descargando un archivo en formato .chm que contiene toda la documentación de Java de la dirección http://www.allimant.org/javadoc/
Esta forma de consultar la ayuda de Java, nos permite realizar la búsqueda de una clase o método de una manera más sencilla. Es altamente recomendable que se descargue este archivo.
82
83
6.15 Ejercicios
Ex601
Name, Age, and Annual Income
Write a program that declares the following:
Ex602
• • •
a String variable named name an int variable named age a double variable named annualPay
Store your age, name, and desired annual income as literals in these variables. The program should display these values on the screen in a manner similar to the following: My name is Joe Mahoney, my age is 26 and I hope to earn $100000.0 per year. Name and Initials
Write a program that has the following String variables: firstName, middleName, and lastName. Initialize these with
Ex603 your first, middle, and last names. The program should also have the following char variables: firstInitial, middleInitial, and lastInitial. Store your first, middle, and last initials in these variables. The program should display the contents of these variables on the screen. Star Pattern
Write a program that displays the following pattern:
Ex604
(Convert Celsius to Fahrenheit) Write a program that reads a Celsius degree in a double value from the console, then converts it to Fahrenheit and displays the result. The formula for the conversion is as follows: fahrenheit = (9 / 5) * celsius + 32 Hint: In Java, 9 / 5 is 1, but 9.0 / 5 is 1.8.
Ex605 Here is a sample run: Enter a degree in Celsius: 43 43 Celsius is 109.4 Fahrenheit
84
(Compute the volume of a cylinder) Write a program that reads in the radius and length of a cylinder and computes the area and volume using the following formulas: area = radius * radius * p volume = area * length
Ex606
Here is a sample run: Enter the radius and length of a cylinder: 5.5 12 The area is 95.0331 The volume is 1140.4
(Convert feet into meters) Write a program that reads a number in feet, converts it to meters, and displays the result. One foot is 0.305 meter. Here is a sample run:
Ex607
Enter a value for feet: 16.5 16.5 feet is 5.0325 meters
(Convert pounds into kilograms) Write a program that converts pounds into kilograms. The program prompts the user to enter a number in pounds, converts it to kilograms, and displays the result. One pound is 0.454 kilograms. Here is a sample run:
Ex608 Enter a number in pounds: 55.5 55.5 pounds is 25.197 kilograms
Sales Tax
Ex609
Write a program that will ask the user to enter the amount of a purchase. The program should then compute the state and county sales tax. Assume the state sales tax is 4 percent and the county sales tax is 2 percent. The program should display the amount of the purchase, the state sales tax, the county sales tax, the total sales tax, and the total of the sale (which is the sum of the amount of purchase plus the total sales tax). Hint: Use the value 0.02 to represent 2 percent, and 0.04 to represent 4 percent. (Financial application: calculate tips) Write a program that reads the subtotal and the gratuity rate, then computes the gratuity and total. For example, if the user enters 10 for subtotal and 15% for gratuity rate, the program displays $1.5 as gratuity and $11.5 as total. Here is a sample run:
Ex610 Enter the subtotal and a gratuity rate: 10 15 The gratuity is $1.5 and total is $11.5
(Sum the digits in an integer) Write a program that reads an integer between 0 and 1000 and adds all the digits in the integer. For example, if an integer is 932, the sum of all its digits is 14. Hint: Use the % operator to extract digits, and use the / operator to remove the extracted digit. For instance, 932 % 10 = 2 and 932 / 10 = 93.
Ex611 Here is a sample run: Enter a number between 0 and 1000: 999 The sum of the digits is 27
(Find the number of years) Write a program that prompts the user to enter the minutes (e.g., 1 billion), and displays the number of years and days for the minutes. For simplicity, assume a year has 365 days. Here is a sample run:
Ex612
Enter the number of minutes: 1000000000 1000000000 minutes is approximately 1902 years and 214 days
85
Ex613
(Financial application: compound value) Suppose you save $100 each month into a savings account with the annual interest rate 5%. Thus, the monthly interest rate is 0.05/12 = 0.00417. After the first month, the value in the account becomes 100 * (1 + 0.00417) = 100.417 After the second month, the value in the account becomes (100 + 100.417) * (1 + 0.00417) = 201.252 After the third month, the value in the account becomes (100 + 201.252) * (1 + 0.00417) = 302.507 and so on. Write a program that prompts the user to enter a monthly saving amount and displays the account value after the sixth month. Enter the monthly saving amount: 100 After the sixth month, the account value is $608.81
Ex614
(Health application: computing BMI) Body Mass Index (BMI) is a measure of h ealth on weight. It can be calculated by taking your weight in kilograms and dividing by the square of your height in meters. Write a program that prompts the user to enter a weight in pounds and height in inches and displays the BMI. Note that one pound is 0.45359237 kilograms and one inch is 0.0254 meters. Here is a sample run: Enter weight in pounds: 95.5 Enter height in inches: 50 BMI is 26.8573
(Geometry: distance of two points) Write a program that prompts the user to enter two points (x1, y1) and (x2, y2) and displays their distance between them. The formula for computing the distance is (2 1) (2 1) . Note that you can use Math.pow(a, 0.5) to compute √ . Here is a sample run:
Ex615 Enter x1 and y1: 1.5 -3.4 Enter x2 and y2: 4 5 The distance between the two points is 8.764131445842194
(Geometry: area of a hexagon) Write a program that prompts the user to enter the side of a hexagon and displays its area. The formula for computing the area of a hexagon is
= Ex616 where s is the length of a side. Here is a sample run:
3√ 3 2
Enter the side: 5.5 The area of the hexagon is 78.5895
(Geometry: area of a triangle) Write a program that prompts the user to enter three points (x1, y1), (x2, y2), (x3, y3) of a triangle and displays its area. The formula for computing the area of a triangle is s = (side1 + side2 + side3)/2
area = ( 1)( 2)( 3)
Ex617 Here is a sample run:
Enter three points for a triangle: 1.5 -3.4 4.6 5 9.5 -3.4 The area of the triangle is 33.6
86
(Financial application: calculate interest) If you know the balance and the annual percentage interest rate, you can compute the interest on the next monthly payment using the f ollowing formula: interest = balance * (annualInterestRate/1200)
Ex618 Write a program that reads the balance and the annual percentage interest rate and displays the interest for the next month. Here is a sample run: Enter balance and interest rate (e.g., 3 for 3%): 1000 3.5 The interest is 2.91667
(Financial application: calculate future investment value) Write a program that reads in investment amount, annual interest rate, and number of years, and displays the future investment value using the following formula: futureInvestmentValue = numberOfYears*12 investmentAmount * (1 + monthlyInterestRate) For example, if you enter amount 1000, annual interest rate 3.25%, and number of years 1, the future investment
Ex619 value is 1032.98. Here is a sample run:
Enter investment amount: 1000.56 Enter annual interest rate in percentage: 4.25 Enter number of years: 1 Accumulated value is $1043.92
(Cost of driving) Write a program that prompts the user to enter the distance to drive, the fuel efficiency of the car in miles per gallon, and the price per gallon, and displays the cost of the trip. Here is a sample run:
Ex620
Enter the driving distance: 900.5 Enter miles per gallon: 25.5 Enter price per gallon: 3.55 The cost of driving is $125.36
String Manipulator
Write a program that asks the user to enter the name of his or her favorite city. Use a String variable to store the input. The program should display the following:
Ex621
• • • •
The number of characters in the city name The name of the city in all uppercase letters The name of the city in all lowercase letters The first character in the name of the city
Word Game
Write a program that plays a word game with the user. The program should ask the user to enter the following:
Ex622
• • • • • • •
His or her name His or her age The name of a city The name of a college A profession A type of animal A pet’s name
After the user has entered these items, the program should display the f ollowing story, inserting the user’s input into the appropriate locations: There once was a person named NAME who lived in CITY. At the age of AGE, NAME went to college at COLLEGE. NAME graduated and went to work as a PROFESSION. Then, NAME adopted a(n) ANIMAL named PETNAME. They both lived happily ever after! 87
Ex623 En un hospital existen tres áreas: Ginecología, Pediatría, Traumatología. El presupuesto anual del hospital se reparte conforme a la sig. tabla: Area Ginecología Traumatología Pediatría
% del Presupuesto 40% 35% 25%
Obtener la cantidad de dinero que recibirá cada área, para cualquier monto presupuestal
Ex624 Un alumno desea saber cuál será su calificación final en la materia de Física. Dicha calificación se compone de los siguientes porcentajes: 55% del promedio de sus tres calificaciones parciales. 30% de la calificación del examen final. • 15% de la calificación de un trabajo final.
Ex625 Un vendedor recibe un sueldo base más un 10% extra por comisión de sus ventas, el vendedor desea saber cuánto dinero obtendrá por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibirá en el mes tomando en cuenta su sueldo base y comisiones.
Ex626 El costo de un automóvil nuevo para el consumidor es la suma total del costo del vehículo, del porcentaje de ganancia del vendedor y de los impuestos locales o estatales aplicables (sobre el precio de venta). Supóngase una ganancia del vendedor del 12% en todas las unidades y un impuesto del 6%. Leer el costo del automóvil e imprimir el costo final para el consumidor.
Ex627 Calcule e imprima el pago mensual para un vendedor de autos, basándose en lo siguiente:
El pago base es de $350, más una comisión de $15 por cada auto vendido y un bono de $40 si vendió más de 15 autos. El impuesto a pagar es el 25% del pago total. Los datos de entrada son el nombre del vendedor y el número de autos vendidos en el mes. Se desea imprimir el nombre del vendedor, el sueldo bruto, el impuesto y el sueldo neto.
Ex628 Evaluar la siguiente expresión
a7c 2b b 2 a
Ex629 Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas invierte una cantidad distinta. Obtener el porcentaje que cada quien invierte con respecto a la cantidad total invertida.
Ex630 Mostrar la tabla de multiplicar de un numero x
88
7 Decisiones 7.1 Introducción Un programa puede decidir cuál sentencia ejecutar en ba se a una condición. if (radio < 0) { System.out.println("El radio no puede ser negativo"); } else { area = radio * radio * Math.PI; System.out.println("El área del círculo es " + area); } Las sentencias de selección utilizan condiciones que son expresiones lógicas o booleanas. Una expresión lógica es una expresión que se evalúa como un valor booleano: verdadero o falso.
89
7.2 Tipo de dato Boolean El tipo de dato boolean declara una varible que puede tomar los valores de true o false. Los operadores relacionales se utilizan para formar expresiones lógicas y comparar valores. Una expresión lógica siempre nos va a dar como resultado true o false.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
package seleccion; import java.util.Scanner; public class AdditionQuiz { public static void main(String[] args) { int number1 = (int)(System.currentTimeMillis() % 10); int number2 = (int)(System.currentTimeMillis() * 7 % 10); // Create a Scanner Scanner input = new Scanner(System.in); System.out.print("What is " + number1 + " + " + number2 + "? "); int answer = input.nextInt(); System.out.println( number1 + " + " + number2 + " = " + answer + " is " + (number1 + number2 == answer)); } } What is 6 + 2 = What is 8 + 6 =
6 8 8 5
+ 2? 8 is true + 6? 5 is false
90
7.3 Sentencia if Una sentencia if es una estructura que permite que un programa especifique rutas alternativas de ejecución tomando como base una expresión lógica. La sentencia if la podemos utilizar de cuatro formas diferentes: if, if/else, if else if e if anidados. Diagrama de Flujo
Java
if (edad >= 18) { System.out.println(“Eres mayor de edad”);
}
if (edad >= 18) { System.out.println(“Eres mayor de edad”);
} else { System.out.println(“Eres menor de edad”);
}
if(numero > 0){ System.out.println(“Positivo”);
} else if (numero < 0) { System.out.println(“Negativo”);
} else { System.out.println(“Cero”);
}
91
if (edad >= 18) { if(sexo == ‘H’){ System.out.println(“Pasar por su playera azul ”);
} else { System.out.println(“Pasar por su playera rosa”);
} } else { System.out.println(“Eres menor de edad”);
}
7.3.1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
if package decisiones; import java.util.Scanner; public class CalificacionesV1 { public static void main(String[] args) { int calif1; int calif2; int calif3; int promedio; Scanner input = new Scanner(System.in); System.out.println("Materia: Matemáticas I"); System.out.println("Introducir tus 3 calificaciones (0-100): "); calif1 = input.nextInt(); calif2 = input.nextInt(); calif3 = input.nextInt(); promedio = (calif1 + calif2 + calif3) / 3; if(promedio >= 60){ System.out.println("Aprobado\n Promedio = " + promedio); } System.out.println("Fin del programa."); }
Materia: Matemáticas I Introducir tus 3 calificaciones (0-100): 70 85 90 Aprobado Promedio = 81 Fin del programa.
92
7.3.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
if else package decisiones; import java.util.Scanner; public class CalificacionesV2 { public static void main(String[] args) { int calif1; int calif2; int calif3; int promedio; Scanner input = new Scanner(System.in); System.out.println("Materia: Matemáticas I"); System.out.println("Introducir tus 3 calificaciones (0-100): "); calif1 = input.nextInt(); calif2 = input.nextInt(); calif3 = input.nextInt(); promedio = (calif1 + calif2 + calif3) / 3; if(promedio >= 60){ System.out.println("Aprobado\n Promedio = " + promedio); } else { System.out.println("Reprobado\n Promedio = " + promedio); System.out.println("Hay que estudiar más :("); } System.out.println("Fin del programa."); } } Materia: Matemáticas I Introducir tus 3 calificaciones (0-100): 55 60 50 Reprobado Promedio = 55 Hay que estudiar más :( Fin del programa.
93
7.3.3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
if else if package decisiones; import java.util.Scanner; public class CalificacionesV3 { public static void main(String[] args) { int calif1; int calif2; int calif3; int promedio; Scanner input = new Scanner(System.in); System.out.println("Materia: Matemáticas I"); System.out.println("Introducir tus 3 calificaciones (0-100): "); calif1 = input.nextInt(); calif2 = input.nextInt(); calif3 = input.nextInt(); promedio = (calif1 + calif2 + calif3) / 3; if(promedio >= 90){ System.out.println("**Excelente"); } else if (promedio >= 80) { System.out.println("**Bien"); } else if (promedio >= 60) { System.out.println("**Regular"); } else { System.out.println(":( Reprobado"); } System.out.println("Promedio = " + promedio); System.out.println("Fin del programa."); } }
Materia: Matemáticas I Introducir tus 3 calificaciones (0-100): 85 70 85 Bien Promedio = 80 Fin del programa.
94
7.3.4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
if anidados package decisiones; import java.util.Scanner; public class CalificacionesV4 { public static void main(String[] args) { int calif1; int calif2; int calif3; int promedio; Scanner input = new Scanner(System.in); System.out.println("Materia: Matemáticas I"); System.out.println("Introducir tus 3 calificaciones (0-100): "); calif1 = input.nextInt(); calif2 = input.nextInt(); calif3 = input.nextInt(); promedio = (calif1 + calif2 + calif3) / 3; if(promedio >= 60){ System.out.println("Aprobado"); if(promedio >= 90){ System.out.println("Felicidades. Aparecerá en cuadro de honor."); } else{ System.out.println("Felicidades :) :)"); } } else { System.out.println("Reprobado\nHay que estudiar más :("); } System.out.println("Promedio = " + promedio); System.out.println("Fin del programa."); } } Materia: Matemáticas I Introducir tus 3 calificaciones (0-100): 85 70 90 Aprobado Felicidades :) :) Promedio = 81 Fin del programa.
95
7.4 Comparando caracteres (char) Los operadores relacionales también se pueden utilizar para comparar caracteres. Por ejemplo si ch es una variable char podemos utilizar el operador == para comparar si el carácter que contiene es una ‘A’. 1 2
if (ch == 'A') System.out.println("La letra es una A.");
El operador != se puede utilizar para determiner si un caracter es diferente a otro. 1 2
if (ch != 'A') System.out.println("La letra no es una A.");
Los operadores >, <, >=, <= se utilizan también para comparar los caracteres. Es es debido a que internamente las variables de tipo char se guardan como números. Por ejemplo el carácter ‘A’ es menor que el carácter ‘B’.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
package decisiones; import java.util.Scanner; public class Vocales { public static void main(String[] args) { String cadena; char letra; Scanner input = new Scanner(System.in); System.out.print("Escribir una letra "); letra = input.nextLine().charAt(0); letra = Character.toUpperCase(letra); if (letra == 'A' | letra == 'E' | letra == 'I' | letra == 'O' | letra == 'U') { System.out.println("La letra es una vocal"); } else { System.out.println("La letra no es una vocal"); } } } Escribir una letra a La letra es una vocal
Java tiene la clase Character que contiene diversos métodos para manipular caracteres.
96
97
7.5 Comparando cadenas de caracteres (String) Para comparar cadenas de caracteres utilizamos el método equals o compareTo de la clase String. IMPORTANTE:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
equals devuelve true si las cadenas son iguales o false en caso contrario compareTo devuelve 0 si las cadenas son iguales, un valor positivo, si la cadena es mayor que la otra ca dena con la que se esta comparando y un valor negativo en caso contrario. Los operadores relacionales (==, !=, >, <, >=, <=) no se utilizan para comparar cadenas Los operadores relacionales lo que comparan de las cadenas son sus direcciones de memoria y no su contenido.
package decisiones; public class Cadenas { public static void main(String[] args) { String cad1 = "José"; String cad2 = new String("José"); System.out.println("cad1 == cad2 " + (cad1==cad2)); System.out.println("cad1.equals(cad2) " + cad1.equals(cad2)); String cad3 = "Juan"; String cad4 = "Ana"; System.out.println("cad3.compareTo(cad4) " + cad3.compareTo(cad4)); System.out.println("cad4.compareTo(cad3) " + cad4.compareTo(cad3)); cad4 = "Juan"; System.out.println("cad4.compareTo(cad3) " + cad4.compareTo(cad3)); } } cad1 == cad2 false cad1.equals(cad2) true cad3.compareTo(cad4) 9 cad4.compareTo(cad3) -9 cad4.compareTo(cad3) 0
98
7.6 Operadores lógicos Los operadores lógicos !, &&, || Y ^ pueden ser utilizados para crear expresiones lógicas más complejos.
99
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
package decisiones; import java.util.Scanner; public class TestBooleanOperators { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Enter an integer: "); int number = input.nextInt(); if ((number % 2 == 0) && (number % 3 == 0)) { System.out.println(number + " is divisible by 2 and 3? "); } if ((number % 2 == 0) || (number % 3 == 0)) { System.out.println(number + " is divisible by 2 or 3"); } if ((number % 2 == 0) ^ (number % 3 == 0)) { System.out.println(number + " is divisible by 2 or 3, but not both"); } } } Enter an integer: 4 4 is divisible by 2 or 3 is divisible by 2 or 3, but not both Enter an integer: 18 18 is divisible by 2 and 3? 18 is divisible by 2 or 3
100
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
// Adivinar el número de la loteria de 2 dígitos. // Si da el número exacto gana $10,000 // Si coinciden los 2 dígitos con el número ganador $3000 // Si coincide un dígito con el número ganador $1000 package decisiones; import java.util.Scanner; public class Lottery { public static void main(String[] args) { // Generate a lottery int lottery = (int)(Math.random() * 100); // Prompt the user to enter a guess Scanner input = new Scanner(System.in); System.out.print("Enter your lottery pick (two digits): "); int guess = input.nextInt(); // Get digits from lottery int lotteryDigit1 = lottery / 10; int lotteryDigit2 = lottery % 10; // Get digits from guess int guessDigit1 = guess / 10; int guessDigit2 = guess % 10; System.out.println("The lottery number is " + lottery); // Check the guess if (guess == lottery) System.out.println("Exact match: you win $10,000"); else if (guessDigit2 == lotteryDigit1 && guessDigit1 == lotteryDigit2) System.out.println("Match all digits: you win $3,000"); else if (guessDigit1 == lotteryDigit1 || guessDigit1 == lotteryDigit2 || guessDigit2 == lotteryDigit1 || guessDigit2 == lotteryDigit2) System.out.println("Match one digit: you win $1,000"); else System.out.println("Sorry, no match"); } } Enter your lottery pick (two digits): 15 The lottery number is 15 Exact match: you win $10,000
Enter your lottery pick (two digits): 45 The lottery number is 54 Match all digits: you win $3,000
Enter your lottery pick: 23 The lottery number is 34 Match one digit: you win $1,000
Enter your lottery pick: 23 The lottery number is 14 Sorry: no match
101
7.7 Sentencia switch switch ejecuta sentencias tomando como base el valor de una variable o una expresión. Dependiendo del valor de la variable status (0, 1, 2, 3) es el conjunto de sentencias que se va a ejecutar. Si la variable status tiene un valor diferente a 0, 1, 2, o 3, se ejecuta el conjunto de sentencias pertenecientes a default.
switch (status) { case 0: compute tax for single filers; break; case 1: compute tax for married jointly or qualifying widow(er); break; case 2: compute tax for married filing separately; break; case 3: compute tax for head of household; break; default: System.out.println("Error: invalid status"); System.exit(1); }
102
switch (switch-expression) { case value1: statement(s)1; break; case value2: statement(s)2; break; ... case valueN: statement(s)N; break; default: statement(s)-for-default; } Reglas al utilizer switch
La switch-expression debe ser de tipo char, byte, short, int o String y debe estar siempre encerrada entre par éntesis value1, …, valueN debe ser del mismo tipo que switch -expression. value1, …, valueN son valores constantes (5, ‘A’, “soltero”), no pueden ser expresiones (a>b, x+6).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
Cuando el valor en un case, sea igual al valor de switch-expression, las sentencias pertenecientes a este case, se ejecutan hasta que se llegue a un break, o hasta que se llegue al final del switch. default es opcional, su utiliza cuando ninguno de los case, coincide con el valor de switch-expression. break, es opcional. Cuando se llega a un break, la sentencia switch termina inmediatamente. package decisiones; import java.util.Scanner; public class ChineseZodiac { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Enter a year: "); int year = input.nextInt(); switch case case case case case case case case case case case case }
(year % 12) { 0: System.out.println("monkey"); break; 1: System.out.println("rooster"); break; 2: System.out.println("dog"); break; 3: System.out.println("pig"); break; 4: System.out.println("rat"); break; 5: System.out.println("ox"); break; 6: System.out.println("tiger"); break; 7: System.out.println("rabbit"); break; 8: System.out.println("dragon"); break; 9: System.out.println("snake"); break; 10: System.out.println("horse"); break; 11: System.out.println("sheep"); break;
} }
103
7.8 Jerarquía de operadores
104
7.9 Operador ternario ? El operador ternario se utiliza para evaluar expresiones como si se tratara de un if else. En los siguientes ejemplos se muestra como utilizar el operador ternario en lugar del if else.
if (x < 0) y = 10; else y = 20;
y = x < 0 ? 10: 20;
if (score < 60) System.out.println("Your grade is: Fail."); else System.out.println("Your grade is: Pass.");
System.out.println("Your grade is: " + (score < 60 ? "Fail." : "Pass."));
105
7.10 Dando formato a la salida: System.out.printf y String.format El método System.out.printf( ) se utiliza para dar formato a la salida a través de la consola. El método String.format trabaja igual que printf( ), solo que este devuelve una cadena de caracteres con formato.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
package entradasalida; public class FormatoSalida { public static void main(String[] args) { double cantidad = 35.2385; int edad = 25; System.out.println("Cantidad = " + cantidad); System.out.printf("Cantidad = %4.2f \n", cantidad); System.out.printf("Cantidad = %4.2f Edad = %d \n", cantidad, edad); String salida = String.format("Cantidad = %4.2f Edad = %d \n", cantidad, edad); System.out.println(salida); } } Cantidad Cantidad Cantidad Cantidad
= = = =
35.2385 35.24 35.24 Edad = 25 35.24 Edad = 25
106
7.11 Ejercicios Ex701
Determinar el sueldo semanal de un trabajador con base en las horas trabajadas y el pago por hora, considerando que después de las 40 horas cada hora se considera como excedente y se paga el doble. El 14 de febrero una persona desea comprarle un regalo al ser querido que má s aprecia en ese momento, su dilema radica en qué regalo puede hacerle, las alternativas que tiene son las siguientes:
Ex702
Determinar qué regalo se le puede comprar a ese ser tan especial por el día del amor y la amistad.
Ex703
Ex704
Ex705
Ex706
Ex707
El dueño de un estacionamiento requiere un programa que le permita determinar cuánto debe cobrar por el uso del estacionamiento a sus clientes. Las tarifas que se tienen son las siguientes: Las dos primeras horas a $5.00 c/u. Las siguientes tres a $4.00 c/u. Las cinco siguientes a $3.00 c/u. Después de diez horas el costo por cada una es de dos pesos. Escribir un programa ara determinar el costo y el descuento que tendrá un artículo. Considere que si su precio es mayor o igual a $200 se le aplica un descuento de 15%, y si su precio es mayor a $100 pero menor a $200, el descuento es de 12%, y si es menor a $100, sólo 10% El presidente de la república ha decidido estimular a todos los estudiantes de una universidad mediante la asignación de becas mensuales, para esto se tomarán en consideración los siguientes criterios: Para alumnos mayores de 18 años con promedio mayor o igual a 9 , la beca será de $2000.00; con promedio mayor o igual a 7.5, de $1000.00; para los promedios menores de 7.5 pero mayores o iguales a 6.0, de $500.00; a los demás se les enviará una carta de invitación incitándolos a que estudien más en el próximo ciclo escolar. A los alumnos de 18 años o menores de esta edad, con promedios mayores o iguales a 9, se les dará $3000; con promedios menores a 9 pero mayores o iguales a 8, $2000 ; para los alumnos con promedios menores a 8 pero mayores o iguales a 6, se les dará $100, y a los alumnos que tengan promedios menores a 6 se les enviará carta de invitación. Escribir el programa correspondiente. Cierta empresa proporciona un bono mensual a sus trabajadores, el cual puede ser por su antigüedad o bien por el monto de su sueldo (el que sea mayor), de la siguiente forma: Cuando la antigüedad es mayor a 2 años pero menor a 5, se otorga 20 % de su sueldo; cuando es de 5 años o más, 30 %. Ahora bien, el bono por concepto de sueldo, si éste es menor a $1000, se da 25 % de éste, cuando éste es mayor a $1000, pero menor o igual a $3500, se otorga 15% de su sueldo, para más de $3500. 10%. Realice un programa para calcular los dos tipos de bono y mostrando como resultado el bono mayor al trabajador. Una compañía de seguros para autos ofrece dos tipos de póliza: cobertura amplia (A) y daños a terceros (B). Para el plan A, la cuota base es de $1,200, y para el B, de $950. A ambos planes se les carga 10% del costo si la persona que conduce tiene por hábito beber alcohol, 5% si utiliza lentes, 5% si padece alguna enfermedad –como deficiencia cardiaca o diabetes –, y si tiene más de 40 años, se le carga 20%, de lo contrario sólo 10%. Todos estos cargos se realizan sobre el costo base. Escribir un programa para determinar cuánto le cuesta a una persona contratar una póliza.
107
Ex708
Ex709
Ex710 Ex711 Ex712 Ex713
Escribir un programa que permita determinar el sueldo semanal de un trabajador con base en las horas trabajadas y el pago por hora, considerando que a partir de la hora número 41 y hasta la 45, cada hora se le paga el doble, de la hora 46 a la 50, el triple, y que trabajar más de 50 horas no está permitido. Escribir un programa que pida un año y diga si es bisiesto o no. Nota: Un año es bisiesto si es múltiplo de 4 salvo el caso en que sea múltiplo de 100, que no es bisiesto, y no sea múltiplo de 400. Por ejemplo, el año 1900 no fue bisiesto, el 2000 sí y el 2100 no lo es. Escribir un programa que permita efectuar el cálculo del área de un cuadrado, un círculo o un triángulo equilátero según la opción seleccionada por el usuario a través de un menú. Pedir una hora de la forma hora, minutos y segundos, y mostrar la hora en el segundo siguiente. Leer la longitud de los lados de un triángulo y determinar si el triángulo es: Equilatero, Isosceles o Escaleno. Determinar el mayor de 4 números Capturar las calificaciones obtenidas por un estudiante en tres exámenes parciales e imprimir su promedio final seguido del mensaje correspondiente de acuerdo a la siguiente tabla:
Ex714
Dado un valor de x calcular el valor de y según la siguiente función:
Ex715
Ex716
Escribir un programa que dados dos números enteros a, b y una clave, realice la operación aritmética indicada por medio de la clave a los números dados. Por ejemplo, si los datos son: 8 4 +, el algoritmo debe calcular la suma de 8 + 4. Las claves válidas son: + - * /.
108
2
(Algebra: solve quadratic equations) The two roots of a quadratic equation ax + bx + c = 0 can be obtained using the following formula:
−4 1 = −+ 2 = −−
−4
2
Ex717
b - 4ac is called the discriminant of the quadratic equation. If it is positive, the equation has two real roots. If it is zero, the equation has one root. If it is negative, the equation has no real roots. Write a program that prompts the user to enter values for a, b, and c and displays the result based on the discriminant. If the discriminant is positive, display two roots. If the discriminant is 0, display one root. Otherwise, display “The equation has no real ro ots”. Note that you can use Math.pow(x, 0.5) to compute √ . Here are some sample runs. Enter a, b, c: 1.0 3 1 The equation has two roots -0.381966 and -2.61803 Enter a, b, c: 1 2.0 1 The equation has one root -1 Enter a, b, c: 1 2 3 The equation has no real roots
Write a program that generates three integers and the user enters the sum of the numbers. The program displays true or false depending on the response.
Ex718
What is 4 + 6 + 1? 12 4 + 6 + 1 = 12 is false
(Algebra: solve 2 * 2 linear equations) You can use Cramer’s rule to solve the following 2 * 2 system of linear equation:
Write a program that prompts the user to enter a, b, c, d, e, and f and displays the result. If ad - bc is 0, report
Ex719
that “The equation has no solution.” Enter a, b, c, d, e, f: 9.0 4.0 3.0 -5.0 -6.0 -21.0 x is -2.0 and y is 3.0 Enter a, b, c, d, e, f: 1.0 2.0 2.0 4.0 4.0 5.0 The equation has no solution
(Random month) Write a program that randomly generates an integer between 1 and 12 and displays the English
Ex720
month name January, February, …, December for the number 1, 2, …, 12, accordingly.
(Find future dates) Write a program that prompts the user to enter an integer for today’s day of the week (Sunday is 0, Monday is 1, …, and Saturday is 6). A lso prompt the user to enter the number of day s after today for a future day and display the future day of the week. Here is a sample run:
Ex721
Enter today's day: 1 Enter the number of days elapsed since today: 3 Today is Monday and the future day is Thursday Enter today's day: 0 Enter the number of days elapsed since today: 31 Today is Sunday and the future day is Wednesday
109
(Health application: BMI) Revise Listing 3.4, ComputeAndInterpretBMI.java, to let the user enter weight, feet, and inches. For example, if a person is 5 feet and 10 inches, you will enter 5 for feet and 10 for inches. Here is a sample run:
Ex722
Enter weight in pounds: 140 Enter feet: 5 Enter inches: 10 BMI is 20.087702275404553 Normal
Ex723
Ex724
(Sort three integers) Write a program that prompts the user to enter three integers and display the integers in non-decreasing order. (Find the number of days in a month) Write a program that prompts the user to enter the month and year and displays the number of days in the month. For example, if the user entered month 2 and year 2012, the program should display that February 2012 had 29 days. If the user entered month 3 and year 2015, the program should display that March 2015 had 31 days. (Palindrome number) Write a program that prompts the user to enter a three-digit integer and determines whether it is a palindrome number. A number is palindrome if it reads the same from right to left and from left to right. Here is a sample run of this program:
Ex725
Enter a three-digit integer: 121 121 is a palindrome Enter a three-digit integer: 123 123 is not a palindrome
Ex726
(Game: heads or tails) Write a program that lets the user guess whether the flip of a coin results in heads or tails. The program randomly generates an integer 0 or 1, which represents head or tail. The program prompts the user to enter a guess and reports whether the guess is correct or incorrect. (Game: lottery) Revise Listing 3.8, Lottery.java, to generate a lottery of a threedigit number. The program prompts the user to enter a three-digit number and determines whether the user wins according to the following rules:
Ex727
• If the user input matches the lottery number in the exact order, the award is $10,000. • If all digits in the user input match all digits in the lottery number, the award is $3,000. • If one digit in the user input matches a digit in the lottery number, the award is $1,000.
(Game: scissor, rock, paper) Write a program that plays the popular scissor-rockpaper game. (A scissor can cut a paper, a rock can knock a scissor, and a paper can wrap a rock.) The program randomly generates a number 0, 1, or 2 representing scissor, rock, and paper. The program prompts the us er to enter a number 0, 1, or 2 and displays a message indicating whether the user or the computer wins, loses, or draws. Here are sample runs:
Ex728
scissor (0), rock (1), paper (2): 1 The computer is scissor. You are rock. You won scissor (0), rock (1), paper (2): 2 The computer is paper. You are paper too. It is a draw
110
(Cost of shipping) A shipping company uses the following function to calculate the cost (in dollars) of shipping based on the weight of the package (in pounds).
Ex729
Write a program that prompts the user to enter the weight of the package and display the shipping cost. If the weight is greater than 50, display a message “the package cannot be shipped.”
Ex730
(Compute the perimeter of a triangle) Write a program that reads three edges for a triangle and computes the perimeter if the input is valid. Otherwise, display that the input is invalid. The input is valid if the sum of every pair of two edges is greater than the remaining edge. Escribir un programa que determine el mayor de 3 números enteros (A,B,C) pero considere que los números pueden tener los mismos valores.
Ex731
Ejemplos de resultados: • A es el mayor • A y C son los mayores • A, B y C son iguales • B es el mayor • Etc. (Geometry: point in a circle?) Write a program that prompts the user to enter a point (x, y) and checks whether the point is within the circle centered at (0, 0) with radius 10. For example, (4, 5) is inside the circle and (9, 9) is outside the circle, as shown in Figure. (Hint: A point is in the circle if its distance to (0, 0) is less than or equal to 10. The formula for computing the distance is ( 2 1) (2 1). Test your program to cover all cases.) Two sample runs are shown below.
Ex732
Enter a point with two coordinates: 4 5 Point (4.0, 5.0) is in the circle Enter a point with two coordinates: 9 9 Point (9.0, 9.0) is not in the circle
111
(Geometry: point in a rectangle?) Write a program that prompts the user to enter a point (x, y) and checks whether the point is within the rectangle centered at (0, 0) with width 10 and height 5. For example, (2, 2) is inside the rectangle and (6, 4) is outside the rectangle, as shown in Figure 3.7b. (Hint: A point is in the rectangle if its horizontal distance to (0, 0) is less than or equal to 10 / 2 and its vertical distance to (0, 0) is less than or equal to 5.0 / 2. Test your program to cover all cases.) Here are two sample runs.
Ex733
Enter a point with two coordinates: 2 2 Point (2.0, 2.0) is in the rectangle Enter a point with two coordinates: 6 4 Point (6.0, 4.0) is not in the rectangle
112
8 Ciclos Los ciclos en java se utilizan para repetir un conjunto de sentencias. Si queremos mostrar 100 veces el mensaje “Welcome to Java!” , lo podemos hacer de 2 formas, escribir escribir 100 veces
println, o utilizar el ciclo while para que repita 100 veces una sentencia print ln con el mensaje “Welcome to Java!”.
113
8.1 Ciclo while Un ciclo while repite un conjunto de sentencias mientras la condición del ciclo sea verdadera.
La condición del ciclo siempre va dentro de los paréntesis Las llaves que contienen las sentencias del ciclo solo pueden ser omitidas si el ciclo contiene solo una o ninguna sentencia. La condición del ciclo debe en un determinado momento ser falsa para que el ciclo termine. En caso de que la condición nunca se haga falsa, se convertirá en un ciclo infinito y el programa se estará ejecutando indefinidamente. Las variables que utilicemos en la condición del ciclo deben estar previamente inicializadas. No podemos escribir una condición si a las variables no se les ha asignado previamente un valor.
114
8.2 Ciclo while utilizando contador 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
// Programa para mostrar la suma de 5 números package ciclowhile; import java.util.Scanner; public class Sumar5 { public static void main(String[] args) { int c = 0; int suma = 0; int numero; Scanner input = new Scanner(System.in); while (c < 5){ System.out.print("Escribir un número: "); numero = input.nextInt(); suma += numero; c++; } System.out.println("La suma es: " + suma); } } Escribir un Escribir un Escribir un Escribir un Escribir un La suma es:
número: número: número: número: número: 19
5 3 1 8 2
La variable c, nos permite llevar la cuenta del número de iteraciones que llevamos en el ciclo. En este ejemplo el ciclo se repite 5 veces. La variable c es una variable contador. Una variable contador siempre se debe inicializar. Las variables contador normalmente se incrementan de 1 en 1, y para ello utilizamos normalmente el operador ++ que incrementa una variable en 1. Para incrementar una variable en 1, lo podemos hace escribiendo c = c + 1 ó c++. Se recomienda utilizar el operador ++. La variable suma se utiliza como un acumulador o sumador. Un acumulador siempre se debe inicializar. Una variable acumulador lo que hace es ir agregando o sumando en cada iteración el valor de una variable. Estas expresiones son equivalentes suma = suma + numero y suma+=numero. Se recomienda utilizar de preferencia el operador +=.
115
8.3 Ciclo while utilizando valor centinela 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
//Sumar una lista de números positivos package ciclowhile; import java.util.Scanner; public class SumarPositivos { public static void main(String[] args) { int numero; int suma = 0; Scanner input = new Scanner(System.in); System.out.print("Escribir un número positivo (0 ó negativo para terminar): "); numero = input.nextInt(); while(numero > 0){ suma += numero; System.out.print("Escribir un número positivo (0 ó negativo para terminar): "); numero = input.nextInt(); } System.out.println("La suma de los números es: " + suma); }
Escribir un número positivo (0 Escribir un número positivo (0 Escribir un número positivo (0 Escribir un número positivo (0 La suma de los números es: 8
ó ó ó ó
negativo negativo negativo negativo
para para para para
terminar): terminar): terminar): terminar):
4 1 3 0
La variable número la utilizamos como valor centinela Una variable centinela es aquella que utilizamos en la condición de un ciclo y que cuando toma un determinado valor hace que el ciclo termine. En este caso, mientras la variable número sea mayor que 0, el ciclo se estará repitiendo. Cuando la variable tome el valor de 0 o un valor negativo, el ciclo termina. Es importante notar que la variable centinela (numero) debe estar inicializa da antes de entrar a ciclo while (línea 14) y también dentro del ciclo le debemos de asignar un nuevo valor (línea 19). El ciclo while normalmente lo utilizamos con valores centinelas. Si se quiere utilizar el ciclo while con contadores es más recomendable utilizar el ciclo for.
116
8.4 Ejemplos ciclo while 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
package ciclowhile; import java.util.Scanner; public class RepeatAdditionQuiz { public static void main(String[] args) { int number1 = (int)(Math.random() * 10); int number2 = (int)(Math.random() * 10); Scanner input = new Scanner(System.in); System.out.print("What is " + number1 + " + " + number2 + "? "); int answer = input.nextInt(); while (number1 + number2 != answer) { System.out.print("Wrong answer. Try again. What is " + number1 + " + " + number2 + "? "); answer = input.nextInt(); } System.out.println("You got it!"); } } What is 1 + 7? 9 Wrong answer. Try again. What is 1 + 7? 4 Wrong answer. Try again. What is 1 + 7? 8 You got it!
117
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
package ciclowhile; import java.util.Scanner; public class GuessNumber { public static void main(String[] args) { // Generate a random number to be guessed int number = (int)(Math.random() * 101); Scanner input = new Scanner(System.in); System.out.println("Guess a magic number between 0 and 100"); int guess = -1; while (guess != number) { System.out.print("\nEnter your guess: "); guess = input.nextInt(); if (guess == number) System.out.println("Yes, the number is " + number); else if (guess > number) System.out.println("Your guess is too high"); else System.out.println("Your guess is too low"); } // End of loop } } Guess a magic number between 0 and 100 Enter your guess: 50 Your guess is too high Enter your guess: 25 Your guess is too low Enter your guess: 35 Your guess is too high Enter your guess: 30 Your guess is too high Enter your guess: 28 Yes, the number is 28
118
8.5 Ciclo do/while El ciclo do/while hace lo mismo que el ciclo while, la única diferencia es que el ciclo do/while se ejecuta siempre al menos una vez porque la condición la tiene en la parte inferior del ciclo (primero ejecuta las sentencias del ciclo y luego checa la condición)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
// Sumar una lista de 2 números aleatorios package ciclodowhile; import java.util.Scanner; public class SumarNumeros { public static void main(String[] args) { int num1; int num2; int respuesta; Scanner input = new Scanner (System.in); do { num1 = (int)(Math.random() * 11); num2 = (int)(Math.random() * 11); System.out.print(num1 + " + " + num2 + " = "); respuesta = input.nextInt(); System.out.println(respuesta == num1 + num2 ? "Correcto" : "Incorrecto"); } while (num1 != num2); } } 5 + 6 = 11 Correcto 8 + 10 = 19 Incorrecto 7 + 8 = 15 Correcto 3 + 3 = 6 Correcto
119
8.6 Ciclo for El for es un ciclo que se repite un determinado número de veces. Para ello utiliza un contador. Siempre que vayamos a repetir un conjunto de sentencias un número fijo de v eces, es recomendable utilizar for.
120
1 2 3 4 5 6 7 8 9 10 11
package ciclofor; public class Cuadrados { public static void main(String[] args) { System.out.println("Número\t\tCuadrado"); for (int i = 1; i <= 10; i++) { System.out.println(i + "\t\t" + i*i); } } } Número 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Cuadrado 1 4 9 16 25 36 49 64 81 100
package ciclofor; import java.util.Scanner; public class Ventas { public static void main(String[] args) { int dias; double ventas; double totalVentas = 0; Scanner input = new Scanner(System.in); System.out.print("Por cuantos dias se van a capturar ventas? "); dias = input.nextInt(); for (int i = 1; i <= dias; i++) { System.out.print("Ventas del dia " + i + ": "); ventas = input.nextDouble(); totalVentas += ventas; } System.out.println("Total de ventas es " + String.format("%.2f", totalVentas)); } } Por cuantos dias se van a capturar ventas? 3 Ventas del dia 1: 500.5 Ventas del dia 2: 300.25 Ventas del dia 3: 100 Total de ventas es 900.75
121
8.7 Que ciclo utilizar
while. El ciclo while siempre checa primero la condición, es ideal cuando no se quiere que el ciclo se repita si la condición es falsa desde un inicio. Se recomienda utilizarlo con valores centinela para terminar el ciclo. do-while. El ciclo do/while checa la condición al final, es ideal cuando queremos que el ciclo se repita al menos una vez. Se recomienda utilizarlo con valores centinela para terminar el ciclo. for. El ciclo for utiliza una variable contador, es ideal cuando sabemos el número de repeticiones que va a tener nuestro ciclo. Este se repite un determinado número de veces.
122
8.8 Ciclos anidados 1 2 3 4 5 6 7 8 9 10 11 12 13
package anidados; public class Reloj { public static void main(String[] args) { for (int hr = 1; hr < 3; hr++) { for (int min = 0; min <= 59; min++) { for (int seg = 0; seg <= 59; seg++) { System.out.printf("%02d:%02d:%02d\n", hr, min, seg); } } } } } 01:00:00 01:00:01 01:00:02 01:00:03 01:00:04 (El ciclo continua…)
02:59:55 02:59:56 02:59:57 02:59:58 02:59:59
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
package anidados; public class Promedio { public static void main(String[] args) { final int NUM_ESTUDIANTES = 2; final int NUM_CALIFS = 3; int sumaCalifs = 0; int calif; double promedio; for (int i = 1; i <= NUM_ESTUDIANTES; i++) { System.out.println("Calificaciones estudiante #" + i); sumaCalifs = 0; for (int j = 1; j <= NUM_CALIFS; j++) { calif = (int) (5 + Math.random()*6); System.out.print(calif + "\t"); sumaCalifs += calif; } promedio = (double)sumaCalifs / NUM_CALIFS; System.out.printf("Promedio = %.2f\n", promedio); } } } Calificaciones estudiante #1 9 10 7 Promedio = 8.67 Calificaciones estudiante #2 8 5 8 Promedio = 7.00
123
8.9 break La sentencia break hace que se salga del ciclo inmediatamente por lo que no se ejecutara ni el código que se encuentre después del break en esa misma iteración ni ninguna de las posibles iteraciones restantes. 1 2 3 4 5 6 7 8 9 10 11 12 13
package breakcontinue; public class BreakDemo { public static void main(String[] args) { for (int i = 1; i <= 10; i++) { if (i == 5) { break; } System.out.println(i); } } } 1 2 3 4
124
8.10 continue Con continue se puede detener la ejecución de la iteración actual y saltar a la siguiente. 1 2 3 4 5 6 7 8 9 10 11 12 13
package breakcontinue; public class ContinueDemo { public static void main(String[] args) { for (int i = 1; i <= 5; i++) { if (i == 3) { continue; } System.out.println(i); } } } 1 2 4 5
125
8.11 Ejercicios for
Ex801 Ex802 Ex803 Ex804 Ex805
Mostrar los números del 0 al 20 con incrementos de 1 en 1. Mostrar los números del 20 al 0 con decrementos de -1 en -1 Mostrar los números del 0 al 10 con incrementos de 5 en 5. Un profesor tiene un salario inicial de $1500, y recibe un incremento de 10 % anual durante 6 años. ¿Cuál es su salario al cabo de 6 años? ¿Qué salario ha recibido en cada uno de los 6 años? Escribir el programa. Realice el programa anterior utilizando el ciclo while y do/while. “El náufrago satisfecho” ofrece hamburguesas sencillas (S), dobles (D) y triples (T), las cuales tienen un costo de
Ex806
$20, $25 y $28 respectivamente. La empresa acepta tarjetas de crédito con un cargo de 5 % sobre la compra. Suponiendo que los clientes adquieren N hamburguesas, las cuales pueden ser de diferente tipo, realice un algoritmo para determinar cuánto deben pagar. Escribir el programa.
Ex807
Se requiere un programa para determinar, de N cantidades, cuántas son cero, cuántas son menores a cero, y cuántas son mayores a cero.
Ex808
Una compañía fabrica focos de colores (verdes, blancos y rojos). Se desea contabilizar, de un lote de N focos, el número de focos de cada color que hay en existencia. Desarrollar el programa.
Ex809
Se requiere un programa para determinar cuánto ahorrará en pesos una persona diariamente, y en un año, si ahorra 3¢ el primero de enero, 9¢ el dos de enero, 27¢ el 3 de enero y así sucesivamente todo el año.
Ex810
Ex811
Ex812
Ex813
Ex814
Determinar cuánto pagará una persona que adquiere N artículos, los cuales están de promoción. Considere que si su precio es mayor o igual a $200 se le aplica un descuento de 15%, y si su precio es mayor a $100 pero menor a $200, el descuento es de 12%; de lo contrario, sólo se le aplica 10%. Se debe saber cuál es el costo y el descuento que tendrá cada uno de los artículos y finalmente cuánto se pagará por todos los artículos obtenidos. Un cliente de un banco deposita equis cantidad de pesos cada mes en una cuenta de ahorros. La cuenta percibe un interés fijo durante un año de 10 % anual. Escriba un programa para determinar el total de la inversión final de cada año en los próximos N años. Un vendedor ha realizado N ventas y desea saber cuántas fueron por 10,000 o menos, cuántas fueron por más de 10,000 pero por menos de 20,000, y cuánto fue el monto de las ventas de cada una y el monto global. Realice un programa para determinar los totales. Realice un programa que determine el sueldo semanal de N trabajadores considerando que se les descuenta 5% de su sueldo si ganan entre 0 y 150 pesos. Se les descuenta 7% si ganan más de 150 pero menos de 300, y 9% si ganan más de 300 pero menos de 450. Los datos son horas trabajadas, sueldo por hora y nombre de cada trabajador. Realice un programa para obtener la tabla de multiplicar de un entero K comenzando desde el 1.
126
Ex815
(Conversion from miles to kilometers) Write a program that displays the following table (note that 1 mile is 1.609 kilometers): Miles Kilometers 1 1.609 2 3.218 ... 9 14.481 10 16.090 (Conversion from kilograms to pounds and pounds to kilograms) Write a program that displays the following two tables side by side:
Ex816
Mostrar los siguientes patrones:
Ex817
(Statistics: compute mean and standard deviation) In business applications, y ou are often asked to compute the mean and standard deviation of data. The mean is simply the average of the numbers. The standard deviation is a statistic that tells you how tightly all the various data are clustered around the mean in a set of data. For example, what is the average age of the students in a class? How close are the ages? If all the students are the same age, the deviation is 0. Write a program that prompts the user to enter ten numbers, a nd displays the mean and standard deviations of these numbers using the following formula:
Ex818
Here is a sample run: Enter ten numbers: 1 2 3 4.5 5.6 6 7 8 9 10 The mean is 5.61 The standard deviation is 2.99794
127
while
Ex819 Ex820 Ex821 Ex822 Ex823
Ex824
Mostrar los números del 0 al 20 con incrementos de 1 en 1. Mostrar los números del 20 al 0 con decrementos de -1 en -1 Mostrar los números del 0 al 10 con incrementos de 5 en 5. Leer números hasta que se introduzca un 0. Para cada uno indicar si es par o impar. Pedir una lista de números y mostrar la media de los números positivos y la media de los números negativos. Se termina cuando se introduzca el número cero. Dadas las edades y alturas de una lista de alumnos, mostrar la edad y la estatura media, la cantidad de alumnos mayores de 18 años, y la cantidad de alumnos que miden más de 1.75. Termina cuando se introduzca una edad de cero o negativa. (Sum a series) Write a program to sum the following series:
Ex825
Ex826
Supóngase que en una reciente elección hubo tres candidatos (con identificadores 1, 2, 3). Usted habrá de encontrar, mediante un programa, el número de votos correspondiente a cada candidato y el porcentaje qu e obtuvo respecto al total de los votantes. El usuario tecleará los votos de manera desorganizada, tal y como se obtuvieron en la elección, el final de datos está representado por un cero. Observe, como ejemplo, la siguiente lista: 13132213111213120 Donde 1 representa un voto para el candidato 1; 2 un voto para el candidato 2; y así sucesivamente. (Count positive and negative numbers and compute the average of numbers) Write a program that reads an unspecified number of integers, determines how many positive and negative values have been read, and computes the total and average of the input values (not counting zeros). Your program ends with the input 0. Display the average as a floating-point number. Here is a sample run:
Ex827
Enter an integer, the input ends if it is 0: 1 2 -1 3 0 The number of positives is 3 The number of negatives is 1 The total is 5.0 The average is 1.25 Enter an integer, the input ends if it is 0: 0 No numbers are entered except 0
128
Juego “Adivinar un número”. El juego consiste en lo siguiente: • •
•
Ex828
Genere un número aleatoriamente comprendido entre 0-100 Permita al jugador adivinar el número generado, permitiéndole introducir por teclado números mientras que no lo acierte. Con cada número introducido se le informará, por pantalla, si el número generado es mayor o menor. El programa cuenta el número de intentos y muestra al jugador en pantalla el momento de la victoria, con el número de intentos que ha utilizado.
Si el número de intentos es: • • •
Ex829
Ex830 Ex831
<= 5 se indica al jugador que es BUENO 5 < número de intentos < 15 se indica al jugador que es REGULAR el número de intentos es > 15 se invita al jugador a que se entrene por ser MALO.
Calcular lo que hay que pagar por un conjunto de llamadas telefónicas. Por cada llamada se ingresa el tipo (Internacional, Nacional, Local) y la duración en minutos. El criterio que se sigue para calcular el costo de cada llamada es el siguiente: • Internacional: 3 primeros minutos $7.59 Cada minuto adicional $3.03 • Nacional: 3 primeros minutos $1.20 Cada minuto adicional $0.48 • Local: Las primeras 3 llamadas no se cobran. Luego, cada llamada cuesta $0.60 Se termina cuando se introduce en el tipo de llamada una X. Leer una lista de números positivos y mostrar el primero y segundo números más grandes. (Find numbers divisible by 5 and 6) Write a program that displays all the numbers from 100 to 1,000, ten per line, that are divisible by 5 and 6. Numbers are separated by exactly one space. (Financial application: compare loans with various interest rates) Write a program that lets the user enter the loan amount and loan period in number of years and displays the monthly and total payments for each interest rate starting from 5% to 8%, with an increment of 1/8. Here is a sample run:
Ex832
Ex833
Loan Amount: 10000 Number of Years: 5 Interest Rate Monthly 5.000% 188.71 5.125% 189.29 5.250% 189.86 ... 7.875% 202.17 8.000% 202.76
Payment Total Payment 11322.74 11357.13 11391.59 12129.97 12165.84
Elabore un programa que lea los siguientes datos de una lista de trabajadores : Categoría, Sueldo, Años de antigüedad y Sexo (H,M). Calcule lo siguiente : a) Sueldo promedio por cada categoría. b) Cuántos empleados ganan más de $ 10,000. c) Cuántos empleados tienen más de 15 años de antigüedad. d) Cuántas mujeres de categoría A ganan más de $ 8,500. e) Cuántos empleados con 10 o más años de antigüedad, ganan menos de $ 6,000. f) Cuántos empleados de categoría C ganan más de $ 12,500. Existen 3 categorías : A, B y C Termina cuando se escribe una categoría diferente de A, B ó C. 129
do/while
Ex834 Ex835 Ex836 Ex837
Mostrar los números del 0 al 20 con incrementos de 1 en 1. Mostrar los números del 20 al 0 con decrementos de -1 en -1 Mostrar los números del 0 al 10 con incrementos de 5 en 5. Dibuja un cuadrado de n elementos de lado utilizando *. La siguiente se llama la conjetura de ULAM en honor del matemático S. Ulam:
Ex838
• • •
Comience con cualquier entero positivo Si es par, divídalo entre 2; si es impar, multiplíquelo por 3 y agréguele 1. Obtenga enteros sucesivamente repitiendo el proceso.
Al final, obtendrá el número 1, independientemente del entero inicial. Por ejemplo, cuando el entero inicial es 26, la secuencia será: 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1. Construya un diagrama de flujo que lea un entero positivo y obtenga e imprima la sucesión de ULAM
Ex839
(Occurrence of max numbers) Write a program that reads integers, finds the largest of them, and counts its occurrences. Assume that the input ends with number 0. Suppose that y ou entered 3 5 2 5 5 5 0; the program finds that the largest is 5 and the occurrence count for 5 is 4. (Hint: Maintain two variables, max and count. max stores the current max number, and count stores its occurrences. Initially, assign the first number to max and 1 to count. Compare each subsequent number with max. If the number is greater than max, assign it to max and reset count to 1. If the number is equal to max, increment count by 1.) Enter numbers: 3 5 2 5 5 5 0 The largest number is 5 The occurrence count of the largest number is 4
Ex840
Simular el lanzamiento de un dado. Termina cuando un lado salga 2 veces consecutivas.
Ex841
(Find numbers divisible by 5 or 6, but not both) Write a program that displays all the numbers from 100 to 200, ten per line, that are divisible by 5 or 6, but not both. Numbers are separated by exactly one space.
Ex842
Hacer un programa que le pregunte las tablas de multiplicar al azar a un alumno de 1er año de primaria. El programa termina cuando el alumno responda de forma incorrecta 2 veces consecutivas.
Ex843
(Simulation: heads or tails) Write a program that simulates flipping a coin one million times and displays the number of heads and tails. (Financial application: find the sales amount) You ha ve just started a sales job in a department store. Your pay consists of a base salary and a commission. The base salary is $5, 000. The scheme shown below is used to determine the commission rate.
Ex844 Note that this is a graduated rate. The rate for the first $5,000 is at 8%, the next $50 00 is at 10%, and the rest is at 12%. If the sales amount is 25,000, the commission is 5,0 00 * 8% + 5,000 * 10% + 15,000 * 12% = 2,700. Your goal is to earn $30,000 a year. Write a program that finds the minimum sales you have to generate in order to make $30,000.
130