micro:bit atoA(小文字を大文字に変換する)プログラム(1) : 関数

2020年12月28日

この記事で説明すること

micro:bit にて小文字で受信した文字列データを大文字の文字列に変換してmicro:bit のLEDに表示するプログラムを元に、関数の作り方の基礎を学びます。

あるプログラムを考えてみよう

少し前にパソコン → micro:bit に文字列データを送り、その文字列をmicro:bit に表示するというプログラムを作成しました。

今回は micro:bit で受信した文字列が小文字だった時に大文字に変換するプログラムを作成します。え?実用性?そのようなものはありません。プログラム出来るということを楽しめることも micro:bit を使って遊ぶことの意味・醍醐味です。

さて、どうやって実装しましょうか?仕様としてはシンプルに以下としましょう。

・micro:bit がシリアルインタフェースで受信した文字列が大文字ならそのまま表示

・micro:bit がシリアルインタフェースで受信した文字列が小文字なら大文字に変換してから表示する

まずは Makecode に行き、少しパーツリストを眺めて実装方法を考えてみてください。

https://makecode.microbit.org/

考えていかなければいけないこと

少し複雑なプログラムを書く際、いきなりプログラムを書き始めることはオススメしません。前回の記事で記載したように、どのような機能が必要かを整理する、機能ブロックにわける、ことをオススメします。今回で言うと、機能ブロックは以下のようになると思います。

a.) シリアルインタフェースで文字列を受信する。

b.) 文字列が小文字なら大文字に変換する。

c.) 文字列を表示する。

このようになり、a.) c.) については前回までの記事での説明内容と同じです。プログラムは以下のようなものでしたね。

ここから、b.) の文字列が小文字なら大文字にするという変換のプログラムの作成を行っていきます。ここでパーツリストから関数を選択し、「関数を作成する」を選んでください。


関数名が決められますので、「Convert_a_to_A」とでもしてください。この時、文字列ボタンを1回押して以下のような状態として下さい。この意味は後程説明します。

これで出来たパーツは「最初だけ」「ずっと」のようなパーツとはまた違うものです。関数というこのパーツは、この中に動作をプログラムし、別の場所からこの関数を呼び出すことが出来るものとなっています。まずは実際に呼び出す部分を作成しましょう。もう一度「関数」のパーツリストを見てみると、「呼び出し…」のパーツがあると思いますので、以下のように設置して下さい。

ここで “abc" は固定の文字列になっており、"Convert_a_to_A"の関数を呼び出す時に"abc"の文字列を渡す、という意味になります。脱線して以下のようなプログラムを作成して動作を確認してみましょう。文字列表示の中身を"text" に置き換えることを忘れずに。"text" はある種変数のような意味合いなのですが、「変数」のパーツリストからは選ぶことは出来ず、関数パーツの"text"と書かれた部分をクリックすることで選択が可能になります。

さて、動作は確認出来ましたでしょうか?LEDには"abc"が延々と表示されていることかと思います。もう少しこれに変更を加えます。

こちらのプログラムでは"abc"と"def"が繰り返し表示されることが確認出来るかと思います。もちろんこの内容を繰り返し「ずっと」のパーツの中に記載することも出来るのですが、それではプログラムの記述量が増えてしまいます。同様の処理を行う繰り返し行うようなプログラムではこういった関数を使うことで誰が見てもわかりやすいプログラムを作成することが出来ます。

関数とは

改めて多くを説明するつもりはありませんが、関数とは「ある一通りのプログラム処理を一つにまとめ、名前を付けたものであり、その名前により別のプログラムから呼び出しが可能なのの」となります。

今回の例でいう"abc"や"def"は関数の引数と呼ばれ、「関数の呼び出し元で指定し、関数内で扱えるデータ(文字列や数値等)」であると考えて下さい。

少しプログラム屋さんからすると怒られる表現かもしれませんが、私が初めてプログラムを学ぶ人に説明するのであれば、上記のようになると思います。いくつか関数を使ったプログラムを見ていくことで理解も深まることかと思います。

さて、次回はこの “Convert_a_to_A" の関数の中身を記載していきます。少し難しい内容になるので、複数の記事に分かれて記載していくことになります。

この記事では関数の基本的な使い方について説明しました。何か不明点がありましあたらお気軽にお問合せ下さい。