Clase 1 Introducción a Las Estructuras de Datos

download Clase 1 Introducción a Las Estructuras de Datos

of 23

description

introduccion a la estructura de datos

Transcript of Clase 1 Introducción a Las Estructuras de Datos

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    1

    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.

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    2

    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

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    3

    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.

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    4

    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.

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    5

    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.

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    6

    Valor del primer operando

    Valor del segundo operando

    Operador AND

    Operador OR

    Operador NOT*

    verdadero verdadero V V F verdadero falso F V F

    falso verdadero F V V falso falso F F V

    *Aplicado al primer operando 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.

    Operador Precedencia

    NOT Primero *, /, AND Segundo +, -, OR, Tercero

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    7

    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.

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    8

    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 1 -128 a 127

    short 2 -32768 a 32767

    int 4 -2147483648 a 2147483647

    long 8 -9223372036854775808 a

    9223372036854775807

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    9

    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) Rango

    float 4 - 3.40282347E+38 a

    + 3.40282347E+38

    double 8 - 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.

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    10

    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.

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    11

    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); // Pre-incremento, primero //incrementa y luego imprime por consola System.out.println("i++ : " + i++); // Post-incremento, 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); // Pre-decremento, primero //decrementa i y luego lo imprime por consola System.out.println("i-- : " + i--); // Post-decremento, 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

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    12

    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

    = 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.

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    13

    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

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    14

    || 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: "+variableLogica2); System.out.println("variableLogica&&variableLogica2: " + (variableLogica&&variableLogica2)); System.out.println("variableLogica||variableLogica2: " + (variableLogica||variableLogica2)); 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.

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    15

    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

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    16

    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,

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    17

    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.

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    18

    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)); }

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    19

    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.

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    20

    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.

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    21

    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)

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    22

    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

  • UNIVERSIDAD AUTNOMA DE ASUNCIN Facultad de Ciencias y Tecnologas

    Departamento de Informtica

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

    23

    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.