commit f5f8e8a1f723cfe60c88658029a121fef9607a3d
parent 71bc0d997e03d6214ba330c4eb3ede3c58aa32e4
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date: Mon, 20 May 2024 12:00:24 -0300
Update `guias/4/respuestas.md`
Diffstat:
1 file changed, 21 insertions(+), 17 deletions(-)
diff --git a/guias/4/respuestas.md b/guias/4/respuestas.md
@@ -1,19 +1,23 @@
# Guía 4: Tipos de Datos Abstractos
-> ¿Qué es un TDA?
+Algoritmos y Estructuras de Datos (CB100) - 1C2024 - FIUBA
+Martin J. Klöckner - [mklockner@fi.uba.ar](mailto:mklockner@fi.uba.ar)
+
+\vspace{1em}
+> 1. ¿Qué es un TDA?
Los tipos de datos abstractos son tipos ajenos al lenguaje de programación, se
definen de acuerdo a un comportamiento especifico el cual se espera que tenga el
tipo de dato, y desde el punto de vista del usuario no importa la manera en la
que esté implementado.
-> ¿Qué paradigmas de programación se utilizaron antes de TDA?
+> 3. ¿Qué paradigmas de programación se utilizaron antes de TDA?
El principal paradigma de programación utilizado previamente es el paradigma
procedural, en el cual se separa la ejecución del código en funciones o
"subrutinas".
-> ¿Cuáles eran sus principales problemas?
+> 4. ¿Cuáles eran sus principales problemas?
Uno de los mayores problemas es que se debe invocar a cada función pasando como
parámetros los recursos a los cuales se pretende que la función acceda, a menos
@@ -22,18 +26,18 @@ inconveniente pero es una mala práctica, ya que se permite el acceso a esas
variables globales a cualquier función que esté en el mismo alcance que la
variable definida.
-> ¿Qué es una clase?
+> 5. ¿Qué es una clase?
Las clases se utilizan como plantilla o molde, para definir un tipo de dato
abstracto u objeto. Una clase combina una serie de atributos a los cuales
caracterizan un tipo de dato.
-> ¿Qué es un objeto?
+> 6. ¿Qué es un objeto?
Un objeto es un tipo de dato que tiene un conjunto de atributos y un
comportamiento determinado.
-> ¿Cuáles son las principales características de TDA?
+> 7. ¿Cuáles son las principales características de TDA?
Las principales características de los TDAs son sus propiedades y atributos ya
que el valor de estos define el estado del mismo en un determinado momento.
@@ -50,13 +54,13 @@ invariantes del mismo y sus operaciones y axiomas.
retorno, también se indica las Pre- y Post-condiciones, los cuales son los
axiomas.
-> ¿Cómo se debe encarar un problema en TDA?
+> 8. ¿Cómo se debe encarar un problema en TDA?
Se debe arrancar definiendo las características que debe tener el TDA, su
nombre, sus atributos y sus funciones u operaciones, independientemente del
lenguaje de programación a utilizar.
-> ¿Qué significa `public` y `private`?
+> 9. ¿Qué significa `public` y `private`?
Las palabras reservadas `public` y `private` se utilizan para definir el alcance
de los atributos cuando se define una clase. `public` como hace referencia su
@@ -65,8 +69,8 @@ ser variables, luego de definida la clase, mientras que `private` no
permite al usuario acceder ni modificar los atributos definidos como tal, solo
pueden ser modificados dentro de la definición de la clase.
-> ¿Qué significa `static`? ¿Desde dónde conviene acceder a un atributo de tipo
-> `static`? Dar un ejemplo de su uso.
+> 10. ¿Qué significa `static`? ¿Desde dónde conviene acceder a un atributo de
+> tipo `static`? Dar un ejemplo de su uso.
La palabra reservada `static` permite que una variable permanezca en memoria
durante toda la ejecución del programa, incluso si la variable se define dentro
@@ -77,7 +81,7 @@ contenía al finalizar la ejecución anterior.
En el caso de definirlas dentro de una clase, conviene accederlas utilizando
métodos.
-> ¿Qué es un constructor?
+> 11. ¿Qué es un constructor?
Un constructor es un método u operación de un TDA cuya misión es inicializar un
objeto de una clase. En el constructor se asignan los valores iniciales del
@@ -87,7 +91,7 @@ En el caso de C++, los constructores poseen el mismo nombre de la clase a la
cual pertenece y no puede devolver ningún valor (tampoco se puede especificar la
palabra reservada `void`).
-> ¿Qué es un destructor? ¿Cuándo se debe programar uno?
+> 12. ¿Qué es un destructor? ¿Cuándo se debe programar uno?
Un destructor es un método de un objeto, al igual que el constructor, solo que
en lugar de asignar memoria e inicializar variables, libera recursos, como
@@ -98,22 +102,22 @@ automáticamente cuando se termina el ámbito en donde el objeto fue definido o,
cuando se ejecuta la instrucción `delete`, en el caso de haber sido creado el
objeto con el operador `new`, utilizando memoria dinámica.
-> ¿Qué es la sobrecarga de métodos?
+> 13. ¿Qué es la sobrecarga de métodos?
La sobrecarga de métodos permite definir múltiples métodos con el mismo nombre
pero que difieren en los argumentos, esto resulta útil, por ejemplo, para
definir múltiples métodos con igual nombre y distinto tipo de argumentos.
-> ¿Qué es el objeto `this`?
+> 14. ¿Qué es el objeto `this`?
El objeto `this` en C++ es una referencia (puntero) que poseen todos los objetos
la cual apunto a sí mismo, se genera de manera automática al invocar un método y
se utiliza para resolver ambigüedades en los nombres del alcance del método.
-> ¿Qué son las Pre y Post condiciones? ¿Para qué sirven?
+> 15. ¿Qué son las Pre y Post condiciones? ¿Para qué sirven?
Las Pre y Post son comentarios que se indican ante cada método y permiten al
-programador detectar la condición previa y posterior que tendrá el objeto al
-cual pertenece el método.
+programador detectar la condición previa y posterior que tendrá el objeto, al
+cual pertenece el método, luego de ejecutar el mismo.
No son necesarios para la ejecución de la aplicación pero es una buena práctica.