Valeria Herskovic vherskov@dcc.uchile.cl Clase 2: Funciones Valeria Herskovic vherskov@dcc.uchile.cl.

Slides:



Advertisements
Presentaciones similares
Introducción a la Programación 8. Datos Numéricos.
Advertisements

Algoritmo y Estructura de Datos I
Suponiendo que además en la clase U hay: import java.util.*; class U{ static Scanner teclado = new Scanner(System.in); static public int readInt(String.
JAVA J.A.C..
Unit 1: Overview and Positioning
Repaso/resumen 1.lectura/escritura y asignación 2.funciones 3.selección de instrucciones (if-else) 4.repetición de instrucciones (while) 5.recursión 6.operadores/instrucciones.
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Temas Operaciones básicas Funciones Matemáticas
Fundamentos de Programación
INTRODUCCIÓN AL LENGUAJE C++
Más Ejemplos print “Calcular área y perímetro de círculo”
Computación I :: Prof. Yeniffer Peña Lenguaje C Presentación Computación I.
Java Java Java (1995) fue desarrollado en Sun Microsystems por James Gosling, Bill Joy y Guy Steele Influenciado por C++ Implementa clases, encapsulación,
My Java Cheat Sheet Operadores aritméticos. OperadorSignificadoEjemplos +Se utiliza para sumar valores numéricos 5+3 (7+2) -Se utiliza para restar valores.
Tema 2 : Java Básico Clase Práctica 5 (Conferencia 4)
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Funciones en lenguaje C 2 Funciones Definición: – Las funciones son los bloques de construcción básicos de C. Dentro de ellas se da toda la actividad.
Clase1: lectura/escritura/asignación
Clases y Objetos.
Tipos de datos Tipo de datos Significado Ejemplos Byte
SEMEJANZA U. D. 7 * 4º ESO E. Angel Prieto Benito
Clase 8: Strings Valeria Herskovic –
Operadores Aritméticos♥
FUNCIONES EN C.
Métodos y parámetros.
Repaso/resumen lectura/escritura y asignación funciones
Clase 3: Funciones Valeria Herskovic –
Clase 9: Repaso/Resumen
Clase 9: Repaso/Resumen
Uso de funciones y paquetes
Métodos en Java.
¿Cómo crear un laboratorio en casa?
Clase 8: Repaso/Resumen
Clase 9: Repaso/Resumen
Objeto de clase Fracción métodos públicos representación privada constructor Fraccion(…) asigna a procedimiento void m(…) modifica b función tipo/clase.
Clase 7: Abreviaturas Valeria Herskovic –
print “Calcular área y perímetro de círculo”
Clase 9: Repaso/Resumen
Teclado y Pantalla (Java estándar)
Tema 7. Introducción a lenguaje de programación Visual Basic (clase 2)
Unidad 3. Introducción a la programación
26-abril(J.Alvarez).
print “Calcular área y perímetro de círculo”
Paul Leger Funciones Paul Leger
clase3: instrucción if-else
Clase 7: Repaso/Resumen
Funciones de la Hoja de Calculo Lic. Oscar Gamarra Bustamante Docente 1.
Características de “C”
Tema 2 Variables y cálculos
Sobre las Funciones Trigonométricas
FUNCIONES Y PROCEDIMIENTOS
CICLOS EN JAVA FOR, WHILE, DO WHILE Un ciclo en Java o bucle en Java (como prefieras llamarlo) permite repetir una o varias instrucciones cuantas veces.
Repaso/resumen: Introducción a la Programación orientada a objetos
Soluciones de ejercicios 1 y 2
Clase1: lectura/escritura/asignación
Introducción a la Computación Numérica
String, random y stream en java
Clase 10 (Repaso/Resumen)
13-marzo-2008.
Programación Modular Programación de Computadoras - Hugo Vega Grupo2: Reina Rodríguez Miriam Salluca.
Ejemplos de uso //obtener una respuesta “si” o “no” static public String siNo(String x) throws IOException{ String r=U.readLine(x+” si o no?”) .trim().toLowerCase();
Tema 7. Introducción a lenguaje de programación Visual Basic (clase 2)
Estructuras de control
print “Calcular área y perímetro de círculo”
Clase1: lectura/escritura/asignación
clase4: instrucción if-else
Clase1: lectura/escritura/asignación
Lenguaje Java: características técnicas
Problema Un programa debe leer 2 números desde un objeto Console. El primero es el monto que un cliente debe pagar por una compra y el segundo la cantidad.
Transcripción de la presentación:

Valeria Herskovic vherskov@dcc.uchile.cl Clase 2: Funciones Valeria Herskovic vherskov@dcc.uchile.cl

Solución Ej 1 Calcular velocidad de un móvil Distancia (metros)? 100.0 Tiempo (segundos)? 9.78 Velocidad=36.81 km/hora U.println(“Calcular velocidad de un móvil”); U.println(“distancia (metros)?”); double d= U.readDouble(); U.println(“tiempo(segundos)?”); double t = U.readDouble(); U.print(“velocidad=“); U.print((d/1000)/(t/3600)); U.println(“km/hora”);

Solución Ej 1 - abreviada Calcular velocidad de un móvil Distancia (metros)? 100.0 Tiempo (segundos)? 9.78 Velocidad=36.81 km/hora U.println(“Calcular velocidad de un móvil”); double d= U.readDouble(“distancia (metros)?”); double t = U.readDouble(“tiempo(segundos)?”); U.print(“velocidad=“); U.print((d/1000)/(t/3600)); U.println(“km/hora”);

Solución Ej 1 – abreviada2 Calcular velocidad de un móvil Distancia (metros)? 100.0 Tiempo (segundos)? 9.78 Velocidad=36.81 km/hora U.println(“Calcular velocidad de un móvil”); double d= U.readDouble(“distancia (metros)?”), t = U.readDouble(“tiempo(segundos)?”); U.print(“velocidad=“); U.print((d/1000)/(t/3600)); U.println(“km/hora”);

Solución Ej 1 – abreviada3 Calcular velocidad de un móvil Distancia (metros)? 100.0 Tiempo (segundos)? 9.78 Velocidad=36.81 km/hora U.println(“Calcular velocidad de un móvil”); double d= U.readDouble(“distancia (metros)?”), t = U.readDouble(“tiempo(segundos)?”); U.print(“velocidad=“+((d/1000)/(t/3600))+“km/hora”); alternativamente: U.println(“velocidad=“ + 3.6*d/t + “km/hora”);

Solución Ej 2 Ingresar número de alumnos de colegios: públicos?165 subvencionados?177 particulares?293 públicos=26.0% subvencionados=27.9% privados=46.1% U.println(“ingresar nº alumnos de colegios:”); int a=U.readInt(“públicos?”), b=U.readInt(“subvencionados?”), c=U.readInt(“particulares?”); double factor=100.0/(a+b+c); U.println(“públicos=“ + a*factor + ”% “ + “subvencionados=“ + b*factor + ”% “ + “particulares=“ + c*factor + ”%“);

Solución Ej 3 Ingresar un nº de 2 dígitos? 73 Número invertido=37 //obtener nº int n=U.readInt(“Ingresar un nº de 2 dígitos?”); //calcular primer dígito int d1=n/10; //ej:73/10=7 //calcular segundo dígito int d2=n-d1*10; //ej:73-7*10=3 //mostrar resultado U.println(“nº invertido=” + (10*d2+d1) ); Mejor (muestra bien los terminados en 0) U.println(“nº invertido=” + d2 + d1); equivalencia: U.print(“nºinvertido=”);U.print(d2);U.println(d1);

Solución Ej 3 con operador % (resto o residuo de división entre enteros) ejemplo: 7 % 3 entrega 1 sintaxis: exp1 % exp2 (ambas enteras) semántica: exp1 – exp1/exp2*exp2 prioridad: misma que * y / //separar los dígitos int d1=n/10, d2=n%10; U.println(“Resultado=” + d2 + d1); o directamente: U.print(“Resultado=” + n%10 + n/10);

Problema Escribir las instrucciones principales de un programa que establezca el siguiente diálogo: Perímetro y area de triangulo de lados a,b,c a ? ___ b ? ___ c ? ___ Perímetro = n° Area = n° Nota. El área se calcula como s(s-a)(s-b)(s-c) con s=a+b+c (semi-perímetro) 2

Programa U.println(“perímetro y area de “ + “ triangulo de lados a,b,c”); //obtener lados double a=U.readDouble(“a ? ”), b=U.readDouble(“b ? ”), c=U.readDouble(“c ? ”); //calcular y mostrar perimetro y area U.println(“Perímetro = ” + (a+b+c)); double s=(a+b+c)/2; //semi-perimetro U.println(“Area = “ + Math.sqrt(s*(s-a)*(s-b)*(s-c))); o Math.pow(s*(s-a)*(s-b)*(s-c), 0.5));

Uso (invocación) de métodos (funciones) predefinidos ejemplos Math.sqrt(s*(s-a)*(s-b)*(s-c)) Math.pow (s*(s-a)*(s-b)*(s-c), 0.5) sintaxis Math.nombre(argumentos) ¿argumentos? cero o más expresiones aritméticas (separadas por comas) semántica 1° evaluar argumentos. Ejemplo: s*(s-a)*(s-b)*(s-c) 2° evaluar función (método) con/en valores de argumentos 3° recibir resultado de la función (en el lugar o punto de invocación)

Funciones predefinidas en el lenguaje Java (métodos de clase predefinida Math) función significado ejemplo resultado sqrt(x)  x, x  0 sqrt(4.0) 2.0 pow(x,y) xy pow(2.0,3.0) 8.0 exp(x) ex exp(1.0) 2.71... log(x) logex log(Math.E) 1.0 sin(x) seno de angulo x sin(Math.PI) 0.0 cos(x) coseno de x cos(Math.PI) -1.0 tan(x) tangente de x tan(Math.PI) asin(x) arco-seno de x asin(1.0) Π/2 acos(x) arco-coseno x acos(1.0) atan(x) arco-tangente x atan(0.0) todas las funciones reciben y entregan un double un argumento double admite un int (int es asignable a double)

Funciones predefinidas en el lenguaje Java (métodos de clase Math) función significado arg result ejemplo abs(x) |x| int double abs(-3) abs(-3.0) 3 3.0 max(x,y) mayor entre x e y max(4, 6) max(4.1, 6.5) 6 6.5 min(x,y) menor entre min(4, 6) min(4.1, 6.5) 4 4.1 random() Nº al azar en [0,1[ random( ) 0.x....

Problema Mostrar el mayor entre 3 enteros entre 1 y 100 generados al azar Números = 26 72 37 Mayor = 72 //generar 3 nº reales en rango [0,1[: 0.ddd… double a=Math.random(), b=Math.random(), c=Math.random(); //generar y mostrar 3 enteros en rango [1,100] int i=1+(int)(100*a), j=1+(int)(100*b), k=1+(int)(100*c); U.println(“Numeros= “ + i + “ “ + j + “ “ + k); //determinar y mostrar el mayor int l=Math.max(i,j), //mayor entre i y j m=Math.max(l,k); /mayor entre l y k U.println(“Mayor= “+m);

Random - casting int i=1+(int)(100*a); multiplica por 100 nº 0.d1d2d3... Resultado nº=d1d2.d3… ej: 57.8… convierte d1d2.d3… a entero, truncando decimales. ej: 57.8.. a 57 suma 1 a entero y asigna porque no se permite asignar un real a un entero: int i=1+100*a; coerción de tipos (casting) sintaxis: (tipo)(expresión) semántica evaluar expresión convertir resultado al tipo indicado entregar resultado

Solución 2. Con Funciones definidas por el programador class Programa { static public void main(String[]args){ int i=azar(1,100),j=azar(1,100),k=azar(1,100); U.println("Numeros="+i+" "+j+" "+k); U.println("Mayor=" + mayor(i,j,k)); } static public int azar(int x,int y){ return x + (int)(Math.random()*(y-x+1)); static public int mayor(int x,int y,int z){ int m=Math.max(x,y); return Math.max(m,z);

Funciones definidas por el programador sintaxis static public tipo-resultado nombre(parámetros) { instrucciones return expresión; } ¿parámetros? tipo nombre, ... semántica 1º copiar (asignar) argumentos de llamada en parámetros 2º ejecutar las instrucciones (si es que existen) 3º devolver valor de la expresión (del tipo-resultado) en el punto de invocación (uso)

Problema Escribir los siguientes métodos: class Programa { //minutos(x): convierte x (nº HHMM) a minutos static public int minutos(int x){ … } //diferencia en minutos entre 2 instantes de tiempo static public void main(String[]args) throws IOException{ El método main debe usar la función minutos y establecer el diálogo del sgte ejemplo: Tiempo 1 (HHMM)? 1045 Tiempo 2 (HHMM)? 2115 Diferencia=630 minutos

Solución class Programa { //minutos(x): convierte x (nº HHMM) a minutos static public int minutos(int x) return x/100*60 + x%100; } //diferencia en minutos entre 2 instantes de tpo static public void main(String[]args) throws IOException int t1=U.readInt(“Tiempo 1 (HHMM)?”); int t2=U.readInt(“Tiempo 2 (HHMM)?”); int t=Math.abs( minutos(t2)- minutos(t1) ) ); U.println(“Diferencia=”+t+” minutos”);

Funciones en clases independientes class U{ //en archivo U.java … static public int azar(int x,int y){ return x + (int)(Math.random()*(y-x+1)); } static public int mayor(int x,int y,int z){ return Math.max(Math.max(x,y),z); static public int menor(int x,int y,int z){ return Math.min(Math.min(x,y),z);

Uso de funciones de otra clase class MayorDe3{ //en archivo MayorDe3.java { static public void main(String[]args) int i=U.azar(1,100), k=U.azar(1,100), k=U.azar(1,100); U.println("Numeros="+i+" "+j+" "+k); U.println("Mayor=" + U.mayor(i,j,k)); } Sintaxis: nombreClase.nombreFunción(argumentos)

Clase Math (predefinida) class Math{ //Clase predefinida Math static public //antes de cada función double sqrt(double x){...} double pow(double x,double y){...} double exp(double x){...} double log(double x){...} double sin/cos/tan(double x){...}//en radianes double asin/acos/atan(double x){...} double abs(double x){...} int abs(int x){...} double max(double x,double y){...} int max(int x,int y){...} double min(double x,double y){...} int min(int x,int y){...} double random(){...} static public final double PI=3.14...;//cte static public final double E=2.71...;//cte }

Tarea 1. nº de 3 dígitos? 123 resultado=321 2. Cajero automático ¿Cuánto dinero necesita? 38000 Retire los siguientes billetes: 3 de $10.000 1 de $5.000 1 de $2.000 1 de $1.000 3. int hhmm(int minutos) //Ej:hhmm(630)=1030 4. int aaaammdd(int ddmmaaaa) //Ej: aaaammdd(13032008)=20080313 5. Números al azar=45 23 67 Ordenados=23 45 67 6. static public int mayor(int x,int y) sin usar Math.max