Clase 3: Funciones Valeria Herskovic –

Slides:



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

Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Algoritmo y Estructura de Datos I
Creación de Aplicaciones
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..
Programación III Clase 06 Funciones.
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
INTRODUCCIÓN AL LENGUAJE C++
Computación III-INF2102 Conceptos básicos para la progamción.
Capítulo 2 “Subprogramas/Funciones - Arreglos”
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
Tema 2 : Java Básico Clase Práctica 5 (Conferencia 4)
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.
¿Cómo almacenar datos dentro del computador?
Clase1: lectura/escritura/asignación
Clase1: lectura/escritura/asignación
Clase 8: Strings Valeria Herskovic –
Repaso/resumen lectura/escritura y asignación funciones
Operadores aritméticos Funciones trigonométricas
Uso de funciones y paquetes
Métodos en Java.
¿Cómo crear un laboratorio en casa?
Valeria Herskovic Clase 2: Funciones Valeria Herskovic
Clase 8: 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 –
//Leer desde (posición del cursor de) archivo //un máximo de N líneas. //Entregar también nº de líneas leídas. static public int leerLineas (BufferedReader.
print “Calcular área y perímetro de círculo”
Clase 9: Repaso/Resumen
Teclado y Pantalla (Java estándar)
Continuación Unidad 4. Control de flujo
Tema 7. Introducción a lenguaje de programación Visual Basic (clase 2)
Hoja de cálculo Microsoft Excel
Unidad 3. Introducción a la programación
Continuación Unidad 4. Control de flujo
Tema 7. Introducción a lenguaje de programación Visual Basic (clase 1)
Leyes de los senos y de los cosenos
26-abril(J.Alvarez).
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.
Tema 2 Variables y cálculos
Sobre las Funciones Trigonométricas
M.C Alejandro Castellanos Lopez
Arreglos en Java.
Clases en Java 1 Métodos de Programación II Profesor: M.C. Alfonso Miguel Uriarte Gálvez.
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.
Lenguaje Java: características técnicas
Tema 7. Introducción a lenguaje de programación Visual Basic (clase 1)
Clase1: lectura/escritura/asignación
Introducción a la Computación Numérica
8-marzo-2006 (J.Alvarez).
String, random y stream en java
Problema: ordenar 3 números generados al azar
Clase 10 (Repaso/Resumen)
13-marzo-2008.
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();
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.
Conceptos básicos para la progamción
Clase1: lectura/escritura/asignación
Transcripción de la presentación:

Clase 3: Funciones Valeria Herskovic – vherskov@dcc.uchile.cl CC1001 Computación I

Problema Escribir las instrucciones principales de un programa que establezca el diálogo indicado en el siguiente ejemplo: Invertir número entero de 2 dígitos Número a invertir: 56 Número invertido: 65

Solución 1: aritmética enteros public static void main(String args[]) throws IOException{ U.println(“Invertir numero entero de dos digitos”); U.print(“Numero a invertir: “); int aInvertir = U.readInt(); int primerDigito = aInvertir/10; int segundoDigito = aInvertir – primerDigito*10; U.print(“Numero invertido ”+segundoDigito+””+primerDigito);

Solución 2: aritmética reales … U.print(“Numero a invertir: ”); int aInvertir = U.readInt(); int primerDigito = aInvertir/10; int segundoDigito = (int)((aInvertir/10.0 – primerDigito)*10); U.print(“Numero invertido : ”); U.print(segundoDigito+””+primerDigito);

Solución 3: con % … U.print(“Numero a invertir: ”); int aInvertir = U.readInt(); int primerDigito = aInvertir/10; int segundoDigito = aInvertir%10; U.print(“Numero invertido : ”); U.print(segundoDigito+””+primerDigito);

Propuesto Obtener una fecha (por ej: 20070308) y escribirla de la forma 08/03/2007.

Problema Escribir las instrucciones principales de un programa que establezca el siguiente diálogo: Perímetro y área de triángulo de lados a, b, c a ? ___ b ? ___ c ? ___ Perimetro = 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

Solución U.println(“Perimetro y área de triángulo de lados a, b, c"); //obtener lados double a = U.readDouble(“a?”); double b = U.readDouble(“b?”); double c = U.readDouble(“c?”); //calcular y mostrar perimetro y area U.println(“Perimetro = ”+(a+b+c)); double s= (a+b+c)/2; U.println("Area = "+Math.sqrt(s*(s-a)*(s-b)*(s-c))); o U.println("Area = "+Math.pow(s*(s-a)*(s-b)*(s-c),0.5));

Uso (invocación) de métodos (funciones) predefinidas 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 Ordenar dos reales entre 0 y 9 generados al azar Ej: Números = 7 3 Ordenados = 3 7

Problema Ordenar dos reales entre 0 y 9 generados al azar Ej: Números = 7 3 Ordenados = 3 7 //generar nº reales en rango [0,1[: 0.dd… double a=Math.random(), b=Math.random(); //generar enteros en rango [0,9] (de un dígito) int i=(int)(10*a), j=(int)(10*b); U.println(“Numeros= “ + i + “ “ + j); //ordenar dos enteros U.println(“Ordenados= “+ Math.min(i,j) + “ “ + Math.max(i,j));

Problema (10 min) Escribir las instrucciones principales de un programa que establezca el diálogo indicado en el siguiente ejemplo: Ordenar 3 enteros entre 1 y 100 generados al azar Numeros = 73 8 46 Ordenados = 8 46 73 Indicación. Si multiplica por 100 el Nº real 0.x1x2x3... (ej: 0.734...) que entrega la función random() obtendrá un número de la forma x1x2.x3.... (ej:73.4...). De la parte entera del resultado, usando coerción (int)(expresión), se puede obtener un Nº entero de 2 dígitos (valor entre 00 y 99). Sumando uno se obtiene un número entre 1 y 100.

Solución 1 //generar al azar 3 enteros entre 1 y 100 int a = (int)(Math.random()*100) + 1, b = (int)(Math.random()*100) + 1, c = (int)(Math.random()*100) + 1; U.println("Numeros="+a+" "+b+" "+c); //obtener 2º restando el menor y el mayor a suma de los 3 int mayor = Math.max(Math.max(a,b),c), menor = Math.min(Math.min(a,b),c), medio = a + b + c - menor - mayor; U.println("Ordenados="+ menor+" "+medio+" "+mayor);

Soluciones 2 y 3 Sol. 2: obtener 2º como el menor de los ganadores (de los 3 “partidos” entre dos números) int medio = Math.min(Math.max(a,b), Math.min(Math.max(a,c),Math.max(b,c))); Sol. 3: obtener 2º como el mayor de los perdedores int medio = Math.max(Math.min(a,b),Math.max(Math.min(a,c),Math.min(b,c)));

Solución 4: ordenar dos primeros, y después considerar 3º int minab = Math.min(a,b), maxab = Math.max(a,b); int menor = Math.min(minab,c), aux = Math.max(minab,c); int medio = Math.min(aux,maxab), mayor = Math.max(aux,maxab);

Solución 5 Con funciones (métodos) definidos por el programador class Ordenar3{ static public void main(String[]args) { U.println(“Ordenar 3 numeros “ + “entre 1 y 100 generados al azar”); int a=azar(1,100),b=azar(1,100),c=azar(1,100); U.println("Numeros="+a+" "+b+" "+c); U.println("Ordenados = " + minimo(a,b,c) + " “ + medio(a,b,c) + " " + maximo(a,b,c)); }

Solución 5 (continúa) static public int azar(int x,int y){ return x + (int)(Math.random()*(y-x+1)); } static public int minimo(int x,int y,int z){ return Math.min(Math.min(x,y),z); static public int maximo(int x,int y,int z){ return Math.max(Math.max(x,y),z); static public int medio(int x,int y,int z){ return x+y+z - minimo(x,y,z) -maximo(x,y,z); }//fin de la clase Ordenar3

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 3º devolver valor de la expresión (del tipo-resultado) en el punto de invocación (uso)

Propuestos 1. Ordenar 4 números generados al azar. Indicación. Ordene los 3 primeros y en seguida determine el lugar del 4º. 2. Escribir la función : static public int mayor(int x,int y) sin usar la función Math.max ni Math.min