06.05.2013 Views

CONTENIDO DE LA LECCIÓN 18

CONTENIDO DE LA LECCIÓN 18

CONTENIDO DE LA LECCIÓN 18

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

MIGUEL Á. TOLEDO MARTÍNEZ<br />

SOLUCIÓN <strong>DE</strong> PROBLEMAS EN ACCIÓN: Búsqueda en un arreglo con iteración<br />

(Búsqueda secuencial)<br />

PROBLEMA<br />

Diversas aplicaciones requieren de un programa para buscar un determinado elemento en un arreglo. Para<br />

realizar esta tarea se usan dos algoritmos comunes que son búsqueda secuencial o serial y búsqueda<br />

binaria. Por lo común, la búsqueda secuencial se utiliza para arreglos no ordenados y la búsqueda binaria<br />

en arreglos ordenados. En el siguiente problema veremos la búsqueda secuencial; en un problema posterior<br />

veremos la búsqueda binaria.<br />

Desarrolle una función que busque, en forma secuencial, en un arreglo de enteros, el valor de un elemento<br />

dado y que regrese el índice del elemento si éste se encuentra en el arreglo.<br />

<strong>DE</strong>FINICIÓN <strong>DE</strong>L PROBLEMA<br />

Debido a que se trata de una función, la definición del problema se enfocará a la interfaz de la función. Por<br />

consiguiente, se debe considerar que la función aceptará y regresará algo. Llamaremos a la función<br />

busquedaSec() A partir del enunciado del problema, la función deberá buscar en un arreglo de enteros un<br />

valor de un elemento determinado. De esta manera, la función necesita dos cosas para realizar este trabajo:<br />

(1) el arreglo y (2) el elemento que se va a buscar. Estos serán los parámetros de la función, ¿deberán ser<br />

de valor o de referencia? Bueno, la función no cambiará ni al arreglo ni al elemento a buscar, ¿es<br />

correcto? Por lo tanto, los parámetros serán por valor.<br />

Después, necesitamos determinar que va a regresar la función al programa llamador. A partir del enunciado<br />

del problema, se observa que la función necesita regresar el índice del elemento buscado, si se encuentra en<br />

el arreglo. En C++ todos los índices de los arreglos son enteros, por lo tanto la función regresará un valor<br />

entero. Pero, ¿qué pasa si el elemento que se busca no se encuentra en el arreglo? Se regresará algún<br />

valor entero que aclare esta situación. Dado que, en C++ los índices de los arreglos se encuentran en un<br />

rango de 0 a algún entero positivo finito, si el elemento no se encuentra en el arreglo, regresará el entero -1.<br />

De esta manera usaremos –1 para indicar la condición no encontrado, porque en C++ ningún índice de<br />

arreglo tiene este valor. La descripción de la interfaz de la función será:<br />

Función busquedaSec(): Busca en un arreglo entero un valor de elemento<br />

dado.<br />

Acepta: Un arreglo de enteros y el elemento que se busca.<br />

Regresa: El índice del arreglo del elemento, si se encuentra, o<br />

el valor –1 si no se encuentra el elemento.<br />

La descripción de interfaz de la función anterior proporciona toda la información necesaria para escribir la<br />

interfaz de la función, como sigue:<br />

int busquedaSec(int arreglo[MAX], int elemento)<br />

La interfaz indica que la función aceptará dos cosas: (1) un arreglo de elementos enteros MAX y (2) un<br />

valor entero, llamado elemento, que será el valor que se busca.<br />

La siguiente tarea es desarrollar el algoritmo de búsqueda secuencial.<br />

ARREGLOS, APUNTADORES Y ESTRUCTURAS – <strong>LECCIÓN</strong> <strong>18</strong> <strong>18</strong>-45

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!