Download Untitled

Document related concepts
no text concepts found
Transcript
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............................................................................................................................................................................ 8
1.2.1
Estructura ................................................................................................................................................................. 8
1.2.2
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............................................................................................................................................................................................. 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 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.............................................................................................................................................. 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 diagramas 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 ayudar 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




1.2.4

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 documenta de Word
o Exit cierra raptor
Menú Scale
o 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
se va ejecutando el programa
o 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 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.
Programa
Indefinido

La primera sentencia de asignación, X←32 asigna el valor de 32 a
X.
32

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.
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
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
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
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
2.3.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 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.
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
Ex209
Ex210
Ex211
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,
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)2 + (𝑦1 − 𝑦2)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
a + 7c
+ 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). 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.
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
Not
And
Or
Nombre
No
Y
O
Expresiones
A
B
True
True
False
False
True
False
True
False
Ejemplo
Not(4>5) es True
(4 > 2) And (3*2<20) es True
(4>2) Or (5<3) es True
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
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
Ex310 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:
𝑎𝑥 + 𝑏𝑦 = 𝑐
𝑑𝑥 + 𝑒𝑦 = 𝑓
Ex317
Ex318
que puede resolverse usando las siguientes fórmulas:
ce − bf
af − cd
𝑥=
y=
𝑎𝑒 − 𝑏𝑑
ae − bd
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.
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
Ex319 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.
Leer tres números enteros y, si el primero de ellos es negativo, calcular el producto de los tres, en caso contrario
Ex321 calcular la suma de ellos.
30
Ex322
Ex323
Ex324
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 las 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
Ex325 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
Ex402
Ex403
Ex404
Ex405
Ex406
Ex407
Mostrar la serie: 1 2 3 4 5 … 20
Mostrar la serie: 50 49 48 47 … 3 2 1 0
Mostrar la serie: 0 2 4 6 8 …. 100
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 ocupa 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.
_


package


comentarios
class






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 carpeta y dentro de ella
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
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
44


main

Palabras reservadas


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.


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.
Letras mayúsculas y minúsculas
{
}

println
;
1
2
3
4
5
6
7
8
9
10
11
12
main es el método principal de una clase en Java, a partir del cual se
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.


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.
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 llama “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 nombre 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
Ejecutar. En el último paso ejecutamos nuestro archivo en Bytecode “Welcome.class” para que nos muestre
el resultado de nuestro programa.
Java Welcome
3
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 escribir 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” donde 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…”. Despué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 para 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 esta 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 imposible 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


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
double radio;
double area;



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
Operador =


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
println y print

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 se 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 teclado 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
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
6.8.1 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 de 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
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
6.8.5 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 conversió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:




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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.
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 cadenas
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 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 health 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 + (𝑦2 − 𝑦1)2 .
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
Ex616
(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
3√3 2
𝐴𝑟𝑒𝑎 =
𝑠
2
where s is the length of a side. Here is a sample run:
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 following 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:
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
Ex620
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 following 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
a + 7c
+ 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 base 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 cadena 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).
 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.
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
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:
𝑟1 =
−𝑏+√𝑏 2 −4𝑎𝑐
2𝑎
𝑟2 =
−𝑏−√𝑏 2 −4𝑎𝑐
2𝑎
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 roots”.
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:
Ex719
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
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
Ex720
(Random month) Write a program that randomly generates an integer between 1 and 12 and displays the English
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). Also prompt the user to enter the number of days 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 user 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 + (𝑦2 − 𝑦1)2 . 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 println 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 inicializada 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 veces, 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
1
2
3
4
5
6
7
8
9
10
11
12
13
Ciclos anidados
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
Ex801
Ex802
Ex803
Ex804
Ex805
Ex806
for
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
$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, you 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, and 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
Ex819
Ex820
Ex821
Ex822
Ex823
Ex824
while
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 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:
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
Ex834
Ex835
Ex836
Ex837
do/while
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 you 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 have 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 $5000 is at 10%, and the rest is at
12%. If the sales amount is 25,000, the commission is 5,000 * 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
Ex845
Elabore un programa que lea los siguientes datos de una lista de al menos 1 empleado: Nombre, Sexo, Tipo de
incapacidad, Días de incapacidad (El tipo de incapacidad puede ser por enfermedad o por accidente).
Calcular :
a) Número de empleados con más de 20 días de incapacidad.
b) Total de empleados incapacitados por enfermedad.
c) Total de empleados incapacitados por accidente.
d) Total de días de incapacidad.
e) Total de hombres incapacitados por accidente.
f) Porcentaje de mujeres incapacitadas.
g) Total de días de incapacidad por enfermedad en mujeres.
h) Promedio de días de incapacidad por enfermedad.
i ) Promedio de días de incapacidad por accidente.
Una vez introducidos los datos de cada empleado se deberá preguntar “Desea continua(S/N)?” El programa
termina cuando se escribe N.
131