Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto...

144
1 Texto de Introducción a la Programación MSc. Lic. Carla Salazar Serrudo Lic. Victor Hugo Montaño Carrera de Informática y Sistemas UMSS - 2003

Transcript of Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto...

Page 1: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

1

Texto de Introducción a laProgramación

MSc. Lic. Carla Salazar SerrudoLic. Victor Hugo Montaño

Carrera de Informática y SistemasUMSS - 2003

Page 2: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

2

ÍndiceBibliografíaIntroducciónAlgoritmosTipos de datos y operadoresControl de flujoProgramación orientada a objetos (POO)Arreglos y CadenasCaracterísticas avanzadas de POO

Page 3: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

3

Bibliografía • Manual de referencia, Mc Graw Hill Editores.

Naughton, Patrick ; Schildt, Herbert (1997)

• Clase LeerTeclado, Univ. Raúl Fernández

• http://java.sun.com/docs/books/tutorial/index.html

• Como programar en Java, Prentice-HallHispanoamericana, S.A., Deitel y Deitel (1998)

Page 4: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

4

Introducción

Uso de la computadora para resolver problemas más o menos complejos. La computadora realiza operaciones tales como: aritméticas, comparaciones, almacenamiento, transferencia de datos, etc.Dichas operaciones se realizan por medio de instrucciones o comandos.

Page 5: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

5

Instrucción

Una instrucción es una sentencia u ordenLas instrucciones pueden ser:

de entrada de datos (y recuperación)operaciones sobre los datos (manipulación)de salida (presentación) de resultados y almacenamiento

Page 6: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

6

ProgramaUn programa es una lista de instrucciones.Un programa es una descripción de pasos a dar para resolver un problema.El programa (software) dirige el funcionamiento del ordenador (hardware).

Page 7: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

7

Los algoritmos

Descripción exacta no ambigua de la secuencia de pasos a aplicar para encontrar una solución a un problema a partir de unos datos.Método de resolución general de un problema.Ej.: receta de cocina (freír papas)

Page 8: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

8

Los algoritmos (2)

Para programar hay que analizar el problema y diseñar una estrategia de resolución. Hay que contemplar todas las alternativas lógicas posibles (no dejar cabos sueltos).Problema Algoritmo Programa

Page 9: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

9

Los algoritmos (3)

Un programa es la codificación de un algoritmo en un lenguaje de programación concreto.Características:

completorobustoeficienteconsistente

Page 10: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

10

Descripción de algoritmos

Pseudocódigodescripción verbal en lenguaje “casi natural”.

Diagramas de flujodescripción gráficacada símbolo representa una acción (entradas, salidas, procesos, comparaciones...)todos los símbolos tienen una flecha de entrada y otra de salida (al menos), salvo los símbolos inicial y final.

Page 11: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

11

Ejemplo pseudocódigo

Ejemplo: sumar dos númerosprograma Suma

leer(n1)

leer(n2)

suma = n1 + n2

escribir(“suma es ”, suma)

fin

Page 12: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

12

Diagramas de flujo

Inicio n1, n2 suma = n1 + n2

EntradaSalida (pantalla)

Cálculo

Fin

suma

Page 13: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

13

Estructuras básicas

ASIGNACIONlongitud = 2 * 3.14 * radiox = x + 1

ENTRADA/SALIDAleer(edad)imprimir(valor)

CONDICIONsi (edad < 18) entonces

imprimir(“No puedes votar”)si no

voto = leer(“Elija su voto”)fin si

Page 14: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

14

Estructuras básicas (2)ITERACIONmientras (num != 8) hacer

num = leer(“Otra vez. Número:”)fin mientras

para i=1 hasta 10 paso 1 hacerimprimir(3 “x” i “=” 3*i)

fin para

repetirx = x + 2

hasta que (x > 50)

Page 15: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

15

Refinamiento

Refinamiento por pasos sucesivos (top-down)

Descomposición de un problema en subproblemas en etapas sucesivas.Atención al principio a los aspectos globales del sistema. Al avanzar el diseño, descomposición en subsistemas (detalles).

Page 16: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

16

Refinamiento (2)

Composición hacia arriba (bottom-up)Identificar conjunto primitivo de objetos, acciones y relaciones que proporcionarán una base para la soluciónConceptos de alto nivel expresados en términos del conjunto de primitivos (combinaciones).Necesidad de un conjunto completo de primitivas

Page 17: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

17

Ejemplo de refinamientoProblema: Dibujar la función Y = X3+2x-3Top-Down

Etapa 1.1. Calcular puntos2. Dibujarlos

Modularidad

Page 18: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

18

Programando con Java

MSc. Lic. Carla Salazar SerrudoLic. Victor Hugo Montaño

Carrera de Informática y SistemasUMSS - 2003

Page 19: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

19

Características de Java

Orientado al objeto (tendencia en boga)

Simple (similar a C, sin complejidades)

Multiplataforma (Windows, PowerMac, Unix)

Robusto (hace chequeos, elimina punteros)

Recolección de basura automáticaBibliotecas estándaresRealmente portable en un 100%Facilidades para programación en redes

Page 20: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

20

Compilador e intérprete de Java

Compilador de Java (específico x plataforma) javac P1.java

P1.java P1.class

Intérprete de Java (específico x plataforma) java P1 (class)

Salidadel

Prog.

Page 21: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

21

Compilador e intérpreteEl compilador analiza la sintaxis del código fuente (con extensión .java). Si no hay errores, genera bytecodes

> javac P1.javaEl intérprete es la Máquina Virtual Java que ejecuta los bytecodes (con extensión .class) creados por el compilador

> java P1

Page 22: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

22

Un primer programa en Java

public class Ejemplo {

public static void main(String args[ ]) {

System.out.println(“Introducción a la Programación con Java”);}

}

Page 23: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

23

Un primer programa en Java (2)

Todo programa se escribe en el método estático llamado main en una clase cualquiera Este método se empieza a ejecutar cuando seinvoca el intérprete de Java para una clasedadaargs es un arreglo de Strings que contiene los parámetros con los que fue invocado el programa

Page 24: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

24

Variables de entorno

Es necesario incluir las siguientes líneas al final del autoexec.batPara tener accesibles el compilador y el intérprete Java:

Set PATH= %PATH%; C:\jdk1.4\bin(el directorio depende de dónde se haya instalado jdk)

Page 25: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

25

Variables de entorno (2)

Para acceder a las clases desarrolladas por uno mismo:

Set CLASSPATH= .;%CLASSPATH%(incluye el directorio donde uno se encuentra)

Page 26: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

26

// Este es el esqueleto de un programa en Java

class <nombre del Programa>

{

/* Definiciones globales*/

/* Metodo Principal*/

/* Otros Métodos*/

}

Se utiliza para abrir un bloque de instrucciones.

Se utiliza para cerrar un bloque de instrucciones

Estructura de un programa

Page 27: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

27

// Este es el esqueleto de un programa en Java

class <nombre del Programa>{

/* Definiciones globales*/

/* Este es el Método Principal*/

/* Otros Métodos*/

}

Si sólo quiero comentario de una línea coloco // al inicio de esta

Si quiero comentario de más de una línea coloco /* al inicio del comentario y */ al final

Comentarios

Page 28: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

28

Aquí se definen las variables que yo deseo que se puedan utilizar en todo mi programa.

Cada aplicación de Java debe tener un método principal llamado main, que define donde comienza el flujo del programa.

Deben seguir las convenciones utilizadas en algoritmo.

Variables y métodos

class <nombre del Programa>{

/* Definiciones globales*/

/* Método Principal*/

/* Otros Métodos*/

}

Page 29: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

29

// Este es el esqueleto de un programa en Javaclass <nombre del Programa> {

/* Definiciones globales*/

public static void main (String args[]){

/* Definiciones locales*/......

/* cuerpo de instrucciones */......

}}

Todo el código de un método estará entre la llave de apertura ( { ) y la correspondiente llave de cierre ( } ).

Sintaxis del método main

Page 30: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

30

// Este es el esqueleto de un programa en Javaclass <nombre del Programa> {

/* Definiciones globales*/

public static void main (String args[])

{

/* Definiciones locales*/......

/* cuerpo de instrucciones */......

}}

La palabra public es un especificador de acceso. En este caso el main debe ser declarado public ya que es llamado por código que está fuera de su clase, cuando el programa comienza.

La palabra static permite que main sea llamado por el intérprete de Java antes de que se cree cualquier objeto .

La palabra void indica al compilador que main no devuelve ningún valor.

String args[], declara una variable args que es una especie de vector que puede contener cadenas de caracteres.

Sintaxis del método main

Page 31: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

31

// Este es el esqueleto de un programa en Javaclass <nombre del Programa> {

/* Definiciones globales*/

public static void main (String args[]){

/* Definiciones locales*/......

/* cuerpo de instrucciones */......

}}

Aquí se definen las variables que solo voy a utilizar en el método principal.

Sintaxis del método main

Después de cada instrucción se coloca ;

Page 32: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

32

Identificadores

Nombran variables, funciones, clases y objetosComienza con una letra, un subrayado (_) o un símbolo de dólar ($). Los siguientes caracteres pueden ser letras o dígitosNo se permiten vocales acentuadas ni ñSe distinguen las mayúsculas de las minúsculas

Page 33: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

33

Identificadores (2)

No tienen longitud máximaLa forma básica de una declaración de variable, por ejemplo, sería:

tipo identificador [ = valor][,identificador [= valor] ...];

Ejemplo de constante: final float PI = 3.14159;

Page 34: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

34

Identificadores (3)

No existen reglas, pero es conveniente seguir unas normas para que el código sea más legible:nombre de CLASE empieza por Mayúsculasnombre de MÉTODOS y ATRIBUTOS por minúsculaslas CONSTANTES con mayúsculas completamentecuando empieza una nueva palabra la ponemos en mayúsculas ej: dibujarRectangulo

Page 35: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

35

Variables y constantes

Variables: zona de memoria cuyos valores van a cambiar durante la ejecución

Ej: int x, y, z;

Constantes: zona de memoria cuyos valores no cambian

Ej: final double PI = 3.14159265;

Page 36: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

36

Tipos de datosEn Java existen dos tipos de datos:

Tipos primitivosTipos referencia

Los tipos primitivos son:Lógico (boolean), texto (char), entero (byte, short, int, long) y real (float, double)

Los tipos referencia son punteros a objetos

Page 37: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

37

Tipos primitivos de datos

El tipo de un objeto determina cuánto espacio ocupa en memoria y cómo puede ser usado

Los tipos de datos primitivos en Java son:

byte, short, int, long enterosfloat, double números punto flotantechar caracterboolean valores lógicos

Page 38: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

38

Enteros

Los tipos de datos enteros pueden ser: byte, short, int y longTodos los tipos tienen signo. El cero se considera positivo.Los enteros se representan así:

Decimal: 2, 156, 564545Octal: 077, 077700 (empiezan con cero)Hexadecimal: 0xABFF, 0xCC00 (empiezan con 0x)Long: 156L

Page 39: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

39

Punto flotante

Existen dos tipos de datos reales: float (32 bits) y double (64 bits)Un número es de punto flotante si lleva:

Un punto decimal: 3.14159, 2.0Una E o e (valor exponencial): 105e25, 1.05E27Una F o f (float): 279F, 2.79fUna D o d (double): 279D, 2.79d

Page 40: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

40

Caracteres y valores lógicos

El tipo de datos boolean (8 bits) puede tomar dos valores posibles: true y false.El tipo boolean no toma valores numéricosEl tipo char (16 bits) representa sólo un carácter Unicode (caracteres gráficos de todos los idiomas).

Caracteres simples: ‘a’Caracteres especiales: ‘\t’, `\n`Caracteres Unicode: `\u00BF`

Page 41: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

41

Tipos de datos primitivos

Tipo Valor por defecto(atributos de la clase ) Valores

boolean false true o falsechar ‘\u0000’ (null) ‘\u0000’ a ‘\uFFFF’byte (byte) 0 -128 a +127short (short) 0 -32,768 a +32,767int 0 -2,147,483,648 a +2,147,483,647long 0L -9,223,372,036,854,775,808 a

+9,223,372,036,854,775,807float 0.0f -3.40292347E+38 a

+3.40292347E+38double 0.0d -1.79769313486231570E+308 a

+1.79769313486231570E+308

Page 42: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

42

Declaraciones de variables

int i, k;

int j = 1, x;

double pi = 3.14159;

char c = ‘a’;

boolean somosFelices = true;

Las declaraciones de variables pueden ir encualquier parte del programa, pero siempreantes de que la variable sea usada.

Page 43: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

43

/* Este programa declara algunas variables */class declaraVar {

public static void main (String args[]) {

int x, y;float z = 3.1416;double w =8.4445;boolean bandera = true;char c; String st1 =“María”;

} }

Declaración de variables

Page 44: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

44

• Se puede dar valores a las variables en el momento de su declaración• O en una instrucción de asignación independiente una vez que ha sido declarada•Se utiliza el signo = en ambos casos. Ej:

int x =5;boolean t;t = true;

Asignación de valores a variables

Page 45: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

45

Las asignaciones también pueden ser expresiones en notación INFIJA

Ejemplo:monto = pvp * cantidad ;

Donde pvp y cantidad deberán ser variables anteriormente declaradas y con valor previo asignado

Asignación de valores a variables

Page 46: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

46

/* Este programa asigna valores a variables */class AsignaValorVar {

public static void main (String args[]) {

int x, y, z;x = 2;y = 4;z = x * y;System.out.println(“El valor de z es “ + z);

} }

Asignación de valores a variables (2)

Page 47: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

47

Algunas de las operaciones a utilizar en la asignación:

() indica prioridad de ejecución* multiplicación/ división decimal + , - suma, resta

Ejemplo:impuesto = ( (pvp * cantidad) * porc) ) / 100;

Asignación de valores a variables (3)

Page 48: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

48

Expresiones y asignación

Aritméticas:suma + 20 * c / (mod % 3)

Relacionales: a > b, b >= c, c != 4, a == 0

Cadenas:“hola “+ nombre + “ hoy es “+ dia + “de”+mes

Casts:(int) pi, (pi = 3.1), (int) (Math.random()*100)+1)

Page 49: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

49

Expresiones y asignación (2)

Asignación:a = 1;

Asignación como operador: a = b = c = d = 0;boolean cero = ( b = c - 10) == 0;

Otros: a == 1 ? a+1 : a-1

Page 50: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

50

Operadores

Operadores Asociatividad Tipo

() izquierda a derecha paréntesis ++ -- + - ! derecha a izquierda unarios * / % izquierda a derecha multiplicativos + - izquierda a derecha aditivos < <= > >= izquierda a derecha relacionales == != izquierda a derecha de igualdad && izquierda a derecha AND lógico | | izquierda a derecha OR lógico = += -= *= /= %= derecha a izquierda asignación

ej. x += y x = x + y;

Page 51: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

51

Conversiones de tipo

Java no reclama si un tipo de menor rango se convierte a uno de mayor rango.

byte < short < int < long < float < double

Ejemplo: int i = 1;long l = i; //ok

Page 52: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

52

Ejemplos

l = 1000000000000;

float f = l; //ok

double d= 1.0e24;

int i = d; // Error

float f = 1.0f;

int i = f; // Error

short s = i; //Error

Page 53: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

53

Ejemplos (2)

double d = 1.0; int i = (int)d; //ok

int i = 256;

byte b = (byte)i; /*ok pero

b ==0 */

Page 54: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

54

Para mostrar un texto por pantalla se usan las siguientes instrucciones:

• System.out.println (texto);• System.out.print (texto);

La primera imprime “texto” en la pantalla y deja el cursor en la siguiente línea

La segunda imprime “texto” en la pantalla y deja el cursor inmediatamente después de texto.

Salida de datos

Page 55: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

55

Para obtener los valores de las variables desde teclado, usamos el programa creado llamado LeerTeclado:

Variable = LeerTeclado.readTipode variable();Ejemplos:Numero1 = LeerTeclado.readInt();Numero2 = LeerTeclado.readDouble();Nombre = CTeclado.readLine();EstadoCivil = LeerTeclado.readChar();

Lectura de datos

Page 56: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

56

// Programa que lee dos números y los sumaimport LeerTeclado;class Sumar {

public static void main (String args[]){int v1,v2;System.out.println("Introduzca v1");v1 = LeerTeclado.readInt();System.out.println("Introduzca v2");v2 = LeerTeclado.readInt();System.out.println("La suma es "+

(v1+v2));}

}

Ejemplo de programa

Page 57: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

57

Programación estructurada

Simplifica la estructura de un programaReduce las opciones y facilita la legibilidad de los programasEstructuras tienen:

Un punto de entrada y Un punto de salida

Permite estructuras anidadasFocaliza la atención en un punto cada vez

?

Page 58: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

58

Agrupación de sentenciasDonde se puede escribir una sentencia, se puede escribir un grupo de sentencias agrupadas dentro de llaves

sentencia //simple

{sentencia;sentencia; …;

sentencia;} //compuesta

Page 59: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

59

; es un terminador

Toda sentencia en Java debe terminar con un ;Existe la sentencia vacía, por lo cual podemos poner varios ; seguidos ;;;;;Algunas estructuras como switch no van seguidas de ;

Page 60: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

60

Programación estructurada

Estructura secuencialacción1; acción2; acción3;

Estructuras condicionalesif (condición) acción1 [else acción2]switch (selector) {case valor1; acción1;

case valor2; acción2; … ;case valorn: acciónN}

Estructuras repetitivaswhile (condición) acción;do {acción} while condición;for (inicialización; condición; actualización) acción;

Page 61: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

61

Estructura condicional

condición

acción1

TrueFalse

acción2

if (condición) {acción1;

}else {acción2;

}

Page 62: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

62

Estructuras condicionales

De acuerdo al resultado de la evaluación de una condición se realiza una acción u otraSintaxis:

if (condición) acción;if (condición) {acción1; acción 2;…;acciónN}if (condición) acción1 else acción2;if (condición) {acción1; …;acciónN} else{acción1; ..;acciónN}

Page 63: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

63

Ejemplo de condicional…if(calif >= 70)

System.out.println(“Aprobado”);else {

System.out.println(“Reprobado”);System.out.println(“Cursar de nuevo materia”);

}…

Page 64: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

64

Raíces ecuación segundo grado

class Raices2g {. . .D=(b*b) - (4*a*c);if (D>=0) { // raices reales

x1=((-b)+Math.sqrt(D))/2*a;

x2=((-b)-Math.sqrt(D))/2*a;System.out.println("x1= "+x1);System.out.println("x2= "+x2);}

else {//soluciones imaginarias

r = -b/(2*a);

i = (Math.sqrt(-D)/2*a);System.out.println("x1= "+r+" + "+i+"i");System.out.println("x2= "+r+" - "+i+"i");}

...

Page 65: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

65

Condiciones anidadas

if (calif>=90)System.out.println(“A”)

else if (calif>=80)System.out.println(“B”)

else if (calif >= 70)System.out.println(“C”)…

Page 66: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

66

Ejemplo condicionales anidados

{int mes;if (mes==1) System.out println (“Enero”);else if (mes == 2) System.out.println (“ Febrero”);...else if (mes == 12) System.out.println (“Diciembre”)

else System.out.println (“ Error”);...

}

Page 67: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

67

Condicionales anidados

Muchos if anidados dificultan la comprensión del programaProblemas de ambigüedad en el anidamiento de ifs:if (C1) if (C1)

if (C2) acción1 if ( C2) acción1else acción2 else acción2

Page 68: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

68

Condicionales anidados

El compilador de Java siempre asocia un else con el if más cercano:

if (condición1) acción;if (condición2) acción2;else acción 3;

Para cambiar esta regla debemos usar llavesif (condición1) {acción1;if(condicion2) accion2;

} else acción3;

Page 69: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

69

Sentencia switch

Caso general de ifswitch (selector) {

case valor1: acción1;case valor2: acción2;

…;case valorn: acciónN;[default : acciónM] }

Page 70: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

70

Sentencia switch

int llave;......switch (llave) {

case 3 : ......break;

case 2: ......break;......

case <valor>: .......break;

default:......break;

}...

llave puede ser de tipobyte, char, short, int, long

Ejecuta a partir del case que cumpla.

llave == valorHay que insertar break para no ejecutar los siguientes casosEl default es opcional

Page 71: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

71

Sentencia switch: case

El selector debe ser un valor constantecase 2case 1+1case uno + 1 // uno constante entera que vale 1

Se pueden poner varios cases juntos:case ‘d’: case ‘D’se ejecutan las sentencias asociadas si la expresión de control coincide con alguna de los valores del case

Page 72: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

72

Sentencia switch: case (2)

El último case no necesita break, pero se suele poner por simetría y claridadSi se escribe más de una sentencia, no se necesitan escribirlas entre llaves ({})Si escribimos dos case con el mismo valor de selector, se produce un error en tiempo de compilación

Page 73: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

73

Calculadora//Calculadoraimport LeerTeclado.*;class Calculadora {public static void main (String args[]) {

char operador;int n1,n2, resultado;

n1= LeerTeclado.readInt();operador= LeerTeclado.readChar();n2= LeerTeclado.readInt();...

Page 74: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

74

Calculadora (2)switch (operador) {case ‘+’: resultado= n1 + n2;

break;case ‘-’: resultado= n1- n2;

break;case’/’: resultado= n1/n2;

break;default: resultado=0;}System.out.println (“->” + resultado);}}

Page 75: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

75

Estructuras repetitivas

Permiten la ejecución repetida de un grupo de sentenciasPueden ser:

while (condición) acción;do acción while (condición);for (inicialización; condición; actualización)

Page 76: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

76

Estructura while

while (condición) {acción;

}

condición acciónTrue

False

Page 77: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

77

Ejemplo while

public class MCD {//calculo del maximo comun divisor entre 15 y 24public static void main(String args[ ]) {

int x = 15, y = 24;while (x != y) {

if (x < y)y = y - x;

elsex = x - y;

}System.out.println(“el MCD entre 15 y 24 es “ + x);

}}

Page 78: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

78

Estructura do-while

do {acción;

} while (condición);

False

condición

acción

True

Page 79: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

79

Ej: constante de Euler// Constante de Eulerclass Euler {public static void main (String arg[]) {int i;double e, ei;i=0; ei=1; //entero ->reale= ei;do {

i++;ei= ei/i; // real / entero -> reale=e+ei;System.out.println (“e=” + e);

} while (ei> Math.pow(1, -10));}

}

Page 80: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

80

Estructura for

condición

Inicialización

actualizaciónacciónTrue

False

Page 81: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

81

Estructura for

for(inicialización; condición; actualización) acción;

inicialización: se pueden inicializar, e incluso declarar, cualquier número de variablescondición: si es verdad se sigue el ciclo (bucle) actualización: actualiza varias variables (modifica valor)

for(int i=0; i<10; i++) {System.out.println(i);}

for(int i=1, j=2 (j<10)&&(i>2); i++, j=j+i) acción;

Page 82: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

82

Ejemplos

i=1; while (i<=10) {System.out.println(i); i= i+1}i=1; do {System,out.println(i); i: =i+1} while(i<=10);for (i=1; i <=10; i++) {System.out.println (i); }

Ejemplo: cálculo del factorial de un número enterofact= 1; for(i= n; i >= 1; i--) {fact = fact *i;}

Page 83: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

83

Elección de estructura

Si 1 ó más veces, elegir do { } while ();Si 0 ó más veces, elegir while () {}Si número fijo de veces, elegir for

Aunque en realidad todo se puede escribir con for´s y resulta más cómodo y compacto.

Page 84: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

84

Programación orientada a objetos

MSc. Lic. Carla Salazar SerrudoLic. Victor Hugo Montaño

Carrera de Informática y SistemasUMSS - 2003

Page 85: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

85

Orientación a Objetos

El concepto surge en los lenguajes de programación

Se organiza el software como una colección de objetos discretos que encapsulan

Estructuras de Datos yComportamiento.

Un sistema OO funciona mediante la colaboración entre los objetos que se comunican entre sí

Page 86: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

86

Orientación a Objetos (2)

El concepto se extiende a los métodos de análisis y diseño

Se utilizan los objetos del mundo real como base para construir modelosLos elementos que forman los sistemas del mundo real se corresponden con objetos software

Page 87: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

87

Clases y objetos

ClaseAtributosOperacionesComportamiento

Lavadora

marcamodelocapacidad: integer...

Programar()PonerRopa()CerrarPuerta()Lavar(...)Objeto

Valores de los atributosEstadoIdentidad

ID:Lavadora

marca=“Lapava”capacidad=5estado=centrifugando

Page 88: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

88

Conceptos POOClases: patrones que indican cómo construir los objetosObjetos: instancias de las clases en tiempo de ejecución

Ej: plano de un casa vs casa hechaMiembros de una clase:

Atributos: propiedades de los objetosMétodos: comportamiento de los objetos

Page 89: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

89

Conceptos POO (2)Cada objeto tiene características reconocibles

Un empleado tiene CI, nombre, sueldo, ...Cada objeto es único:

El empleado1 es Juan Pérez con CI 335566 y sueldo 3000 Bs.

Los objetos realizan operaciones sobre sus atributos

Page 90: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

90

Ejemplo clase y objeto

ClaseAtributosMétodos

Empleado

CI: 336655

MostrarCI();MostrarNombre();

Page 91: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

91

Ejemplo mínimo de POOclass MinimoPOO {public static void main (String args[]) {

Pizarra obj = new Pizarra();Pizarra.mostrar();

}}class Pizarra {public void mostrar(){

System.out.println(“Ejemplo objeto”);}

}

Page 92: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

92

Paso de mensajes

:MandoADistancia :Televisor

Conectar()

Canal(4)

Invocación de métodosMedio de colaboración entre objetosEj: un objeto mando a distancia puede encender un televisor. También puede sintonizar canales

Page 93: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

93

Sintaxis de clase

class < NombreClase> {

// declaración de atributos

<tipo> <variable>;

// declaración de métodos

<tipo> <nombreMétodo>(<argumentos>)

{ ... }

}

Page 94: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

94

Sintaxis de clase (2)

El nombre del fichero Java debe coincidir con el de la clase definida en él. Ej: NombreClase.javaEs recomendable definir una clase por cada fichero Java

Page 95: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

95

Ejemplo de claseclass Hora {

// atributos

int hora;

int min;

int seg;

// métodos

void asignarHora (int h){

hora = h; }

}

Page 96: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

96

Creación de un objeto

Se utiliza la palabra reservada new<refObjeto> = new <NombreClase>();

Ejemplo:Hora clases;

clases = new Hora();

hora min seg

0xFF000000

clases

Page 97: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

97

Acceso a los miembros de un objeto

Usando el operador punto (.) se puede acceder a los atributos y a los métodos

<refObjeto>.<atributo><refObjeto>.<método>()

Ejemplo:Hora clases = new Hora();clases.hora = 14;clases.min = 15;clases.asignarHora(11)

Page 98: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

98

MétodosLos métodos son bloques de código (subprogramas) definidos dentro de una claseUn método tiene acceso a todos los atributos de su clasePueden ser llamados desde cualquier sitio.Todos los programas se inician main

Page 99: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

99

Definición de métodos<tipoRetorno> <nombreMétodo> (<lista de argumentos>) {

<bloqueCódigo>

}

<TipoRetorno>: Tipo de dato que retorna el método. Puede ser primitivo o referencia. Sino devuelve valor, debe ser void<lista de argumentos>: Argumentos separados por comas: (tipo1 var, tipo2 var2, ...)

Page 100: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

100

Definición de métodos (2)<bloqueCódigo> : Conjunto de sentencias que implementan la tarea que debe realizar el métodoSi devuelve un valor, se debe usar la sentencia return:

return <valor>

<valor>: Debe ser del mismo <tipoRetorno>con que se ha declarado el método. Si se necesitan, se pueden declarar variables locales

Page 101: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

101

Ejemplosdouble areaCirculo(double r) {

return r*r*PI;

}

void imprimirHola() {

System.out.println(“hola”);}

String horaFormato(int h, int m){

return h+ “:”+ m;}

Page 102: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

102

Paso de argumentosEn Java solo existe el paso de argumentos por valorEl método recibe una copia de los argumentosEl valor de los argumentos de tipo primitivo no cambia fuera del métodoEl valor de los argumentos de tipo referencia no cambia fuera del método

Page 103: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

103

Ámbito de las variables

Se disponen de tres tipos de variables:Variables miembro pertenecientes a una claseArgumentos de un método de la claseVariables locales de un método de la clase

Los argumentos de un método funcionan como variables locales

Page 104: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

104

Ejemplo

class AmbitoVar {

int x; //variable miembro

void metodo1( int y) { //argumento

int z; // variable local

x = y + z;

}

}

Page 105: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

105

Ámbito de variables (2)Las variables miembro son visibles desde cualquier parte de la claseLos argumentos y variables locales sólo son visibles dentro del método al que pertenecen. Dejan de existir al terminar el método.Dentro de un método, si coincide el identificador de un argumento o variable local con el de una variable miembro, sólo se accede a la variable del método

Page 106: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

106

Puntero thisSe usa para apuntar al objeto actual dentro de un métodoCon this se hace accesible una variable miembro cuyo identificador coincide con una variable local

Page 107: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

107

Ejemplomain ... {int a=4; EjThis obj = new EjThis();obj.x = 1;obj.metodo(a);...

}class EjThis {

int x;void metodo (int y) {int x=2;y = 3*this.x + y – x;System.out.println(y) // y = 5 }

}

Page 108: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

108

Sobrecarga de métodos

Varios métodos con la misma tarea, pero diferentes argumentos.Un método se identifica por su nombre, tipo de retorno, número de argumentos que tiene y el tipo de cada uno de ellos.

void mostrarInt(int i) void mostrar(int i)void mostrarLong(long l) void mostrar(long l)void mostrarFloat(float f) void mostrar(float f)

Page 109: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

109

Constructores

Un constructor es un tipo especial de método que permite construir una objeto de una claseclass Hora {

...

public Fecha () {...}

public Fecha (int h, int m, int s)

{...}

Page 110: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

110

Constructores (2)

Los constructores no tienen tipo de retorno.Se usan con la palabra reservada newHora clase = new Hora(14, 15, 0);

Se pueden sobrecargar y son opcionalesEn el constructor se inicializan variables miembro

Page 111: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

111

Destructores

No existen destructores de objetos en JavaEl garbage collector es el que libera la memoria de objetos

Page 112: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

112

Arreglos

Los estructuras de memoria que almacenan en una variable múltiples valores del mismo tipo.Los arreglos son objetos, se crean con la palabra newSe usan corchetes [] para declarar el arreglo y para acceder a sus elementos

Page 113: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

113

Arreglos (2)

Se puede averiguar el largo de un arreglo: int largo = a.length;

length es un campo del objeto arreglo y no un método. El primer elemento del arreglo está en la posición 0 y el último en la posición length-1 Se puede asignar un arreglo a otro

Page 114: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

114

Arreglos(3)

Declaración:tipoDeElementos[] nombreDelArreglo = new

tipoDeElementos[tamañoDelArreglo];

Creación:un arreglo vacío:

int []lista = new int[50];con valores iniciales:

String [] nombres = {"Juan","Pepe","Pedro"};

Page 115: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

115

Arreglos (4)

Se pueden declarar como:int[] A; int A[];

Esto es la declaración del puntero al arreglo, no se especifica tamaño en la declaración;Inicialización:A = new int[10];

int[] A = new int[10];

Page 116: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

116

Ejemplosint [] digitosPares = {0,2,4,6,8}

String [] dias = {“lunes”, “martes”,“miércoles”, “jueves” ,“viernes”, “sábado”, “domingo” }Hora [] clases = {new Hora(8,15),

new Hora(9,45), new Hora(11,15),new Hora(14,15) }

Recorrido:for (int i=0; i < dias.length, i++)

System.out.println(dias[i]);

Page 117: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

117

Arreglos multidimensionalesLos arreglos anteriores eran de una sola dimensiónPara tener más dimensiones se necesita un par de corchetes para cada dimensión.

Int [] unAño = new int [12]Int [][] tresAños = new int[3] [12]// tresAños es un arreglo de tres elementos, donde cada elemento es un arreglo de dimensión 12.

Page 118: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

118

Arreglos multidimensionalesInicialización:

int [][] matriz = new int [2][3];matriz[0][0]= 1; matriz[0][1]= 2; matriz[0][2]= 3; matriz[1][0]= 4; matriz[1][1]= 5; matriz[1][2]= 6;

Equivalente a:int [][] matriz = {{1,2,3},

{4,5,6}};

Page 119: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

119

Clase Math

La clase Math de Java provee de los métodos matemáticos típicos:

Math.sqrt(x)Math.sin(x)Math.max(x,y)Math.pow(x,y)Math.PI // constante PIMath.E // constante E

No es necesario importarla, está disponible

Page 120: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

120

Clase String

Permite el manejo de cadenasNo es necesario importarla, está disponibleCreación

String s = new String(“Hola Mundo”);String s = “Hola Mundo”;

Tamaño de un String: int i = s.length();

Page 121: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

121

Clase String(2)

k-esimo carácter: char c = s.charAt(k)

Subsecuencias: String sub = s.substring(k)

String sub = s.substring(inicio, fin)

Búsqueda de subsecuencias: int i = s.indexOf(“hola”);

Page 122: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

122

Clase String(3)

Comparación: boolean iguales = s1.equals(s2);

int i = s1.compareTo(s2);

//0 si s1==s2, >0 si s1>s2, <0 si s1<s2

Page 123: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

123

Ejemplo de substrings //Contar las apariciones de “hola” en string s:

public class Cuenta {public static void main(String args[]) {

int i , apariciones = 0;

String s = “llego y dijo hola”;while ((i = s.indexOf(“hola”)) != -1) {

++apariciones;s = s.substring(i+1);

}System.out.println(“hola aparecio “+

apariciones+ “veces”);}

}

Page 124: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

124

Características avanzadas POOExisten tres conceptos avanzados:

Encapsulación: Permite la protección de ciertas partes de un objeto del acceso desde otros objetos externosHerencia: Jerarquía de clases basada en la agrupación de atributos y métodos comunesPolimorfismo: Tratamiento generalizado de todas las clases pertenecientes a una jerarquía de herencia

Page 125: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

125

Encapsulación

Consiste en el agrupamiento de datos y su tratamiento en una misma estructuraPermite la protección de la manipulación externa de algunas partes de los objetosUn objeto puede tener datos y código privados de acceso restringido

Page 126: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

126

Encapsulación(2)

Fuerza al usuario a usar una interfaz para acceder a los datos.Hace que el código sea más fácil de mantener.Se tienen modificadores de acceso para proteger los miembros de un objeto

Page 127: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

127

Modificadores para restringir acceso

Los modificadores se colocan al principio del miembro[<modificador>] <tipo> <identificador>

[<modificador>] <tipo> <nombre> (<arg>) { ... }

Los modificadores permiten acceder a los datos o al código de manera restringida

Page 128: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

128

Modificadores de acceso

public: Un miembro con acceso público es accesible para todos los métodos del programa. Los miembros públicos son heredados a las subclases.private: Un miembro con acceso privado es accesible sólo para todos los métodos de la clase. No se heredan.protected: Un miembro con acceso protegido es accesible por todos los métodos del paquete. Se heredan.

Page 129: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

129

Ejemploclass Hora {public int hora;public int min;public int seg;

}...Hora h = new Hora();

h.hora = 25; // valores incorrectosh.min = 61; h.seg = 100;

...

Page 130: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

130

Ejemplo (2)class Hora {private int hora;private int min;private int seg;

}...Hora h = new Hora();

h.hora = 25; // ERRORh.min = 61; // ERRORh.seg = 100; // ERRORint h1;h1 = h.hora; // ERROR

}

Page 131: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

131

Ejemplo (3)class Hora {

private int hora;private int min;private int seg;public void setHora(int h){

if (h>0) && (h<25)hora = h;

}public void getHora(){

return hora;}

}...Hora h = new Hora();

h.setHora(25); h.getHora();}

Page 132: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

132

HerenciaJerarquía de clases basada en agrupar atributos y/o métodos comunesEj: una lavadora, televisor y plancha son electrodomésticosLas clases descendientes se llaman subclasesLas clases ascendientes se llaman superclases

Page 133: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

133

Ejemplo

Las subclases heredan características y métodos de las superclases (excepto constructores)

PlanchaTelevisor

ElectrodomésticotensiónconsumoConectarDesconectar

Lavadoracapacidad numCanales vapor

Page 134: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

134

Ejemplo (2)

Las partes comunes de lavadora, televisor y plancha se agrupan en una clase llamada electrodoméstico.Las partes no comunes pertenecen a cada clase en particularLas subclases heredan de las superclases con la palabra extend

Page 135: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

135

Relación “es-un”

Para saber si la relación de herencia es correcta, se plantea la pregunta ¿la subclase es una superclase?Ej: ¿la plancha es un electrodoméstico?

class Electrodoméstico {...}class Plancha extends Electrodoméstico{

boolean vapor; ...}

Page 136: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

136

Relación “es-un” (2)class Electrodoméstico {

int tensión;float consumo;

...}

class Plancha extends Electrodoméstico {boolean vapor;

...}

Page 137: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

137

Herencia simple

Si una clase hereda de una única clase se considera herencia simpleSi una clase hereda de varias clases se considera herencia múltipleLa herencia simple permite que el código sea reutilizable

Page 138: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

138

Relación “tiene-un”

Una clase puede tener referencias a otros objetos de otras clasesSe diferencia de la herencia en que es necesario instanciarlos por separadoResponde a la pregunta: ¿Contenedor tiene un contenido?

Page 139: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

139

Relación “tiene-un” (2)class Motor {

...

}

class Chasis {

...

}

class coche {

Motor m; // coche tiene un motor

Chasis ch; // coche tiene un chasis

...

}

Page 140: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

140

PolimorfismoPolimorfismo indica muchas formasUna clase sólo tiene una forma, pero una variable que hace referencia a la superclase de una jerarquía puede tener muchas formas (una por cada subclase)Puede usarse con

Parámetros polimórficosColecciones heterogéneas

Page 141: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

141

Polimorfismo (2)Electrodoméstico e1 = new Electrodoméstico();

Electrodoméstico e2 = new Plancha();

Electrodoméstico e3 = new Televisor();

Electrodoméstico e4 = new Lavadora();

e2.vapor = true // ERROR

((Plancha)e2).vapor = true;

Page 142: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

142

Parámetros polimórficosclass Mascota {...}class Raton extends Mascota {...}class Gato extends Mascota {...}

class Veterinario {void vacunar (Mascota m) { ... }

}...

Veterinario doctor = new Veterinario();Gato tom = new Gato();Raton jerry = new Raton();doctor.vacunar(tom);doctor.vacunar(jerry);

Page 143: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

143

Colecciones heterogéneas

Usando polimorfismo se puede conseguir que un arreglo contenga elementos de distinto tipo.Se crea el arreglo con el tipo de la superclase

Mascota [] lista = new Mascota[3];lista[0] = new Mascota();lista[1] = new Gato();lista[2] = new Raton();

Page 144: Texto de Introducción a la Programación · Programa Un programa es una ... Orientado al objeto (tendencia en boga) Simple (similar a C, sin complejidades) Multiplataforma (Windows,

144

Colecciones heterogéneasclass Empleado {

int calcularVacaciones() { ...}}class Jefe extends Empleado {

int calcularVacaciones() { ...}}Empleado [] lista = new Empleado[100];lista[0] = new Empleado();lista[1] = new Jefe(); ...

lista[99] = new Empleado();For (int i= 0; i<lista.length; i++)

System.out.println(lista[i].calcularVacaciones());