Você está na página 1de 8

Carrera: Analista Programador

Asignatura: Programación II

Prof. Ing. Pablo Vilaboa

Evaluación Parcial Nº1

Propuesta de Integración del Módulo I

Nombre y apellido: GINO FABRIZIO COLAIACOVO

DNI: 37.686.885

Presentación

El trabajo que usted inicia constituye la primera evaluación parcial de la


asignatura. Como tal, su realización es obligatoria y constituye una condición
para obtener la regularidad en la asignatura.

El propósito de esta instancia es conocer el nivel de comprensión y aprendizaje


de los contenidos desarrollados hasta el momento. En particular, los conceptos
iniciales de programación orientada a objetos.

Para que el parcial esté aprobado el alumno deberá responder correctamente el


60% de la teoría y de la práctica.

Por favor, lea atentamente las siguientes recomendaciones para resolver el


parcial:

a) Lea todo el parcial antes de comenzar a responder


b) Desarrolle una redacción clara y precisa contestando lo que la pregunta re-
quiere
c) Observe la ortografía ya que la misma es parte del parcial
d) Si considera que no comprende alguna consigna, consulte a su profesor an-
tes de comenzar

Todos los contenidos abordados en los Módulos I son fundamentales para la


realización de esta Propuesta de Integración Parcial.

Programación II – Primer Parcial / Pág. 1


Consignas

Parte teórica

Por favor, responda las siguientes preguntas.

1. ¿Cómo interactuar con el medio externo en C++ estándar?

2. ¿Cuál es la diferencia al usar el Framework de .Net?

3. ¿Cómo se pueden combinar las entradas y las salidas?

4. ¿Cuál es la diferencia entre ReadKey y ReadLine?

5. Explique y de un ejemplo de encapsulamiento

6. ¿Cuándo usaría herencia?

7. ¿Cuál es la diferencia entre herencia simple y herencia múltiple?

8. De un ejemplo de polimorfismo

9. ¿Qué es una clase abstracta y en qué situación la usaría?

10. ¿Cómo atrapar errores en C++?

Parte práctica

Desarrolle una aplicación lúdica usando los conceptos estudiados en el curso.


Por ejemplo, podría programar la tirada aleatoria de 6 dados para emular el
juego de la generala.

Programación II – Primer Parcial / Pág. 2


Criterios de evaluación

La presentación de los criterios de corrección pretende servirle como una


herramienta para que usted anticipe los logros obtenidos y ajuste su produc-
ción a los requerimientos de la tarea.

Para la evaluación de este trabajo tendremos en cuenta los siguientes criterios


de evaluación:

Entrega en tiempo y forma.


Corrección de las respuestas.
Funcionamiento correcto de la aplicación desarrollada
Argumentación clara y con fundamento conceptual.
Cumplimiento con las pautas formales de resolución y entrega

Para que el parcial esté aprobado el alumno deberá responder correctamente el


60% de la teoría y de la práctica.

Envíe su examen al tutor a través de la herramienta Evaluaciones


Parciales que le ofrece el aula virtual.

Consulte la fecha de entrega en el Cronograma de la Asignatura. En el


término de 14 días usted recibirá una devolución del docente, a la que podrá
acceder consultando sus CALIFICACIONES.

Recuerde que este trabajo es su Primer Examen Parcial de la Asignatura.


Su realización es requisito para mantener la regularidad en la asignatura.
Cumpla con los tiempos y las formas establecidas.
Gracias y éxitos!

Programación II – Primer Parcial / Pág. 3


1. ¿Cómo interactuar con el medio externo en C++ estándar?

Para interactuar con el medio externo en C++, ya sea por medio de la pantalla
(imprimiendo mensajes) o por el teclado (leyendo lo que el usuario ingresa por el mismo),
es necesario el uso de librerías que nos permitan estos comandos. La librería mas común
para este tipo de comandos es iostream, que nos permite los siguientes comandos para
interactuar:

std::cout << "Hola Mundo" (para mostrar por pantalla una cadena)

std::getline(std::cin, s) (para leer una cadena de caracteres)

2. ¿Cuál es la diferencia al usar el Framework de .Net?

Al usar el Framework de .Net, el cual es un árbol gerarquico de clases y funciones que


nacen de System, es el cambio en los comandos:

Console::Write(“Hola Mundo”) (muestra en pantalla pero sin salto de línea)

Console::Read() (lee un carácter y devuelve el código ascii)

Console::ReadKey() (obtiene un carácter o función presionado por el


usuario y devuelve un tipo ConsoleKeyInfo)

Console::ReadLine() (lee una línea de caracteres)

Console::WriteLine() (muestra por pantalla con salto de línea)

3. ¿Cómo se pueden combinar las entradas y las salidas?

Se puede combinar lo ingresado por el usuario como entrada y mostrarlo luego por pantalla,
de la siguiente manera:

Console::Write(“Ingrese su nombre: “);


Nombre = Console::ReadLine();
Console::Write(“Bienvenido “ + Nombre);

De esta manera estamos leyendo lo que ingresa el usuario como nombre, y luego lo
mostramos por pantalla combinado con un mensaje.

Programación II – Primer Parcial / Pág. 4


4. ¿Cuál es la diferencia entre ReadKey y ReadLine?

La diferencia entre ReadKey y ReadLine es que: ReadKey solo lee un carácter y devuelve el
ConsoleKeyInfo de la tecla presionada, y ReadLine lee una cadena de caracteres y devuelve
un string con lo ingresado.

5. Explique y de un ejemplo de encapsulamiento

Se denomina encapsulamiento al ocultamiento del estado, o sea de los datos de un


miembro de un objeto de manera que solo se pueda cambiar mediante operaciones
definidas para ese objeto.

Por ejemplo, nosotros tenemos nuestra clase Persona, y tiene los datos: nombre, apellido,
fecha de nacimiento, DNI, etc.

Class Persona
{
Private:
String nombre;
String apellido;
DateTime fecha_nacimiento;

Public:
void setNombre(string nom);
void setApellido(string ape);
void setFechaNac(DateTime fech) ;
String getNombre();
String getApellido();
DateTime getFechaNac();
};

Uitilizando los getters y setters vamos a permitir al objeto de la clase poder leer o escribir
sobre los datos de la clase:

void setNombre(string _nombre)


{
nombre = _nombre;
}

String getNombre()
{
return nombre;
}

De esta manera estamos abstrayendo los métodos de las propiedades, para programar de
manera estructurada. Utilizando los getters vamos a poder obtener el valor de los datos, y
con los setters vamos a poder definir el valor de los mismos.

Programación II – Primer Parcial / Pág. 5


6. Cuándo usaría herencia?

La herencia se utiliza cuando queremos compartir la interfaz y comportamiento de un


objeto. Permite describir el comportamiento de los objetos de mas general a lo mas
particular.

Por ejemplo, creamos la clase Animales y creamos una clase heredada de animales que se
llame Perro. Perro va a compartir las propiedades de animales. Esto nos sirve cuando le
queremos dar distinto comportamiento a distintos objetos. Por ejemplo, si tenemos la clase
Vehiculos, y tenemos la clase que hereda de Vehiculos llamada Auto, y Moto: auto tendrá
la propiedad “ruedas” de valor 4, y moto en de valor 2.

7. ¿Cuál es la diferencia entre herencia simple y herencia múltiple?

Se denomina herencia simple cuando se tiene una clase base de la cual hereda la clase
derivada. Esto no quita la posibilidad de que la clase base herede más de una clase, como
en el siguiente cuadro:

Clase Base Clase Base

Clase Derivada Clase Derivada 1 Clase Derivada 2

En cambio, herencia múltiple es cuando se usan dos o más clases para derivar otra
clase. Es decir, la clase derivada comparte los atributos y métodos de más de una clase
base.

Clase Base 1 Clase Base 2

Clase Derivada 1

Programación II – Primer Parcial / Pág. 6


8. De un ejemplo de polimorfismo

#include<iostream>
#include <math.h>
using namespace std;

class Figura {
private:
float base;
float altura;
public:
void captura();
virtual unsigned float perimetro()=0;
virtual unsigned float area()=0;
};

class Rectangulo: public Figura {


public:
void imprime();
unsigned float perimetro(){return 2*(base+altura);}
unsigned float area(){return base*altura;}
};

class Triangulo: public Figura {


public:
void muestra();
unsigned float perimetro(){return 2*sqrt(altura^2+(base/2)^2)+base;}
//Usando pitágoras
unsigned float area(){return (base*altura)/2;}
};

void Figura::captura()
{
cout << "CALCULO DEL AREA Y PERIMETRO DE UN TRIANGULO ISÓSCELES Y UN
RECTANGULO:" << endl;
cout << "escribe la altura: ";
cin >> altura;
cout << "escribe la base: ";
cin >> base;
cout << "EL PERIMETRO ES: " << perimetro();
cout << "EL AREA ES: " << area();
getchar();
return 0;
Programación II – Primer Parcial / Pág. 7
}

9. ¿Qué es una clase abstracta y en qué situación la usaría?

Una clase abstracta es una clase que no esta completamente especificada (posee métodos
sin implementar), y por lo tanto no se pueden crear instancias de la misma. Sirve como
base para otras clases. En C++ se dice que es aquella que posee métodos virtuales puros.
Las clases abstractas se usan al final junto al polimorfismo.

10.¿Cómo atrapar errores en C++?

Para atrapar errores en C++ se utilizan los bloques try { } catch {}, y opcionalmente
finally.

El bloque try sirve para que todo lo que este dentro del bloque entre las llaves {} atrape las
excepciones. Es decir, si tira una excepción esta se puede manejar y tirar un mensaje de
error u hacer otra acción dependiendo del tipo de excepción. Además, si una excepción no
esta atrapada puede derivar en errores no esperados y que el programa finalice antes de lo
esperado.
El bloque catch {} debe tener el parámetro Excepción para obtener el tipo de excepción
que se arrojó dentro del try, y ahí mostrar un mensaje de error dependiendo de la misma.
El bloque finally {} es el bloque de código que se va a ejecutar sin importar lo que suceda;
es decir, aunque el programa tire error y entre por el catch, igualmente va a ejecutarse lo
que este dentro del bloque finally.

Ejemplo:

try
{
int result = a / b;
Console::WriteLine(“El resultado es: “ + result);
}
catch (Exception ex)
{
Console::WriteLine(“Ocurrió un error: ” + ex.Message);
}
finally
{
Console::WriteLine(“Presione una tecla para continuar…”);
Console::ReadKey();
}

Programación II – Primer Parcial / Pág. 8