• Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • HOME
  • Arduino
    • Arduino初心者編
    • Arduino基礎編
    • Arduino応用編
    • Arduino実践編
  • Raspberry Pi
  • microbit
  • XBee
  • Scratch
  • Contact Us
  • Privacy Policy

STEMSHIP

ものづくりを通して、科学を学ぼう!

現在の場所:ホーム / microbit / microbit:文字列の長さ・結合・比較・切取・位置・数値変換の方法

microbit:文字列の長さ・結合・比較・切取・位置・数値変換の方法

2021年1月6日 by STEMSHIP コメントを書く

MakeCode には、文字列を操作するための多くのブロックがあります。ここでは、文字列の長さを求める方法、任意の数の文字列を結合する方法、2つの文字列を比較する方法、文字列から部分を抽出する方法、文字列を数値に変換する方法、文字列から指定されたインデックスで文字を抽出する方法を学びます。

1.文字列の長さ

(1) 目的

文字列の長さを得る

(2) 方法

  1. ツールボックスで、基本カテゴリをクリックします。次に、数を表示ブロックをクリックしてドラッグし、最初だけブロックの内側に配置します。
  2. ツールボックスで、高度なブロックをクリックしてカテゴリリストを展開し、文字列カテゴリをクリックします。
  3. 文字列の長さブロックをクリックしてドラッグし、数を表示ブロックの内側に配置します(図1)。
図1. 文字列の長さの配置

Javascriptで書くと、以下の通りです。

basic.showNumber("Hello".length)

Pythonで書くと、以下の通りです。

basic.show_number(len("Hello"))

(3) 解説

文字列の長さブロックは、提供されたテキストのスペースを含む文字数を整数として返します。
したがって、microbitディスプレイに出力を表示するには、文字列の長さブロックを数を表示ブロックで使用する必要があります。

2.文字列の結合

(1) 目的

2つ以上の文字列をつなぎ合わせて文章にしたい。

(2) 方法

例として、以下のような文字列を結合してテキストを作成します。

「apple」「banana」

  1. ツールボックスで、基本カテゴリをクリックします。次に、文字列を表示ブロックをクリックしてドラッグし、最初だけブロックの内側に配置します。
  2. ツールボックスで、高度なブロックをクリックしてカテゴリリストを展開し、文字列カテゴリをクリックします。
  3. 文字列をつなげるブロックをクリックしてドラッグし、文字列を表示ブロックの内側に配置します(図2)。
図2.文字列をつなげるの配置

Javascriptで書くと、以下の通りです。

basic.showString("apple" + "banana")

Pythonで書くと、以下の通りです。

basic.show_string("apple" + "banana")

同様に、以下のような文字列を結合してテキストを作成します。

「apple」「banana」「orange」

  1. 文字列をつなげるブロックの追加ボタン(プラスアイコン)をクリックすると、新しいテキストボックス(3つ目のテキストボックス)が追加されます。
  2. 3つ目のテキストボックスには、文字列 orangeを入力してください。
  3. 完成したら、コードは次のようになるはずです(図3)。
図3.文字列をつなげるブロックのテキストを追加

(3) 解説

文字列をつなげるブロックは、任意の数の文字列を結合してテキストを作成します。これは常に文字列を返します。
したがって、出力を micro:bit 表示に向けるために、文字列をつなげるブロックの中に配置する必要があります。

文字列をつなげるブロックには2つのデフォルトの文字列(Hello World)が含まれています。追加ボタン(プラスアイコン)と削除ボタン(マイナスアイコン)をそれぞれクリックすることで、文字列をつなげるブロック内のテキストボックスを追加または削除することができます。

Javascriptで書くと、以下の通りです。

basic.showString("apple" + "banana" + "orange")

Pythonで書くと、以下の通りです。

basic.show_string("apple" + "banana" + "orange")

3.二つの文字列を比較する

(1) 目的

2 つの文字列のうち、どちらの文字列が先にあるか比較したい。

(2) 方法

例として、以下の2つの文字列を比較します。

「apple」「banana」

  1.  ツールボックスで、基本カテゴリをクリックします。次に、数を表示ブロックをクリックしてドラッグし、最初だけブロックの内側に配置します。
  2. ツールボックスで、高度なブロックをクリックしてカテゴリリストを展開し、文字列カテゴリをクリックします。
  3. 文字列を比べるブロックをクリックしてドラッグし、数を表示ブロックの内側に配置します。
  4. 文字列を比べるブロックで、最初のテキストボックスをクリックして、文字列「banana」と入力します。次に、2 番目のテキストボックスをクリックして、「apple」と入力します(図4)。
図4.文字列を比べるブロックの配置

Javascriptで書くと、以下の通りです。

basic.showNumber("banana".compare("apple"))

Pythonで書くと、以下の通りです。

basic.show_number("banana".compare("apple"))

(3) 解説

2つの文字列は、ASCIIエンコーディングの文字の順番に基づいて比較されます。

以下の条件に基づいて出力されます。

  • 文字列1が文字列2より大きい場合は1を返します。
  • 両方の文字列が等しい場合、0を返します。
  • 文字列1が文字列2より小さい場合は-1を返します。

文字列を比べるブロックでは、数を表示または文字列を表示を使用することができます。ブロックを使用して、出力をマイクロビット表示に変換します。

4.文字列の切り取り

(1) 目的

文字列から一部を切り取りたい

(2) 方法

例として、文字列 this から部分文字列 hi を取り出します。

  1. ツールボックスで、基本カテゴリをクリックします。次に、文字列を表示ブロックをクリックしてドラッグし、最初だけブロックの内側に配置します。
  2. ツールボックスで、高度なブロックをクリックしてカテゴリリストを展開し、文字列カテゴリをクリックします。
  3. 文字列〇の〇番目から〇文字ブロックをクリックしてドラッグし、それを文字列を表示ブロックの内側に配置します。
  4. 文字列〇の〇番目から〇文字ブロックで、最初のテキストボックスをクリックして、文字列 thisを入力します。次に、2番目のテキストボックスをクリックして、値1と入力してください。最後に、3番目のテキストボックスをクリックして、値2を入力してください(図5)。
図5.文字列〇の〇番目から〇文字ブロックの配置

Javascriptで書くと、以下の通りです。

basic.showString("this".substr(1, 2))

Pythonで書くと、以下の通りです。

basic.show_string("this".substr(1, 2))

(3) 解説

文字列〇の〇番目から〇文字は、文字列の一部を取得するために使用することができます。文字列の長さは、空白、句読点、制御文字を含む文字数です。最初の文字のインデックスは0、2文字目は1、などとなります。最後の文字のインデックスは(文字列の長さ)-1です。

ブロックの部分文字列の最初のパラメータは対象の文字列を入れます。2 番目のパラメータは、取り出す文字列の最初の文字のインデックスを入れます。3番目のパラメータは、空白、句読点、制御文字を含む取り出す文字列の文字数を入れます。

例えば、文字列 ‘I have a pen’ から部分文字列 ‘have’取得したいと想像してみてください。

01234567891011
Ihaveapen
表1. 文字列のインデックス
  1. まず、文字列に含まれる文字のインデックスを与えます。
  2. 次に、部分文字列の最初の文字のインデックスを求めます。
  3. 最後に、部分文字列の文字数を数えます(図6)。
図6. 文字列〇の〇番目から〇文字の配置
  • 最初のパラメータ(対象の文字列) – 完全な文字列で、これは I have a pen.
  • 2番目のパラメータ (開始位置) – 部分文字列の最初の文字のインデックス
  • 3番目のパラメータ(長さ) – 部分文字列の文字数

Javascriptで書くと、以下の通りです。

basic.showString("I have a pen".substr(2, 4))

Pythonで書くと、以下の通りです。

basic.show_string("I have a pen".substr(2, 4))

5.文字列内の指定した位置の文字を取得する

(1) 目的

文字列内の指定した位置の文字を取得したい

(2) 方法

例として、文字列のインデックス3の文字を取得します。

こんにちは。

  1. ツールボックスで、基本カテゴリをクリックします。次に、文字列を表示ブロックをクリックしてドラッグし、最初だけブロックの内側に配置します。
  2. ツールボックスで、高度なブロックをクリックしてカテゴリリストを展開し、文字列カテゴリをクリックします。
  3. 文字列〇の〇番目の文字ブロックをクリックしてドラッグし、それを 文字列を表示ブロックの内側に配置します。
  4. 文字列〇の〇番目の文字ブロックの最初のテキストボックスに、文字列 microbitと入力します。2 番目のテキストボックスには、数字の 3 を入力します。
  5. 完成すると、コードは次のようになります (図7)。
図7. 文字列〇の〇番目の文字の配置

Javascriptで書くと、以下の通りです。

basic.showString("microbit".charAt(3))

Pythonで書くと、以下の通りです。

basic.show_string("microbit".char_at(3))

(3) 解説

文字列〇の〇番目の文字ブロックは、任意の文字列の指定された位置にある文字を返します。この位置はインデックスとして知られています。文字列の最初の文字のインデックスは 0、2 番目の文字のインデックスは 1 となります。最後の文字のインデックスは(文字列の長さ)-1です。

文字列〇の〇番目の文字ブロックの最初のパラメータは対象の文字列を入力します。

2 番目のパラメータには、返したい文字のインデックスを指定します。文字には、スペース、句読点、制御文字などを指定することができます。

インデックスから外れた数値や負の数値を与えられた場合、micro:bit表示は何も出力しません。

6.文字列を数値に変換する

(1) 目的

数字の文字からなる文字列を数値に変換したい。

(2) 方法

例として、文字列-1.23を数値値-1.23に変換します。

  1. ツールボックスで、基本カテゴリをクリックします。次に、文字列を表示ブロックをクリックしてドラッグし、最初だけブロックの内側に配置します。
  2. ツールボックスで高度なブロックをクリックしてカテゴリリストを展開し、文字列カテゴリをクリックします。
  3. 文字列〇を数値に変換するブロックをクリックしてドラッグし、それを数を表示ブロックの内側に配置します 。
  4. 文字列〇を数値に変換するブロックで、テキストボックスをクリックして、文字列 -1.23と入力します。
  5. 完成すると、コードは次のようになります(図8)。
図8. 文字列〇を数値に変換するブロックの配置

Javascriptで書くと、以下の通りです。

bbasic.showNumber(parseFloat("-1.23"))

Pythonで書くと、以下の通りです。

basic.show_number(parse_float("-1.23"))

(3) どのように機能するか

文字列〇を数値に変換するブロックでは、数値文字からなる文字列を浮動小数点数の値に変換することができます。入力文字列には、’-‘ (マイナス) と ‘.’ (小数点) シンボルを指定することもできます。文字列の最初の文字がマイナス記号の場合、文字列は負の浮動小数点数に変換されます。文字列が次のようなものであれば

123abcの場合、数値部分は123という数値に変換されます。文字列がabc123のようなものであれば、例外として知られるNaN(Not a Number)エラーがmicro:bitディスプレイに表示されます。

表2に、文字の組み合わせの種類が異なる文字列の出力を示します。

文字列出力
123123
12 312
12-312
1.231.23
12/312
abcNaN
123abc123
abc123NaN
ab123cNaN
表2. 文字の組み合わせの種類が異なる文字列の出力

特殊なケース

入力文字列が4e2のようなものであれば、e は 10 の指数になります。
e の後の 2 は 10 の 2 乗として計算され、10 ∗ 10 、つまり100 となります。
その結果、4 ∗ 100 となり、400 となります。

Filed Under: microbit

Reader Interactions

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。

最初のサイドバー

CONTACT US

  • Facebook
  • Twitter
  • Youtube

More to See

Arduinoベースのセンサノード:XBeeデータ収集ノードの製作

2021年9月27日 By STEMSHIP

Arduinoベースのセンサノード:Arduinoを使った温度センサの作製

2021年9月21日 By STEMSHIP

XBeeモジュールとBMP280センサを使用してデータ収集する

2021年5月31日 By STEMSHIP

XBeeモジュールでMicroPythonを使ってセンサを読み取る

2021年5月24日 By STEMSHIP

XBeeモジュールでセンサを読み取る:センサノードの設定と測定

2021年5月17日 By STEMSHIP

カテゴリー

  • Arduino (44)
    • Arduino初心者編 (15)
    • Arduino基礎編 (11)
    • Arduino実践編 (4)
    • Arduino応用編 (11)
    • Arduino番外編 (3)
  • MakeyMakey (1)
  • microbit (11)
  • Raspberry Pi (13)
  • Scratch (6)
  • STEM教育 (5)
  • XBee (15)
  • ものづくり教育 (2)
  • 子供の教育 (2)
  • 科学 (6)
  • 算数 (5)

Tags

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Footer

最近の投稿

  • Arduinoベースのセンサノード:スケッチ(プログラム)の作製
  • Arduinoベースのセンサノード:XBeeデータ収集ノードの製作
  • Arduinoベースのセンサノード:Arduinoを使った温度センサの作製
  • XBeeモジュールとBMP280センサを使用してデータ収集する
  • XBeeモジュールでMicroPythonを使ってセンサを読み取る

タグ

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Search

2023年3月
月 火 水 木 金 土 日
 12345
6789101112
13141516171819
20212223242526
2728293031  
« 10月    

Copyright © 2023 · STEMSHIP.COM