UNITEC SUR Prof. Ing. José Luis Lozoya Vázquez - 1.Conceptos Basicos
  *Inicio
  *Metodología Orientada a Objetos
  *Tipo de Datos Abstracto*
  => Textos RelacionadosTDA
  => 1.Conceptos Basicos
  => 2.TDA
  => 3.Pilas
  => Resumen1 TDA
  *Contacto
1.1Clasificacion de los tipos de datos.

Clasificación de los tipos de datos.

Los datos se pueden clasificar en:

Los tipos de datos principales (primitivos:
· Cadena.
· Numérico.
· Booleano.

Los tipos de datos compuestos (de referencia:
· Objeto.
· Matriz.

Tipos de datos especiales:
· null.
· Undefined.

- Cadenas:
Las cadenas son secuencias formadas por cero o más
caracteres alfanuméricos y marcas. Deben escribirse
entre comillas dobles (") o simples ('). Pueden
contener cualquier tipo de combinación de números,
letras y símbolos. También pueden tener el valor nulo.

Ejemplos:

var color = "azul";
var telefono = "969139344";
var ciudad = "San Sebastian";

- Uso de las comillas:
Deberemos observar las normas de tener cadenas
delimitadas por comillas simples dentro de otras más
grandes delimitadas por comillas dobles o viceversa.

"noche"
'noche'
"Escribimos la palabra 'noche'."
'Escribimos la palabra "noche".'

- Caracteres de escape:
Son códigos especiales que representan caracteres que
no podríamos representar con letras o números: el
tabulador, salto de línea, etc. También se representan
de este modo caracteres reservados al lenguaje de
script como son las comillas.

Ejemplos:

Escape Significado del carácter

b Retroceso (ASCII .
f Salto de página (ASCII 12).
n Avance de línea (ASCII 10).
r Retorno de carro (ASCII 13).
t Tabulación (ASCII 9).
" Comillas dobles.
' Comillas simples.
Barra inversa.
00 -377 Un byte especificado en octal.
x00 - xFF Un byte especificado en
hexadecimal.
u000 - uFFFF Un carácter Unicode de 16 bits
especificado en hexadecimal.

- Numéricos:
Los datos numéricos pueden ser: enteros, de coma
flotante, hexadecimales y Octales. El tipo de dato
numérico que se utiliza por defecto es el de coma
flotante de doble precisión.

Variables numéricas válidas pueden ser:

numero = 10;
numero = -10;
numeroFlotante = -10.1;
numeroFlotante = 3.14159265359;
numeroHexadecimal = FF3B;
numeroHexadecimal = 0xFF3B;
numeroOctal = 1230;
- Boleanos:
Con este tipo de datos podemos distinguir dos valores:
Verdadero (true) y Falso (false). También pueden
devolver 1 (true) ó 0 (false). Se utilizan en
sentencias que realizan comparaciones para controlar
el flujo de un script. Los valores booleanos, true y
false, deben escribirse siempre en minúscula.

Ejemplos:

hoySabado = true;
if (hoySabado == true)
{fiesta="Si";}

- Matrices (array):
Una matriz es un conjunto de datos del mismo tipo,
identificados por un índice.

Ejemplo:

// Podemos crear una matriz con los empleados
de una empresa:

Empleados[4]
empleados[0] = "Pedro";
empleados[1] = "Juan";
empleados[2] = "Ana";
empleados[3] = "Luisa";

- Sintaxis:
new Array(arrayLength);
new Array(element0, element1, ...,
elementN);

- Argumentos:
arrayLength
Número de elementos de la matriz. Empieza por
cero, si no indicamos lo contrario. Es opcional
elementN
Cada elemento que compone la matriz.

- array.length:
Se puede saber el número de elementos de una matriz
(array) con la propiedad length.

Ejemplo:

numeroEmpleados = Empleados.length

- Nulo (null):
Se utiliza para comprobar si una variable que hemos
definido tiene ya un valor asignado o no. También
puede utilizarse para representar valores que faltan
o que no tienen un tipo de datos definido.

- No definido (undefined):
Se devuelve el valor no definido al utilizar una
propiedad de objeto que no existe o una variable que
se ha declarado, pero a la que no se ha asignado un
valor.


1.2Apuntadores.

Un Apuntador es una variable que contiene una dirección de memoria, la cual corresponderá a un dato o a una variable que contiene el dato. Los apuntadores también deben de seguir las mismas reglas que se aplican a las demás variables, deben tener nombre únicos y deben de declararse antes de usarse.

Cada variable que se utiliza en una aplicación ocupa una o varias posiciones de memoria. Estas posiciones de memoria se accesan por medio de una dirección.

ejemplo de apuntadores

 

En la figura el texto Hello ésta guardado en memoria, comenzando en la dirección 1000. Cada carácter ocupa un espacio de dirección único en memoria. Los apuntadores proporcionan un método para conservar y llegar a estas direcciones en memoria. Los apuntadores facilitan el manejo de datos, debido a que conservan la dirección de otra variable o ubicación de datos.


¿Por qué son Importantes los Apuntadores?Los apuntadores dan flexibilidad a los programas en C++ y permiten que estos crezcan dinámicamente. Utilizando un apuntador hacia un bloque de memoria que se asigna al momento de ejecución, un programa puede ser más flexible que uno que asigna toda su memoria de una sola vez. También, un apuntador es más fácil de guardar que una estructura grande o un objeto de una clase. Debido a que un apuntador sólo guarda una dirección, puede fácilmente pasarse a una función. Uno de las desventajas que pueden presentar los apuntadores es que un apuntador sin control o no inicializado puede provocar fallas en el sistema, además de que su uso incorrecto puede generar fallas muy complejas de hallar.


1.3Cadenas, Arreglos y Registros.

Arreglos. Es una serie de datos del mismo tipo, también conocidos como vectores o rangos. Una arreglo esta constituido por varias posiciones de memoria de igual tamaño consecutivas que tienen el mismo tipo de variable y se accesan usando el mismo nombre seguido de un subíndice entre corchetes. La cantidad total de espacio que se usa por un arreglo depende de 2 cosas: El número de elementos en el arreglo y El tamaño del arreglo.

Ejemplo de Arreglo


 

¿Por qué Usar los Arreglos? Por que son uno de los factores esenciales de los programas de computadora. Permiten que se haga referencia a entradas individuales en una tabla de elementos de datos usando el mismo código y variando el índice del elemento.


 

La Declaración de un Arreglo es igual a como se haría con una variable, a excepción de que también se especifica la cantidad de elementos en el arreglo encerrado entre corchetes de la siguiente manera: tipo nombre_del_arreglo[tamaño];

Cuando se declara un arreglo, sus valores se pueden inicializar de la siguiente manera:

Int lista[9]= {0, 4, 78, 5, 32, 9, 77, 1, 23}

No trate de engañar al Compilador inicializando mas valores en el arreglo de los que puede, ya que este no lo obedecerá, sin embargo, si inicializa solo una parte del arreglo, las restantes posiciones se inicializan con 0´s.

Si desea imprimir un valor de un arreglo, la línea luce así: printf ("%d", lista[1]);

Una Característica importante de los arreglos en C es que no se pueden modificar los limites superior e inferior (y por tanto el rango) durante el programa. El limite inferior se fija siempre en 0 y el superior lo fija el programador, es decir:

Ejemplo de indices de arreglos

Se han visto hasta ahora, arreglos llamados Unidimensionales, pero existen también los llamados Bidimensionales, y se declaran así: tipo nombre_arreglo_bi[tamaño][tamaño]; Estos también son comúnmente conocidas como Matrices, El tamaño en la declaración de la matriz estipula Renglon-Columna y se representarían así:

Ejemplo de arreglo bidimensional

Estos también se pueden inicializar:

Int lista_nueva[2][2]={{14, 34},{23, 67}}; y se acceden de la misma manera que un unidimensional. Ejemplo printf ("%d", lista_nueva[1][0]); Y de esta forma se pueden construir arreglos Multidimensionales p/e:

int grande[3][4][7]; ó incluso int mas_grande [5][7][8][2][3][2]; pero se debe de tener cuidado al manejar estos arreglos por que son complejos de manipular a la larga. A pesar de ser Bidimensionales, en la memoria siguen siendo representados como espacios secuenciales lineales.

Cadenas de Caracteres.

Es uno de los tipos de datos más usados en cualquier lenguaje de programación, y en VB 2005 no podría faltar jeje.

Una cadena (o string en inglés) es un tipo de dato que permite almacenar caracteres o texto en general. Por ejemplo:

Dim hola as String = "Hola mundo"

Con eso se ha declarado una cadena que contiene la frase "hola mundo". Una cadena se declara entre comillas dobles. Todo lo que esté dentro de las comillas se considerará como el String:

Dim numerito as String = "123456789"

El ejemplo anterior no es un nùmero, sino una cadena, un string que tiene como contenido dígitos.

Operaciones que se pueden hacer con cadenas hay varias; por ejemplo concatener 2 cadenas:

Dim hola as String = "Hola mundo, "
Dim hola2 as String = "es un bonito día"
Dim total as String = hola & hola2

MsgBox(total)

Si lo ejecutas, se muestra un mensaje con el texto de la cadena, "Hola mundo, es un bonito día". Como viste, para concatenar usas el simbolo & (el ampersand).

Hay otras operaciones que ofrece el VB 2005; por ejemplo, puedes ver qué operaciones se pueden hacer si a una variable String le pones punto (es decir, por ejemplo, total. ). Justo al poner el punto verás una lista con todas las operaciones que puedes hacer.

La ayuda MSDN de Microsoft:

http://msdn.microsoft.com/es-es/library/…

Registros.

Es un conjunto de datos que se compone de campos. Por ejemplo, en una tabla se tienen los campos: TituloLibro, Año y Autor; un registro vendría a ser lo siguiente:

"Cien Años de Soledad",1967 , "Gabo"

Una imagen de registros. 

http://oreilly.com/catalog/9780596006815…


1.4Recursión.

Se dice que algo es recursivo si se define en función de sí mismo o a sí mismo. También se dice que nunca se debe incluir la misma palabra en la definición de ésta. El caso es que las definiciones recursivas aparecen con frecuencia en matemáticas, e incluso en la vida real. Un ejemplo: basta con apuntar una cámara al monitor que muestra la imagen que muestra esa cámara. El efecto es verdaderamente curioso, en especial cuando se mueve la cámara alrededor del monitor.
En matemáticas, tenemos múltiples definiciones recursivas:
- Números naturales:
  (1) 1 es número natural.
  (2) el siguiente número de un número natural es un número natural
- El factorial: n!, de un número natural (incluido el 0):
  (1) si n = 0 entonces: 0! = 1
  (2) si n > 0 entonces: n! = n · (n-1)!
Asimismo, puede definirse un programa en términos recursivos, como una serie de pasos básicos, o paso base (también conocido como condición de parada), y un paso recursivo, donde vuelve a llamarse al programa. En un computador, esta serie de pasos recursivos debe ser finita, terminando con un paso base. Es decir, a cada paso recursivo se reduce el número de pasos que hay que dar para terminar, llegando un momento en el que no se verifica la condición de paso a la recursividad. Ni el paso base ni el paso recursivo son necesariamente únicos.
Por otra parte, la recursividad también puede ser indirecta, si tenemos un procedimiento P que llama a otro Q y éste a su vez llama a P. También en estos casos debe haber una condición de parada.
Existen ciertas estructuras cuya definición es recursiva, tales como los árboles, y los algoritmos que utilizan árboles suelen ser en general recursivos.
Un ejemplo de programa recursivo en C, el factorial:
int factorial(int n)
{
  if (n == 0) return 1;
  return n * factorial(n-1);
}
 
 
1.5Principios de los TDA

El concepto de tipo de dato abstracto (TDA, Abstract Data Type), fue propuesto por primera vez hacia 1974 por John Guttag y otros, pero no fue hasta 1975 que por primera vez Liskov lo propuso para el lenguaje CLU.

El lenguaje Turbo Pascal fue determinante para la común aceptación de los TDAs con la introducción de las Units, si bien estas no cumplen con las características básicas de un Tipo de dato Abstracto como por ejemplo la encapsulación de los datos. El lenguaje Ada pudo implementar exitosamente los TDAs con sus Packages. Vale recordar que estos dos últimos lenguajes soportan formalmente la Programación modular.
Definición
Con mucha frecuencia se utilizan los términos TDA y Abstracción de Datos de manera equivalente, y esto es debido a la similitud e interdependencia de ambos. Sin embargo, es importante definir por separado los dos conceptos.
Como ya se mencionó, los Lenguajes de Programación Orientados a Objetos son lenguajes formados por diferentes métodos o funciones y que son llamados en el orden en que el programa lo requiere, o el usuario lo desea. La abstracción de datos consiste en ocultar las características de un objeto y obviarlas, de manera que solamente utilizamos el nombre del objeto en nuestro programa. Esto es similar a una situación de la vida cotidiana. Cuando yo digo la palabra “perro”, usted no necesita que yo le diga lo que hace el perro. Usted ya sabe la forma que tiene un perro y también sabe que los perros ladran. De manera que yo abstraigo todas las características de todos los perros en un solo término, al cual llamo “perro”. A esto se le llama ‘Abstracción’ y es un concepto muy útil en la programación, ya que un usuario no necesita mencionar todas las características y funciones de un objeto cada vez que éste se utiliza, sino que son declaradas por separado en el programa y simplemente se utiliza el término abstracto (“perro”) para mencionarlo.
En el ejemplo anterior, “perro” es un Tipo de Dato Abstracto y todo el proceso de definirlo, implementarlo y mencionarlo es a lo que llamamos Abstracción de Datos.



 

Hoy habia 13 visitantes (18 clics a subpáginas) ¡Aqui en esta página!
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis