Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Software
Apple Script - opakování akcí
7. září 2006, 00.00 | Opakování je matka moudrosti, proto si dnes v AppleScriptu ukážeme jak opakovat určité operace. Ať už potřebujeme něco zopakovat pětkrát, nebo stále dokola, dokud se nesplní nějaká podmínka, AppleScript nám vždy pomůže ke kýženému výsledku!
Většina programů je vytvořena proto, aby nám pomáhala, ulehčila nám práci a dělala za nás spoustu věcí bez naší asistence. A právě to je největší výhoda AppleScriptu, že věci, které stále opakujeme, za nás umí udělat automaticky. Ať je to změna velikosti fotek pro posílání mailem, přejmenování všech souborů ve složce, nebo jejich tisk, potřebujeme zopakovat určitý proces tak, aby se zpracovaly všechny soubory.
Docílíme toho příkazem repeat. Ten je stejně jako if a try víceřádkovým blokem, který ohraničuje příkazy které se mají stále opakovat. Samozřejmě může obsahovat jak nejrůznější ify, trye, ale také další repeaty. Máme několik modifikací repeat příkazu, a to: repeat X times, repeat until, repeat while a repeat with. Dnes a příště se na ně postupně podíváme a řekneme si k čemu je který dobrý, jak funguje a jak ho použít.
Nejprve se podíváme na repeat X times a ukážeme si jak takový repeat funguje. Tuto variantu použijeme, víme-li, kolikrát chceme něco zopakovat. X je zde rovno integeru, tedy jakémukoli celému číslu. V případě, že je číslo záporné, repeat neproběhne ani jednou. Ukážeme si pár příkladů, do nového okna napište:
set opacko to 1 repeat 5 times display dialog "dialog císlo " & opacko set opacko to opacko + 1 end repeat
Tento program demonstruje, jak repeat funguje. Nejprve definujeme proměnnou kterou pak pětkrát za sebou zobrazíme, přičemž je pokaždé zvýšena o jednu. Tím docílíme, že je číslo v každém dialogu rovno jeho pořadí. Možná namítnete, že by se vše dalo udělat takto:
display dialog "dialog císlo 1" display dialog "dialog císlo 2" display dialog "dialog císlo 3" display dialog "dialog císlo 4" display dialog "dialog císlo 5"
Nesmíme ale zapomenout, že místo čísla 5 může být třeba číslo 5632148, a že místo příkazu display dialog může být stořádkový skript. Navíc si všimněte výsledku obou skriptů, v prvním případě je to hodnota proměnné a tedy počet zopakování + výchozí 1, ve druhém vidíme jen výsledek posledního dialogu.
Samozřejmě počet zopakování může být zastoupen proměnnou s integerovou hodnotou, nebo i výpočtem. Upravme si první skript takto:
set Dny to {"Monday", "Tuesday", "Wensday", "Thurseday", ¬ "Friday", "Saturday", "Sunday"} set dnes to (weekday of (current date)) as string set opacko to 1 repeat count of Dny times if dnes is equal to item opacko of Dny then display dialog "Tody is " & item opacko of Dny & "!" exit repeat end if set opacko to opacko + 1 end repeat display dialog "repeat goes " & opacko & " times."
Tady už začínáme opravdu programovat a naše skripty začnou být složitější a složitější. Vysvětleme si proto podrobně co se v průběhu programu děje. Nejprve jsme definovali nějaký seznam, v tomto případě dny v týdnu, a zjistili od systému jaký je dnes skutečně den. Samozřejmě mohl seznam obsahovat třeba ovoce a my ho porovnávali s výsledkem dialogu "Řekni mi tvé nejoblíbenější ovoce.". Pak následuje proměnná opacko a začíná repeat. Počet opakování je nadefinován pomocí součtu všech položek v seznamu, čímž je zajištěno, že se dostane na každou z nich. Uvnitř repeatu ifem porovnáme zda je položka seznamu shodná s dnešním dnem a pokud není, přičteme 1 k opacku a opakujeme s dalším dnem. V případě, že shodné jsou, program nám to sdělí dialogem. Všimněte si příkazu exit repeat, ten používáme k opuštění repeatu v případě, že ho chceme předčasně ukončit, v tomto případě po dosažení správného dnu. V případě složitějších repeatů je dobré si udělat jakýsi tajný východ pro případ, že chcete program ukončit, nebo že se nějakou chybou zacyklil do nekonečna. Stačí try který při chybě ukončí repeat, nebo možnost v dialogu místo požadovaného vstupu napsat slovo exit a ukončit tak repeat. Na toto si ale musíte dávat pozor hlavně u repeatů které si představíme až příště. Celý skript pak končí dialogem dokazujícím nám funkčnost exit repeatu. Ten nám ukáže číslo shodné s dnešním dnem Pokud ale exit repeat vyřadíme, proběhne 7x, tak jak bylo nadefinováno na začátku.
To je pro dnešek vše, příště si ukážeme zbylé varianty repeatů a ukážeme si jak používat flagy. Doufám, že jste vše pochopili, protože opakování dělá z AppleScriptu mocnou zbraň která nám dokáže zjednodušit náš život s Macem. Máte-li nějaký dotaz, nebojte se zeptat v diskuzi.
Obsah seriálu (více o seriálu):
- AppleScript - úvod
- AppleScript - Script Editor
- AppleScript - Proměné
- AppleScript - Třídy
- AppleScript - matematika a počítání
- AppleScript - rozhodování
- AppleScript - práce s daty
- AppleScript - slovníky
- Apple Script - rozhodování
- Apple Script - opakování akcí
- Apple Script - opakování akcí (pokračování)
- Apple Script - Text
- Apple Script - elementy Stringu
- Apple Script - elementy Stringu II.
- AppleScript - seznamy
- AppleScript - seznamy II.