3. Упутство за Скрипт-фу

У овом курсу обуке, представићемо вам основе Scheme-а неопходне за коришћење Скрипт-фуа, а затим ћемо направити корисну скрипту коју можете додати у своју алатницу скрипти. Скрипта тражи од корисника неки текст, а затим прави нову слику чија је величина савршено прилагођена тексту. Затим ћемо побољшати скрипту како бисмо омогућили празан простор око текста. Завршићемо са неколико предлога за начине на које можете унапредити своје знање о Скрипт-фуу.

[Примедба] Примедба

Овај одељак је прилагођен из упутства које је за корисничко упутство Гимпа 1 написао Мајк Тери.

3.1. Упознавање са Схемом

3.1.1. Почните са Схемом

Схема је дијалект Лисп породице програмских језика. Гимп користи МајушнуСхему (TinyScheme), која је лагани тумач подскупа такозваног R5RS стандарда.

Прва ствар коју треба научити јесте:

Свака наредба у Схеми је окружена малим заградама ().

Друга ствар коју треба да знате јесте:

Име функције/оператор је увек прва ставка у заградама, а остале ставке су параметри функције.

Међутим, није све што је затворено у заградама функција — то могу бити и ставке на списку — али до тога ћемо доћи касније. Овај запис се назива префиксни запис, јер функција стоји испред свега осталог. Ако сте упознати са постфиксним записом, или поседујете калкулатор који користи обрнуту пољску нотацију (као што је већина HP калкулатора), не би требало да имате проблема са прилагођавањем формулисању израза у Схеми.

Трећа ствар коју треба разумети јесте:

Математички оператори се такође сматрају функцијама, и стога се наводе први приликом писања математичких израза.

Ово логично следи из префиксног записа који смо управо поменули.

3.1.2. Примери префиксног, инфиксног и постфиксног записа

Ево неколико брзих примера који илуструју разлике између префиксног, инфиксног и постфиксног записа. Сабраћемо 1 и 23 заједно:

  • Префиксни запис: + 1 23 (начин на који ће Схема то захтевати)

  • Инфиксни запис: 1 + 23 (начин на који то „обично“ пишемо)

  • Постфиксни запис: 1 23 + (начин на који ће многи HP калкулатори то захтевати)

3.1.3. Вежбање у Схеми

У Гимпу, изаберите ФилтериРазвојScript-FuScript-Fu конзола из главног менија. Ово ће покренути прозор Script-Fu конзоле, који нам омогућава да интерактивно радимо у Схеми.

3.1.4. Прозор Script-Fu конзоле

На дну овог прозора налази се поље за унос текста за наредбе. Овде можемо интерактивно испробати једноставне наредбе Схеме. Почнимо лако и саберимо неке бројеве:

(+ 3 5)

Укуцавање овога и притисак на тастер Enter даје очекивани одговор 8 у средњем прозору.

Слика 13.1. Користите Скрипт-фу конзолу.

Користите Скрипт-фу конзолу.

Функција + може примити више аргумената, тако да можемо сабрати више од једног броја:

(+ 3 5 6)

Ово такође даје очекивани одговор 14.

За сада је све добро — укуцамо Scheme наредбу и она се одмах извршава у прозору Скрипт-фу конзоле. А сада неколико речи упозорења…

3.1.5. Пазите на сувишне заграде

Ако сте попут мене, навикли сте да користите сувишне заграде кад год то пожелите — као када куцате сложену математичку једначину и желите да раздвојите делове заградама како би била јаснија за читање. У Scheme-у морате бити пажљиви и не уметати ове сувишне заграде неправилно. На пример, рецимо да желимо да додамо 3 резултату сабирања 5 и 6:

3 + (5 + 6) + 7 = ?

Знајући да оператор + може примити списак бројева за сабирање, можда ћете бити у искушењу да горњи израз претворите у следећи:

(+ 3 (5 6) 7)

Међутим, ово је неисправно — запамтите, свака наредба у Scheme-у почиње и завршава се заградама, па ће Scheme тумач помислити да покушавате да позовете функцију под називом 5 у другој групи заграда, уместо да саберете те бројеве пре него што их додате броју 3.

Исправан начин за писање горње наредбе био би:

(+ 3 (+ 5 6) 7)

3.1.6. Такође се побрините да имате и правилан размак

Ако сте упознати са другим програмским језицима, као што су C/C++, Perl или Java, знате да вам није потребан празан простор око математичких оператора да бисте правилно обликовали израз:

        3+5, 3 +5, 3+ 5
      

Све ово прихватају C/C++, Perl и Java преводиоци. Међутим, исто не важи за Scheme. Морате имати размак након математичког оператора (или било ког другог назива функције или оператора) у Scheme-у да би га Scheme тумач исправно протумачио.

Вежбајте мало са једноставним математичким једначинама у Скрипт-фу конзоли док се потпуно не осамосталите са овим почетним концептима.