Академический Документы
Профессиональный Документы
Культура Документы
MÉTODOS DE BÚSQUEDA
Existen diferentes métodos de búsqueda y se puede determinar con cual método trabajar
dependiendo de la cantidad de elementos que existan en el vector o la organización de
dichos elementos.
Implementación del método que busca lineal o secuencial, y devuelve la posición del dato
a buscar que se pasa como parámetro:
Búsqueda Binaria:
Este método es una técnica eficaz para realizar búsquedas en vectores o archivos que
contengan un mayor número de datos. Este método divide el vector en mitades de
manera sucesiva hasta que encuentra el dato buscado, es decir, el método divide el
vector y se examina el elemento central del vector.
Implementación del método que busca de manera binaria, y devuelve la posición del dato
a buscar que se pasa como parámetro:
Para el diseño del formulario (clase TForm1), en donde se capturan los datos y se
muestra la información, se utilizaran los siguientes componentes con sus respectivos
nombres:
● Tres TEdit (campos de texto), uno para mostrar las diferentes posiciones de cada
indice en el vector, uno para capturar los teléfonos celulares y otro para realizar las
búsquedas. Los nombres que se utilizaran para los TEdit son: posi, val y bus
respectivamente.
● Cuatro TButton (botones), para ir guardando los elementos, mostrar los elementos
del vector, limpiar y salir de la aplicación. Los nombres que se utilizaran para los
TButton son: bGuardar, bMostrar, bLimpiar y bSalir respectivamente.
● También se utilizaran varios TLabel para colocar los diferentes comentarios que
aparecen en el formulario.
unit UMetodosBusqueda;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
const
num=20;
type
{ TBusquedas }
TBusquedas=class
private
vector:array[1..num] of string;
public
constructor create;
procedure setVector(p:integer; ve:string);
function getVector(p:integer):string;
//Declaración del método que retorna la posición del dato buscado, utilizando el método de búsqueda lineal
//o secuencial. El método recibe como parámetro el dato que se desea buscar dentro del arreglo.
function busquedaLineal(dato:string):integer;
//Declaración del método de ordenamiento por intercambio, este método se utilizara en la implementación
//del método de búsqueda binaria ya que para la búsqueda binaria se requiere que los elementos del vector
//estén ordenados.
procedure ordenarIntercambio;
//Declaración del método que retorna la posición del dato buscado, utilizando el método de búsqueda binaria
//el método recibe como parámetro el dato que se desea buscar dentro del arreglo.
function bsuquedaBinaria(dato:string):integer;
end;
implementation
{ TBusquedas }
constructor TBusquedas.create;
var
i:integer;
begin
for i:=1 to num do
begin
vector[i]:='0';
end;
end;
end.
unit UVentanaBusquedas;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, UMetodosBusqueda,StdCtrls,
ComCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
bGuardar: TButton;
bus: TEdit;
bMostrar: TButton;
bLimpiar: TButton;
bSalir: TButton;
op: TComboBox;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
lisvec: TListBox;
val: TEdit;
Label3: TLabel;
posi: TEdit;
Label1: TLabel;
Label2: TLabel;
Up: TUpDown;
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure bGuardarClick(Sender: TObject);
procedure bLimpiarClick(Sender: TObject);
procedure bMostrarClick(Sender: TObject);
procedure bSalirClick(Sender: TObject);
procedure opChange(Sender: TObject);
private
//Declaramos la instancia global (para que la usen todos los botones) y privada (atributo de la ventana).
vec:TBusquedas;
//Método para mostrar los elementos del vector en el TListBox (lisvec).
procedure mostrar;
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{ TForm1 }
//Implementación del evento OnShow para colocar el cursor en el TEdit de nombre val.
procedure TForm1.FormShow(Sender: TObject);
begin
val.SetFocus;
end;
//implementación del método para el evento constructor del formulario. Para implementar este código solo
//basta con seleccionar el formulario y escoger en el inspector de objetos, el evento OnCreate.
procedure TForm1.FormCreate(Sender: TObject);
begin
vec:=TBusquedas.create;
Up.Max:=num;
end;
//implementación del método que libera la instancia, para implementar este código solo basta con
//seleccionar el formulario y escoger en el inspector de objetos, el evento OnClose.
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
vec.Free;
end;
//implementación del método que muestra los elementos del vector en TListBox (lisvec).
procedure TForm1.mostrar;
var
i:integer;
begin
lisvec.Clear;
for i:=1 to num do
begin
lisvec.Items.Add('Posicion '+IntToStr(i)+'= '+ vec.getVector(i));
end;
end;
initialization
{$I uventanabusquedas.lrs}
end.