MIT OpenCourseWare


6.170 Curso práctico en Ingeniería del Software.

Página principal
¿Qué es OCW?
Ayuda
Feedback
Preguntas frecuentes
Glosario
 
 
Página principal del curso
Programa
Calendario
Material de clase
Trabajos
Exámenes
  Lecturas obligatorias
  Otras fuentes
  Prácticas
  Grupos/Clases de repaso
  Herramientas
  Proyectos

   MIT

   
 

Ejercicio 1: Iniciación a Java

 

Plazo de entrega: 2ª semana

Sumérjase

Asegúrese, antes de empezar a programar, de haber seguido las instrucciones del material de herramientas entregado, concernientes al directorio de instalación y a la utilización de Java™. Las lecturas para todos los boletines de problemas van desde el capítulos 1 hasta el 5 de la 3ª edición del Tutorial de Java. Las lecturas para los problemas individuales están indicadas en cada problema.

Si hace supuestos para solucionar cualquier problema del ejercicio, asegúrese de que quedan expuestos con claridad en las soluciones. Los supuestos deben ser coherentes y razonables.

Problema 1: Elementos básicos del lenguaje [10 puntos]

Lecturas: Elementos básicos del lenguaje: variables, operadores, expresiones, sentencias y bloques.

Échele un vistazo al código que se muestra a continuación bajo en el que se calcula el radio de un círculo en pies y pulgadas, teniendo en cuenta que el círculo tiene un área determinada. Descargue el código fuente

 public class MathCalc
                     {
                       public static void main(String[] args)
                     {
                       double radius (radio) = 0.0;
                       double circleArea (área círculo) = 100.0;
                       int feet (pies)= 0;
                       int inches (pulgadas) = 0;
                       radius (radio) = Math.sqrt(circleArea(Área círculo)/Math.PI);
                       feet (pies) = (int)Math.floor(radius)(radio);
                       inches (pulgadas) = (int)Math.round(12.0*(radius - feet)(radio-pies));
                       System.out.println("The radius of a circle with area" + circleArea 
                       + " square feet is\n " + feet + " feet " + inches + " inches");
                     
                     
                      System.out.println("El radio de un círculo con un área de " + areaCirculo 
+ " pies cuadrados es:\n " + pies + " pies y " + pulgadas + " pulgadas"); } }


El Sol tiene un diámetro de unas 865.000 millas aproximadamente. El diámetro de la Tierra es de aproximadamente 7.600 millas. Emplee los métodos de la clase de Math para calcular,

(a) el volumen de la tierra en millas cúbicas;
(b) el volumen del sol en millas cúbicas;
(c) la relación entre el volumen del sol y el volumen de la tierra.


y luego saque los tres valores. Considere que tanto la tierra como el sol son esferas. El volumen de una esfera se calcula mediante la formula 4 pi r^3/3, donde r es el radio.

Ejecute el código que ha escrito y entregue tanto el código como la salida del programa. La salida debería leerse como: El volumen de la tierra es de X millas cúbicas, el del sol es de Y millas cúbicas, y la relación entre el volumen del sol y el de la tierra es de Z.


Problema 2: Elementos básicos del lenguaje [10 puntos]

Lecturas: elementos básicos del lenguaje: sentencias de control de flujo.

 
                     public class Primes (Primos)
                     {
                      public static void main(String[] args)
                     {
                      int nValues (nValores) = 50;
                      boolean isPrime (esPrimo) = true;
                      for(int i = 2; i <= nValues (nValores); i++)
                      {
                       isPrime (esPrimo) = true;
                       for (int j = 2; j < i; j++)
                        {
                         if (i % j == 0)
                         {
                          isPrime (esPrimo) = false;
                          break;
                         }
                        }
                       if (isPrime) (esPrimo)
                       System.out.println(i);
                      }
                     }
                     }

Elabore un nuevo programa que tenga las siguientes características. Descargue el código fuente.

(a) Que utilice la sentencia continue en vez de la sentencia break.
(b) Que no necesite la variable isPrime (esPrimo).
(c) Que cuando analice si un número entero es primo, baste con probar y dividir por números enteros hasta la raiz cuadrada del número que se está analizando.


Entregue la nueva versión de su código.


Problema 3: Elementos básicos de un objeto [15 puntos]

Lecturas: Elementos básicos de un objeto y objetos de datos simples, el ciclo de vida de un objeto, caracteres y cadenas de caracteres (strings).

En el siguiente código, el soliloquio se analiza carácter a carácter para definir las vocales, los espacios y las letras que se han usado. Complete el código que computa el número de espacios, vocales y consonantes. Descargue el código fuente.

public class StringCharacters
                         {
                         public static void main(String[] args)
                         {
                         String texto= "Ser o no ser; he aquí el problema."
                         +" ¿Qué es más elevado para                          el espíritu: sufrir"
                         +" los golpes y dardos de la insultante fortuna,"
                         +" o armarnos contra un piélago de calamidades,"
                         +" y, haciéndoles frente, acabar con ellas?";
                         int espacios= 0, 
                         vocales= 0,
                         letras= 0;
                         
                         
                         //INTRODUZCA AQUÍ SU CÓDIGO
                         
                         System.out.println("El texto contiene:\n" +     vocales + " vocales\n" 
                         + (letras - vocales) + " consonantes\n" + espacios   + " espacios");
                          
 }
 }                          
                            

Ejecute el programa una vez que haya escrito el código. Entregue su código y la salida que se obtiene al ejecutar el código.


Problema 4: Elementos básicos de un objeto [25 puntos]

Lecturas: Elementos básicos de un objeto y objetos de datos simples.

Números
Arrays (matrices)
Escriba un programa que inicialice una variable de tipo string, almacenando en ella el soliloquio del problema anterior, para, posteriormente, extraer las palabras del texto y ordenarlas por orden alfabético. Sin embargo, puede definir las "palabras" como quiera (dentro de lo razonable), pero facilítenos su definición en la solución. Puede usar el método de ordenación que desee. El más sencillo es el método burbuja, que funciona de la siguiente manera:

  • Comenzando con el primer elemento del array, compare los elementos consecutivos (0 y 1, 1 y 2, 2 y 3, y así sucesivamente).
  • Si el primer elemento de cualquier par es mayor que el segundo, intercambie los dos elementos.
  • Repita el proceso para la totalidad del array hasta que no haga falta hacer ningún intercambio más. Los elementos del array estarán ahora en orden ascendente.
  • Ejecute el programa una vez que haya escrito el código. Entregue su código y la salida generada al ejecutarlo.

Problema 5: Clases y herencia [25 puntos]

Lecturas: Clases y herencia: creación de clases.

Definimos una clase básica de objetos Punto: Descargue el código fuente.

                     class Point
                     {
                      double x;
                      double y;
                      
                      // Create a point from coordinates (Crear un punto a partir de unas coordenadas)
                      Point(double xVal, double yVal)
                      {
                       x = xVal;
                       y = yVal;
                      }
                     }

Use los objetos Point para definir una clase Line. Incluya un constructor para crear una línea a partir de dos puntos, un método para calcular la longitud de una línea y otro para convertir una línea en cadena, que se pueda imprimir de forma legible.

Finalmente, cree un método intersección, invocado desde el objeto Line, que devuelva un punto como intersección de dos líneas. (Observe el recurso sobre el punto de intersección de las dos líneas).

Entregue el código que ha escrito, y asegúrese de que compila.


Problema 6: Clases y herencia [15 puntos]

Lecturas: Clases y herencia: administración de la herencia.

Imagine que hemos definido una clase para representar a un animal de la siguiente manera: Descargue el código.

                   public class Animal
                   {
                    public Animal(String aType)
                   {
                    type (tipo) = new String(aType);
                   } 
                    public String toString()
                   {
                    return "This is a " ("Esto es un") + type (tipo); 
                   } 
                    private String type (tipo);
                   } 

A continuación, defina otra clase basada en la clase Animal, que defina a perros. Incluya variables de instancia de tipo String para el nombre y la raza del perro.

Defina dos constructores para la subclase Perro, uno que acepte como único argumento el nombre de un perro, y otro que acepte tanto el nombre como la raza del objeto Perro. Asegúrese de que el miembro privado de la clase base (objeto principal de la superclase), Type (Tipo), se ha inicializado de manera adecuada.

Entregue el código que ha escrito.

Preguntas y respuestas

En esta sección se darán una serie de aclaraciones y respuestas a las típicas preguntas que surgen en relación con los boletines de problemas. Intentaremos mantenerla lo más actualizada posible, así que debería ser este el primer sitio que consultara (después de haber releído detenidamente el boletín de problemas y las especificaciones) cuando tuviera algún problema.

Pregunta: Problema 2, comentario anónimo acerca de si resulta acertado introducir "código espaguetti" en lo que se refiere al enunciado continue (goto). Muchas gracias por hacer que esto llegue a oidos del personal, que podrá tratar el tema.

Respuesta:


Pregunta: ¿Qué convenciones deberíamos seguir para el código de Java™?

Respuesta: Sigan las Code Conventions for the Java Programming Language (Convenciones del código del lenguaje de programación Java). En cualquier caso, no se restarán puntos por utilizar otras convenciones que sean razonables.

Massachusetts Institute of Technology © 2003 MIT | Información Jurídica | Privacidad
Todo uso del sitio de MIT OpenCourseWare y sus materiales de curso queda sujeto a las condiciones y términos de uso detallados
en la sección sobre Información Jurídica
Copyright © 2003 Portal Universia S.A. Todos los derechos reservados
(Avda. de Cantabria s/n - Edif. Arrecife, planta 00.28660 Boadilla del Monte) - Madrid. España.
Contacta con nosotros: Usuarios | Empresas-Instituciones-Medios comunicación
Código Ético | Aviso Legal | Política de confidencialidad | Quiénes somos: Sala de Prensa