У овом курсу обуке, представићемо вам основе Scheme-а неопходне за коришћење Скрипт-фуа, а затим ћемо направити корисну скрипту коју можете додати у своју алатницу скрипти. Скрипта тражи од корисника неки текст, а затим прави нову слику чија је величина савршено прилагођена тексту. Затим ћемо побољшати скрипту како бисмо омогућили празан простор око текста. Завршићемо са неколико предлога за начине на које можете унапредити своје знање о Скрипт-фуу.
|
Примедба |
|---|---|
|
Овај одељак је прилагођен из упутства које је за корисничко упутство Гимпа 1 написао Мајк Тери. |
Схема је дијалект Лисп породице програмских језика. Гимп користи МајушнуСхему (TinyScheme), која је лагани тумач подскупа такозваног R5RS стандарда.
Прва ствар коју треба научити јесте:
Свака наредба у Схеми је окружена малим заградама ().
Друга ствар коју треба да знате јесте:
Име функције/оператор је увек прва ставка у заградама, а остале ставке су параметри функције.
However, not everything enclosed in parentheses is a function — they can also be items in a list — but we'll get to that later. This notation is referred to as prefix notation, because the function prefixes everything else. If you're familiar with postfix notation, or own a calculator that uses Reverse Polish Notation (such as most HP calculators), you should have no problem adapting to formulating expressions in Scheme.
Трећа ствар коју треба разумети јесте:
Математички оператори се такође сматрају функцијама, и стога се наводе први приликом писања математичких израза.
Ово логично следи из префиксног записа који смо управо поменули.
Ево неколико брзих примера који илуструју разлике између префиксног, инфиксног и постфиксног записа. Сабраћемо 1 и 23 заједно:
Префиксни запис: + 1 23 (начин на који ће Схема то захтевати)
Инфиксни запис: 1 + 23 (начин на који то „обично“ пишемо)
Постфиксни запис: 1 23 + (начин на који ће многи HP калкулатори то захтевати)
У Гимпу, изаберите → → → из главног менија. Ово ће покренути прозор Script-Fu конзоле, који нам омогућава да интерактивно радимо у Схеми.
На дну овог прозора налази се поље за унос текста за наредбе. Овде можемо интерактивно испробати једноставне наредбе Схеме. Почнимо лако и саберимо неке бројеве:
(+ 3 5)
Укуцавање овога и притисак на тастер Enter даје очекивани одговор 8 у средњем прозору.
Функција „+“ може примити више аргумената, тако да можемо сабрати више од једног броја:
(+ 3 5 6)
Ово такође даје очекивани одговор 14.
So far, so good — we type in a Scheme statement and it's executed immediately in the Script-Fu Console window. Now for a word of caution…
If you're like me, you're used to being able to use extra parentheses whenever you want to — like when you're typing a complex mathematical equation and you want to separate the parts by parentheses to make it clearer when you read it. In Scheme, you have to be careful and not insert these extra parentheses incorrectly. For example, say we wanted to add 3 to the result of adding 5 and 6 together:
3 + (5 + 6) + 7 = ?
Знајући да оператор + може примити списак бројева за сабирање, можда ћете бити у искушењу да горњи израз претворите у следећи:
(+ 3 (5 6) 7)
However, this is incorrect — remember, every statement in Scheme starts and ends with parens, so the Scheme interpreter will think that you're trying to call a function named „5“ in the second group of parens, rather than summing those numbers before adding them to 3.
Исправан начин за писање горње наредбе био би:
(+ 3 (+ 5 6) 7)
Ако сте упознати са другим програмским језицима, као што су C/C++, Perl или Java, знате да вам није потребан празан простор око математичких оператора да бисте правилно обликовали израз:
3+5, 3 +5, 3+ 5
Све ово прихватају C/C++, Perl и Java преводиоци. Међутим, исто не важи за Scheme. Морате имати размак након математичког оператора (или било ког другог назива функције или оператора) у Scheme-у да би га Scheme тумач исправно протумачио.
Вежбајте мало са једноставним математичким једначинама у Скрипт-фу конзоли док се потпуно не осамосталите са овим почетним концептима.