deda-u1-a2-jarh_2.docx

Upload: armandoh10

Post on 02-Jun-2018

283 views

Category:

Documents


2 download

TRANSCRIPT

  • 8/11/2019 DEDA-U1-A2-JARH_2.docx

    1/16

    DEFINICION DE ALGORITMO:

    Define algoritmo como un conjunto ordenado y finito de operaciones que permitehallar la solucin de un problema. Mtodo y notacin en las distintas frmulas del

    clculo. El algoritmo constituye un mtodo para resolver un problema medianteuna secuencia de pasos a seguir. Dicha secuencia puede ser expresada en formade diagrama de flujo con el fin de seguirlo de una forma ms sencilla.

    De acuerdo con el concepto anterior, el algoritmo podra estar incluido en ladefinicin de programa de ordenador de la Ley de Propiedad Intelectual (TRLPI),al referirse a ste como toda secuencia de instrucciones o indicaciones destinadasa ser utilizadas, directa o indirectamente, en un sistema informtico para realizaruna funcin o una tarea o para obtener un resultado determinado, cualquiera quefuere su forma de expresin y fijacin.

    Un algoritmo es un mtodo para resolver un problema. Aunque la popularizacindel trmino ha Ilegado con el advenimiento de la era informtica, algoritmoproviene de Mohammed al-KhoWirizmi, matemtico persa que vivi durante elsiglo IX y alcanz gran reputacin por el enunciado de las reglas paso a paso parasumar, restar, multiplicar y dividir nmeros decimales; la traduccin al latn delapellido en la palabra algorismus deriv posteriormente en algoritmo. Euclides, elgran matemtico griego(del siglo IV a.c.) que invent un mtodo para encontrar elmximo comn divisor de dos nmeros, seconsidera con Al-Khowirizmi el otrogran padre de la algoritmia (ciencia que trata de los algoritmos)

    Los pasos para la resolucin de un problema son:

    Diseo del algoritmo que describe la secuencia ordenada de pasos -sinambigedades- que conducen a la solucin de un problema dado. (Andisis delproblema y desarrollo del algoritmo.)

    Expresar el algoritmo como un programa en un lenguaje de programacinadecuado. (Fase decodificacin.)

    Ejecucin y validacin del programa por la computadora

    En cada problema el algoritmo se puede expresar en un lenguaje diferente deprogramacin y ejecutarse en una computadora distinta; sin embargo, el algoritmoser siempre el mismo

    Las caractersticas fundamentales que debe cumplir todo algoritmo son:

  • 8/11/2019 DEDA-U1-A2-JARH_2.docx

    2/16

    Un algoritmo debe ser preciso e indicar el orden de realizacin de cada paso.

    Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debeobtener el mismo

    Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algnmomento; o sea, debe tener un nmero finito de pasos

    La definicin de un algoritmo debe describir tres partes: Entrada, Proceso y Salida.En el algoritmo de receta de cocina citado anteriormente se tendr:

    Entrada: ingredientes y utensilios empleados.

    Proceso: elaboracin de la receta en la cocina.

    Salida: terminacin del plato (por ejemplo, cordero).

    DEFINICION ESTRUCTURA DE DATOS:

    En programacin, una estructura de datos es una forma de organizar un conjuntode datos elementales con el objetivo de facilitar su manipulacin. Un datoelemental es la mnima informacin que se tiene en un sistema.

    Una estructura de datos define la organizacin e interrelacin de stos y unconjunto de operaciones que se pueden realizar sobre ellos. Las operacionesbsicas son:

    Alta, adicionar un nuevo valor a la estructura.

    Baja, borrar un valor de la estructura.

    Bsqueda, encontrar un determinado valor en la estructura para realizar unaoperacin con este valor, en forma SECUENCIAL o BINARIO (siempre y cuandolos datos estn ordenados)...

    Otras operaciones que se pueden realizar son:

    Ordenamiento, de los elementos pertenecientes a la estructura.

    Apareo, dadas dos estructuras originar una nueva ordenada y que contenga a lasapareadas.

    Cada estructura ofrece ventajas y desventajas en relacin a la simplicidad yeficiencia para la realizacin de cada operacin. De esta forma, la eleccin de la

  • 8/11/2019 DEDA-U1-A2-JARH_2.docx

    3/16

    estructura de datos apropiada para cada problema depende de factores como lafrecuencia y el orden en que se realiza cada operacin sobre los datos.

    Tipos de datos elementales:

    BinariosBitByteNumricosEnteroRealComa fijaComa flotante

    Alfanumricos

    CarcterCadenaBooleanos

    Datos estructurados:

    Estructura de Datos es una coleccin de datos que se caracterizan por suorganizacin y las operaciones que se definen en ella. Los datos de tipo estndarpueden ser organizados en diferentes estructuras de datos: estticas y dinmicas.

    Estructura de Datos estticas:

    Son aquellas en las que el espacio ocupado en memoria se define en tiempo decompilacin y no puede ser modificado durante la ejecucin del programa.Corresponden a este tipo los arrays y registros

    Estructuras de Datos Dinmicas:Son aquellas en las que el espacio ocupado en memoria puede ser modificado entiempo de ejecucin. Corresponden a este tipo las listas, rboles y grafos. Estasestructuras no son soportadas en todos los lenguajes. La eleccin de la estructurade datos idnea depender de la naturaleza del problema a resolver y, en menormedida, del lenguaje. Las estructuras de datos tienen en comn que unidentificador, nombre, puede representar a mltiples datos individuales.

  • 8/11/2019 DEDA-U1-A2-JARH_2.docx

    4/16

    Arrays:

    Un arreglo (array) es una coleccin de datos del mismo tipo, que se almacenan enposiciones consecutivas de memoria y reciben un nombre comn. Para referirse aun determinado elemento de un array se deber utilizar un ndice, que especifiquesu posicin relativa en el array. Un arreglo es una coleccin finita, homognea yordenada de elementos. Finita: Todo arreglo tiene un lmite; es decir, debedeterminarse cul ser el nmero mximo de elementos que podrn formar partedel arreglo. Homognea: Todos los elementos del arreglo deben ser del mismotipo. Ordenada: Se puede determinar cul es el primer elemento, el segundo, eltercero,.... y el n-simo element.

    Las estructuras de datos y los algoritmos repercuten de forma directa en elalmacenamiento y tratamiento de la informacin, tanto desde el punto de vistafsico cmo funcional. Por tanto, el amplsimo mbito de la programacin seconstruye sbrelos cimientos de dichos algoritmos y estructuras de datos, de ahla sobresaliente importancia de su conocimiento previo.

    Definicin de variables de estructuras

    AI igual que a los tipos de datos enumerados, a una estructura se accedeutilizando una variable o variables que se deben definir despus de la declaracinde la estructura. Del mismo modo que sucede en otras situaciones, en C existen

    dos conceptos similares a considerar, declaracin y dejnicin. La diferenciatcnica es la siguiente, una declaracin especifica simplemente el nombre y elformato de la estructura de datos, pero no reserva almacenamiento en memoria; ladeclaracin especifica un nuevo tipo de dato: struct . Porconsiguiente, cada definicin de variable para una estructura dada crea un rea enmemoria en donde los datos se almacenan de acuerdo al formato estructuradodeclarado.

    Las variables de estructuras se pueden definir de dos formas: 1) listndolasinmediatamente despus de la llave de cierre de la declaracin de la estructura, o

    2) listando el tipo de la estructura creado seguida por las variablescorrespondientes en cualquier lugar del programa antes de utilizarlas. La definiciny declaracin de la estructura colecciones-CD se puede hacer por cualquiera delos dos mtodos

  • 8/11/2019 DEDA-U1-A2-JARH_2.docx

    5/16

    Ejemplo de estructuras anidadas

    Se desea disear una estructura que contenga informacin de operacionesfinancieras. Esta estructura debe constar de un nmero de cuenta, una cantidad

    de dinero, el tipo de operacin (depsito=O, retirada de fondos=l, puesta al da=2o estado de la cuenta=3) y la fecha y hora en que la operacin se ha realizado. Afin de realizar el acceso correcto a los campos da, mes y ao, as como el tiempo(la hora y minutos) en que se efectu la operacin, se define una estructura fechay una estructura tiempo. La estructura registro-operacin tiene como miembrosuna variable (un campo) de tipo fecha, otra variable del tipo tiempo y otrasvariables para representar los otros campos. La representacin del tipo deoperacin se hace con una variable entera, aunque el tipo apropiado es un tipoenumerado (descrito en siguientes apartados). A continuacin se declara estostipos, se escribe una funcin que lee una operacin financiera y devuelve laoperacin leda. La fecha y hora es captada del sistema.

    #include

    #include

    struct registro-operation entrada();

    struct fecha

    {

    I;

    struct tiempo

    {

    1;

    struct registro-operacion

    unsigned int mes, dia, anyo;

    unsigned int horas, minutos;

    I

    long numero-cuenta;

    float cantidad;

  • 8/11/2019 DEDA-U1-A2-JARH_2.docx

    6/16

    int tipo-operacion;

    struct fecha f;

    struct tiempo t;1;

    int main()

    {

    struct registro-operacion w; Estructuras y uniones 305

    w = entrada() ;

    printf ("\n\n OperaciCn realizada\n ") ;print f ( 'I \ t % 1 d\ n" , w . numero-cuen t a ) ;

    printf("\t%d-%d-%d\n",w.f.dia,w.f.mes,w.f.anyo) ;

    printf ( "\ t%d: %d\n", w. t. horas, w. t. minutos ) ;

    return O;

    1

    struct registro-operacion entrada0

    I

    struct time t;

    struct date d;

    struct registro-operacion una;

    printf ("\nNmero de cuenta: ") ;

    scanf ("%ld", &una.numero-cuenta) ;

    puts ("\n\tTipo de operacin") ;

    puts("Deposito(0)") ;

    puts ("Retirada de fondos (1) ") ;

  • 8/11/2019 DEDA-U1-A2-JARH_2.docx

    7/16

  • 8/11/2019 DEDA-U1-A2-JARH_2.docx

    8/16

    CLASIFICACIN DE ESTRUCTURAS DE DATOS

    ESTRUCTURAS LGICAS DE DATOSLas estructuras de datos son muy importantes en sistemas computacionales. Enun programa, cada variable pertenece a alguna estructura de datos explcita oimplcitamente definida, la cual determina el conjunto de operaciones vlidas paraella. Cada estructura de datos lgica puede tener varias representaciones fsicasdiferentes para sus almacenamientos posibles.

    ESTRUCTURAS PRIMITIVAS Y SIMPLES (TIPOS DE DATOS PRIMITIVOS)

    Las estructura de datos primitivas, son las que no estn compuestas por otras

    estructuras de datos. Ejemplo: los tipos de datos: enteros, booleanos y caracteres.

    Otras estructuras de datos se pueden construir de una o ms primitivas cmo sonlas estructuras de datos simples que se construyen a partir de estructurasprimitivas y son: cadenas, arreglos y registros. A estas estructuras de datos larespaldan muchos lenguajes de programacin.

    Tipos de datos simples: Es uno de los conceptos fundamentales de cualquierlenguaje de programacin. Estos definen los mtodos de almacenamiento(cadenas, arreglos y registros) disponibles para representar informacin, junto conla manera en que dicha informacin ha de ser interpretada.

    Para crear una variable (de un tipo simple primivito) en memoria debe declararseindicando su tipo de variable y su identificador que la identificar de forma nica.

    TIPOS DE DATOS PRIMITIVAS

    En todos los lenguajes de programacin se manejan datos primitivas. Los tipos dedatos primitivas son los siguientes:

    *ENTEROS

    Es un miembro del siguiente conjunto de nmeros:

    N+1, -n,-2,-1,0,1,2,N+1

    Las operaciones fundamentales sobre enteros, son muy conocidas: suma, resta,multiplicacin, divisin, exponenciacin y otras. Todas estas operaciones trabajansobre un par de nmeros, considerados como operadores binarios. Un operador

  • 8/11/2019 DEDA-U1-A2-JARH_2.docx

    9/16

    unario tiene slo un operando. La negacin, que cambia el signo de un nmero, esun ejemplo de un operador unario.

    *BOOLEANO

    Tambin se le llama lgico. Es un elemento que puede tener uno de dos valores:verdadero o falso. El conjunto de operaciones definidas sobre este tipo deestructuras de datos es diferente del conjunto de operaciones para los enteros.Los tres operadores bolanos bsicos son not, and y or (negacin, conjuncin ydisyuncin, respectivamente). La siguiente tabla muestra el resultado de aplicarcada uno de estos operadores para cada valor booleano.

    Valor del primer operando Valor del segundo operando Operador

    and or not

    verdadero verdadero V V F

    verdadero falso F V F

    falso verdadero F V V

    falso falso F F V

    AND, el resultado es verdadero si los dos son verdadero. Si uno es falso elresultado es falso.

    OR, el resultado es verdadero si uno de los dos son verdaderos, si los dos sonfalsos el resultado es falso.

    NOT, el resultado es verdadero cuando el primero es falso y el segundoverdadero. Si el primero es verdadero y el segundo es falso el resultado es falso.

    *CARACTERES

    El carcter es una tercera primitiva, es un elemento tomado de un conjunto desmbolos. Ejemplo {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E.,X,Y,Z,,$%?,..*,+,/,,-}

    Se incluyen dgitos, caracteres del alfabeto y caracteres especiales.

    *CADENA

    Es la que se construye de datos primitivas:

  • 8/11/2019 DEDA-U1-A2-JARH_2.docx

    10/16

    Es una secuencia finita de smbolos tomados de un conjunto de caracteres. Elconjunto de caracteres que se emplea para generar cadenas se llama alfabeto. Elconjunto de cadenas que se puede derivar del alfabeto A={C,D,1} incluye lossiguientes: CD1, CD, DDC, 1D111, y as sucesivamente, incluyendo la cadena

    nula o vaca. Por lo general, el inicio y final de una cadena lo delimitamos concomillas.

    Las cadenas son un tipo importante de dato y se usan ampliamente. En primerainstancia, las cadenas son el medio bsico para escribir programas y transmitirlosa la computadora. Segundo, son el medio principal de intercambio de informacincon los usuarios. Tercero, las cadenas se usan para almacenas informacin enarchivos. Cuarto se usan en lenguajes de programacin para nombres devariables, etiquetas y procedimientos. Y en un contexto ms general, son una vade comunicacin entre los seres humanos.

    Definamos de manera ms formal a S como cadena:

    S:=a,b,c

    Cada cadena tiene un atributo llamado longitud, el cual es el nmero de caracteresen la cadena.

    ESTRUCTURAS DE ARREGLO

    Los arreglos son bloques bsicos para la construccin de estructuras de datos

    ms complejas. Casi todas las estructuras complejas se pueden representarindirectamente mediante arreglos.

    Un arreglo es un conjunto finito ordenado de elementos homogneos, porquetodos son del mismo tipo de dato. Un arreglo puede ser un conjunto de tipocadena en tanto que otro puede ser de tipo entero. A los arreglo se les llama por logeneral tabla.

    Arreglo Estructura de datos en la que a cada elemento se le asigna un ndicenico. Su representacin matemtica es una matriz. Un array (ms correctamentedenominado vector), es un conjunto de variables o registros del mismo tipo quepuede estar almacenados en memoria principal o en memoria auxiliar. Los arrayde 1 dimensin se denominan vectores, los de 2 o ms dimensiones sedenominan matrices. La forma de acceder a los elementos del array es directo, esdecir que el elemento deseado es obtenido a partir de su ndice.

    Arreglos unidimensionales

  • 8/11/2019 DEDA-U1-A2-JARH_2.docx

    11/16

    Son conocidos como vector. Un arreglo unidimensional llamado VICTOR, el cualconsiste de N elementos se puede representar

    VICTOR(1) VICTOR (2) VICTOR(I) .. VICTOR (N)

    Subndices

    Los subndices o ndices de un elemento designan su posicin en el arreglo; en lanotacin que se emplea aqu, un elemento en particular se define con el nombredel arreglo, seguido por el subndice del elemento entre parntesis, es decir,VICTOR(I). Otras posibilidades para designar al elemento del arreglo VICTOR consubndice son: VICTO[I], VICTORI, VICTORI.

    Arreglo multidimensional

    Un arreglo de dos dimensiones, es un arreglo en el cual cada elemento es otroarreglo. Un arreglo llamado B, el cual consiste de M elementos, cada uno de loscuales es un arreglo de N elementos se puede representar como una tabla de Mpor N, como se muestra a continuacin:

    Ejemplo de un arreglo M por N

    1 2 .. .. .. N

    2

    ..M

    Es necesario especificar dos subndices para identificar un elemento individual enun arreglo bidimensional. Por convencin, el primer subndice hace referencia alrengln.

    Elemento B(I,J) en un arreglo

    1 2 .. J .. N

    2

    I B(I,J)

  • 8/11/2019 DEDA-U1-A2-JARH_2.docx

    12/16

    M

    Un arreglo se puede definir como un arreglo tridimensional, cuadrimensional, N-dimensional. Los conceptos de subndices, rango y nmero de elementos se

    pueden extender directamente de una y dos dimensiones a arreglos de ordenmayor. En general un arreglo N-dimensional requiere que los valores de los Nsubndices se especifiquen para identificar un elemento en particular del arreglo.

    En programacin, un vector, array, arreglo o alineacin es un conjunto oagrupacin de variables del mismo tipo cuyo acceso se realiza por ndices. Losvectores o arrays de dos o ms dimensiones se denominan matrices, que puedentener tantas dimensiones como se desee; aunque lo correcto es llamarlo arreglo

    (de memoria) ya que una variable de ms de dos dimensiones, no cumple con lascaractersticas matemticas de una matriz numrica.

    ESTRUCTURAS DE REGISTRO

    Los registros son los componentes bsicos de los archivos y de las bases dedatos.

    Un registro es una coleccin finita y ordenada de elementos, posiblementeheterogneos, que se tratan como una unidad. Un registro se distingue de unarreglo en el hecho de que todos los elementos de un arreglo deben tener la

    misma estructura, a diferencia de los elementos componentes del registro quepueden tener diferentes estructuras de datos. Un registro se menciona algunasveces slo como una estructura. Los elementos de un registro son comnmentellamados campos. Un campo es un rea especfica de un registro utilizada parauna clase particular de informacin.

    Formacin de registro

    Una unidad de informacin deriva, por lo menos, algo de su significado; a partir desus relaciones con otra informacin. La estructura de datos registro permite que unconjunto de elementos de informacin, lgicamente relacionados, se puedaagrupar explcitamente. Por ejemplo, el campo de tipo cadena llamado TITULO-DE-TAREA, con valor ANALISTA, no proporciona mucha informacin por smismo. Sin embargo, se proporciona ms informacin cuando el campo TITULO-DE-TAREA se acopla con otros campos lgicamente relacionados, como NUM-EMPLEADO, de tipo cadena con valor 123456789 y TARIFA-PAGO, de tipodecimal con valor 15.93. Estos elementos heterogneos no pueden constituir un

  • 8/11/2019 DEDA-U1-A2-JARH_2.docx

    13/16

    arreglo porque son diferentes estructuras de datos. Sin embargo, se puedenagrupar para constituir un registro de informacin del empleado como se muestraa continuacin:

    TITULO-DE-TAREA NM-EMPLEADO TARIFA-PAGO

    ANALISTA 123456789 15.93

    Llaves de identificacin

    Un registro, por lo general, contiene un campo que lo identifica. Un empleado seidentifica por ejemplo con su nmero de empleado. El campo que identifica elregistro se llama campo llave. La llave de un registro puede ser un elementobsico o bien uno grupal. Por ejemplo un registro de la clase particular CURSOpuede identificarse por el valor de sus campos DEPARTAMENTO, NUMERO YSECCIN.

    Archivos

    Se llama archivo a una coleccin de ocurrencias de registros lgicamenterelacionados que se tratan como una unidad.

    BSQUEDALa bsqueda es el proceso de localizar un registro con valor de llave particular.Una llave puede estar compuesta por uno o ms campos. El valor de la llavepuede ser el nico identificador del registro, aunque tambin se pueden permitirvalores duplicados.

    La bsqueda de un elemento dentro de un array es una de las operaciones msimportantes en el procesamiento de la informacin, y permite la recuperacin dedatos previamente almacenados. El tipo de bsqueda se puede clasificar comointerna o externa, segn el lugar en el que est almacenada la informacin (enmemoria o en dispositivos externos). Todos los algoritmos de bsqueda tienen dosfinalidades:

    - Determinar si el elemento buscado se encuentra en el conjunto en el que sebusca.

    - Si el elemento est en el conjunto, hallar la posicin en la que se encuentra.

  • 8/11/2019 DEDA-U1-A2-JARH_2.docx

    14/16

    Bsqueda Secuencial o lineal

    Un algoritmo de bsqueda es una tcnica para encontrar un registro que tengaalgn valor de llave en especial. Llamaremos al valor de la llave, digamos k, elargumento de la bsqueda. La bsqueda termina exitosamente cuando se localizael registro que contenga la llave k, o termina sin xito, cuando se determina que noaparece ningn registro con la llave k.

    Existen muchos algoritmos de bsqueda; la bsqueda secuencial tambin esconocida como bsqueda lineal. Las bsquedas lineales adems de ser mssimples proporcionan una buena forma de empezar la investigacin de bsqueday ordenamiento.

    Avanzar al

    siguiente registro

    Se encontr el

    valor. Fin.

    Lista inicialmente

    vaca?

    Comenzar con

    primer registro

    El registro

    solicitado no

    est en la lista.

    El valor de la

    llave del registro

    es i ual al valor

    Es el fin de

    la lista?

  • 8/11/2019 DEDA-U1-A2-JARH_2.docx

    15/16

    Bsqueda Binaria

    La tcnica de bsqueda binaria puede ser aplicada tanto a datos en listas linealescomo en rboles binarios de bsqueda. Los prerrequisitos principales para la

    bsqueda binaria son: la lista debe estar ordenada en un orden especfico deacuerdo al valor de la llave y debe conocerse el nmero de registros. La tcnica debsqueda binaria slo podr aplicarse si son satisfechos estos dos prerrequisitos.

    En el desarrollo de programas, existe una fase previa a la escritura del programa,esta es el diseo del algoritmo que conducir a la solucin del problema, en estafase tambin deber considerarse la estructura de datos que se va a utilizar. Eltrmino estructura de datos se refiere a la forma en que la informacin estaorganizada dentro de un programa. La correcta organizacin de datos puedeconducir a algoritmos ms simples y ms eficientes.

    Estructura de datos: Conjunto de variables agrupadas y organizadas de ciertaforma para representar un comportamiento

    Las estructuras de datos segn su tamao en memoria, se clasifican en:

    Estructuras de datos estticas: Son aquellas cuyo tamao en memoria es fijo,por ejemplo, los arreglos.

    Estructuras de datos dinmicas: Son las estructuras que permiten variar sutamao en memoria de acuerdo a las necesidades del ambiente, por ejemplo,

    listas enlazadas.

    Estructuras dato mas conocidas

    Pilas.-En las pilas (tambin conocidas como stacks o FILO first in, last out) lo quequeremos es procesar los datos en orden inverso, esto es, primero procesamoslos ltimos datos que aadimos y hasta llegar a los iniciales. Una forma fcil devisualizarlo es mediante tortillas: al irlas calentando, se van apilando por lo que lasprimeras que se calentaron quedan abajo y son las ltimas en ser comidas. Laimportancia de las pilas es que se utilizan implcitamente en cualquier programa

    recursivoColas.- En las colas (tambin conocidas como queues, buffers o FIFO first in,first out) los primeros elementos que entran son los primeros en ser procesados.Esto lo podemos ver en las filas en los bancos: los primeros que se forman son losprimeros en ser atendidos

  • 8/11/2019 DEDA-U1-A2-JARH_2.docx

    16/16

    Listas enlazadas.- Una lista es simplemente un arreglo en el cual vamosagregando y sacando datos. En su forma ms sencilla, una lista puede ser unarreglo. Uno de los problemas con los arreglos es que si queremos agregar undato en medio, tenemos que recorrer todas las casillas que se encuentran a partirde esa posicin un lugar. Esto se soluciona mediante listas enlazadas, en lascuales por cada casilla tenemos dos datos: el valor de la casilla y la posicin de lasiguiente casilla. Para agregar o quitar datos, solo tenemos que cambiar cual es lasiguiente casilla. Si tenemos adems del siguiente elemento tambin sabemos laposicin del anterior, obtenemos una lista doblemente enlazada. Si hacemos queel ltimo elemento este enlazado con el primero, obtenemos una lista circular.