You are on page 1of 131

Contenido

1 Raptor Flowchart ................................................................................................................................................................... 6


1.1 Algoritmo ...................................................................................................................................................................... 6
1.1.1 Diagramas de flujo .................................................................................................................................................... 6
1.1.2 Pseudocdigo............................................................................................................................................................ 6
1.1.3 Etapas para resolver un problema ............................................................................................................................ 6
1.2 Raptor............................................................................................................................................................................ 8
1.2.1 Estructura ................................................................................................................................................................. 8
1.2.2 Smbolos.................................................................................................................................................................... 8
1.2.3 Mens ....................................................................................................................................................................... 9
1.2.4 Haciendo un programa Raptor ................................................................................................................................. 9
2 Smbolos Assignment, Input y Output .................................................................................................................................. 12
2.1 Variables ...................................................................................................................................................................... 12
2.2 Smbolo Input .............................................................................................................................................................. 13
2.3 Smbolo Assignment .................................................................................................................................................... 14
2.3.1 Operadores aritmticos .......................................................................................................................................... 14
2.3.2 Funciones matemticas bsicas .............................................................................................................................. 15
2.3.3 Jerarqua operadores aritmticos ........................................................................................................................... 15
2.4 Smbolo Output ........................................................................................................................................................... 16
2.5 Comentarios ................................................................................................................................................................ 17
2.6 Ejemplos ...................................................................................................................................................................... 18
2.6.1 Sumar 2 nmeros .................................................................................................................................................... 18
2.6.2 rea de un crculo ................................................................................................................................................... 18
2.6.3 Calcular cubo y raz de un nmero positivo ............................................................................................................ 19
2.7 Ejercicios ..................................................................................................................................................................... 20
3 Smbolo Selection ................................................................................................................................................................. 22
3.1 Introduccin ................................................................................................................................................................ 22
3.2 Formas diferentes de utilizar el smbolo Selection ..................................................................................................... 23
3.3 Operadores relacionales ............................................................................................................................................. 24
3.4............................................................................................................................................................................................. 24
3.5 Operadores lgicos ..................................................................................................................................................... 25
3.6 Jerarqua operadores .................................................................................................................................................. 26
3.7 Ejemplos ...................................................................................................................................................................... 27
3.7.1 Calificaciones versin 1.0 ........................................................................................................................................ 27
3.7.2 Calificaciones versin 2.0 ........................................................................................................................................ 27
3.7.3 Calificaciones versin 3.0 ........................................................................................................................................ 28
3.8 Ejercicios ..................................................................................................................................................................... 29
2
4 Smbolo Loop ........................................................................................................................................................................ 32
4.1 Introduccin ................................................................................................................................................................ 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 nmero de aprobados y reprobados de 5 calificaciones ............................................................................ 36
4.5.2 Sumar una lista de gastos ....................................................................................................................................... 37
4.5.3 Leer lista de nmeros y mostrar la suma de los positivos y la suma de los negativos ........................................... 38
4.6 Ejercicios ..................................................................................................................................................................... 39
5 Introduccin a las computadoras y Java ............................................................................................................................... 41
5.1 Teora .......................................................................................................................................................................... 41
5.1.1 Que es una computadora? ..................................................................................................................................... 41
5.1.2 Lenguajes de programacin .................................................................................................................................... 41
5.1.3 Sistemas operativos ................................................................................................................................................ 41
5.1.4 Java ......................................................................................................................................................................... 41
5.1.5 Especificacin 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 cdigo Java ...................................................................................................................................... 57
5.9 Errores de programacin ............................................................................................................................................ 58
5.9.1 Errores de compilacin ........................................................................................................................................... 58
5.9.2 Errores de ejecucin ............................................................................................................................................... 58
5.9.3 Errores de lgica ..................................................................................................................................................... 59
5.10 Ejercicios ..................................................................................................................................................................... 60
6 Programacin Elemental ...................................................................................................................................................... 61
6.1 Ejemplo simple ............................................................................................................................................................ 61
6.1.1 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
6.7 Convenciones para nombres de identificadores ......................................................................................................... 69
6.8 Tipos de datos numricos ........................................................................................................................................... 70
6.8.1 Como leer nmeros del teclado.............................................................................................................................. 70
6.8.2 Operadores aritmticos .......................................................................................................................................... 71
6.8.3 Evaluar expresiones y jerarqua de operadores aritmticos .................................................................................. 73
6.8.4 Literales numricas ................................................................................................................................................. 74
6.8.5 Operadores de asignacin, 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 dilogo .......................................................................................................................................................... 80
6.14 Ayuda de Java .............................................................................................................................................................. 81
6.15 Ejercicios ..................................................................................................................................................................... 84
7 Decisiones ............................................................................................................................................................................. 89
7.1 Introduccin ................................................................................................................................................................ 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 lgicos ..................................................................................................................................................... 99
7.7 Sentencia switch ....................................................................................................................................................... 102
7.8 Jerarqua 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
8 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 grficas de algoritmos; usan smbolos conectados con flechas para indicar la
secuencia de instrucciones.

1.1.2 Pseudocdigo
El pseudocdigo (falso lenguaje, el prefijo pseudo significa falso) es una descripcin de alto nivel de un algoritmo que emplea
una mezcla de lenguaje natural con algunas convenciones sintcticas propias de lenguajes de programacin, como
asignaciones, ciclos y condicionales, aunque no est regido por ningn estndar. Es utilizado para describir algoritmos en
libros y publicaciones cientficas, 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 pseudocdigo requieren
menos espacio para representar instrucciones complejas.

1.1.3 Etapas para resolver un problema

Problema

Anlisis
Construccin Verificacin
profundo del
del algoritmo del algoritmo
problema

6
Las caractersticas que los algoritmos deben reunir son las siguientes:

Precisin: Los pasos a seguir en el algoritmo deben ser precisados claramente.


Determinismo: El algoritmo, dado un conjunto de datos idnticos 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 mdulos principales.

Algoritmo

Datos de Procesamiento Impresin de


entrada de los datos resultados

El mdulo 1 representa la operacin o accin que permite el ingreso de los datos del problema.
El mdulo 2 representa la operacin o conjunto de operaciones secuenciales, cuyo objetivo es obtener la solucin al
problema.
El mdulo 3 representa una operacin o conjunto de operaciones que permiten comunicar al exterior el o los
resultados alcanzados.

7
1.2 Raptor
Es un ambiente de programacin con base en diagramas de flujo, diseado especficamente para ayudar a los estudiantes a
visualizar sus algoritmos y evitar el bagaje sintctico.

El Raptor puede ser descargado de la siguiente direccin de internet: http://raptor.martincarlisle.com

1.2.1 Estructura
Un programa Raptor es un conjunto de smbolos relacionados que representan las acciones a realizar. Las flechas que
conectan los smbolos determinan el orden en que se realizan las acciones. Cuando se ejecuta un programa RAPTOR, se
empieza en el smbolo de inicio y sigue las flechas para ejecutar el programa. Un programa RAPTOR deja de ejecutar cuando
se alcanza el smbolo End. El programa RAPTOR ms pequeo (que no hace nada) se representa en la siguiente imagen.
Mediante la colocacin de las declaraciones RAPTOR adicionales entre los smbolo Start y End se pueden crear programas
RAPTOR significativos.

1.2.2 Smbolos
RAPTOR tiene siete (7) smbolos bsicos, donde cada smbolo representa un tipo nico de instruccin. Los smbolos bsicos se
muestran en la siguiente imagen.

8
1.2.3 Mens
A continuacin se muestran algunas de las operaciones bsicas que se utilizan para empezar a trabajar con Raptor

Menu File
o New crea un nuevo diagrama de flujo
o Open abre un diagrama de flujo previamente guardado
o Save guarda el diagrama de flujo actual
o Save As guarda el diagrama de flujo actual con otro nombre
o Print to Clipboard copia una imagen del diagrama de flujo actual al portapales, para que por ejemplo
desde Microsoft Word selecciones la opcin 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 smbolo a la vez, de esta forma podemos ver cmo
se va ejecutando el programa
o Reset/Execute F5 detiene la ejecucin del programa, borra el valor de todas las variables, y reinicia la
ejecucin 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 smbolo 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

1.2.4 Haciendo un programa Raptor


Seleccionamos File\New

9
Clic al smbolo que deseamos agregar y luego clic sobre el diagrama para agregar el smbolo. Al estar haciendo estas
operaciones, Raptor nos puede pedir que primero guardemos nuestro programa antes de continuar agregando
smbolos a nuestro diagrama. Los archivos de Raptor se guardan con la extensin .rap

Una vez terminado nuestro diagrama de flujo presionamos la tecla F5 o damos clic al smbolo para ejecutar
nuestro diagrama. Los resultados de nuestro diagrama se muestran en la ventana Master Console. Adems podemos
ver el valor de nuestras variables (rea y radio) en la ventana Watch Window.

10
11
2 Smbolos 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 slo
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".

Descripcin Valor de X Programa

Cuando se inicia el programa, no existen variables. En RAPTOR, las


variables se crean automticamente cuando se utilizan por
Indefinido
primera vez en una sentencia.

La primera sentencia de asignacin, X32 asigna el valor de 32 a


32
X.

La siguiente sentencia de asignacin, XX+1, toma el valor de X


33
que es 32, y le suma 1, y asigna el resultado de 33 a la variable X.

La siguiente sentencia de asignacin, XX*2, toma el valor de X


que es 33, y lo multiplica por 2, y asigna el resultado de 66 a la 66
variable X.

Durante la ejecucin 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 asignacin,
los valores almacenados en X seran diferentes.

Todas las variables deben tener nombres significativos y descriptivos para el programador. Los nombres de variables deben
estar relacionados con el propsito para el cual sirve la variable en el programa. Un nombre de variable debe comenzar con
una letra y puede contener letras, dgitos y guiones bajos (pero sin espacios u otros caracteres especiales). Si un nombre de
variable contiene mltiples "palabras", el nombre es ms "legible" si cada palabra est separado por un carcter de
subrayado. La siguiente tabla muestra algunos ejemplos de buenas, malas, e ilegales nombres de variables.

Bien Mal Ilegal

sueldo_empleado a (no es descriptivo) 4sale (No debe empezar con digito)


peso_alumno millasporhora (agregar guin bajo) sales tax (No debe llevar espacios)
distance_kms my4to (no es descriptivo) sales$ (No debe llevar caracteres especiales)
iva

Cuando un programa RAPTOR comienza su ejecucin, no existen variables. La primera vez que RAPTOR se encuentra con un
nuevo nombre de variable, se crea automticamente una nueva localidad de memoria y se asocia este nombre de variable
con la nueva memoria. La variable existir desde ese punto de la ejecucin del programa hasta que el programa termina.
Cuando se crea una nueva variable, su valor inicial determina si la variable almacenar datos numricos o de texto. Esto se
llama tipo de datos de la variable. El tipo de datos de una variable no puede cambiar durante la ejecucin de un programa. En
resumen, las variables se crean automticamente por Raptor y pueden contener ya sea:

Nmeros como por ejemplo 12, 567, -4, 3.1415, 0.000371, o


Cadenas de caracteres (Strings) como, "Hola, cmo ests?", "James Bond", "El valor de x es"

12
2.2 Smbolo Input

El smbolo Input permite al usuario de un programa, introducir un valor cuando el programa se est ejecutando.

El smbolo Input lleva 2 valores, un texto entre comillas que contiene una descripcin 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 smbolo es lo siguiente:

13
2.3 Smbolo Assignment

El smbolo de asignacin se utiliza para realizar un clculo y asignar el resultado a una variable. El nombre de la variable se
escribe en Set y el clculo a realizar en to.

A continuacin se muestras los operadores aritmticos y funciones matemticas bsicas que podemos utilizar con el smbolo
Assignment. Si desea informacin ms completa, la puede consultar en la ayuda de Raptor presionando la tecla F1.

2.3.1 Operadores aritmticos


Operador Nombre Ejemplos
- Signo de negativo -5, -10.4
^ Potencia 4 ^ 2 es 16
* Multiplicacin 4 * 2 es 8
/ Divisin 4 / 2 es 2
4 rem 2 es 0
4 rem 3 es 1
rem Residuo
10 rem -3 es 1
-10 rem 3 es -1
+ Suma 4 + 2 es 6
- Resta 4 2 es 2

14
2.3.2 Funciones matemticas bsicas
Funcin Descripcin Ejemplos
abs(-3.7) es 3.7000
abs Valor absoluto abs(23) es 23
abs(-3) es 3
ceiling(15.9) es 16
ceiling(3.1) es 4
ceiling Redondea al entero mayor.
ceiling(-4.1) es -4
ceiling(23) es 23
e Constante e. e es 2.7183
floor(15.9) es 15
floor(3.1) es 3
floor Redondea al entero menor.
floor(-4.1) es -5
floor(23) es 23.
log(5) es 1.6094
log Logaritmo natural base e.
max Devuelve el mayor de 2 argumentos max(5,7) es 7
min Devuelve el menor de 2 argumentos min(5,7) es 5
pi Constante pi pi es 3.1416
random es 0.8965
random es 0.9999
random Devuelve un nmero aleatorio en el rango de 0 a 1 sin incluir el 1. random es 0.1934
random es 0.0

sqrt(5) es 2.2362
sqrt Raiz cuadrada
sqrt(9) es 3

2.3.3 Jerarqua operadores aritmticos


La jerarqua de los operadores aritmticos se refiere al orden en el cual se evaluar una expresin aritmtica. En la siguiente
tabla se muestra el orden de mayor a menor prioridad. Cuando varios operadores tienen la misma jerarqua como en el caso
de la suma y resta, o multiplicacin, divisin y rem, estos se evalan de izquierda a derecha.

( ) Parntesis
- Signo negativo
^ Potencia
* / rem Multiplicacin, Divisin y Residuo
+ - Suma y Resta

Observe bien las siguientes operaciones y vea el resultado de la expresin aritmtica segn la jerarqua de los operadores.

4+2*3 10
(4 + 2) * 3 18
10 / 2 * 3 15
10 * 2 / 4 5
4 + 2 * max(5,3) 14

15
2.4 Smbolo Output

El smbolo Output muestra un resultado o resultados en la Master Console. Normalmente primero se escribe un texto
encerrado entre comillas con una descripcin 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
smbolo. Para agregar un comentario hay que dar clic con el botn derecho del mouse sobre el smbolo y seleccionar la
opcin Comment que aparece en el men.

17
2.6 Ejemplos
2.6.1 Sumar 2 nmeros

2.6.2 rea de un crculo

18
2.6.3 Calcular cubo y raz de un nmero positivo

19
2.7 Ejercicios
Dado el costo de un artculo vendido y la cantidad de dinero entregada por el cliente, calcule e imprima el cambio
Ex201 que se debe entregar al mismo.

Dadas la base y la altura de un tringulo, calcule e imprima su rea.


Ex202
Calcular el rea y el volumen de una esfera.
Ex203
En un hospital existen tres reas: Ginecologa, Pediatra, Traumatologa. El presupuesto anual del hospital se reparte
conforme a la sig. tabla:

Area % del
Presupuesto
Ex204 Ginecologa 40%
Traumatologa 35%
Pediatra 25%

Obtener la cantidad de dinero que recibir cada rea, para cualquier monto presupuestal.

Un alumno desea saber cul ser su calificacin final en la materia de Fsica. Dicha calificacin se compone de los
siguientes porcentajes:
55% del promedio de sus tres calificaciones parciales.
Ex205
30% de la calificacin del examen final.
15% de la calificacin de un trabajo final.

Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas invierte una cantidad distinta.
Ex206 Obtener el porcentaje que cada quien invierte con respecto a la cantidad total invertida.

El dueo de una tienda compra un artculo a un precio determinado. Obtener el precio en que lo debe vender para
Ex207 obtener una ganancia del 30%.

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
Ex208
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
Ex209
cobrarle al cliente.

Dado como datos el radio y la altura de un cilindro, calcule e imprima el rea y su volumen.
Ex210
Construya un diagrama de flujo que calcule e imprima el nmero de segundos que hay en un determinado nmero
Ex211 de das.

Dados los tres lados de un tringulo, determine su rea. Esta la calculamos aplicando la siguiente frmula:

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
Dados 2 puntos en un plano cartesiano que forman un rectngulo, calcular su rea.
Ex214
Convertir un tiempo en segundos a H:M:S.
Ex215
Convertir de grados centgrados a grados Fahrenheit
Ex216
Evaluar la siguiente expresin
a + 7c
Ex217 + 2b
b+2a

Un vendedor recibe un sueldo base ms un 10% extra por comisin de sus ventas, el vendedor desea saber cunto
dinero obtendr por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibir en el
Ex218
mes tomando en cuenta su sueldo base y comisiones.

El costo de un automvil nuevo para el consumidor es la suma total del costo del vehculo, del porcentaje de
ganancia del vendedor y de los impuestos locales o estatales aplicables (sobre el precio de venta). Supngase una
Ex219 ganancia del vendedor del 12% en todas las unidades y un impuesto del 6%. Leer el costo del automvil e imprimir el
costo final para el consumidor.

Calcule e imprima el pago mensual para un vendedor de autos, basndose en lo siguiente:


El pago base es de $350, ms una comisin de $15 por cada auto vendido y un bono de $40 si vendi ms
de 15 autos.
Ex220 El impuesto a pagar es el 25% del pago total.
Los datos de entrada son el nombre del vendedor y el nmero de autos vendidos en el mes.
Se desea imprimir el nombre del vendedor, el sueldo bruto, el impuesto y el sueldo neto.

Dada un cantidad en pesos, obtener la equivalencia en dlares, asumiendo que la unidad cambiara es un dato
Ex221 desconocido.

Todos los lunes, mircoles y viernes, una persona corre la misma ruta y cronometra los tiempos obtenidos.
Ex222 Determinar el tiempo promedio que la persona tarda en recorrer la ruta en una semana cualquiera.

Convertir una temperatura en grados Centgrados a grados Fahrenheit.


Ex223
Un vendedor recibe un sueldo base ms un 10% extra por comisin de sus ventas, el vendedor desea saber cunto
dinero obtendr por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibir en el
Ex224
mes tomando en cuenta su sueldo base y comisiones.

Realizar un programa que calcule la edad de una persona.


Ex225

21
3 Smbolo Selection

3.1 Introduccin

Una sentencia de seleccin permite hacer "decisiones" en el cdigo sobre el estado actual de los datos del programa y luego
tomar uno de dos caminos alternativos para la siguiente sentencia a ejecutarse. El cdigo Raptor que se muestra ilustra una
sentencia de seleccin, 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 decisin 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 ejecutarn,
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 seleccin puede estar vaca o contener varias sentencias. No sera apropiado que
ambas opciones estn vacas o que ambas tengan las mismas sentencias exactas, porque entonces su decisin, S o No, no
tendra ningn efecto durante la ejecucin del programa (ya que nada diferente pasara sobre la base de la decisin).

Las decisiones o expresiones lgicas se forman utilizando los operadores relacionales, lgicos y aritmticos.

22
3.2 Formas diferentes de utilizar el smbolo Selection

23
3.3 Operadores relacionales
Operador Nombre Ejemplos
4 = 5 es False
= Igual
4 = 4 es True
4 > 5 es False
> Mayor
4 > 2 es True
4 < 5 es True
< Menor
4 < 2 es False
4 != 5 es True
!= Diferente
4 != 4 es False
4 >= 5 es False
>= Mayor o igual 4 >= 4 es True
4 >= 3 es True
4 <= 5 es True
<= Menor o igual 4 <= 4 es True
4 <= 3 es False

3.4

24
3.5 Operadores lgicos
Operador Nombre Ejemplo
Not No Not(4>5) es True
And Y (4 > 2) And (3*2<20) es True
Or O (4>2) Or (5<3) es True

Expresiones
A And B A Or B Not A
A B
True True True True False
True False False True False
False True False True True
False False False False True

25
3.6 Jerarqua operadores
La jerarqua de los operadores se refiere al orden en que se evala una expresin cuando estn involucrados
diferentes tipos de operadores.
Cuando varios operadores tienen la misma jerarqua como en el caso de la suma y resta, o multiplicacin, divisin y
rem, estos se evalan de izquierda a derecha.

Funciones
( )
^
* / rem
+-
> < >= <= != =
not
and
xor
or

4+2 > 5 + 1 False


4 > 2 and 4 > 1 True
7 rem 2 = 1 and 8 < 10 True
not(9<2) True
2^3 and 6=9 Expresin incorrecta

26
3.7 Ejemplos
3.7.1 Calificaciones versin 1.0

3.7.2 Calificaciones versin 2.0

27
3.7.3 Calificaciones versin 3.0

28
3.8 Ejercicios
Dado como datos la matrcula y 3 calificaciones de un alumno; imprima la matrcula, 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.

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.
Ex302
Horas extras 1.5 veces precio hora ordinaria (Despus de las 40 horas trabajadas)

Imprimir el costo de una llamada telefnica, capturando la duracin de la llamada en minutos y conociendo lo
siguiente :
Ex303 Toda llamada que dure tres minutos o menos tiene un costo de $5.
Cada minuto adicional cuesta $3

Dado como dato un nmero entero, determine e imprima si el mismo es positivo, negativo o cero.
Ex304
Dado un nmero entero A, determinar si el mismo es par, impar o nulo.
Ex305
Dado como datos de entrada tres nmeros enteros, determine si los mismos estn en orden ascendente.
Ex306
En una tienda efectan un descuento a los clientes dependiendo del monto de la compra. El descuento se efecta
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.
Ex307 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 pas el impuesto que se debe pagar por los artculos 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
Ex308 costo del producto es mayor a $500, entonces en lugar del 40% se cobra el 50%.
Leer el costo bsico de un artculo y calcule su precio total (precio total = precio bsico + impuesto).

Determinar el mayor de cuatro nmeros diferentes.


Ex309
Dado como datos tres nmeros enteros, identifique cul es el mayor. Considere que los nmeros pueden ser
Ex310 iguales.

El costo de las llamadas telefnicas internacionales depende de la zona geogrfica en la que se encuentre el pas
destino y del nmero de minutos hablados. En la siguiente tabla se presenta el costo del minuto por zona. A cada
zona se le ha asociado una clave.

Clave Zona Precio


Ex311 12 Canad 2.2
15 USA 1.8
17 Centroamrica 1.9
21 Sudamrica 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 categora del trabajador.

Categora Precio Hora


Extra
1 $30
Ex312
2 $35
3 $40
4 $47
Cada trabajador puede tener como mximo 30 horas extras, si tienen ms slo se les pagarn 30. A los trabajadores
con categora mayor a 4 no debemos pagarles horas extras.

En un hospital se ha hecho un estudio sobre los pacientes registrados durante los ltimos 10 aos, con el objeto de
hacer una aproximacin de los costos de internacin por paciente. Se obtuvo un costo promedio diario segn el tipo
de enfermedad que aqueja al paciente. Adems se pudo determinar que en promedio todos los pacientes con edad
entre 14 y 22 aos implican un costo adicional del 10%. La siguiente tabla expresa los costos diarios, segn el tipo de
enfermedad.
Tipo de Enfermedad Costo/Paciente/Da
Ex313 1 $80
2 $115
3 $145
4 $178

Calcular e imprimir el costo total que representa un paciente.

Conociendo los lados de un tringulo determinar si el equiltero, issceles o escaleno.


Ex314
Leer una hora en formato (horas, minutos, segundos) e indicar cul ser el tiempo dentro de un segundo.
Ex315
Leer tres nmeros enteros y, si el primero de ellos es negativo, calcular el producto de los tres, en caso contrario
Ex316 calcular la suma de ellos.

Sea un sistema de ecuaciones de la forma:


+ =
+ =
que puede resolverse usando las siguientes frmulas:
Ex317 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 solucin.

En un supermercado se hace una promocin, mediante la cual el cliente obtiene un descuento dependiendo de un
nmero que se escoge al azar. Si el nmero escogido es menor que 50 el descuento es del 15% sobre el total de la
Ex318
compra, si es mayor o igual a 50 el descuento es del 20%. Obtener cunto dinero se le descuenta.

Leer tres nmeros diferentes y determine el nmero medio del conjunto de los tres nmeros (el nmero medio es
Ex319 aquel nmero que no es ni mayor, ni menor).

Escribir un programa que pida un ao y diga si es bisiesto o no.

Ex320 Nota: Un ao es bisiesto si es mltiplo de 4 salvo el caso en que sea mltiplo de 100, que no es bisiesto, y no sea
mltiplo de 400. Por ejemplo, el ao 1900 no fue bisiesto, el 2000 s y el 2100 no lo es.

Leer tres nmeros 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
En un supermercado se hace una promocin, mediante la cual el cliente obtiene un descuento dependiendo de un
nmero que se escoge al azar. Si el nmero escogido es menor que 50 el descuento es del 15% sobre el total de la
Ex322
compra, si es mayor o igual a 50 el descuento es del 20%. Obtener cunto dinero se le descuenta.

Una empresa de bienes races ofrece casas de inters 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 aos. Si los ingresos del comprador son de $800,000 o ms la cuota inicial ser del
Ex323 30% del costo de la casa y el resto se distribuir en pagos mensuales a pagar en 7 aos.
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 promocin de las llantas marca Hancock, dicha promocin 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
Ex324 de $115 si se compran ms 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 nmeros diferentes y determine el nmero medio del conjunto de los tres nmeros (el nmero medio
Ex325 es aquel nmero que no es ni mayor, ni menor).

31
4 Smbolo Loop

4.1 Introduccin

Una sentencia Loop permite repetir una o ms sentencias mientras una condicin 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 smbolo Loop se repite mientras la condicin sea verdadera. Cuando la condicin se hace falso, se termina.

Para que el smbolo Loop se repita mientras la condicin sea verdadera se debe seleccionar la opcin Object-oriented del
men Mode, esta es la forma en la que se va a trabajar con este smbolo ya que en el lenguaje de programacin Java, as es
como trabajan los ciclos. Si no configuramos esta opcin, el smbolo Loop se va a repetir mientras la condicin sea falsa.

32
4.2 Contador
Un contador es una variable que se utiliza para llevar la cuenta de algo en particular (nmero de estudiantes, nmero de
aprobados, etc). El contador primero se debe inicializar y posteriormente se va incrementado de 1 en 1.

En el siguiente diagrama, el smbolo Loop repite 5 veces la palabra Hola, para ello utilizamos la variable contador c, que es la
que lleva la cuenta del nmero de repeticiones. El smbolo Loop se repite mientras c sea menor o igual a 5.

33
4.3 Acumulador
Un acumulador es una variable que despus 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 nmeros aleatorios.

34
4.4 Formas diferentes de utilizar Loop
El smbolo Loop lo podemos utilizar de 2 formas diferentes:

Contador. Utilizando una variable contador para que se repita un determinado nmero de veces. Como es el caso de
los ejemplos anteriores.
Valor bandera. Utilizando una variable cuya condicin mientras sea verdadera se repita.

35
4.5 Ejemplos
4.5.1 Contar nmero de aprobados y reprobados de 5 calificaciones

36
4.5.2 Sumar una lista de gastos

37
4.5.3 Leer lista de nmeros y mostrar la suma de los positivos y la suma de los negativos

38
4.6 Ejercicios
Mostrar la serie: 1 2 3 4 5 20
Ex401
Mostrar la serie: 50 49 48 47 3 2 1 0
Ex402
Mostrar la serie: 0 2 4 6 8 . 100
Ex403
Mostrar la serie de n1 a n2 con incrementos de n
Ex404
Mostrar una tabla que muestre el cuadrado y el cubo de una lista de nmeros del 1 al 10
Ex405
Dado como datos 5 nmeros enteros, obtenga la suma de los nmeros impares y el promedio de los nmeros
Ex406 pares.

Mostrar la tabla de multiplicar de un nmero entre 1 y 10.


Ex407
Obtenga la suma e imprima los trminos de la siguiente serie:
Ex408 2 ,5 , 7, 10, 12,15, 17, ... 1 800

Generar y mostrar una lista de nmeros aleatorios en el rango de 0 a 10. El diagrama de flujo deber terminar
Ex409 cuando el nmero 3 se haya mostrado 3 veces.

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%
Ex410 Si el sueldo es mayor o igual a $1 000 : Aumento 12%
Imprima el sueldo nuevo del trabajador y el total de nmina de la empresa, considerando este nuevo aumento. Se
termina cuando se introduzca un sueldo negativo.

Dado N nmeros enteros como dato hacer lo siguiente:


a) Obtenga cuntos nmeros ledos fueron mayores que cero.
Ex411 b) Calcule el promedio de los nmeros positivos.
c) Obtenga el promedio de todos los nmeros.

Dado N nmeros enteros como dato, calcule el mayor y el menor de estos nmeros.
Ex412
Un vendedor ha hecho N ventas y desea conocer aquellas de $200 o menos, las mayores a $200 pero inferiores a
$400, y el nmero de ventas de $400 o superiores a tal cantidad. Haga un diagrama de flujo que le proporcione al
Ex413
vendedor esta informacin despus de haber ledo los datos de entrada.

La siguiente se llama la conjetura de ULAM en honor del matemtico S. Ulam:


Comience con cualquier entero positivo
Si es par, divdalo entre 2; si es impar, multiplquelo por 3 y agrguele 1.
Obtenga enteros sucesivamente repitiendo el proceso.
Ex414
Al final, obtendr el nmero 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 sucesin de ULAM.

39
Supngase que en una reciente eleccin hubo cuatro candidatos (con identificadores 1, 2, 3, 4). Usted habr de
encontrar, mediante un programa, el nmero 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 eleccin, el final de datos est representado por un cero. Observe, como ejemplo, la siguiente
lista:
Ex415
13142214111213140

Donde 1 representa un voto para el candidato 1; 3 un voto para el candidato 3; y as sucesivamente.

Leer una lista de calificaciones y mostrar:


Nmero de aprobados
Nmero de reprobados
Ex416 Cuantas calificaciones fueron 10
Promedio general
El diagrama de flujo deber terminar cuando se introduzca una calificacin negativa

Generar y mostrar una lista de nmeros aleatorios en el rango de 0 a 5. El diagrama de flujo terminar cuando
Ex417 salgan 2 nmeros consecutivos iguales.

Calcular lo que hay que pagar por un conjunto de llamadas telefnicas. Por cada llamada se ingresa el tipo
(Internacional, Nacional, Local) y la duracin 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
Ex418
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.


Ex419
Disee un diagrama que lea los 100 votos otorgados a los 3 candidatos a gobernador e imprima el nmero del
Ex420 candidato ganador y su cantidad de votos. Utilice nmeros aleatorios.

Al cerrar un expendio de naranjas, 15 clientes que an no han pagado recibirn un 15% de descuento si compran
Ex421 ms de 10 kilos. Determinar cunto pagara cada cliente y cuanto percibir la tienda por esas compras.

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 (divisin entera entre 2) de la altura ms uno.
*
Ex422
*
*
***
Hacer un diagrama que muestre por pantalla todos los nmeros enteros positivos menores a uno ledo por teclado
Ex423 que no sean divisibles entre otro tambin ledo de igual forma.

Escribe un diagrama que muestre, cuente y sume los mltiplos de 3 que hay entre 1 y un nmero ledo por teclado.
Ex424
Realiza un programa que pida primero un nmero y a continuacin un dgito. El programa nos debe dar la posicin
Ex425 (o posiciones) contando de izquierda a derecha que ocupa ese dgito en el nmero introducido.

40
5 Introduccin a las computadoras y Java

5.1 Teora
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 programacin


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 Especificacin 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 programacin de propsito general, concurrente, orientado a objetos que fue diseado
especficamente para tener tan pocas dependencias de implementacin como fuera posible. Su intencin es permitir que los
desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido en ingls como
WORA, o "write once, run anywhere"), lo que quiere decir que el cdigo 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 programacin ms populares en uso,
particularmente para aplicaciones de cliente-servidor de web, con unos 10 millones de usuarios reportados.

El lenguaje de programacin Java fue originalmente desarrollado por James Gosling de Sun Microsystems (la cual fue
adquirida por la compaa 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
mquina 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 mtodo main en la clase. El ejemplo muestra el mensaje Hola Mundo. Bienvenidos
a la programacin en Java. en la consola. El trmino consola est asociado con el teclado y la pantalla de la computadora.

1 package fundamentos;
2
3 // Este es un programa simple en Java
4 public class Simple {
5
6 public static void main(String[] args) {
7 System.out.println("Hola Mundo. Bienvenidos a la programacin en Java.");
8 }
9 }

Hola Mundo. Bienvenidos a la programacin en Java.


_

Un paquete es una forma de organizar grupos de clases


En el ejemplo la clase Simple se guarda en el paquete fundamentos. El
paquete fundamentos est asociado a una carpeta y dentro de ella
package 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
comentarios // es para indicar un comentario de una sola lnea
/* y */ es para escribir comentarios de varias lneas

class define una clase en Java


Cada programa de Java debe tener al menos una clase
Una clase en Java por convencin deber de iniciar con una letra
class
mayscula
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 es el mtodo principal de una clase en Java, a partir del cual se
empieza a ejecutar el programa.
Una clase de Java puede tener varios mtodos, pero main, es el mtodo
principal.
main
Un mtodo 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.

class, static, void, package, public son palabras reservadas


Las palabras reservadas tienen un significado y funcin especfica dentro
Palabras reservadas
de Java que no pueden ser utilizadas para otros propsitos diferentes

Hay que tener cuidado con las maysculas y minsculas cuando


escribimos un programa. Por ejemplo el mtodo principal se debe escribir
como main, cualquier otra forma de escribirlo Main, MAIN, etc ser
Letras maysculas y minsculas
incorrecto. Lo mismo para con las palabras reservadas, estas siempre van
escritas en minsculas.

Las llaves en Java forman un bloque de cdigo.


En este ejemplo, hay dos pares de llaves, el primer par delimita el bloque
de cdigo que contiene la clase Simple. El segundo par delimita el bloque
{ } de cdigo del mtodo main.
El mtodo main pertenece a la clase Simple porque est dentro de las
llaves de la clase Simple.

println es un mtodo que nos permite mostrar un mensaje en pantalla


Los mensajes que mostramos con el mtodo println, deben estar
println
encerrados entre comillas

El punto y coma marca el final de una sentencia.


;

1 package fundamentos;
2
3 /* Otro programa
4 simple en
5 Java */
6 public class SimplePrintln {
7
8 public static void main(String[] args) {
9 System.out.println("Hola Mundo.");
10 System.out.println("Bienvenidos a la programacin en Java.");
11 }
12 }

Hola Mundo.
Bienvenidos a la programacin en Java.
_

45
46
5.4 Palabras reservadas de Java

47
5.5 Creando, compilando y ejecutando un programa en Java
A continuacin 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 (cdigo 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 (cdigo fuente) deben de tener la extensin .java

2 Compilar. En el siguiente paso compilamos nuestro programa. La compilacin genera a partir del cdigo
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
3 Ejecutar. En el ltimo paso ejecutamos nuestro archivo en Bytecode Welcome.class para que nos muestre
el resultado de nuestro programa.
Java Welcome

En las siguientes dos figuras se resume todo el proceso para crear un programa en java, compilar y ejecturar.

48
49
5.6 Descargar e instalar Java y NetBeans
Para poder trabajar con Java en nuestra computadora personal, primero lo tenemos que instalar. Java es gratuito. Para
descargarlo hay que escribir en el buscador Google, download java se y dar clic al primer resultado que nos muestra.

Una vez que estamos en la pgina de Oracle, dar clic a la imagen NeatBeans. Esta opcin nos permite instalar el Java y al
mismo tiempo instalar el editor NetBeans.

NetBeans es un editor que nos permite de una manera rpida 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 opcin Java y de Projects la opcin Java Application. Clic al botn Next

Enseguida en la opcin Project Name escribimos el nombre de nuestro proyecto y desmarcamos la opcin Create
Main Class. Clic al botn de Finish. El botn 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
evaluacin durante el curso. Para hacerlo, clic con el botn derecho del mouse sobre el proyecto, seleccionamos
New y Java Package. Despus escribimos el nombre de nuestro paquete parcial1 (Por reglas de convencin
los nombres de los paquetes siempre van escritos en minsculas).

53
Ahora para crear un programa, clic con el botn derecho del mouse sobre el nombre del paquete parcial1 y
seleccionamos la opcin New\Java Class, enseguida escribimos el nombre de nuestra clase Ejemplo y clic al
botn Finish (Recuerde que por reglas de convencin la primera letra del nombre de clase va en mayscula).

54
55
Una vez escrito nuestro programa, para ejecutarlo, clic con el botn derecho del mouse sobre el nombre de la clase y
seleccionamos la opcin Run File.

56
5.8 Convenciones de cdigo Java
Las convenciones de cdigo Java se refiere a la forma en que escribimos nuestros programas. Algunos aspectos que cubre
son:

El uso de comentarios
La sangra y espacio entre las variables y operadores
Los bloques de cdigo
Nombres de variables
Uso de maysculas y minsculas
Etc.

Es importante que se fije en la forma que estn escritos los programas de ejemplo y copie el estilo de los mismos en sus
programas.

Las convenciones de cdigo son importantes para los programadores por un gran nmero de razones:

El 80% del coste del cdigo de un programa va a su mantenimiento.


Casi ningn software lo mantiene toda su vida el auto original.
Las convenciones de cdigo mejoran la lectura del software, permitiendo entender cdigo nuevo mucho ms
rapidamente y ms a fondo.
Si distribuyes tu cdigo 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 convencin.

En la siguiente direccin de internet puede descarga el documento completo de las convenciones o puede buscar en Google
escribiendo Convenciones de cdigo java:

http://blog.codexion.com/wp-content/uploads/2010/02/Convenciones_Codigo_Java.pdf

57
5.9 Errores de programacin
Los errores de programacin se pueden clasificar en 3 tipos: errores de compilacin, ejecucin y lgica.

5.9.1 Errores de compilacin


Los errores de compilacin, tambin conocidos como errores del compilador, son errores que impiden que el programa se
ejecute.

La mayora de los errores del compilador se deben a errores cometidos al escribir el cdigo. Por ejemplo en el siguiente
programa se omiti escribir void en la lnea 5 y cerrar comillas en la lnea 6.

5.9.2 Errores de ejecucin


Los errores en tiempo de ejecucin son errores que aparecen mientras se ejecuta su programa. Estos errores aparecen
normalmente cuando su programa intenta una operacin que es imposible que se lleve a cabo.

Un ejemplo de esto es la divisin por cero.

58
5.9.3 Errores de lgica
Los errores lgicos son errores que impiden que el programa haga lo que estaba previsto. Su cdigo puede compilarse y
ejecutarse sin errores, pero el resultado de una operacin puede generar un resultado no esperado. En el ejemplo siguiente
el clculo del promedio muestra un resultado incorrecto porque la suma de las variables num1, num2 y num3 debe ir
encerrado entre parntesis.

59
5.10 Ejercicios
(Display three messages) Write a program that displays Welcome to Java, Welcome to Computer Science, and
Ex501 Programming is fun.

(Display five messages) Write a program that displays Welcome to Java five time
Ex502
(Display a pattern) Write a program that displays the following pattern:

Ex503

60
6 Programacin Elemental

6.1 Ejemplo simple


1 package entradasalida;
2
3 public class CirculoArea {
4 public static void main(String[] args) {
5 double radio;
6 double area;
7
8 radio = 20;
9
10 area = radio * radio * 3.14159;
11
12 System.out.println("El rea para el crculo de radio " +
13 radio + " es de " + area);
14 }
15 }

El rea para el crculo de radio 20.0 es de 1256.636


_

Programas Escribir un programa requiere de disear una estrategia para resolver un programa y entonces
utilizar un lenguaje de programacin para implementar esa estrategia.

Algoritmos El algoritmo en general para resolver los diferentes problemas bsicos de esta parte del curso
consta de 3 pasos:
Leer datos
Hacer operaciones
Mostrar resultados
Escribir un programa involucra disear un algoritmo y traducir este algoritmo en instrucciones de
programacin o cdigo.

class y main Cada programa inicia con la definicin de una clase en el cual se escribe la palabra
reservada class seguida del nombre de la clase
Cada programa debe tener un mtodo main a partir del cual se empieza a ejecutar
nuestro programa

double radio; En esta parte del programa se declaran 2 variables de tipo double
double area; Una variable de tipo double nos permite guardar nmeros con fraccin decimal
Las variables siempre se deben declarar antes de utilizarse

Operador = La lnea radio = 20 permite asignar el valor de 20 a la variable radio


La lnea area = radio * radio * 3.14159 permite hacer una operacin aritmtica utilizando
el valor de la variable radio y asignar el resultado a la variable area

println y print El mtodo 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 mtodo println muestra un mensaje y el cursor se muestra en el siguiente rengln
El mtodo 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 package entradasalida;
2
3 public class SecuenciasEscape {
4 public static void main(String[] args) {
5 System.out.println("Hola\nComo\nEstas\n\tFin del texto");
6 System.out.println("\"Java\"");
7
8 System.out.print("Programacin ");
9 System.out.print("en ");
10 System.out.print("Java");
11 }
12
13 }
Hola
Como
Estas
Fin del texto
"Java"
Programacin en Java_

63
6.3 Leyendo datos del teclado
Este programa permite calcular el rea de un crculo, el valor del radio es introducido por el usuario desde el teclado.

1 package entradasalida;
2
3 import java.util.Scanner;
4
5 public class CirculoArea2 {
6 public static void main(String[] args) {
7 Scanner input = new Scanner(System.in);
8
9 System.out.print("Escribir el valor del radio: ");
10 double radio = input.nextDouble();
11
12 double area = radio * radio * 3.14159;
13
14 System.out.println("El rea para el cculo de radio " +
15 radio + " es de " + area);
16 }
17 }

Escribir el valor del radio: 20


El rea para el cculo 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 estndar que es el teclado y System.out
para referirse a la salida estndar 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 vlido (entrada, leer,..) no
necesariamente se tiene que llamar input
El mtodo nextDouble() indica que vamos a leer un dato de tipo double (Un nmero que
puede contener fraccin decimal)

64
Ejemplo de cmo leer 3 nmeros introducidos desde el teclado y mostrar el promedio.

1 package entradasalida;
2
3 import java.util.Scanner;
4
5 public class Promedio3 {
6 public static void main(String[] args) {
7 Scanner input = new Scanner(System.in);
8
9 System.out.print("Escribir 3 nmeros: ");
10 double numero1 = input.nextDouble();
11 double numero2 = input.nextDouble();
12 double numero3 = input.nextDouble();
13
14 double promedio = (numero1 + numero2 + numero3) / 3;
15
16 System.out.println("El promedio de " + numero1 + " " + numero2
17 + " " + numero3 + " es " + promedio);
18 }
19
Escribir 3 nmeros: 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, mtodos y variables
en un programa.

Reglas:

Un identificador es una secuencia de caracteres que consiste de letras, dgitos, guion bajo ( _ ) y signo de peso ( $ ).
Un identificador debe comenzar con una letra, guin bajo ( _ ) o signo de peso ( $ ). NO puede comenzar con un
dgito.
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 maysculas y minsculas, 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 ejecucin 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 Declarar varias variables al mismo Declarar e inicializar una variable
tiempo
double sueldo; double sueldo, altura; double sueldo = 5000;
double altura; Int edad, das, alumnos; double altura = 1.80;
int edad; int edad = 25;

67
6.6 Constantes
Una constante es un identificador que representa un valor que no cambia durante la ejecucin de un programa.
Las constantes se declaran como final tipo_dato NOMBRECONSTANTE = value;
Los nombres de las constantes por convencin se escriben en MAYUSCULAS

1 double precio = 100;


2 final double IVA = 0.16;
3 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 ms fciles de leer y evita
cometer errores. Los nombres que se elijan para las variables, clases, constantes y mtodos deben ser descriptivos, sencillos
y con significado. Como se mencion anteriormente se debe tener cuidado con las minsculas y maysculas, ya que Java las
trata de forma diferente.

Utilice minsculas para los nombre de variables y mtodos. Si un nombre tiene varias palabras, la primera palabra se
escribe con minsculas y la primera letra de la segunda parabra con mayscula. Ejemplos: area, peso, alturaAlumno,
sueldoTrabajador.
En el nombre de las clases la primera letra se debe escribir en mayscula. Ejemplo: Escuela, AreaCirculo,
EjemploOperaciones.
Los nombre de las constantes van en maysculas. Ejemplo: IVA, IMPUESTO, AUMENTO.

69
6.8 Tipos de datos numricos
Tipo de Dato Bytes Rango Ejemplos
byte 1 128 a +127 -90, 80, 0, 75, -120
short 2 32,768 a +32,767 0, -3, -30000,25908,45
int 4 2,147,483,648 a +2,147,483,647 26453, 9,-834223
9,223,372,036,854,775,808 a
long 8 8374482233742,-2,99883
+9,223,372,036,854,775,807
38 38
float 4 3.4 10 a 3.4 10 con 7 dgitos de precisin 2.5, -0.00001, 9, 8929934.9087
308 308
double 8 1.7 10 a 1.7 10 con 15 dgitos de precisin 343434354.0994, -2, 90.89

6.8.1 Como leer nmeros del teclado


Para leer datos con el teclado utilizamos la clase Scanner. El mtodo utilizado para leer estos datos depende del tipo de dato
de la variable.

1 Scanner input = new Scanner(System.in);


2
3 System.out.print("Enter a byte value: ");
4 byte byteValue = input.nextByte();
5
6 System.out.print("Enter a short value: ");
7 short shortValue = input.nextShort();
8
9 System.out.print("Enter an int value: ");
10 int intValue = input.nextInt();
11
12 System.out.print("Enter a long value: ");
13 long longValue = input.nextLong();
14
15 System.out.print("Enter a float value: ");
16 float floatValue = input.nextFloat();

70
6.8.2 Operadores aritmticos

1 package entradasalida;
2
3 import java.util.Scanner;
4
5 public class DisplayTime {
6 public static void main(String[] args) {
7 Scanner input = new Scanner(System.in);
8
9 System.out.print("Enter an integer for seconds: ");
10 int seconds = input.nextInt();
11
12 int minutes = seconds / 60; // Find minutes in seconds
13 int remainingSeconds = seconds % 60; // Seconds remaining
14 System.out.println(seconds + " seconds is " + minutes +
15 " minutes and " + remainingSeconds + " seconds");
16 }
17 }

Enter an integer for seconds: 500


500 seconds is 8 minutes and 20 seconds

Ejemplos de cmo trabaja el operador %. Por ejemplo 7 % 3 da como resultado 1.

71
1 package entradasalida;
2
3 public class ShowCurrentTime {
4 public static void main(String[] args) {
5 // Obtain the total milliseconds since midnight, Jan 1, 1970
6 long totalMilliseconds = System.currentTimeMillis();
7
8 // Obtain the total seconds since midnight, Jan 1, 1970
9 long totalSeconds = totalMilliseconds / 1000;
10
11 // Compute the current second in the minute in the hour
12 long currentSecond = totalSeconds % 60;
13
14 // Obtain the total minutes
15 long totalMinutes = totalSeconds / 60;
16
17 // Compute the current minute in the hour
18 long currentMinute = totalMinutes % 60;
19
20 // Obtain the total hours
21 long totalHours = totalMinutes / 60;
22
23 // Compute the current hour
24 long currentHour = totalHours % 24;
25
26 // Display results
27 System.out.println("Current time is " + currentHour + ":"
28 + currentMinute + ":" + currentSecond + " GMT");
29 }
30 }

Current time is 23:17:29 GMT

72
6.8.3 Evaluar expresiones y jerarqua de operadores aritmticos
Cuando Java evala una expresin aritmtica aplica las siguientes reglas, segn este orden:

1) Primero se evala lo que est entre parntesis


2) Despus se evala la multiplicacin (*), divisin (/) y residuo (%). Cuando hay varios de estos operadores aritmticos
en la misma expresin, se evalan de izquierda a derecha.
3) Por ltimo la suma (+) y la resta(-).Cuando hay varios de estos operadores aritmticos en la misma expresin, se
evalan de izquierda a derecha.

1 package entradasalida;
2
3 import java.util.Scanner;
4
5 public class FahrenheitToCelsius {
6 public static void main(String[] args) {
7 Scanner input = new Scanner(System.in);
8
9 System.out.print("Enter a degree in Fahrenheit: ");
10 double fahrenheit = input.nextDouble();
11
12 double celsius = (5.0 / 9) * (fahrenheit - 32);
13 System.out.println("Fahrenheit " + fahrenheit + " is " +
14 celsius + " in Celsius");
15 }
16 }

Enter a degree in Fahrenheit: 100


Fahrenheit 100.0 is 37.77777777777778 in Celsius

73
6.8.4 Literales numricas
Una literal es un valor constante que aparece directamente en el programa.

10, 98, -1000,80 Cualquier valor entero se considera por default de tipo int
-9.2, 80.456, 8.0 Cualquier valor con decimal se considera por default de tipo double
0B11001 Cualquier valor que empiece con 0B o 0b se considera un nmero binario
07612 Cualquier valor que empiece con 0 se considera un nmero octal
0XAB1, 0xFF Cualquier valor que empiece con 0X o 0x se considera un nmero hexadecimal
100.79F Cualquier valor que termine con F o f se considera un nmero float
9000000L Cualquier valor que termine con L o l, se considera un numero long
1.2E3 Equivale al nmero 1200
1.2E-3 Equivale al nmero 0.0012

6.8.5 Operadores de asignacin, incremento y decremento


Los operadores +, -, *, / y % se pueden combinar con el operador de asignacin para crear un nuevo tipos de operador de
asignacin 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 representacin en forma int de 32 bits, por razones de eficacia, por lo tanto permite la
conversin automtica o promocin donde el tipo ms pequeo puede ser colocado en el espacio compatible ms 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 conversin explcita, estrechamiento o casting:

1 int a=100;
2 byte b= (byte) a;

El casting se utiliza cuando Java no puede realizar automticamente la conversin 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 conversin explcita y se realiza anteponiendo al tipo origen el nombre del tipo al que se desea realizar
la conversin entre parntesis:

int intValue= (int) floatValue;

El casting es automtico desde los tipos de pequea ocupacin a los de gran ocupacin:

longValue=intValue; // Permitido. El tipo convertido es menor que el tipo hacia el que se convierte
longValue= (int) intValue; // Escrito de forma explcita, no necesario para este caso, pero correcto

Sin embargo si se quiere hacer la conversin a un tipo ms pequeo:

intValue=longValue; // El compilador nos lanzara un error


intValue=(int) longValue; // Esta permitido, sin embargo corremos el riesgo de prdida de datos

En las operaciones pueden entremezclarse cualesquiera tipos decimales, pero el resultado se promociona a un tipo que no d
problemas de desbordamiento:

Si solo intervienen tipos byte, short, int el resultado es int.


Si interviene un tipo long el resultado es long.
Si interviene un tipo float el resultado es float.
Si interviene un tipo double el resultado es double.

1 package entradasalida;
2
3 public class Casting {
4 public static void main(String[] args) {
5 byte valorByte = 20;
6 int valorInt = valorByte; // Casting en automtico
7
8 int valorInt2 = 20;
9 //byte valorByte2 = valorInt2; // ERROR
10 byte valorByte2 = (byte) valorInt2; // Hay que hacer casting
11
12 System.out.println(5/2); // El resultado es 2
13 System.out.println(5.0/2); // El resultado es 2.5
14 }
15 }

75
6.9 Clase Math
Java tiene la clase Math que pertenece al paquete java.lang, que contiene diferentes mtodos para realizar clculos
matemticos.

1 package entradasalida;
2
3 public class ClaseMath {
4 public static void main(String[] args) {
5 double num = 3;
6 System.out.println("Raiz cuadrada: " + Math.sqrt(num));
7 System.out.println("Potencia de 2: " + Math.pow(num,2));
8 System.out.println("Potencia de 5: " + Math.pow(num,5));
9 System.out.println("Raiz de 5: " + Math.pow(num,1.0/5));
10 System.out.println("Numero aleatorio: " + Math.random());
11 System.out.println("Numero aleatorio: " + Math.random());
12 System.out.println("Numero aleatorio: " + Math.random());
13 System.out.println("Nmero aleatorio entre 0 y 10: " + (int) (Math.random()*11));
14 System.out.println("Mtodo ceil: " + Math.ceil(5.6));
15 System.out.println("Mtodo ceil: " + Math.ceil(5.3));
16 System.out.println("Mtodo floor: " + Math.floor(5.6));
17 System.out.println("Mtodo floor: " + Math.floor(5.3));
18 System.out.println("Constante PI: " + Math.PI);
19 System.out.println("Mayor de 2 nmeros: " + Math.max(5,4));
20 System.out.println("Menor de 2 nmeros: " + Math.min(5,4));
21 }
22 }

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
Nmero aleatorio entre 0 y 10: 8
Mtodo ceil: 6.0
Mtodo ceil: 6.0
Mtodo floor: 5.0
Mtodo floor: 5.0
Constante PI: 3.141592653589793
Mayor de 2 nmeros: 5
Menor de 2 nmeros: 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 apstrofes (comillas simples).

1 package entradasalida;
2
3 public class TipoChar {
4 public static void main(String[] args) {
5 char letter;
6
7 letter = 'A';
8 System.out.println(letter);
9 letter = 'B';
10 System.out.println(letter);
11 }
12 }
13
A
B

Cuando queremos leer un carcter del teclado, lo que hacemos es leer una cadena de caracteres utilizando nextLine( ) y
llamamos al mtodo chartAt() que nos toma el primer carcter de la cadena que acabamos de escribir.

1 String input;
2 char answer;
3 Scanner keyboard = new Scanner(System.in);
4
5 System.out.print("Are you having fun? (Y=yes, N=no) ");
6 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 lgicas).

1 package entradasalida;
2
3 public class TipoBoolean {
4
5 public static void main(String[] args) {
6 boolean bool;
7
8 bool = true;
9 System.out.println(bool);
10 bool = false;
11 System.out.println(bool);
12 System.out.println("5 > 2 : " + (5>2));
13 System.out.println("5 < 2 : " + (5<2));
14 }
15 }
16
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 mtodos que permiten manipular las cadenas
de caracteres.

1 package entradasalida;
2
3 public class ClaseString {
4 public static void main(String[] args) {
5 String nombre = "Jose Francisco";
6 System.out.println("Maysculas: " + nombre.toUpperCase());
7 System.out.println("Minsculas: " + nombre.toLowerCase());
8 System.out.println("# de caracteres: " + nombre.length());
9 System.out.println("Posicin 0: " + nombre.charAt(0));
10 System.out.println("Posicin 5: " + nombre.charAt(5));
11 System.out.println("Comparar por igualdad: " + nombre.equals("Jose"));
12 System.out.println("Comparar por igualdad: " + nombre.equals("Jose Francisco"));
13 System.out.println("Extraer subcadena: " + nombre.substring(2,4));
14 System.out.println("Extraer subcadena: " + nombre.substring(5,8));
15 System.out.println("Concatenar: " + nombre.concat(" Rojero"));
16 }
17 }

Maysculas: JOSE FRANCISCO


Minsculas: jose francisco
# de caracteres: 14
Posicin 0: J
Posicin 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 String name;
2 Scanner keyboard = new Scanner(System.in);
3 System.out.print("Enter your name: ");
4 name = keyboard.nextLine();

79
6.13 Cajas de dilogo
La clase JOptionPane visualiza una caja de dilogo para mostrar o solicitar datos al usuario. La clase JOptionPane pertenece al
paquete javax.swing.

A partir de la versin 8 se recomienda utilizar las clases Alert o TextInputDialog para mostrar cajas de dilogo. Estas clases
pertenecen a JavaFX.

1 package entradasalida;
2
3 import javax.swing.JOptionPane;
4
5 public class CajasDialogo {
6 public static void main(String[] args) {
7 String nombre;
8 int horasTrabajadas;
9 double sueldoHora;
10 double sueldo;
11
12 nombre = JOptionPane.showInputDialog("Como te llamas");
13 horasTrabajadas = Integer.parseInt(JOptionPane.showInputDialog("Cuantas horas
trabajaste"));
14 sueldoHora = Double.parseDouble(JOptionPane.showInputDialog("Cuanto ganas por hora"));
15
16 sueldo = horasTrabajadas * sueldoHora;
17
18 JOptionPane.showMessageDialog(null, "Hola " + nombre + "\nTu sueldo es de " + sueldo);
19 }
20
21 }

80
6.14 Ayuda de Java
Java ofrece una muy completa documentacin donde podemos consultar informacin acerca de alguna clase o mtodo que
nos interese conocer. Para consultar esta ayuda en internet hacemos lo que se muestra en las siguientes imgenes.

81
Otra forma de consultar la documentacin de java y en la cual no es necesario estar conectado a internet, es descargando un
archivo en formato .chm que contiene toda la documentacin de Java de la direccin http://www.allimant.org/javadoc/

Esta forma de consultar la ayuda de Java, nos permite realizar la bsqueda de una clase o mtodo de una manera ms
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:

a String variable named name


an int variable named age
a double variable named annualPay
Ex602
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

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
Ex609
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
(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
Ex613 (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

(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:
Ex614
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

(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
33 2
=
2
Ex616 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:

Ex620 Enter the driving distance: 900.5


Enter miles per gallon: 25.5
Enter price per gallon: 3.55
The cost of driving is $125.36

String Manipulator

Write a program that asks the user to enter the name of his or her favorite city. Use a String variable to store the
input. The program should display the following:
Ex621
The number of characters in the city name
The name of the city in all uppercase letters
The name of the city in all lowercase letters
The first character in the name of the city

Word Game

Write a program that plays a word game with the user. The program should ask the user to enter the following:

His or her name


His or her age
The name of a city
The name of a college
Ex622 A profession
A type of animal
A pets name

After the user has entered these items, the program should display the following story, inserting the users 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: Ginecologa, Pediatra, Traumatologa. El presupuesto anual del hospital se reparte
conforme a la sig. tabla:

Area % del Presupuesto


Ginecologa 40%
Traumatologa 35%
Pediatra 25%

Obtener la cantidad de dinero que recibir cada rea, para cualquier monto presupuestal

Ex624 Un alumno desea saber cul ser su calificacin final en la materia de Fsica. Dicha calificacin se compone de los
siguientes porcentajes:
55% del promedio de sus tres calificaciones parciales.
30% de la calificacin del examen final.
15% de la calificacin de un trabajo final.

Ex625 Un vendedor recibe un sueldo base ms un 10% extra por comisin de sus ventas, el vendedor desea saber cunto
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 automvil nuevo para el consumidor es la suma total del costo del vehculo, del porcentaje de
ganancia del vendedor y de los impuestos locales o estatales aplicables (sobre el precio de venta). Supngase una
ganancia del vendedor del 12% en todas las unidades y un impuesto del 6%. Leer el costo del automvil e imprimir
el costo final para el consumidor.

Ex627 Calcule e imprima el pago mensual para un vendedor de autos, basndose en lo siguiente:
El pago base es de $350, ms una comisin de $15 por cada auto vendido y un bono de $40 si vendi ms
de 15 autos.
El impuesto a pagar es el 25% del pago total.
Los datos de entrada son el nombre del vendedor y el nmero 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 expresin


a + 7c
+ 2b
b+2a

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 Introduccin
Un programa puede decidir cul sentencia ejecutar en base a una condicin.

if (radio < 0) {
System.out.println("El radio no puede ser negativo");
} else {
area = radio * radio * Math.PI;
System.out.println("El rea del crculo es " + area);
}

Las sentencias de seleccin utilizan condiciones que son expresiones lgicas o booleanas. Una expresin lgica es una
expresin que se evala 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 lgicas y comparar valores. Una expresin lgica siempre nos
va a dar como resultado true o false.

1 package seleccion;
2
3 import java.util.Scanner;
4
5 public class AdditionQuiz {
6 public static void main(String[] args) {
7 int number1 = (int)(System.currentTimeMillis() % 10);
8 int number2 = (int)(System.currentTimeMillis() * 7 % 10);
9
10 // Create a Scanner
11 Scanner input = new Scanner(System.in);
12
13 System.out.print("What is " + number1 + " + " + number2 + "? ");
14
15 int answer = input.nextInt();
16
17 System.out.println(
18 number1 + " + " + number2 + " = " + answer + " is " + (number1 + number2 == answer));
19 }
20 }

What is 6 + 2? 8
6 + 2 = 8 is true
What is 8 + 6? 5
8 + 6 = 5 is false

90
7.3 Sentencia if
Una sentencia if es una estructura que permite que un programa especifique rutas alternativas de ejecucin tomando como
base una expresin lgica. 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 if

1 package decisiones;
2
3 import java.util.Scanner;
4
5 public class CalificacionesV1 {
6 public static void main(String[] args) {
7 int calif1;
8 int calif2;
9 int calif3;
10 int promedio;
11
12 Scanner input = new Scanner(System.in);
13
14 System.out.println("Materia: Matemticas I");
15 System.out.println("Introducir tus 3 calificaciones (0-100): ");
16 calif1 = input.nextInt();
17 calif2 = input.nextInt();
18 calif3 = input.nextInt();
19
20 promedio = (calif1 + calif2 + calif3) / 3;
21
22 if(promedio >= 60){
23 System.out.println("Aprobado\n Promedio = " + promedio);
24 }
25 System.out.println("Fin del programa.");
26 }

Materia: Matemticas I
Introducir tus 3 calificaciones (0-100):
70
85
90
Aprobado
Promedio = 81
Fin del programa.

92
7.3.2 if else

1 package decisiones;
2
3 import java.util.Scanner;
4
5 public class CalificacionesV2 {
6 public static void main(String[] args) {
7 int calif1;
8 int calif2;
9 int calif3;
10 int promedio;
11
12 Scanner input = new Scanner(System.in);
13
14 System.out.println("Materia: Matemticas I");
15 System.out.println("Introducir tus 3 calificaciones (0-100): ");
16 calif1 = input.nextInt();
17 calif2 = input.nextInt();
18 calif3 = input.nextInt();
19
20 promedio = (calif1 + calif2 + calif3) / 3;
21
22 if(promedio >= 60){
23 System.out.println("Aprobado\n Promedio = " + promedio);
24 } else {
25 System.out.println("Reprobado\n Promedio = " + promedio);
26 System.out.println("Hay que estudiar ms :(");
27 }
28 System.out.println("Fin del programa.");
29 }
30
31 }

Materia: Matemticas I
Introducir tus 3 calificaciones (0-100):
55
60
50
Reprobado
Promedio = 55
Hay que estudiar ms :(
Fin del programa.

93
7.3.3 if else if

1 package decisiones;
2
3 import java.util.Scanner;
4
5 public class CalificacionesV3 {
6 public static void main(String[] args) {
7 int calif1;
8 int calif2;
9 int calif3;
10 int promedio;
11
12 Scanner input = new Scanner(System.in);
13
14 System.out.println("Materia: Matemticas I");
15 System.out.println("Introducir tus 3 calificaciones (0-100): ");
16 calif1 = input.nextInt();
17 calif2 = input.nextInt();
18 calif3 = input.nextInt();
19
20 promedio = (calif1 + calif2 + calif3) / 3;
21
22 if(promedio >= 90){
23 System.out.println("**Excelente");
24 } else if (promedio >= 80) {
25 System.out.println("**Bien");
26 } else if (promedio >= 60) {
27 System.out.println("**Regular");
28 } else {
29 System.out.println(":( Reprobado");
30 }
31 System.out.println("Promedio = " + promedio);
32 System.out.println("Fin del programa.");
33 }
34
35 }

Materia: Matemticas I
Introducir tus 3 calificaciones (0-100):
85
70
85
Bien
Promedio = 80
Fin del programa.

94
7.3.4 if anidados

1 package decisiones;
2
3 import java.util.Scanner;
4
5 public class CalificacionesV4 {
6 public static void main(String[] args) {
7 int calif1;
8 int calif2;
9 int calif3;
10 int promedio;
11
12 Scanner input = new Scanner(System.in);
13
14 System.out.println("Materia: Matemticas I");
15 System.out.println("Introducir tus 3 calificaciones (0-100): ");
16 calif1 = input.nextInt();
17 calif2 = input.nextInt();
18 calif3 = input.nextInt();
19
20 promedio = (calif1 + calif2 + calif3) / 3;
21
22 if(promedio >= 60){
23 System.out.println("Aprobado");
24 if(promedio >= 90){
25 System.out.println("Felicidades. Aparecer en cuadro de honor.");
26 } else{
27 System.out.println("Felicidades :) :)");
28 }
29 } else {
30 System.out.println("Reprobado\nHay que estudiar ms :(");
31 }
32 System.out.println("Promedio = " + promedio);
33 System.out.println("Fin del programa.");
34 }
35
36 }

Materia: Matemticas 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 tambin se pueden utilizar para comparar caracteres. Por ejemplo si ch es una variable char
podemos utilizar el operador == para comparar si el carcter que contiene es una A.

1 if (ch == 'A')
2 System.out.println("La letra es una A.");

El operador != se puede utilizar para determiner si un caracter es diferente a otro.

1 if (ch != 'A')
2 System.out.println("La letra no es una A.");

Los operadores >, <, >=, <= se utilizan tambin para comparar los caracteres. Es es debido a que internamente las variables de
tipo char se guardan como nmeros. Por ejemplo el carcter A es menor que el carcter B.

1 package decisiones;
2
3 import java.util.Scanner;
4
5 public class Vocales {
6 public static void main(String[] args) {
7 String cadena;
8 char letra;
9
10 Scanner input = new Scanner(System.in);
11
12 System.out.print("Escribir una letra ");
13 letra = input.nextLine().charAt(0);
14 letra = Character.toUpperCase(letra);
15
16 if (letra == 'A' | letra == 'E' | letra == 'I' | letra == 'O' | letra == 'U') {
17 System.out.println("La letra es una vocal");
18 } else {
19 System.out.println("La letra no es una vocal");
20 }
21 }
22 }

Escribir una letra a


La letra es una vocal

Java tiene la clase Character que contiene diversos mtodos para manipular caracteres.

96
97
7.5 Comparando cadenas de caracteres (String)
Para comparar cadenas de caracteres utilizamos el mtodo equals o compareTo de la clase String.

IMPORTANTE:

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.

1 package decisiones;
2
3 public class Cadenas {
4 public static void main(String[] args) {
5 String cad1 = "Jos";
6 String cad2 = new String("Jos");
7
8 System.out.println("cad1 == cad2 " + (cad1==cad2));
9 System.out.println("cad1.equals(cad2) " + cad1.equals(cad2));
10
11 String cad3 = "Juan";
12 String cad4 = "Ana";
13 System.out.println("cad3.compareTo(cad4) " + cad3.compareTo(cad4));
14 System.out.println("cad4.compareTo(cad3) " + cad4.compareTo(cad3));
15 cad4 = "Juan";
16 System.out.println("cad4.compareTo(cad3) " + cad4.compareTo(cad3));
17
18 }
19
20 }

cad1 == cad2 false


cad1.equals(cad2) true
cad3.compareTo(cad4) 9
cad4.compareTo(cad3) -9
cad4.compareTo(cad3) 0

98
7.6 Operadores lgicos
Los operadores lgicos !, &&, || Y ^ pueden ser utilizados para crear expresiones lgicas ms complejos.

99
1 package decisiones;
2
3 import java.util.Scanner;
4
5 public class TestBooleanOperators {
6
7 public static void main(String[] args) {
8 Scanner input = new Scanner(System.in);
9
10 System.out.print("Enter an integer: ");
11 int number = input.nextInt();
12
13 if ((number % 2 == 0) && (number % 3 == 0)) {
14 System.out.println(number + " is divisible by 2 and 3? ");
15 }
16
17 if ((number % 2 == 0) || (number % 3 == 0)) {
18 System.out.println(number + " is divisible by 2 or 3");
19 }
20
21 if ((number % 2 == 0) ^ (number % 3 == 0)) {
22 System.out.println(number + " is divisible by 2 or 3, but not both");
23 }
24
25 }
26 }

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 // Adivinar el nmero de la loteria de 2 dgitos.
2 // Si da el nmero exacto gana $10,000
3 // Si coinciden los 2 dgitos con el nmero ganador $3000
4 // Si coincide un dgito con el nmero ganador $1000
5 package decisiones;
6
7 import java.util.Scanner;
8
9 public class Lottery {
10 public static void main(String[] args) {
11 // Generate a lottery
12 int lottery = (int)(Math.random() * 100);
13
14 // Prompt the user to enter a guess
15 Scanner input = new Scanner(System.in);
16 System.out.print("Enter your lottery pick (two digits): ");
17 int guess = input.nextInt();
18
19 // Get digits from lottery
20 int lotteryDigit1 = lottery / 10;
21 int lotteryDigit2 = lottery % 10;
22
23 // Get digits from guess
24 int guessDigit1 = guess / 10;
25 int guessDigit2 = guess % 10;
26
27 System.out.println("The lottery number is " + lottery);
28
29 // Check the guess
30 if (guess == lottery)
31 System.out.println("Exact match: you win $10,000");
32 else if (guessDigit2 == lotteryDigit1
33 && guessDigit1 == lotteryDigit2)
34 System.out.println("Match all digits: you win $3,000");
35 else if (guessDigit1 == lotteryDigit1
36 || guessDigit1 == lotteryDigit2
37 || guessDigit2 == lotteryDigit1
38 || guessDigit2 == lotteryDigit2)
39 System.out.println("Match one digit: you win $1,000");
40 else
41 System.out.println("Sorry, no match");
42 }
43 }

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 expresin.
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 parntesis
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 package decisiones;
2
3 import java.util.Scanner;
4
5 public class ChineseZodiac {
6 public static void main(String[] args) {
7 Scanner input = new Scanner(System.in);
8
9 System.out.print("Enter a year: ");
10 int year = input.nextInt();
11
12 switch (year % 12) {
13 case 0: System.out.println("monkey"); break;
14 case 1: System.out.println("rooster"); break;
15 case 2: System.out.println("dog"); break;
16 case 3: System.out.println("pig"); break;
17 case 4: System.out.println("rat"); break;
18 case 5: System.out.println("ox"); break;
19 case 6: System.out.println("tiger"); break;
20 case 7: System.out.println("rabbit"); break;
21 case 8: System.out.println("dragon"); break;
22 case 9: System.out.println("snake"); break;
23 case 10: System.out.println("horse"); break;
24 case 11: System.out.println("sheep"); break;
25 }
26 }
27 }

103
7.8 Jerarqua 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;
y = x < 0 ? 10: 20;
else
y = 20;

if (score < 60)


System.out.println("Your grade is: Fail."); System.out.println("Your grade is: " +
else (score < 60 ? "Fail." : "Pass."));
System.out.println("Your grade is: Pass.");

105
7.10 Dando formato a la salida: System.out.printf y String.format
El mtodo System.out.printf( ) se utiliza para dar formato a la salida a travs de la consola. El mtodo String.format trabaja
igual que printf( ), solo que este devuelve una cadena de caracteres con formato.

1 package entradasalida;
2
3 public class FormatoSalida {
4 public static void main(String[] args) {
5 double cantidad = 35.2385;
6 int edad = 25;
7
8 System.out.println("Cantidad = " + cantidad);
9 System.out.printf("Cantidad = %4.2f \n", cantidad);
10 System.out.printf("Cantidad = %4.2f Edad = %d \n", cantidad, edad);
11 String salida = String.format("Cantidad = %4.2f Edad = %d \n", cantidad, edad);
12 System.out.println(salida);
13 }
14 }

Cantidad = 35.2385
Cantidad = 35.24
Cantidad = 35.24 Edad = 25
Cantidad = 35.24 Edad = 25

106
7.11 Ejercicios
Determinar el sueldo semanal de un trabajador con base en las horas trabajadas y el pago por hora, considerando
Ex701 que despus 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 ms 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 da del amor y la amistad.

El dueo de un estacionamiento requiere un programa que le permita determinar cunto 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.
Ex703 Las siguientes tres a $4.00 c/u.
Las cinco siguientes a $3.00 c/u.
Despus 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 artculo. 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
Ex704
descuento es de 12%, y si es menor a $100, slo 10%

El presidente de la repblica ha decidido estimular a todos los estudiantes de una universidad mediante la
asignacin de becas mensuales, para esto se tomarn en consideracin los siguientes criterios:
Para alumnos mayores de 18 aos 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 dems se les enviar una carta de invitacin incitndolos a que estudien ms en el
Ex705 prximo ciclo escolar.
A los alumnos de 18 aos 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 invitacin. Escribir el programa correspondiente.

Cierta empresa proporciona un bono mensual a sus trabajadores, el cual puede ser por su antigedad o bien por el
monto de su sueldo (el que sea mayor), de la siguiente forma:
Cuando la antigedad es mayor a 2 aos pero menor a 5, se otorga 20 % de su sueldo; cuando es de 5
aos o ms, 30 %.
Ex706
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 ms de $3500. 10%.
Realice un programa para calcular los dos tipos de bono y mostrando como resultado el bono mayor al trabajador.

Una compaa de seguros para autos ofrece dos tipos de pliza: cobertura amplia (A) y daos 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 hbito beber alcohol, 5% si utiliza lentes, 5% si padece alguna enfermedad como
Ex707 deficiencia cardiaca o diabetes, y si tiene ms de 40 aos, se le carga 20%, de lo contrario slo 10%. Todos estos
cargos se realizan sobre el costo base. Escribir un programa para determinar cunto le cuesta a una persona
contratar una pliza.

107
Escribir un programa que permita determinar el sueldo semanal de un trabajador con base en las horas trabajadas
Ex708 y el pago por hora, considerando que a partir de la hora nmero 41 y hasta la 45, cada hora se le paga el doble, de
la hora 46 a la 50, el triple, y que trabajar ms de 50 horas no est permitido.
Escribir un programa que pida un ao y diga si es bisiesto o no.
Nota: Un ao es bisiesto si es mltiplo de 4 salvo el caso en que sea mltiplo de 100, que no es bisiesto, y no sea
Ex709
mltiplo de 400. Por ejemplo, el ao 1900 no fue bisiesto, el 2000 s y el 2100 no lo es.

Escribir un programa que permita efectuar el clculo del rea de un cuadrado, un crculo o un tringulo equiltero
Ex710 segn la opcin seleccionada por el usuario a travs de un men.

Pedir una hora de la forma hora, minutos y segundos, y mostrar la hora en el segundo siguiente.
Ex711
Leer la longitud de los lados de un tringulo y determinar si el tringulo es: Equilatero, Isosceles o Escaleno.
Ex712
Determinar el mayor de 4 nmeros
Ex713
Capturar las calificaciones obtenidas por un estudiante en tres exmenes 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 segn la siguiente funcin:

Ex715

Escribir un programa que dados dos nmeros enteros a, b y una clave, realice la operacin aritmtica indicada por
medio de la clave a los nmeros dados. Por ejemplo, si los datos son: 8 4 +, el algoritmo debe calcular la suma
Ex716
de 8 + 4. Las claves vlidas 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:
+ 2 4 2 4
1 = 2 =
2 2

2
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.
Ex717 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 Cramers rule to solve the following 2 * 2 system of linear
equation:

Write a program that prompts the user to enter a, b, c, d, e, and f and displays the result. If ad - bc is 0, report
Ex719 that The equation has no solution.

Enter a, b, c, d, e, f: 9.0 4.0 3.0 -5.0 -6.0 -21.0


x is -2.0 and y is 3.0

Enter a, b, c, d, e, f: 1.0 2.0 2.0 4.0 4.0 5.0


The equation has no solution

(Random month) Write a program that randomly generates an integer between 1 and 12 and displays the English
Ex720 month name January, February, , December for the number 1, 2, , 12, accordingly.

(Find future dates) Write a program that prompts the user to enter an integer for todays 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:

Enter today's day: 1


Enter the number of days elapsed since today: 3
Ex721 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

(Sort three integers) Write a program that prompts the user to enter three integers and display the integers in
Ex723 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
Ex724 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:

Enter a three-digit integer: 121


Ex725 121 is a palindrome

Enter a three-digit integer: 123


123 is not a palindrome

(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
Ex726
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.

(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
Ex730
of two edges is greater than the remaining edge.

Escribir un programa que determine el mayor de 3 nmeros enteros (A,B,C) pero considere que los nmeros
pueden tener los mismos valores.

Ejemplos de resultados:
A es el mayor
Ex731
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 condicin del ciclo sea verdadera.

La condicin del ciclo siempre va dentro de los parntesis


Las llaves que contienen las sentencias del ciclo solo pueden ser omitidas si el ciclo contiene solo una o ninguna
sentencia.
La condicin del ciclo debe en un determinado momento ser falsa para que el ciclo termine. En caso de que la
condicin nunca se haga falsa, se convertir en un ciclo infinito y el programa se estar ejecutando indefinidamente.
Las variables que utilicemos en la condicin del ciclo deben estar previamente inicializadas. No podemos escribir una
condicin si a las variables no se les ha asignado previamente un valor.

114
8.2 Ciclo while utilizando contador
1 // Programa para mostrar la suma de 5 nmeros
2
3 package ciclowhile;
4
5 import java.util.Scanner;
6
7 public class Sumar5 {
8 public static void main(String[] args) {
9 int c = 0;
10 int suma = 0;
11 int numero;
12
13 Scanner input = new Scanner(System.in);
14
15 while (c < 5){
16 System.out.print("Escribir un nmero: ");
17 numero = input.nextInt();
18 suma += numero;
19 c++;
20 }
21
22 System.out.println("La suma es: " + suma);
23 }
24
25 }

Escribir un nmero: 5
Escribir un nmero: 3
Escribir un nmero: 1
Escribir un nmero: 8
Escribir un nmero: 2
La suma es: 19

La variable c, nos permite llevar la cuenta del nmero 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 iteracin 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 //Sumar una lista de nmeros positivos
2
3 package ciclowhile;
4
5 import java.util.Scanner;
6
7 public class SumarPositivos {
8 public static void main(String[] args) {
9 int numero;
10 int suma = 0;
11
12 Scanner input = new Scanner(System.in);
13 System.out.print("Escribir un nmero positivo (0 negativo para terminar): ");
14 numero = input.nextInt();
15
16 while(numero > 0){
17 suma += numero;
18 System.out.print("Escribir un nmero positivo (0 negativo para terminar): ");
19 numero = input.nextInt();
20 }
21 System.out.println("La suma de los nmeros es: " + suma);
22 }

Escribir un nmero positivo (0 negativo para terminar): 4


Escribir un nmero positivo (0 negativo para terminar): 1
Escribir un nmero positivo (0 negativo para terminar): 3
Escribir un nmero positivo (0 negativo para terminar): 0
La suma de los nmeros es: 8

La variable nmero la utilizamos como valor centinela


Una variable centinela es aquella que utilizamos en la condicin de un ciclo y que cuando toma un determinado valor
hace que el ciclo termine.
En este caso, mientras la variable nmero 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 (lnea 14)
y tambin dentro del ciclo le debemos de asignar un nuevo valor (lnea 19).
El ciclo while normalmente lo utilizamos con valores centinelas. Si se quiere utilizar el ciclo while con contadores es
ms recomendable utilizar el ciclo for.

116
8.4 Ejemplos ciclo while
1 package ciclowhile;
2
3 import java.util.Scanner;
4
5 public class RepeatAdditionQuiz {
6 public static void main(String[] args) {
7 int number1 = (int)(Math.random() * 10);
8 int number2 = (int)(Math.random() * 10);
9
10 Scanner input = new Scanner(System.in);
11
12 System.out.print("What is " + number1 + " + " + number2 + "? ");
13 int answer = input.nextInt();
14
15 while (number1 + number2 != answer) {
16 System.out.print("Wrong answer. Try again. What is " + number1 + " + " + number2 + "? ");
17 answer = input.nextInt();
18 }
19
20 System.out.println("You got it!");
21 }
22 }

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 package ciclowhile;
2
3 import java.util.Scanner;
4
5 public class GuessNumber {
6 public static void main(String[] args) {
7 // Generate a random number to be guessed
8 int number = (int)(Math.random() * 101);
9
10 Scanner input = new Scanner(System.in);
11 System.out.println("Guess a magic number between 0 and 100");
12
13 int guess = -1;
14 while (guess != number) {
15 System.out.print("\nEnter your guess: ");
16 guess = input.nextInt();
17
18 if (guess == number)
19 System.out.println("Yes, the number is " + number);
20 else if (guess > number)
21 System.out.println("Your guess is too high");
22 else
23 System.out.println("Your guess is too low");
24 } // End of loop
25 }
26 }

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 condicin la tiene en la parte inferior del ciclo (primero ejecuta las sentencias del ciclo y luego checa la
condicin)

1 // Sumar una lista de 2 nmeros aleatorios


2
3 package ciclodowhile;
4
5 import java.util.Scanner;
6
7 public class SumarNumeros {
8 public static void main(String[] args) {
9 int num1;
10 int num2;
11 int respuesta;
12 Scanner input = new Scanner (System.in);
13
14 do {
15 num1 = (int)(Math.random() * 11);
16 num2 = (int)(Math.random() * 11);
17 System.out.print(num1 + " + " + num2 + " = ");
18 respuesta = input.nextInt();
19 System.out.println(respuesta == num1 + num2 ? "Correcto" : "Incorrecto");
20 } while (num1 != num2);
21 }
22
23 }

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 nmero de veces. Para ello utiliza un contador. Siempre que vayamos a repetir
un conjunto de sentencias un nmero fijo de veces, es recomendable utilizar for.

120
1 package ciclofor;
2
3 public class Cuadrados {
4 public static void main(String[] args) {
5 System.out.println("Nmero\t\tCuadrado");
6 for (int i = 1; i <= 10; i++) {
7 System.out.println(i + "\t\t" + i*i);
8 }
9 }
10
11 }

Nmero Cuadrado
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
10 100

1 package ciclofor;
2
3 import java.util.Scanner;
4
5 public class Ventas {
6 public static void main(String[] args) {
7 int dias;
8 double ventas;
9 double totalVentas = 0;
10
11 Scanner input = new Scanner(System.in);
12
13 System.out.print("Por cuantos dias se van a capturar ventas? ");
14 dias = input.nextInt();
15
16 for (int i = 1; i <= dias; i++) {
17 System.out.print("Ventas del dia " + i + ": ");
18 ventas = input.nextDouble();
19 totalVentas += ventas;
20 }
21 System.out.println("Total de ventas es " + String.format("%.2f", totalVentas));
22 }
23 }

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 condicin, es ideal cuando no se quiere que el ciclo se repita si la
condicin es falsa desde un inicio. Se recomienda utilizarlo con valores centinela para terminar el ciclo.
do-while. El ciclo do/while checa la condicin 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 nmero de repeticiones que va a tener
nuestro ciclo. Este se repite un determinado nmero de veces.

122
8.8 Ciclos anidados
1 package anidados;
2
3 public class Reloj {
4 public static void main(String[] args) {
5 for (int hr = 1; hr < 3; hr++) {
6 for (int min = 0; min <= 59; min++) {
7 for (int seg = 0; seg <= 59; seg++) {
8 System.out.printf("%02d:%02d:%02d\n", hr, min, seg);
9 }
10 }
11 }
12 }
13 }

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 package anidados;
2
3 public class Promedio {
4 public static void main(String[] args) {
5 final int NUM_ESTUDIANTES = 2;
6 final int NUM_CALIFS = 3;
7 int sumaCalifs = 0;
8 int calif;
9 double promedio;
10
11 for (int i = 1; i <= NUM_ESTUDIANTES; i++) {
12 System.out.println("Calificaciones estudiante #" + i);
13 sumaCalifs = 0;
14 for (int j = 1; j <= NUM_CALIFS; j++) {
15 calif = (int) (5 + Math.random()*6);
16 System.out.print(calif + "\t");
17 sumaCalifs += calif;
18 }
19 promedio = (double)sumaCalifs / NUM_CALIFS;
20 System.out.printf("Promedio = %.2f\n", promedio);
21 }
22 }
23
24 }

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 cdigo que se encuentre
despus del break en esa misma iteracin ni ninguna de las posibles iteraciones restantes.

1 package breakcontinue;
2
3 public class BreakDemo {
4
5 public static void main(String[] args) {
6 for (int i = 1; i <= 10; i++) {
7 if (i == 5) {
8 break;
9 }
10 System.out.println(i);
11 }
12 }
13 }

1
2
3
4

124
8.10 continue
Con continue se puede detener la ejecucin de la iteracin actual y saltar a la siguiente.

1 package breakcontinue;
2
3 public class ContinueDemo {
4
5 public static void main(String[] args) {
6 for (int i = 1; i <= 5; i++) {
7 if (i == 3) {
8 continue;
9 }
10 System.out.println(i);
11 }
12 }
13 }

1
2
4
5

125
8.11 Ejercicios
for
Mostrar los nmeros del 0 al 20 con incrementos de 1 en 1.
Ex801
Mostrar los nmeros del 20 al 0 con decrementos de -1 en -1
Ex802
Mostrar los nmeros del 0 al 10 con incrementos de 5 en 5.
Ex803
Un profesor tiene un salario inicial de $1500, y recibe un incremento de 10 % anual durante 6 aos. Cul es su
Ex804 salario al cabo de 6 aos? Qu salario ha recibido en cada uno de los 6 aos? Escribir el programa.

Realice el programa anterior utilizando el ciclo while y do/while.


Ex805
El nufrago 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 crdito con un cargo de 5 % sobre la compra.
Ex806 Suponiendo que los clientes adquieren N hamburguesas, las cuales pueden ser de diferente tipo, realice un
algoritmo para determinar cunto deben pagar. Escribir el programa.

Se requiere un programa para determinar, de N cantidades, cuntas son cero, cuntas son menores a cero, y
Ex807 cuntas son mayores a cero.

Una compaa fabrica focos de colores (verdes, blancos y rojos). Se desea contabilizar, de un lote de N focos, el
Ex808 nmero de focos de cada color que hay en existencia. Desarrollar el programa.

Se requiere un programa para determinar cunto ahorrar en pesos una persona diariamente, y en un ao, si
Ex809 ahorra 3 el primero de enero, 9 el dos de enero, 27 el 3 de enero y as sucesivamente todo el ao.

Determinar cunto pagar una persona que adquiere N artculos, los cuales estn de promocin. 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
Ex810 $200, el descuento es de 12%; de lo contrario, slo se le aplica 10%. Se debe saber cul es el costo y el descuento
que tendr cada uno de los artculos y finalmente cunto se pagar por todos los artculos obtenidos.

Un cliente de un banco deposita equis cantidad de pesos cada mes en una cuenta de ahorros. La cuenta percibe un
inters fijo durante un ao de 10 % anual. Escriba un programa para determinar el total de la inversin final de
Ex811
cada ao en los prximos N aos.

Un vendedor ha realizado N ventas y desea saber cuntas fueron por 10,000 o menos, cuntas fueron por ms de
10,000 pero por menos de 20,000, y cunto fue el monto de las ventas de cada una y el monto global. Realice un
Ex812
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 ms de 150 pero menos de 300, y 9% si
Ex813 ganan ms 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.


Ex814

126
(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
Ex815 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
while
Mostrar los nmeros del 0 al 20 con incrementos de 1 en 1.
Ex819
Mostrar los nmeros del 20 al 0 con decrementos de -1 en -1
Ex820
Mostrar los nmeros del 0 al 10 con incrementos de 5 en 5.
Ex821
Leer nmeros hasta que se introduzca un 0. Para cada uno indicar si es par o impar.
Ex822
Pedir una lista de nmeros y mostrar la media de los nmeros positivos y la media de los nmeros negativos. Se
Ex823 termina cuando se introduzca el nmero 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 aos, y la cantidad de alumnos que miden ms de 1.75. Termina cuando se introduzca una edad de
Ex824
cero o negativa.

(Sum a series) Write a program to sum the following series:

Ex825

Supngase que en una reciente eleccin hubo tres candidatos (con identificadores 1, 2, 3). Usted habr de
encontrar, mediante un programa, el nmero 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 eleccin, el final de datos est representado por un cero. Observe, como ejemplo, la siguiente
lista:
Ex826
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:

Enter an integer, the input ends if it is 0: 1 2 -1 3 0


Ex827 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 nmero. El juego consiste en lo siguiente:

Genere un nmero aleatoriamente comprendido entre 0-100


Permita al jugador adivinar el nmero generado, permitindole introducir por teclado nmeros mientras
que no lo acierte. Con cada nmero introducido se le informar, por pantalla, si el nmero generado es
mayor o menor.
El programa cuenta el nmero de intentos y muestra al jugador en pantalla el momento de la victoria, con
Ex828 el nmero de intentos que ha utilizado.

Si el nmero de intentos es:

<= 5 se indica al jugador que es BUENO


5 < nmero de intentos < 15 se indica al jugador que es REGULAR
el nmero 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 telefnicas. Por cada llamada se ingresa el tipo
(Internacional, Nacional, Local) y la duracin 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
Ex829
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 nmeros positivos y mostrar el primero y segundo nmeros ms grandes.
Ex830
(Find numbers divisible by 5 and 6) Write a program that displays all the numbers from 100 to 1,000, ten per line,
Ex831 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:

Loan Amount: 10000


Number of Years: 5
Interest Rate Monthly Payment Total Payment
5.000% 188.71 11322.74
5.125% 189.29 11357.13
5.250% 189.86 11391.59
Ex832 ...
7.875% 202.17 12129.97
8.000% 202.76 12165.84

Elabore un programa que lea los siguientes datos de una lista de trabajadores : Categora, Sueldo, Aos de
antigedad y Sexo (H,M).
Calcule lo siguiente :
a) Sueldo promedio por cada categora.
b) Cuntos empleados ganan ms de $ 10,000.
Ex833 c) Cuntos empleados tienen ms de 15 aos de antigedad.
d) Cuntas mujeres de categora A ganan ms de $ 8,500.
e) Cuntos empleados con 10 o ms aos de antigedad, ganan menos de $ 6,000.
f) Cuntos empleados de categora C ganan ms de $ 12,500.
Existen 3 categoras : A, B y C
Termina cuando se escribe una categora diferente de A, B C.

129
do/while
Mostrar los nmeros del 0 al 20 con incrementos de 1 en 1.
Ex834
Mostrar los nmeros del 20 al 0 con decrementos de -1 en -1
Ex835
Mostrar los nmeros del 0 al 10 con incrementos de 5 en 5.
Ex836
Dibuja un cuadrado de n elementos de lado utilizando *.
Ex837
La siguiente se llama la conjetura de ULAM en honor del matemtico S. Ulam:

Comience con cualquier entero positivo


Si es par, divdalo entre 2; si es impar, multiplquelo por 3 y agrguele 1.
Obtenga enteros sucesivamente repitiendo el proceso.
Ex838
Al final, obtendr el nmero 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 sucesin de ULAM

(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.
Ex839 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

Simular el lanzamiento de un dado. Termina cuando un lado salga 2 veces consecutivas.


Ex840
(Find numbers divisible by 5 or 6, but not both) Write a program that displays all the numbers from 100 to 200, ten
Ex841 per line, that are divisible by 5 or 6, but not both. Numbers are separated by exactly one space.

Hacer un programa que le pregunte las tablas de multiplicar al azar a un alumno de 1er ao de primaria. El
Ex842 programa termina cuando el alumno responda de forma incorrecta 2 veces consecutivas.

(Simulation: heads or tails) Write a program that simulates flipping a coin one million times and displays the
Ex843 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
Elabore un programa que lea los siguientes datos de una lista de al menos 1 empleado: Nombre, Sexo, Tipo de
incapacidad, Das de incapacidad (El tipo de incapacidad puede ser por enfermedad o por accidente).
Calcular :
a) Nmero de empleados con ms de 20 das de incapacidad.
b) Total de empleados incapacitados por enfermedad.
c) Total de empleados incapacitados por accidente.
d) Total de das de incapacidad.
Ex845 e) Total de hombres incapacitados por accidente.
f) Porcentaje de mujeres incapacitadas.
g) Total de das de incapacidad por enfermedad en mujeres.
h) Promedio de das de incapacidad por enfermedad.
i ) Promedio de das 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

You might also like