AppleScript - rozhodování - MujMAC.cz - Apple, Mac OS X, Apple iPod

Odběr fotomagazínu

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:

Soutěž

Sponzorem soutěže je:

IDIF

 

Odkud pochází fotografka Anne Erhard?

V dnešní soutěži hrajeme o:

Seriály

Více seriálů



Software

AppleScript - rozhodování

27. června 2006, 00.00 | Dnes nás čeká to nejdůležitější na celém AppleScriptu – rozhodování. Naučíme totiž náš program myslet a řešit jednoduché úkoly. K umělé inteligenci to bude mít ještě hodně daleko, ale pro naše potřeby to bohatě stačí. Ukážeme si jak nadefinovat výhybku buď/nebo, jak jí rozšířit o další podmínku a jak řešit složitější rozhodování s více možnostmi. Jste připraveni se rozhodnout?

Rozhodování má v AppleScriptu na starosti příkaz "if". Jeho základní jednořádkový tvar je if ano/ne then něco, více se ale používá jeho víceřádková varianta. Ta se tvoří tak že na prvním řádku je pouze if ano/ne then, pak následuje libovolný počet operacím, které se mají provést je-li splněna podmínka a vše uzavírá end if. Pamatujte si, že vše, co v Apple Scriptu začneme a má více jak jednu řádku, musíme také ukončit. Pokud tak neuděláme, dostaneme chybové hlášení. Stačí napsat na konec slovo end a AppleScript si slovo if už doplní sám, důležité ale je mít správný počet endů.

Ano/ne v základním tvaru je boolean, případně jakákoli jednořádková operace, jejíž výsledek je true nebo false. Může to být proměnná, nebo porovnání dvou čísel či proměnných, prostě cokoli, čím definujeme, zda je něco pravda či nikoli. Otevřete náš program a před get napište toto:

if tlacitko is "nesouhlasím" then beep 
Toto je ukázka jednořádkové formy a po spuštění a stisknutí "nesouhlasím" se pouze ozve zvuk, při stisku druhého tlačítka se nastane nic. My toho ale chceme určitě více, proto vše upravíme takto:
if tlacitko is "nesouhlasím" then
display dialog "Snad si to rozmyslíte..." buttons "OK" giving up after ¬
10 with icon note,
beep
end. 
V tomto případě jsme ke zvuku doplnili ještě dialog, v případě že je tedy podmínka splněna, jsou provedeny dvě operace, ale nic nám nebrání mít jich tam třeba sto. Zkuste si teď program spustit a zmáčknout "souhlasím", nestane se nic, proběhne pouze příkaz get. To znamená, že vše co pokračuje za uzavřeným if příkazem, je normálně provedeno, bez ohledu na celý if.


Častěji ale potřebujeme udělat výhybku buď/nebo, kdy se provede buď jedna nebo druhá část skriptu. "Buď" už umíme, jak ale udělat to "nebo". Od toho máme příkaz "else", který funguje jako rozšíření ifu, pro případ, že naše podmínka splněna nebyla. Ukažme si to na našem příkladu, před end napište:

else
a na další řádek:
display dialog "Tak drzím palce!" buttons "OK" giving up after 10 with icon note
Teď v případě, že nebylo zmáčknuto tlačítko "nesouhlasím", bude provedena pouze operace za else. Pozor, v tuto chvíli to platí i pro případ, že nebude zmáčknuto žádné tlačítko a okno samo po deseti vteřinách zmizí (giving up after 10). I tohle se dá v AppleScriptu vyřešit, můžeme totiž zase specifikovat v jakém případě proběhne else.

A jak jinak by se to mělo dělat než dopsáním dalšího ifu za else, kterým nastavíme další podmínku. Napišme tedy přímo za else:

if tlacitko is "souhlasím" then
V případě, že teď program spustíte a počkáte 10 vteřin, nestane se už nic. Nic nám ale nebrání přidat další else. Takto můžeme specifikovat velké množství podmínek a vytvořit tak složitou křižovatku spouštějící nejrůznější procesy. Dopišme tedy před end další
else 
a pod to:
display dialog "Halooo, je tam nekdo?" buttons "OK" default button 1 giving up ¬
after 10 with icon caution
Nyní máme vyřešeny všechny možnosti a program se umí rozhodnout a reagovat podle stisknutého tlačítka, ale sám i pozná, když se mu nevěnujeme a reaguje na to jiným dialogem. Víme už tedy o příkazu if téměř vše.


Ještě chci říct, že if může obsahovat libovolný počet operací, včetně dalších ifů, můžeme se tedy rozhodovat kdykoli se nám zlíbí. Poslední, co si dnes řekneme, je co dělat v případě, má-li se něco stát pouze při splnění více podmínek najednou. K tomu používáme slova "and" a "or", kterými rozšíříme if o další podmínky. Ukážeme si to na příkladu Do nového okna napište:

set x to 5 + 5
set y to 15 / 3
if x is 10 and class of y is real then
beep 
end
Po spuštění uslyšíte zvuk, protože x je 10, a y je real, zaměňte ale lomítko za div a neuslyšíte nic. And tedy určuje více podmínek, které musí být všechny splněny, naproti tomu or se spokojí jen s jednou splněnou podmínkou ze všech nadefinovaných. Zaměníme-li and za or, uslyšíme zase zvuk, i když y je integer. Samozřejmě se dá or a and mezi sebou kombinovat a používat společně a vytvořit tak složitou podmínku, která odfiltruje nežádoucí vstupy. A to je konec dnešního dílu, příště se podíváme na data a na kouzla, která s nimi AppleScript umí.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Informace  

 » Rubriky  » Agregator  

 » Rubriky  » Software  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: