micro:bit で ASCII コードを使った小文字→大文字変換アルゴリズムを実装する(4)
前回の記事では繰り返し(for 文・while 文)の使い方を学びました。今回は関数・条件分岐・繰り返しを組み合わせて、atoA プログラムを完成させます。ASCII コードを利用した小文字→大文字変換のアルゴリズムを実装します。
アルゴリズムとは
ある事を実現するためのプログラムにおいて、その手順・やり方のことをアルゴリズムと呼びます。1+1を求めるプログラムは 1+2−1 としても同じ結果を得られます。このアルゴリズムの選択がプログラムの良し悪しを決めるといっても過言ではありません。
ASCII コードを使った小文字→大文字変換アルゴリズムを設計する
このプログラムの重要なポイントは「’a’ を受信したら 'A’ に変換する」部分です。前回の記事で条件分岐(if 文)を使って全パターンを列挙する方法を紹介しましたが、ASCII コードを活用するとより簡潔に実装できます。
シリアル通信の文字列データは ASCII コードで送受信されます(前回シリアル通信の記事を参照)。ASCII コードでは小文字と大文字の間に一定の規則があります。
- 小文字 'a’ = 0x61(97)、大文字 'A’ = 0x41(65)
- 小文字 'b’ = 0x62(98)、大文字 'B’ = 0x42(66)
- 小文字 'c’ = 0x63(99)、大文字 'C’ = 0x43(67)
小文字の ASCII コードから 32 を引くと対応する大文字の ASCII コードになります。この規則を使えば変換を一般化できます。整理すると手順は以下の3ステップです。
- 文字列データが a〜z の ASCII コード(0x61〜0x7a)かどうかを判定する
- a〜z の範囲であれば ASCII コードの値から 32 を引く
- 計算後の値を ASCII コードに従って文字列に変換して返す
Convert_a_to_A 関数を実装する
スタートとなるプログラムは以下の形で、Convert_a_to_A 関数の中身だけを変更していきます。

まず①のプログラムを記述します。ASCII コードを 97(’a’)から1ずつ増やしながらアルファベットの数(26)分確認していきます。

受信した文字が a〜z の場合のみ条件分岐に合致します。次に②と③のプログラムを追加します。文字コードから文字への変換パーツは用意されているので、まず③を実装します。

最後に変数 “temp" に格納した受信文字の ASCII コードから 32 を引いた値を文字に変換するよう修正します。

全体を確認すると以下のようになります。

これで atoA プログラムが完成しました。micro:bit にダウンロードして実際の動作を確認してください。この4回のシリーズを通じて、関数・条件分岐・繰り返し・アルゴリズム設計という micro:bit プログラミングの基礎を一通り学びました。





ディスカッション
コメント一覧
まだ、コメントがありません