Вы находитесь на странице: 1из 16

DEFINICION DE ALGORITMO:

Define algoritmo como un conjunto ordenado y finito de operaciones que permite


hallar la solucin de un problema. Mtodo y notacin en las distintas frmulas del
clculo. El algoritmo constituye un mtodo para resolver un problema mediante
una secuencia de pasos a seguir. Dicha secuencia puede ser expresada en forma
de 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 la
definicin de programa de ordenador de la Ley de Propiedad Intelectual (TRLPI),
al referirse a ste como toda secuencia de instrucciones o indicaciones destinadas
a ser utilizadas, directa o indirectamente, en un sistema informtico para realizar
una funcin o una tarea o para obtener un resultado determinado, cualquiera que
fuere su forma de expresin y fijacin.
Un algoritmo es un mtodo para resolver un problema. Aunque la popularizacin
del trmino ha Ilegado con el advenimiento de la era informtica, algoritmo
proviene de Mohammed al-KhoWirizmi, matemtico persa que vivi durante el
siglo IX y alcanz gran reputacin por el enunciado de las reglas paso a paso para
sumar, restar, multiplicar y dividir nmeros decimales; la traduccin al latn del
apellido en la palabra algorismus deriv posteriormente en algoritmo. Euclides, el
gran matemtico griego(del siglo IV a.c.) que invent un mtodo para encontrar el
mximo comn divisor de dos nmeros, seconsidera con Al-Khowirizmi el otro
gran 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 -sin
ambigedades- que conducen a la solucin de un problema dado. (Andisis del
problema y desarrollo del algoritmo.)
Expresar el algoritmo como un programa en un lenguaje de programacin
adecuado. (Fase decodificacin.)
Ejecucin y validacin del programa por la computadora
En cada problema el algoritmo se puede expresar en un lenguaje diferente de
programacin y ejecutarse en una computadora distinta; sin embargo, el algoritmo
ser siempre el mismo
Las caractersticas fundamentales que debe cumplir todo algoritmo son:



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 debe
obtener el mismo
Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algn
momento; 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 conjunto
de datos elementales con el objetivo de facilitar su manipulacin. Un dato
elemental es la mnima informacin que se tiene en un sistema.
Una estructura de datos define la organizacin e interrelacin de stos y un
conjunto de operaciones que se pueden realizar sobre ellos. Las operaciones
bsicas 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 una
operacin con este valor, en forma SECUENCIAL o BINARIO (siempre y cuando
los 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 las
apareadas.
Cada estructura ofrece ventajas y desventajas en relacin a la simplicidad y
eficiencia para la realizacin de cada operacin. De esta forma, la eleccin de la

estructura de datos apropiada para cada problema depende de factores como la
frecuencia y el orden en que se realiza cada operacin sobre los datos.
Tipos de datos elementales:
Binarios
Bit
Byte
Numricos
Entero
Real
Coma fija
Coma flotante
Alfanumricos
Carcter
Cadena
Booleanos

Datos estructurados:
Estructura de Datos es una coleccin de datos que se caracterizan por su
organizacin y las operaciones que se definen en ella. Los datos de tipo estndar
pueden 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 de
compilacin 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 en
tiempo de ejecucin. Corresponden a este tipo las listas, rboles y grafos. Estas
estructuras no son soportadas en todos los lenguajes. La eleccin de la estructura
de datos idnea depender de la naturaleza del problema a resolver y, en menor
medida, del lenguaje. Las estructuras de datos tienen en comn que un
identificador, nombre, puede representar a mltiples datos individuales.


Arrays:
Un arreglo (array) es una coleccin de datos del mismo tipo, que se almacenan en
posiciones consecutivas de memoria y reciben un nombre comn. Para referirse a
un determinado elemento de un array se deber utilizar un ndice, que especifique
su posicin relativa en el array. Un arreglo es una coleccin finita, homognea y
ordenada de elementos. Finita: Todo arreglo tiene un lmite; es decir, debe
determinarse cul ser el nmero mximo de elementos que podrn formar parte
del arreglo. Homognea: Todos los elementos del arreglo deben ser del mismo
tipo. Ordenada: Se puede determinar cul es el primer elemento, el segundo, el
tercero,.... y el n-simo element.
Las estructuras de datos y los algoritmos repercuten de forma directa en el
almacenamiento y tratamiento de la informacin, tanto desde el punto de vista
fsico cmo funcional. Por tanto, el amplsimo mbito de la programacin se
construye sbrelos cimientos de dichos algoritmos y estructuras de datos, de ah
la sobresaliente importancia de su conocimiento previo.
Definicin de variables de estructuras
AI igual que a los tipos de datos enumerados, a una estructura se accede
utilizando una variable o variables que se deben definir despus de la declaracin
de la estructura. Del mismo modo que sucede en otras situaciones, en C existen
dos conceptos similares a considerar, declaracin y dejnicin. La diferencia
tcnica es la siguiente, una declaracin especifica simplemente el nombre y el
formato de la estructura de datos, pero no reserva almacenamiento en memoria; la
declaracin especifica un nuevo tipo de dato: struct <nombre-estructura>. Por
consiguiente, cada definicin de variable para una estructura dada crea un rea en
memoria en donde los datos se almacenan de acuerdo al formato estructurado
declarado.
Las variables de estructuras se pueden definir de dos formas: 1) listndolas
inmediatamente despus de la llave de cierre de la declaracin de la estructura, o
2) listando el tipo de la estructura creado seguida por las variables
correspondientes en cualquier lugar del programa antes de utilizarlas. La definicin
y declaracin de la estructura colecciones-CD se puede hacer por cualquiera de
los dos mtodos


Ejemplo de estructuras anidadas
Se desea disear una estructura que contenga informacin de operaciones
financieras. 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=2
o estado de la cuenta=3) y la fecha y hora en que la operacin se ha realizado. A
fin 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 fecha
y una estructura tiempo. La estructura registro-operacin tiene como miembros
una variable (un campo) de tipo fecha, otra variable del tipo tiempo y otras
variables para representar los otros campos. La representacin del tipo de
operacin se hace con una variable entera, aunque el tipo apropiado es un tipo
enumerado (descrito en siguientes apartados). A continuacin se declara estos
tipos, se escribe una funcin que lee una operacin financiera y devuelve la
operacin leda. La fecha y hora es captada del sistema.
#include <stdio.h>
#include <dos.h>
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;

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

puts('Puesta al dia(2)");
puts ("Estado de la cuenta (3 ) I' ) ;
scanf ( "%d" , &una. t ipo-operacion) ;
/* Fecha y tiempo del sistema */
gettime (&t) ;
una.t.horas = t.ti-hour;
una.t.minutos = t.timin;
getdate (&d) ;
una.f.anyo = d.dajear;
una.f.mes = d.darnon;
una.f.dia = d.da-day;
return una;

Estructura de datos es una forma de organizar un conjunto de datos elementales
(un dato elemental es la mnima informacin que se tiene en el sistema) con el
objetivo de facilitar la manipulacin de estos datos como un todo o
individualmente.
Una estructura de datos define la organizacin e interrelacionamiento de estos, y
un conjunto de operaciones que se pueden realizar sobre l. Las operaciones
bsicas son:
adicionar un nuevo valor a la estructura.
borrar un valor de la estructura.
Bsqueda, encontrar un determinado valor en la estructura para realizar
una operacin con este valor, en forma SECUENCIAL o BINARIO (siempre y
cuando los datos estn ordenados).





CLASIFICACIN DE ESTRUCTURAS DE DATOS
ESTRUCTURAS LGICAS DE DATOS
Las estructuras de datos son muy importantes en sistemas computacionales. En
un programa, cada variable pertenece a alguna estructura de datos explcita o
implcitamente definida, la cual determina el conjunto de operaciones vlidas para
ella. Cada estructura de datos lgica puede tener varias representaciones fsicas
diferentes 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 son
las estructuras de datos simples que se construyen a partir de estructuras
primitivas y son: cadenas, arreglos y registros. A estas estructuras de datos la
respaldan muchos lenguajes de programacin.
Tipos de datos simples: Es uno de los conceptos fundamentales de cualquier
lenguaje de programacin. Estos definen los mtodos de almacenamiento
(cadenas, arreglos y registros) disponibles para representar informacin, junto con
la manera en que dicha informacin ha de ser interpretada.
Para crear una variable (de un tipo simple primivito) en memoria debe declararse
indicando 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 de
datos 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 trabajan
sobre un par de nmeros, considerados como operadores binarios. Un operador

unario tiene slo un operando. La negacin, que cambia el signo de un nmero, es
un 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 de
estructuras de datos es diferente del conjunto de operaciones para los enteros.
Los tres operadores bolanos bsicos son not, and y or (negacin, conjuncin y
disyuncin, respectivamente). La siguiente tabla muestra el resultado de aplicar
cada 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 el
resultado es falso.
OR, el resultado es verdadero si uno de los dos son verdaderos, si los dos son
falsos el resultado es falso.
NOT, el resultado es verdadero cuando el primero es falso y el segundo
verdadero. 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 de
smbolos. 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:

Es una secuencia finita de smbolos tomados de un conjunto de caracteres. El
conjunto de caracteres que se emplea para generar cadenas se llama alfabeto. El
conjunto de cadenas que se puede derivar del alfabeto A={C,D,1} incluye los
siguientes: 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 con
comillas.
Las cadenas son un tipo importante de dato y se usan ampliamente. En primera
instancia, las cadenas son el medio bsico para escribir programas y transmitirlos
a la computadora. Segundo, son el medio principal de intercambio de informacin
con los usuarios. Tercero, las cadenas se usan para almacenas informacin en
archivos. Cuarto se usan en lenguajes de programacin para nombres de
variables, etiquetas y procedimientos. Y en un contexto ms general, son una va
de 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 caracteres
en 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 representar
indirectamente mediante arreglos.
Un arreglo es un conjunto finito ordenado de elementos homogneos, porque
todos son del mismo tipo de dato. Un arreglo puede ser un conjunto de tipo
cadena en tanto que otro puede ser de tipo entero. A los arreglo se les llama por lo
general tabla.
Arreglo Estructura de datos en la que a cada elemento se le asigna un ndice
nico. Su representacin matemtica es una matriz. Un array (ms correctamente
denominado vector), es un conjunto de variables o registros del mismo tipo que
puede estar almacenados en memoria principal o en memoria auxiliar. Los array
de 1 dimensin se denominan vectores, los de 2 o ms dimensiones se
denominan matrices. La forma de acceder a los elementos del array es directo, es
decir que el elemento deseado es obtenido a partir de su ndice.
Arreglos unidimensionales

Son conocidos como vector. Un arreglo unidimensional llamado VICTOR, el cual
consiste 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 la
notacin que se emplea aqu, un elemento en particular se define con el nombre
del arreglo, seguido por el subndice del elemento entre parntesis, es decir,
VICTOR(I). Otras posibilidades para designar al elemento del arreglo VICTOR con
subndice son: VICTO[I], VICTORI, VICTORI.
Arreglo multidimensional
Un arreglo de dos dimensiones, es un arreglo en el cual cada elemento es otro
arreglo. Un arreglo llamado B, el cual consiste de M elementos, cada uno de los
cuales es un arreglo de N elementos se puede representar como una tabla de M
por 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 en
un arreglo bidimensional. Por convencin, el primer subndice hace referencia al
rengln.
Elemento B(I,J) en un arreglo
1 2 .. J .. N
2

I B(I,J)


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 orden
mayor. En general un arreglo N-dimensional requiere que los valores de los N
subndices se especifiquen para identificar un elemento en particular del arreglo.

En programacin, un vector, array, arreglo o alineacin es un conjunto o
agrupacin de variables del mismo tipo cuyo acceso se realiza por ndices. Los
vectores o arrays de dos o ms dimensiones se denominan matrices, que pueden
tener 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 las
caractersticas matemticas de una matriz numrica.
ESTRUCTURAS DE REGISTRO
Los registros son los componentes bsicos de los archivos y de las bases de
datos.
Un registro es una coleccin finita y ordenada de elementos, posiblemente
heterogneos, que se tratan como una unidad. Un registro se distingue de un
arreglo en el hecho de que todos los elementos de un arreglo deben tener la
misma estructura, a diferencia de los elementos componentes del registro que
pueden tener diferentes estructuras de datos. Un registro se menciona algunas
veces slo como una estructura. Los elementos de un registro son comnmente
llamados campos. Un campo es un rea especfica de un registro utilizada para
una clase particular de informacin.
Formacin de registro
Una unidad de informacin deriva, por lo menos, algo de su significado; a partir de
sus relaciones con otra informacin. La estructura de datos registro permite que un
conjunto de elementos de informacin, lgicamente relacionados, se pueda
agrupar explcitamente. Por ejemplo, el campo de tipo cadena llamado TITULO-
DE-TAREA, con valor ANALISTA, no proporciona mucha informacin por s
mismo. 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 tipo
decimal con valor 15.93. Estos elementos heterogneos no pueden constituir un

arreglo porque son diferentes estructuras de datos. Sin embargo, se pueden
agrupar para constituir un registro de informacin del empleado como se muestra
a 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 se
identifica por ejemplo con su nmero de empleado. El campo que identifica el
registro se llama campo llave. La llave de un registro puede ser un elemento
bsico o bien uno grupal. Por ejemplo un registro de la clase particular CURSO
puede identificarse por el valor de sus campos DEPARTAMENTO, NUMERO Y
SECCIN.
Archivos
Se llama archivo a una coleccin de ocurrencias de registros lgicamente
relacionados que se tratan como una unidad.
BSQUEDA
La 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 llave
puede ser el nico identificador del registro, aunque tambin se pueden permitir
valores duplicados.
La bsqueda de un elemento dentro de un array es una de las operaciones ms
importantes en el procesamiento de la informacin, y permite la recuperacin de
datos previamente almacenados. El tipo de bsqueda se puede clasificar como
interna o externa, segn el lugar en el que est almacenada la informacin (en
memoria o en dispositivos externos). Todos los algoritmos de bsqueda tienen dos
finalidades:
- Determinar si el elemento buscado se encuentra en el conjunto en el que se
busca.
- Si el elemento est en el conjunto, hallar la posicin en la que se encuentra.


Bsqueda Secuencial o lineal
Un algoritmo de bsqueda es una tcnica para encontrar un registro que tenga
algn valor de llave en especial. Llamaremos al valor de la llave, digamos k, el
argumento de la bsqueda. La bsqueda termina exitosamente cuando se localiza
el registro que contenga la llave k, o termina sin xito, cuando se determina que no
aparece ningn registro con la llave k.
















Existen muchos algoritmos de bsqueda; la bsqueda secuencial tambin es
conocida como bsqueda lineal. Las bsquedas lineales adems de ser ms
simples proporcionan una buena forma de empezar la investigacin de bsqueda
y 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.
Fin El valor de la
llave del registro
es igual al valor
Es el fin de
la lista?

Bsqueda Binaria
La tcnica de bsqueda binaria puede ser aplicada tanto a datos en listas lineales
como en rboles binarios de bsqueda. Los prerrequisitos principales para la
bsqueda binaria son: la lista debe estar ordenada en un orden especfico de
acuerdo al valor de la llave y debe conocerse el nmero de registros. La tcnica de
bsqueda 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 esta
fase tambin deber considerarse la estructura de datos que se va a utilizar. El
trmino estructura de datos se refiere a la forma en que la informacin esta
organizada dentro de un programa. La correcta organizacin de datos puede
conducir a algoritmos ms simples y ms eficientes.
Estructura de datos: Conjunto de variables agrupadas y organizadas de cierta
forma 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 su
tamao 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 que
queremos es procesar los datos en orden inverso, esto es, primero procesamos
los ltimos datos que aadimos y hasta llegar a los iniciales. Una forma fcil de
visualizarlo es mediante tortillas: al irlas calentando, se van apilando por lo que las
primeras que se calentaron quedan abajo y son las ltimas en ser comidas. La
importancia de las pilas es que se utilizan implcitamente en cualquier programa
recursivo
Colas.- 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 los
primeros en ser atendidos

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

Вам также может понравиться