Principios de programacion

Solo disponible en BuenasTareas
  • Páginas : 15 (3657 palabras )
  • Descarga(s) : 0
  • Publicado : 14 de diciembre de 2011
Leer documento completo
Vista previa del texto
ALGORITMO
Es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución.
* Tiempo secuencial. Un algoritmo funciona entiempo discretizado –paso a paso–, definiendo así una secuencia de estados "computacionales" por cada entrada válida (la entrada son los datos que se le suministran al algoritmo antes de comenzar).
* Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementación (los algoritmos son objetosabstractos) de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo.
* Exploración acotada. La transición de un estado al siguiente queda completamente determinada por una descripción fija y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de términos del estado actual

TIPOS DE ALGORITMO* Algoritmo de ordenamiento recursivo
Es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relación de orden, es decir, el resultado de salida ha de ser una permutación o reordenamiento de la entrada que satisfaga la relación de orden dada. Las relaciones de orden más usadas son el orden numérico y el orden lexicográfico. Ordenamientos eficientes sonimportantes para optimizar el uso de otros algoritmos (como los de búsqueda y fusión) que requieren listas ordenadas para una ejecución rápida. También es útil para poner datos en forma canónica y para generar resultados legibles por humanos. Ejemplo:
Procedure Ordenamiento_Shell_Rec (Var t: TAB; n,h : integer);
Var aux,i : integer;
begin
If h > 0 Then
Begin
If n > h Then
beginTri_Shell_Rec (t,n - h,h);
If t[n] < t[n - h] Then
Begin
aux:= t[n];
i := n;
Repeat
t[i] := t[i - h];
i := i - h;
Until (i = h) Or (aux > t[i - h]);
t[i] := aux;
End;
End;
Tri_Shell_Rec (t,n,h Div 3);
End;
End;
* Algoritmo de búsqueda secuencial
Se utiliza cuando el vector no está ordenado o no puede ser ordenado previamente. Consiste en buscar el elemento comparándolosecuencialmente (de ahí su nombre) con cada elemento del array hasta encontrarlo, o hasta que se llegue al final. La existencia se puede asegurar cuando el elemento es localizado, pero no podemos asegurar la no existencia hasta no haber analizado todos los elementos del array. Ejemplo:
#define n1 50 
void secuencia(int a[n1],int k1)
{
 int cual,x1;
 bool ubicado=false;
 cout<<"Que elemento sebuscara? : ";cin>>cual;
 cout<<endl;
 for(x1=0;x1<=k1+1;x1++)
 {
  if(a[x1]==cual)
  {
   ubicado=true;
   cout<<"Elemento encontrado en la posicion "<<x1<<endl;
  }
 }
 if (ubicado=false) cout<<"Elemento no encontrado"<<endl;
}
Se utiliza cuando el vector en el que queremos determinar la existencia de un elemento está previamente ordenado.Este algoritmo reduce el tiempo de búsqueda considerablemente, ya que disminuye exponencialmente el número de iteraciones necesarias.
Está altamente recomendado para buscar en arrays de gran tamaño. Por ejemplo, en uno conteniendo 50.000.000 elementos, realiza como máximo 26 comparaciones (en el peor de los casos).
Para implementar este algoritmo se compara el elemento a buscar con un elementocualquiera del array (normalmente el elemento central): si el valor de éste es mayor que el del elemento buscado se repite el procedimiento en la parte del array que va desde el inicio de éste hasta el elemento tomado, en caso contrario se toma la parte del array que va desde el elemento tomado hasta el final. De esta manera obtenemos intervalos cada vez más pequeños, hasta que se obtenga un...
tracking img