SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
INSTITUCIÓN UNIVERSITARIA DE ENVIGADO
FACULTAD DE INGENIERÍAS
LÓGICA DE PROGRAMACIÓN – Nivel I
BÚSQUEDA LINEAL: Pueden darse los siguientes casos
Recorrido único por dato único
Recorrido repetido por dato único
Recorrido único por dato repetido
Recorrido repetido por dato repetido
DEFINICION:
Cuando se necesita hallar uno o varios elementos que cumplan
una determinada característica dentro de un vector se emplean dos
tipos de búsqueda: Lineal o Binaria.
INSTITUCIÓN UNIVERSITARIA DE ENVIGADO
FACULTAD DE INGENIERÍAS
LÓGICA DE PROGRAMACIÓN – Nivel I
Denominamos DATO ÚNICO a aquel que no se repite dentro del vector, por ejemplo,
dependiendo de la finalidad de los registros, puede ser dato único el número de
cédula, el código de un estudiante, el número de cuenta bancaria, etc. Cuando se
busca un dato único, se controla el ciclo con doble condición: que recorra el vector
(contador menor o igual al registro identificador X <= N) y que el dato no haya sido
encontrado (o sea que la variable suiche sea negativa sw == ‘n’), de tal modo que
cuando encuentra el dato se sale por el cambio de valor del suiche o busca hasta el
final si no encuentra el dato.
Denominamos DATO REPETIDO a aquel que es susceptible de ser repetido en el
vector, por ejemplo, las edades, el sexo, el estado civil, el nombre, la profesión, etc.
Cuando recorremos el vector una sola vez para buscar un dato, hablamos de
BÚSQUEDA ÚNICA. Cuando utilizamos ciclos anidados, de modo que permita realizar
varias búsquedas en el vector, hablamos de BÚSQUEDA REPETIDA
Toda búsqueda hace uso de una variable suiche que
permita informar al usuario si el dato fue encontrado
o no. El suiche siempre se evalúa fuera del ciclo de
búsqueda.
Ejemplo de Búsqueda ÚNICA por campo ÚNICO: El vector documento almacena el
número de cédula de 20 personas. Informar si se encuentra o no una cédula ingresada
por teclado:
Sub_buscardoc ()
Inicio
Const Int: N [20];
String Vdoc [N][11], doc_b [11]; //documento a buscar
Int x = 1;
Char sw = ‘n’;
Esc “Digite No. De documento a buscar: “; Lea doc_b;
MQ ((x < N) && (sw == ‘n’)) HAGA
Si (Vdoc [x] == doc_b) Ent
Sw = ‘s’;
Sino
x = x + 1;
fin-si
Fin-MQ
//Al salir de la búsqueda SIEMPRE se evalúa el suiche para determinar si el dato
fue encontrado o no:
INSTITUCIÓN UNIVERSITARIA DE ENVIGADO
FACULTAD DE INGENIERÍAS
LÓGICA DE PROGRAMACIÓN – Nivel I
Si (sw == ‘s’) Ent
Esc “Cédula encontrada”;
Sino
Esc “Dato no encontrado”;
Fin-si
Fin-Subprograma
Ejemplo de Búsqueda REPETIDA por campo ÙNICO: El vector documento almacena el
número de cédula de 20 personas. Permitir buscar si se encuentran o no n cédulas
ingresadas por teclado:
Sub_buscardoc ()
Inicio
Const Int: N [20];
String Vdoc [N][11], doc_b [11]; //documento a buscar
Int x;
Char sw;
Esc “Digite No. De documento a buscar o 0 para salir: “; Lea doc_b; //en este
caso se maneja ciclo externo con centinela:
MQ (doc_b <> “0”) HAGA
//Antes del ciclo de búsqueda se inicializa el suiche y el contador de
búsqueda:
x = 1;
sw = ‘n’;
MQ ((x < N) && (sw == ‘n’)) HAGA
Si (Vdoc [x] == doc_b) Ent
Sw = ‘s’;
Sino
x = x + 1;
fin-si
Fin-MQ
//Al salir de la búsqueda SIEMPRE se evalúa el suiche para determinar si el dato
fue encontrado o no:
Si (sw == ‘s’) Ent
Esc “Cédula encontrada”;
Sino
Esc “Dato no encontrado”;
Fin-si
// Se lee de nuevo la variable centinela:
Esc “Digite No. De documento a buscar o 0 para salir: “; Lea doc_b;
INSTITUCIÓN UNIVERSITARIA DE ENVIGADO
FACULTAD DE INGENIERÍAS
LÓGICA DE PROGRAMACIÓN – Nivel I
Fin-MQ
Fin-Subprograma
Ejemplo de Búsqueda ÚNICA por campo REPETIDO: El vector EC almacena el estado
civil de 20 personas. Informar cuántas personas son casadas:
Sub_buscarEC ()
Inicio
Const Int: N [20];
Char VecEC [N], ec_b = ‘c’; //estado civil a buscar igual a ‘c’ de Casado.
Int x = 1, cont = 0;
Char sw = ‘n’;
MQ (x < N) HAGA
Si (VecEC [x] == ec_b) Ent
Sw = ‘s’;
cont = cont + 1;
Fin-si
x = x + 1;
Fin-MQ
//Al salir de la búsqueda SIEMPRE se evalúa el suiche para determinar si el dato
fue encontrado o no:
Si (sw == ‘s’) Ent
Esc “Personas casadas”, cont;
Sino
Esc “No hay personas casadas”;
Fin-si
Fin-Subprograma
Ejemplo de Búsqueda REPETIDA por campo REPETIDO: El vector EC almacena el
estado civil de 20 personas. Permitir realizar búsquedas para determinar cuántas
personas hay con un estado civil leído desde teclado:
Sub_buscarEC ()
Inicio
Const Int: N [20];
Char VecEC [N], ec_b;
Int x, cont;
Char sw;
INSTITUCIÓN UNIVERSITARIA DE ENVIGADO
FACULTAD DE INGENIERÍAS
LÓGICA DE PROGRAMACIÓN – Nivel I
Llamar sub_validarEC (ec_b); //en este caso se maneja ciclo externo con
centinela y se manda a validar que el estado civil a buscar sea correcto:
MQ (ec_b <> ‘*’) HAGA
//Antes del ciclo de búsqueda se inicializan el suiche, el contador de
búsqueda y el contador que cuenta las personas con el estado civil a buscar:
x = 1; cont = 0;
sw = ‘n’;
MQ (x < N) HAGA
Si (VecEC [x] == ec_b) Ent
Sw = ‘s’;
cont = cont + 1;
Fin-si
x = x + 1;
Fin-MQ
//Al salir de la búsqueda SIEMPRE se evalúa el suiche para determinar si el dato
fue encontrado o no:
Si (sw == ‘s’) Ent
Esc “Personas con el estado civil buscado”, cont;
Sino
Esc “Ninguna persona tiene ese estado civil”;
Fin-si
// Se lee de nuevo la variable centinela, en este caso, se invoca de nuevo el
subprograma de validación:
Llamar sub_validarEC (ec_b);
Fin-MQ
Fin-Subprograma
Sub_validarEC (char: ec_b)
Inicio
Ec_b= ‘1’; //se le lleva dato erróneo para obligarlo a entrar al ciclo de
validación:
MQ ((ec_b <> ‘*’) || (ec_b <> ‘s’) || (ec_b <> ‘c’) || (ec_b <> ‘d’) || (ec_b <>
‘v’)) HAGA
Esc “Ingrese estado civil a buscar: s para soltero, c para casado, d para
divorciado, v para viudo o * para salir: “; Lea ec_b;
Fin-MQ
Fin-sub_validarEC
INSTITUCIÓN UNIVERSITARIA DE ENVIGADO
FACULTAD DE INGENIERÍAS
LÓGICA DE PROGRAMACIÓN – Nivel I
BÚSQUEDA LINEAL:
En este caso podemos hallar la posición de un elemento dentro de un vector
ordenado. El Método es el siguiente:
1. Se halla el elemento central del vector
2. Si coincide con elemento a buscar termina la búsqueda (rompimiento de
control).
3. Si el elemento buscado es menor que el central se sabe que está en la primera
mitad del vector.
4. Si el elemento buscado es mayor que el central se sabe que está en la segunda
mitad del vector.
5. Se selecciona la mitad del vector en la cual se cree se halla el elemento y se
repite todo el proceso anterior.
6. Si en la mitad donde se supone que se encuentra el elemento es menor que
uno el elemento no se encuentra en el vector y termina la búsqueda.
Sub_Busquedabinaria ()
Inicio
Const Int: N [20];
Char Vec [N], dato_b; //Se asume que el vector está lleno y ordenado.
Int x = 1, cont = 0;
Int bajo; //limite inferior del vector
Int alto; //limite superior
Int central; //limite central
bajo = 1; alto = N; central = (alto + bajo) div 2;
MQ ((bajo <= alto) && (Vec[central] <> dato_b)) HAGA
Si (dato_b < vector [central]) Ent
alto = (central – 1);
Sino
bajo = central + 1;
Fin-si
central = (alto + bajo) div 2;
Fin_MQ
Si (dato == vector [central]) Ent
Esc “ valor encontrado en: “, central;
SINO
Esc “ valor no encontrado“;
Fin-si
Fin_Sub_Busquedabinaria
INSTITUCIÓN UNIVERSITARIA DE ENVIGADO
FACULTAD DE INGENIERÍAS
LÓGICA DE PROGRAMACIÓN – Nivel I
TALLER DE BÚSQUEDA EN VECTORES:
1. Se tienen vectores paralelos de 50 posiciones, permitir almacenar la
información correspondiente a N vuelos diarios de una aerolínea: número de
vuelo (no repetido), trayecto (validar menú 1. Medellín – Bogotá, 2. Medellín –
Cali, 3. Medellín – San Andrés). Permitir consultar por número de vuelo y por
trayecto.
2. Almacenar en vectores paralelos de 500 posiciones la información
correspondiente a los automotores vendidos por Sofasa: serial del motor (no
repetido), marca, modelo, categoría (T. Turismo – F. Familiar – D. Deportivo – S
Transporte), tipo de combustible (gas o gasolina). Permitir realizar consultas
por serial del motor y por modelo. Mostrar cuántos vehículos se vendieron de
cada categoría.
3. De 100 inscritos y preseleccionados para una maratón internacional, se desean
seleccionar los atletas que cumplan con las siguientes condiciones: haber
terminado el maratón de selección en un tiempo determinado. Los tiempos son
150 minutos para hombres menores de 20 años; 160 minutos para hombres
con una edad mayor o igual a 20 y menor de 40 años y 180 minutos para
hombres mayores de 40. Almacenar en vectores paralelos de 100 posiciones los
datos de todos los atletas que fueron seleccionados por cumplir las
condiciones: documento de identidad (no repetido), edad, ciudad de origen
(validar un menú de 5 opciones posibles). Permitir realizar consultas de los
datos de los atletas por: documento y ciudad de origen. Imprimir el promedio
de edad de los atletas seleccionados.
4. Una librería maneja los siguientes datos de los libros a la venta: código (no
repetido), nombre, autor, editorial. Permitir ingresar en vectores paralelos de
1000 posiciones, los datos de los N libros adquiridos para la venta. Permitir
realizar consultas repetidas por código y autor.
5. Una empresa maneja registros con los datos de sus empleados: documento (no
repetido), cargo, salario mensual. Permitir realizar consultas repetidas por los
tres campos.

Más contenido relacionado

La actualidad más candente

Conceptos basicos de estadistica entrada 4
Conceptos basicos de estadistica entrada 4Conceptos basicos de estadistica entrada 4
Conceptos basicos de estadistica entrada 4mayracuevaslopez
 
Distribución binomial yanis aguero
Distribución binomial yanis agueroDistribución binomial yanis aguero
Distribución binomial yanis agueroelflaco30
 
Sesion 2 analisis de decision valor esperado imformacion perfecta
Sesion 2 analisis de decision valor esperado imformacion perfectaSesion 2 analisis de decision valor esperado imformacion perfecta
Sesion 2 analisis de decision valor esperado imformacion perfectaDIrector del INNOVAE
 
Principios de probabilidad
Principios de probabilidadPrincipios de probabilidad
Principios de probabilidadLety Rodriguez
 
Sesion iii arbol de decisiones prob a priori
Sesion iii arbol de decisiones prob a prioriSesion iii arbol de decisiones prob a priori
Sesion iii arbol de decisiones prob a prioriDIrector del INNOVAE
 
Riesgo en portafolios de inversion
Riesgo en portafolios de inversionRiesgo en portafolios de inversion
Riesgo en portafolios de inversionApolo Pino
 
Diapositivas estadistica
Diapositivas estadisticaDiapositivas estadistica
Diapositivas estadisticapilosofando
 
Concepto de Probabilidad
 Concepto de Probabilidad Concepto de Probabilidad
Concepto de ProbabilidadCristina Duque
 

La actualidad más candente (15)

Conceptos basicos de estadistica entrada 4
Conceptos basicos de estadistica entrada 4Conceptos basicos de estadistica entrada 4
Conceptos basicos de estadistica entrada 4
 
Distribución binomial yanis aguero
Distribución binomial yanis agueroDistribución binomial yanis aguero
Distribución binomial yanis aguero
 
Maximo valor esperado
Maximo valor esperadoMaximo valor esperado
Maximo valor esperado
 
Distribuciones probabilidad
Distribuciones probabilidadDistribuciones probabilidad
Distribuciones probabilidad
 
Marien selena.
Marien selena.Marien selena.
Marien selena.
 
Investigacion 1 estadistica
Investigacion 1 estadisticaInvestigacion 1 estadistica
Investigacion 1 estadistica
 
Sesion 2 analisis de decision valor esperado imformacion perfecta
Sesion 2 analisis de decision valor esperado imformacion perfectaSesion 2 analisis de decision valor esperado imformacion perfecta
Sesion 2 analisis de decision valor esperado imformacion perfecta
 
Principios de probabilidad
Principios de probabilidadPrincipios de probabilidad
Principios de probabilidad
 
Sesion iii arbol de decisiones prob a priori
Sesion iii arbol de decisiones prob a prioriSesion iii arbol de decisiones prob a priori
Sesion iii arbol de decisiones prob a priori
 
Azar y prbabilidad
Azar y prbabilidadAzar y prbabilidad
Azar y prbabilidad
 
Probabilidades
ProbabilidadesProbabilidades
Probabilidades
 
Riesgo en portafolios de inversion
Riesgo en portafolios de inversionRiesgo en portafolios de inversion
Riesgo en portafolios de inversion
 
Diapositivas estadistica
Diapositivas estadisticaDiapositivas estadistica
Diapositivas estadistica
 
probabilidades
probabilidadesprobabilidades
probabilidades
 
Concepto de Probabilidad
 Concepto de Probabilidad Concepto de Probabilidad
Concepto de Probabilidad
 

Destacado

Taller logica ciclos y seleccion multiple
Taller logica ciclos y seleccion multipleTaller logica ciclos y seleccion multiple
Taller logica ciclos y seleccion multiplememorales_IUE
 
Taller logica ciclo mq centinela 2013
Taller logica ciclo mq  centinela 2013Taller logica ciclo mq  centinela 2013
Taller logica ciclo mq centinela 2013memorales_IUE
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamientomemorales_IUE
 
Taller condicionales marzo22
Taller condicionales marzo22Taller condicionales marzo22
Taller condicionales marzo22memorales_IUE
 
Logica condicionales
Logica condicionalesLogica condicionales
Logica condicionalesmemorales_IUE
 

Destacado (7)

Arreglos
ArreglosArreglos
Arreglos
 
Taller logica ciclos y seleccion multiple
Taller logica ciclos y seleccion multipleTaller logica ciclos y seleccion multiple
Taller logica ciclos y seleccion multiple
 
Taller logica ciclo mq centinela 2013
Taller logica ciclo mq  centinela 2013Taller logica ciclo mq  centinela 2013
Taller logica ciclo mq centinela 2013
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Taller condicionales marzo22
Taller condicionales marzo22Taller condicionales marzo22
Taller condicionales marzo22
 
Logica condicionales
Logica condicionalesLogica condicionales
Logica condicionales
 
Ciclos
CiclosCiclos
Ciclos
 

Similar a Arreglos busquedas

Taller de repaso de metodos y arreglos
Taller de repaso de metodos y arreglosTaller de repaso de metodos y arreglos
Taller de repaso de metodos y arreglosDiroplan
 
Que es un algoritmo de jorge magaña
Que es un algoritmo de jorge magañaQue es un algoritmo de jorge magaña
Que es un algoritmo de jorge magañaJorge Ricardo
 
Examen primera evaluacion_ii_2010_solucion
Examen primera evaluacion_ii_2010_solucionExamen primera evaluacion_ii_2010_solucion
Examen primera evaluacion_ii_2010_solucionJosé Díaz Pilpe
 
PROBLEMAS DE POGRAMACION 1
PROBLEMAS DE POGRAMACION 1PROBLEMAS DE POGRAMACION 1
PROBLEMAS DE POGRAMACION 1Jordan Puente
 
Presentación Organización De Datos
Presentación  Organización De DatosPresentación  Organización De Datos
Presentación Organización De DatosAnyelinaortiz3
 
Ejercicios resueltos de java
Ejercicios resueltos de javaEjercicios resueltos de java
Ejercicios resueltos de javaFaral TF
 
Métodos cuantitativos_2020_2 (2).pptx
Métodos cuantitativos_2020_2 (2).pptxMétodos cuantitativos_2020_2 (2).pptx
Métodos cuantitativos_2020_2 (2).pptxLaalpacaARoxhzeeraFl
 
Programas sencillos en lenguaje C
Programas sencillos en lenguaje CProgramas sencillos en lenguaje C
Programas sencillos en lenguaje CBertha Vega
 
Programas básicos en C
Programas básicos en C Programas básicos en C
Programas básicos en C Bertha Vega
 
Informe técnico 1
Informe técnico 1Informe técnico 1
Informe técnico 1Saya Paredes
 
Que es un algoritmo de jorge magaña
Que es un algoritmo de jorge magañaQue es un algoritmo de jorge magaña
Que es un algoritmo de jorge magañaJorge Ricardo
 
Estadística por Edison Iza
Estadística por Edison Iza Estadística por Edison Iza
Estadística por Edison Iza EdisonIza7
 

Similar a Arreglos busquedas (20)

Taller de repaso de metodos y arreglos
Taller de repaso de metodos y arreglosTaller de repaso de metodos y arreglos
Taller de repaso de metodos y arreglos
 
Que es un algoritmo de jorge magaña
Que es un algoritmo de jorge magañaQue es un algoritmo de jorge magaña
Que es un algoritmo de jorge magaña
 
Examen primera evaluacion_ii_2010_solucion
Examen primera evaluacion_ii_2010_solucionExamen primera evaluacion_ii_2010_solucion
Examen primera evaluacion_ii_2010_solucion
 
Unidad temática v
Unidad temática vUnidad temática v
Unidad temática v
 
PROBLEMAS DE POGRAMACION 1
PROBLEMAS DE POGRAMACION 1PROBLEMAS DE POGRAMACION 1
PROBLEMAS DE POGRAMACION 1
 
Practica 5 cean 2016
Practica 5 cean 2016Practica 5 cean 2016
Practica 5 cean 2016
 
Presentación Organización De Datos
Presentación  Organización De DatosPresentación  Organización De Datos
Presentación Organización De Datos
 
Ejercicios resueltos de java
Ejercicios resueltos de javaEjercicios resueltos de java
Ejercicios resueltos de java
 
Métodos cuantitativos_2020_2 (2).pptx
Métodos cuantitativos_2020_2 (2).pptxMétodos cuantitativos_2020_2 (2).pptx
Métodos cuantitativos_2020_2 (2).pptx
 
Manual de R
Manual de RManual de R
Manual de R
 
1.Tipos de Datos.ppt
1.Tipos de Datos.ppt1.Tipos de Datos.ppt
1.Tipos de Datos.ppt
 
Programas sencillos en lenguaje C
Programas sencillos en lenguaje CProgramas sencillos en lenguaje C
Programas sencillos en lenguaje C
 
Programas básicos en C
Programas básicos en C Programas básicos en C
Programas básicos en C
 
P3si
P3siP3si
P3si
 
CAPITULO 0 - INTRODUCCION.pdf
CAPITULO 0 - INTRODUCCION.pdfCAPITULO 0 - INTRODUCCION.pdf
CAPITULO 0 - INTRODUCCION.pdf
 
Datos estadisticos
Datos estadisticosDatos estadisticos
Datos estadisticos
 
Informe técnico 1
Informe técnico 1Informe técnico 1
Informe técnico 1
 
Que es un algoritmo de jorge magaña
Que es un algoritmo de jorge magañaQue es un algoritmo de jorge magaña
Que es un algoritmo de jorge magaña
 
Estadística por Edison Iza
Estadística por Edison Iza Estadística por Edison Iza
Estadística por Edison Iza
 
Clase 02
Clase 02Clase 02
Clase 02
 

Más de memorales_IUE

Logica tipos de datos operadores
Logica tipos de datos operadoresLogica tipos de datos operadores
Logica tipos de datos operadoresmemorales_IUE
 
Logica terminosbasicos presentacion
Logica terminosbasicos presentacionLogica terminosbasicos presentacion
Logica terminosbasicos presentacionmemorales_IUE
 
Logica consulta terminos basicos
Logica consulta terminos basicosLogica consulta terminos basicos
Logica consulta terminos basicosmemorales_IUE
 

Más de memorales_IUE (6)

Logica subprogramas
Logica subprogramasLogica subprogramas
Logica subprogramas
 
Logica tipos de datos operadores
Logica tipos de datos operadoresLogica tipos de datos operadores
Logica tipos de datos operadores
 
Logica terminosbasicos presentacion
Logica terminosbasicos presentacionLogica terminosbasicos presentacion
Logica terminosbasicos presentacion
 
Logica consulta terminos basicos
Logica consulta terminos basicosLogica consulta terminos basicos
Logica consulta terminos basicos
 
Tipos de algoritmos
Tipos de algoritmosTipos de algoritmos
Tipos de algoritmos
 
Logica algoritmos
Logica algoritmosLogica algoritmos
Logica algoritmos
 

Arreglos busquedas

  • 1. INSTITUCIÓN UNIVERSITARIA DE ENVIGADO FACULTAD DE INGENIERÍAS LÓGICA DE PROGRAMACIÓN – Nivel I BÚSQUEDA LINEAL: Pueden darse los siguientes casos Recorrido único por dato único Recorrido repetido por dato único Recorrido único por dato repetido Recorrido repetido por dato repetido DEFINICION: Cuando se necesita hallar uno o varios elementos que cumplan una determinada característica dentro de un vector se emplean dos tipos de búsqueda: Lineal o Binaria.
  • 2. INSTITUCIÓN UNIVERSITARIA DE ENVIGADO FACULTAD DE INGENIERÍAS LÓGICA DE PROGRAMACIÓN – Nivel I Denominamos DATO ÚNICO a aquel que no se repite dentro del vector, por ejemplo, dependiendo de la finalidad de los registros, puede ser dato único el número de cédula, el código de un estudiante, el número de cuenta bancaria, etc. Cuando se busca un dato único, se controla el ciclo con doble condición: que recorra el vector (contador menor o igual al registro identificador X <= N) y que el dato no haya sido encontrado (o sea que la variable suiche sea negativa sw == ‘n’), de tal modo que cuando encuentra el dato se sale por el cambio de valor del suiche o busca hasta el final si no encuentra el dato. Denominamos DATO REPETIDO a aquel que es susceptible de ser repetido en el vector, por ejemplo, las edades, el sexo, el estado civil, el nombre, la profesión, etc. Cuando recorremos el vector una sola vez para buscar un dato, hablamos de BÚSQUEDA ÚNICA. Cuando utilizamos ciclos anidados, de modo que permita realizar varias búsquedas en el vector, hablamos de BÚSQUEDA REPETIDA Toda búsqueda hace uso de una variable suiche que permita informar al usuario si el dato fue encontrado o no. El suiche siempre se evalúa fuera del ciclo de búsqueda. Ejemplo de Búsqueda ÚNICA por campo ÚNICO: El vector documento almacena el número de cédula de 20 personas. Informar si se encuentra o no una cédula ingresada por teclado: Sub_buscardoc () Inicio Const Int: N [20]; String Vdoc [N][11], doc_b [11]; //documento a buscar Int x = 1; Char sw = ‘n’; Esc “Digite No. De documento a buscar: “; Lea doc_b; MQ ((x < N) && (sw == ‘n’)) HAGA Si (Vdoc [x] == doc_b) Ent Sw = ‘s’; Sino x = x + 1; fin-si Fin-MQ //Al salir de la búsqueda SIEMPRE se evalúa el suiche para determinar si el dato fue encontrado o no:
  • 3. INSTITUCIÓN UNIVERSITARIA DE ENVIGADO FACULTAD DE INGENIERÍAS LÓGICA DE PROGRAMACIÓN – Nivel I Si (sw == ‘s’) Ent Esc “Cédula encontrada”; Sino Esc “Dato no encontrado”; Fin-si Fin-Subprograma Ejemplo de Búsqueda REPETIDA por campo ÙNICO: El vector documento almacena el número de cédula de 20 personas. Permitir buscar si se encuentran o no n cédulas ingresadas por teclado: Sub_buscardoc () Inicio Const Int: N [20]; String Vdoc [N][11], doc_b [11]; //documento a buscar Int x; Char sw; Esc “Digite No. De documento a buscar o 0 para salir: “; Lea doc_b; //en este caso se maneja ciclo externo con centinela: MQ (doc_b <> “0”) HAGA //Antes del ciclo de búsqueda se inicializa el suiche y el contador de búsqueda: x = 1; sw = ‘n’; MQ ((x < N) && (sw == ‘n’)) HAGA Si (Vdoc [x] == doc_b) Ent Sw = ‘s’; Sino x = x + 1; fin-si Fin-MQ //Al salir de la búsqueda SIEMPRE se evalúa el suiche para determinar si el dato fue encontrado o no: Si (sw == ‘s’) Ent Esc “Cédula encontrada”; Sino Esc “Dato no encontrado”; Fin-si // Se lee de nuevo la variable centinela: Esc “Digite No. De documento a buscar o 0 para salir: “; Lea doc_b;
  • 4. INSTITUCIÓN UNIVERSITARIA DE ENVIGADO FACULTAD DE INGENIERÍAS LÓGICA DE PROGRAMACIÓN – Nivel I Fin-MQ Fin-Subprograma Ejemplo de Búsqueda ÚNICA por campo REPETIDO: El vector EC almacena el estado civil de 20 personas. Informar cuántas personas son casadas: Sub_buscarEC () Inicio Const Int: N [20]; Char VecEC [N], ec_b = ‘c’; //estado civil a buscar igual a ‘c’ de Casado. Int x = 1, cont = 0; Char sw = ‘n’; MQ (x < N) HAGA Si (VecEC [x] == ec_b) Ent Sw = ‘s’; cont = cont + 1; Fin-si x = x + 1; Fin-MQ //Al salir de la búsqueda SIEMPRE se evalúa el suiche para determinar si el dato fue encontrado o no: Si (sw == ‘s’) Ent Esc “Personas casadas”, cont; Sino Esc “No hay personas casadas”; Fin-si Fin-Subprograma Ejemplo de Búsqueda REPETIDA por campo REPETIDO: El vector EC almacena el estado civil de 20 personas. Permitir realizar búsquedas para determinar cuántas personas hay con un estado civil leído desde teclado: Sub_buscarEC () Inicio Const Int: N [20]; Char VecEC [N], ec_b; Int x, cont; Char sw;
  • 5. INSTITUCIÓN UNIVERSITARIA DE ENVIGADO FACULTAD DE INGENIERÍAS LÓGICA DE PROGRAMACIÓN – Nivel I Llamar sub_validarEC (ec_b); //en este caso se maneja ciclo externo con centinela y se manda a validar que el estado civil a buscar sea correcto: MQ (ec_b <> ‘*’) HAGA //Antes del ciclo de búsqueda se inicializan el suiche, el contador de búsqueda y el contador que cuenta las personas con el estado civil a buscar: x = 1; cont = 0; sw = ‘n’; MQ (x < N) HAGA Si (VecEC [x] == ec_b) Ent Sw = ‘s’; cont = cont + 1; Fin-si x = x + 1; Fin-MQ //Al salir de la búsqueda SIEMPRE se evalúa el suiche para determinar si el dato fue encontrado o no: Si (sw == ‘s’) Ent Esc “Personas con el estado civil buscado”, cont; Sino Esc “Ninguna persona tiene ese estado civil”; Fin-si // Se lee de nuevo la variable centinela, en este caso, se invoca de nuevo el subprograma de validación: Llamar sub_validarEC (ec_b); Fin-MQ Fin-Subprograma Sub_validarEC (char: ec_b) Inicio Ec_b= ‘1’; //se le lleva dato erróneo para obligarlo a entrar al ciclo de validación: MQ ((ec_b <> ‘*’) || (ec_b <> ‘s’) || (ec_b <> ‘c’) || (ec_b <> ‘d’) || (ec_b <> ‘v’)) HAGA Esc “Ingrese estado civil a buscar: s para soltero, c para casado, d para divorciado, v para viudo o * para salir: “; Lea ec_b; Fin-MQ Fin-sub_validarEC
  • 6. INSTITUCIÓN UNIVERSITARIA DE ENVIGADO FACULTAD DE INGENIERÍAS LÓGICA DE PROGRAMACIÓN – Nivel I BÚSQUEDA LINEAL: En este caso podemos hallar la posición de un elemento dentro de un vector ordenado. El Método es el siguiente: 1. Se halla el elemento central del vector 2. Si coincide con elemento a buscar termina la búsqueda (rompimiento de control). 3. Si el elemento buscado es menor que el central se sabe que está en la primera mitad del vector. 4. Si el elemento buscado es mayor que el central se sabe que está en la segunda mitad del vector. 5. Se selecciona la mitad del vector en la cual se cree se halla el elemento y se repite todo el proceso anterior. 6. Si en la mitad donde se supone que se encuentra el elemento es menor que uno el elemento no se encuentra en el vector y termina la búsqueda. Sub_Busquedabinaria () Inicio Const Int: N [20]; Char Vec [N], dato_b; //Se asume que el vector está lleno y ordenado. Int x = 1, cont = 0; Int bajo; //limite inferior del vector Int alto; //limite superior Int central; //limite central bajo = 1; alto = N; central = (alto + bajo) div 2; MQ ((bajo <= alto) && (Vec[central] <> dato_b)) HAGA Si (dato_b < vector [central]) Ent alto = (central – 1); Sino bajo = central + 1; Fin-si central = (alto + bajo) div 2; Fin_MQ Si (dato == vector [central]) Ent Esc “ valor encontrado en: “, central; SINO Esc “ valor no encontrado“; Fin-si Fin_Sub_Busquedabinaria
  • 7. INSTITUCIÓN UNIVERSITARIA DE ENVIGADO FACULTAD DE INGENIERÍAS LÓGICA DE PROGRAMACIÓN – Nivel I TALLER DE BÚSQUEDA EN VECTORES: 1. Se tienen vectores paralelos de 50 posiciones, permitir almacenar la información correspondiente a N vuelos diarios de una aerolínea: número de vuelo (no repetido), trayecto (validar menú 1. Medellín – Bogotá, 2. Medellín – Cali, 3. Medellín – San Andrés). Permitir consultar por número de vuelo y por trayecto. 2. Almacenar en vectores paralelos de 500 posiciones la información correspondiente a los automotores vendidos por Sofasa: serial del motor (no repetido), marca, modelo, categoría (T. Turismo – F. Familiar – D. Deportivo – S Transporte), tipo de combustible (gas o gasolina). Permitir realizar consultas por serial del motor y por modelo. Mostrar cuántos vehículos se vendieron de cada categoría. 3. De 100 inscritos y preseleccionados para una maratón internacional, se desean seleccionar los atletas que cumplan con las siguientes condiciones: haber terminado el maratón de selección en un tiempo determinado. Los tiempos son 150 minutos para hombres menores de 20 años; 160 minutos para hombres con una edad mayor o igual a 20 y menor de 40 años y 180 minutos para hombres mayores de 40. Almacenar en vectores paralelos de 100 posiciones los datos de todos los atletas que fueron seleccionados por cumplir las condiciones: documento de identidad (no repetido), edad, ciudad de origen (validar un menú de 5 opciones posibles). Permitir realizar consultas de los datos de los atletas por: documento y ciudad de origen. Imprimir el promedio de edad de los atletas seleccionados. 4. Una librería maneja los siguientes datos de los libros a la venta: código (no repetido), nombre, autor, editorial. Permitir ingresar en vectores paralelos de 1000 posiciones, los datos de los N libros adquiridos para la venta. Permitir realizar consultas repetidas por código y autor. 5. Una empresa maneja registros con los datos de sus empleados: documento (no repetido), cargo, salario mensual. Permitir realizar consultas repetidas por los tres campos.