## 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
This section was adapted from a tutorial written for the GIMP 1 User Manual by Mike Terry.

### 3.1. Familiarizando-se com Scheme

#### 3.1.1. Start with Scheme

Scheme is a dialect of the Lisp family of programming languages. GIMP uses TinyScheme, which is a lightweight interpreter of a subset of the so-called R5RS standard.

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

In GIMP, select Filters → Development → Script-Fu → Script-Fu Console from the main menu. This will start up the Script-Fu Console window, which allows us to work interactively in Scheme.

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

At the bottom of this window is a text entry field for commands. Here, we can test out simple Scheme commands interactively. Let's start out easy, and add some numbers:

    (+ 3 5)

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

Figura 13.1. Uso do terminal de Script-fu

The “+” function can take more arguments, so we can add more than one number:

    (+ 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.4. Diferentes tipos de Script-Fus |  | 3.2. Varáveis e funções

Report a bug in GIMP Report a documentation error