関数

関数とは、プログラムの一部に名前を付けたものである。

呼び出し

呼び出しとは、関数を実行することである。呼び出しは関数内でのみできる。

関数を呼び出すと、その関数内の文を順に実行する。そして、呼び出した関数の処理が終了した時点で呼び出し元の関数に復帰する。

呼び出しは仮引数の有無により記述の仕方が異なる。

仮引数記述説明
なし名前()括弧内には何も記述しない。
あり名前( 実引数1, 実引数2… )名前(  )の括弧内に、仮引数の数と順に合わせて
実引数をカンマ区切りで指定する。

呼び出しには、文としての呼び出しと、値としての呼び出しの2つが存在する。ただし、値として呼び出す場合には、その関数は戻り値を返さなければならない。

引数

引数とは、実引数と仮引数の総称である。

実引数

実引数とは、関数を呼び出す時に渡す値である。

実引数は関数を呼び出す時にその関数の仮引数の数だけ指定しなければならない。また、実引数は式として扱われる。

仮引数

仮引数とは、関数へ渡された実引数を格納するメモリ、または作成する変数である。

仮引数は関数を作成する時に指定できる。

戻り値

戻り値とは、関数の呼び出し元へ返す値である。

戻り値を返す場合、その関数は値として呼び出すことができる。

種類

組み込み関数

組み込み関数とは、言語の仕様として作成済みの関数である。

名前引数戻り値説明
show表示する値なし末尾に改行を挿入して、値を表示する。
clearなしなし出力した値を全て削除する。
wait待機する時間
( 整数値のみ指定可。単位はミリ秒。 )
なしプログラムを待機する。
待機中は入力を受け付ける。
※ この関数はエントリポイントでのみ使用できる。
is_pushing_up_keyなし上キーを押しているか判断する値上キーを押している場合はtrueを返し、
押していない場合はfalseを返す。
is_pushing_down_keyなし下キーを押しているか判断する値下キーを押している場合はtrueを返し、
押していない場合はfalseを返す。
is_pushing_left_keyなし左キーを押しているか判断する値左キーを押している場合はtrueを返し、
押していない場合はfalseを返す。
is_pushing_right_keyなし右キーを押しているか判断する値右キーを押している場合はtrueを返し、
押していない場合はfalseを返す。
is_clickingなしクリックしているか判断する値マウスをクリックしている場合はtrueを返し、
クリックしていない場合はfalseを返す。
is_touchingなしタッチしているか判断する値画面をタッチしている場合はtrueを返し、
タッチしていない場合はfalseを返す。
( 画面をタッチしてtrueになるのはタッチデバイスのみ。 )
get_hoursなし現在の時刻の「時」を返す。
get_minutesなし現在の時刻の「分」を返す。
get_secondsなし現在の時刻の「秒」を返す。

function main()
    // 1. Hello world を表示
    // 2. 1秒( 1000ms )待機
    // 3. 出力した値を削除
    // 4. 入力中の情報を表示
    show( "Hello world." )
    
    wait( 1000 )
    clear()
    
    if is_pushing_up_key()
        show( "Up key." )
    
    if is_pushing_down_key()
        show( "Down key." )
    
    if is_pushing_left_key()
        show( "Left key." )
    
    if is_pushing_right_key()
        show( "Right key." )
    
    if is_clicking()
        show( "Click." )
    
    if is_touching()
        show( "Touch." )

自作関数

自作関数とは、自身で作成した関数である。

作成

作成するには、下記のいずれかの構文を記述する。この構文は関数外で使用できる。

仮引数を指定しない場合

function 名前()
    ブロック

仮引数を指定する場合

function 名前( 仮引数1, 仮引数2… )
    ブロック

名前には半角の小文字英字( a-z )、またはアンダースコア( _ )が使用できる。

仮引数

仮引数は、作成する時のfunction 名前( )の文の括弧内にメモリ、または変数を指定する。

指定する時の記述は下記の通りである。

仮引数記述呼び出し時
メモリmemory[ 番号 ]○番のメモリに実引数が格納される。
変数memory[ 番号 ] name 名前○番のメモリに実引数が格納され、指定した名前の変数が作成される。

また、仮引数を複数指定する場合は、カンマで区切る。

function main()
    show_arugments( 100, "value" )
    
function show_arugments( memory[ 0 ], memory[ auto ] name value )
    show( memory[ 0 ] )
    show( value )

戻り値

戻り値を返すには、下記の文を記述する。値は式として扱われる。

return 値

function main()
    show( get_one_hundred() )

function get_one_hundred()
    return 100

終了

関数は最後の文まで処理した時、または戻り値を返した時に終了する。

ただし、戻り値を返却せずに関数を終了したい場合、returnの値に何も指定しないことでできる。

function main()
    show_a_or_b( true )
    show_a_or_b( false )
    
    show( get_one_hundred() )

function get_one_hundred()
    // ↓ の戻り値を返した時点で関数が終了する。そのため、呼び出しても"show"は表示されない。
    return 100
    show( "show" )

function show_a_or_b( memory[ auto ] name is_a )
    if is_a
        show( "a" )
        // ↓ で戻り値を返さず関数を終了する。
        return
    
    show( "b" )

エントリポイント

エントリポイントとは、プログラム実行時に呼ばれる関数である。

エントリポイントはmainと名付けなければならない。また、引数と戻り値は不要である。

function main()
    // ブロック