Documentos de Académico
Documentos de Profesional
Documentos de Cultura
8.3
definición informal
yo
Para resolver este problema, necesitamos un enfoque intuitivo. En primer lugar utilizar un
La figura 8.2 muestra una forma de resolver este problema. El algoritmo recibe una
lista de cinco enteros como entrada y proporciona el mayor entero como salida.
8.5
Figura 8.2 Encontrar el número entero más grande entre cinco enteros
8.6
Definición de acciones
Figura 8.2 no muestra lo que debe hacerse en cada paso. Podemos modificar la
cifra para mostrar más detalles.
En primer lugar, la acción en el primer paso es diferente a las de los otros pasos.
8.8
Refinamiento (2)
La razón por la que el primer paso es diferente de los otros pasos se debe a
que más grande no se ha inicializado. Si inicializamos más grande de - ∞ ( menos
infinito), entonces el primer paso puede ser el mismo que los otros pasos, por
lo que añadir un nuevo paso, llamándolo paso 0 para demostrar que se debe
hacer antes de procesar cualquier número entero.
8.9
Figura 8.4 FindLargest refinada
8.10
Generalización
¿Es posible generalizar el algoritmo? Queremos encontrar el más grande de norte en
positivos, donde norte puede ser 1000,
1.000.000, o más.
Podemos seguir la Figura 8.4 y repetir cada paso. Pero si cambiamos el algoritmo para
un programa, entonces tenemos que escribir realmente las acciones de norte ¡pasos!
Hay una mejor manera de hacer esto. Podemos indicar al ordenador que repetir los pasos norte
8.11
Figura 8.5 Generalización de FindLargest
8.12
8-2 tres construcciones
1. secuencia ,
2. La decisión ( selección)
3. repetición
8.13
Figura 8.6 tres construcciones
8.14
Secuencia
Un algoritmo, y, finalmente, un programa, es una secuencia de instrucciones, que
puede ser una simple instrucción o cualquiera de los otros dos constructos.
Decisión
Necesitamos poner a prueba una condición. Si el resultado de la prueba es verdadera,
seguimos una secuencia de instrucciones: si es falso, se sigue una secuencia diferente de
instrucciones. Esto se conoce como la decisión (selección) constructo. ( if-else )
8.15
Repetición
En algunos problemas, la misma secuencia de instrucciones se debe repetir.
Se realiza el tratamiento con la repetición o lazo
construir. Encontrar el mayor entero entre un conjunto de números enteros puede utilizar una
8.16
REPRESENTACIÓN 8
Durante las últimas décadas, las herramientas han sido diseñadas para
este fin. Dos de estas herramientas, UML y
pseudocódigo , Se presentan aquí.
8.17
UML
Unified Modeling Language (UML) es una revista ilustrada
UML se trata en detalle en el Apéndice B. Aquí sólo mostramos cómo los tres
constructos se representan usando UML (Figura
8.7).
8.18
Figura 8.7 UML para tres constructos
8.19
pseudocódigo
Pseudocódigo es una representación en idioma Inglés Ahi esta hay un estándar para
pseudocódigo - algunas personas utilizan una gran cantidad de detalles, otros utilizan
menos. Algunos utilizan un código que está cerca de Inglés, mientras que otros utilizan
una sintaxis como el lenguaje de programación Pascal.
8.20
Figura 8.8 Pseudocódigo para tres constructos
8.21
Ejemplo 8.1
8.22
Ejemplo 8.2
Escribir un algoritmo para cambiar una calificación numérica a un / no pase de grado pase.
8.23
Ejemplo 8.3
Escribir un algoritmo para cambiar una calificación numérica (número entero) a un grado de la letra.
8.24
Ejemplo 8.4
Escribir un algoritmo para encontrar el más grande de un conjunto de números enteros. No sabemos
el número de enteros.
8.25
Ejemplo 8.5
Escribir un algoritmo para encontrar el más grande de los 1000 primeros números enteros en un
conjunto de números enteros.
8.26
8
yo
Algoritmo:
Un conjunto ordenado de pasos inequívocos que produce una
resultar y termina en un tiempo finito.
8.27
1. bien definidos
Un algoritmo debe ser un bien definido, conjunto ordenado de instrucciones .
2. pasos inequívocos
Cada paso en un algoritmo debe estar claramente y sin ambigüedad
definido.
Si un paso es añadir dos números enteros, debemos definir dos “ enteros ” ,
“ añadir ” la operación: no podemos, por ejemplo, utilizar el mismo símbolo
para significar además en un lugar y en otro lugar la multiplicación.
8.28
3. Producir un resultado
Un algoritmo debe producir un resultado, de lo contrario es inútil. El resultado
puede ser datos devueltos al algoritmo de llamada, o algún otro efecto (por
ejemplo, impresión).
8.29
8
8.30
Suma
Podemos añadir dos o tres enteros con mucha facilidad, pero ¿cómo podemos añadir muchos
(Figura 8.9).
8.31
Figura 8.9 algoritmo de suma
8.32
Producto
Otro algoritmo común es encontrar el producto de una lista de números enteros.
La solución es simple: utilizar el operador de multiplicación en un bucle (Figura
8.10).
8.33
Figura 8.10 algoritmo de producto
8.34
Más pequeño y más grande
La idea era escribir un constructo decisión de buscar el mayor de dos números enteros. Si
ponemos esta construcción en un bucle, podemos encontrar la mayor de una lista de números
enteros.
Encontrar el número entero más pequeño entre una lista de números enteros es similar, con
En primer lugar, se utiliza un constructo decisión de buscar el menor de dos números enteros .
En segundo lugar, inicializamos con un gran número entero en lugar de una muy pequeña .
8.35
Clasificación
8.36
tipo de selección
en un ordenación por selección , la lista para ser ordenados se divide en dos sublistas -
ordenados y sin clasificar - que están separados por una pared imaginaria.
Nos encontramos con la elemento más pequeño en la lista secundaria sin clasificar y
intercambiarlo con el elemento al principio de la lista secundaria sin clasificar. Después de
cada selección y de intercambio, la pared imaginaria entre los dos sublistas mueve un
elemento delante.
8.40
tipo burbuja
En el método de ordenamiento de burbuja, la lista para ser ordenados también se divide en dos
8.41
Figura 8.15 Ejemplo de ordenamiento de burbuja
8.42
Función BubbleSort (datos de tipo [1..n])
Índice de i, j;
Para i de N a 2 do
Para j de 1 a i - 1 hacer
Si los datos [j]> datos [j + 1] y luego
datos de Exchange [j] y los datos [j + 1] End
8.43
tipo de inserción
El algoritmo de ordenación por inserción es una de las técnicas de selección más comunes,
y que a menudo es utilizado por jugadores de cartas . Cada tarjeta de un jugador recoge se
inserta en el lugar que le corresponde en su mano de cartas para mantener una secuencia
particular.
8.44
Figura 8.17 Ejemplo de ordenación por inserción
8.45
Función InsertionSort (datos de tipo [1..n]) Índice i, j;
valor de tipo;
8.46
buscando
búsqueda secuencial se puede utilizar para localizar un elemento en cualquier lista, mientras que
8.47
búsqueda secuencial
8.48
Figura 8.18 Un ejemplo de una búsqueda secuencial
8.49
Búsqueda binaria
8.50
Figura 8.19 Ejemplo de una búsqueda binaria
8.51
8-6 subalgoritmos
8.52
Figura 8.20 Concepto de un subalgoritmo
8.53
carta de estructura
8.54
8-7 RECURSION
8.55
definición iterativa
Para estudiar un ejemplo sencillo, considere el cálculo de un factorial. El
factorial de un número entero es el producto de los valores integrales de 1
al número entero. La definición es iterativo (Figura 8.21). Un algoritmo es
iterativa cada vez que la definición no implica el propio algoritmo.
8.58
solución iterativa
Esta solución implica generalmente un bucle.
8.59
solución recursiva
La solución recursiva no necesita un bucle, como el propio concepto de recursividad
implica la repetición.
8.60