# PR 3 [Volver a la página principal de "Fundamentos de la Programación"](../README.md) **Índice** - [PR 3](#pr-3) - [17. Esquemas de recorrido y búsqueda](#17-esquemas-de-recorrido-y-búsqueda) - [17.1. Aprocimación intuitiva](#171-aprocimación-intuitiva) - [17.1.1. Ejemplo 1](#1711-ejemplo-1) - [17.1.2. Ejemplo 1](#1712-ejemplo-1) - [17.2. Esquema de recorrido](#172-esquema-de-recorrido) - [17.3. Esquema de búsqueda](#173-esquema-de-búsqueda) - [17.3.1. Ejemplo](#1731-ejemplo) - [17.4. Ejercicios](#174-ejercicios) ## 17. Esquemas de recorrido y búsqueda Ya hemos visto las estructuras secuencial, alternatica e iterativa, con esto, ya podemos resolver cualquier problema. Ahora vamos a ver esquemas de recorrido y búsqueda, que son una especie de patrones o estructuras predeterminadas para diseñar algoritmos de manera más sistemática y ganar en eficiencia y fiabilidad. Un esquema es una especie de plantilla que nos permite solucionar un tipo de problema específico con adaptaciones a cada caso concreto. Un ejemplo de aplicación de esquemas de recorrido y búsqueda es para resolver problemas de tratamiento de secuencias de manera más eficiente y sistemática. ### 17.1. Aprocimación intuitiva La idea es que, en lugar de ir a ciegas, sigamos un esquema de recorrido o búsqueda que nos permita ir avanzando de manera sistemática y eficiente. Por ejemplo, si tenemos que recorrer una matriz, podemos hacerlo por filas o por columnas, o si tenemos que buscar un elemento en una lista, podemos hacerlo de manera secuencial o binaria. #### 17.1.1. Ejemplo 1 Vamos a calular la temperatura media de todo el año suponiendo que vamos leyendo por el canal de entrada las temperaturas medias de cada día: ```alg algorithm averageTemp var temperature: real; average: real; i: integer; end var i:= 0; average:= 0; while i < 365 do temperature:= readReal(); average:= average + temperature; i:= i + 1; end while write(average / 365.0); end algorithm ``` ```c #include int main(int argc, char** argv) { float temperature; float average; int i; i = 0; average = 0; while (i < 365) { scanf("%f", &temperature); average = average + temperature; i = i + 1; } printf("%f\n", average / 365.0); return 0; } ``` #### 17.1.2. Ejemplo 1 ### 17.2. Esquema de recorrido ### 17.3. Esquema de búsqueda #### 17.3.1. Ejemplo ### 17.4. Ejercicios [Volver arriba](#pr-1)