Está en la página 1de 23

UNIVERSIDAD AUTNOMA DE ASUNCIN

Facultad de Ciencias y Tecnologas


Departamento de Informtica
CLASE 1
Introduccin a la Estructura de Datos
La Informacin que procesan las computadoras es un conjunto de datos sencillos y
estructurados.

El uso de Datos
Los datos son los nombres del mundo de la programacin: los objetos que son generados
por situaciones ocurridas en el mundo real, en la organizacin: los datos de un empleado,
las existencias de un producto, su precio de costo y de venta, el porcentaje de inters
anual de un prstamo, etc.
Estos datos son procesados por computadoras, generando informacin como resultado.
Los datos y la informacin resultante son elementos fundamentales de los Sistemas de
Informacin, pues sirven de soporte en la toma de decisiones.

Los Datos representan el total de datos en la organizacin. Estos recursos son una parte
activa de las operaciones y planeaciones de la organizacin, los cuales estn compuestos
por elementos individuales o tems de datos, los cuales pueden considerarse como
materia prima y son agregados y sumados en diversas formas tiles para generar
informacin. Las decisiones se toman en base a esta informacin; esperando que las
decisiones tomadas sean informadas a alguien. A los resultados de las decisiones se les
llama acciones, que son regresadas como datos, los cuales se pueden incorporar despus
a otro ciclo del proceso de toma de decisiones.

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica

Fuentes de Informacin
Cualquier elemento de datos puede participar en la generacin de partes mltiples de
la informacin. Estos datos deben ser flexibles para que puedan ser agregados y
sumados de tal manera que pueda producirse informacin til para apoyar decisiones
oportunamente. La accin de competidores, el comportamiento de clientes o
vendedores y la fuerza de los requerimientos legales, entran en un proceso de toma de
decisiones en una organizacin.

Tipos de decisiones
Como se mencion antes, los datos -como recurso- sirven de apoyo a la toma de
decisiones. Estas estn distribuidas en las siguientes clases:
Decisiones operacionales, que gobiernan diariamente las actividades de la organizacin.
Decisiones de control, que determinan la forma de organizar la ejecucin de su misin
asignada. Tambin se los conoce con el nombre de Decisiones Tcticas.
Decisiones de planeacin, que desarrollan y definen la misin de la organizacin.
Tambin llamadas Decisiones Estratgicas.

Datos y Decisiones
Los mismos elementos de datos pueden participar en la produccin de informacin para
apoyar a los tres niveles de toma de decisiones. Los datos se deben estructurar
correctamente para que sean accesibles y que sirvan como respuesta a varios tipos de
preguntas.

Manejo de Datos
Los datos son costosos. Deben ser manejados de tal manera que sean correctos y estn
disponibles para producir informacin.
Los aspectos del manejo de datos son los siguientes:

Medicin
Almacenamiento
Coleccin
Agregacin

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica

Transcripcin
Actualizacin
Validacin
Recuperacin
Organizacin
Proteccin

Objetivos del Manejo de Datos


El objetivo general del manejo de datos es hacer que stos sean adaptables y flexibles
para apoyar el proceso de toma de decisiones de una organizacin.
Este objetivo est dividido en otros ms especficos, que son los siguientes:

Representacin y almacenamiento: Los datos deben representarse y almacenarse


en cierta forma para ser accedidos con facilidad posteriormente.
Organizacin: Los datos deben organizarse de manera adecuada para ser
accedidos selectiva y eficientemente.
Procesamiento y presentacin: Los datos deben procesarse y presentarse de tal
manera que puedan apoyar eficientemente al usuario.
Proteccin y manejo: Los datos deben protegerse y manejarse para que no
pierdan su valor.

Estructuras de Datos y Organizacin de Archivos


Para cumplir con los objetivos del manejo de datos, disponemos de las Estructuras de
Datos. Tcnicamente, una estructura de datos es la definicin de la forma de almacenar
los datos -en ella contenidos- en la memoria de la computadora.
Pero las estructuras de datos no slo permiten almacenarlos de cierta forma, tambin
poseen operaciones especficas para los datos, lo cual facilita la manipulacin y
presentacin de stos.
La Organizacin de Archivos es otra herramienta que no provee de tcnicas para acceder
y organizar los datos almacenados en archivos especficos.
A lo largo del curso iremos estudiando diversas estructuras de datos y tcnicas de
organizacin de archivos que nos permitirn cumplir eficientemente con el objetivo
esencial de los datos: servir de herramienta para tomar decisiones.

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica
Clasificacin de las Estructuras de Datos y la Organizacin de Archivos

Estructura Primitiva: Es la estructura ms bsica, atmica (incapaz de dividirse en otras


estructuras ms simples). Normalmente forma parte de otras estructuras ms complejas.
En este grupo se encuentran el entero, el booleano y el carcter.
Estructura Simple: Esta estructura est formada por estructuras primitivas, ofreciendo
operaciones sencillas sobre los datos. En ella estn la cadena, el arreglo y el registro.
Estructuras de datos lineales y no-lineales: son estructuras de datos complejas que
incorporan tareas avanzadas. Sern estudiadas en unidades posteriores.
Organizacin de archivos: tcnicas de estructuracin de datos para facilitar el acceso y
recuperacin de la informacin contenida en archivos, que tambin estudiaremos en
unidades posteriores.

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica

Estructuras de Datos Primitivas


Enteros
Un entero es un miembro del siguiente conjunto de nmeros {-n,-2, -1, 0, 1, 2,...n, n+1}
y las operaciones posibles con l son suma, resta, multiplicacin y divisin.
Probablemente el tipo de dato ms familiar. Los enteros son adecuados para
aplicaciones que trabajan con datos numricos.
Formas de almacenamiento:
Los tipos enteros se almacenan internamente en entre 16 y 32 bits de memoria
aproximadamente.
Por ejemplo, si para almacenar un nmero entero disponemos de 4 bytes de memoria
tememos que:
4 Bytes = 4x8 = 32 bits
Con 32 bits se pueden representar 232=4294967296 valores:

Slo positivos (enteros sin signo): del 0 al 4294967295

Positivos y negativos (enteros con signo): del -2147483648 al 2147483647

Booleanos
Son una estructura de datos tambin llamada lgica cuyos valores posibles pueden ser
verdadero o falso, tambin representados por los dgitos (0 = Falso, 1= Verdadero).
Suelen ser utilizadas en estructura de seleccin, su valor determina el camino a seguir en
la ejecucin de una aplicacin.
Las operaciones posibles con estructuras lgicas son la negacin (NOT), conjuncin
(AND) y disyuncin (OR). Las tablas siguientes muestran: el resultado de aplicar cada uno
de estos operadores para cada valor booleano, y la precedencia de los operadores,
respectivamente.

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica

Valor del
primer
operando
verdadero
verdadero
falso
falso

Valor del
Operador
Operador
segundo
AND
OR
operando
verdadero
V
V
falso
F
V
verdadero
F
V
falso
F
F
*Aplicado al primer operando
Operador
NOT
*, /, AND
+, -, OR,

Operador
NOT*
F
F
V
V

Precedencia
Primero
Segundo
Tercero

Formas de almacenamiento:
Un bit de informacin 0 o 1, se almacenan en un byte (8 bits). Los bits de informacin se
pueden almacenar en forma individual o agrupada. Si se almacena en forma individual,
generalmente la ltima posicin corresponde al valor booleano 0 o 1, de este modo
ocurre un desperdicio de memoria de 7 bits. Si es almacenado en forma agrupada, se
requerir un proceso extra para determinar la posicin del valor booleano.

Caracteres
Un carcter es cualquier elemento de un conjunto de caracteres predefinidos o alfabeto.
Es decir, los caracteres son elementos que forman parte de un conjunto de smbolos, en
el cual se incluyen dgitos, caracteres del alfabeto y algunos caracteres especiales.
Ejemplo: (0,...9, A, B,...Z, , *,+, ).
Formas de almacenamiento:
ASCII (7 bits) 27 128 combinaciones o caracteres posibles. Una de las formas ms
utilizadas.
EBCDIC (8 Bits) 28 256 combinaciones o caracteres posibles.
UNICODE (16 bits) 216 pudiendo representar hasta 65.536 caracteres. Otra de las formas
ms usadas.

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica
Esquemas de propsito especial: representan caracteres por una cantidad variables de
bits. Ejemplo: Cdigo Huffman.
Representacin de datos numricos: los esquemas de codificacin almacenan un digito
con la numeracin para indicar un signo de ms o menos para representar un valor
negativo o positivo.
Representacin de decimal empacado: Representa datos numricos de manera ms
concisa al almacenar dos dgitos en 8 bits, en lugar de uno (en ABCDIC). Los 8 bits de ms
a la derecha no solo contienen el dgito de menor orden sino tambin el signo del
nmero.

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica

Tipos de datos primitivos en Java


En este apartado presentaremos los tipos de datos primitivos que existen en Java.
Aquellos lectores que estn familiarizados con C, o C++, no encontrarn prcticamente
nada nuevo en este apartado; los tipos son casi idnticos a los de estos lenguajes, salvo
que aqu todos los enteros son signed siempre.
En Java toda variable declarada ha de tener su tipo, y adems antes de poder emplearla
hemos de inicializarla a un valor, si no el compilador se quejar y no generar los archivos
.class. Esto no es necesario, por ejemplo, en C, siendo fuente de muchos errores el
emplear en operaciones variables que nos hemos olvidado de inicializar. A continuacin
pasamos a describir los distintos tipos de datos primitivos que existen en Java.
Enteros
Almacenan, como su propio nombre indica, nmeros enteros; esto es, nmeros sin parte
decimal. Cabe destacar, como ya se indic anteriormente, que por razones de
portabilidad todos los datos en Java tienen el mismo tamao y formato en todas las
plataformas. En Java hay cuatro tipos de enteros, como se muestra en la tabla 1. Esta
tabla tambin nos muestra el rango (valores mnimos y mximos) de cada tipo y el
espacio que ocupan en memoria, medido en bytes.
TABLA 1: Tipos de datos enteros en Java
Tipo

Tamao (bytes)

Rango

byte

-128 a 127

short

-32768 a 32767

int

-2147483648 a 2147483647

long

-9223372036854775808 a
9223372036854775807

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica
Para indicar que un literal entero es de tipo long debemos aadirle una L
al final: el nmero 23
es un int
y el nmero 23L
es un long
.
Reales
Almacenan nmeros reales, es decir, nmeros con parte decimal. Como se muestra en la
tabla 2, hay dos tipos diferentes de nmero real; se diferencian tanto en la precisin (el
nmero de cifras decimales que son capaces de representar) como en el rango de valores
que permiten representar.
TABLA 2: tipos de datos reales en Java
Tipo

Tamao (bytes)

float

Rango
- 3.40282347E+38 a
+ 3.40282347E+38

double

- 179769313486231570E+308 a +
179769313486231570E+308

Si queremos indicar que un literal real es de tipo float debemos aadir una F
despus de l: 2.3F , sino por defecto ser double . Esto suele ser una causa habitual de
dolor de cabeza para los programadores Java novatos que, cuando escriben una
sentencia del tipo float f = 2.3; no comprenden por qu el compilador da un error;
estamos asignando un nmero double , 2.3 , a una variable de tipo float . En esta
operacin puede perderse informacin y el compilador nos avisa.
Datos lgicos: boolean
Se trata de un tipo de dato que solo puede tomar dos valores: true y false
, que representan los valores lgicos cierto y falso, respectivamente. Por ejemplo, la
sentencia bolean b = true; inicia la variable b al valor lgico que representa una
condicin que se cumple, esto es, una condicin cierta. Es un tipo de dato bastante til a
la hora de realizar chequeos sobre condiciones. En C no hay un dato equivalente y para
suplir su ausencia muchas veces se emplean enteros con valor 1 si la variable lgica toma
el valor lgico cierto y 0 si la variable toma el valor lgico falso.

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica
Definicin de variables
Al igual que en C, y a diferencia de Fortran, Java requiere que se declaren los tipos de
todas las variables empleadas. La sintaxis de declaracin es la misma que C:
int i;
Sin embargo, y a diferencia que en C, se requiere inicializar todas las variables antes de
usarlas, si no el compilador genera un error y aborta la compilacin. Se puede declarar e
inicializar valor a una variable en una misma lnea:
int i = 0;
En Java, despus de cada lnea de cdigo siempre debe ir un ";". Declaracin e
inicializacin pueden hacerse en lneas diferentes:
int i ;
i = 0;
Es posible declarar e iniciar varias variables en una lnea:
int i=3, j,k=2;
Los caracteres aceptados en el nombre de una variable son los comprendidos entre A-Z
, a-z , _ , $ y cualquier carcter que sea una letra en algn idioma. En Java, al igual que
en todo lenguaje de programacin, hay una serie de palabras reservadas que no pueden
ser empleadas como nombres de variables ( if , . int , char , else , goto ...); alguna de
stas son empleadas en la sintaxis del lenguaje, otras, como goto no se emplean en la
actualidad pero se han reservado por motivos de compatibilidad; por si se decide
emplear en el futuro.

Operadores
En este apartado veremos los operadores aritmticos, relacionales y lgicos con los que
cuenta Java.

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

10

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica
Operadores aritmticos
Los operadores aritmticos de Java son + , - , * , /para suma, resta, producto y divisin. El
operador / representa la divisin de enteros si ambos operandos son enteros. El mdulo
de la divisin de dos enteros puede obtenerse mediante el operador %
. Por ejemplo, 7/4= 1; 7% 4=3

Adems, existen los operadores decremento e incremento: -- y ++


, respectivamente. La operacin que realizan son incrementar y decrementar en una
unidad a la variable a la que se aplican. Su accin es distinta segn se apliquen antes
(preincremento, ++a ) o despus (postincremento a++ ) de la variable. En el caso del
operador preincremento, si la variable sobre la que se aplica forma parte de una
expresin primero se incrementar el valor de la variable, y a continuacin se evaluar la
expresin. En el caso del operador postincremento, si la variable sobre la que se aplica
forma parte de una expresin, primero se evaluar la expresin y a continuacin se
incrementar el valor de la variable. Los operadores de predecremento y
postdecremento tienen un comportamiento anlogo. El listado 3 ilustra estos distintos
escenarios.
Operadores de preincremento y postdecremento.
// Ejemplo3.java
int i = 1;
System.out.println("i : " + i);
System.out.println("++i : " + ++i); // Preincremento, primero //incrementa y luego imprime por consola
System.out.println("i++ : " + i++); // Postincremento, primero imprime //“2” por consola y luego incrementa i.
System.out.println("i : " + i);//i por lo tanto vale 3
System.out.println("--i : " + --i); // Predecremento, primero //decrementa i y luego lo imprime por consola
System.out.println("i-- : " + i--); // Postdecremento, primero imprime //i por consola y luego de decrementa.
System.out.println( "i : " + i);//Ahora i vale 1

Operadores relacionales
Los operadores relacionales son operadores que comprueban si se cumple una
determinada relacin, de igualdad, desigualdad, mayor que... entre dos valores
numricos. El resultado de la aplicacin de cualquier operador relacional es siempre

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

11

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica
un boolean , es decir, la expresin que surge de comparar dos variables o literales
mediante un operador relacional slo puede tomar dos valores: true y false . En la tabla
3 se muestran los operadores relacionales disponibles en Java, y el listado 4 muestra su
uso.
En este listado se generan nmeros aleatorios empleando un objeto de tipo Random
; en el tercer artculo de esta serie veremos cmo crear objetos desde Java. Para
comprender el cdigo el lector lo nico que necesita saber es que el
comando rand.nextInt() genera un nmero aleatorio entero. El resultado de una posible
ejecucin de este programa se muestra en el listado 5.
Tabla 1: operadores relacionales
Operador

Operacin que realiza

==

Test de igualdad

!=

Test de desigualdad

<

Menor que

>

Mayor que

<=

Menor o igual que

>=

Mayor o igual que

Uso de operadores relacionales en Java.


//Ejemplo4.java
Random rand = new Random();
//El cdigo nextInt() del objeto Random creado genera un nmero aleatorio entero.
//El resultado es uno nmero un entero aleatorio entre 0 y 100.

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

12

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica
int i = rand.nextInt() % 100;
int j = rand.nextInt() % 100;
System.out.println("i = " + i);
System.out.println("j = " + j);
System.out.println("i > j es " + (i > j));
System.out.println("i < j es " + (i < j));
System.out.println("i >= j es " + (i >= j));
System.out.println("i <= j es " + (i <= j));
System.out.println("i == j es " + (i == j));
System.out.println("i != j es " + (i != j));
Posible resultado de la ejecucin del listado 4
i = 85
j=4
i > j es true
i < j es false
i >= j es true
i <= j es false
i == j es false
i != j es true

Operadores lgicos
Estos operadores se aplican sobre valores lgicos, es decir, sobre datos de tipo boolean .
En Java hay tres operadores lgicos: la negacin, el AND (Y) lgico y el OR (O) lgico.
Estos operadores se muestran en la tabla 4. El cdigo del listado 6 imprime la tabla de
verdad de operadores lgicos AND y OR, y muestra el efecto del operador de negacin.

Tabla 4: Operadores lgicos


Operador

Operacin que realiza

Not lgico

&&

And lgico

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

13

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica
||

Or lgico

Este cdigo muestra las tablas de verdad de los operadores lgico AND y OR
boolean variableLogica = false, variableLogica2;
variableLogica2 = !variableLogica;
System.out.println("variableLogica: "+ variableLogica + ", variableLogica2: "+variableL
ogica2);
System.out.println("variableLogica&&variableLogica2: " + (variableLogica&&variable
Logica2));
System.out.println("variableLogica||variableLogica2: " + (variableLogica||variableLogi
ca2));
System.out.println("\n\nTabla de verdad del operador &&:\n");
System.out.println("false && false: " + (false && false));
System.out.println("false && true: " + (false && true));
System.out.println("true && false: " + (true && false));
System.out.println("true && true: " + (true && true));

System.out.println("\n\nTabla de verdad del operador ||:\n");


System.out.println("false || false: "+ (false || false));
System.out.println("false || true: " + (false || true));
System.out.println("true || false: " + (true || false));
System.out.println("true || true: " + (true || true));

Estructuras de Datos Simples


Cadenas
Son una estructura construida a partir de otra estructura simple como los caracteres. Las
cadenas son secuencias de caracteres, y se utilizan comnmente para representar
palabras y frases.

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

14

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica
Operaciones con cadenas
Longitud, Lenght, Len
Operandos: una cadena
Resultados: un entero
Sintaxis: Longitud(cadena) = un entero
Ejemplo: Cadena1 = Hola Mundo
Longitud(Cadena1) = 10 Es la cantidad de caracteres de la cadena
Concatenacin, Concat
Operandos: dos o ms cadenas, depende el lenguaje
Resultados: una cadena
Sintaxis: Concatenar(cadena1, cadena2, .) = una cadena
Ejemplo: Cadena1 = Hola , Cadena2 = Mundo
Contat(Cadena1, Cadena2) = Hola Mundo
Subcadena, SubStr
Operandos: una cadena, dos enteros
Resultados: una cadena
Sintaxis: Subcadena(cadena1, posinicio, longitud) = una cadena
Ejemplo: Cadena1 = Hola Mundo Substr(Cadena1, 6, 5) = Mundo
Insercin, Insert
Operandos: dos cadenas, un entero
Resultados: una cadena
Sintaxis: Insertar(cadena1, cadena2, posinicio) = una cadena

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

15

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica
Ejemplo: Cadena1 = Hola Cadena2 = Mundo Insert(Cadena1, Cadena2, 1) =
HolaMundo
Supresin, Delete
Operandos: una cadena, dos enteros
Resultados: una cadena
Sintaxis: Suprimir(cadena, posinicio, longitud) = una cadena
Ejemplo: Cadena1 = Hola Mundo Suprimir(Cadena1, 6, 5) = Hola
Bsqueda, Posicin, Instr
Operandos: una cadena, un carcter
Resultados: un entero
Sintaxis: Posicion(cadena, carcter) = un entero
Ejemplo: Cadena1 = Hola Mundo! Posicion(Cadena1, !) = 11 Es la posicin del
carcter buscado dentro de la cadena.
Formas de almacenamiento:
Representacin de cadenas en espacio contiguo con apuntadores.
Representacin de cadenas empacadas.
Representacin de cadenas desempacadas.
La seleccin de la forma adecuada de almacenamiento se basa en los siguientes criterios:

Como ser manipulada la variable


El rango de valores que tendr la variable
Las caractersticas de la computadora y de la memoria donde se procesar y
almacenar la variable.

Cadenas de Caracteres en Java


En Java no hay un tipo predefinido para cadenas de caracteres, en su lugar hay una clase,

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

16

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica
String, que es la que soporta las distintas operaciones con cadenas de caracteres. La
definicin de un String es:
String e ; //no inicializado
String e =; //cadena vaca
String e = Hola; //inicializacin y asignacin juntas.
A continuacin veremos algunas operaciones bsicas soportadas por la clase String:
Concatenacin
La concatenacin en Java es increblemente sencilla: se realiza con el operador +, es decir
sumando cadenas de caracteres obtenemos la concatenacin de estas. Lo ilustraremos
con un ejemplo:
String saludo = hola;
String nombre = Pepe;
String saluda_pepe = ;
saluda_pepe = saludo + nombre;// saluda_pepe toma el valor holaPepe
La sencillez de Java en el manejo de cadenas de caracteres llega incluso ms all; si una
cadena la intentamos encadenar con otro tipo de variable automticamente se convierte
la otra variable a String, de tal modo que es perfectamente correcto:
String saludo = hola;
int n = 5;
saludo = saludo + + n;// saludo toma el valor hola 5
Subcadenas
En la clase String hay un mtodo que permite la extraccin de una subcadena de
caracteres de otra.
Su sintaxis es:
Nombre_String.substring((int)posicin_inicial,(int)posicin_f
inal); Donde posicin_inicial y posicin_final son respectivamente la posicin del primer
carcter que se desea extraer y del primer carcter que ya no se desea extraer.

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

17

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica

String saludo = hola;


String subsaludo = ;
Subsaludo = saludo.substring(0,2);// subsaludo toma el valor ho
Puede extraerse un char de una cadena, para ello se emplea el mtodo charAt(posicin),
siendo posicin la posicin del carcter que se desea extraer.
Comparacin de cadenas
Se empleo otro mtodo de String: equals. Su sintaxis es:
cadena1.equals(cadena2);
Devuelve true si son iguales y false si son distintos.
El siguiente ejemplo permitir ilustrar estas operaciones con Strings:
public class Ejemplo5 {
public static void main(String[] args) {
String saludo = "Hola";
String saludo2 ="hola";
int n = 5;
//Imprime por consola la subcadena formada por los caracteres
//comprendidos entre el carcter 0 de saludo y hasta el
//carcter 2, sin incluir el ltimo
prt(saludo.substring(0,2));
//Concatena saludo con un espacio en blanco y con el valor de
//la variable n
prt(saludo +" " + n);
//Imprime el resultado del test de igualdad entre saludo y
//saludo2. Son distintos, en Java se distingue entre
//maysculas y minsculas.
prt("saludo == saludo2 "+ saludo.equals(saludo2));
}

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

18

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica
static void prt(String s) {
System.out.println(s);
}
}
MBITO DE LAS VARIABLES
En este apartado vamos a tratar de ver cul es el mbito de validez de una variable. ste
en Java viene dado por los corchetes: {}; una vez definida una variable en un cdigo
dejar de existir cuando se acabe el bloque de cdigo en el que se defini. Los bloques de
cdigo empiezan con { y acaban en }, por lo que la variable dejar de existir cuando se
cierre el corchete que est justo antes que ella en el cdigo. Vemoslo con un ejemplo:
{
int x = 12;
/* solo x disponible */
{
int q = 96;
/* x y q disponible */
}
/* solo x disponible */
/* q fuera de mbito */
}
Por otro lado si intentamos hacer lo siguiente:
{
int x = 12;
{
int x = 96; /* ilegal en Java, no en C++ */
}
}
El compilador se nos quejar diciendo que la variable x ya ha sido definida. En C++ esto s
es posible, pero los diseadores de Java decidieron no permitir este tipo de
construcciones a para lograr ms claridad en el cdigo.

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

19

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica
Abstraccin de Datos
Simplificacin de un objeto o proceso de la realidad en la cual solamente se consideran
los aspectos ms significativos o relevantes.

Abstraccin en la programacin
El concepto de abstraccin es utilizado en la programacin para dar sencillez de
expresin a los algoritmos. Los mecanismos de abstraccin en la programacin pueden
aplicarse en dos niveles, abstraccin de los datos y abstracciones funcionales.

Tipos de datos Abstractos (TAD)


Un Tipo de dato abstracto es una estructura con un nmero de operaciones que afecta a
las estructura. Un TAD es un tipo definido por el usuario que:

Tiene un conjunto de valores y un conjunto de operaciones


Cumple con el principio de abstraccin y ocultacin de la informacin y se puede
manejar sin conocer la representacin interna.
Los lenguajes de programacin modernos permiten implementar con facilidad los
TAD mediante clases que permiten la herencia (reutilizacin de las clases con las
mismas funcionalidades o con adiciones).

Programacin Orientada por Objetos (POO)


Es un paradigma de programacin (conjunto de teoras, estndar y mtodos que
representan un medio organizado de conocimiento), donde las entidades centrales son
los objetos. Un objeto es sencillamente un tipo abstracto de datos al que se aaden
innovaciones en cuanto a comparticin de cdigo y reutilizacin.
Los objetos se comunican entre s a travs del paso de mensajes.
Los mtodos son las rutinas asociadas a un tipo de objetos.
El concepto de herencia permite la reutilizacin de los objetos, lo que evita reescribir un
mismo cdigo.
El polimorfismo permite la derivacin y/o extensin de una clase existente. Lo que
facilita la reutilizacin de cdigo, adicionado solamente las nuevas funcionalidades.

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

20

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica
Constructores: es un mtodo que se ejecuta cada vez que se crea un objeto, el propsito
de este procedimiento es el de inicializar los datos del objeto.
Ejercicio ejemplo: Construya un TAD Booleano con los constructores True y False y las
operaciones Not, And, Or.
Solucin
TAD Boolean (VALORES: True, False; OPERACIONES: Not, And, Or)
Sin taxis
Not(Boolean)
And(Boolean, Boolean)
Or(Boolean, Boolean)
Semntica
Not(True) =>False
Not(False) =>True
And(True, True)=> True
And(True, False)=> False
And(False, True)=> False
And(False, False)=> False
Or(True, True)=> True
Or(True, False)=> True
Or(False, True)=> True
Or(False, False)=> False
Ejercicio: Construya un TAD Entero con los constructores Cero, Sucesor y antecesor y las
operaciones Suma, Diferencia y Producto.
TAD Entero (VALORES: Nmeros enteros; OPERACIONES: Sucesor, Antecesor, Suma,
Diferencia, Producto)
Sintaxis
Sucesor(Entero)
Antecesor(Entero)

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

21

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica
Suma(Entero, Entero)
Diferencia(Entero, Entero)
Producto (Entero, Entero)
Semntica: para todo m, n de tipo entero
Sucesor(n) => m
Antecesor(m) => n
Suma(m,n) = > m+n
Diferencia(n,m) = > n - m
Suma(m,n) = > m*n

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

22

UNIVERSIDAD AUTNOMA DE ASUNCIN


Facultad de Ciencias y Tecnologas
Departamento de Informtica
Fuentes bibliografa y webliografa
LOOMIS, Mary. Estructura de Datos y Organizacin de Archivos, 2da. Edicin. 1991.
Mxico. Editorial Prentice-Hall Hispanoamericana S.A.
JOYANES AGUILAR, Luis. ZAHONERO MARTINEZ, Ignacio. FERNANDEZ AZUELA,
Matilde, SANCHEZ GARCIA, Lucas. Estructura de Datos Libro de Problemas. Madrid,
Espaa. Editorial McGraw Hill.
DEITEL, Harvey. DEITEL, Paul. Como Programar en Java, 5ta. Edicin. 2004. Mxico.
Editorial Pearson Educacin de Mxico S.A.

Material elaborado por la Prof. Paola Pea: Estructuras de Datos Clase 1: Estructuras Primitivas y Cadenas

23