Serão apresentadas nesta secção algumas das extensões mais importantes e rele- vantes já existentes do Scratch.
2.2.1
Chirp
Chirp é uma versão ligeiramente modificada do ambiente Scratch e baseada no seu código fonte. É totalmente compatível com o Scratch V.1.2.1 e com o website Scratch. Esta versão tem algumas características adicionais. É possível expor- tar/importar Scripts de blocos como arquivos XML, permite ao utilizador alterar blocos através do menu de contexto, fazer scroll na janela do IDE em situações de baixa resolução e ampliar o painel de scripting. Este projeto também tem um Windows Installer para iniciar diretamente projetos no modo de apresentação, e permite também a utilização projetos Scratch como screensavers do windows. Além disto, esta extensão permite também distribuir projetos Scratch como fichei- ros executáveis stand-alone.
2.2.2
Listas e ficheiros para Scratch
Este protótipo [Mon08] foi desenvolvido a partir do Scratch 1.2.1. Este protótipo introduziu de um novo tipo de dados baseado em arrays, permitindo a leitura e escrita desse novo tipo de dados para ficheiro. Adicionalmente, permite que projetos que acedam a ficheiros sejam compilados em ficheiros executáveis stand- alone no ambiente Windows para permitir a sua partilha por diferentes pessoas. Os ficheiros que representam as listas são lidos/escritos para a mesma pasta onde o código fonte do projeto está guardado, permitindo ao utilizador compartilhar o seu projeto com os ficheiros de lista associados. Esta extensão já não se encontra em desenvolvimento. Isto acontece poque as novas atualizações do ambiente Scratch
suportam estas funcionalidades.
2.2.3
Elements
Elements [Mon09b] é uma interface gráfica para a linguagem de programação Smalltalk-80 inspirada no Scratch. Oferece uma interface drag/drop de tijolos que representam código, muito parecida com o Scratch. Estes tijolos podem ser acumulados e montados como peças de LEGO em construções de programação complexas. O projeto Elements pode ser uma ótima ferramenta para fins educati- vos (ensino de Smalltalk) e também para descobrir se e como o design dos blocos Scratch pode ser aplicado, ou não, a mais campos profissionais e, neste caso, a um ambiente de programação orientada a objetos.
2.2.4
BYOB - ” Build Your Own Blocks”
BYOB [Mon09a] é uma extensão para o Scratch que atualmente se encontra na sua versão 3.1.1 (19 Maio 2011) e que permite ao utilizador construir blocos perso- nalizados. Estes blocos personalizados podem ser baseados em blocos predefinidos do Scratch ou em outros blocos criados pelo utilizador, e são definidos para um Sprite específico. Além disto estão presentes importantes novos mecanismos: de- finição de procedimentos e funções, passagem de parâmetros, variáveis locais de procedimentos/funções, recursividade e atomicidade. Este importante projeto já lançou três versões. Abaixo segue uma descrição das funcionalidades que cada ver- são trouxe para a mesa. Embora a versão atual 3.1.1 encapsule as funcionalidades dos seus antecessores, é importante mostrar a evolução deste projeto, pois é um dos projetos paralelos mais importantes do Scratch.
BYOB 1.0 A primeira versão do BYOB é baseada em Scratch 1.3. e permite a definição de procedimentos (blocos de comando), funções (blocos Reporter)
e funções booleanas. Permite a definição de parâmetros e variáveis globais e também suporta recursividade na medida em que é possível usar o bloco que está a ser definido na sua própria definição. Oferece também controlo de atomicidade do bloco personalizado, duplicação de blocos personalizados através de drag/drop entre Sprites ou por clonagem de Sprites e por fim leitura/escrita de um projeto Scratch ou Sprite para um ficheiro.
BYOB 2.0 A segunda versão do BYOB já é baseada na versão mais recente do Scratch, o Scratch 1.4. O objetivo do seu lançamento foi melhorar a experiência de criar blocos personalizados e introduzir a noção de objetos compostos no Scratch, bem como eliminar algumas das limitações da versão anterior. É possível abrir/importar qualquer projeto Scratch ou Sprite, os argumentos podem ser números ou texto (e blocos Reporter), clicar duas vezes num bloco Reporter personalizado mostra o seu resultado, melho- ramento da funcionalidade drag/drop de blocos personalizados, funções de depuração introduzidas (blocos com erros mostrados a vermelho), correção do problema de terminar um ciclo infinito atômico, o editor do bloco é re- dimensionável. Características sobre Sprites aninhados: possibilidade de criar Sprites que consistem em sub-Sprites (composição), Sprites podem ser aninhados infinitamente, sub-Sprites seguem o movimento,orientação e efeitos gráficos do Sprite a que pertencem, sub-Sprites podem optar por seguir a rotação do Sprite a que pertencem, ou podem optar por rodar de forma independente. Outras características: é possível compartilhar Sprites e Sprites aninhado numa rede mesh, o compilador incluído permite conver- ter um projeto do Scratch/BYOB para um exe, autoscrolling, scrolling por arrastamento (scroll ativado quando se arrasta um elemento para as bordas de uma janela como o editor de blocos), desfazer a ultima ação. Nesta ver- são a interface gráfica (GUI) Elements [Mon09b] foi integrada, permitindo a
inspeção do código dos blocos Scratch.
BYOB 3.0 É baseado em Scratch 1.4 e muitos recursos novos foram introduzi- dos, com uma forte influência vinda do Scheme. Novos recursos: biblioteca de funções de ordem superior, procedimentos e closures lambda (blocos anó- nimos personalizados, funções de primeira classe), listas de primeira classe, listas dinâmicas anónimas, listas de listas (permitindo a possibilidade de construção de estruturas de dados, tais como árvores e outros), listas de Scriptse blocos, procedimentos locais e globais, projetos com estado persis- tente, programação baseada em imagem como o Smalltalk, blocos e Scripts podem ser usados como dados, verificação de tipos (typechecking).
2.2.5
Outros mods
Existem muitas extensões do Scratch disponíveis e em desenvolvimento com muitos novos blocos e muitos recursos novos criados. Os mods mais relevantes, disponíveis e ativos são o Streak, Panther, Bingo, Slash e The Ultimate Gallery. Referência es- pecial para o Panther, devido à sua funcionalidade CYOB Code Your Own Blocks. Esta permite que os utilizadores com conhecimentos mais avançados de Squeak codifiquem os seus próprios blocos no ambiente. Os blocos personalizados são es- critos numa janela que pode ser acedida a partir da parte inferior do painel de blocos da categoria de variáveis clicando em Make a new block.