Continuando con nuestra serie continua de artículos de AppleScript, hoy aprenderemos sobre el poder de los bucles de repetición, que pueden ahorrarle un montón de esfuerzo al automatizar tareas repetitivas y grupos de comandos. Después de aprender a usar las repeticiones, podrá reducir significativamente la cantidad de trabajo que se necesita para automatizar las tareas, lo que se traduce en una codificación más rápida y sencilla y una mayor productividad..
Antes de comenzar a aprender sobre los bucles de repetición, asegúrese de revisar algunos de nuestros tutoriales anteriores de AppleScript.
Si lo hiciste bien la primera vez, no es suficiente.?
Si alguna vez ha hecho alguna programación o secuencia de comandos antes, entonces sabe que los bucles son absolutamente críticos para lograr casi cualquier hazaña significativa. Sin embargo, si eres nuevo en la idea de la programación, te estarás preguntando por qué diablos querrías repetir algo. Si lo hiciste bien la primera vez, no es suficiente.?
La respuesta, por supuesto, se encuentra en el hecho de que frecuentemente trabajamos con grandes cantidades de datos. Si tiene quinientas imágenes en una carpeta y quiere hacer algo para cada una de ellas, puede escribir el mismo comando quinientas veces, apuntar a un archivo diferente cada vez, o usar un ciclo de repetición y guardar su cordura.
Si leyó mi artículo anterior sobre sentencias condicionales, entonces la estructura de un ciclo de repetición debería ser familiar. Al igual que con muchas otras construcciones de AppleScript, el bucle de repetición forma un bloque de código con un principio y un final.
[applecript]
repetir 3 veces
--comandos para repetir
fin de repetición
[/ applecript]
Como puede ver, la línea inicial comienza con "repetir" y luego describe los términos de la repetición. La sección central es donde se colocarán todos los diversos comandos que se repetirán y la última línea informará al compilador que aquí es donde termina el bucle..
El ejemplo de código anterior es bastante sencillo gracias al alto nivel de legibilidad de AppleScript. Cualquier cosa dentro de este bloque de repetición se repetirá tres veces, luego el script continuará (a menos que haya una acción de terminación en la repetición).
Una cosa que querrá tener en cuenta es que su código debe escribirse de tal manera que repetirlo realmente haga algo útil. A menudo ocurre que una sección de código dada será la misma, ya sea que la ejecutes una o mil veces. Depende de usted moldearlo de tal manera que la repetición cause progreso. Veremos cómo hacerlo a medida que aprendemos sobre los diferentes tipos de repeticiones disponibles..
En un artículo anterior, hablamos sobre cómo puede variar su Si declaraciones considerablemente a través de diferentes combinaciones de si, si no y si no. Los bucles de repetición pueden lograr un nivel de variación aún mayor porque en realidad hay muchos tipos diferentes de bucles de repetición en AppleScript. Vamos a repasar cada uno y cómo funciona..
El primer tipo de repetición es un bucle infinito. Esto ocurre si simplemente usamos un bloque de repetición sin modificadores de ningún tipo.
[applecript]
establece x en "monotonía"
repetir
mostrar el diálogo x
fin de repetición
[/ applecript]
Si ejecuta este script, durará para siempre, mostrando un diálogo cada vez que se ejecute. Hay muy pocos casos prácticos de uso en los que desearía una repetición infinita, por lo que, como regla general, asegúrese de agregar siempre código adicional a esa instrucción de repetición que rige la duración o el recuento de la repetición..
El siguiente tipo de repetición se mostró en nuestro primer ejemplo de código anterior. Aquí es donde expresamos específicamente cuántas veces queremos que se repita un trozo de código. Aquí hay un ejemplo:
[applecript]
repetir 2 veces
mostrar el cuadro de diálogo "¡Hola!"
fin de repetición
[/ applecript]
En este código, invocamos un cuadro de diálogo que contiene un mensaje simple. El bloque de repetición está configurado para ejecutarse dos veces, por lo que tan pronto como el usuario haga clic en uno de los botones del primer cuadro de diálogo, aparecerá otro en su lugar..
Como mencioné anteriormente, repetir lo mismo dos veces como esto no suele ser tan útil. Lo que debemos hacer en cambio es encontrar una manera de variar la salida. Veamos si podemos hacer que el bloque de repetición se ejecute dos veces, pero que muestre un mensaje diferente cada vez..
[applecript]
configura los Mensajes en "¡Hola!", "¡Aprendamos sobre AppleScript!"
establece x en 1
repetir 2 veces
Mostrar diálogo (ítem x de los Mensajes)
establece x en (x + 1)
fin de repetición
[/ applecript]
Esto puede parecer un poco confuso, pero no te preocupes, es muy simple. Comenzamos declarando una lista. Una lista le permite agrupar varias piezas de datos en una sola variable. Aquí hemos tomado dos cadenas diferentes y las hemos introducido en "theMessages". Podemos acceder a cada elemento de la lista por su número. Así que "¡Hola!" es "punto 1 de los mensajes
"y" ¡Aprendamos sobre AppleScript! "es"punto 2 de los mensajes
".
A continuación, aprovechamos una construcción extremadamente importante: un contador. Este es el secreto para hacer una repetición y hacer algo diferente cada vez que se ejecuta. Para este ejemplo, establecemos X para igualar 1, entonces incrementamos X Al final de la repetición. De esta manera, cada vez que se ejecuta la repetición, el valor de X aumenta en uno.
El efecto que esto tiene en nuestro código es profundo. La primera vez que se ejecuta la repetición., X es igual a 1, por lo que se accede al elemento 1 de nuestra lista y se muestra nuestro primer mensaje en el cuadro de diálogo. Entonces el valor de X incrementado a dos, lo que hace que el segundo mensaje se muestre la segunda vez a través de la repetición.
Propina: Observe que tenemos que usar un número (2) en una repetición específica, el deletrear para repetir algo "dos veces" no funcionará.
Si está buscando hacer un ciclo a través de una variable incremental, hay una manera más sucinta de hacerlo de lo que vimos en nuestro ejemplo anterior. Utilizando la repetir con construimos, configuramos un contador que está integrado en nuestro bucle y se puede acceder desde el código que está dentro. Veamos cómo se ve esto al ajustar el ejemplo del código anterior:
[applecript]
configura los Mensajes en "¡Hola!", "¿Cómo estás?", "¡Aprendamos sobre AppleScript!"
repetir con n del 1 al 3
Mostrar diálogo (item n de los mensajes)
fin de repetición
[/ applecript]
Como puede ver, esta vez tenemos tres mensajes para recorrer. Tenga en cuenta que nuestro código realmente ha sido simplificado sin embargo. Hemos eliminado la creación e incremento de una variable y en su lugar le hemos dicho al bloque de repetición que "repita con n de 1 a 3".
Lo que esto hace es crear una variable. norte, luego incrementarlo en uno cada vez que el bloque se repita. Los números de inicio y final están determinados por la parte "de 1 a 3". Así que la primera vez que se ejecuta, norte será igual a 1, luego 2 la próxima vez, y finalmente 3 la última vez.
El acceso rápido y fácil a la variable de conteo hace repetir con Una estructura de repetición extremadamente útil. Te encontrarás usando esto frecuentemente.
Hay otra forma de repetir con El bloque que elimina los números y, en su lugar, está estructurado específicamente para recorrer los elementos de una lista. Esto es exactamente lo que hemos estado tratando de lograr, por lo que es perfecto para nuestro ejemplo. Aquí está nuestro bloque de repetición, simplificado una vez más.
[applecript]
configura los Mensajes en "¡Hola!", "¿Cómo estás?", "¡Aprendamos sobre AppleScript!"
repetir con mensaje en los mensajes
mostrar mensaje de diálogo
fin de repetición
[/ applecript]
Esta vez, le pedimos a AppleScript que repita el bloque de código con el mensaje variable en la lista los mensajes. Lo que esto significa es que el bloque de código se ejecutará una vez para cada elemento de nuestra lista. Así que en este caso, se ejecutará tres veces. Cada vez que se ejecuta, el contenido del elemento de la lista actual se coloca en nuestro mensaje Variable, a la que accedemos en nuestro comando de diálogo de visualización más adelante..
El siguiente ciclo de repetición que puede aprovechar en su código es repetir mientras. Este es fácil de entender pero aún así es súper poderoso. Básicamente, le permite repetir un bloque de código dado mientras que un determinado booleano es verdad. Aquí hay un ejemplo simple que no hace mucho, pero ilustra el punto:
[applecript]
establece x en verdadero
poner y a 0
repita mientras x
si y> 10 entonces
establece x en falso
más
establece y en y + 1
terminara si
fin de repetición
[/ applecript]
En este script, el bloque de código se repetirá infinitamente mientras X es verdad. Sin embargo, dentro de la repetición, nos ponemos X a falso si y es mayor que 10, y aumentarlo si no. Esto significa que el código solo puede repetirse unas cuantas veces porque eventualmente y va a llegar a 10 y luego la repetición se detendrá.
Tenga en cuenta que podría haber utilizado esta estructura también:
[applecript]
repita mientras x es verdadero
--código para repetir
fin de repetición
[/ applecript]
Este código funciona bien, pero el "es cierto" no es necesario. La razón de esto llega al núcleo de lo que es un booleano y lo que hace. La variable X en nuestro ejemplo es igual cierto, los dos son uno y el mismo.
Ahora, si desea convertir esto en su cabeza, puede repetir algo hasta que su booleano se convierta en realidad. Esto funciona así:
[applecript]
repita mientras x es falso
--código para repetir
fin de repetición
[/ applecript]
Todo esto parece un poco abstracto, así que hagamos algo interesante con un repetir mientras lazo. Construiremos un juego básico de adivinación de números. Primero, estableceremos la variable de respuesta en un número aleatorio y nuestra variable de conjetura en 0. A continuación, crearemos una repetir mientras bucle que continúa mientras el usuario no sea igual a la respuesta seleccionada al azar.
Dentro de la repetición, mostraremos un diálogo y estableceremos el número devuelto a la variable de conjetura. Esta ventana de entrada de conjeturas persistirá hasta que la conjetura sea correcta..
[applecript]
Establecer respuesta a número aleatorio del 1 al 5
establecer conjetura a 0
repetir mientras que adivinar no es igual a responder
establecer conjetura al texto devuelto de (mostrar el cuadro de diálogo "Adivina otra vez. Elige un número del 1 al 5" respuesta predeterminada "1") como número
fin de repetición
mostrar el cuadro de diálogo "¡Eso es correcto!" y responder y "es la respuesta!"
[/ applecript]
El código "repetir mientras que adivinar no es igual a responder" No es muy fácil de leer. Lo negativo (no igual a) lo hace confuso. Podemos simplificar esto un poco si abandonamos el repetir mientras bucle y en lugar de mirar a un repetir hasta lazo. Aquí está el juego de conjetura de números reescrito:
[applecript]
Establecer respuesta a número aleatorio del 1 al 5
establecer conjetura a 0
repetir hasta (adivinar = responder)
establecer conjetura al texto devuelto de (mostrar el cuadro de diálogo "Adivina otra vez. Elige un número del 1 al 5" respuesta predeterminada "1") como número
fin de repetición
mostrar el cuadro de diálogo "¡Eso es correcto!" y responder y "es la respuesta!"
[/ applecript]
Como puede ver, esta repetición es mucho más sucinta y fácil de leer. Tenga en cuenta que este no siempre será el caso, a veces un repetir mientras Será el que te salve el código..
¡Uf! Hay muchos tipos diferentes de repeticiones, ¿no? Si te sientes abrumado, no lo estés. Todos son bastante simples y se sorprendería de la frecuencia con la que la frase correcta es lo primero que aparece en su cabeza. Solo para mantenerlo en el buen camino, aquí tiene una lista rápida de algunos ejemplos de repetición diferentes:
Cuando escriba un bucle de repetición, ejecute siempre algunas otras estructuras en su cabeza para ver si puede hacerlo más breve y conciso. Como vimos anteriormente, realmente puedes mejorar tu código manteniéndote abierto para usar diferentes construcciones.
Ahora debería ser un experto en repeticiones de AppleScript. Al aprovechar estos en conjunción con Si Declaraciones, de las que hemos aprendido antes, podrá realizar algunos scripts increíblemente complejos y útiles..
De hecho, en nuestro próximo artículo de AppleScript tomará un descanso de la teoría y utilizará parte de este conocimiento con un script práctico que puede implementar en su sistema de inmediato. Vuelve a consultar pronto!