47
Datos numéricos Curso de Programación galia.fc.uaslp.mx/~medellin/ IntProg.htm

Datos numéricos

  • Upload
    gurit

  • View
    36

  • Download
    0

Embed Size (px)

DESCRIPTION

Datos numéricos. Curso de Programación galia.fc.uaslp.mx/~medellin /IntProg.htm. OBJETIVOS. Seleccionar los tipos apropiados para los datos numéricos. Escribir expresiones aritméticas en Java. Evaluar expresiones aritméticas usando las reglas de precedencia. - PowerPoint PPT Presentation

Citation preview

Page 1: Datos numéricos

Datos numéricos

Curso de Programacióngalia.fc.uaslp.mx/~medellin/IntProg.htm

Page 2: Datos numéricos

OBJETIVOS

• Seleccionar los tipos apropiados para los datos numéricos.• Escribir expresiones aritméticas en Java.• Evaluar expresiones aritméticas usando las reglas de precedencia.• Describir cómo trabaja la asignación de memoria para los objetos y las

primitivas de valores de datos.• Escribir expresiones matemáticas usando métodos de la clase Math.• Escribir programas que usan datos de entrada y de salida mediante las

clases• CuadroEntrada y CuadroSalida del paquete Javabook.• Aplicar una técnica de desarrollo incremental para escribir los

programas.• (Opcional) Describir cómo se representan en memoria los números

enteros y reales.

Page 3: Datos numéricos

Introducción

Cuando se escriben programas de computadora, es útil para los novatos visualizar tres tare entrada, computación y salida.

Los programas de computadora se visualizan como un proceso consistente en obtener una entrada, llevar a cabo la entrada en la computación sobre los datos de entrada y mostrar los resultados de la computación.

Page 4: Datos numéricos

Variables

Una variable tiene tres propiedades:

Una posición de memoria para almacenar el valor

El tipo de datos almacenado en la posición de memoria

El nombre usado para referirse a esa posición de memoria.

La sintaxis general para declarar variables es

<tipo de datos> <variables>;

Page 5: Datos numéricos

EjemploSe puede declarar x e y por separado o en una sola línea

int x;int y;

O

int x, y;

No se puede declarar el mismo nombre de variable más de una vez.

int x, y, z;int y;

Page 6: Datos numéricos

Tipos de datos numéricos de Java y sus precisiones

Tipo ContenidoValor Valor mínimo Valor máximode dato por defecto*

byte entero 0 -128 127

short entero 0 -32768 32767

int entero 0 -2147483648 2147483647

long entero 0 -9223372036854775808 9223372036854775807

float real 0.0 -3.40282347E+38** 3.40282347E+38

double real 0.0 -1,79769313486231570E+308 1,79769313486231570E+308

* No hay valor por defecto asignado a una variable local.

**El carácter E indica que un número se expresa en notación científica.

Page 7: Datos numéricos

Otro ejemploA continuación se muestra un ejemplo de declaración de variables de distintos tipos de datos:

int i, j, k ;float numeroUno, numeroDos;long enteroGrande;double numeroGrande;

Una variable también puede ser iniciada cuando se declara. Por ejemplo, se puede dar valor inicial a las variables enteras contador y altura a 10 y 34, respectivamente, de la siguiente for

int contador = 10, altura = 34;

Page 8: Datos numéricos

Declaración de objetos

De la misma forma que se pueden iniciar las variables cuando se declaran, se pueden declarar y crear un objeto ai mismo tiempo, por ejemplo, la declaración

MainWindow ventanaPrincipal = new MainWindow( );

es equivalente a

MainWindow ventanaPrincipal;ventanaPrincipal = new MainWindow( );

Page 9: Datos numéricos

Sentencia de asignaciónSe asigna un valor a un número usando una sentencia de asignación.

La sintaxis para la sentencia de asignación es

<variable> = <expresion>;

donde <expresion> es una expresión aritmética y el valor de <expresion> se asigna a <variable>.

A continuación se muestran ejemplos de sentencias de asignación válidas:

suma = primerNumero + segundoNumero;solución = x*x-2*x+l;media = (x+y+z) / 3,0;

Page 10: Datos numéricos

Punto importante

Antes de usar una variable, es necesario declararla y asignarle un valor en primer lugar.

Page 11: Datos numéricos

Asignación a variables

int primerNumero, segundoNumero;

Estado de la memoria

PrimerNumero = 234;segundoNumero = 87;

después de ejecutar A

primerNumero

Las variables primerNumero y segundoNumero se declaran e indican en memoria.

Asignación de valores a las variables primerNumero y segundoNumero.

A

B

segundoNumero

int primerNumero, segundoNumero;

PrimerNumero = 234;segundoNumero = 87;

después de ejecutar B

primerNumero 234

segundoNumero 87

Page 12: Datos numéricos

Diferencia entre declaración de objetos y dato numérico

int numero;

numero = 237;

numero = 35;

Custumer cliente;

cliente = new Custumer();

cliente = new Custumer();

numero cliente

Page 13: Datos numéricos

Diferencia entre declaración de objetos y dato numérico

int numero;

numero = 237;

numero = 35;

Custumer cliente;

cliente = new Custumer();

cliente = new Custumer();

numero 237 cliente

Costumer

Page 14: Datos numéricos

Diferencia entre declaración de objetos y dato numérico

int numero;

numero = 237;

numero = 35;

Custumer cliente;

cliente = new Custumer();

cliente = new Custumer();

numero 35 cliente

Costumer Costumer

Page 15: Datos numéricos

Efecto de asignar el contenido de una variable a otra

int numero, numero1;

numero1 = 237;

numero2 = numero1;

Custumer cliente, cliente 2;

cliente1 = new Custumer();

cliente2 = cliente1;

numero1cliente1

numero2cliente2

Page 16: Datos numéricos

Efecto de asignar el contenido de una variable a otra

int numero, numero1;

numero1 = 237;

numero2 = numero1;

Custumer cliente, cliente 2;

cliente1 = new Custumer();

cliente2 = cliente1;

numero1 237cliente1

numero2cliente2

Costumer

Page 17: Datos numéricos

Efecto de asignar el contenido de una variable a otra

int numero, numero1;

numero1 = 237;

numero2 = numero1;

Custumer cliente, cliente 2;

cliente1 = new Custumer();

cliente2 = cliente1;

numero1 237cliente1

numero2cliente2

Costumer

237

Page 18: Datos numéricos

Preguntas rápidas

Preguntas rápidas

1. ¿Por qué no son válidas las declaraciones siguientes?

int a, b, a;float x, int;float w, int, x;numeroGrande double;

2. Asumiendo que las declaraciones siguientes se ejecutan en secuencia, ¿por qué son inválidas la segunda y tercera declaración?int a, b;int a;float b;

Page 19: Datos numéricos

Preguntas rápidas

3. Nombre seis tipos de datos para valores numéricos.

4. ¿Cuáles de las siguientes sentencias de asignación son inválidas (asumiendo que las variables están declaradas correctamente)?x = 12;12 = x;y + y = x;y = x + 12;

5. Dibuje el diagrama de estado de memoria para el siguiente código:Cuenta cuentaLeche, cuentaExpreso;cuentaLeche = new Cuenta ();cuentaExpreso = new Cuenta ();cuentaLeche = cuentaExpreso;

Page 20: Datos numéricos

Expresiones aritméticasOperadores Aritméticos

Operador Valor Operación Java Ejemplo (x=10,y=7,z=2,5)

Suma + x + y 17

Resta - x - y 3

Multiplicación * x * y 70

División / x / y 1

x / z 4.0

Modulo(resto) % x % y 3

Page 21: Datos numéricos

Reglas de precedencia para operadores aritméticos y paréntesis

subexpresión ( )

operadores unarios -, +

operadores de multiplicación * / %

operadores de suma y resta +, -

Page 22: Datos numéricos

Ejemplo de precedencia

a * (b + - (c / d) / e) + (f - g % h)1

2

3

4

5

6

7

8

Page 23: Datos numéricos

Conversión de tipo

Cuando una expresión aritmética está formada por variables y constantes del mismo de datos, entonces el resultado de la expresión será también de ese tipo de datos.

Cuando los tipos de datos de las variables y constantes en una expresión aritmética son distintos, es necesario llevar a cabo una conversión.

Una conversión de tipo es un proceso que convierte el valor de un tipo de datos a otro tipo de datos.

Page 24: Datos numéricos

Reglas para promoción aritmética

Tipo de operador Regla de promoción

Unario 1. Si el operando es de tipo byte o short, se convierte a int.2. En cualquier otro caso, el operando sigue siendo del mismo tipo

Binario 1. Si el operando es de tipo double, entonces el otrooperando convierte a double.2. En cualquier otro caso, si cualquier operando es de tipofloat entonces el otro operando se convierte a float.3. En cualquier otro caso, si uno de los operandos es detipo long entonces el otro operando se convierte a long.4. En cualquier otro caso, ambos operandos se convierten a int.

Page 25: Datos numéricos

Operador de conversión de tipoLa sintaxis es para conversión de tipo es:

(<tipo de datos>) <expresion>

El operador de conversión de tipos es un operador unario y tiene una precedencia mayor que cualquier operador binario.

Es necesario usar paréntesis para hacer conversión de tipo de una subexpresión.

Por ejemplo, la expresión

a + (double) (x + y * z)

dará como resultado que la subexpresión x + y * z se convertirá a double.

Page 26: Datos numéricos

Operadores en cascadaSi se desea asonar un valor a múltiples varíales, se pueden usar operadores de asignación en cascada de la forma siguiente:

x = y = 1;

que es equivalente a decir.

y = 1;

x = 1;

El símbolo de asignación = es realmente un operador y su orden de precedencia es más bajo que el de ningún otro operador.

Los operadores de asignación se evalúan de izquierda a derecha.

Page 27: Datos numéricos

Preguntas rápidas1. Evalúe las siguientes expresiones:a. 3 + 5 / 7b. 3 * 3 + 3 % 2c. 3 + 2 / 5 + - 2 * 4d. 2 * (1 + -(3 / 4) / 2) * (2 - 6 % 3)

2. ¿Cuál es el tipo de datos resultante de las siguientes expresiones?

a. (3 + 5) / 7b. (3+5) / (float) 7c. (float) ( (3+5) / 7 )

3. ¿Cuál de las siguientes expresiones es equivalente a

a. - b * (c + 34) / 2 * ab. - b * (c + 34) / (2 * a)c. - b * c + 34 / (2 * a)

a

cb

2

)34(

Page 28: Datos numéricos

Constantes

Una constante se declara forma similar a una variable, pero añadiendo la palabra reservada final.

Una constante dede tener un valor asignado cuando se declara.

final double PI =3.14159

final short CONSTANTE_DE_FARADAY = 23060;

final double CM_POR_PULGADA = 2.54;

final int MESES_EN_UN_AÑO = 12;

Page 29: Datos numéricos

Constantes

La constante PI se denomina nombrada o constante simbólica.

Las referencias a las constantes simbólicas se llevan a cabo con identificadores, como PI y CONSTANTE_DE_FARADAY.

El segundo tipo de constante se denomina constante literal y se referencia usando un valor real.

final double PI = 3.14159;

double area;

área = 2 * PI * 345.79;

Page 30: Datos numéricos

Error comúnPuesto que una constante numérica, como 345.79 representa un valor double, las siguientes sentencias

float numero;

numero = 345.79;

por ejemplo, darían un error de compilación.Los tipos de datos no coinciden y la variable (float) tiene menor precisión que la constante (double).

Para corregir este error, tenemos oue escribir la sentencia de asignación como:

numero = 345.79f;

o

numero = (float) 345.79;

Este es uno de los errores más frecuentes que comete la gente cuando escñbe programas de Java, especialmerte aquellos que tienen experiencia en programación anterior en otros lenguajes.

Page 31: Datos numéricos

Notación científica

También se pueden expresar las constantes literales float y double en notación científica:

número X 10exponente

lo que en Java se expresa como:

<numero> E <exponente>

donde <numero> es una constante literal que puede o no contener un punto decimal y <exponente> es un entero con o sin signo.

Page 32: Datos numéricos

EjemplosSeguidamente, se muestran algunos ejemplos:

12.40E+20923E3329.0098E-102234E+5D4.45E2

A continuación se muestran algunos ejemplos de declaración de constantes:

final double VELOCIDAD_DE_LA_LUZ=3.0E+10D; //la unidad es // cm/sfinal short MAX PESO PERMITIDO = 400;

Page 33: Datos numéricos

La clase Math

La clase Math en el paquete java.lang contiene los métodos de clases frecuentemente usados en las funciones matemáticas.

Por ejemplo:

abs(a), acos( a ), asin(a), atan(a), ceil(a), cos(a), exp(a), floor(a), log(a), max(a,b), min(a,b), pow(a,b), random(), round(a), sin8a),sqrt(a), tan(a).

Page 34: Datos numéricos

Ejemplo

(1.0/2.0)*Math.sin(x-Math.PI/Math.sqrt(y))

yxsen

2

1

Observe cómo se hace referencia a los métodos y las constantes de la clase en la expresión. La sintaxis es:

<nombre de clase>.<nombre de método> (<argurnentos>)

o

<nombre de clase>.<constante de clase>

Page 35: Datos numéricos

Preguntas rápidas

1. ¿Qué está equivocado en lo siguiente?

a. y = (1/2) * Math.sqrt( X );b. y = sqrt(38.0);c. y = Math.exp(2, 3);d. y = math.sqrt(b*b - 4*a*c)/(2*a);

2. Si otro programador escribe la siguiente sentencia, ¿sospecharía que hay algún error por parte de este programador? ¿Cuál sería el valor de y?

a. y = Math.sin(360);b. y = Math.cos(45);

Page 36: Datos numéricos

InputBox

Un objeto CuadroEntrada es un diálogo, lo que significa que debe especificar un marco propietario y después crear el objeto. Como antes, se usará ventanaPrincipal como propietario.

InputBox CuadroEntrada;CuadroEntrada = new InputBox(ventanaPrincipal);

Para introducir un entero se envía un mensaje getInteger a un objeto

CuadroEntrada de la forma siguiente

CuadroEntrada.getInteger( );

Page 37: Datos numéricos

Métodos de InputBox

Los métodos deBox aceptan una cadena de caracteres y permiten leer números enteros, float y double.

getDouble - Perimte introducir un número double.

getFloat - Perimte introducir un número float.

getInteger - Perimte introducir un número integer.

Page 38: Datos numéricos

ejemplo

import javabook.*;

public class Test0{ public static void main(String[] args) { MainWindow ventanaPrincipal = new MainWindow(); InputBox cuadroEntrada; cuadroEntrada = new InputBox(ventanaPrincipal); ventanaPrincipal.show(); int x; x = cuadroEntrada.getInteger(“Teclee un entero:”); }}

Page 39: Datos numéricos

Preguntas rápidas1. ¿Qué está equivocado en el siguiente código?

final double x = 123.444;x = cuadroEntrada.getDouble();

2. ¿Qué código de los siguientes es válido?

a.

double numero;numero = cuadroEntrada.getFloat();

b.

float numero;numero = cuadroEntrada.getDouble();

Page 40: Datos numéricos

OutputBoxEn la programación orientada a objetos, e\ desarrollo eficiente y efectivo de programas radica en el uso apropiado de las clases.

Las clases se deben usar para lograr el propósito para el o\ue fueron disenadas igual o\ye se elige la herramienta más adecuada para una determinada tarea.

Cuando se quiere construir una mesa, se debería usar una sierra circular para cortar, pero cuando quiere construir una casa de pajaros probablemente será necesario usar una herramienta de corte más precisa.

Una clave para obtener el éxito en la programación orientada a objetos es aprender a seleccionar la clase más apropiada para cada tarea.

Más tarde aprenderá a diseñar clases nuevas, si no encuentra ninguna clase apropiada para lo que desea.

Page 41: Datos numéricos

OutputBox

A continuación se muestra cómo se crea y se declara un objeto OutputBox cuyo propietario es un objeto ventanaPrincipal:

OutputBox cuadroSalida;cuadroSalida = new OutputBox(ventanaPrincipal);

El método print muestra un argumento en un objeto cuadroSalida.

cuadroSalida.print("Hola, Dr. Cafeína.");

Page 42: Datos numéricos

ejemploimport javabook.*;public class Test{ public static void main(String[] args){ MainWindow ventanaPrincipal = new MainWindow();

OutputBox cuadroSalida; cuadroSalida = new OutputBox(ventanaPrincipal); ventanaPrincipal.show(); cuadroSalida.show(); int x, y; x = 123; y = x + x; cuadroSalida.printLine(“Hola, Dr. Cafeína.”); cuadroSalida.print (“x = “) ; cuadroSalida.printLine(x); cuadroSalida.print (“x + x = “) ; cuadroSalida. printLine(y); cuadroSalida. printLine (“FIN.”); }}

Page 43: Datos numéricos

ejemploimport javabook.*;public class Test2{ public static void main(String[] args){ MainWindow ventanaPrincipal = new MainWindow();

OutputBox cuadroSalida; cuadroSalida = new OutputBox(ventanaPrincipal); ventanaPrincipal.show(); cuadroSalida.show(); int x, y; x = 123; y = x + x; cuadroSalida.printLine(“Hola, Dr. Cafeína.”); cuadroSalida.print (“x = “ + x); cuadroSalida.print (“x + x = “ + y) ; cuadroSalida. printLine (“FIN.”); }}

Page 44: Datos numéricos

Calculador de préstamos

Escriba un programa calculador de préstamos que calcule los pagos mensuales y totales para una determinada cuantía del préstamo, la tasa de interés anual y el período del préstamo.

Page 45: Datos numéricos

Plan global

1. Obtener tres valores de entrada: cuantiaPrestamo, tasaInteres y duracionPrestamo.

2. Calcular los pagos mensuales y totales.

3. Mostrar los resultados.

N

R

RLmensualPago

11

1

donde L es la cuantía del préstamo, R es la tasa de interés mensual y N es el número de pagos.

Page 46: Datos numéricos

Documento de diseño: CalculadorDePrestamos

CalculadorDePrestamos - La clase principal del programa.

MainWindow - La ventana principal del programa. El título se define como Calculador De Prestamos. Ésta es una clase de javabook.

InputBox - Un objeto InputBox se usa en el programa para usar los tres valores de entrada: cuantía del préstamo, tasa de interés anual y duración del préstamo. Esta clase también es de javabook.

OutputBox - Se usa un objeto OutputBox para mostrar los valores de entrada y los dos valores calculados: pagos mensuales y pago total. Esta clase es de javabook.

Math -Se usa el método pow para evaluar la exponenciación en la fórmula que nos permite calcular el pago mensual. Esta clase es del programa |ava.lang. Nota: no es necesario importar java.lang. Las clases en java.lang están disponibles a todos los programas sin necesidad de importarlas.

Page 47: Datos numéricos

Diagrama de objetos

show

getFloat

getInteger skipLine

printLineshow

cuadroEntrada

InputBox

cuadroSalida

OutputBox

ventanaPrincipal

MainWindow

Math

pow

main

CalculadorDePrestamos