You are on page 1of 9

Capitulo 1 Ejercicios 1.

Escriba un metodo main simple para desplegar algunos caracteres, cadenas, enteros y numeros de punto flotante utilizando el objeto System.out. import java.*; public class Ejercicio1 { public static void main (String[] args) { System.out.println("CAPITULO 1,EJERCICIO 1 \n\n"); char car='A'; String cadena="CADENA"; int entero=2012; float decimal=4.12f; System.out.println("CARACTER: "+car); System.out.println(" CADENA: "+cadena); System.out.println(" ENTERO: "+entero); System.out.println(" FLOAT: "+decimal); } } 2. Tome el metodo factorial y agregue una marca para detectar cualquier entrada negativa. Si el argumento es negativo, se despliegua un mensaje de error que utiliza System.err y se devuelve el valor cero. import java.awt.*; import hsa.Console; public class Ejercicio2 { static Console c; public static void main (String[] args) { c = new Console (); int num=0; c.println("Escribe un numero: "); num=c.readInt(); c.println("El Factorial de "+num+" es: "+factorial(num)); } public static int factorial(int n) { int ans=0; if(n>-1) { ans=1;

while(n>1) { ans=ans*n; n--; } } else System.err.println("Error numero negativo"); return ans; } } 3. Explique por que llamar depetidamentefactorial(j) con j como 0,1,2... es muy ineficiente. Escriba un metodo mas eficaz para producir una lista de valores factoriales. Tambien utilice short para el parametro formal y long para la respuesta. import java.awt.*; import hsa.Console; public class Ejercicio3 { static Console c; public static void main (String[] args) { c = new Console (); int n=1,max=0; c.println("Escribe el numero maximo de interaccion: "); max=c.readInt(); while(n<max) { c.print(n + " ! = "); c.println(factorial (n)); n++; } } public static int factorial(int n) { int ans=1; while (n>1) { ans=ans*n; n--; } return (ans); } }

4. Escriba un programa Expand.java que remplace todos los caracteres TAB de su entrada de estandar con un numero equivalente de espacios y envie el resultado a la salida estandar. Tal vez deba suponer que los topes de tabulacion tienen separaciones de 8 caracteres. 5. Considere las operaciones de desplazamiento a nivel de bits de cantidades enteras. En cuales situaciones exactas las operaciones de desplazamiento a la izquierda o a la derecha corresponden realmente a la multiplicacion por 2 o la division entre 2? 6. Explique las diferencias entre los operadores de desplazamiento a nivel de bits >> y >>>Cuales calculos realicen cada uno? R= >> desplaza bits a la derecha, rellena con el bit mas alto (signo) >>> desplaza bits a la derecha, rellena con cero. 7. Esriba un metodo void octalDisplay(int n) que despliegue el entero n en notacion octal. import java.awt.*; import hsa.Console; public class Ejercicio7 { static Console c; public static void main (String[] args) { c = new Console (); c.println("Escribe el numero a convertir a octal: "); int res = c.readInt(); octalDisplay(res); int i = 27; } static void octalDisplay(int i) { String strOctalNumber = Integer.toOctalString(i); System.out.println("El numero " + i + " en octal es " + strOctalNumber); } } 8. Considere el metodo octalDisplay del problema anterior. Reescribelo para utilizar operaciones a nivel de bits para llegar al modelo 8 y luego dividir entre 8 operaciones. 9. Examine la definicion de metodo static int myabs(int a) ( ig (a>=0) { return a; } else { return -a; } } y detecte cualquier problema de sintaxis. Encierrelo en una clase, compilelo y vea lo que dice su

compilador de java. Explique con todo detalle el origen e cualquier error. R= Los errores de sintaxis es que empieza con corchetes y tiene parentesis, y en vez de ig es if.

10. Escriba un metodo stringCompare para comparar dos cadenas S1 y S2. El valor devuelto es positivo, 0 o negativo , dependiendo si S1 es mayor que, igual a, o menor que S2, utilizando orden lexicograico. import java.awt.*; import hsa.Console; public class Ejercicio10 { static Console c; public static void main (String[] args) { c = new Console (); String S1,S2; c.println("Escribe la cadena 1: "); S1=c.readString(); c.println("Escribe la cadena 2: "); S2=c.readString(); int A,B; A=S1.length(); B=S2.length(); int dif=A-B; if (A>B) c.println("La cadena 1 es mayor a la Cadena 2 por: " +dif+ " Caracteres "); if (A<B) c.println("La cadena 1 es menor a la Cadena 2 por: "+dif*-1+" Caracteres "); if (A==B) c.println("La cadena 1 es igual a la Cadena 2 "); } } 11. Escriba un metodo isLeapYear que toma ao entero y devuelve un valor de tipo boolean. 12. Ciertos identificadores son palabras clave reservadas por java y no pueden utilizarse para otros propositos. Enumere 15 palabras clave de java. 1. If 2. for 3. while 4. do 5. switch 6. case 7. main 8. public

9. static 10. void 11. string 12. int 13. float 14. long 15. boolean 13. Cuando se lee una entrada estandar, por lo general se alcanza el final del archivo cuando el usuario escribe CTRL-D(o CTRL-Z), o algun otro caracter dependiente del sistema) al principio de una linea. Descubra cual es el adecuado para su sistema. 14. Java tiene una instruccion label.Como se aplica en programacion?. Con cuales otras instrucciones funciona?java tiene una instruccion goto? R= se utiliza con la siguiente sintaxis nombreetiqueta: instruccion break nombreetiqueta continue nombreetiqueta no hay instruccion goto en java. 15. Una secuencia bitonica de enteros es una secuencia monotonica de cero o mas elementos seguida por otra . Por ejemplo, 2,2,3,4,3,2 y 4,3,1,2,7 son bitonicos. Utilizando el metodo monotonic de la seccion 1.9 como modelo, escriba el metodo bitonic. 16. Utilizando switch, escriba un programa que cuente el numero de caracteres ESPACIO, TAB, NUEVALINEA y AVANCEDEPAGINA en una entrada estandar.

Capitulo 2 Ejercicios 1. Considere la clase Account de la seccion 2.1. Agregue un metodo de miembro roString() a esta clase . De que manera facilita esto el despliegue de un objeto de contabilidad? 2. Agregue un metodo de miembro transfer a la clase Account que transfiere una cantidad determinada de otra cuenta a la cuenta anfitriona. 3. Considere la definicion e invocacion de metodos de mienbros de clase. Puede utilizarse el metodo deposit con la notacion Account. Deposit(400.0); para depositar 400.0 ?Por que? R= Si se puede ya que el metodo Deposit es un metodo que esta dentro de la clase Account 4. Considere la clase Account dada en la seccion 2.1. Son correctas las declaraciones/instrucciones...? Account paul; Account mary(); new Account jennie(); new Account charlee(12345, 500.00); Son posibles? Por favor explique?

5. Considere el constructor nulo dentro de la clave Vector2D Vector2D(){} Falta un punto y coma al final?Por que? R= No falta punto y coma ya que simplemente se esta creando mas no se esta usando. 6. Considere Account sally = new Account (12345, 540.60); Es posible la llamada sally.Account(67890, 1000.00?.Por que? R= Si si es posible por que en la primera linea estamos creando un objeto de tipo Account 7. En un programa de java, Como determina el numero de argumentos proporcionados al programa en la linea de comandos? R= Se pasan como cadenas a main en la clase cuyo nombre aparece en la linea de comandos. 8. Es posible ejecutar un programa de java con varias clases que contenga metodos main? De ser asi, Como se determina el punto de entrada al programa? R= No no es posible que un programa de java tenga varios main. 9. Escriba un programa de repeticion inverso que tome todas las palabras de la linea de comandos y las despliegue invirtiendo el orden en que se presenta. 10. Deje que las palabras de un archivo sean cadenas de caracteres o fichas separadas por uno o mas caracteres de espacio en blanco (ESPACIO, TAB, NUEVALINEA). Escriba un programa para contar el numero de palabra del archivo de entrada o de la entrada estandar. 11. Agregue el metodo de miembro isParallel (Vector2D v) a la clase Vector2D, para probar si un vector v es paralelo al vector anfitrion. Con cuantro puntos cualquiera, utilice objetos de Vectores2D para determinar si forman un paralelogramo. 12. Escriba una clase Vector3D. Agregue el metodo crossProduct, entre otras cosas.

CAPITULO 3 1. Los nombres de miembros de clase tienen alcance de clase y generalmente no se reconocen fuera de la clase sin calificacin. puede pensar en algn miembro de clase que se reconoce sin que se le califique? 2. Escriba un mtodo gcd que no sea recursivo y que pueda tomar cualquier argumento int, no solo los no negativos. // The "Ejercicio2" class. import java.awt.*; import hsa.Console; public class Ejercicio2 { static Console c;

// The output console

public static void main (String[] args) { c = new Console (); gcd(); } static void gcd() { c.println("Escribe un numero: "); int num=c.readInt(); } } 3. Agregue un mtodo privado mcm a la clase Fraction que toma dos int y devuelve su minimo comn mltiplo. [Por ejemplo, mcm (-15,12) es 60. Sugerencia: utilice gcdJ.Modifique minus y plus en Fraction para utilizar mcm. Private static int mcm(int a, int b) { a= Math.abs (a); b=Math.abs(b); if (a==0) return (b); if (b==0) return (a); int t; while (b>0) { t=a%b; a=b;b=t;} return (a); } 4. Agregue a la clase Fraction un mtodo floor que devuelva el entero mas grande que sea menor o igual a la fraccin ( Sugerencia: considere fracciones positivas y negativas) 5. Una fraccin apropiada se encuentra entre -1 y 1. Agregue a Fraction un mtodo is Proper (). 6. Siga el ejemplo Fraction, escriba una Clase Complex para representar nmeros complejos con parte real e imaginarias tipo doubl. Para Complex, defina toString y operaciones aritmticas

binarias. 7. Agregue el mtodo conjugate () a la clase Complex. Es til conjugate para realizar divisiones de objetos de Complex? 8. Agregue un miembro Boolean grow (int n) A Cirbuf. El mtodo aumenta la capacidad de un objeto Cirbuf en n caracteres. Cualquier carcter que no se consuma en la memoria intermedia permanece. Si falla grow (), se devuelve false. 9. Examine con detenimiento el mtodo partition usando en nuestro quicksort (seccin 3.3) puede mostrar que despus del ciclo while el elemento a [i] no es menor que pe? Ademas es una mejora al cdigo partition modificar la llamada swap a swap (a, i++,j--)? 10. Escriba un programa que cree un arreglo fracArr con new, inicialice cada elemento fracArr [i] con el objeto de 1/i+1 de Fraction, luego despliegue el arreglo. 11. Una pila es una memoria intermedia del tipo primero en entra y primero en salir. Si se introduce los nmeros 1.0, 2.0 y 3.0, en ese orden en la memoria intermedia, entonces salen en la secuencia 3.0, 2.0 y 1.0 La operacin push introduce un elemento en la parte superior de la pila y la operacin pop elimina un elemento de la parte superior de la pila. Son las dos nicas operaciones que se permiten para modificar una pila, siguiendo el ejemplo de la memoria intermedia circular de la seccin 3.11, implante una clase Stack para el tipo doubl. 12. Utilice el objeto Stack del ejercicio anterior para implantar un programa Pi para evaluar una expresin en notacin Polaca inversa. Por ejemplo Java Pi 3.1 -4.2/ 5.3 6.4-7.5*+ Despliega el valor 3.1/-4.2+(5.3-6.4)*7.5. Tenga cuidado al introducir la lnea del comando. En un sistema UNIX necesita incluir caracteres como* con una diagonal invertida (/*). (Sugerencia: utilice Double.valueOf (cadena).doubleValue().) 13. Si tiene un mtodo plus en la clase Fractin y un metodo plus en la clase Comlex se considera que el mtodo plus esta sobrecargado? Por qu? 14. En Java el tipo devuelto de un mtodo no se considera parte de la firma. esto evita que defina mtodos que, en efecto, hacen que el valor de devolucin sea parte de la firma? Si no, explique el mecanismo que utilizara. 15. puede tener acceso a un miembro de instancia desde un mtodo esttico? puede acceder a un miembro esttico desde un mtodo de instancia? cmo? De un ejemplo para mostrar lo que es y lo que no es posible. 16. Considere la posibilidad de un mtodo finalize que cree una nueva referencia al objeto que est a punto de recolectarse y que, por tanto, evite que se recolecte. cmo que propsito se aplicara esta tcnica? realmente funcionaria? ( Sugerencia: no) CAPITULO 4 EJERCICIOS 1. Cul es la diferencia mnima e importante entre un miembro heredado y un 2 miembro de la superclase? Considere el miembro anexo en JointAccount Int isIdentical ( Account obj) { return (acc_no == obj.acct_no) ; } Hay algo incorrecto en este mtodo? Explique. 2. En una clase, es posible tener un mtodo esttico y un mtodo de instancia con el mismo nombre? Y con la misma firma? Qu ocurre en una superclase y en una subclase? 3. Es posible establecer un campo con el mismo nombre que un campo de la superclase, pero

haciendo el campo static ( o no esttico) de manera diferente en la subclase? Si es as, cules son las implicaciones? 4. Es posible definir un mtodo cuyo nombre sea el mismo que un nombre de campo de la superficie? De ser as, cules son las implicaciones? 5. Cuando se invoca un mtodo sobrescrito de subclase a travs de una referencia a superclase, cul especificador de proteccin se aplica? El de la superclase o el de la subclase? 6. Java tiene una clave Vector (java.util.Vector) que en realidad funciona como un arreglo dinmico genrico. Por desgracia, aparta el nombre bien comprendido de Vector de su uso habitual en geometra y algebra lineal. Menciona una manera de cambiar el nombre Vector por DyArray para que pueda utilizar vectores y arreglos sin confusin. 7. La palabra clave sper es til para tener acceso a miembros ocultos o sobrescritos de la superclase inmediata Pero qu pasa si desea tener acceso a dichos miembros en una superclase ms arriba de la cadena de extensin de clase? Explique cmo accesaria esos campos ocultos? la misma tcnica es efectiva para alcanzar mtodos sobrescritos? 8. Cmo concilia las reglas para la sobrescritura de mtodo y la sobrecarga de mtodo? por qu no se mencion la sobrescritura de mtodo cuando se analiz la resolucin de mtodo bajo extensin de clase? 9. En un constructor de subclase debe colocarse al principio una llamada a constructor de superclase. Es posible evitar esta restriccin y hacer que un constructor de subclase haga algunas operaciones antes de llamar al constructor de superclase? Si es as, describa se esquema. 10. Es posible o deseable invocar explcitamente a un constructor que pertenece a una superclase de la superclase inmediata? por qu? 11. Enumere los pasos para que una clase soporte la clonacin de sus objetos. 12. Que es un programa genrico? Qu papel desempea la clase Object de Java en la programacin genrica? 13. Considere la clase ArbList. Qu condiciones, si las hay, se requieren para que los elementos se coloquen de manera efectica en una lista genrica? Enumere las condiciones y explique. 14. Siga el ejemplo de ArbStack y escriba ArbQueue utilizando ArbList. 15. Extienda EmpQueue, cola de empleados, de la cola genrica del ejercicio anterior. 16. Considere la invocacin dinmica de mtodos de instancia sobrescritos. Establezca con claridad la razn por la que esto solo puede lograrse a travs de la verificacin en el momento de la ejecucin del tipo de objeto anfitrin y no puede hacerse en el momento de la compilacin. 17. Disee e implante una cuenta de cheques gratuita y proteccin para sobregiro. Considere la extensin de la clase FreeChecking. 18. Una llamada de super (), si hay, debe ser la primera instruccin de un constructor de subclase. Pero una llamada a this () tambin debe colorarse al principio de un constructor Entonces donde coloca una llamada a this () si tiene una llamada super () O es posible hacer esto?

You might also like