Está en la página 1de 12

INSTITUTO TECNOLOGICO DE TLAHUAC 2

MATERIA: _ESTRUCTURAS Y ORGANIZACIÓN DE DATOS__

Apolo Firmado
digitalmente por
Enciso Apolo Enciso
Montes de Montes de Oca
Fecha: 2018.09.30
Oca 21:08:22 -05'00'

Docente: M. en RI. Iván Azamar Palma

ALUMNO(A):
_ENCISO MONTES DE OCA APOLO__

GRUPO: __ 3B_____

Nota: La práctica es individual, por lo que la copia de este producto está penalizada
con su anulación de ambas prácticas, la consecución recurrente de esta actividad
se penaliza con reporte y cancelación de la calificación de la unidad.
Rubrica.
Rubro Puntos
Campos requisitados Todos los campos Todos los campos Algunos o ningún
debidamente registrados, con campo registrado.
registrados. errores, incluyendo Segunda Oportunidad
ortografía. con los datos
debidamente
ingresados y con el
código comentado
línea por línea.
4 2 0
Muestra Ejecución Si, a la primera Si a la segunda No, con errores, o el
del programa ocasión y con ocasión o más con el resultado no es el
comentarios al código código comentado. esperado.
Segunda oportunidad
deberá entregar con
el código fuente.
5 4 0
Puntualidad Si en tiempo y forma Una clase después Segunda Oportunidad
1 1 0
Formato para prácticas de laboratorio

PLAN DE CLAVE
CARRERA NOMBRE DE LA ASIGNATURA
ESTUDIO ASIGNATURA

Ingeniería en TID-1012
2007-2
Tecnologías de
_ESTRUCTURAS Y ORGANIZACIÓN DE DATOS_
Información y
Comunicación

PRÁCTICA Fecha de
LABORATORIO DE Computación
No. Entrega

1 NOMBRE DE LA TDA aplicado a una esfera


PRÁCTICA
30/09/2018

1 INTRODUCCIÓN
TDA. Un tipo de dato abstracto es una colección de datos sobre los cuales se define un conjunto de operaciones
• Una clase de Java es ideal para implantar TDAs:
• clase encapsula datos y operaciones – variables definen la estructura de datos – métodos públicos son las
operaciones que definen el TDA

2 OBJETIVO ( COMPETENCIA)
Comprenderá y usará un TDA en el lenguaje de programación de JAVA

3 FUNDAMENTOS
1. Programación Estructurada

Fundamentalmente, la programación estructurada y la programación modular


consisten en el uso de abstracción de procedimientos. La idea es meter un conjunto
de instrucciones en un módulo, que tiene una interfaz claramente definida.
Mediante la abstracción de procedimientos el programador separa claramente el
cómo del qué: una subrutina contiene la lógica necesaria para ejecutar una tarea, y
sus parámetros definen los objetos sobre los que trabaja.
Además, la programación estructurada requiere que el programador use las
construcciones IF-THEN-ELSE, WHILE-REPEAT y CASE. Pero principalmente un
programa estructurado es uno que no utiliza el ya bastante difamado GOTO para
alterar la secuencia de ejecución del programa.

Los primeros lenguajes de programación (Fortran, Lisp, Basic y Cobol) no


soportan adecuadamente abstracción de procedimientos. Primero, no incorporan
las instrucciones de control mencionadas en el párrafo anterior. Segundo, aunque
en ellos es posible definir argumentos para subrutinas, no es posible especificar
sus tipos de datos, por lo que muchos errores de interfaz, que podrían ser detectados
por el compilador, deben ser eliminados manualmente por el programador. Cuando
estos lenguajes fueron definidos lo común era no especificar la interfaz entre
módulos: hacerlo era visto por los programadores como un trabajo poco creativo y
engorroso. Ellos se rehusaban a diseñar adecuadamente sus programas. La
"documentación" era labor de funcionarios de poco sueldo, y se creía que lo más
importante era escribir el código del programa.

2. Tipos Abstractos de Datos

La programación que utiliza abstracción de datos se basa en el hecho de que


en un programa se deben integrar y combinar los tipos básicos de datos, como
números y caracteres, para formar estructuras de datos más complejas y así
representar información dentro del computador. En general existe una fuerte
relación entre todos los datos manipulados por un programa, por lo que es
conveniente que esa relación esté claramente especificada y controlada, de forma
que cada parte del programa "vea" sólo lo que necesita

Esto último es muy importante para separar el programa en partes


independientes, o módulos, evitando así que cambios en una parte produzcan
errores en otras partes del programa. Por ejemplo, en un programa que usa varios
arreglos y matrices para almacenar información, es frecuente que al aumentar el
tamaño de una dimensión se olvide aumentar la de los demás arreglos, por lo que
el mantenimiento del programa es más difícil. El objetivo perseguido al usar
abstracción de datos es lograr aislar todas estas dependencias, de forma que los
cambios puedan ser hechos con un mínimo de esfuerzo y en una forma localizada.
En nada ayuda tener que buscar por todo el programa en qué lugar debe hacerse
cada cambio.

También es importante especificar mediante la abstracción de datos qué es cada


estructura de datos. Una lista, por ejemplo, es una estructura de datos que tiene un
comportamiento muy bien definido: pueden insertársele nuevos elementos,
recorrérsela, encontrar el primer y último elemento, etc. Un programador que use
el tipo de datos Lista no debe necesitar descubrir de nuevo ese concepto:
simplemente debe poderlo importar de una biblioteca.

Al implementar la Lista como un Tipo Abstracto de Datos (ADT: Abstract


Data Type en inglés), el programador decide cuáles procedimientos se necesitan
para manipular una lista, y define su interrelación. Un usuario del tipo de datos
"lista" no necesitará entonces conocer cómo se interrelacionan (a nivel de
implementación) los datos ni los procedimientos que manipulan listas pues le
bastará usar las operaciones de la Lista para manejarla.

Al usar abstracción de datos el programador define cómo puede comportarse


cada una de las variables de su programa. O sea que además de usar abstracción
de procedimientos para construir el programa modularmente, deben especificarse
las operaciones válidas sobre los datos. El objetivo es programar módulos que
definan nuevos tipos de datos, y además que incluyan varios procedimientos
(operaciones) que permitan manipularlos. Este dúo procedimiento-dato es un Tipo
Abstracto de Datos. El programador-usuario del ADT podrá manipular las
variables del tipo de datos únicamente por medio de sus procedimientos asociados.
En un sólo módulo se "encapsula" el nuevo tipo de datos junto con sus
procedimientos.

Al hablar de ADTs se dice que se usa Abstracción de Datos porque al definir


un ADT el programador especifica cuáles son las estructuras de datos que su
programa utiliza. Se dice que se usa Encapsulamiento de Datos porque junto al
tipo de datos también se definen las rutinas que permitirán utilizarlo. Por medio
del Ocultamiento de Datos se evita que un programador-usuario del Tipo de Datos
Abstracto cambie de forma impropia el valor de una variable. Generalmente al usar
ADTs también se usan iteradores, que son módulos que permiten obtener todos los
valores almacenados en una variable compuesta, como lo son la lista o el arreglo.

3. Programación por Objetos

La Programación por Objetos es una extensión natural del uso de abstracción


de datos. Si los conceptos asociados con ADTs se les agrega la Herencia y le
Polimorfismo el resultado es OOP. Sin embargo, en la mente de muchos autores y
programadores el término Programación por Objetos sólo significa usar herencia
y polimorfismo, aunque no se utilice ocultamiento de datos o programación
estructurada.
4. Usos de OOP

El campo en que mayor impacto tiene la Programación por Objetos es en el


Diseño de Interfaces Hombre-Máquina, pues es muy natural capturar la estructura
de los objetos que pueden desplegarse en una pantalla usando una jerarquía de
objetos. Pero en casi todos los demás campos el uso de jerarquías no rinde tantos
beneficios como en el campo de los gráficos y las pantallas. Sin embargo, como la
interfaz de un programa es muy importante, la mayoría de los programadores están
aprendiendo a usar las metodologías orientadas a objetos para lograr programas
que puedan competir en el mercado. Prácticamente todos los programas modernos
deben tener una interfaz programada usando OOP, o de lo contrario el programa
será rechazado por los usuarios finales lo que en parte explica la atención que ha
recibido esta nueva tecnología.

5. Conclusión

La programación por objetos es la agregación de varias técnicas de


programación que se han desarrollado con el correr del tiempo. Su uso se está
difundiendo mucho por la importancia que tiene el desarrollo de interfaces para
programas, las que de una manera muy natural pueden implementarse usando
técnicas de abstracción y programación por objetos.

Sin embargo, OOP no es una tecnología que vaya a resolver todos nuestros
problemas de computación. Las panaceas no existen, y los computólogos nos
vemos obligados a conocer cada vez más técnicas para resolver los desafiantes
problemas del mundo actual.

Aunque usar ADTs es más difícil que no hacerlo, pues en algunos casos se dura
el doble programando, vale la pena el esfuerzo, pues la mejora en la modularidad
de los programas que produce aumenta mucho su calidad. Ojalá los programadores
acepten este mensaje.

Pero tal vez el efecto colateral más positivo que se obtenga de OOP sea el
entrenamiento a que fuerza a los programadores, quienes poco a poco comprenden
mejor como hacer programas muy bien modularizados. En estos nuevos programas
cada módulo se acerca cada vez más a ser realmente un "componente de software".
Esta nueva disciplina de programación dará muy buenos réditos, pues de seguro
mejorará mucho la calidad de los sistemas disponibles para los usuarios finales.
4 PROCEDIMIENTO ( DESCRIPCIÓN)

EQUIPO NECESARIO: MATERIAL DE APOYO:

 Computadora (escritorio o laptop)  Internet (google académico)


 NetBeans IDE 8.2

Formato para prácticas de laboratorio

DESARROLLO DE LA PRÁCTICA:

Superficie esférica
E s l a su p e rfi ci e en g en d r ada p o r u n a ci r cu n f er en ci a qu e gi ra s o br e
su di ám et r o.

Esfera
E s l a r egi ón d el es p aci o qu e s e en cu en t ra en el i n te ri o r d e u n a
su p e r fi ci e e s f é ri ca .
Elementos de una esfera:

Ce nt r o: Pu n t o i n te r i or qu e equ i di sta d e cu al qu i er pu n t o d e l a
e sf e r a.
R ad i o: Di stan ci a d e l c en t r o a u n pu n t o de l a e sf e r a.
Cu e rd a : S eg m en t o qu e u n e d o s pu n t o s de l a su p e r fi ci e.
Di á m et ro : Cu e rd a qu e p as a p or el c en t r o.
Po lo s : S on l os pu n t o s d el ej e d e gi r o q u e qu ed an s ob r e l a
su p e r fi ci e e s f é ri ca .
Área y volumen de la esfera
Definic ión de c ilind ro

Un c i l i nd ro e s u n c ue r po ge om ét r ic o en g en d rad o p o r

u n re ct á ng u lo qu e gi ra al r ed ed o r d e u n o d e su s l a d os .

Desarroll o del c ilin dro


Elementos del cilindro

Eje

E s el l a do fi j o al r ed ed o r d el cu al gi r a el r ec t án g u lo .

Bases

Son l o s c ír cu l o s q u e en g en d r an l o s l a d os

pe r pe n di c ul a r e s al ej e.

Altura

E s l a di stan ci a e n t r e l as d o s b a s es .

Generatriz

E s el l a do op u es to al ej e , y e s el l ad o qu e en g en dr a

el c i l in d ro .

La g e ne r at r iz d el c i li n d ro es i gu al a l a al tu r a .

h = g
Área lateral del cilindro

Área del cilindro

Volumen del cilindro

5 RESULTADOS Y CONCLUSIONES

A) Imprima la pantalla del resultado si crea un objeto Cilindro de radio 5.


B) Escriba su código fuente.

package practica2;

/**
*
* @author Apolo
*/
public class Esfera {
private double radio;

public Esfera(double radioInicial){


if (radioInicial>0){
this.radio=radioInicial;
}else{
this.radio=0.0;
}
}

public double getRadio() {


return this.radio;
}
public double getDiametro(){
return (this.radio*2);
}
public double getCircunferencia(){
return (Math.PI * getDiametro());
}
public double getArea(){
return (4*Math.PI * radio * radio);
}
public double getVolumen(){
return (4*Math.PI*Math.pow(radio,3))/3;
}

package practica2;

/**
*
* @author Apolo
*/
public class Practica2 {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Esfera esferita = new Esfera(5);

System.out.println("Radio :"+esferita.getRadio());
System.out.println("Diametro :"+esferita.getDiametro());
System.out.println("Circunferencia :"+esferita.getCircunferencia());
System.out.println("Area :"+esferita.getArea());
System.out.println("Volumen :"+esferita.getVolumen());
}
}

Describa que tiene que ver la práctica con TDA y POO. (5 renglones)

La programación orientada a objetos trata de amoldarse al modo de pensar del


hombre y no al de la máquina. Esto es posible gracias a la forma racional con que
se manejan las abstracción es que representa como entidades del dominio del
problema, ya como la jerarquía o encapsulamiento.

6 ANEXOS

Explica en Cinco reglones qué relación existe entre el TDA y la POO

La programación que utiliza la abstracción de datos se basa en que un programa debe integrar y
combinar los tipos básicos de datos, como números y caracteres, para formar estructuras de datos
más complejas y así representar información. En general existe una fuerte relación entre todos los
datos manipulados por un programa, por lo conveniente que esa relación esté claramente
especificada y controlada, de forma que cada parte del programa "vea" sólo lo que necesita.

Explica con tus palabras las propiedades de la POO

Los objetos poseen ciertas propiedades que los distinguen de las variables simples, muchas de ellas
pueden heredarse, encapsularse y el polimorfismo. Pero las propiedades en general de la POO son
las 3 anteriores y la abstracción.

7 REFERENCIAS

Anota aquí algunas páginas Web o bibliografía que describa a un TDA


1. TAD: Tipo de datos definido de forma única mediante un tipo y un conjunto de
operaciones definidas sobre el tipo. Hernández, Lázaro, Dormido, Ros. Estructuras de
Datos y Algoritmos. p.3.
URL: http://www.cartagena99.com/recursos/programacion/apuntes/Tema1TADs.pdf

2. http://web.fi.uba.ar/~bortega/apunte_TDA.pdf

También podría gustarte