Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introducción a la programación y la informática. Tema 7

461 views

Published on

Introduccion a la programación y la informática, Universitat Politècnica de València.

Published in: Education
  • Be the first to comment

  • Be the first to like this

Introducción a la programación y la informática. Tema 7

  1. 1. Tema 7. Entrada y Salida elemental Introducción a la Informática y la Programación (IIP) Curso 2011/12 Departamento de Sistemas Informáticos y Computación
  2. 2. Contenidos 1. Introducción 2. Salida por pantalla  System.out.println y System.out.print  Salida formateada con printf 3. Entrada desde teclado  La clase Scanner 27/10/2011 IIP - Curs 2011/12 2
  3. 3. Introducción • En Java la entrada/salida se realiza utilizando flujos (streams), que son secuencias de información que tienen una fuente (flujos de entrada) o un destino (flujos de salida). 27/10/2011 IIP - Curs 2011/12 3 Programa Fuente Destino flujo de entrada flujo de salida
  4. 4. Introducción • Los flujos predefinidos en Java, en la clase System del paquete java.lang, que permiten realizar la entrada/salida estándar son: • Hay un tercer flujo predefinido System.err, idéntico a System.out, usado para mostrar mensajes de error. • Lo habitual es que estos flujos estándar se encuentren asociados por defecto al teclado (el de entrada) y a la pantalla (el de salida). • Se pueden definir otros flujos para que un programa pueda leer desde o escribir en ficheros. Una vez definidos, se utilizan de manera similar a los flujos System.in y System.out. 27/10/2011 IIP - Curs 2011/12 4 Entrada estándar Salida estándar System.in System.out
  5. 5. Salida por pantalla: System.out.println y System.out.print • La sintaxis de la instrucción que muestra una línea por pantalla es: siendo Elem_i cada uno de los elementos a mostrar. • Sin argumentos muestra una línea en blanco. • La única diferencia entre System.out.println y System.out.print es que con println, la siguiente salida a mostrar se muestra en una línea nueva, mientras que con print, la salida se muestra en la misma línea. 27/10/2011 IIP - Curs 2011/12 5 System.out.println(Elem_1 + Elem_2 + ... + Elem_n); double r = 5.5; String c = "rojo"; System.out.println("Círculo de radio " + r + ", color " + c); System.out.println(); System.out.println(" y centro (" + 6 + "," + 3 + ")."); System.out.print("Círculo de radio " + r + ", color " + c); System.out.println(" y centro (" + 6 + "," + 3 + ").");
  6. 6. Salida por pantalla: Salida formateada con printf • La sintaxis de la instrucción que presenta la salida en un formato específico es: • String con formato es un String formado por texto normal y especificadores de formato que indican como se van a formatear los valores de la lista de argumentos a formatear. • Por ejemplo, se puede mostrar por pantalla el valor de Math.PI con tres dígitos decimales utilizando: System.out.printf(“El valor de Math.PI es %.3f n”, Math.PI); que mostraría: • Mientras que utilizando: System.out.println(“El valor de Math.PI es ” + Math.PI); se obtendría: 27/10/2011 IIP – Curs 2011/12 6 System.out.printf(String con formato, Lista de argumentos a formatear); El valor de Math.PI es 3,142 El valor de Math.PI es 3.141592653589793
  7. 7. Salida por pantalla: Salida formateada con printf • Un especificador de formato comienza con el carácter % y finaliza con un carácter que indica el tipo de conversión a realizar, denominado indicador de conversión. Además, puede contener otros valores que controlen el diseño del valor a convertir. % [índice_argumento$] [flags] [anchura] [.precisión] indicador de conversión 27/10/2011 IIP - Curso 2011/12 7 • Es un carácter que especifica el tipo del valor que se va a mostrar y su formato. • Para byte, short, int y long: • d --- formato decimal • o --- formato octal • x, X --- formato hexadecimal • Para float y double: • e, E --- notación científica informatizada (p.e., 3.142e+00) • f, F --- notación decimal (p.e., 3,142) • g, G --- notación científica general • Para conversiones a String: s, S • Son opcionales y dependen del indicador de conversión: • índice_argumento es un entero que indica la posición de el argumento en la lista de argumentos a formatear. • flags permiten, entre otras cosas, la justificación a la izquierda o derecha. • anchura indica el número mínimo de caracteres que aparecerán en la salida (útil para alinear columnas de datos). • precisión indica, en la conversión de valores reales, el número de cifras decimales que han de aparecer.
  8. 8. 27/10/2011 IIP - Curs 2011/12 7 en total 3 después del . decimal notación decimal según Locale (punto decimal) 10 en total justificado a la izquierda en mayúsculas System.out.printf(“%4d, el %–4d, el %02d y el %2d.n”,1,2,7,333); System.out.printf(“%7.3f %1$14.8e %1$1.5g”,Math.PI); System.out.printf(Locale.US,“%7.3f %10s %2$–10S”,Math.PI,“Bye”); 8 1 , e l 2 , e l 0 7 y e l 3 3 3 . 3 , 1 4 2 3 . 1 4 1 5 9 2 6 5 e + 0 0 3 . 1 4 1 6 4 mínimo 4 mínimo Justificado izquierda 2 mínimo 7 en total 3 después de la , decimal notación decimal según Locale (coma decimal) 14 en total 8 después del . decimal notación científica tantos como sea necesario 5 en total, incluidos los de delante y detrás del . decimal notación decimal o científica dependiente del valor 3 . 1 4 2 B y e B Y E 10 en total 2 mínimo Relleno con 0 a la izquierda Salida por pantalla: Salida formateada con printf
  9. 9. Entrada desde teclado: la clase Scanner • El objeto System.in permite leer datos introducidos por el usuario desde teclado pero su uso no es tan sencillo com el del objeto System.out. • La clase Scanner forma parte del paquete java.util y permite leer valores introducidos por el teclado de una forma muy cómoda para el programador. • Al comienzo del código añadir: • Declaración: • El método useLocale permite establecer la configuración local de un Scanner. • Ejemplos de uso: o directamente, 27/10/2011 IIP – Curs 2011/12 9 Scanner identificador = new Scanner(System.in); import java.util.Scanner; Scanner teclado = new Scanner(System.in); teclado.useLocale(Locale.US); public Locale useLocale (Locale l) Scanner teclado = new Scanner(System.in).useLocale(Locale.US);
  10. 10. Entrada desde teclado: la clase Scanner • Algunos métodos de la clase Scanner: 27/10/2011 IIP – Curs 2011/12 10 Definición - cabecera public String next () public String nextLine () public byte nextByte () public short nextShort () public int nextInt () public long nextLong () public float nextFloat () public double nextDouble () public boolean nextBoolean () Definición - cabecera public boolean hasNext () public boolean hasNextLine () public boolean hasNextByte () public boolean hasNextShort () public boolean hasNextInt () public boolean hasNextLong () public boolean hasNextFloat () public boolean hasNextDouble () public boolean hasNextBoolean ()
  11. 11. Entrada desde teclado: la clase Scanner 27/10/2011 IIP – Curs 2011/12 11 import java.util.Scanner; public class TestScanner { public static void main (String[] args) { String nombre; int a_1, a_2; Scanner teclado = new Scanner(System.in); System.out.println("Introduce tu nombre"); nombre = teclado.nextLine(); System.out.println("Introduce tu año de nacimiento y el actual"); a_1 = teclado.nextInt(); a_2 = teclado.nextInt(); System.out.print("Te llamas " + nombre); System.out.println(" y tienes " + (a_2 - a_1) + " años"); } } Introduce tu nombre Luisa García Introduce tu año de nacimiento y el actual 1982 2011 Te llamas Luisa García y tienes 29 años
  12. 12. Entrada desde teclado: la clase Scanner 27/10/2011 IIP – Curs 2011/12 12 import java.util.*; public class TestScannerLinea { public static void main (String[] args) { Scanner teclado = new Scanner(System.in); System.out.print("Introduce el entero: "); int n = teclado.nextInt(); //teclado.nextLine(); System.out.print("Introduce una línea: "); String s1 = teclado.nextLine(); System.out.print("Introduce la otra línea: "); String s2 = teclado.nextLine(); System.out.println("nEntero: " + n); System.out.println("Línea 1: " + s1); System.out.println("Línea 2: " + s2); } } Introduce el entero: 5 Introduce una línea: Introduce la otra línea: hola Entero: 5 Línea 1: Línea 2: hola
  13. 13. Entrada desde teclado: la clase Scanner 27/10/2011 IIP – Curs 2011/12 13 import java.util.Scanner; import java.util.Locale; public class TestScannerLocale { public static void main (String[] args) { Scanner teclado = new Scanner(System.in); System.out.print("El teclado está configurado por defecto en "); System.out.println(Locale.getDefault()); System.out.print("Escribe un número real (con coma decimal): "); double nReal1 = teclado.nextDouble(); System.out.println("El valor real leído es " + nReal1); teclado.useLocale(Locale.US); System.out.print("Escribe un número real (con punto decimal): "); double nReal2 = teclado.nextDouble(); System.out.println("El valor real leído es " + nReal2); } } El teclado está configurado por defecto en es_ES Escribe un número real (con coma decimal): 6,75 El valor real leído es 6.75 Escribe un número real (con punto decimal): 8.5 El valor real leído es 8.5
  14. 14. Entrada desde teclado: la clase Scanner 27/10/2011 IIP – Curs 2011/12 14 import java.util.*; public class TestScannerChar { public static void main (String[] args) { Scanner teclado = new Scanner(System.in); System.out.print("Introduce un carácter: "); char c = teclado.next("S").charAt(0); System.out.println("nEl carácter leído es: " + c); } } Introduce un carácter: k El carácter leído es: k

×