(Added more info on creating procedures in 2.0.)
m (Procedures in Scratch: Fixed link.)
Line 5: Line 5:
 
[[File:Jump Block.png|thumb|A "jump" procedure {{-}} Scratch pre-alpha at Scratch Day 2011.]][[File:Jump block with insert.png|thumb|A "jump" procedure with an argument {{-}} Scratch pre-alpha at Scratch Day 2011.]]
 
[[File:Jump Block.png|thumb|A "jump" procedure {{-}} Scratch pre-alpha at Scratch Day 2011.]][[File:Jump block with insert.png|thumb|A "jump" procedure with an argument {{-}} Scratch pre-alpha at Scratch Day 2011.]]
 
[[File:Scratch-2.0-factorial-script.png|thumb|Recursive factorial procedure {{-}} Scratch 2.0 alpha.]]
 
[[File:Scratch-2.0-factorial-script.png|thumb|Recursive factorial procedure {{-}} Scratch 2.0 alpha.]]
Procedures will be added in [[Scratch 2.0]].<ref>http://blog.scratch.mit.edu/2011/03/scratch-20-progress-report-create-your.html</ref> There will be a "[[More Blocks]]" palette, where procedures in the project are stored.<ref>http://blog.scratch.mit.edu/2012/02/scratch-20-project-page-and-project.html</ref> This palette also houses a "make a block" button, similar to the "make a variable/list" buttons in [[Data Blocks]]. After naming and adding arguments, a [[Define () (block)|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)|() block]] is created in the palette. The procedures will only be available to the sprite with the Define block.<ref>http://scratch.mit.edu/forums/viewtopic.php?pid=719181#p719181</ref> Procedures in Scratch 2.0 will only be [[Stack Blocks]], not Reporter or Boolean block styles, and will support [[Recursion|recursion]]. Procedures will take [[arguments]] of [[strings]], numbers, and [[Booleans]]. Reporter or boolean procedures will not be available in Scratch 2.0, but may be in future versions.<ref>http://scratched.media.mit.edu/discussions/scratch-20/custom-block-types</ref> Procedures will be able to run [[atomicity|atomically]].
+
Procedures will be added in [[Scratch 2.0]].<ref>http://blog.scratch.mit.edu/2011/03/scratch-20-progress-report-create-your.html</ref> There will be a "[[More Blocks]]" palette, where procedures in the project are stored.<ref>http://blog.scratch.mit.edu/2012/02/scratch-20-project-page-and-project.html</ref> This palette also houses a "make a block" button, similar to the "make a variable/list" buttons in [[Data Blocks]]. After naming and adding arguments, a [[Define () (block)|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)|() block]] is created in the palette. The procedures will only be available to the sprite with the Define block.<ref>http://scratch.mit.edu/forums/viewtopic.php?pid=719181#p719181</ref> Procedures in Scratch 2.0 will only be [[Stack Blocks]], not Reporter or Boolean block styles, and will support [[Recursion|recursion]]. Procedures will take [[arguments]] of [[strings]], numbers, and [[Boolean]]s. Reporter or boolean procedures will not be available in Scratch 2.0, but may be in future versions.<ref>http://scratched.media.mit.edu/discussions/scratch-20/custom-block-types</ref> Procedures will be able to run [[atomicity|atomically]].
  
 
==Procedures in [[BYOB]]/Snap!==
 
==Procedures in [[BYOB]]/Snap!==

Revision as of 11:42, 19 September 2012

Clock.png This article or section contains information about a feature from a future version of Scratch that is unreleased and is subject to change. Please cite any additional info in order to prevent speculation.

Procedures, also called functions or methods, are a tool in many programming languages, which allow common blocks of code to be grouped and called by a single name. Blocks in Scratch are procedures themselves, as they are blocks of compiled code executed all at once. Procedures have inputs or arguments, which are used to edit the procedure's effect slightly. For example, the "move (10) steps" block has the numerical argument (the bracketed bit) which specifies the distance to be moved: 10 pixels in this case.

Procedures in Scratch

A "jump" procedure — Scratch pre-alpha at Scratch Day 2011.
A "jump" procedure with an argument — Scratch pre-alpha at Scratch Day 2011.
Recursive factorial procedure — Scratch 2.0 alpha.

Procedures will be added in Scratch 2.0.[1] There will be a "More Blocks" palette, where procedures in the project are stored.[2] This palette also houses a "make a block" button, similar to the "make a variable/list" buttons in Data Blocks. 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 () block is created in the palette. The procedures will only be available to the sprite with the Define block.[3] Procedures in Scratch 2.0 will only be Stack Blocks, not Reporter or Boolean block styles, and will support recursion. Procedures will take arguments of strings, numbers, and Booleans. Reporter or boolean procedures will not be available in Scratch 2.0, but may be in future versions.[4] Procedures will be able to run atomically.

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.

Procedures in Squeak

Main article: Squeak Tutorial#Methods

Procedures in Squeak are called methods.

References

  1. http://blog.scratch.mit.edu/2011/03/scratch-20-progress-report-create-your.html
  2. http://blog.scratch.mit.edu/2012/02/scratch-20-project-page-and-project.html
  3. http://scratch.mit.edu/forums/viewtopic.php?pid=719181#p719181
  4. http://scratched.media.mit.edu/discussions/scratch-20/custom-block-types