Está en la página 1de 19

Estructura de Datos y Algoritmos

Datos Primitivos
Tipos de Datos Pre definidos

Tipo de Dato. Conjunto de valores y operaciones definidas para esos valores

tipo conjunto de valor valores literales operaciones


e 'A'
char characters '@' compare

sequences of "Hello World"


String concatenate
characters "126 is fun"

17 add, subtract,
int integers 12345 multiply, divide

double
floating-point 3.1415 add, subtract,
numbers 6.022e23 multiply, divide
true
boolean truth values false and, or, not

2
Definiciones Básicas
Variable. Nombre que se refiere a un valor.
Expresion de asignacion. Asocia un valor con una variable.

3
Trazado
Trazado.Tabla de los valores de las variable después de
cada expresión

4
Texto
Tipo de dato String. Util para la salida y entrada de los programas .

Ojo. El significado de los caracteres


depende del contexto

6
Subdivisiones de una Regla

public class Ruler {


public static void main(String[] args) {
String ruler1 = "1"; "1"
String ruler2 = ruler1 + " 2 " + ruler1; "1 2 1"
String ruler3 = ruler2 + " 3 " + ruler2; "1 2 1 3 1 2 1"
String ruler4 = ruler3 + " 4 " + ruler3;
System.out.println(ruler4);
}
} Concatenación de cadenas

% java Ruler
1 2 1 3 1 2 1 4 1 2 1 3 1 2 1

7
Enteros

int tipo de dato. Util para expresar los algoritmos.

9
Operaciones con Enteros

public class IntOps {


public static void main(String[] args) {
int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]); command-line
arguments
int sum = a + b;
int prod = a * b;
int quot = a / b;
int rem = a % b;
System.out.println(a + " + " + b + " = " + sum);
System.out.println(a + " * " + b + " = " + prod);
System.out.println(a + " / " + b + " = " + quot);
System.out.println(a + " % " + b + " = " + rem);
}
}
% javac IntOps.java
% java IntOps 1234 99
1234 + 99 = 1333
1234 * 99 = 122166 Java automaticalmente convierte
1234 / 99 = 12 a, b , y rem al tipo String
1234 % 99 = 46

1234 = 12*99 + 46
10
Números de Punto Flotante
Double: tipo de dato muy util para las aplicaciones cientificas
Funciones principales de la Math Library

http://java.sun.com/javase/6/docs/api/java/lang/Math.html
Ecuacion Cuadratica
Ejem. Resolver la ecuacion: x2 + bx + c = 0. -b ± b2 - 4 c
raices =
2

public class Cuadratica {


public static void main(String[] args) {
double b = Double.parseDouble(args[0]);
double c = Double.parseDouble(args[1]);
// calcular raices
double discriminante = b*b - 4.0*c;
double d = Math.sqrt(discriminante);
double raiz1 = (-b + d) / 2.0;
double raiz2 = (-b - d) / 2.0;
// imprimir
System.out.println(raiz1);
System.out.println(raiz2);
}
}
Prueba
Prueba. Algunos valores ingresados validos y no validos.

% java Cuadratica –3.0 2.0 x2 – 3x + 2


2.0
1.0 command-line arguments

% java Cuadratica –1.0 –1.0 x2 – x - 1


1.618033988749895
golden ratio
-0.6180339887498949

% java Cuadratica 1.0 1.0 x2 + x + 1


NaN
NaN not a number

% java Cuadratica 1.0 hello


java.lang.NumberFormatException: hello

% java Cuadratica 1.0


java.lang.ArrayIndexOutOfBoundsException
Booleanos

boolean: Tipo de dato util para controlar la logica y el flujo de un programa


Comparaciones
Comparaciones. Toma los operandos de un tipo y produce un
operando de tipoboolean.
Año Bisiesto
P. Es este año un año bisiesto?
R. Si si es que el año (i) es divisible por 400 o (ii) es divisible por 4
pero no por 100.

public class Bisiesto {


public static void main(String[] args) {
int anio = Integer.parseInt(args[0]);
boolean esBisiesto;

// divisible por 4 pero no por 100


esBisieto = (anio % 4 == 0) && (anio % 100 != 0);

// o divisible por 400


esBisiesto = esBisiento || (year % 400 == 0);

System.out.println(isLeapYear);
} % java Bisiesto 2004
} true
% java Bisiesto 1900
false
% java Bisiesto 2000
true
Conversion de Tipos
Conversión de Tipos. Convierte de un tipo de dato a otro
Automatico: no hay pérdida de precision; o con strings. Explícito:
cast, o método.
!

21
Entero Aleatorio

Ejemplo. Genera un numero seudo aleatorio entre 0 y N-1.

public class RandomInt {


public static void main(String[] args) {
int N = Integer.parseInt(args[0]);
double r = Math.random();
String a int
int n = (int) (r * N);
double entre 0.0 y 1.0
double a int (cast) int to double (automatico)

System.out.println("random integer is " + n);


}
} % java RandomInt 6 int a String (automatico)
random integer is 3
% java RandomInt 6
random integer is 0
% java RandomInt 10000
random integer is 3184

22
Resumen
Un tipo de dato es un conjunto de valores y la operaciones sobre esos valores
String procesamiento de textos.
!

double, int calculo matematicos. !

!
boolean toma de decisiones.

Mal conversion de tipos de datos

En Java, se debe:
!
Declara los tipos de datos
Convertir entre tipos cuando sea necesario. !

Porque se necesitan convertir los tipos de dato?

!
La conversion de tipos deben hacerse a cierto nivel.

!
Los compiladores pueden ayudar a hacerlo correctamente.
Ejemplo: en 1996, el cohete Ariane 5 explotó despues de
su despegue debido aun tipo de conversion de datos erróneo

23
MUCHAS GRACIAS

También podría gustarte