Stm32 seleccione la placa de depuración. Trabajar con el indicador LCD en la placa de desarrollo STM32L-Discovery. ¿Para qué sirven los jumpers BOOT0 y BOOT1?

Entrada antigua en un recibo de pago de impuestos (“yasaka”). Esto significa la cantidad de 1232 rublos. 24 kopeks Ilustración del libro: Yakov Perelman "Aritmética entretenida"

También Richard Feynman en el libro “¡Por ​​supuesto que está bromeando, Sr. Feynman!” Contó varios métodos de cálculo mental. Aunque es muy trucos simples, no siempre están incluidos en el plan de estudios escolar.

Por ejemplo, para elevar rápidamente al cuadrado un número X alrededor de 50 (50 2 = 2500), debes restar/sumar cien por cada diferencia de unidad entre 50 y X, y luego sumar la diferencia al cuadrado. La descripción suena mucho más complicada que el cálculo real.

52 2 = 2500 + 200 + 4
47 2 = 2500 – 300 + 9
58 2 = 2500 + 800 + 64

El joven Feynman aprendió este truco gracias a su colega físico Hans Bethe, que en ese momento también trabajaba en Los Álamos en el Proyecto Manhattan.

Hans mostró algunas técnicas más que utilizó para realizar cálculos rápidos. Por ejemplo, para calcular raíces cúbicas y exponenciación, conviene recordar la tabla de logaritmos. Este conocimiento simplifica enormemente los complejos operaciones aritméticas. Por ejemplo, calcula mentalmente el valor aproximado de la raíz cúbica de 2,5. De hecho, durante tales cálculos, en su cabeza funciona una especie de regla de cálculo, en la que la suma y división de números se reemplaza por la suma y resta de sus logaritmos. Lo más conveniente.


regla de cálculo

Antes de la llegada de las computadoras y las calculadoras, la regla de cálculo se usaba en todas partes. Este es un tipo de “computadora” analógica que le permite realizar varias operaciones matemáticas, incluyendo multiplicación y división de números, elevación al cuadrado y al cubo, cálculo de raíces cuadradas y cúbicas, cálculo de logaritmos, potenciación, cálculo trigonométrico y funciones hiperbólicas y algunas otras operaciones. Si divides el cálculo en tres pasos, usando una regla de cálculo puedes elevar los números a cualquier potencia real y extraer la raíz de cualquier potencia real. La precisión de los cálculos es de aproximadamente 3 cifras significativas.

Para realizar rápidamente cálculos complejos mentalmente, incluso sin una regla de cálculo, es una buena idea memorizar los cuadrados de todos los números, al menos hasta el 25, simplemente porque se utilizan a menudo en los cálculos. Y una tabla de grados es la más común. Es más fácil recordar que volver a calcular cada vez que 5 4 = 625, 3 5 = 243, 2 20 = 1.048.576 y √3 ≈ 1,732.

Richard Feynman mejoró sus habilidades y gradualmente notó nuevos patrones y conexiones interesantes entre los números. Da el siguiente ejemplo: “Si alguien comenzara a dividir 1 entre 1,73, inmediatamente podría
responde que sería 0,577, porque 1,73 es un número cercano a la raíz cuadrada de tres. Entonces 1/1.73 es aproximadamente un tercio raíz cuadrada de 3."

Una aritmética mental tan avanzada habría sorprendido a los colegas de aquellos días en los que no había ordenadores ni calculadoras. En aquellos días, absolutamente todos los científicos sabían contar bien mentalmente, por lo que para lograr el dominio era necesario sumergirse profundamente en el mundo de los números.

Hoy en día, la gente saca una calculadora para simplemente dividir 76 entre 3. Se ha vuelto mucho más fácil sorprender a los demás. En la época de Feynman, en lugar de una calculadora, había ábacos de madera, con los que también se podían realizar operaciones complejas, incluida la extracción de raíces cúbicas. El gran físico ya se dio cuenta entonces de que, con tales herramientas, las personas no necesitan memorizar muchas combinaciones aritméticas, sino simplemente aprender a hacer rodar bolas correctamente. Es decir, las personas con “expansores” cerebrales no conocen números. Se enfrentan peor a las tareas en modo "fuera de línea".

Aquí hay cinco muy consejos simples cálculos mentales, recomendados por Yakov Perelman en el manual “ conteo rápido» Editorial 1941.

1. Si uno de los números que se multiplican se descompone en factores, conviene multiplicar por ellos de forma secuencial.

225 × 6 = 225 × 2 × 3 = 450 × 3
147 × 8 = 147 × 2 × 2 × 2, es decir, duplicar el resultado tres veces

2. Al multiplicar por 4, basta con duplicar el resultado dos veces. De manera similar, al dividir entre 4 y 8, el número se reduce a la mitad dos o tres veces.

3. Al multiplicar por 5 o 25, el número se puede dividir entre 2 o 4 y luego agregar uno o dos ceros al resultado.

74 × 5 = 37 × 10
72 × 25 = 18 × 100

Aquí es mejor evaluar de inmediato cuál es más fácil. Por ejemplo, 31 × 25 se multiplica más convenientemente como 25 × 31 de forma estándar, es decir, como 750+25, y no como 31×25, es decir, 7,75×100.

Al multiplicar por un número cercano a un número redondo (98, 103), es conveniente multiplicar inmediatamente por numero redondo(100) y luego resta/suma el producto de la diferencia.

37 × 98 = 3700 – 74
37 × 104 = 3700 + 148

4. Para elevar al cuadrado un número que termina en 5 (por ejemplo, 85), multiplica el número de decenas (8) por él más uno (9) y suma 25.

8 × 9 = 72, asigna 25, entonces 85 2 = 7225

Por qué se aplica esta regla se puede ver en la fórmula:

(10X + 5) 2 = 100X 2 + 100X + 25 = 100X (X+1) + 25

La técnica también se aplica a fracciones decimales que terminan en 5:

8,5 2 = 72,25
14,5 2 = 210,25
0,35 2 = 0,1225

5. Al elevar al cuadrado, no te olvides de la conveniente fórmula.

(a + b) 2 = a 2 + b 2 + 2ab
44 2 = 1600 + 16 + 320

Por supuesto, todos los métodos se pueden combinar entre sí, creando técnicas más convenientes y efectivas para situaciones específicas.


Continuando la conversación sobre potencia de un numero Es lógico descubrir cómo encontrar el valor del título. Este proceso se llama exponenciación. En este artículo estudiaremos cómo se realiza la exponenciación y tocaremos todo. posibles indicadores grados: natural, total, racional e irracional. Y según la tradición, consideraremos en detalle soluciones a ejemplos de elevación de números a varias potencias.

Navegación de páginas.

¿Qué significa "exponenciación"?

Empecemos explicando qué se llama exponenciación. Aquí está la definición relevante.

Definición.

exponenciación- esto es encontrar el valor de la potencia de un número.

Por lo tanto, encontrar el valor de la potencia de un número a con exponente r y elevar el número a a la potencia r son lo mismo. Por ejemplo, si la tarea es "calcular el valor de la potencia (0,5) 5", entonces se puede reformular de la siguiente manera: "Eleva el número 0,5 a la potencia 5".

Ahora puedes ir directamente a las reglas mediante las cuales se realiza la exponenciación.

Elevar un número a una potencia natural.

En la práctica, la igualdad basada en se suele aplicar en la forma . Es decir, cuando se eleva un número a a una potencia fraccionaria m/n, primero se toma la raíz enésima del número a, después de lo cual el resultado resultante se eleva a una potencia entera m.

Veamos soluciones a ejemplos de elevación a una potencia fraccionaria.

Ejemplo.

Calcula el valor del grado.

Solución.

Mostraremos dos soluciones.

Primera manera. Por definición de grado con exponente fraccionario. Calculamos el valor del grado bajo el signo de la raíz y luego extraemos raíz cúbica: .

Segunda vía. Según la definición de grado con exponente fraccionario y basándose en las propiedades de las raíces, se cumplen las siguientes igualdades: . Ahora extraemos la raíz. , finalmente lo elevamos a una potencia entera .

Evidentemente, los resultados obtenidos al elevar a una potencia fraccionaria coinciden.

Respuesta:

Tenga en cuenta que un exponente fraccionario se puede escribir como una fracción decimal o un número mixto, en estos casos se debe reemplazar con la fracción ordinaria correspondiente y luego elevarlo a una potencia.

Ejemplo.

Calcula (44,89) 2,5.

Solución.

Escribamos el exponente en forma de fracción ordinaria (si es necesario, consulte el artículo): . Ahora realizamos la elevación a una potencia fraccionaria:

Respuesta:

(44,89) 2,5 =13 501,25107 .

También hay que decir que elevar números a potencias racionales es un proceso bastante laborioso (especialmente cuando el numerador y el denominador del exponente fraccionario contienen bastante números grandes), que normalmente se lleva a cabo utilizando tecnología informática.

Para concluir este punto, nos centraremos en elevar el número cero a una potencia fraccionaria. Le dimos el siguiente significado a la potencia fraccionaria de cero de la forma: cuando tenemos , y en cero elevado a la potencia m/n no está definido. Entonces, cero elevado a una potencia fraccionaria positiva es cero, por ejemplo, . Y cero en una potencia fraccionaria negativa no tiene sentido, por ejemplo, las expresiones 0 -4,3 no tienen sentido.

Elevando a un poder irracional

A veces es necesario descubrir el significado. potencias de un número con exponente irracional. Al mismo tiempo, en propósitos prácticos Generalmente basta con obtener el valor del grado hasta cierto signo. Observemos de inmediato que en la práctica este valor se calcula utilizando computadoras electrónicas, ya que elevarlo manualmente a una potencia irracional requiere gran cantidad cálculos engorrosos. Pero aún así lo describiremos en esquema general la esencia de la acción.

Para obtener un valor aproximado de la potencia de un número a con exponente irracional, se toma alguna aproximación decimal del exponente y se calcula el valor de la potencia. Este valor es un valor aproximado de la potencia del número a con un exponente irracional. Cuanto más precisa se tome inicialmente la aproximación decimal de un número, más valor exacto Al final se obtendrá el título.

Como ejemplo, calculemos el valor aproximado de la potencia de 2 1.174367... . Tomemos la siguiente aproximación decimal del exponente irracional: . Ahora elevamos 2 a la potencia racional 1,17 (describimos la esencia de este proceso en el párrafo anterior), obtenemos 2 1,17 ≈2,250116. De este modo, 2 1,174367... ≈2 1,17 ≈2,250116 . Si tomamos una aproximación decimal más precisa del exponente irracional, por ejemplo, obtenemos un valor más preciso del exponente original: 2 1,174367... ≈2 1,1743 ≈2,256833 .

Referencias.

  • Vilenkin N.Ya., Zhokhov V.I., Chesnokov A.S., Shvartsburd S.I. Libro de texto de matemáticas para 5to grado. instituciones educativas.
  • Makarychev Yu.N., Mindyuk N.G., Neshkov K.I., Suvorova S.B. Álgebra: libro de texto para 7º grado. instituciones educativas.
  • Makarychev Yu.N., Mindyuk N.G., Neshkov K.I., Suvorova S.B. Álgebra: libro de texto para octavo grado. instituciones educativas.
  • Makarychev Yu.N., Mindyuk N.G., Neshkov K.I., Suvorova S.B. Álgebra: libro de texto para noveno grado. instituciones educativas.
  • Kolmogorov A.N., Abramov A.M., Dudnitsyn Yu.P. y otros Álgebra y los inicios del análisis: Libro de texto para los grados 10 - 11 de instituciones de educación general.
  • Gusev V.A., Mordkovich A.G. Matemáticas (un manual para quienes ingresan a las escuelas técnicas).

Imaginemos que no tenemos el operador de exponenciación a nuestra disposición, por lo que lo único que podemos hacer es multiplicar. Definir una potencia con un exponente entero no negativo x n permite realizar el cálculo utilizando n − 1 multiplicaciones. Pero la multiplicación es una operación bastante costosa (recuerde la multiplicación de columnas). Por tanto, intentaremos minimizar el número de multiplicaciones realizadas.

Por ejemplo, si el exponente en sí es una potencia de dos, n = 2 m, entonces solo se requieren m multiplicaciones, o más precisamente, elevar al cuadrado: x 2 m = x 2 2 2 ... 2. Esta útil observación puede extenderse a caso general, usando las igualdades obvias: x n = x 2 n 2 para n par, x ⁢ x 2 n − 1 2 para n impar. Puedes considerar estas fórmulas como una forma recursiva de calcular grados. Por supuesto, estas relaciones deben complementarse con condiciones de contorno x 0 = 1, x 1 = x.

Resulta que el número de multiplicaciones que se deben realizar para elevar a una potencia de acuerdo con el procedimiento recursivo descrito se calcula mediante la fórmula μ n = ζ n + 2 ⁢ ε n − 2, donde ζ n y ε n son los números de ceros y unos, respectivamente notación binaria números n. Este valor crece extremadamente lentamente al aumentar n, como lo demuestra la tabla:

norteμn
1 0
10 4
100 8
1000 14
10000 17
100000 21
1000000 25
10000000 30
100000000 37
1000000000 41
10000000000 43

Es muy poco probable que tuviéramos que elevar algo a la potencia 10000000000, pero si tuviéramos que hacerlo, ¡sólo nos las arreglaríamos con cuarenta y tres multiplicaciones!

La fórmula concuerda completamente con el caso especial considerado anteriormente, cuando n = 2 m y ζ = m, ε = 1. En el caso general, observamos que los dígitos en la descomposición binaria de un número son iguales a los restos de la división repetida de este número por dos. La aparición de un dígito cero activa el algoritmo recursivo a lo largo del primer camino (par), lo que añade una multiplicación adicional. El número uno selecciona la rama impar del algoritmo, lo que requiere dos multiplicaciones adicionales.

Analizaremos, además de la versión ingenua del programa, que no merece una discusión aparte por su trivialidad, dos más: recursiva e iterativa. Ambas opciones se basan en método rápido exponenciación.

Anteriormente, discutimos las ventajas de los algoritmos no recursivos sobre los recursivos. Sería tentador implementar una exponenciación rápida sin recursividad, utilizando un único bucle. Esta tarea resulta no ser tan sencilla como nos gustaría. Deberíamos armarnos con un método que nos permita construir ciclos no como resultado de la revelación divina (que nos visita muy raramente), sino con un propósito. El método de construir un ciclo usando una invariante es exactamente lo que necesitamos ahora.

El objetivo de cada comando del programa es acercarnos a la solución del problema, es decir, a una situación en la que las variables necesarias finalmente recibirán los valores necesarios calculados correctamente. La única forma de lograr este objetivo es cambiar los valores de las variables por otros nuevos; esto se hace mediante asignación. Veamos desde este punto de vista los comandos que forman el cuerpo del bucle.

Supongamos que el programa involucre un conjunto de variables X = x y … z. llamémoslo estado del programa. Un ciclo se considera correcto si como resultado de su funcionamiento se cumple la relación requerida entre las variables. Una relación es una declaración sobre variables. ¿Qué significa afirmación? Considere una función G ⁡ X que depende del estado y toma un valor lógico. La igualdad G ⁡ X = sí significa que el enunciado es verdadero, pero en caso contrario no es cierto. Llamaremos a la función G. función de destino de bucle.

El cuerpo del bucle consta de comandos que asignan nuevos valores F ⁡ X a las variables X: X ← F ⁡ X Por lo tanto, se construye una secuencia recurrente de estados del programa. El objetivo del bucle se logra cuando la función objetivo toma un valor verdadero, por lo que como condición del bucle podemos tomar la expresión ¬ G ⁡ X: bucle hasta ¬ G ⁡ X X ← F ⁡ X final del bucle Suponemos que por el Cuando ingresamos al ciclo, las variables X tenían valores iniciales X 0.

A menudo resulta inconveniente calcular la condición de terminación de un bucle G ⁡ X . Luego, si tiene suerte, puede intentar encontrar una condición más fuerte Q ⁡ X (es decir, una tal que Q ⁡ X ⇒ G ⁡ X se cumpla para todo X), que sea más fácil de calcular.

Todo este formalismo no responde a las preguntas de cómo encontrar una transformación F tal que el ciclo termine tarde o temprano, y cómo construir una condición para terminar el ciclo Q ⁡ X . método invarianteayuda a encontrar tanto la transformación como la condición.

El papel clave en el método lo desempeña invariante de bucle- otra función de estado que toma valores lógicos. La función I ⁡ X se denomina invariante de bucle si se cumplen las siguientes condiciones:

    I ⁡ X 0: el invariante adquiere un valor verdadero en el estado inicial;

    I ⁡ X ⇒ I ⁡ F ⁡ X - la verdad del invariante se conserva al pasar por el bucle;

    I ⁡ X ∧ Q ⁡ X ⇒ G ⁡ X - la verdad simultánea del invariante y las condiciones para finalizar el ciclo implican la verdad de la condición objetivo.

Si antes de entrar en el bucle nos encargamos de satisfacer la condición I ⁡ X y seleccionamos una transformación F ⁡ X que conserve la verdad del invariante y el bucle algún día termina, el objetivo se alcanzará al final del bucle.

Es hora de pasar de las ideas abstractas a ejemplos específicos. Construyamos un algoritmo para calcular ingenuamente el grado p = x n.

Proporcionemos en el programa un conjunto de variables X = p x n. Sus valores iniciales (antes de entrar al bucle) son X 0 = p 0 x 0 n 0 . Los valores de x 0 y n 0 son parámetros de entrada algoritmo.

Creemos un bucle, al final del cual la variable p recibirá el valor x 0 n 0 , de modo que función objetivo tomemos G ⁡ p x n = p = x 0 n 0 .

El algoritmo más simple (pero de ninguna manera el más rápido) reduce el problema de elevar n al problema de elevar n − 1, de modo que en el bucle la variable n disminuirá en uno antes de restablecerse a cero. Por lo tanto, haremos que Q ⁡ p x n = n = 0 sea la condición de terminación.

Ahora necesitamos elegir una invariante. Dejemos que a las variables p x n se les asigne nuevos valores p ′ x ′ n ′ en el cuerpo del bucle y, como decidimos anteriormente, n ′ = n − 1 . Es fácil comprobar que la función I ⁡ p x n = x 0 n 0 = p ⁢ x n es adecuada para el papel de invariante.

De hecho, I ⁡ p 0 x 0 n 0 = x 0 n 0 = p 0 ⁢ x 0 n 0 es cierto si establecemos p 0 = 1 . También se cumple la segunda condición que debe cumplir el invariante. Como I ⁡ p x n ⇒ I ⁡ p ′ x ′ n ′ debe satisfacerse, es decir, x 0 n 0 = p ⁢ x n ⇒ x 0 n 0 = p ′ ⁢ x ′ n − 1 , basta con poner p ′ = p ⁢ x y x′ = x para asegurar la invariancia. Finalmente, comprobemos la tercera condición, I ⁡ p x n ∧ Q ⁡ p x n ⇒ Q ⁡ p x n , es decir, x 0 n 0 = p ⁢ x n ∧ n = 0 ⇒ p = x 0 n 0 . Evidentemente, y se está haciendo. Mientras comprobamos las condiciones, también encontramos transformaciones que ocurren en el cuerpo del bucle.

Llegamos al algoritmo p ← 1 ciclo hasta n ≠ 0 p n ← p ⁢ x n − 1 fin de ciclo

El lector puede preguntarse por qué se necesitó una preparación tan compleja para obtener un algoritmo tan obvio. Quizás una versión rápida del algoritmo iterativo demuestre de manera más convincente el poder del método invariante.

Diferencia algoritmo rápido Lo ingenuo es que en el bucle la variable n, en lugar de disminuir en uno, se disminuye aproximadamente a la mitad. Más precisamente, si n es par, se divide por la mitad, y si es impar, se reduce en uno y luego se divide por la mitad. Está claro que con el tiempo n irá a cero y esto se convertirá, como en el algoritmo ingenuo, en la condición para finalizar el ciclo.

Tomemos el invariante I ⁡ p x n = x 0 n 0 = p ⁢ x n sin cambios del algoritmo ingenuo, y comencemos a asegurar que I ⁡ p x n ⇒ I ⁡ p ′ x ′ n ′ , donde esta vez n ′ = n 2 para n par, n − 1 2 para n impar. Entonces tendrás que asegurarte de que la condición x 0 n 0 = p ⁢ x n ⇒ x 0 n 0 = p ′ ⁢ x ′ n 2 para n par, x 0 n 0 = p ⁢ x ′ n − 1 2 para n impar , es decir p ⁢ x n = p ′ ⁢ x ′ n 2 para n par, p ⁢ x ′ n − 1 2 para n impar. Para que se cumpla esta igualdad, basta con establecer p ′ = p para n par, p ⁢ x para n impar, x ′ = x 2.

El resultado de nuestra investigación fue el algoritmo p ← 1 ciclo mientras n ≠ 0 si n mod 2 = 1 p ← p ⁢ x n ← n − 1 final si x ← x 2 n ← n 2 fin de ciclo

Hay que admitir que inicialmente compilamos este algoritmo sin recurrir al método de invariantes. El programa funcionó bien, pero a pesar de su brevedad, era difícil de entender. No pudimos encontrar ninguno las palabras correctas para explicarlo al lector y demostrar su exactitud. Y sólo el método de las invariantes proporcionaba a la vez una explicación y una prueba.

No asuma que el método invariante hace que la creación de cualquier bucle sea una tarea rutinaria. Todavía hay mucho espacio para la creatividad. Por ejemplo, construir una invariante en muchos casos no es lo más obvio. Por tanto, te contamos qué consideraciones nos llevaron a la invariante I ⁡ p x n = x 0 n 0 = p ⁢ x n. En busca de una relación invariante entre las variables del programa que siga siendo cierta al repetir el cuerpo del bucle, compilamos una tabla de valores para este conjunto de variables. Por ejemplo, elegimos elevar dos a la decimotercera potencia: p x n 1 2 13 2 4 6 2 16 3 32 256 1 8192 65536 0

El patrón observado en cada fila de la tabla se encontró rápidamente: el valor de la expresión p ⁢ x n resultó ser el mismo, e igual exactamente a 2 13 .

Resulta que el problema de elevar rápidamente un número a la potencia n está estrechamente relacionado con este problema. imaginemos computadora, que tiene un solo registro (celda de memoria) capaz de almacenar un número entero no negativo. El conjunto de instrucciones de esta máquina imaginaria contiene sólo dos instrucciones: D duplica el contenido del registro (de la palabra Doble- doble) y aumento el registro en uno ( Incremento- aumentar). Inicialmente el registro contiene cero. Debe encontrar el programa más corto para la máquina, después de cuya ejecución aparecerá el número n en el registro. Un programa es una secuencia finita de instrucciones D e I.

Para cualquier n dado, hay infinitos programas. Por ejemplo, el programa I I I... I siempre es adecuado (hay n I instrucciones en total). Además, asignar cualquier número de instrucciones D al principio el programa correcto, obviamente, no cambia su corrección.

Lo que obtenemos es una especie de sistema numérico: cada número entero no negativo puede asociarse a un programa para obtenerlo: una palabra sobre un alfabeto de dos letras (o mejor aún, números), D e I. La desventaja de este sistema numérico es su polisemia: para cada número hay infinitas representaciones. Puedes intentar eliminar este inconveniente eligiendo la más corta entre todas las representaciones posibles. Pero ni siquiera la presentación más breve es la única. Está claro que la representación más corta debe buscarse entre las que empiezan por I, ya que si empieza por D se puede acortar desechando esta D. Ahora observe que si I I... es la representación más corta, entonces I D... también es la representación más corta (aumentar uno por uno equivale a duplicarlo). Para todos los demás valores de registro, duplicar da un resultado mayor que sumar uno. Eliminamos esta única ambigüedad restante requiriendo además que la representación no contenga dos “dígitos” I seguidos. Llamemos a la representación resultante canónico.

Resulta que la representación canónica se puede obtener fácilmente a partir de la notación binaria del número n: es necesario reemplazar cada cero con un “dígito” D, y cada uno con “dígitos” D I. Una vez hecho esto, debe descartar el "dígito" D del comienzo del programa resultante, si aparece allí. Por ejemplo, para n = 13 = 1101 2 se obtiene el programa I D I D D I. Y efectivamente, 13 = 0 + 1 ⋅ 2 + 1 ⋅ 2 ⋅ 2 + 1.

Pero ¿qué tiene todo esto que ver con la rápida exponenciación? Sea alguna representación del exponente n. Esto significa que n proviene de cero como resultado de aumentos sucesivos de uno o duplicaciones. Pero sumar uno al exponente equivale a multiplicar todo el exponente por x, y duplicar el exponente equivale a elevarlo al cuadrado. Si tenemos una representación ya preparada del exponente a nuestra disposición, obtenemos el algoritmo p ← 1 ciclo para cada dígito δ de la representación n si δ = I p ← p ⁢ x en caso contrario p ← p 2 fin si fin del ciclo El El problema es que para obtener "dígitos ", la actuación primero deberá organizarse en otro ciclo. Combinar ambos ciclos será problemático, ya que los "números" se necesitan en el orden en que están escritos, es decir, de izquierda a derecha. Al mismo tiempo, es mucho más fácil obtenerlos de derecha a izquierda (al igual que los dígitos de una notación binaria de un número). Nuestra solución, por la cual adoptamos el método de las invariantes, evita esta dificultad. Ese bucle recibe implícitamente los “dígitos” de la representación del exponente de derecha a izquierda y, dependiendo del siguiente dígito, ejecuta acciones necesarias: bucle while n ≠ 0 si n mod 2 = 1 I n ← n − 1 en caso contrario D n ← n 2 final si fin del bucle Aquí en el caso de I debes ejecutar el comando p ← p ⁢ x , y en el caso de D - el comando x ← x 2. Por supuesto, antes del ciclo necesitas la asignación p ← 1 . El algoritmo resultante, como es fácil ver, es equivalente al creado anteriormente.

La principal dificultad de nuestra tarea fue crear un algoritmo. Ahora que los algoritmos están listos, no será difícil transferirlos a Perl. En este sentido, omitimos la sección "Desarrollo" y pasamos directamente a los programas ya preparados.




Arriba