Download Sin título de diapositiva
Document related concepts
no text concepts found
Transcript
Lenguaje Java: características técnicas • • • • creado (diseñado) en 1994 en empresa SUN “superconjunto” del lenguaje C (1971) “subconjunto” del lenguaje C++ (1983) lenguaje orientado a objetos – facilidades para modelar/simular problemas reales – promueve herencia (reutilización) de programas • lenguaje orientado a redes y web – facilidades para insertar programas en páginas web – computación concurrente y distribuida Problema. Instruir al computador para que establezca el siguiente diálogo con una persona (usuario): computador Por favor ingresa un N°:123 persona Gano yo con el 124 computador Algoritmo 1.Escribir (mostrar) en la pantalla la frase “Por favor ingresa un N°:” 2. Leer (obtener) el N° ingresado por la persona usando el teclado. 3. Escribir en la pantalla una línea con: la frase “Gano yo con el “ el número (ingresado por la persona) más uno Programa completo //Jalisco: programa que nunca pierde import java.util.*; class Jalisco { static public void main(String[]args) { Scanner C = new Scanner(System.in); System.out.println(“Por favor ingresa un N°:”); int n = C.nextInt(); //leer Nº entero System.out.println(“Gano yo con el “+ (n+1)); } } Para ejecutar este programa: 1- Escribir el programa en un archivo llamado Jalisco.java 2- Compilarlo con el comando javac Jalisco.java (produce archivo jalisco.class) 3- Ejecutarlo con el comando java Jalisco Explicaciones //Jalisco: programa que nunca pierde comentario (hasta el final de la línea) class Jalisco{…} define clase de nombre Jalisco todo programa Java debe estar contenido en una clase toda clase debe ir en un archivo [nombre de la clase].java en este caso, Jalisco.java static public void main(String[]args){…} método que contiene instrucciones del programa principal encabezamiento estándar (significados se explicarán posteriormente) La Clase Scanner Scanner C = new Scanner(System.in); Permite leer información desde el teclado C: objeto de clase Scanner Scanner: clase predefinida con métodos para leer La clase Scanner está definida en el paquete de clases java.util, por lo cual hay que importarlo (el único paquete que se importa por defecto es java.lang) import java.util.Scanner; importa la clase Scanner solamente import java.util.*; Importa todas las clases del paquete (solo para la compilación) Explicaciones detalladas System.out.println(“Por favor ingresa un N°:”) Semántica: escribe en la pantalla la frase encerrada entre “ Sintaxis: System.out.println(“...”); System.out: objeto que representa una consola en la pantalla del computador println(“...”) método (función) que se aplica al objeto out propósito: escribir parámetro (argumento) en la ventana int n; Semántica: declara (define) n como una variable entera Sintaxis: tipo nombre; nombre (identificador): letra seguida de letras, dígitos o_ tipo: int o double int: número entero sin punto decimal (ejs:123, -4) double: número real (ejs: 5.8, 0.0001) n = C.nextInt(); Semántica: lee un número entero y lo guarda en la variable n 1º método (función sin argumentos) nextInt(): 1.espera que el usuario ingrese un número (dígitos y enter) 2.lee (obtiene) el número 3.entrega el número como resultado 2º número se guarda en (asigna a ) la variable n Sintaxis: variable = C.nextTipo(); nextTipo(): nextInt(), nextDouble(), nextLine() System.out.print(n+1); Semántica: escribe en la ventana el valor de la variable n más uno 1º evaluar expresión n+1 2º escribir resultado Sintaxis: System.out.print(expresión aritmética); expresión aritmética : operando operador operando operador: +, -, *, / operando: variable (ej: n) constante (ej: 1) expresión con/sin paréntesis (ejs: a*b,(a/b)) Abreviaturas • int n=C.nextInt(); es equivalente a int n; n=C.nextInt(); • System.out.print(“Gano yo con el “); System.out.println(n+1); es equivalente a System.out.println(“Gano yo con el “ + (n+1)); – +: operador de concatenación – paréntesis obligan calcular primero n+1 • System.out.print.println(“Gano yo con el “+(n+1)); println (print line): escribe y después posiciona el cursor al comienzo de la siguiente línea en la ventana Problema. Escribir un programa que establezca el siguiente diálogo: Calcular perímetro y área de círculo radio ? ... perímetro = N° área = N° Solución 1 System.out.println(“Perimetro y area de un circulo”); System.out.printin(“radio ? “); int r = C.nextInt(); System.out.println(“perimetro = “ + 2*3.1416*r); System.out.println(“area = “ + 3.1416*r*r); Nota. No es necesario parentizar las expresiones puesto que * tiene mayor prioridad que +. Solución 2 System.out.println(“Perimetro y area de un circulo”); System.out.println(“radio ? “); double r = C.nextDouble(); System.out.println(“perimetro = “ + 2*Math.PI*r); System.out.println(“area = “ + Math.PI*Math.pow(r,2)); Math.PI valor predefinido de л (3.14159265358979323846, 20 decimales) constante real Math.pow(r,2) calcula y entrega r2 función predefinida (incorporada al lenguaje Java) sintaxis: Math.pow(x,y), x e y: expresiones semántica: xy, con resultado real Problema Escribir un programa que instruya al computador para que establezca el siguiente diálogo: Calcular porcentajes de elección Votos candidato 1 ? ______ Votos candidato 2 ? ______ Total de votos = N° Candidato 1=Nº.Nº % Candidato 2=Nº.Nº % import java.util.*; public class Votos { //en un archivo Votos.java public static void main(String[] args) { //comienzo del progama Scanner c = new Scanner(System.in); System.out.println(“Calcular porcentajes de elección”); int v1, v2, total; System.out.println(“Votos candidato 1: “); v1 = c.nextInt(); System.out.println(“Votos candidato 2: “); v2 = c.nextInt(); total = v1+v2; System.out.println(“Total votos: “+total); System.out.println(“Cand. 1 : “+(100.0*v1/total)+”%”); System.out.println(“Cand. 2 : “+(100.0*v2/total)+”%”); } } Notas v1/total*100 produce resultado 0 puesto que v1/total es 0 (división entre enteros trunca resultado) v1/total*100.0 produce resultado 0.0 (de tipo double) puesto que 0*100.0 es 0.0 100*v1/total produce resultado entero 100.0*v1/total produce resultado real 100.0*v1/total no es equivalente a v1/total*100.0 Tipos de datos numéricos (enteros y reales) Tipo int Nº Mayor valor Menor Valor bits 32 231–1 =2.147.483.647 -231 = -2...648 double 64 1.7 x 10301 -1.7 x 10301 bit: binary digit (dígito binario: 0 o 1) Precisión (dígitos) 9 15 ¿mayor valor tipo int? representación: 011...11 (32 bits) primer bit: cero (signo positivo) siguientes 31 bits: unos valor: 1x2 0+1x2 1+...+1x230=1+2+...=2.147.483647=231-1 Tipos en instrucción de asignación Tipos iguales double nota=4.5; //reales int i=0; //enteros Variable real y expresión entera Ej: double nota=4; int se convierte a real y se asigna (ej: 4.0) Variable entera y expresión real Ej: int i=4.5; error de sintaxis coerción de tipos (casting) ejemplos: (int)(nota) entrega nota truncada (si nota es 4.5 entrega 4) (int)(nota+0.5) entrega nota redondeada (si nota es 4.5 entrega 5) sintaxis: (tipo)(expresión) semántica: 1º evaluar expresión 2º convertir resultado al tipo indicado 3º entregar resultado Problema. Para calcular el área y perímetro de la figura formada po un cuadrado y un círculo inscrito escriba un programa que establezca el siguiente diálogo lado cuadrado? ... (nº real) área=n° perímetro=nº