<どんな言語?> この言語は、書きやすく、読みやすく、速い言語を目指しています。 ASTを生成してから実行するようになっています。 暗黙的な型変換は基本ありません。 (というか今は全くない) <文法> 「//」で一行のコメントができる。 【演算子】 ◯二項演算子 オペランドとオペランドの間に書く。 ・+ - * / % 四則演算。割り算は、オペランドがInt型同士でもFloat型の値を返す。 ・< > == <= >= 大小を比較する。< > = ≦ ≧の意味。 ・& | 論理演算。AND(両方true)とOR(少なくとも片方がtrue) ・= 右を左に代入する。==とは異なる。 返り値は代入した値のため、a=b=cのようなことができる。 ◯単項演算子 ・+ - 数の前につける符号。+はそのまま、-は符号が逆になる。 ・! 論理演算のNOT。 ◯演算子の優先順位 演算子は、優先順位が高いものから評価されていく。 優先順位が同じ演算子が並んだ場合、演算子ごとに決められた方向から順に評価する。 演算子 方向 1 ! + - 右から 2 * / % 左から 3 + - 左から 4 < > == <= >= 左から 5 & | 左から 6 = 右から 【型】 型は、標準で Int(整数)、Float(小数)、String(文字列)、Bool(真偽値) がある。 これらは全て値型。 ・Int 整数の型。Floatと似ているが、Float+Intのような計算はできない。(キャストする必要がある) ・Float 小数の型。Intと似ているが、Float+Intのような計算はできない。(キャストする必要がある) ・String 文字列の型。 ダブルクォーテーション「"」で囲んで表記する。複数行には対応していない。 ・Bool 真偽値の型。 値がtrueとfalseしかなく、ifやwhileの条件として利用できる。 【変数】 変数は「[型]変数名」で定義できる。 変数には = で値を代入できる。 また、ブロック内で変数を定義した場合、そのブロックの外では変数を参照できない。 【制御構文】 ◯if文 if else ーーーーーーーーーーーーーーー if 条件 { 条件がtrueの時の処理 } else { falseの時の処理 } ーーーーーーーーーーーーーーー ・条件は、()で囲まなくてよい。 ・ブロック内の処理が1文の時は、{}を省略できる。 ・else節は、行う処理がない場合省略できる。 if-else if-else ーーーーーーーーーーーーーーー if 条件1 { 条件1がtrue } else if 条件2 { 条件1がfalse、条件2がtrue } else { 両方false } ーーーーーーーーーーーーーーー else if をつかうと、条件1がfalseだった時にさらに条件2で分岐することができる。 (内部では、if-elseの中のif文として処理されている) ◯while文 ーーーーーーーーーー while 条件 { 処理 } ーーーーーーーーーー ・条件がtrueの間処理を実行し続ける。 ・条件の()は無くてもよい。 ・処理が一文の場合{}は省略できる。 ⚠️無限ループになる可能性がある。 do-while文 ーーーーーーーーー do { 処理 } while 条件 ーーーーーーーーー do-whileは処理を行ってから条件に満たしているか調べる。 <組み込み関数> ・println 引数 [任意の型] obj 返り値 Void 処理 objを画面に表示した後、改行する。 ・print 引数 [任意の型] obj 返り値 Void 処理 objを画面に表示する。 ・toString 引数 [任意の型] obj 返り値 String 処理 objを文字列に変換する。 ーーーーーーこの二つはいつか消えますーーーーーーー ◯toFloat 引数 [Int] num 返り値 Float 処理 numをFloat型に変換する。 ◯toInt 引数 [Float] num 返り値 Int 処理 numを四捨五入してInt型にする。
toEnd↓ https://scratch.mit.edu/projects/911831536/