Académique Documents
Professionnel Documents
Culture Documents
EUROAMERICANO
INFORMTICA NETWORKING
RECOPILADO POR:
DOCENTE: ING. DANNY AVILEZ C.
14 MAYO 2014
Contenido
INTRODUCCIN .............................................................................................................................................. 1
TECNOLOGA ORIENTADA A OBJETOS..................................................................................................... 2
Cules son las ventajas de un lenguaje orientado a objetos? .............................................................. 3
EL MODELO ORIENTADO A OBJETOS ....................................................................................................... 4
OBJETOS ........................................................................................................................................................... 4
ESTRUCTURA DE LA PROGRAMACION EN JAVA ................................................................................... 6
LA CLASE ......................................................................................................................................................... 6
ATRIBUTOS:................................................................................................................................................. 6
LOS MTODOS .......................................................................................................................................... 14
Parmetros: ............................................................................................................................................... 16
Tipos de Parmetros: ................................................................................................................................ 17
Encapsulado.................................................................................................................................................. 17
LA IMPLEMENTACION DE LOS MTODOS Y LA INSTANCIAS DE LAS CLASES .......................... 24
ASIGNACIN: ............................................................................................................................................ 24
Asignacin Directa: .................................................................................................................................. 24
Asignacin Indirecta : ............................................................................................................................... 24
ESTRUCTURAS CONDICIONALES:........................................................................................................ 28
INSTANCIANDO CLASES ........................................................................................................................ 44
CICLOS Y ARREGLOS .................................................................................................................................. 50
1. CICLO FOR.............................................................................................................................................. 50
2. CICLO WHILE ........................................................................................................................................ 51
3. ARREGLOS ............................................................................................................................................. 54
2014
INTRODUCCIN
En el mbito de la ingeniera
primordial, debido a esto es indispensable que el estudiante de ingeniera tenga slidas bases
de pensamiento lgico computacional que le permita en futuros cursos desempearse
eficientemente, para ello tiene que comprender la forma como se resuelven problemas reales a
travs de la aplicacin de los objetos. Adems comprender todos los datos y operaciones
implcitas y explicitas que se plantean en un problema y que son necesarios para su solucin.
2014
2014
Construccin de prototipos
2014
Objetos
Clases
Herencia
Envo de mensajes
OBJETOS
Entender que es un objeto es la clave para entender cualquier lenguaje orientado a
objetos.
Existen muchas definiciones que se le ha dado al Objeto. Primero empecemos
entendiendo que es un objeto del mundo real. Un objeto del mundo real es cualquier cosa que
vemos a nuestro alrededor. Digamos que para leer este artculo lo hacemos a travs del
monitor y una computadora, ambos son objetos, al igual que nuestro telfono celular, un rbol
o un automvil.
Analicemos un poco ms a un objeto del mundo real, como la computadora. No
necesitamos ser expertos en hardware para saber que una computadora est compuesta
internamente por varios componentes: la tarjeta madre, el chip del procesador, un disco duro,
una tarjeta de video, y otras partes ms. El trabajo en conjunto de todos estos componentes
hace operar a una computadora.
Internamente, cada uno de estos componentes puede ser sumamente complicado y
puede ser fabricado por diversas compaas con diversos mtodos de diseo. Pero nosotros no
necesitamos saber cmo trabajan cada uno de estos componentes, como saber que hace cada
uno de los chips de la tarjeta madre, o cmo funciona internamente el procesador. Cada
componente es una unidad autnoma, y todo lo que necesitamos saber de adentro es cmo
interactan entre s los componentes, saber por ejemplo si el procesador y las memorias son
compatibles con la tarjeta madre, o conocer donde se coloca la tarjeta de video. Cuando
conocemos como interaccionan los componentes entre s, podremos armar fcilmente una
computadora.
4
2014
Para redondear estas ideas, imaginemos que tenemos estacionado en nuestra cochera un
Ford Focus color azul que corre hasta 260 km/h. Si pasamos ese objeto del mundo real al
mundo del software, tendremos un objeto Automvil con sus caractersticas predeterminadas:
Marca = Ford
Modelo = Focus
Color
= Azul
2014
Es un ente que se usa para modelar un problema de la realidad, caracterizado por unos
atributos (propiedades) y unos mtodos (acciones) que le permiten resolver dicho problema.
Es debido anotar que es el problema quien genera la clase y no lo contrario, dado que de las
particularidades del problema y de su contexto mismo es de donde se abstraen las propiedades
(atributos) y mtodos (acciones) de la clase. Donde los atributos son las caractersticas propias
del problema (datos necesarios) y los mtodos son las acciones que debe ejecutar la clase
para resolver el problema (manipulando los datos con las operaciones necesarias).
As por ejemplo:
Se quiere disear una clase que permita calcular el rea y el permetro de un rectngulo.
Recordemos que el rea es igual a la base por altura y el Permetro es igual a 2 veces la
base mas 2 veces la altura.
Altura
Base
Caracterizamos los atributos y los mtodos identificando cada uno de ellos con un nombre.
ATRIBUTOS:
Para el problema son necesarios dos: Los llamaremos Base y Altura que son los datos
bsicos y suficientes para realizar los clculos.
Tenemos que para calcular el rea:
Es necesario un mtodo que se encargue de hacer la operacin (multiplicacin) Base por
Altura y lo llamaremos Calcular rea.
2014
2014
Solucin:
Estos son los datos que el problema nos ofrece y que utilizaremos para poder disear la y que
utilizaremos en los mtodos.
Las operaciones a realizar:
Bsico: Genera un mtodo para calcular nmero de horas por Valor de la hora, Lo
llamaremos Bsico.
Descuento seguro social: Genera un mtodo para calcular un descuento a partir del
valor del bsico. Lo llamaremos DescuentoIess.
Descuento por retencin en la fuente: Genera un mtodo para calcular otro descuento
que se hace sobre el rango del valor del bsico. Lo llamaremos DescuentoRetencion.
Subsidio: Genera mtodo que evala el valor del bsico y determina si recibe subsidio
para asignarle el valor correspondiente sino asignara cero. Lo llamaremos Subsidio.
Total a pagar: Este concepto es implcito al problema y genera un mtodo que se usar
para calcular el pago final a partir del valor bsico restndole los dos descuentos. Lo
llamaremos Neto.
Observacin:
Volvemos a resaltar, los valores que se pueden calcular no son atributos (tenga eso en cuenta)
sino que se pueden considerar como mtodos. Observemos que algunos mtodos necesitan
utilizar no los atributos sino otros mtodos para poder realizar sus operaciones como es el
caso de descuentoIss que necesita del mtodo bsico para poder calcular su propio valor, de
igual manera el mtodo neto necesita de los otros para efectuar la operacin. (Esto es una
caracterstica del diseo de clases). Adems diseamos los mtodos de pedirdatos y
mostrardatos.
Ntese que aunque podramos haber diseado un solo mtodo (Neto) para hacer todos
los clculos correspondientes, no lo hacemos con el fin de acogernos a una regla que ms
adelante explicaremos (Encapsulado).
8
2014
Nota: Los problemas cmo tales tienen unas propiedades que seran las causas de l, los
atributos.
Los mtodos, que son acciones del problema, se modelan de tal forma que se piensa en ellos
como lo que se hace con los atributos.
Ejercicios Resueltos
A continuacin se plantean 3 problemas y se disea la solucin de ellos, haga un
anlisis de cada solucin.
1. Disee una clase que permita conocer el resultado de una eleccin de alcalde puesto
que el resultado es el siguiente:
El candidato A tiene el 35% de los votos validos, el candidato B tiene el 12% de los
votos validos y el candidato C tiene el 42% de votos validos. Los votos en blanco
corresponden al resto de los votos validos. Los votos totales son X y el 78% de estos votos
son validos.
2014
Clase Votacin
Votos
Pedirdatos()
Calcularvotosvalidos()
calcularvotoscanA()
calcularvotoscanB()
calcularvotoscanC()
calcularvotosblanco()
mostrarresultados ()
2. Disear una clase que permita calcular el total de estudiantes de un colegio teniendo en
cuenta que el colegio tiene 6 salones los cuales se distribuyen de la siguiente manera.
El grado primero tiene X estudiantes, el grado segundo tiene 1/3 que el grado primero, el
grado tercero es dos veces el grado 2, el grado cuarto tiene Y estudiantes, el quito grado tiene
de cuarto grado mas el total de segundo, 6 tiene1/8 de la poblacin estudiantil anterior.
Clase Colegio
E_1
E_4
pedir_datos()
calcular_Est_2()
calcular_Est_3()
calcular_Est_5()
calcular_Est_6()
calcular_Total_Est()
mostrar_Resultados()
10
2014
3. Dados A, B, C y D que corresponden a medidas de trozos de madera disee una clase que
determine si se puede construir una mesa de: 2 patas, 3 patas y 4 patas.
Clase Mesa
A, B, C, D
pedir_datos()
calcular_mesa_2()
calcular_mesa_3()
calcular_mesa_4()
mostrar_Resultados()
LOS ATRIBUTOS
Pueden contener datos que toman valores diferentes, los cuales pertenecen a un conjunto o
rango determinado que a su vez pueden ser datos discretos o continuos de una naturaleza
especfica, dependiendo del lenguaje de programacin con el que se trabaja.
Dado que un atributo posee un dato de un tipo determinado, es necesario diferenciar entre el
identificador del atributo y el contenido que albergar, veamos:
Crearemos un atributo Sueldo y le daremos un valor de 1500
Identificador
sueldo
1500
Contenido Actual
Observemos que el identificador (Sueldo) hace referencia a un valor dado (1500) que es el
contenido que en este momento le fue asignado, tengamos en cuenta que podemos asignarle
otro valor (en Sueldo guarde ahora el valor de 300).
11
2014
Identificador
Sueldo
300
Contenido Actual
Esto caracteriza el contenido como el valor cambiante que depende de las operaciones que
se hagan en el, pero el identificador que se le asigno no cambia nunca. Para poder accesar al
contenido del atributo hay que hacer referencia a su identificador. El concepto de es asociado
en programacin estructurada con el concepto de variable.
Hay que tener en cuenta al momento de darle un identificador (nombre) a un atributo es
recomendable relacionarlo con el concepto que queremos referenciar (mnemotcnica).
Como regla general no es permitido mezclar los tipos de datos, es decir, un atributo puede
manejar solo un tipo de dato a la vez, tomando valores que no deben violar el rango o
dominio que se define para dicho tipo de dato.
En trminos generales existen tres tipos:
Numricos
Otra caracterstica de los tipos de datos que podemos mencionar es que tienen definida una
serie de operaciones, es decir, tienen definido lo que podemos hacer con ellos; operaciones
que requieren el uso de operadores. Finalmente cabe anotar que el usuario (programador)
puede definir sus propios datos a partir de los datos primitivos definidos por el lenguaje de
programacin (Tema que abordaremos mas adelante).
12
2014
reservada
Byte
Short
Int
Desde
-2147483648
hasta
2147483647
Long
Desde
9.223.372.036.854.775.808 a
9.223.372.036.854.775.807
Rango de Valores
reservada
String
cadena
de
caracteres
segn
usuario
Rango de Valores
reservada
Boolean
13
2014
Aplicando el concepto de tipos de datos, sobre los atributos al definir stos se le debe indicar
su dominio, es decir, el tipo de dato que va a manipular.
Tipo de Dato Identificador;
Ejemplo:
String nombres;
Int Sueldo;
Observaciones generales sobre los identificadores de los atributos en cualquier lenguaje:
Podramos enunciar otras pero dejaremos que la experiencia y la prctica con los
compiladores les ensee ms.
LOS MTODOS
Son acciones que le dan la funcionalidad a la clase, y como tal definen el
comportamiento que stos exhiben al momento de ser activados (usados). De este modo cada
mtodo debe realizar una tarea especfica de acuerdo al problema que se quiere solucionar con
la clase en mencin.
En una clase podemos definir cuatro tipos de mtodos:
a)
Constructores:
Estos mtodos constituyen operaciones de inicializacin de valores para los atributos,
Nombre clase ()
Gua didctica de la Materia de Java Jdk parte 2
Docente: Ing. Danny Avilez Castillo
2014
Ejemplo:
personas();
En Java los constructores tiene el mismo nombre de la clase y una clase puede tener varios
constructores cambiando solamente los parmetros que se le pasan.
b)
Destructores :
Estos tienen como funcionalidad liberar los recursos de memoria utilizados por la clase
para su trabajo. Su activacin implica que el objeto no podr ser usado para tareas posteriores
en el mbito del programa que est haciendo uso de l .
Sintaxis:
Palabra reservada :
ejemplo:
finalize()
protected void finalize()
d)
Palabra reservada :
Void Idenfificador;
ejemplo:
void Pedirdatos();
Funciones :
Al igual que los procedimientos, una funcin constituye un mtodo que realiza
operaciones sobre datos de un tipo especfico; datos que son ledos desde los atributos, otros
mtodos de la clase y/o pasados por parmetros, pero que a diferencia de los procedimientos,
las operaciones efectuadas sobre dichos datos devuelven uno y solo un valor que por supuesto
tiene un tipo definido y el cual caracteriza el tipo de la funcin.
15
2014
Sintaxis:
Palabra reservada :
Ejemplo:
int calculararea()
16
2014
Observacin:
Cada vez que necesitamos valores cambiantes en un mtodo y no conocemos su contenido,
debemos hacer la referencia en el mtodo con un parmetro.
Tipos de Parmetros:
Dependiendo que los parmetros retornen un valor o no al ser manipulados en un
mtodo, se clasifican en :
1. Parmetros por valor : Cuando el parmetro es utilizado solamente para introducir
valores al mtodo que lo procesa.
2. Parmetros por referencia: Cuando el parmetro al ser asignada al mtodo puede
cambiar o modificar su valor durante su utilizacin en el mtodo, manteniendo esos
cambios de all en adelante para dar a conocer dicho cambio a los dems miembros de
la clase, quienes pueden utilizarlo y modificar de nuevo dicho valor.
Para ver cmo trabajan conjuntamente los atributos y los mtodos, debemos comprender
primeramente el concepto de encapsulado.
Encapsulado
El encapsulamiento define dos reglas, Una aplicada sobre los atributos que establece
que para acceder a ellos (asignarles valores o leer los mismos), se deben definir mtodos
especializados en dichas operaciones de tal manera que los atributos son manejados por medio
de la activacin de dichos mtodos .
La Otra regla est referida sobre los mtodos, determinando sobre stos un criterio de
unicidad funcional, es decir, que un mtodo debe encargarse de realizar una tarea (proceso)
nica ; De esta forma una clase define tantos mtodos como tareas deba efectuar.
Como notamos en el encapsulado la esencia de proteger los datos con la utilizacin de
mtodos implica diferenciar diversas secciones dentro de una clase:
Seccin Privadas: En esta seccin se declaran los atributos y mtodos que solo pueden
ser accedida por los mtodos de la misma clase, los descendientes no tienen acceso a ellos.
17
2014
Seccin Protegida: Aqu se declaran los atributos y mtodos de la clase que pueden ser
accedidos por sus propios mtodos y por los mtodos de sus descendientes.
Seccin Pblica: Se declaran los mtodos que la clase a poner a disposicin de quien lo
necesite.
clase
Seccin Privada
Atributos, Mtodos
Seccin Protegida
Atributos, Mtodos
Seccin Publica
Mtodos
Sintaxis
Class Identificador {
private
Tipo de dato Identificador de Atributos;
public
Tipo dato Identificador del metodo() {implementacin del mtodo}
}
Ahora retomaremos los ejercicios planteados al principio y veremos su respectiva solucin
aplicando todos los conceptos estudiados hasta este momento, la parte de implementacin de
los mtodos la abordamos mas adelante en este capitulo, por ahora nos enfocamos en el
diseo de la clase. Para respetar la aplicacin del encapsulado los mtodos de pedir
informacin y mostrar informacin se disean en la seccin pblica.
18
2014
{ implementacin };
int Obteneraltura()
{ implementacin }
int Calculararea()
{ implementacin }
int Calcularperimetro()
{ implementacin };
};
Explicacin:
En la estructura definida en la clase notamos varios aspectos de importancia:
Existen dos atributos (base, altura) que como se defini deben poseer un dominio (tipo de
dato) que para el caso es int, la razn para ello es que deben ser valores enteros.
Los dos atributos se encuentran en la seccin privada atendiendo a la regla del
encapsulamiento que nos dice que debemos proteger todos los atributos.
En la seccin pblica tenemos que:
Trabajamos con un constructor al cual le llamamos como la clase
rectangulo ,Se
19
2014
mtodo;
Obtenerbase
Obteneraltura .
Seguidamente se disean los mtodos que han de ser las acciones para lo cual se ha
diseado la clase, siendo stos Calculararea y Calcularperimetro, adems un mtodo
para mostrar resultados.
Cabe anotar hacer referencia en la sintaxis del lenguaje java definicin de los mtodos en
java implica la implementacin del cdigo de los mismo dentro de la clase, algo que
omitimos ahora pero mas adelante atenderemos..
2014
float Neto(){};
};
Explicacin:
En este ejemplo utilizamos 2 atributos con dominio distinto, numerohoras de tipo entero y
valorhora de tipo real, esto con el fin de especificar el valor que puede contener cada atributo.
Observe la sintaxis de los mtodos, adems tenga en cuenta que para los mtodos
asignarnhoras y asignarvalor se usan parmetros, esto debido a que se hace necesario que
estos mtodos interacten con el medio, para poder adquirir un valor exterior, los parmetros
utilizados en dichos mtodos son del mismo dominio del atributo ya que ellos lo que harn
ser guardar los valores que tomen en los atributos.
Analice porque no diseamos un solo mtodo (pedirdatos)?
Ntese que para cada accin de la clase, (tarea a realizar), hemos diseado un mtodo
especfico con el fin de mantener el encapsulado y poder organizar el diseo.
Bien ahora planteremos algunos ejemplos y disearemos su solucin, pero la explicacin y
entendimiento corre por cuenta del lector.
Ejemplo 3.
El almacn vende ms desea en su aniversario hacer una promocin en su variedad de
productos, para ello los ha clasificado en 3 categoras de la siguiente manera
El almacn propone a sus compradores que lleven una cantidad de productos de una sola
categora hacer los siguientes descuentos; 5% para artculos de categora 1, 8% para artculos
de categora 2 y 12% para artculos de categora 3.
Disee una clase que permita al almacn saber cuanto debe pagar un comprador que lleva
solamente artculos del mismo tipo.
Observacin:
21
2014
Tenga en cuenta los valores que le dan en el problema y las acciones que deben hacer para
lograr el resultado.
class almacen{
Private
int Cantidad ;
int Valor;
string Tipo ;
public :
almacen(){};
void Asignarcantidad(int valcant){};
void AsignarValor(int valvalor){};
void Asignatipo(string valtipo){};
int Obtenercantidad(){};
int ObtenerValor(){};
string Obtenertipo(){};
int Descuento(){};
int Valorneto(){};
int TotalaPagar(){};
};
Observaciones:
El mtodo descuento evaluara el tipo de los articulo que se compra y calcula el valor
del descuento utilizando el valorneto .
22
2014
Ejemplo 4.
Un estudiante de informtica desea controlar las notas de su asignatura de programacin, el
profesor va a hacer 3 evaluaciones dndole un porcentaje a cada nota de la siguiente manera:
El profesor plantea que para aprobar la asignatura se debe tener un promedio de 3.5, el
estudiante desea saber en que evaluacin le fue mal para reforzar los temas evaluados.
class testudiante
{
private
float primeranota;
float segundanota;
float terceranota;
Public
testudiante() { implementacion};
void AsignarNota1(float valnota1) { implementacion};
void AsignarNota2(float valnota2) { implementacion};
void AsignarNota3(float valnota3) { implementacion};
float obtenernota1(){ implementacion};
float obtenernota2(){ implementacion};
float obtenernota3(){ implementacion};
float calculapromedio(){ implementacion};
bool evaluaaprobacion(){ implementacion};
string notamenor(){ implementacion};
};
23
2014
Observaciones
La funcin calculapromedio se encarga de tomar cada nota y multiplicarla por su porcentaje
para luego sumarlas las tres.
La funcin evaluaaprobacion que devuelve un valor lgico determina si aprob o no la
asignatura.
La funcin notamenor evala cual de las tres notas fue la menor devolviendo el nmero de la
nota y no su valor.
LA IMPLEMENTACION DE LOS MTODOS Y LA INSTANCIAS DE LAS
CLASES
Cuando se disean las clases y especifican los mtodos se sabe cuales son las acciones que
puede cumplir dicha clase. Bien ahora profundizaremos en cmo esos mtodos son capaces
de resolver su propia tarea usando el cdigo necesario para que trabaje adecuadamente.
ASIGNACIN:
Cuando hay que guardar un valor en algn atributo o hacer operaciones con datos y saber sus
resultados es necesario asignar dicho valor.
La asignacin consiste en guardar valores en los datos, estos se pueden de varias maneras:
Asignacin Directa:
Consiste en guardar el valor de manera que no dependa sino del dato mismo.
Ejemplo: Guardemos 5 en el atributo Nmero.
Numero = 5
Asignacin Indirecta :
Ocurre cuando el valor de un dato depende de la operacin de otros datos que interactan.
Ejemplo: En a guarde la operacin de x + y ,entonces a depende de los valores que tomen x ,
y. a = x + y
24
2014
Nota:
Cuando usamos los parmetros asignamos al atributo o dato al cual le queremos pasar dicho
valor, el identificador del parmetro esto es en tiempo diseo luego cuando se corre el
programa se asigna el valor que el usuario le pase por el parmetro.
Regla : Para asignar un valor se debe ubicar el identificador del dato en el que queremos
guardar al lado izquierdo y los valores de los datos que se quieren guardar al lado derecho .
Sintaxis
can=3;
num = 10;
nombre = Juan Prez;
suma = num + can
Smb
Ejemplo
olo
Resta
x = 5-3
Suma
a=a+b
Divisi
z=3/9
Multipli
rea = base *
car
25
altura
Gua didctica de la Materia de Java Jdk parte 2
Docente: Ing. Danny Avilez Castillo
2014
class rectangulo
Private
int base, altura;
Public
rectangulo (){
base = 0;
altura = 0;
}
void asignarbase (int valbase ) {
base = valvase;
}
void asignaraltura (int valaltura ) {
altura = valaltura;
}
int obtenerbase () {
return base;
}
int obteneraltura (){
return altura;
}
int calculararea () {
int area;
area = Obtenerbase() * Obteneraltura() ;
return area;
}
int calcularperimetro (){
int permetro;
permetro = (Obtenerbase() * 2 ) + (Obteneraltura() * 2);
return permetro;
}
26
2014
ANALISIS:
1. Todos los mtodos deben comenzar con el tipo de dato que devuelven seguido del nombre
del mtodo, entre parntesis la lista de parmetros , si los hay , teniendo en cuenta que en la
declaracin de los parmetros va primero el tipo de dato y luego el identificador del mismo.
Si el mtodo no devuelve ningn valor se usa la palabra reservada Void que indica que el
mtodo es un procedimiento .
Ejemplo:
Void Asignarbase (int valbase).
Si el mtodo devuelve algn valor, entonces es una funcin, para esto se utiliza el tipo de
dato y el identificador del mtodo.
Ejemplo:
Int Trectangulo Obtenerbase() .
La palabra (return dato indica el valor que el mtodo debe devolver).
2. Todos los mtodos contienen un segmento principal que comienza con { y termina en },
dentro del cual se escriben las instrucciones que han de ejecutar dicho mtodo.
En algunos casos es necesario declarar variables (datos) locales a un mtodo. Una variable
local es aquella que existe solo dentro del mtodo en que se declara, es decir, solo puede ser
usada entre el inicio y finalizacin de dicho mtodo, especficamente entre los smbolos de
llave de apertura ({ ) y llave de cierre ( }) del cuerpo del mtodo. El uso de variables locales
permite simplificar operaciones para que las instrucciones de una implementacin sean menos
complejas y consecuentemente ms entendibles. Como ejemplo podemos mencionar el caso
de la variable local : int rea en la implementacin de la funcin Calculararea, as la variable
rea recibe el valor calculado para el rea (obtenerbase() * obteneraltura()) y posteriormente
la funcin Calculararea devuelve dicho valor mediante la instruccin return area .
27
2014
consistir en la declaracin de
2014
Por ejemplo una frase como esta es una instruccin condicional: Si maana llueve, entonces
me quedar en casa. En ella vemos que la expresin a evaluar es si maana llueve y la
accin a ejecutar si dicha condicin es cierta ser me quedar en casa.
Sin embargo podemos hacer algo en caso de que la condicin sea falsa, por ejemplo: Si
maana llueve entonces me quedar en casa, sino ir a clases. Aqu podemos apreciar que se
incluye una nueva parte en el condicional (sino) que indica que se va expresar la accin a
realizar cuando la expresin a evaluar sea falsa, que para el ejemplo sera ir a clases.
Veamos como se aplican estos conceptos en trminos de programacin.
La expresin o condicin que se evala en una estructura condicional es una expresin
booleana, que toma uno y solo uno de dos valores posibles, True o False. Una expresin
booleana se construye por medio de operadores relacionales y/o lgicos que se aplican a unos
operandos (datos, variables, atributos y funciones del mismo dominio).
Las expresiones lgicas estn compuestas de la siguiente manera :
operando1
Operador
operando2
Donde operando1 y operando2 son datos sobre los cuales cae el peso de la comparacin y el
operador es la operacin de la comparacin que se ha de hacer.
Tipo de operadores relacionales bsicos :
OPERADOR
SIMBOL
O
29
Mayor que
>
Mayor o igual
>=
Menor que
<
Menor o igual
<=
Diferente
!=
Igualdad
==
Gua didctica de la Materia de Java Jdk parte 2
Docente: Ing. Danny Avilez Castillo
2014
Estos son operadores binarios, es decir, necesitan dos operandos que sern los dos datos que
ellos han de comparar. Si la expresin es cierta, la expresin booleana retorna el valor true, en
caso contrario, asume un valor de false.
Por ejemplo, las siguientes son expresiones booleanas :
a) 3 = = 3;
b) 4+2 < 8;
c) A > = B
Veamos que cada operador requiere dos operandos que se ubican al lado izquierdo y derecho
respectivamente. Las expresiones tomarn los siguientes valores de verdad:
a) 3 == 3
verdadero (true)
b) 4+2 < 8
verdadero (true)
c) A> = B falso (false) por que la letra A tiene un valor Ascci menor que el de
la letra B.
Como ejercicio intente determinar el valor de verdad de las siguientes expresiones booleanas:
a) 4*2+1 <> 3*3-2
b) 3/2 != 6/4
c) m < e
d) 5 != (3-2)*2
Como es de esperar la expresin booleana tambin puede estar formada por operadores
lgicos.
Un operador lgico no es ms que un conectivo lgico que puede comparar (asociar) dos o
ms expresiones booleanas simples como las anteriores formando as expresiones booleanas
compuestas. Los operadores lgicos requieren como operandos (datos a relacionar o
comparar) valores y expresiones booleanas (datos que toman el valor true o false).
Los operadores lgicos en JAVA son los siguientes:
30
Operador
Smbolo
Y Lgico
&&
O Lgico
Negacin Lgica
2014
A excepcin de la negacin lgica que es un operador unario (que requiere solo un operando)
los dems operadores son binarios (requieren dos operandos) y como se ha dicho estos
operandos son datos booleanos (true o false), cada operador lgico posee una tabla de verdad
mediante la cual se establece que valor asume al relacionar el o los valores lgicos. Las tablas
son las siguientes:
Tabla del Y
Expresin 1
Expresin
Expresin 1 Y Expresin 2
True
True
True
True
False
False
False
Trae
False
False
False
False
Expresin 1
Expresin 2
Expresin 1 O Expresin 2
True
True
True
True
False
True
False
True
True
False
False
False
Tabla del O
Tabla de la Negacion
Expresin
Negacion
Expresin
True
False
False
True
En estas tablas debemos anotar que Expresin - uno , Expresin - dos y Expresin
representan indistintamente cualquier expresin u operando de tipo booleano y que los
31
2014
(2 = 2) = true.
Con estos valores booleanos procedemos a aplicar el operador and as :(True) && (False).
Buscamos en la tabla de verdad la combinacin true false para el Y (donde expresin - uno
corresponde a true y expresin - dos a false).
As (true) And (false) = false.
Es decir, que la expresin booleana(3=5) Y (2=2) = false.
Ntese aqu el uso de parntesis para indicar el comienzo y finalizacin de cada expresin
booleana.
Miremos ahora este ejemplo :
(A = A) (3-1 <> 2).
La primera expresin (A = A) es true.
La segunda expresin (3-1 <> 2) es false.
El O entonces relacionar los valores as : (true) O (false).
Dndonos como resultado final el valor true para la expresin booleana planteada.
Como podemos pensar la construccin de expresiones booleanas compuestas requieren el uso
de parntesis. Existe un concepto llamado procedencia de operadores (lgicos
y/o
relacionales) que es afectada por el uso de los parntesis. Esta procedencia indica que parte de
la expresin booleana compuesta se empieza primero y en que orden se evalan las siguientes
as como tambin se van relacionando cada expresin simple conectada con otras por medio
del operador lgico respectivo.
32
2014
Bien , ahora estudiaremos las estructuras condicionales que presentan el siguiente formato :
a) Condicional Simple:
Palabra
( Expresin )
Condicional
Por Verdadero
Instruccin 1
Instruccin n
En
instrucciones de 1..n , pero en caso de ser falso no ejecutar ninguna, el compilador seguir
ejecutando las otras instrucciones.
Estructura condicional simple
if (condicin) {
instrucciones a ejecutar;
};
El condicional tambin permite evaluar una expresin y determinar las acciones a seguir por
verdadero o por falso de la siguiente manera :
b) Condicional Compuesto :
Palabra
( Expresin )
Condicional
Por Verdadero
Instruccin 1
Instruccin n
instrucciones
Por Falso
Instruccin a
Instruccin z
dependiendo del resultado de la evaluacin ya sea por verdadero o por falso ( recuerde que se
ejecutara un conjunto de instrucciones ). En el condicional simple si no era verdadero el
compilador no ejecutaba ninguna de las instrucciones del condicional.
33
2014
Condicin
Instruccin a ejecutar
Por Verdadero
Por Falso
bsico * 0.08
bsico * 0.12
34
2014
Condicin
Instruccin a ejecutar
Por verdadero
bsico * 0.10
Por falso
Estructura de evaluacin
if Condicin
Instruccin a ejecutar
Por verdadero
Por falso
25000
0
2014
public
trabajador(){};
void asignarnhoras(int valhoras){
numerohoras=valhoras;
}
void asignarvalor(float valvalor){
valorhora=valvalor;
}
int obtenernhoras (){
return numerohoras;
}
float obtenervalor(){
return valorhora;
}
float basico(){
float sueldo;
sueldo = obtenerhoras ( ) * obtenervalor ( );
return sueldo;
}
float descuentoiss(){
float descuento;
if bsico() < 280000
{ descuento = basico( ) * 0.08;
}
else
{ descuento = basico( ) * 0.12;
};
return descuento;
36
2014
}
float descuentoretencion(){
float retencin;
if basico() > 400000
{ retencin = basico( ) * 0.1;
}
else
{ retencin = 0;
};
return retencion;
}
float Subsidio(){
float valorsub;
if basico( ) < 280000
{ valorsub = 25000;
}
else
{ valorsub = 0;
};
return valorsub;
}
float Neto(){
float sneto;
sneto = basico( ) - descuentoiss( ) - descuentoretencin + subsidio;
return sneto;
}
}
37
2014
Instruccin a ejecutar
Por Verdadero
ValorNeto * 0.07
Por Falso
If
Condicin2
Instruccin a ejecutar
Por Verdadero ValorNeto * 0.08
Por Falso
ValorNeto * 0.12
2014
float Valor;
string Tipo ;
public :
almacen(){
cantidad=0;
valor=0;
tipo= ;
}
void Asignarcantidad(int valcant){
cantidad=valcant;
}
void AsignarValor(int valvalor){
valor=valvalor;
}
void Asignatipo(string valtipo){
tipo=valtipo;
}
int Obtenercantidad(){
return cantidad;
}
float ObtenerValor(){
return valor
}
string Obtenertipo(){
return tipo;
39
2014
}
float Descuento(){
float desc;
If obtenertipo( ) = = 1
{ desc = Valorneto( ) * 0.05;
}
Else
If obtenertipo( ) = = 2
{ desc = valorneto ( )* 0.08
}
Else
{ desc = valorneto( ) * 0.12;
}
return desc;
}
float Valorneto(){
return (obtenervalor( )*obtenercantidad( ));
}
float TotalaPagar(){
float pago;
pago= valorneto( )-descuento( );
return pago;
}
}
2014
resultante de la operacin valorneto por porcentaje de descuento con el fin de hacer mas
legible y entendible el cdigo que se escriba.
Clase estudiante
Caractersticas de los mtodos que necesitan evaluar condiciones:
El
mtodo
EvaluarAprobacin
debe
determinar
si
el
promedio
obtenido
(CalcularPromedio) es mayor que 3.5 para saber si aprob o no. Note que devuelve falso o
verdadero.
Estructura de evaluacin:
If
Condicin
Instruccin a ejecutar
Por verdadero
True
Por falso
False
2014
class testudiante
{
private
float primeranota;
float segundanota;
float terceranota;
Public
testudiante() {
primeranota=0;
segundadota=0;
terceranota=0;
}
void AsignarNota1(float valnota) {
primeranota=valnota;
}
void AsignarNota2(float valnota) {
segundadota=valnota;
}
void AsignarNota3(float valnota) {
terceranota=valnota;
}
float obtenernota1(){
return primeranota;
}
float obtenernota2(){
return segundadota;
}
42
2014
float obtenernota3(){
return terceranota;
}
float calculapromedio()
{
float suma;
suma = obtenernota1( ) + obtenernota2( ) + obtenernota3( );
return (suma /3);
}
bool evaluaaprobacion()
{
if calcularpromedio( ) >= 3.5 then
return(true);
else
return(false);
}
int notamenor(){
if((obtenernota1()<obtenernota2())&&(obtenernota1()<obtenernota3( ))
{
return(1);
}
else
if((obtenernota2()<obtenernota1())&& (obtenernota2()<obtenernota3())
{
return(2);}
else
{ return(3);
}
}
43
2014
INSTANCIANDO CLASES
Hasta ahora nos hemos dedicado a disear e implementar clases que son solucin a
problemas, pero nos embargan unas preguntas:
bueno y como se usan esas clases?
Si funcionan ?
Como las pruebo ?
Bien para poder utilizar una clase debemos :
Primero definir una instancia de la clase, lo cual es crear una o varias referencias a la clase a
travs de nombres o identificadores que definimos, como lo hacemos cuando definimos los
atributos :
int sueldo;
Para definir una instancia seguimos la misma regla:
testudiante alumno;
Donde testudiante es la clase y alumno es la instancia de la clase.
Segundo crear la instancia alumno de la siguiente manera:
alumno= new testudiante();
Donde new es una palabra reservada de java que permite crear el espacio de memoria para la
instancia.
Hay que tener en cuenta que en java cuando se crea la instancia automticamente se llama el
constructor y ejecuta las instrucciones que hallamos definido en el, lo cual indica que si lo
definimos en la clase con parmetros debemos pasarle los valores en el mismo momento de
crear dicha instancia.
Tercero hacer el llamado de los mtodos asi:
alumno.AsisgnarNota1(10);
alumno.AsisgnarNota2(50);
alumno.AsisgnarNota3(17);
44
2014
Cuando los mtodos devuelven valores debemos guardar los valores que devuelven en
variables previamente definidas:
float promedio;
promedio = alumno.calculapromedio();
trabajador empleado;
float total;
empleado= new trabajador();
empleado.asignarhoras(36);
empleado.asignavalor(3546);
total=empleado.Neto();
Analisis
1. Definimos la instancia empleado de tipo de clase trabajador.
2. Creamos la instancia con new, ntese que el constructor no ejecuta instruccin alguna
ni tampoco recibe valores como parmetros.
3. Enviamos el valor 36 al atributo numerohoras a travs del mtodo asignarhoras.
4. Enviamos el valor 3546 al atributo valor a travs del mtodo asignavalor.
5. A la variable total le asignamos el resultado de las operaciones que realiza el mtodo
neto.
Operaciones del mtodo neto:
45
2014
llama al mtodo basico, el cual obtiene el valor de los atributos por intermedio
de sus mtodos.
Despus de analizar como se usan las clases a travs de su instancia al lector le pueden
embargar otras preguntas como:
Donde escribo el cdigo que define y crea las instancias?
Por que se dan valores directamente o es que no se pueden ser definidos por el usuario?
Para responder la primera pregunta lo que se debe realizar es crear una clase en java que
implemente el siguiente mtodo:
public static void main(String args[])
Escribiendo dentro de el cdigo correspondiente a la definicin de la instancia y al llamado de
los mtodos respectivos.
Ejemplo de uso de la clase trabajador
import java.io.*;
class Principal{
public static void main(String args[]) {
trabajador empleado = new trabajador();
empleado.asignarhoras(36);
empleado.asignavalor(3546);
System.out.println(empleado.Neto());
}
}
Nota: observe que encabezado incluye la instruccin import java.io.*;
46
2014
Esto es para poder utilizar las clases de entrada y salida. Adems la instruccin
System.out.println se usa para mostrar por pantalla el resultado de cualquier operacin o para
mostrar mensajes al usuario.
Ahora planteamos un problema y desarrollamos su solucin donde se involucren todos los
elementos hasta ahora tratados y responda el interrogante de la segunda pregunta de interfaz
con el usuario.
Problema
Disear una clase que permita manejar la informacin de llamadas en un sai teniendo como
base la duracin de la llamada y el valor del minuto.
Solucin
class Llamada{
int ValMin,Tiempo;
Llamada(){
}
public void LlevaMinuto(int Val)
{
ValMin = Val;
}
public void LlevaTiempo(int Ti)
{
Tiempo = Ti;
}
int TraeMinuto()
{
return ValMin;
}
47
2014
int TraeTiempo()
{
return Tiempo;
}
int ValorLlamada()
{
int Calcula;
Calcula = TraeMinuto()*TraeTiempo();
return Calcula;} }
Clase que instancia
import java.io.*;
class Principal{
public static void main(String args[]){
Llamada Llamar = new Llamada();
int Vmin = 0;
int Tiem = 0;
BufferedReader Tecla = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("Digite el valor del minuto :");
Vmin =Integer.parseInt(Tecla.readLine());
Llamar.LlevaMinuto(Vmin);
System.out.print("Digite el tiempo
:");
Tiem =Integer.parseInt(Tecla.readLine());
Llamar.LlevaTiempo(Tiem);
} catch (IOException varerror) {System.out.println("Error");}
48
2014
49
2014
CICLOS Y ARREGLOS
Una de las situaciones ms comunes que nos encontramos en el mbito de la
programacin, consiste en la necesidad de repetir dentro de un mtodo un conjunto de
instrucciones o repetir varias veces la activacin de un mtodo. Todo esto se puede realizar
utilizando instrucciones repetitivas llamadas ciclos, las cuales vamos a estudiar y analizar a
continuacin.
Ciclos con numero de iteraciones definidas:
1. CICLO FOR
Este se caracteriza por ejecutar las instrucciones que se encuentran dentro de a partir de un
dato inicial, con un incremento automtico de uno en uno hasta un valor final o sea el numero
de iteraciones que necesitamos en el problema.
Sintaxis del ciclo for
for (i=1;i<tamao;i++)
{
conjunto de instrucciones
}
Estructura
i=1:
i<tamao: Expresin que se evala automticamente antes de cada vuelta de ciclo para
determinar si repite nuevamente el conjunto de instrucciones teniendo en cuenta si es
verdadero el resultado de la evaluacin.
i++: Expresin de auto incremento de uno en uno, esto con el objetivo de acercase a un
valor false, que determine la parada del ciclo.
Ejemplo Mostrar los nmeros del 1 al 10
for (i=1;i<=10;i++) {
System.out.println(i);
}
50
2014
que garantice que en algn momento ese valor booleano true se convierte en false para dar
por terminado el ciclo.
Sintaxis del ciclo while
While (condicion=true){
conjunto de instrucciones
condicion = false
}
Estructura del ciclo while
Condicin =true : Es una expresin lgica que se argumenta con valor inicial de
verdadero porque sino el ciclo no ejecutara ninguna instruccin que se encuentre dentro de el.
Condicin =false: Es una expresin lgica que debe resulta de evaluar alguna de las
instrucciones dentro del ciclo y adems debe tomar el valor del false en cualquier iteracin del
ciclo, para garantizar la terminacin del ciclo y no convertir el proceso en algo indefinido.
Esta puede ser la asignacin de un valor determinado, el incremento de un contador o
simplemente el resultado de una operacin aritmtica, asociadas con el operador utilizado en
la condicin de control del ciclo.
Ejemplo:
Mostrar los primeros nmeros que su suma sea menor o igual a 25
i=0;
maximo=25;
suma=0;
while(suma<=maximo)
{
51
2014
System.out.println(i);
I++;
suma=suma+i;
}
El resultado seria 0123456
Anlisis
52
2014
Ntese que suma se va incrementando hasta que toma un valor que no cumple con la
condicin de control del ciclo.
que resultado mostrara si invierte las instrucciones dentro del ciclo de la siguiente manera:?
i=0;
suma=0;
while(i<=suma)
{
Suma=suma+i;
System.out.println(i); }
Nota: hay que tener cuidado con el orden en que escribimos las instrucciones y la condicin
de salida dentro de un ciclo while
Un ciclo que nunca se ejecuta
I=3;
While ((i>3) (i<3))
{
i++;
System.out.println(i);
}
Un ciclo que nunca termina
I=3;
While (i>=3)
53
2014
{
i++;
System.out.println(i);
}
Recuerde el ciclo while primero evala la condicin antes de ejecutar cualquier instruccin.
3. ARREGLOS
Los arreglos son colecciones de datos del mismo tipo que se almacenan secuencialmente, los
cuales se manipulan con un identificador o nombre.
Caracterizacin de un arreglo.
Notas
0
4
5
1
0
1
8
5
0
2
32
3
9
2
4
Donde
0,1,2,3.9 son cada uno de los ndices o posiciones de los elemento del
arreglo. Siendo 0 el primer elemento del arreglo y 9 el ultimo elemento del
arreglo.
34, 35,4524 son los datos almacenados en cada posicin del arreglos, o sea
el valor de cada elemento del arreglo todos son del mismo tipo o dominio.
54
2014
Nota
A los arreglos solo se puede acceder a travs de la posicin individual de cada uno de sus
elementos la cual esta indicada por el ndice o posicin.
Como acceder a un arreglo?
Para manejar un arreglo solo puede ser de un elemento a la vez, de la siguiente forma:
Para guardar informacin
Nombrearreglo [ posicion] = valor
Notas[0]=34;
Esto indica que en el arreglo Notas en la posicin 0 se guarda el numero 34
Para extraer la informacin
Variable= Nombrearreglo [ posicion]
Int dato;
Dato=Notas[5];
Esto nos indica que en dato se guarda el valor almacenado en la posicin 5 del arreglo Notas,
en este caso dato guardar 50.
No es necesario que tengamos que acceder directamente al arreglo indicando explcitamente
cual es la posicin del elemento, tambin lo podemos hacer haciendo uso de las variables
controladoras de los ciclos, garantizando recorrer todo el arreglo de elemento en elemento con
menos instrucciones.
Por ejemplo :
Sacar el promedio de notas del arreglo Notas usando un ciclo for;
Suma=0;
Promedio=0;
For (i=0;i<10;i++)
Suma=suma+Notas[i]
55
2014
Promedio = suma/10
System.out.println(promedio)
Observe:
1. La condicin del ciclo i<10 no incluye el igual, dado que la posicin 10 dentro del
arreglo no existe.
2. la instruccin notas[i] hace que cada vez que i cambie de valor, ose se incremente, se
puede acceder a cada elemento del arreglo.
3. hay una sola instruccin dentro del ciclo Suma=suma+Notas[i] por ello no se hace
necesario el uso de llaves{} para indicar comienzo y fin del ciclo.
Mtodos de bsqueda
Planteamiento 1
Problema en el arreglo notas queremos hallar cual es numero mayor:
Notas
0
3
4
3
5
4
5
1
0
1
8
5
0
2
32
3
9
2
4
56
2014
Segundo recorremos todo el arreglo peguntando si el valor guardado en mayor es menor que
el valor en cada posicin del arreglo, en caso de ser verdadero se debe actualizar el valor del
mayor con el contenido del elemento correspondiente
For i=0;i<tamao del arreglo;i++
If mayor < notas[i]
{ mayor=notas[i] }
Planteamiento 2
Deseamos implementar un mtodo que nos busque un elemento dado dentro del arreglo y nos
devuelva la posicin donde se encuentra si esta.
Para implementar un mtodo capaz de resolver el problema se analizan las situaciones:
1. Como empezar;
2. Como comparar y buscar;
3. Como parar la bsqueda
4. Como saber que encontramos
Para iniciar el mtodo deber recibir el valor a buscar como parmetro dado que el usuario es
quien va a decidir cual numero buscar.
Segundo debemos preguntar si el elemento dado es igual a cada uno de los elementos en el
arreglo.
elemento == notas[i]
Tercero Que ciclo usamos y como paramos ?
Como no sabemos cuantas iteraciones tendremos que hacer antes de encontrar el dato, el ciclo
ideal es el while.
El ciclo deber detenerse con las siguientes condiciones:
Cuando no este el elemento en el arreglo y se llegue al final del mismo i<tamao, o cuando
lo encuentre elemento==notas[i], esto quiere decir que busque mientras sea diferente.
57
2014
I=0;
while ( i < Tamao)&& (elemento != notas[i])
i++;
Cuarto para saber que encontramos es necesario preguntar porque se termino el ciclo? , lo
cual logramos preguntando si i es igual al tamao. En caso afirmativo quiere decir que i tomo
el valor del tamao del arreglo por ende el elemento no se encuentra y devolvemos un valor
que no corresponda a ningn ndice del arreglo (-1). En caso contrario i nos indica cual es la
posicin en donde esta el elemento.
if (i==Tamao)
return -1
else
return i;
class Arreglo{
int ArrNum[];
int CantNum;
public Arreglo(int c)
{
CantNum = c;
ArrNum = new int [CantNum];
}
58
2014
int TraeCantNum()
{
return CantNum;
}
public int BuscaMayor()
{
int Mayor = 0;
for (int i=0; i < TraeCantNum(); i++)
{
if(ArrNum[i] > May)
{
Mayor = ArrNum[i];
}
}
return Mayor; }
public int BuscaPos()
{
int Mayor = 0;
int pos = 0;
59
2014
2014
}
}
j++
}
}
}
El mtodo ordenanumeros() permite organizar el arreglo de manera ascendente,
utilizando el popular mtodo de burbuja, el cual consiste en llevar el elemento mas pesado a
su posicin real, y as sucesivamente con cada uno de sus elementos.
61
2014
import java.io.*;
import java.lang.*;
class LlenaArreglo {
");
Gua didctica de la Materia de Java Jdk parte 2
Docente: Ing. Danny Avilez Castillo
2014
");
"); }
");
System.out.println("
");
Llena.OrdenaNumeros();
System.out.println("Arreglo Ordenado ");
System.out.println("
");
");
System.out.println("
");
}
}
63
2014
BIBLIOGRAFIA
http://www.aprenderaprogramar.com/
http://oasis.cisc-ug.org/pages1/descargas.htm
http://www.lawebdelprogramador.com
http://www.aulaclic.net/
COMISION REVISORA:
ING. WALTHER VARGAS GONZALEZ
ING. JOFFRE VAZQUEZ DEL ROSARIO
TLGO. SOLANGE GOMEZ SALTOS
64