Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porDomingo Lozano Modificado hace 6 años
1
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 de plata que pasa para pagarlo. El programa debe responder cuántos billetes de , 5.000, y monedas de 500, 100, 50, 10, 5 y 1 son necesarias para dar el vuelto correspondiente Ingrese el valor a pagar : 3561 Ingrese la cantidad dada por el cliente : 10000 El vuelto consiste en: 1 de 5000 1 de 1000 0 de 500 4 de 100 0 de 50 3 de 10 1 de 5 4 de 1
2
Algoritmo Leer la cantidad a pagar “apagar”
Leer la cantidad realmente pagada “monto” calcular cambio = monto - apagar dividir cambio por 5000, tomar la parte entera restar de cambio lo que se dio con 5000 dividir lo que queda por 1000, tomar la parte entera restar a lo que queda a1000*1000 Hacer lo mismo para el resto de las denominaciones existentes Programm3.java
3
Hagamos algo de matemáticas
Lea el radio de un círculo y calcule su área y perímetro Lea 5 números y calcue el máximo, mínimo y promedio de ellos Programm4 Programm41 Programm5
4
Declaraciones Los nombres de las variables empiezan con letra y siguen con digitos y/o letras + el subrayado. Estas pueden ir en cualquier parte del programa pero siempre antes de usar la variable int i; //declaración int i = 1; //declaración e inicialización int i; i = 1; int i, j, k; int i = 1, j = 2, k = 3; double pi = ; char c = ‘a’; Console c; c = new Console(); String myName = new String(“Nelson”); String myName; myName = “Nelson”; final int MAX = ; // definición de constantes
5
“Tipos de datos primitivos”
Typ bytes Range byte 1 short 2 int 4 long 8 float +/ double +/ boolean true, false char Unicode
6
Objetos Scanner String
String c = new String(“hola”) String Scanner s = new Scanner(System.in) Scanner Al declarar solamente la variable de objeto no se crea el objeto mismo (es un puntero) String s; en s no hay un objeto String Cualquier variable de objeto que no ha sido inicializada contiene el valor null Es ilegal aplicar un método sobre una variable de objeto que vale null Scanner c; c.nextInt() causará un error (Exception)
7
Valores máximos byte largestByte = Byte.MAX_VALUE;
short largestShort = Short.MAX_VALUE; int largestInteger = Integer.MAX_VALUE; long largestLong = Long.MAX_VALUE; // real numbers float largestFloat = Float.MAX_VALUE; double largestDouble = Double.MAX_VALUE;
8
Operadores Resto de división 10 % 3 (1) % Aritmética normal
10 % 3 (1) % Aritmética normal var1 + var2 +, -, *, / significado ejemplo Operados -expr. +expr. -(a + b) Operadires unarios Prioridades: * y / se ejecutan antes que + y - entre dos operaciones de igual prioridad se ejecuta de izquierda a derecha se usan paréntesis para forzar prioridades
9
Lea a, b y c y resuelva ax2 + bx + c = 0
import java.util.*; public class Programm6 { public static void main(String args[]) { Scanner mc = new Scanner(System.in); System.out.println("I will try to solve te equation a*x**2 + b*x + c = 0"); System.out.print("please type in a:"); double a = mc.nextDouble(); System.out.print("please type in b"); double b = mc.nextDouble(); System.out.print("please type in c"); double c = mc.nextDouble(); //the first root is double x1 = (-b+Math.sqrt(Math.pow(b,2)-(4*a*c)))/(2*a); //the second root is double x2 = (-b-Math.sqrt(Math.pow(b,2)-(4*a*c)))/(2*a); System.out.println("The solutions are x1 = "+x1+ " x2 = "+x2); }
10
Qué pasa si la ecuación no tiene solución en el espacio de los reales ?
Podemos primero preguntar si la expresión Math.sqrt(Math.pow(b,2)-(4*a*c)) es menor que cero. En ese caso tomamos el valor absoluto de la expresión y damos la solución con números imaginarios Hagamos una mejor versión del programa del vuelto Programm7 Programm8
11
Controlando la secuencia de las instrucciones
Ejecución condicional de instrucciones: if (condition) instruction; if(condition) else Siempre es posible reemplazar una instrucción por una lista de ellas agrupadas dentro de { }
12
Encontrando el mayor, menor y promedio de 100 números
Veamos el programa 5 de nuevo Programm5 Para 100 números (o una lista indeterminada de ellos) es mejor usar un ciclo Programm9 Programm10
13
Escribiendo Loops La instrucción básica para un cliclo es el while
while (condition) instruction; Para tener varias instrucciones en un ciclo while (condition) { instructions; } Para roper el ciclo desde adentro while (true) { .... if (condicion) break;
14
Otros ejemplos interesantes
Calculando el Mcd de 2 números Jugando al cachipun contra el computador hasta que el usuario o el computador llegan a 3 puntos 1 = Tijera 2 = Piedra 3 = Papel MCD JanKenPo
15
Operadores lógicos Operador Ejemplo Significado == if (a == b) Igual
!= while(n != 0) No igual ! if (!(A == b)) not <,>,<=,>= while (a >= b) comparission || if (a > b || a == 0) or && if (a>30 && a < 40) and
16
Tarea 1 Pregunta 1: Pregunta 2:
Escribir un programa que genere un número aleatorio entre 1 y 100 El usuario debe adivinar este número ingresando números Cada vez que ingresa un número el computador debe responder si el número a adivinar es menor, mayor o igual al ingresado. Cuando el usuario ingresa el número correcto, el computador termina el programa indicando cuántas veces ingresó número el usuario antes de adivinar Pregunta 2: Escribir un programa en el cual el computador debe adivinar el numero que pensó usted ! El algoritmo para encontrarlo debe basarse en que el computador muestra un número, y el usuario debe decir el número es mayor o menor Debe usar un algoritmo optimizante para encontrar el número
17
Ejercicio: Calcular el coeficioente binomial para las combinaciones posibles de k sobre n elementos
El número de combinaciones de k objetos de entre n se calcula como: n! / (k!*(n-k)!) La forma larga de programarlo sería: ProgramCombinations1.java La forma corta (y reusable) es definiendo un método: ProgramCombinations2.java
18
Un método estático public puede ser usado desde otro archivo (otra clase)
El método debe ser declarado como public El otro archivo que lo usa debe escribir NombreClase.nombreMétodo(parametros) ej. int i = ProgramCombinations2.fac(25); El archivo (clase) ProgramCombinations2 debe estar “visible” según las mismas reglas usadas para la clase Console Ver ejemplo AA.java
19
Definiendo metodos estáticos
Tipo de valor que el método devolverá (se pone void si no devuelve ningún valor Nombre del método (definido por el programador) public static int fact( int x ) { ……. …… return a; } Se define public para que pueda ser usado desde afuera como Math.min(x,y); Las intrucciones del método van entre paréntesis {} Return is obligatorio si no se puso void Parámetros del método
20
Los parámetros se pasan por valor
public static int fact(int x) { resultado = 1; while (x > 1) { resultado *= x; x--; } return resultado; public static void main(String[] args) { Console c = new Console(); c.print(“ingrese un numero:”); int numero = c.readInt(); int res = fact(numero); c.println(“El factorial de “+numero+” es “+res); //numero no se modifica porque se le pasa una copia }
21
Clase predefinida Math
22
Propuestos Escriba un método como el siguiente:
public static int power( int x, int y) Que retorna el valor de xy Escriba un programa que lea dos números e imprima el valor que resulta de elevar el primero al segundo Escriba un método que reciba un string y retorne el valor numérico del string public int valorEntero(String x) Escriba un método public static int random(int x, int y) que devuelva un número entero generado aleatoriamente entre x e y
23
Abreviaturas: cómo escribir menos
i++ : usar i en el contexto donde aparece y luego sumarle 1 ++i : sumarle 1 a i y luego usarlo en el contexto donde aparece int i = 5; int a = i++; a queda con 5, i con 6 int a = ++i; a queda con 6 , i con 6 lo mismo para --, resta uno
24
Otras formas de escribir ciclos
while loop int i = 1; while (i <= 10) { c.println(”5 X ” + i + ” = ”+(i*5)) i = i + 1; } do while loop do { c.println(”5 X ” + i + ” = ”+(i*5)); while (i <= 10); for loop for (i = 1; i <= 10; i = i +1)
25
Expresiones y asignaciones
Ejemplo: suma += nota Sintaxis: var op= exp Semántica: var = var op (exp) Ej: a*=b+c es equivalente a a=a*(b+c) y no a=a*b+c Aplicación double suma=0, nota; int n=0; while( true ) { C.print(“nota ? “); if( (nota = C.readDouble()) == 0 ) break; C.println(“promedio=” + (suma+=nota) / (n+=1) ); }
26
La instrucción switch int month = c.readInt(); . . . switch (month) {
case 1: c.println("January"); break; case 2: c.println("February"); break; case 3: c.println("March"); break; ... case 11: c.println("November"); break; case 12: c.println("December"); break; default: c.println("not valid!"); break; } La expresión a evaluar en el switch debe ser entera los cases deben ser constantes se empieza a ejecutar desde el case que coincide hasta el final, o hasta encontrar un break numDays
27
Arreglos en Java Un arreglo es una colección de elemntos del mismo tipo Declaración (ejemplo usando enteros) int[ ] A; int A[ ]; los elementos todavía no existen ! A = new int[10]; ahora si tenemos 10 variables enteras: A[0], A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8], A[9] También podemos declarar e inicializar al mismo tiempo un arreglo: String[ ] colores = {“verde”,”azul”,”rojo”,”blanco”,”gris”,”negro”} colores.length es 6 colores[3 ] es “blanco”
28
Arreglos en Java El siguiente trozo de programa
for (int i=0; i< A.length; i++) A[i] = i; hace A[0] = 0; A[1] = 1; A[8] = 8; A[9] = 9; int i = A.length; devuelve el número de elementos (10 en este caso). Para el caso de matrices se declara int[ ] [ ] A; ¿Qué hace el siguiente trozo de programa ?: int [] [] A = new int [10] [10] for (int i = 0; i < 10; i++) for(int j = 0; j < 10;j++) A [1] [1] = i+j;
29
Buscar un valor en un arreglo Reemplazar valores en un arreglo
public static int buscar(int[] numeros, int x) { for (int i = 0; i < numeros.length;i++ ) if (numero[i] == x) return i; return -1; } Reemplazar valores en un arreglo public static int reemplazar(int[] numeros, int x, int y) { int cuantos = 0; for (int i = 0; i < numeros.length;i++ ) if (numero[i] == x) numero [i] == y;; return cuantos; } int i = reemplazar(miArreglo,5,8); COMO ES ESTO POSIBLE ???
30
La copia de una variable arreglo da acceso al arreglo
La copia de una variable arreglo da acceso al arreglo !!! (lo mismo pasa con objetos) Arreglo 5453 y 5 x 8 numeros 5453 5453 5 3 La dirección del arreglo que está en la variable Arreglo se copia en la variable numeros 5 9 7
31
Bubblesort en Java public class SortDemo {
public static void ordenar(int nums) { for (int i = nums.length; --i >= 0; ) { for (int j = 0; j < i; j++) { if (nums[j] > nums[j+1]) { int temp = nums[j]; nums[j] = nums[j+1]; nums[j+1] = temp; } public static void main(String[] args) { int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076, 2000, 8, 622, 127 }; ordenar(arrayOfInts); for (int i = 0; i < arrayOfInts.length; i++) System.out.print(arrayOfInts[i] + " ");
32
Otro ejemplo de uso de arreglo
El programa debe leer una lista de números del 1 al 10 que termina con un 0. Una vez ingresada la lista el programa debe imprimir el % de 1s,2s,...10s que se ingresaron, por ejemplo. Enter a number: The % of 1s was 10% Enter a number: The % of 2s was 0% Enter a number: The % of 3s was 30% Enter a number: The % of 4s was 0% Enter a number: The % of 5s was 20% Enter a number: The % of 6s was 10% Enter a number: The % of 7s was 10% Enter a number: The % of 8s was 0% Enter a number: The % of 9s was 20% Enter a number: The % of 10s was 0% Enter a number: 0 Programm11.java
33
Los argumentos de un programa
Ahora podemos entender qué significa String args[] en el encabezado del método main: es un arreglo de strings. Los valores de los elementos y el tamaño del arreglo se definen al momento de llamar al método public class Program7 { public static void main(String args[]) { int i=0; while (i < args.length) { System.out.println(args[i]); i = i + 1; } Este programa muestra los parámetros que se le pasaron al programa al momento de llamarlo Se está usando la salida estándar en vez de una consola programm12
34
Tarea 2 Escribir un programa que permite jugar al gato a dos personas sin usar papel El programa debe controlar a quien le toca, empezando siempre por el jugador X El programa debe leer la jugada de un jugador (X o Y) y verificar que la jugada sea válida El programa debe mostrar el estado del tablero después de cada jugada El programa debe terminar cuando uno de los jugadores gana o cuando ya no hay mas jugadas `posibles indicando el estado final (gana X, gana Y, empate) Tic
35
Propuesto Modifique el programa que calcule el vuelto de modo que el usuario pueda al principio ingresar las distintas denominaciones que existen Las denominaciones se ingresan hasta que el usuario ingrese un -1 Suponga que hay a lo más 20 denominaciones distintasy son todas enteras una vez ingresadas las denominaciones el programa debe pedir los 2 valores y calcular el vuelto, si corresponde
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.