3. Um tutorial de Script-Fu
| Capítulo 13. Criando Scripts |

## 3. Um tutorial de Script-Fu

Neste treinamento, nós mostraremos a você os fundamentos da linguagem Scheme necessários para fazer uso do Script-Fu, e então vamos construir um script prático que você poderá agregar ao seu arsenal de scripts. O script vai pedir um texto ao usuário, então criará uma imagem do tamanho exato daquele texto. Então nós melhoraremos o script para deixar um pouco de espaço em volta desse texto, e concluiremos com algumas sugestões de formas para melhorar seu conhecimento em Script-fu.

| Nota
Esta seção foi adaptada de um tutorial escrito para o manual do GIMP 1, por Mike Terry.

### 3.1. Familiarizando-se com Scheme

#### 3.1.1. Vamos começar a Schema'tizar

A primeira coisa a aprender é

> Todo comando em Scheme é colocado dentro de parênteses “( )”.

A segunda coisa que você precisa saber é:

> O nome da função ou operador é sempre o primeiro item dentro dos parênteses, e o restante dos items são parâmetros para aquela função.

Entretanto, nem tudo que está entre parênteses é uma função — eles também podem conter itens de uma lista — mas vamos ver isso depois. Essa notação normalmente é chamada de notação em prefixo, por que a função prefixa todas as outras coisas. Se você estiver familiarizado com a notação pós-fixa, ou tiver uma calculadora que usa a Notação Polonesa Reversa (como a maioria das calculadoras da HP), você não deve ter nenhum problema em se adaptar para formular as expressões em Scheme.

A terceira coisa a saber é:

> Operadores matemáticos também são considerados funções, e portanto são colocados primeiro quando se estiver escrevendo expressões matemáticas.

Isso segue-se logicamente da notação em prefixo que acabamos de mencionar.

#### 3.1.2. Exemplos de notação em prefixada, tradicional ("in-fixa") e pós-fixada

Aqui seguem alguns exemplos rápidos mostrando as diferenças entre as notações prefixadas, tradicional, e pós fixadas . Vamos adicionar os números 2 e 23:

- Notação pré-fixada: `+ 2 23` (da forma que o Scheme pode entender)

- Notação tradicional ("in-fixa"): `2 + 23` (a forma como nós normalmente escrevemos a operação, e que é usada em linguagens como C e Python)

- Notação pós-fixada: `2 23 +` (a forma como muitas calculadoras da HP e linguagens como Forth e Postscript querem)

#### 3.1.3. Prática do Scheme

Agora, vamos praticar o que acabamos de aprender. Inicie o GIMP, se você já não o fez, e escolha o comando Filtros → Script-Fu → Terminal. Isso vai trazer uma janela que é o terminal de Script-fu. que permite trabalhar interativamente com o Scheme. Em instantes, o console de Script-fu aparece:

#### 3.1.4. A janela de terminal do Script-fu

Na parte de baixo dessa janela, há um campo de entrada que teria o título de Comando atual (mas sem o nome, para deixar mais espaço livre). Aqui, nós podemos testar comandos simples de Scheme de forma interativa. Vamos começar de forma tranquila, adicionando alguns números:

    (+ 3 5)

Ao digitar isso e apertar Enter, a resposta esperada, 8, aparece na parte central da janela.

Figura 13.3. Uso do terminal de Script-fu

Agora, e se quiséssemos adicionar mais de dois números? A função “+” pode receber dois ou mais argumentos, então isso não é problema:

    (+ 3 5 6)

Isso também dá a resposta esperada: 14.

Até aqui, tudo bem — nós digitamos um comando de Schema e ele é executado imediatamente no terminal do Script-fu. Agora, uma palavra de precaução...

#### 3.1.5. Preste atenção em parênteses extras

Se você é como eu, você está acostumado a usar parênteses adicionais sempre que quiser, como quando você está escrevendo uma equação complexa, e você quer separar as partes com parênteses para torna-la mais clara quando for ler a mesma de volta. Em Scheme, você tem que tomar cuidado e não inserir essas parênteses extras de forma incorreta. Por exemplo, vamos dizer que queremos adicionar 3 ao resultado de adicionar 5 e 6 juntos:

    3 + (5 + 6) + 7 = ?

Sabendo que o operador + pode adicionar uma lista de números, você pode ser tentado a converter essa expressão para:

    (+ 3 (5 6) 7)

Entretanto, isso é incorreto — lembre-se, todo comando em Scheme começa e termina com parênteses, portanto, o interpretador de Scheme vai achar que estamos tentando chamar uma função de nome “5” no segundo grupo de parênteses, ao invés de somar esses dois números antes de adiciona-los ao três.

A forma correta de escrever a expressão acima seria:

    (+ 3 (+ 5 6) 7)

#### 3.1.6. Certifique-se de que o espaçamento está correto também!

Se você está familiarizado com outras linguagens de programação (C/C++, Perl ou Java você sabe que não precisa de espaço em branco em volta de operadores matemáticos para que eles formem uma expressão apropriada)

            3+5, 3 +5, 3+ 5

Todas essas formas são aceitas nas linguagens com sintaxe derivada de C. Entretanto, o mesmo não é verdade para Scheme. Você precisa ter um espaço depois de um operador matemático (ou qualquer outro operador ou nome de função) em Scheme para que o mesmo seja corretamente interpretado pelo interpretador de Scheme.

Pratique um pouco com expressões matemáticas simples no terminal do Script-Fu, até que você esteja confortável com esses conceitos iniciais.

2.6. Scripts dependentes de Imagem |  | 3.2. Varáveis e funções

Crie um relato de erro no Bugzilla