Revision as of 23:07, 3 January 2014 by VoxBot (talk | contribs) (Procedures in Scratch: typo fixing, clean-up, FULLY-AUTOMATIC, 500pg)

Procedures allow for one to make their own programming blocks. They allow a sequence of blocks to be grouped together and called by a single name.

Procedures can be found in many programming languages, and may also be called functions or methods.

The blocks in Scratch can be thought of as being procedures themselves, but made out of compiled code and not other blocks. Procedures can have inputs, or parameters, which can give the procedure more information. For example, the "move (10) steps" block has a single argument, the number 10, which tells the block how far to move.

Procedures in Scratch

A "jump" custom block.
A "jump" custom block with number input.
Recursive factorial procedure — Scratch 2.0 alpha.

Procedures, or custom blocks, are one of the new features added in Scratch 2.0.[1]

Custom blocks are found in the "More Blocks" palette.[2] The palette starts off empty, and just shows a "make a block" button (similar to the "make a variable/list" buttons in the data palette).

Custom blocks can have arguments of strings, numbers, and booleans. After naming and adding arguments, a Define block is created. For each Define block (whether from the make a block button, or by dragging in from the backpack or another sprite), a custom block is created in the palette. The custom block is only available to the sprite that has the Define block.[3]

custom block [hi] (42) <touching color [#0bb]?>

define custom block (string) (number) <boolean>

Custom blocks can only be stack blocks, not reporters or booleans (though they may be added in the future).[4] They support recursion, so blocks can call themselves (This doesn't stop the current block executing, unlike broadcasts). This allows for things like creating fractals and finding the factorial of a number. They can be set to run atomically or "all at once".

Procedures in BYOB/Snap!

Snap!, previously called BYOB (Build Your Own Blocks), is a Scratch modification that allows procedures. Snap!'s procedures allow all 3 types of blocks, with arguments, and also recursion.

See Also