提供: Japanese Scratch-Wiki

このきじは ひらがなのページがありません。ごめんなさい。

ここでは、プログラミング言語としてのScratchについて説明する。

ファイル形式

Scratchのファイル形式は.sb3であり、これはプロジェクトを構成するさまざまな素材(svg、wavなど)と「project.json」から成る。このjsonファイルにほとんどの情報が格納される。

指示語

Scratchの指示語はブロックであり、これらは以下の分類に分けられる。

  • 真偽ブロック - 値ブロックの一分類で、true/falseを返り値とするブロック。

また、ブロックの行う内容で分けられる場合もある。[1]

また、Scratch 3.0には、拡張機能という機能がある。

Scratchは動的・静的両方の型付けを行う。(基本ブロックの形状が型である。しかし、ブロックの型を共有する数値・文字列などの型は動的に決まる。)

返り値の型は以下の通り。

  • 数値型 - 整数及び実数値。虚数には対応していない。
  • 文字列型 - 文字列。
  • 真偽型 - 真偽ブロックが返す、true/falseの値。

引数にする場合、これらはキャストの規則に従って型変換される。

  • 真偽型を数値型に変換するときは、1と0に変換されるが、互換性保証はされない。
  • 真偽型や数値型を文字列型に変換するときは、そのまま変換される。
  • 数値型や文字列型を真偽型に変換することはできない。
  • 文字列型を数値型にするときは、成功したら数値に、失敗したら0になる。

なお、変数の値を変更するときに、[変数 v]を([12] と [34])ずつ変えるなどで設定したときは、変数の値は変わらない。[2]

数値型では指数表記を使うことができ、5e3と5000が同じように扱われる。数値型入力で「8ee8e」などもできるが、これは誤りで、0に等しい。

±Infinityは数値型に分類される場合がほとんど(数値型を返すブロックが返す場合があるため)だが、ほかと性質が異なる。

加法と±Infinity
Infinity 実数値 -Infinity
Infinity Infinity Infinity NaN
-Infinity NaN -Infinity -Infinity
乗法と±Infinity
Infinity 実数値 -Infinity
Infinity Infinity ±Infinity(符号は実数値の符号による) -Infinity
-Infinity -Infinity ±Infinity(符号は実数値の符号による) Infinity

例外

型変換できないブロックは引数にはまらないため、例外は起きない。計算結果のオーバーフローや0除算などは「Infinity」「NaN」を返し、スクリプトの実行を止めることはない。メモリー不足なども例外処理されないため、Scratchをクラッシュさせることも可能である。(ただし、クラッシャーの公開は利用規約に反する。)

ポインタ

Archive.png この項目またはセクションには、Scratch 3.0の現行バージョンに含まれていない機能が記載されています。これは歴史的な観点からのみ有用です。

ポインタは存在しないが、動的変数はJSONハッキングというScratchのバグを使用した手段にて使用できる。ここでは、((変数) \([ステージ v]\)::sensing)を使用して変数の値を取得する。

変数

変数はグローバルとローカルの2つあり、ローカル変数はスプライト外で値を変更できない。(参照はできる。)変数には文字列型のデータが入る。(ただし、他の値もキャストされて入る。)

リスト

文字列からなる一次元の配列を扱えるものであり、ブロックは変数と同じ場所にある。リストの添え字は1始まりである。

注釈

  1. Scratch 3.0での仕様変更: ペンブロックは拡張機能となった。
  2. Scratch 3.0での仕様変更: 以前はNaNになっていた。