Java Curso #1
Java Curso #1
Java Curso #1
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.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.
Problema
Anlisis
Construccin Verificacin
profundo del
del algoritmo del algoritmo
problema
6
Las caractersticas que los algoritmos deben reunir son las siguientes:
Algoritmo
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.
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
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".
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.
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:
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.
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.
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
( ) 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
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.
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:
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.
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.
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
26
3.7 Ejemplos
3.7.1 Calificaciones versin 1.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).
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.
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.
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
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).
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.
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, 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.
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
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.
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.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?
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 }
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.
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:
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.
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.
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
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
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 }
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
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
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 }
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 }
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 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 }
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
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:
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
En las operaciones pueden entremezclarse cualesquiera tipos decimales, pero el resultado se promociona a un tipo que no d
problemas de desbordamiento:
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 }
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 }
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
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:
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:
(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:
(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.
(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:
(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
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:
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:
(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:
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:
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:
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.
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.
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.
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.");
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 }
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 }
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 }
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;
}
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;
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
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.
(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:
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
(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:
(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:
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
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
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.
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 }
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 }
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)
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 }
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.
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.
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
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
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.
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
(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:
128
Juego Adivinar un nmero. El juego consiste en lo siguiente:
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:
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:
(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
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