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º