Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
HERRAMIENTAS DE DESARROLLO
DE SOFTWARE
Algoritmos Teora y Ejercicios resueltos con
Pseudocodigo
Diagramas de Flujo y
Diagramas Nassi-Schneidermann
PREPARADO POR
Adolfo Rondan Chacn
Contenido
Terminologa bsica.................................................................................. 6
1.
1.1.
Bit...................................................................................................... 6
1.2.
Byte................................................................................................... 6
1.3.
campo................................................................................................ 6
1.3.1.
Campo constante..........................................................................7
1.3.2.
Campo variable............................................................................. 7
1.3.2.1.
Tipos de variable.......................................................................7
1.4.
Registro.............................................................................................. 8
1.5.
Archivo............................................................................................... 9
Base de datos.................................................................................. 9
1.6.
1.6.1.
1.6.1.1.
1.6.1.2.
1.6.1.3.
1.6.1.4.
1.6.1.5.
1.6.1.6.
1.6.1.7.
1.6.1.8.
2.
Algoritmo................................................................................................ 14
3.
3.1. Datos, en este caso declarar el tipo de dato, el nombre del dato y realizar una
asignacin si es necesario................................................................................ 15
3.2. Operadores.- son los smbolos usados tanto al escribir una formula como al
escribir una condicin...................................................................................... 15
4.
4.1.
Pseudocdigo................................................................................... 16
4.2.
4.3.
5.
6.
Resolucin de algoritmos........................................................................22
6.1.
6.2.
8.
Programacin Modular......................................................................25
8.2.
Programacin Estructurada...............................................................26
8.2.1.
8.2.1.1.
Estructura secuencial.................................................................26
8.2.2.
8.3.
9.
8.3.1.
8.3.2.
8.3.3.
8.3.4.
EJERCICIOS DESARROLLADOS..............................................................31
10.
Concepto de Programa.........................................................................43
11.
12.
Escritura de Programas........................................................................44
JVM.................................................................................................. 44
12.1.
13.
13.1.
Edicin.......................................................................................... 45
13.2.
Compilacin.................................................................................. 46
13.3.
Ejecucin...................................................................................... 46
14.
14.1.
14.2.
14.3.
15.
15.1.
15.2.
Identificadores en java......................................................................58
15.3.
15.4.
15.5.
Literales........................................................................................ 61
15.5.1.
Literales enteros.........................................................................61
15.5.2.
Literales reales...........................................................................61
15.5.3.
Literales de carcter...................................................................62
15.5.4.
Literales de Cadena....................................................................62
15.6.
Sentencias de asignacion...............................................................62
15.7.
Constructor................................................................................... 66
15.8.
Eventos......................................................................................... 68
15.9.
15.9.1.
15.10.
15.11.
15.12.
15.13.
Condicin compuesta.................................................................77
15.14.
15.14.1.
Contador................................................................................. 79
15.14.2.
Acumulador............................................................................. 82
15.15.
Repeticiones.................................................................................. 85
15.15.1.
15.15.2.
15.15.3.
INTRODUCCION
El propsito de este texto es proporcionar a los alumnos que recin inician sus estudios
en el rea de programacin una breve teora y una serie de problemas a ser resueltos
usando un software de prueba y luego de desarrollo, los cuales sern resueltos
algortmicamente con detalle.
Este texto presenta tres herramientas para desarrollar una lgica apropiada para el
planteamiento y solucin de un problema (pseudocdigo, diagramas de flujo y
diagramas Nassi-Schneiderman).
Los problemas que se plantean estn enfocados en utilizar las tres estructuras bsicas de
la programacin (secuencias, decisiones alternativas y decisiones repetitivas), de forma
que el alumno vaya desarrollando su capacidad de resolver problemas cada vez ms
complejos, y desarrolle una lgica apropiada mediante la utilizacin de una de las
herramientas para la solucin de problemas, luego en la siguiente etapa sern
implementados en la computadora usando un software de desarrollo adecuado
1. Terminologa bsica
1.1. Bit
Es el acrnimo de Binary digit. (Dgito binario). Un bit es un dgito del
sistema de numeracin binario.
8 bits
1024 bytes
1024 kilobytes
1024 Megabytes
1024 Gigabytes
1.3. campo
El campo es un conjunto de bytes, asignados a una ubicacin de memoria y
que poseen un nombre que los identifica, por ejemplo los campos; nombre,
paterno, edad, monto etc.
Tipos de variable
NUMERICOS
Son nmeros con los que se realiza operaciones matemticas:
adicin, sustraccin, multiplicacin, divisin, potenciacin, porcentaje,
asociacin, inversin de signo ejemplos: edad, peso, precio, sueldo,
rea, volumen, talla, inters, descuento, igv,
TEXTO
Son texto que puede incluir nmeros con los que no se realiza
operaciones matemticas, se realiza operacin de concatenacin
(juntar texto): nombre, direccin, telfono, correo, hobby, ocupacin,
profesin, deporte, disponibilidad, categora, nivel, ciclo, sexo,
FECHA
Son datos que involucran fechas (sumar fechas, restar fechas, se
puede adicionar o sustraer nmeros) fecha de nacimiento, fecha de
ingreso, fecha de cese.
HORA
Son datos que involucra horas (sumar, restar entre horas). Hora,
hora de nacimiento, hora de ingreso, hora de salida,
LOGICOS o BOOLEANOS
Son datos que involucra solo dos posibles respuestas (verdadero o
true) o (falso o false). Aprob, blanco, celeste
1.4. Registro
Un registro es un conjunto de campos que contienen los datos que
pertenecen a una misma entidad. Se le asigna automticamente un
nmero
consecutivo.
Representa
un
objeto
nico
de
datos
1.5. Archivo
Los archivos denominados ficheros (file); es una coleccin de
informacin (datos relacionados entre s), localizada o almacenada
como un medio de almacenamiento de una computadora
Los archivos son el conjunto organizado de registros del mismo tipo,
que pueden utilizarse en un mismo tratamiento; Cada archivo es
referenciado por su identificador (su nombre.). Las principales
caractersticas de esta estructura son:
distintos momentos
Gran capacidad de almacenamiento
un
mismo
contexto
almacenados
un
amplio
rango
de
soluciones
al
problema
del
almacenamiento de datos.
10
11
12
podra
denominarse
independencia
entre
programas
operaciones.
SQL:2003, es el estndar de SQL92 ampliado, soporta los conceptos
orientados a objetos y mantiene la compatibilidad con SQL92.
1.6.1.7.
13
2. Algoritmo
El trmino algoritmia proviene del nombre del matemtico rabe Al-Khuarizmi,
el cual escribi sobre los aos 800 y 825 su obra Quitad Al Mugabala, donde se
recoga el sistema de numeracin hind y el concepto del cero.
Un algoritmo es una secuencia ordenada y finita de pasos o instrucciones que
representa un modelo de solucin para un determinado tipo de problema.
Tambin podra definirse con un conjunto de instrucciones que realizadas en un
orden lgico conducen a obtener la solucin de un problema.
Realizar un algoritmo, requiere conocer herramientas de diseo de los mismos,
sumado a la creatividad del creador y constituye la base para la
implementacin de programas, usando un software de desarrollo.
Debe
14
2. Definido. Esto implica que el resultado nunca debe cambiar bajo las
mismas condiciones del problema, ste siempre debe ser el mismo.
3. Finito. No se debe caer en repeticiones de procesos de manera
innecesaria; deber terminar en algn momento.
4. Determinado. Puede tener cero, uno o ms elementos de entrada
5. Obtiene resultados. Debe obtener datos de salida que sern los que se ha
planificado previos al algoritmo
3. Descripcin de los datos
3.1. Datos, en este caso declarar el tipo de dato, el nombre del dato y
realizar una asignacin si es necesario
3.2. Operadores.- son los smbolos usados tanto al escribir una formula
como al escribir una condicin
OPERADOR
MATEMATIC
O
+
*
/
^
% O MOD
OPERADOR
RELACIONA
LES
>
>=
<
<=
==
OPERACIN
ADICION
SUSTRACCION
MULTIPLICACI
ON
DIVISION
EXPONENCIAC
ION
RESTO DE LA
DIVISION
ENTERA
OPERACIN
MAYOR
MAYOR O
IGUAL
MENOR
MENOR O
IGUAL
IGUAL
RESULTADO
EJEMPL
O
SUMA
RESTA
PRODUCTO
S<-4+B
R<-1-B
P<-5*L
COCIENTE
POTENCIA
P<-L/5L
E<-3^2
RESIDUO
ENTERIO
RE<-N
%2
RESULTADO
EJEMP
LO
VOF
VOF
A>B
A>=B
VOF
VOF
A<B
A<=B
VOF
A==B
15
OPERADOR
ES
LOGICOS
&& / Y
|
~
OPERACIN
RESULTADO
EJEMP
LO
CONJUNCION
VOF
/ O
DISYUNCION
VOF
/ NO
NEGACION
VOF
A>B Y
B>4
A>=B
||A>C
NO
A>B
16
Pseudocdigo
Herramientas grficas;
Diagramas de flujo
4.1. Pseudocdigo
El pseudocdigo es una de las herramientas ms conocidas para el diseo de solucin de
problemas por computadora. Esta herramienta permite pasar casi de manera directa la
solucin del problema a un lenguaje de programacin especfico. El pseudocdigo es
una serie de pasos bien detallados y claros que conducen a la resolucin de un
problema.
La facilidad de pasar casi de forma directa el pseudocdigo a la computadora ha dado
como resultado que muchos programadores implementen de forma directa los
programas en la computadora, cosa que no es muy recomendable, sobre todo cuando no
se tiene la suficiente experiencia para tal aventura, pues se podran tener errores propios
de la poca experiencia acumulada con la solucin de diferentes problemas.
Por ejemplo, el pseudocdigo para determinar el volumen de una caja de dimensiones
A, B y C se puede establecer de la siguiente forma:
Inicio proceso
Leer A, B y C.
17
V = A* B * C )
Escribir V.
finProceso
4.2. Los diagramas de Flujo
Es una herramienta que permite representar visualmente qu operaciones se requieren y
en qu secuencia se deben efectuar para solucionar un problema dado as, un diagrama
de Flujo es la representacin grfica mediante smbolos especiales, de los pasos o
procedimientos de manera secuencial y lgica que se deben realizar para solucionar un
problema dado.
En la tabla 1.1 se muestran algunos de los principales smbolos utilizados para construir
un diagrama de Flujo.
Dentro de los diagramas de Flujo se pueden utilizar los smbolos que se presentan en la
tabla 1.2, con los cuales se indican las operaciones que se efectuarn a los datos con el
in de producir un resultado.
Smbolo
Significado
Tabla 1.1 Principales smbolos utilizados para construir los diagramas de Flujo.
18
Tipo de estructura
19
Leer A, B y C.
V = A* B * C )
Escribir V.
Figura 1.2 Diagrama N/S para obtener el volumen de un recipiente rectangular.
Establecer cul herramienta utilizar para representar los algoritmos diseados para la
solucin de problemas estar en funcin del gusto y preferencia del programador, y
quizs no tanto en funcin de la complejidad de los problemas, ya que si bien es cierto
que los diagramas N/S tienen pocos smbolos, presentan la ventaja de que por lo
compacto que resultan sus representaciones suelen ser ms fciles de leer y de
transcribir al lenguaje de programacin que se utilizar, pero luego resulta a veces
complicado acomodar las acciones al construir el diagrama.
La figura 1.3 que muestra un diagrama N/S con el algoritmo para obtener el rea de un
rectngulo, en el cual la solucin tiene una estructura secuencial.
Leer b, h
a=b*h
20
Escribir rea:, a
Figura 1.3 Diagrama N/S con una estructura secuencial.
Para una estructura de decisin se muestra la figura 1.4, en la cual se tiene la solucin
de un algoritmo para determinar cul de dos cantidades es la mayor.
Leer c1, c2
c1 > c2
Si
m <- c1
escribir m
No
m <- c2
21
22
6. Resolucin de algoritmos
Ejercicio.-
En esta solucin lo que se propone es determinar el cambio que recibir una persona,
para esto es necesario conocer cunto cuesta el producto (CP) y qu cantidad de dinero
disponible se tiene, y resolver el problema mediante una simple diferencia entre lo que
se pag y el costo del producto.
Pseudocodigo
Proceso cambio
Leer cp,cd
cambio <- cd-cp
Escribir cambio
FinProceso
FIBURA 1.6
Diagrama de flujo para determinar el cambio que recibir una persona al adquirir
un producto.
Prob 2. Modificar el problema anterior de forma que tenga en cuenta si el disponible de
dinero fuera insuficiente para la compra muestra en la figura 1.7.
Costo de producto
CD
Cantidad de dinero
Pseudocdigo de un planteo mejorado
Proceso cambio1
Leer cp,cd
si cp>cd Entonces
Escribir "monto insuficiente"
Sino
cambio <- cd-cp
Escribir cambio
Finsi
23
FinProceso
Figura 1.7 Diagrama de flujo para determinar el cambio que recibir una persona al
adquirir un producto.
Leer cp , cd
cp > cd
Si
Escribir m.insuf
No
Cambio <- cd - cp
escribir cambio
Figura 1.8 Diagrama n-s para determinar el cambio que recibir una persona al
adquirir un producto.
Como se puede ver, en ocasiones exponer la solucin de un problema dado depender
de cmo se considere su planteamiento, y tambin tendr mucho que ver la forma en la
que el diseador lo conceptualice; debido a esto, es muy importante, cuando se realicen
algoritmos para la solucin de problemas prcticos, que se plantee de manera correcta lo
que se quiere y se aclaren los puntos necesarios que permitan disear la solucin ms
ptima, pues hay que recordar que un algoritmo es siempre perfectible.
Para los siguientes captulos se propondr la solucin de problemas donde se utilicen
para su representacin principalmente pseudocdigo y diagramas de flujo, y en otros
casos diagramas N/S.
Pero antes de pasar al planteamiento y solucin de problemas, es necesario dejar bien
claro que las soluciones planteadas en este texto no son nicas, y pueden ser mejoradas
por los lectores.
Es necesario conocer que para resolver un problema usando un lenguaje de
programacin, debe ceirse paso a paso a un procedimiento:
6.1. Planteo del problema
24
Descripcin
Altura del rectngulo
Base del rectngulo
rea del rectngulo
Tipo
Real
Real
Real
A esta accin se denomina como declaracin de las variables que se utilizarn para
obtener el rea de un rectngulo.
Debe tenerse presente que la solucin de un problema dado mediante el uso de una
computadora es un sistema, el cual debe tener una entrada de datos, los cuales sern
procesados para obtener una salida, que es la solucin o informacin que se busca. En la
figura 2.1 se muestra el esquema de un sistema que transforma los datos en informacin
mediante un proceso.
Entrada
proceso
Salida
25
al
concluir este devuelve el control al mdulo que lo llam. Dentro del mdulo
a su vez se puede invocar a otro
Un mdulo solo tiene acceso a los mdulos a los que llama y a los sub
mdulos a los que a su vez llaman stos. Los resultados producidos por un
mdulo pueden ser utilizados por otros.
No existe un criterio fijo para determinar el tamao, ni muy grandes ni muy
pequeos, la idea fundamental es que realicen una nica tarea y obtengan
un resultado.
Los mdulos o subprogramas reciben diferentes nombres segn el lenguaje
de programacin y segn su tipo. Se llaman procedimientos y funciones
26
En la
Estructura secuencial
27
Declaracin variables
Asignacin de valores
Entrada de datos
Obtencin de resultados
28
Ejemplo
Por ejemplo, la siguiente estructura de seleccin doble determina si una
persona es mayor o menor de edad:
SI( edad >= 18 )
estado = "Mayor de edad"
29
SINO
estado = "Menor de edad"
Esto imprime "Mayor de edad" si la persona tiene 18 aos o ms e imprime
"Menor de edad" si la persona tiene menos de 18 aos. En cualquiera de los
casos, despus de efectuar la impresin, se ejecutar la primera instruccin
que sigue a la estructura SI...SINO.
8.3.3. Estructura de seleccin doble en cascada si-sino-si
La estructura de seleccin doble en cascada est
formada por varias estructuras de seleccin doble
SI-SINO puestas una a continuacin de otra de
forma que aun SI-SINO le sigue otro SI-SINO.
En la estructura de seleccin doble en cascada,
las
condiciones
se
evalan
en
orden
la
accin
correspondiente
dicha
30
SI( n> 0 )
signo = "Positivo"
SINO SI( n< 0 )
signo = "Negativo"
SINO
signo = "Cero"
del
selector
con
las
se
encuentre
una
se
dicha
abandona
la
estructura.
En la Figura se muestra el diagrama de flujo y el pseudocdigo de la estructura
de seleccin mltiple.
Diagrama de Flujo
Estructura de Seleccin Mltiple
Pseudocdigo
SEGUN( selector ){
CASO c1 : accion1
CASO c2 : accion2
CASO c3 : accion3
CASO cn : accionn
DEFECTO : acciondefecto
}
31
Algoritmo 2
INICIO
// Declaracin de variables
ENTERO horas, minutos, horasPagar
REAL pago
// Entrada de datos
LEER horas, minutos
// Determina el nmero de horas a
pagar
SI( minutos > 0 )
horasPagar = horas + 1
SINO
horasPagar = horas
// Determina el importe a pagar
pago = horasPagar * 2.5
// Salida de resultados
IMPRIMIR pago
FIN
CADENA tipoNmero
// Entrada de datos
LEER nmero
32
// Determina el mayor
nmeroMayor = nmero1
SI(nmero2 >nmeroMayor )
nmeroMayor = nmero2
SI(nmero3 >nmeroMayor )
nmeroMayor = nmero3
// Salida de resultados
IMPRIMIR mayor
FIN
Ejercicio 4:- Una tienda ha puesto en oferta la venta al por mayor de cierto
producto, ofreciendo un descuento del 15% por la compra de ms de 3
docenas y 10% en caso contrario. Adems por la compra de ms de 3 docenas
se obsequia una unidad del producto por cada docena en exceso sobre 3.
Disee un algoritmo que determine el monto de la compra, el monto del
descuento, el monto a pagar y el nmero de unidades de obsequio por la
compra de cierta cantidad de docenas del producto.
Algoritmo
INICIO
// Declaracin de variables
REAL
montopag,
montocom,
montodes, precio
ENTERO docenas, obsequio
// Entrada de datos
LEER docenas, precio
// Determina el monto de la compra
montocom = docenas*precio
// Determina el monto del descuento y
el obsequio
Elaborado por Adolfo Rondn Chacn
33
// Salida de resultados
IMPRIMIR montocom,
montopag, obsequio
FIN
montodes,
Ejercicio 5:- Disee un algoritmo que lea un nmero de tres cifras y determine
si es o no capica. Un nmero es capica si es igual al revs del nmero.
Como el nmero tiene tres cifras, para ser capica basta con que la cifra de las
unidades sea igual a la cifra de las centenas. Por ejemplo: 353, 878, etc.
Algoritmo
INICIO
// Salida de resultados
ENTERO nmero, unidades, centenas
CADENA tipoNmero
// Entrada de datos
LEER nmero
// Si el nmero tiene tres cifras...
SI(nmero>= 100 &&nmero<= 999 ){
// Determina la cifra de las unidades y
la cifra de las centenas
unidades = nmero%10
centenas = nmero/100
34
1000 km, cobra un monto adicional de $ 0.15 por cada kilmetro en exceso
Algoritmo
montopag
= de montofijo
+
sobre 300. Para ms de 1000 km cobra un
monto adicional
$ 0.10 por cada
INICIO
0.15*(kilomrec-300)
kilmetro
en exceso
sobre 1000. Los precios
// Declaracin
de variables
SINOya incluyen el 18% del impuesto
REAL
montopag,
montoigv,
montopag
= montofijo
+ 0.15*700
+
generalkilomrec,
a las ventas,
IGV. Disee
un algoritmo
que determine
el monto
a pagar
montofijo = 30, igv = 0.18
0.10*(kilomrec-1000)
por
el alquiler
de un vehculo y el monto incluido
del impuesto.
// Entrada
de datos
// Determina
el monto del impuesto
LEER kilomrec
montoigv = igv*montopag /(1+igv)
// Determina el monto a pagar
// Salida de resultados
SI( kilomrec <= 300 )
IMPRIMIR montopag, montoigv
montopag = montofijo
FIN
SINO SI( kilomrec <= 1000 )
Ejercicio 8:- Disee un algoritmo que determine quienes son contemporneos
entre Juan, Mario y Pedro.
Algoritmo
INICIO
// Declaracin de variables
ENTERO juan, mario, pedro
CADENA contemporneos
// Entrada de datos
LEER juan, mario, pedro
//
Determina
quienes
son
contemporneos
SI( juan == mario && mario == pedro )
contemporneos = "Los tres son
contemporneos"
SINO SI( juan == mario )
35
Ejercicio 10:- Disee un algoritmo que lea tres longitudes y determine si forman
o no un tringulo. Si es un tringulo determine de que tipo de tringulo se trata
entre: equiltero (si tiene tres lados iguales), issceles (si tiene dos lados
iguales) o escaleno (si tiene tres lados desiguales). Considere que para formar
un tringulo se requiere que: "el lado mayor sea menor que la suma de los
otros dos lados".
Algoritmo
INICIO
// Declaracin de variables
REAL L1, L2, L3, suma
CADENA tipoRectangulo
// Entrada de datos
LEER L1, L2, L3<
// Determina el lado mayor
mayor = L1
SI( L2 > mayor )
mayor = L2
SI( L3 > mayor )
mayor = L3
// Determina la suma de los lados a
excepcin del lado mayor
suma = L1 + L2 + L3 - mayor
// Determina de que tipo de tringulo
se trata
Ejercicio 11:- Disee un algoritmo que lea tres nmeros enteros y determine el
menor valor positivo. Si los nmeros positivos son iguales, dar como menor a
cualquiera de ellos.
Algoritmo
INICIO
// Declaracin de variables
ENTERO a, b, c, menor
// Entrada de datos
LEER a, b, c
// Determina el menor
// Aqu a, b y c podran ser positivos
SI( a> 0 ){
menor = a
SI( b > 0 && b < menor )
// Aqu slo c podran ser positivos
SINO SI( c> 0 ){
menor = c
}menor = b
SI( c> 0 && c < menor )
Elaborado por Adolfo Rondn Chacn
menor = c
}
// Aqu slo b y c podran ser positivos
SINO SI( b > 0 ){
menor = b
SI( c> 0 && c < menor )
menor = c
}
// Guardamos el indicador -1 para
saber que no hay positivos
SINO
menor = -1
// Salida de resultados
36
SI( menor != -1 )
IMPRIMIR menor
SINO
Ejercicio 12:- Disee un algoritmo que lea tres nmeros y los imprima de mayor
a menor y de menor a mayor.
Algoritmo
INICIO
// Declaracin de variables
REAL n1, n2, n3, mayor, menor,
medio
// Entrada de datos
LEER n1, n2, n3
// Determina el menor
menor = n1
SI( n2 < menor )
menor = n2
SI( n3 < menor )
menor = n3
// Determina el mayor
mayor = n1
SI( n2 > mayor )
mayor = n2
SI( n3 > mayor )
mayor = n3
// Determina el medio
medio = n1+n2+n3-mayor-menor
// Imprime en orden ascendente
IMPRIMIR menor, medio, mayor
// Imprime en orden descendente
IMPRIMIR mayor, medio, menor
FIN
grado = 6
}
SINO{
SI( torpro > 10000 )
grado = 7
SINO
grado = 5
}
// Salida de resultados
IMPRIMIR grado
FIN
Algoritmo 2
INICIO
// Declaracin de variables
ENTERO torpro, tordef, grado
// Entrada de datos
LEER torpro, tordef
// Determina el grado de eficiencia
SI( tordef < 200 && torpro > 10000 )
grado = 8
SINO SI( tordef < 200 )
grado = 6
SINO SI( torpro > 10000 )
grado = 7
SINO
grado = 5
// Salida de resultados
IMPRIMIR grado
FIN
Ejercicio 14:- Se cuenta con los votos obtenidos por Juan, Pedro y Mara en
una eleccin democrtica a la presidencia de un club. Para ganar la eleccin se
debe obtener como mnimo el 50% de los votos ms 1. En caso que no haya
un ganador se repite la eleccin en una segunda vuelta. Van a la segunda
vuelta los dos candidatos que obtengan la ms alta votacin. Se anula la
eleccin en caso de producirse un empate doble por el segundo lugar o un
empate triple. Disee un algoritmo que determine el resultado de la eleccin.
Algoritmo
INICIO
// Declaracin de variables
ENTERO vjuan, vpedro, vmaria,
vmingan
CADENA resultado
// Entrada de datos
LEER vjuan, vpedro, vmaria
// Determina la votacin mnima para
ganar
vmingan = (vjuan + vpedro +
vmaria)/2 + 1
// Determina el resultado de la
eleccin
SI( vjuan >= vmingan )
resultado = "Gana Juan "
SINO SI( vpedro >= vmingan )
resultado = "Gana Pedro"
SINO SI( vmaria >= vmingan )
38
Ejercicios
1. Disee un aplicacin para una casa de juego en el que se ingresa una
ficha de 2 soles y se lanzan 3 dados basados en la siguiente regla:: tres
seis, puntaje excelente premio S/.10 ; dos seis, muy bien premio S/.2; un
seis regular mensaje premio volver a lanzar; ningn seis, psimo
mensaje Usted Perdi. En la salida se deben mostrar el nmero de cada
dado. Expresin para generar el randomDado=(int)(Math.random()*6+1)
2. Mano de Dios es una empresa de alquiler de automviles cobra un
monto fijo de S/.100 para los primeros 250 km de recorrido. Para ms de
250 km y hasta 1000 km, cobra un monto adicional de 0.55 por cada
kilmetro en exceso sobre 300. Para ms de 1000 km cobra un monto
39
adicional de 0.40 por cada kilmetro en exceso sobre 1000. Los precios
ya incluyen el 19% del impuesto general a las ventas, IGV. Obtener la
boleta de pago detallada al final del alquiler, incluya los montos sin incluir
impuestos, impuestos y total incluido impuestos
3. Un docente de Primaria, le solicita que prepare una aplicacin en la que
se ingresaran tres longitudes de segmentos y determine si forman o no
un tringulo. Si es un tringulo determine de que tipo de tringulo se
trata entre: equiltero (si
tiene tres lados iguales),
issceles (si tiene dos lados
iguales) o escaleno (si tiene
tres
lados
desiguales).
Cantidad
De 1 a 30
Por los siguientes
30
Por los siguientes
20
Por los siguientes
20
Por los siguientes
Precio
S/.1.15
S/.1.00
S/.0.80
S/.0.65
S/.0.45
que: "el lado mayor sea menor que la suma de los otros dos lados".
4. La tienda Te exprimo de a poco, vende gorritos para fiestas infantiles al
por mayor y menor, a un precio unitario, de acuerdo a la tabla que se
muestra obtener el monto que pagar el cliente si puede hacer solo un
pedido
5. Yo si la hago. Es una tienda que vende seguros de SOAT, esta empresa
los vendedores ganan un sueldo del 15% del total del monto de los seguros
vendidos mas S/23.00 por cada 300 soles de exceso sobre 4000. Obtener
el monto total que recibir el vendedor.
6. En el examen final del curso de matemticas, un alumno ha desarrollado
4 preguntas con igual puntaje, el profesor decide triplicar la nota ms
alta y duplicar la 2da nota ms alta, de las preguntas obtener la nota del
alumno.
7. En la empresa Un clavo saca otro clavo, se calcula el sueldo semanal
del trabajador tomando en cuenta que puede trabajar hasta 48 horas con
tarifa normal, para las horas en exceso(extras) tiene un adicional de
21%, si su sueldo es 1200 o menos recibe un descuento de ley de 9%, si
Elaborado por Adolfo Rondn Chacn
40
es mayor adems del descuento normal recibe otro descuento del 2%,
obtenga el monto neto a pagar
8. Un Jefe de departamento inicia su puntaje del semestre ante la direccin
con 30 puntos y recibe felicitaciones por hacer llamadas de atencin a
los profesores de su departamento, por cada llamada recibe un puntaje
de 7. Obtener el nombre y el puntaje del jefe de departamento al final del
semestre
9.
cada
Vehculo
Porcenta
je
1 camin
4.5%
2 mnibus
4.0%
3
3.5%
camioneta
4
3.0%
automvil
5 moto taxi 2.5%
Clasificacin a obtener
Nulo
Agudo
Recto
Obtuso
Llano
Cncavo
Completo
41
12. El intihuatana o reloj incaico indica las horas de acuerdo al ngulo que
indica su sombra de la forma siguiente, para ello debe ingresar el Angulo en
grados minutos y segundos, los ngulos pueden ser
13. En el curso de matemticas se obtiene en promedio en base a tres
prcticas y tres exmenes, el promedio de las practicas se obtiene en
base a las dos mas altas, y en los exmenes, el profesor ha quedado
que incrementar 3 puntos a los que obtuvieran hasta 9 de nota, 2
puntos a los que obtienen ms de 9 y menos de 15 y 1 punto a los que
obtienen 15 hasta 17. No puede usar operadores lgicos y las notas
estn entre 0 y 20.
14. Los amigos Jos, Jonathan y Pilar ingresan al playland park y el que
tiene la talla intermedia recibe un premio sorpresa. Indicar que amigo se
lleva el premio.
15. Joel estudia ing. De sistemas, y lleva 7 cursos, el recibe una propina
semanal de 20 soles su papa ha decidido darle una propina adicional de
20 soles por curso aprobado al mes obtener el monto de la propina
mensual.
16. Se ingresa valores en grados de la temperatura del agua, obtener un
mensaje que indique si la temperatura es bajo cero, cero o mayor que
cero
17. Se ingresa un nmero correspondiente al mes del ao 2008, se desea
obtener como salida el nombre del mes al que corresponda, si el valor
no est en el rango de 0 a 12 obtener un mensaje de mes inexistente
18. Se ingresa el estado civil de Alexander, determinar el estado civil, si se
conoce que 1 es para los solteros, 2 para casados, 3 para viudos, 4 para
divorciados y el resto tiene el mensaje de estado civil no existe.
19. Acr system design debe adquir una cantidad de unidades de un
producto, cuenta con dos proveedores Tayloi y tai Heng, Tayloi le oferta
el producto a S/. 15 y 14% de descuento para ms de 35 unidades
adquiridas Tai heng oferta el producto a S/. 23 y 16% de descuento para
Elaborado por Adolfo Rondn Chacn
42
43
2.
3.
4.
Declaracin de variables.
44
1.
2.
3.
4.
JVM
45
Comerciales
Cientficas
Juegos
Telecomunicaciones
46
47
48
6u2-Windows-i586-p.
Aparecer
la
siguiente
ventana.
Se
debe
esperar
unos
minutos
49
JCreator_3.5. Aparecer la
siguiente ventana.
Luego
aparecer
la
ventana
de
50
instalacin.
Dejamos
avanzar
instalacin
hasta
siguiente
ventana.
el
proceso
de
salga
la
que
Presionamos
de
programas\Xinox
Software\JCreatorV3LE\Templates
Luego
aparecer
esta
ventana.
Presionamos Next.
Importante!
51
Paso 3:
Luego nos aparecer una ventana, en la cual colocamos el nombre del espacio
de trabajo (en este caso Trabajo_1) evitando dejar espacios al elegir el nombre.
Luego damos click en donde nos muestra la figura:
52
Paso 4:
Luego nos aparecer el siguiente cuadro en el cual buscaremos nuestra
carpeta anteriormente creada, y a continuacin damos click en ACEPTAR.
Paso 5:
Damos click en FINISH.
53
Paso 7:
A continuacin nos saldr la siguiente ventana, en la cual elegiremos el tipo de
proyecto deseado, en este caso elegiremos BASIC JAVA APPLET y damos
click en NEXT.
Paso 8:
54
Paso 9:
Ahora se crearon 2 carpetas una llamada CLASES y la otra llamada SRC.
La carpeta clases permite elegir el ancho y alto de la ventana que tendr la
pantalla de nuestro programa. Por defecto aparecer con las medidas 500 x
300 (500 de ancho x 300 de alto), estas medidas pueden ser modificadas
segn se desee.
55
Paso 10:
La carpeta SRC es donde digitaremos toda nuestra lnea de cdigo. Por
defecto nos aparecer lo siguiente:
56
15.1.
NOTA:
Siempre que se termine una lnea de cdigo, debemos utilizar el punto y coma
(;) el cual nos sealara el final de dicha lnea de cdigo. Mientras nos
coloquemos el punto y coma, java asumir que nuestra lnea de cdigo sigue,
aunque hayamos presionado ENTER y bajado una lnea, lo que podramos
generarnos errores de compilacin.
57
58
Para mantener un orden en Java, se usan prefijos antes de cada control lo que
nos permitir hacer ms entendible nuestro programa. Esto permite a la
persona que tenga que hacer el mantenimiento del programa, encontrar con
mayor facilidad los objetos, adems permitir mas adelante programar con
mayor facilidad.
15.2.
Identificadores en java
Ejemplo
Son vlidos los siguientes identificadores:
edadMaxima
edadmaxima
monto_total
sueldo_bruto
suelbru
$ganancia
nota2
importeCompra
Note que los identificadores edadMaxima y edadmaxima no son iguales dado
que M (mayscula) no es lo mismo que m (minscula).
Ejemplo
59
60
61
Literales
Literales enteros
Literales reales
62
Literales booleanos
Los nicos literales booleanos son los siguientes:
true, false
15.5.3.
Literales de carcter
Literales de Cadena
Sentencias de asignacion
63
Ejemplo 1:
Como ejemplo declararemos los objetos de un programa sencillo que nos
permite ingresar un nombre, una edad, y a continuacin mostrarlos al darle
clic al botn de accin.
//declarando objetos
JLabel lblNombre, lblEdad;
JTextField txtNombre, txtEdad;
JTextArea txtArea;
JButton btnProcesar;
Como nos muestra el ejemplo, luego de cada prefijo la primera letra del
nombre del control debe ser mayscula, a continuacin indicaremos los
siguientes prefijos:
JLabel: usa el prefijo lbl. Ejemplo anterior: lblNombre, lblEdad;
JTextField: usa el prefijo txt. Ejemplo anterior: txtNombre, txtEdad;
JTextArea: al igual que el JTextField usa el prefijo txt. Ejemplo anterior:
txtArea;
JButton: usa el prefijo btn. Ejemplo anterior: btnProcesar;
A continuacin mostramos como va quedando nuestro programa:
64
Nota:
- El doble slash ( // ) nos permite escribir una lnea de comentario, esto
nos permite crear notas dentro de JCreator, las cuales el programa no
toma en cuenta.
- El slash, seguido de un asterisco ( /* ) nos permite crear varias lneas
de comentarios. En este caso para terminar el comentario debemos
colocar un asterisco seguido de un slash ( */ ).
65
66
Constructor.
67
68
Eventos
69
70
intnmero;
Tambin debemos tener en cuenta los diferentes operadores para realizar
las operaciones cuando sea necesario.
Operadores de comparacin: estos operadores devuelven un valor lgico,
que ser true si la operacin es verdadera o false si la operacin es
falsa.
Operadores lgicos: permiten evaluar operaciones lgicas compuestas.
15.9.
71
class
Trabajo_1
extends
72
JLabel lblNombre,lblEdad;
JTextField txtNombre,txtEdad;
btnProcesar.addActionListener(this);
JTextArea txtArea;
getContentPane( ).add(btnProcesar);
JButton btnProcesar;
txtArea.setBounds(50,170,400,100);
getContentPane( ).add(txtArea);
libre de alineaciones
//eventos (lgica)
getContentPane( ).setLayout(null);
public
actionPerformed(ActionEvent e){
lblNombre.setBounds(50,50,100,20);
//declaracin de variables
getContentPane( ).add(lblNombre);
String nombre;
int edad;
txtNombre.setBounds(150,50,100,20);
getContentPane( ).add(txtNombre);
desde la GUI
nombre = txtNombre.getText( );
lblEdad.setBounds(50,90,100,20);
edad
getContentPane( ).add(lblEdad);
Integer.parseInt(txtEdad.getText( ));
txtEdad.setBounds(150,90,100,20);
datos en el rea
getContentPane( ).add(txtEdad);
txtArea.setText("Nombre
btnProcesar
new
ingresado:
"+nombre+"\n");
JButton("Procesar");
txtArea.append("Edad
btnProcesar.setBounds(200,130,100,2
"+edad);
0);
void
ingresada:
73
74
15.9.1.
75
import java.awt.*;
getContentPane( ).add(lblEdad);
import java.awt.event.*;
import javax.swing.*;
txtEdad.setBounds(150,90,100,20);
public
class
Trabajo_1
extends
getContentPane( ).add(txtEdad);
btnProcesar
//declarando objetos
JButton("Procesar");
JLabel lblNombre,lblEdad;
btnProcesar.setBounds(100,130,100,2
JTextField txtNombre,txtEdad;
0);
JTextArea txtArea;
JButton btnProcesar,btnBorrar;
btnProcesar.addActionListener(this);
getContentPane( ).add(btnProcesar);
btnBorrar.setBounds(300,130,100,20);
libre de alineaciones
getContentPane( ).setLayout(null);
btnBorrar.addActionListener(this);
getContentPane( ).add(btnBorrar);
lblNombre.setBounds(50,50,100,20);
getContentPane( ).add(lblNombre);
txtArea.setBounds(50,170,400,100);
getContentPane( ).add(txtArea);
txtNombre.setBounds(150,50,100,20);
getContentPane( ).add(txtNombre);
//lgica
public
lblEdad.setBounds(50,90,100,20);
actionPerformed(ActionEvent e){
new
void
76
//declaracin de variables
String nombre;
int edad;
datos
txtNombre.setText("");
nombre=txtNombre.getText( );
txtEdad.setText("");
edad=Integer.parseInt(txtEdad.getText
txtArea.setText("");
( ));
/*
obteniendo
txtNombre,
el
lo
enfoque
que
en
permitir
mas fcil */
"+nombre+"\n");
txtArea.append("Edad
ingresada:
"+edad);
}
txtNombre.requestFocus( );
}
} //fin de la lgica
} //fin del programa
Como podemos observar, se coloca cada lgica por separado, para esto
utilizamos una condicin simple: if (e.getSource( ) = = btnProcesar)
15.10. Condicin simple ( if )
Se utiliza cuando se desea evaluar una comparacin y hacer algn proceso
slo cuando la comparacin sea verdadera.
if (condicin)
//proceso
Ejemplo: mostrar en txtArea un mensaje, solo si el nmero ingresado es
positivo.
if ( nmero> 0 )
77
78
comparacin,
esta
ser
compuesta,
para
lo
cual
utilizaremos
79
Contador
80
import java.awt.*;
public
class
import java.awt.event.*;
extends
import javax.swing.*;
ActionListener{
EjemploContador
JApplet
implements
81
JTextField txtNmero;
getContentPane( ).add(btnBorrar);
JTextArea txtArea;
scpScroll
JScrollPane scpScroll;
JScrollPane(txtArea);
scpScroll.setBounds(50,140,400,1
int cont = 0;
00);
new
getContentPane( ).add(scpScroll);
public void init( ) {
getContentPane( ).setLayout(null);
public
void
actionPerformed(ActionEvent e){
un nmero");
if(e.getSource( ) = = btnProcesar)
lblNmero.setBounds(50,50,120,2
procesar( );
0);
if(e.getSource( ) = = btnBorrar)
getContentPane( ).add(lblNmero);
borrar( );
}
//mtodo procesar
txtNmero.setBounds(170,50,50,2
0);
getContentPane( ).add(txtNmero)
intnmero;
btnProcesar
new
nmero
JButton("Procesar");
Integer.parseInt(txtNmero.getText
btnProcesar.setBounds(50,100,10
( ));
0,20);
btnProcesar.addActionListener(this
);
imprimir("Nmero
getContentPane( ).add(btnProcesa
"+nmero);
r);
imprimir("Cantidad
ingresados: "+cont);
btnBorrar.setBounds(200,100,100,
txtNmero.setText("");
20);
txtNmero.requestFocus( );
btnBorrar.addActionListener(this);
ingresado:
de
nmeros
82
txtNmero.setText("");
txtArea.append(s+"\n");
txtArea.setText("");
txtNmero.requestFocus( );
15.14.2.
Acumulador
83
import java.awt.*;
import java.awt.event.*;
un nmero");
import javax.swing.*;
lblNmero.setBounds(50,50,120,2
0);
JApplet
getContentPane( ).add(lblNmero);
implements
ActionListener{
0);
JLabel lblNmero;
getContentPane( ).add(txtNmero)
JTextField txtNmero;
JButton btnProcesar,btnBorrar;
JTextArea txtArea;
btnProcesar
JScrollPane scpScroll;
JButton("Procesar");
//aqu
se
declara
nuestro
new
btnProcesar.setBounds(50,100,10
acumulador
0,20);
int suma = 0;
btnProcesar.addActionListener(this
);
//GUI
getContentPane( ).add(btnProcesa
r);
getContentPane( ).setLayout(null);
btnBorrar = new JButton("Borrar");
84
btnBorrar.setBounds(200,100,100,
intnmero;
20);
btnBorrar.addActionListener(this);
GUI
getContentPane( ).add(btnBorrar);
nmero=Integer.parseInt(txtNmer
o.getText( ));
suma+=nmero; //acumulamos el
new
JScrollPane(txtArea);
imprimir("Nmero
scpScroll.setBounds(50,140,400,1
"+nmero);
00);
getContentPane( ).add(scpScroll);
ingresados: "+suma);
txtNmero.setText("");
public
void
actionPerformed(ActionEvent e){
ingresado:
txtNmero.requestFocus( );
}
if(e.getSource( )= =btnProcesar)
procesar( );
if(e.getSource( )= =btnBorrar)
txtNmero.setText("");
borrar( );
txtArea.setText("");
txtNmero.requestFocus( );
}
public void imprimir(String s){
//mtodo procesar
public void procesar( ){
//se declara la variable nmero
txtArea.append(s+"\n");
}
} //Fin del programa
85
15.15. Repeticiones
Definicin: proceso por el que una accin es controlada una o mas veces.
A continuacin mostraremos las repeticiones : FOR, WHILE y DO WHILE.
15.15.1.
86
87
88
15.15.3.
89
proceso;
aumenta i de 1 en 1;
}
mientras (i sea menor o igual que 50);
Esto quiere decir que se repetir el proceso y se ira incrementando i de uno
en uno, mientras la variable i sea menor o igual a 50,
A continuacin realizaremos 3 ejercicios para visualizar mejor nuestros tres
tipos de repeticin:
Ejercicio 1:
Realizar un programa, utilizando la repeticin for, que ingrese un
nmero entero y obtenga la tabla de multiplicar hasta el 15 de dicho
nmero.
import java.awt.*;
JTextArea txtArea;
import java.awt.event.*;
JScrollPane scpScroll;
import javax.swing.*;
// GUI
getContentPane( ).setLayout(null);
JLabel lblTabla;
lblTabla.setBounds(50,20,200,20);
JTextField txtNmero;
getContentPane( ).add(lblTabla);
JButton btnProcesar,btnBorrar;
90
txtNmero.setBounds(112,
40,
40,
20);
getContentPane( ).add(txtNmero);
GUI
btnProcesar
intnmero=getNmero( );
new
JButton("Procesar");
del nmero * i
20);
for(int i=1;i<=15;i++)
btnProcesar.addActionListener(this);
getContentPane( ).add(btnProcesar);
(nmero*i));
btnBorrar.setBounds(300,
40,
150,
20);
btnBorrar.addActionListener(this);
return
getContentPane( ).add(btnBorrar);
Integer.parseInt(txtNmero.getText( ));
txtArea=new JTextArea( );
scpScroll=new JScrollPane(txtArea);
// mtodo borrar
scpScroll.setBounds(50,100,400,250);
getContentPane( ).add(scpScroll);
txtNmero.setText("");
txtArea.setText("");
txtNmero.requestFocus( );
public
void
actionPerformed( ActionEvent e ){
if(e.getSource( ) = = btnProcesar)
JTextArea
procesar( );
if(e.getSource( ) = = btnBorrar)
txtArea.append(lnea + "\n");
borrar( );
// mtodo procesar
Ejercicio
Realizar un programa, utilizando la repeticin while, que ingrese un nmero
entero y obtenga el factorial de dicho nmero.
91
import java.awt.*;
txtNmero.setBounds(112,
40,
40,
import java.awt.event.*;
20);
import javax.swing.*;
getContentPane( ).add(txtNmero);
btnProcesar
JButton("Procesar");
new
20);
JLabel lblFactorial;
btnProcesar.addActionListener(this);
JTextField txtNmero;
getContentPane( ).add(btnProcesar);
JScrollPane scpScroll;
btnBorrar.setBounds(300,
40,
150,
20);
//GUI
btnBorrar.addActionListener(this);
getContentPane( ).add(btnBorrar);
getContentPane( ).setLayout(null);
txtArea=new JTextArea( );
lblFactorial=new JLabel("FACTORIAL
scpScroll=new JScrollPane(txtArea);
DEL:");
scpScroll.setBounds(50,100,400,150);
lblFactorial.setBounds(50,20,200,20);
getContentPane( ).add(scpScroll);
getContentPane( ).add(lblFactorial);
}
//evento de los botones
92
public
void
if(nmero!=1)
actionPerformed( ActionEvent e ){
imprimir(" * ");
if(e.getSource( ) = = btnProcesar)
nmero--;
procesar( );
if(e.getSource( ) = = btnBorrar)
imprimir(" = "+factorial);
borrar( );
//mtodo procesar
return
//se
declara
un
acumulador
que
Integer.parseInt(txtNmero.getText( ));
int factorial=1;
//mtodo borrar
GUI
txtNmero.setText("");
intnmero=getNmero( );
txtArea.setText("");
txtNmero.requestFocus( );
del nmero * i
while(nmero>=1){
factorial *= nmero;
imprimir(""+nmero);
misma lnea*/
txtArea.append(lnea);
finalizar la operacin */
Ejercicio
Realizar un programa, utilizando la repeticin do while, que ingrese un
nmero entero y un exponente y muestre el resultado.
93
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
txtNmero.setBounds(110,
40,
40,
20);
public
extends
class
RepeticionDoWhile
JApplet
getContentPane( ).add(txtNmero);
implements
ActionListener {
lblExponente=new
JLabel("Exponente:");
lblExponente.setBounds(200,20,100,2
JLabel lblNmero,lblExponente;
0);
JTextField txtNmero,txtExponente;
getContentPane( ).add(lblExponente);
JButton btnProcesar,btnBorrar;
JTextArea txtArea;
JScrollPane scpScroll;
// GUI
getContentPane( ).add(txtExponente);
new
JButton("Procesar");
btnProcesar.setBounds(300, 20, 150,
lblNmero=new JLabel("Nmero:");
20);
lblNmero.setBounds(100,20,100,20);
btnProcesar.addActionListener(this);
getContentPane( ).add(lblNmero);
getContentPane( ).add(btnProcesar);
94
int i=exponente;
btnBorrar = new JButton("Borrar");
btnBorrar.setBounds(300,
40,
150,
20);
btnBorrar.addActionListener(this);
do{
getContentPane( ).add(btnBorrar);
producto *= nmero;
i--;
txtArea=new JTextArea( );
scpScroll=new JScrollPane(txtArea);
scpScroll.setBounds(50,100,400,150);
getContentPane( ).add(scpScroll);
y el producto
imprimir(""+nmero+" ^ "+exponente+"
public
void
= "+ producto);
actionPerformed( ActionEvent e ){
if(e.getSource( ) = = btnProcesar)
procesar( );
if(e.getSource( ) = = btnBorrar)
return
borrar( );
Integer.parseInt(txtNmero.getText( ));
}
// mtodo que lee el exponente de la
// mtodo procesar
GUI
Integer.parseInt(txtExponente.getText(
));
int producto=1;
// mtodo borrar
intnmero=getNmero( );
int exponente=getExponente( );
txtNmero.setText("");
txtExponente.setText("");
txtArea.setText("");
95
txtNmero.requestFocus( );
txtArea.append(lnea + "\n");
JTextArea
96
97
import java.awt.*;
txtArea.setBounds(125,150,50,100);
import java.awt.event.*;
import javax.swing.*;
txtArea.setEditable(false);
public
extends
class
NmerosAleatorios
JApplet
implements
txtArea.setFont(new
Font("Comic
ActionListener{
Sans MS",1,80));
getContentPane( ).add(txtArea);
JLabel lblTitulo;
JButton btnJugar;
public
JTextArea txtArea;
actionPerformed(ActionEvent e){
// GUI
if(e.getSource( ) = = btnJugar)
jugar( );
getContentPane( ).setLayout(null);
//color de fondo
getContentPane( ).setBackground(ne
w Color(107,249,100));
1y6
Dado",SwingConstants.CENTER);
imprimir(""+num);
lblTitulo.setBounds(100,50,100,20);
getContentPane( ).add(lblTitulo);
btnJugar.setBounds(100,100,100,20);
txtArea.setText(s);
btnJugar.addActionListener(this);
getContentPane( ).add(btnJugar);
void
98
La anterior fue una breve gua para iniciar y dar conocer al estudiante
el manejo de las funciones (subprocesos) en Pseint, un tema muy
comn y utilizado en la programacin.