You are on page 1of 78

PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.

mx

Lenguaje
JAVA
Ing. Patricia Del Valle Morales
pdelvallem@iingen.unam.mx

M en C Gabriel Castillo Hernández


gch@pumas.iingen.unam.mx
1
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
1. Introducción al JAVA

1.1 La función main ()


1.4 Punto y coma, bloques y comentarios
1.5 Instrucciones básicas
1.6 El ambiente de desarrollo
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

¿Que es un programa?
Un programa es un conjunto de instrucciones de computadora que actúan
sobre un conjunto de datos y generan como resultado información
M e m o r i a

0
B u s d e d a t o s
1
2
3

C P U
B u s d e d i r e c c i o n e s

D a t o s e i n s t r u c c i o n e s

C e l d a d e m e m o r i a
n - 2
n - 1

D i r e c c i o n e s
( n c e l d a s d e m e B m u os r d i a e ) c o n t r o l

Tanto los datos como las instrucciones se codifican en términos de dígitos


binarios, de modo que una celda puede contener un dato o una instrucción.
3
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Ejemplo:
Un programa
calculará el Información
promedio

de las calificaciones
de un alumno Datos

con base en una


conocida ecuación Programa
estadística.

Datos Código binario


Compilador ……
Procedimientos

Programa: instrucciones a
ejecutar por el
procesador
4
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Clases vs Objetos

 ¿Qué es una clase?

 ¿Qué es un objeto?

5
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Clases

class Nombre_de_la_clase {

atributos
……

constructor o constructores de la clase


……

Métodos (funciones)
…..

6
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Control de acceso
 Cuando se crea una nueva clase en Java, se
puede especificar el nivel de acceso que se quiere
para las variables de instancia y los métodos
definidos en la clase:

 public
public void CalculaPromedio() {

Cualquier clase desde cualquier lugar puede


acceder a las variables y métodos de instacia
públicos.
7
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Control de acceso
 protected
protected void SoloSubClases(){
}
Sólo las subclases de la clase y nadie más
puede acceder a las variables y métodos de
instancia protegidos.

 private
private String RFCEmpleado;
Las variables y métodos de instancia privados
sólo pueden ser accedidos desde dentro de la
clase. No son accesibles desde las subclases.
8
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Estructura de un programa
class HolaMundo {

/* Programa: Hola mundo


constructor de la clase HolaMundo
*/
public void HolaMundo() {

// Rutina principal
// todo programa siempre comienza en la función main

public static void main(String args[])


{
System.out.println("Hello world\n");
}
}

9
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

La primera línea declara la


clase de objetos HolaMundo

class HolaMundo { Por que el esqueleto de


cualquier aplicación JAVA se
basa en la definición de una
…………. clase.

Es decir las clases son la


base de los programas en
} JAVA.

El cuerpo de la clase se
especifica dentro de las llaves
{ }.

10
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Comentarios:

/* Programa: Hola mundo El texto encerrado entre los


constructor de la clase HolaMundo símbolos /* y */ (sin espacios
*/ intermedios entre el asterisco
y la diagonal) se consideran
comentarios que el
// Rutina principal programador hace sobre su
// todo programa siempre código y por lo tanto no debe
ser compilado.
// comienza en la función main

Los símbolos // (sin espacios


intermedios entre las
diagonales) indican también
comentarios pero sólo afectan
a cualquier cadena a la
derecha de ellos y hasta que
termine la línea en donde
fueron insertados.

11
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

class HolaMundo {  Todo programa inicia siempre con la


ejecución del código posterior al
identificador main (conocido como
/* Programa: Hola mundo “función principal”).
constructor de la clase HolaMundo
*/  Las instrucciones se agrupan en
public void HolaMundo() { bloques, los bloques son básicamente
conjuntos de instrucciones delimitadas
por los símbolos de llave “{” (inicio del
} bloque) y “}” (terminación del bloque)

// Rutina principal  Dentro de la función main (principal) se


// todo programa siempre comienza en especifican las operaciones que se
desea que realice el programa. Estas
operaciones pueden incluir:
public static void main(String args[]) – declaración de variables,
{ – cálculos numéricos,
System.out.println("Hello world\n"); – operaciones de decisión
} – llamadas a otras funciones.
} (En el ejemplo se llama a la función printf)

 Los puntos y comas indican finalización


de una instrucción o declaración. Las
excepciones se indicarán en su
momento

12
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

 En el ejemplo se observa que el método


main llama para su ejecución al método
println de la clase out miembro del
paquete (biblioteca) de clases System de
JAVA.

 Sintaxis:
paquete.clase.método

System.out.println
13
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Compilar y ejecutar

 El programa fuente debe de guardarse con


el mismo nombre de la clase respetando
minúsculas y mayúsculas.
 Compilar:
– Javac HolaMundo.java

HolaMundo.class …..código
ejecutable
14
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
2. Tipos de datos

2.1 Tipos de datos


2.2 Declaración y uso de constantes
2.3 Declaración e inicialización de
variables
2.4 Variables locales
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Palabras reservadas
Las palabras especiales indican acciones o especificaciones dentro de un
programa.

Estas palabras se conocen como palabras reservadas o palabras clave. A


continuación se presenta la lista de las 32 palabras reservadas del ANSI C,
aunque algunos compiladores añaden otras palabras clave, propias de cada
uno de ellos.

Auto Double int struct


Break Else long switch
Case Enum register typedef
Char Extern return union
Const Float short unsigned
continue For signed void
Default Goto sizeof volatile
Do If static while

16
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Tipo de constantes
 Constantes enteras:
 valores representados por un número entero (positivo o negativo), por
ejemplo: 3, -4, 1024, 00003, etc.
 Obsérvese que los ceros a la izquierda del número no son significativos

 Constantes reales o de punto flotante:


 valores representados por un número real, por ejemplo: 1.2340000,
3.1415, 1.2345E+10, -1.45, -123.5215E-03.
 Al igual las constantes enteras los ceros a la izquierda no son
significativos, los ceros a la derecha después del punto decimal y al
final del número tampoco son significativos, de manera que las
constantes 0007326.124000, 7326.124000 y 7326.124 representan el
mismo número.

 Constantes tipo carácter:


 valores representados por un sólo caracter, se delimitan por apóstrofos,
por ejemplo ’a’, ’K’, ’@’, ’+’.
 Los delimitadores evitan que se confundan con identificadores de
variables, palabras reservadas o símbolos empleados por el lenguaje.

17
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Los caracteres definidos originalmente en C son aquellos correspondientes


a la tabla ASCII.

18
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx


Constantes de cadenas de caracteres:
 Las cadenas de caracteres se delimitan por medio de comillas dobles,
de ésta manera se evita que se confundan con palabras reservadas por
el lenguaje o por las variables definidas por el usuario.

 Por ejemplo:
 ”Hola mundo”
 ”Dame un número”
 ” El promedio es: ”
.....

 Obsérvese que si encerramos entre comillas dobles a una palabra


reservada, ésta deja de representar una palabra especial y se interpreta
como una constante de cadena de caracteres

19
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Secuencias de escape
 Para representar el salto de línea en la pantalla, un espacio de
tabulación, comillas, etc. C utiliza las denominadas secuencias de
escape.
 Una secuencia de escape representa un caracter especial, comienza
siempre con la diagonal invertida ( \ ) seguida de una letra. La tabla
siguiente muestra las secuencias de escape utilizadas en C:
Nombre Completo Constante En C En ASCII
Sonido de alerta BEL \a 7
Nueva Línea NL o LF \n 10
Tabulador horizontal HT \t 9
Retroceso BS \b 8
Retorno de carro CR \r 13
Salto de página FF \f 12
Barra invertida \ \\ 92
Apóstrofo ’ \’ 39
Comillas ” \” 34
Carácter nulo NULL \0 0
20
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Declaración de constantes

final <tipo> <nombre> = <valor>;

Ejemplo:

final int max_alumnos = 30;

21
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Nombres de variables

 Comenzar con una letra (A-Z y a-z), las letras acentuadas, la ñ, la ü y


cualquier otra letra especial no se considera como una letra válida.
 Puede continuar con letras o dígitos o el guión bajo “_”.
 No se permite ningún otro símbolo
 No pueden ser una palabra reservada
 En C las mayúsculas y minúsculas son diferentes, así por ejemplo las
variables: EDAD, edad, Edad, eDad hacen regencia a diferentes
localidades de memoria.

22
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Tipos de variables
 Para representar un dato en la memoria de la computadora se debe elegir
el tipo de dato que la variable o variables contendrán.

– De esta manera es posible indicar que determinada variable contiene


valores enteros, mientras que otra contendrá valores reales (de punto
flotante y con una precisión determinada).

 Al asignar un tipo a una variable estamos estableciendo el conjunto de


valores que dicha variable puede tomar.

– obsérvese que no estamos diciendo qué valor toma en un momento


dado sino cuáles puede tomar a lo largo de la ejecución de un
programa
Datos enteros Char signed char unsigned char
Short int long
unsigned short unsigned unsigned long

Datos reales Float double long double

23
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Declaración de variables

Sintaxis:
<tipo> <nombre> ;
o
<tipo> <nombre> = <valor>;

Ejemplo:
class CAritmetica {
public static void main(String[] args)
{
double a;
float b,c;
int x=10, y;
……
}
}
24
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Ejemplo:
class CLeedatos {
public static void main(String []args) {
double num1;
int num2;
String nombre;
num1= Teclado.Double("dame un numero: ");
num2= Teclado.entero("dame un numero entero: ");
nombre = Teclado.cadena ("nombre: ");
System.out.println("Los numeros tecleados fueron: " + num1
+ ", " + num2 );

System.out.println("nombre: " + nombre);


}
}

25
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
4. Operadores y Expresiones

4.1 Operadores y operandos


4.2 Expresiones
4.3 Reglas de precedencia y asociatividad
4.4 Conversión implícita de tipos de datos
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

4.1 Operadores y operandos

Un operador es un carácter o grupo de caracteres que actúa sobre una, dos o más
operandos (variables o constantes) para realizar una determinada operación, la cual
entrega un resultado.

Los operadores se pueden clasificar como:

1.Operadores Aritméticos
2.Operadores de Asignación
3.Operadores de incremento y decremento
4.Operadores Relacionales
5.Operadores Lógicos
6.Operadores Binarios

27
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Operadores Aritméticos
Estos operadores se pueden aplicar a constantes, variables y expresiones numéricas.
El resultado se obtiene de aplicar la operación correspondiente entre los dos
operandos numéricos.

Suma: +
Resta: -
Multiplicación: *
División: /
Residuo de una división entera: %

Las expresiones pueden contener paréntesis (...) que agrupan algunos de sus
términos. Puede haber paréntesis contenidos dentro de otros paréntesis. El significado
de los paréntesis coincide con el habitual en las expresiones matemáticas.

En ocasiones, la introducción de espacios en blanco mejora la legibilidad de las


expresiones sin afectar su significado.

28
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Operadores de Asignación
Los operadores de asignación asignan un valor a una variable (es decir, copian
el valor a la zona de memoria correspondiente a dicha variable), este valor
puede ser el resultado de una expresión o el valor de otra variable

Existen diferentes operadores de asignación, el más usado es el operador de


asignación (=).

 Sintaxis:
nombre_de_variable = expresion;

Primero se evalúa expresion y el resultado se almacena en nombre_de_variable.

 Ejemplos:
x=x+2;
y=a*b/(b*c);

29
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Existen otros operadores de asignación (+=, -=, *=, /=, &=, |=, ^=,
>>=, <<=) formados por los 4 operadores aritméticos seguidos por el
carácter de igualdad.

Estos operadores simplifican algunas operaciones recurrentes sobre


una misma variable.

 Sintaxis: variable op= expresion;

donde op representa cualquiera de los operadores (+ - * /). La


expresión anterior es equivalente a:

variable = variable op expresion;


 Ejemplos:
distancia = distancia + 1; distancia += 1;
rango = rango /2.0; rango /= 2.0;
x = x * (3.0 * y - 1.0); x *= 3.0 * y - 1.0;
30
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Operadores incrementales
Los operadores incrementales (++) y (--) son operadores unarios que incrementan o
decrementan en una unidad el valor de la variable a la que afectan. Estos operadores
pueden ir antes o después de la variable.

– Si el operador se coloca antes de la variable, ésta es incrementada antes de


que el valor de la variable sea utilizado en la expresión en la que aparece.

– Si el operador se coloca después de la variable, la variable es incrementada


después de ser utilizada en la expresión.

 Ejemplos:

int i = 2, j = 2, m, n;

m = i++; // después de ejecutarse esta sentencia m=2 e i=3


n = ++j; // después de ejecutarse esta sentencia n=3 y j=3
m = --J;
m = i--;

Es importante entender muy bien por qué los resultados m y n del ejemplo anterior son
diferentes.
31
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Operadores Relacionales
Estos operadores producen un resultado cierto o falso según se cumpla o no una
relación. Las posibles relaciones a consultar son:

 Igual que: ==
 Menor que: <
 Mayor que: >
 Menor o igual que: <=
 Mayor o igual que: >=
 Distinto que: !=

Todos los operadores relacionales son operadores binarios (tienen dos operandos).

 Sintaxis:
expresion1 op expresion2

donde op es uno de los operadores (==, <, >, <=, >=, !=).

32
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

 Funcionamiento:

– Se evalúan expresion1 y expresion2, y posteriormente se comparan los


valores resultantes.

– Si la condición representada por el operador relacional se cumple, el


resultado es diferente de cero. De esta manera podemos decir que en
expresiones booleanas se considera un valor diferente de cero como
cierto

– Si la condición no se cumple, el resultado es igual a 0. En expresiones


booleanas se considera un valor cero como falso

 Ejemplos aplicados a constantes:

(2==1) // resultado=0 porque la condición no se cumple


(3<=3) // resultado distinto de 0 porque la condición se cumple
(3<3) // resultado=0 porque la condición no se cumple
(1!=1) // resultado=0 porque la condición no se cumple

33
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Operadores lógicos
Los operadores lógicos son operadores binarios que permiten combinar los
resultados de los operadores relacionales, comprobando que se cumplen
simultáneamente varias condiciones, que se cumple una u otra, etc.

El lenguaje JAVA tiene dos operadores lógicos: el operador and (&&) y el


operador or (||). Su forma general es la siguiente:

 Sintaxis:
expresion1 || expresion2
expresion1 && expresion2

El operador || devuelve un valor cierto (distinto de 0) si al menos una de las


expresiones es cierta.

El operador && devuelve un valor cierto si tanto expresion1 como expresion2


son ciertas (es decir distintas de 0), y 0 (es decir falso) si una de las dos
expresiones o las dos son falsas (es decir, iguales a 0);.

34
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Los operadores && y || se pueden combinar entre sí –quizás agrupados


entre paréntesis–.
 Ejemplo:
(2==1) || (-1==-1) // el resultado es 1
(2==2) && (3==-1) // el resultado es 0
((2==2) && (3==3)) || (4==0) // el resultado es 1
((6==6) || (8==0)) && ((5==5) && (3==2)) // el resultado es 0

Operador negación lógica (!).

Sintaxis:

!expresion
Este operador devuelve un cero (false) si se aplica a un valor distinto de cero (true),
y devuelve un valor distinto de cero (true) si se aplica a un valor cero (false).
 Ejemplo:
!(1>2) // resultado distinto de cero, (cierto)
!((2==2) && (3>-1)) // el resultado es cero (falso)
35
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

4.3 Precedencia y orden de


evaluación

36
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Los distintos operadores deJAVA se ordenan según precedencia o prioridad; para operadores de la misma
precedencia, en algunos el orden de ejecución es de izquierda a derecha, y otros de derecha a izquierda (es
decir se asocian de izda a dcha, o de dcha a izda). A este orden se le llama asociatividad.

Operator Name or Meaning Associativity Precedence


[ ], ( ) Array subscript, Function Call, Left to right Maxima
. Member selection (struct) Left to right
–> Member selection (pointer) Left to right
++, –– Postfix increment None
++, –– Prefix increment None
*, & Dereference (pointer), Address-of None
– Arithmetic negation (unary) None
!, Logical NOT None
~ Bitwise complement None
sizeof ( ) Size of type None
*, /, % Multiplication, Division, Reminder Left to right
+, – Addition, Subtraction Left to right
<<, Left shift Left to right
>> Right shift Left to right
< Less than Left to right
37
> Greater than
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández Left to right
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Operator Name or Meaning Associativity Precedence


<= Less than or equal to Left to right
>= Greater than or equal to Left to right
== Equality Left to right
!= Inequality Left to right
& Bitwise AND Left to right
^ Bitwise exclusive OR Left to right
| Bitwise OR Left to right
&& Logical AND Left to right
|| Logical OR Left to right
e1?e2:e3 Conditional Right to left
= Assignment Right to left
*=, /= Multiplication and Division assignment Right to left
%= Modulus assignment Right to left
+=, –= Addition and Subtraction assignment Right to left
<<= Left-shift assignment Right to left
>>= Right-shift assignment Right to left
&= Bitwise AND assignment Right to left
|= Bitwise inclusive OR assignment Right to left
^= Bitwise exclusive OR assignment Right to left
38
, Comma
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández Left to right Minimal
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

4.4 Conversión implícita de tipos de datos

Algunas expresiones, por ejemplo aritméticas o lógicas, pueden en ocasiones


mezclar variables y constantes de diferentes tipos. Siempre que la mezcla dé
lugar a una interpretación consistente, se lleva a cabo una conversión
automática (conversión implícita) entre los diferentes tipos de datos que
intervienen.

Cuando dos tipos diferentes de constantes y/o variables aparecen en una


misma expresión relacionadas por un operador, el compilador convierte los
dos operandos al mismo tipo de acuerdo con los rangos, que de mayor a
menor se ordenan del siguiente modo (el símbolo > indica que el tipo de
datos a la derecha se convierte al tipo de datos a la izquierda):

long double > double > float > long > int > char

39
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Métodos
en
JAVA

40
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Métodos
Sintaxis:

nivel_acceso tipo_dato_retorno nombre(parámetros)

Ejemplos:
public void MultiplicaOperandos(float op1, float op2) {
…….
}

public float CalculaSuma(){


……
}

public int ObtenerPosicion(int x){


……
}

41
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Accesibilidad de variables
class UnaClase
{
variables miembro de la clase
Variable limitada
a una clase
public void unMetodo(lista de parámetros)
{
variables locales
Variable limitada una sentencia compuesta
a un método {
variables locales
Variable limitada }
a un bloque }
}

42
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

class CGrados {
//Atributos
private float gradosC;
//métodos
public void AsignarGradosC (float gc){
//establecer el atributo gradosC (grados centigrados)
gradosC = gc;
}
public float ObtenerGradosC() {
//regresa el atributo gradosC
return gradosC;
}
public float CalculaGradosF () {
//calcula y regresa los grados Fahrenheir a partir de los grado
return (9f/5f * gradosC + 32);
}} 43
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

class Conversion {

//función principal

public static void main(String []args){


//definición de variables
int gcentigrados = 10;
float gfahrenheir = 0;
CGrados grados = new CGrados(); //creación del objeto CGrados

grados.AsignarGradosC(gcentigrados);
gfahrenheir = grados.CalculaGradosF();

System.out.println("grados centigrados: " + grados.ObtenerGradosC());


System.out.println("grados Fahrenheir: " + gfahrenheir);
}
}
44
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Ejercicios:

 Programa 1:
Escriba un programa que solicite 2
números y despliegue la suma de estos.

 Programa2:
Escriba un programa que solicite el
nombre de un alumno, sus 3
calificaciones y despliegue los datos
capturados y el promedio.
45
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Escriba un programa para cada inciso:

Escriba un programa para cada inciso:

3. Calcule el área de un circulo (area = pi x


r^2).
4. Calcule el área de un cuadrado.
5. Calcule el área de un rectángulo.
6. Calcule el área de un triángulo.

46
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Programa 7: Escriba un programa que:

a) Lea dos enteros que representan el peso de un objeto en


libras y onzas.
b) Imprima el peso introducido y su equivalente en kilogramos.
c) Los datos de entrada deben acompañarse de mensajes
adecuados solicitando el número de libras y onzas que pesa
el objeto; y el resultado debe darse según el siguiente
ejemplo:

Un peso de 5 libras y 3 onzas equivale a 2.353 kilogramos.

NOTA: Una libra tiene 16 onzas y 2.2046 libras equivalen a


un kilogramo.

47
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

this Y super

 Al acceder a variables de instancia de una clase, la palabra


clave this hace referencia a los miembros de la propia clase

public class MiClase {


int i;
public MiClase() {
i = 10; } // Este constructor establece el valor de i

public MiClase( int valor ) {


this.i = valor; // i = valor }
public void Suma_a_i( int j ) {
i = i + j; }
 Aquí
} this.i se refiere al entero i en la clase MiClase.

48
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

 Si se necesita llamar al método padre dentro de una


clase que ha reemplazado ese método, se puede hacer
referencia al método padre con la palabra clave super:

import MiClase;
public class MiNuevaClase extends MiClase {
public void Suma_a_i( int j ) {
i = i + ( j/2 );
super.Suma_a_i( j );
}
}

public static void maun(String []args) {


MiNuevaClase mnc = new MiNuevaClase();
mnc.Suma_a_i( 10 );
}

¿Qué valores toma i durante la ejecución del programa?


49
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Modifique los programas anteriores para


usar el operador this.

50
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
5. Estructuras de control

5.1 bloques de instrucciones


5.2 if-else
5.3 switch
5.4 while
5.5 do-while
5.6 for
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Bifurcaciones: sentencia if
La sentencia de control if permite ejecutar o no una sentencia simple o compuesta según se
cumpla o no una determinada condición.
 Sintaxis:
sentencia simple: sentencia compuesta:

if ( expresion ) {
if ( expresion )
lista de sentencias
sentencia_simple;
}
línea_siguiente
línea_siguiente

Se evalúa expresion, si el resultado es cierto (valor diferente de 0), se ejecuta la


sentencia_simple o la sentencia compuesta; en caso contrario se salta sentencia y continua
en la línea_siguiente.

 Ejemplo:
public static void main(String []args)
{ int X = 10, y =0;
if (x) {
y = x+100;
x = x - 1;
System.out.println(“ y = “ + y + “, x= ” + x);
}
}
52
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Bifurcaciones: sentencia if ... else


Permite realizar una bifurcación, ejecutando una parte u otra del programa según se
cumpla o no una cierta condición.

 Sintaxis:
con sentencia simple: con sentencia compuesta:

if ( expresion ) if ( expresion ) {
sentencia_1; lista_de_sentencias_1
else } else {
sentencia_2; lista_de_sentencias_2
}

Se evalúa la expresion:

si el resultado de la evaluación se ejecuta sentencia_1


es cierto (valor diferente de 0)

si el resultado de la evaluación se ejecuta sentencia_2


es falso (valor igual a 0)

Al terminar la sentencia correspondiente del if se prosigue en la línea siguiente del


programa.

53
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Ejemplo:

public static void main(String []args)


{
int num =0;

num =10;

if (num < 0 )
System.out.println(“El número “ + num + “es negativo \n”);
else
System.out.println(“El numero: “ + num + “es cero o es positivo”);
}

54
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Bifurcaciones: sentencia if ... else multiple


Esta sentencia permite realizar una ramificación múltiple, ejecutando una entre
varias partes del programa según se cumpla una entre n condiciones. La forma
general es la siguiente:

if ( expresion_1 ) Se evalúa expresion_1. Si el resultado es cierto,


se ejecuta sentencia_1
sentencia_1;
else if ( expresion_2 ) Si el resultado es falso, se salta sentencia_1 y
sentencia_2; se evalúa expresion_2. Si el resultado es cierto
else if ( expresion_3 ) se ejecuta sentencia_2,
sentencia_3; mientras que si es falso se evalúa expresion_3
else if ( ... ) y así sucesivamente.
... Si ninguna de las expresiones o condiciones es cierto
else se ejecuta expresion_n que es la opción por defecto
sentencia_n; (puede ser la sentencia vacía, y en ese caso puede
eliminarse junto con la palabra else).

Como en los demás casos las sentencias pueden ser


simples o compuestas.
55
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Ejemplo:

public static void main(String []args)


{
int num =0;

num = 5;

if (num >= 1 && num <= 10 )


System.out.println(“\n numero valido”);
else if (num < 1 )
System.out.println(“\nNumero no valido (es menor a 1)”);
else if (num > 10 )
System.out.println(“\nNumero no valido (es mayor a 10)”);

System.out.println (“\nNumero tecleado: ” + num);


}

56
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Bifurcaciones: sentencias if anidadas


Una sentencia if puede incluir otros if dentro de la parte correspondiente a su sentencia, A
estas sentencias se les llama sentencias anidadas (una dentro de otra), por ejemplo:

public static void main(String []args)

{
float a,b, c;

a= 10;
b= 2;

if (a >= b)
if (b != 0.0) {
c = a/b;
System.out.println ( a + b+ c);
}
}
57
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Bifurcaciones: sentencias if anidadas


Ejemplo 2:

public static void main(String []args)


{ float a=4.0, b= 2.0;
if (a >= b)
if (b != 0.0)
c = a/b;
else
c = 0.0;
System.out.println ( a + b +c);
}

En principio se podría plantear la duda de a cuál de los dos if corresponde la parte else
del programa.
Los espacios en blanco –las indentaciones de las líneas– parecen indicar que la
sentencia que sigue a else corresponde al segundo de los if, y así es en realidad, pues
la regla es que el else pertenece al if más cercano.

58
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Bifurcaciones: sentencia switch


La sentencia switch desarrolla una función similar a la de la sentencia if ... else con múltiples
ramificaciones, aunque como se puede ver presenta también importantes diferencias. La
forma general es la siguiente:

switch ( expresion ) {
case expresion_cte_1:
sentencia_1; Se evalúa expresion y se considera el
break; resultado de dicha evaluación. Si dicho
case expresion_cte_2: resultado coincide con el valor constante
sentencia_2; expresion_cte_n, se ejecuta
break; sentencia_n.
...
case expresion_cte_n: Si ninguna expresion_cte coincide se
sentencia_n; ejecuta la sentencia que está a
break; continuación de default.
default:
sentencia; Si la sentencia break se omite entonces
break; se ejecutan las sentencias contiguas
} hasta encontrar una sentencia break.

59
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Ejemplo:

public static void main(String []args)


{
int x;
X = 5;
switch ( x ) {
case 1:
System.out.println(“Uno\n”);
break;
case 2:
case 3:
System.out.println(“Dos\n”);
System.out.println(“o tres\n”);
break;
default:
System.out.println(“Ni uno\n”);
System.out.println(“Ni dos\n”);
System.out.println(“Ni tres\n”);
}
}

60
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

If-else
Programa 8:

Escriba un programa que lea los 3 lados


(a,b,c) de un triángulo y determine si se
trata de un triángulo equilátero, isóceles
o escaleno.

Nota: El programa principal deberá de leer los valores a, b y c.


Se deberá implementar 2 constructores: el primero no recibe
parámetros, y el segundo recibe las longitudes de los 3 lados.

61
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Programa 9:

Un banco necesita un programa para conocer cuál es la conversión


de una cierta cantidad de pesos a dólares, libras, euros o yenes. Los
datos son:
clave, cant, tipocambio
Donde:
clave entero que indica la moneda extranjera a la que se desea
convertir (1 = dólares, 2 = libras, 3= euros, 4= yenes).
cant entero que indica la cantidad en pesos a convertir.
tipocambio real que indica la equivalencia de la moneda en el
momento del cálculo.

Salida:
cant pesos equivalen a conversión moneda.

Ejemplo, si se convirtieron 1000 pesos a dólares a una equivalencia


de $10.00 el resultado sería:
1000 pesos equivalen a 100.00 dólares.
62
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Programa 10:
Modifique el ejercicio 9 sustituyendo los if´s por switch

Programa 11:

La calificación final de una materia se compone de:


55% del promedio de los tres exámenes parciales.
30% de la calificación del examen final.
15% de la calificación del trabajo final.

Un alumno aprueba esta materia si su calificación final es


mayor o igual a 6 y el promedio de sus tres exámenes
parciales es mayor o igual a 6 y la calificación de su examen
final es mayor o igual a 6. Escriba un programa que lea las
calificaciones de los cuatro exámenes y el trabajo final e
imprima la calificación final o “NA”, según corresponda.

63
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Ciclos: Sentencia while


Esta sentencia permite ejecutar repetidamente (mientras se cumpla una
determinada condición) una sentencia o bloque de sentencias.
 Sintaxis:

while ( expresion_de_control ) {
while ( expresion_de_control ) lista de sentencias;
sentencia; }
línea_siguiente línea_siguiente

Se evalúa la expresion_de_control:
 si el resultado es falso se salta sentencia y se prosigue la ejecución.
 si el resultado es cierto se ejecuta la sentencia (o la lista_de_sentencias) y se
vuelve a evaluar la expresion_de_control. La ejecución de sentencia prosigue
hasta que expresion_de_control se hace falsa.
Alguna variable de las que intervienen en la expresion_de_control deberá ser
modificada dentro del ciclo y eventualmente esto obligará a que la
expresion_de_control se haga falsa pues si no el ciclo continuaría indefinidamente.

64
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

 Practica 12
Escriba un programa que imprima los
primeros n números naturales pares.

 Practica 13

Escriba un programa que imprima los


números impares dentro de un rango
(limite inferior y limite superior).
Los limites pueden ser números negativos

65
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Ciclos: Sentencia do-while


La sentencia do-while es un ciclo repetitivo que primero ejecuta la sentencia o
bloque de sentencias y después evalúa la expresion_de_control.
 Sintaxis:

do do {
sentencia; lista de sentencias;
while ( expresion_de_control ); } while ( expresion_de_control );
línea_siguiente línea_siguiente

1. Primero entra a ejecutar la sentencia o lista de sentencias del do-while


2. Después evalúa la expresion_de_control:
 si el resultado es falso termina el ciclo de repetición y prosigue la
ejecución del programa.
 si el resultado es cierto regresa a ejecutar la sentencia (o la
lista_de_sentencias) y se vuelve a evaluar la expresion_de_control. La
ejecución de sentencia prosigue hasta que expresion_de_control se
hace falsa.
Alguna variable de las que intervienen en la expresion_de_control deberá ser modificada
dentro del ciclo y eventualmente esto obligará a que la expresion_de_control se haga falsa
pues si no el ciclo continuaría indefinidamente.

66
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

 Practica 14

Escriba un programa que imprima el


factorial de un número n.

 Practica 15

Modifique el programa anterior para que


permita calcular más de un factorial.

67
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Ciclos: Sentencia for


La sentencia for es un ciclo repetitivo que antes de comenzar a ejecutarse ejecuta una
sentencia denominada de inicialización. Esta sentencia normalmente se emplea para
preparar el desarrollo del ciclo for.
 Sintaxis:
for (inicialización; expresión_de_control; actualización)
sentencia;

for (inicialización; expresión_de_control; actualización) {


lista de sentencias;
}

antes de comenzar el ciclo for se ejecuta la sentencia de inicialización, una vez


ejecutada la sentencia de inicialización :
 se verifica si la expresión_de_control es verdadera (diferente de cero) si es así,
se ejecuta la sentencia (simple o compuesta).
 Al terminar de ejecutar la sentencia se procesa la sentencia de actualización,
esta sentencia normalmente alterará alguna variable que interviene en la
expresión_de_control con el fin de que eventualmente la expresión se haga
falsa.
 El ciclo se repite hasta que la expresión_de_control se hace falsa (valor igual a
cero).

68
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

 Ejemplo:
int i;
.....
for (i=0 ; i<10 ; i++)
System.out.println(i);
.....

 Explicación:

1. Se inicializa i=0 (inicialización).


2. Se evalúa i<10 (expresión de control)
si la expresión de control es cierta (diferente de cero)
3. Se imprime el valor de i (sentencia)
4. Se incrementa i en 1, (actualización)
5. Se regresa al paso 2
si la expresión de control es falsa (igual a cero)
6. Se continua sin ejecutar ni la sentencia ni la actualización

69
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

 Practica 16

Escriba un programa que lea un número natural


y determine si es un número primo.

 Practica 17

Escriba un programa que imprima solo los


número primos que se encuentren en un rango
inferior y un rango superior, los rangos podrán
ser positivos o negativos .

70
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Practica 18

Modifique el programa de Conversion para


que imprima una tabla de equivalencia entre
grados centígrados y grados Fahrenheir.

Los cálculos deben realizarse para un


intervalo de -30 a 180 grados centígrados
con un incremento de 6 grados.

71
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

class Conversion {
//definición de constantes
static int limiteInf = -30;
static int limiteSup = 180;
static int incremento = 5;

//función principal

public static void main(String []args){


//definicion de variables locales
int gcentigrados;
float gfahrenheir = 0;
CGrados grados = new CGrados(); //creación del objeto CGrados

gcentigrados = limiteInf;
while (gcentigrados <= limiteSup) {
grados.AsignarGradosC(gcentigrados);
gfahrenheir = grados.CalculaGradosF();
System.out.println("grados centigrados: " + grados.ObtenerGradosC());
System.out.println("grados Fahrenheir: " + gfahrenheir);
gcentigrados += incremento;
}
}} 72
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

 Practica 18

Escribe un programa que lea un número


natural N y dibuje un triángulo de
asteriscos con base y altura N.

Por ejemplo si N=5 debería dibujarse:


*
**
***
****
*****
73
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

 Practica 19
Escribe un algoritmo que lea un número
natural N y un carácter. La salida debe ser un
rombo compuesto del carácter y de la anchura
que especifica el número N. Por ejemplo, si N
es 5 y el carácter es *, el rombo sería:

*
**
***
****
*****
****
***
**
*
74
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Excepciones

Las excepciones en Java son objetos de


clases derivadas, de la clase
Throwable definida en el paquete
java.lang

75
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Sintaxis:
try
{
//código de la aplicación
}
catch (clase_de_excepción e)
{
//código de tratamiento de esta excepción
}
catch (otra_clase_de_excepción e)
{
//código de tratamiento de esta excepción
}
finally
{
//código que siempre se ejecuta
}
76
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Funcionamiento:

Si el código de la aplicación no puede


realizar alguna operación, se espera
lance una excepción que será tratada por
el código de tratamiento especificado
para esa clase de excepción.

77
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández
PDelValleM@iingen.unam.mx gch@pumas.iingen.unam.mx

Throwable

Exception Error

RuntimeException

ClassNotFoundException

IOException

EOFException

78
Ing. Patricia Del Valle Morales, M en C Gabriel Castillo Hernández

You might also like