見出し画像

第3回 - 変数・演算 編【PLEN5Stackでプログラミング学習】

こんにちは!
PLEN Projectの松原です。

第3回となる 変数・演算 編では、
・ロジックとは
・変数とは
・演算とは
以上をご紹介致します。

第3回~第5回を通じて、プログラミングに必要なロジック(基礎知識)を身につけながら、アラーム時計を作ってみましょう!

画像1


この記事は連載形式となっておりますので、
他の回は以下のマガジンよりご確認ください!



0. 下準備

まずUIFlowにアクセスしましょう。

☆UIFlowはM5Stackをビジュアルプログラミングするためのツール
☆Chrome系ブラウザでのご利用を推奨します
☆ブックマーク登録を行うと次回以降便利です


以下から最新版のライブラリーをダウンロードし、UIFlowで開いてください。

【注意】
第3回~第5回では新ブロックを用います。
2020/9/10 以前のライブラリーは使用できないため、最新版のライブラリーダウンロードしてください。


冒頭で紹介した、アラーム時計の挙動は、以下のプロジェクトファイルを開いて確認してみてくださいね。
(UIFlowにライブラリーを追加してから開いてください)


下準備の詳細に関しましては、第1回の記事をご確認ください。


1. プログラミングのロジックとは

プログラミングのロジック(基礎知識)とは、具体的に

① シーケンス (順序)
② ループ (繰り返し)
③ 条件分岐 (if;then)

に分けることができます。

画像1


シーケンス

シーケンスは順序という意味です。


第2回では、フローチャートを紹介しました。
プログラミングもフローチャートのように、Setupを起点として、上から順番ブロック(関数)が実行されます。

シーケンスのプログラム例
『前に出ておじぎをしたら後ろに下がるプログラム』

画像3


今回は、アラーム時計を作りながら、シーケンスに加え、変数演算(計算)について学習していきましょう!

又、次回と次々回は条件分岐ループについて扱いますのでお楽しみに(>_<)



2. アラーム時計を作る

では、

「PLEN5Stackを用いてアラーム時計を作る!」

といっても、漠然としており、何から始めたら良いのでしょうか?


私はコンピューターゲームを作るのが趣味なのですが、ゲームを作る際の手順は以下の通りとなります。

⓪ 開発環境を整える
① UIデザインを行う (紙ベース)
② UIを作る
③ フローチャートを作る (紙ベース)
④ プログラミング (Try&Error!)

⓪ 開発環境を整える
これはもう終わっていますね。
プログラミングできる環境と動かす環境が無ければ始まりません。


① UIデザインを行う (紙ベース)
UIとはユーザーインターフェースの略ですが、要するに、「目に見える部分」のことです。

ゲームだとタイトル画面や対戦画面の設計
(キャラクターやボタンの配置場所など)

アラーム時計なら「時刻表示やアラーム時刻表示」の設計に当たります。

紙ベースで軽くイメージが作れたらOKです


② UIを作る
紙ベースで設計したUIを実際にパソコンで作ります。


③ フローチャートを作る (紙ベース)
作ったUIをどのように動かすか、フローチャートを用いて整理します。

ゲームだとボタンを押した挙動
(→ボタンを押すと右に進む)

アラーム時計なら「文字盤を取得した時刻に変更」に当たります。

紙ベースで軽くイメージが作れればOKです。


④ プログラミング (Try&Error!)
作ったフローチャートをプログラミングに落とし込みます。

問題(バグ)が発生すれば、その都度修正します。
(プログラミングは Trial&Error の精神が大切なのです!)


アラーム時計の作り方をざっくりと把握した上で、実際に作業を進めて行きましょう!



2-1. アラーム時計を作る 【UIデザインを行う】

UIとはユーザーインターフェースの略ですが、要するに、「目に見える部分」のことです。

ゲームだとタイトル画面や対戦画面の設計
(キャラクターやボタンの配置場所など)
アラーム時計なら「時刻表示やアラーム時刻表示」の設計に当たります。

紙ベースで軽くイメージが作れればOKです。


M5Stackは日本語の表示ができないため、英数字&記号を用いたUIの設計を紙ベースで行います。

私は以下のようなUIデザインにしましたが、アレンジして頂いても大丈夫です。

画像4



2-2. アラーム時計を作る 【UIを作る

紙ベースで設計したUIを実際にパソコンで作ります。


先ほど設計したUIを参考にしながら、実際にUIFlowで作成してみましょう。

まず、設計したUIを以下のように分割します。
(※UIをアレンジした方も、同じような分割を行ってください。)

画像5


UIFlowのデザインエリアUIを作ります。
(色や配置は自由にアレンジしてくださいね)

画像6


以下のラベルは今後の説明で登場しますので、ラベル名以下のように設定してください。

画像35

画像8


再生ボタンを押し、ちゃんと表示されるか確認してみましょう。
(問題があればすぐ修正!)

画像9

画像10


ひと段落つけば、プロジェクト名を付けて保存しましょう。

画像36


ここまでのプロジェクトデータは以下より確認できます。
(UIFlowにライブラリーを追加してから開いてください)


UIFlowの使い方の詳細に関しましては、第2回の記事をご確認ください。



2-3. アラーム時計を作る 【フローチャートを作る

作ったUIをどのように動かすか、フローチャートを用いて整理します。

ゲームだとボタンを押した挙動
(→ボタンを押すと右に進む)
アラーム時計なら「文字盤を取得した時刻に変更」に当たります。

紙ベースで軽くイメージが作れればOKです。


まず、現在時刻を表示させてみます。


その前に、PLEN5Stackライブラリーの新ブロック「現在時刻を取得」について確認しておきましょう。

現在時刻を取得
日本標準時をインターネットから取得します。(取得には数秒かかります。)
取得したい情報のmode番号に関しては、表を参考にしてください。

画像11

このブロックを配置すると、インターネットから現在時刻を取得することができます。

mode番号は、「数字」ブロックを繋げて指定してください。

画像12


※追加したPLEN5Stackブロック内に「現在時刻を取得する」が無い場合、こちらから最新版のライブラリーをダウンロードしてください。


そして、現在時刻を表示させるフローチャートは以下のようになります。
(自分で分かればどのような表現方法でも大丈夫です)

画像32



2-4. アラーム時計を作る 【プログラミング

作ったフローチャートをプログラミングに落とし込みます。

問題(バグ)が発生すれば、その都度修正します。
(プログラミングは Trial&Error の精神が大切なのです!)

では、プログラミングしてみましょう。
できる方は、自力でプログラミングしてみて下さい!




↓解答は↓




現在時刻を表示させるプログラム

画像14


すんなりできた方は以後の記事は軽く読む程度で大丈夫です。(是非 5. アラーム機能を作る に取り組んでみてくださいね!)

恐らく、このプログラムを作るうえで分からなかったところはPoint2だと思います。

では、今回のテーマである変数・演算を用いながら理解していきましょう。



3. 変数とは

まず、変数を作ってみましょう。
でも、変数とは何のことでしょうか?

変数とは、数学用語で (中身の)(わる)(字) のことを指します。
よくと表現されますね。

画像15


例えば、 x1y2定義します(決めます)。




↓一旦休憩... _(:3 」∠)_↓




では、 x + y はどうなりますか? 
x1 のこと、y2 のことでしたね。

ですから、 x + y は 1 + 2 = 3 ですね。


今度は x に 10 を代入します(入れます)。




↓一旦休憩... _(:3 」∠)_↓




では、 x + y はどうなりますか? 
x10 のこと、y2 のことでしたね。

ですから、 x + y は 10 + 2 = 12 ですね。


変数とはこのように、数字を入れておく箱のようなものです。
先ほどは、xy という名前の変数(箱)に数字を代入した(入れた)といえます。

又、定数は不変であるのに対し、変数は上書きすることができます。

例)
定数 ・・・ 1mの長さ  ( 世界で統一されている )
変数 ・・・ あなたの身長   ( 昼と夜で変わる )


数学では数字しか入れられない変数ですが、プログラミングの世界では数字以外にも、文字列オブジェクト(物体)などを代入(入れる)することができます。

画像16


ただし、箱には1つしか入れることができないため、新しい要素を変数に代入する(入れる)と、その変数は上書きされます。

画像42


また、数字を代入した変数数字以外文字を代入した変数文字以外を代入すると、エラーになるので、変数の型(形式-type)には注意しましょう。

画像42


変数のまとめ
・変数には、数字や文字列などを代入することができる。
・変数に代入できるのは1つの要素のみ。
 (変数 x に 0 と 1 の両方を代入することはできない)
・変数の型を守らないとエラーが出る
 (数字の変数に数字以外を代入することはできない)
Pythonコード (参考程度に)

x = 1
y = 2
print(x+y) # 3
x = 10
print(x+y) # 12


以上を踏まえて、現在時刻を格納する変数を作ってみます。
変数の名前アルファベットや日本語が使えます


現在時刻の時を格納する変数
分を格納する変数 を作ってみましょう。

画像17

画像18


変数 現在時刻の時
変数 現在時刻の分
代入します。

画像19


試しに、ラベル「Time」の表示を変数 変更してみましょう。
(ラベルTimeが無い方は、「2-2. アラーム時計を作る 【UIを作る」の項目を再確認してください)

画像20


実行してみると...

画像21


ラベル「Time」に現在の時は表示されましたが、時:分 と表示させたいところです。


ここで演算(計算)を使います。



4. 演算とは


1 + 2 = 3 は分かると思いますが、

A + B = はどうなると思いますか?
ラベルTime表示させて確かめてみましょう




↓シンキング&トライアルタイム(-_-メ)↓




画像22


実行してみると、

画像23

そう、プログラミングの世界では、

A + B = AB

となります。


では、

1 (数字) + 2 (数字) = 12 (文字列)

にするにはどうすれば良いでしょうか?
ラベルTime表示させて確かめてみましょう




↓シンキング&トライアルタイム(-_-メ)↓




画像28

画像28

画像28


ダブルクオーテーション “” 内の数字や文字は文字列として扱われます。

Pythonコード (参考程度に)

print(1+2) # 3
print(“1”+”2”) # 12
print(int(“1”)+int(”2”)) # 3


では、本題に戻りますが、

時:分

を表示するにはどうすれば良いでしょうか?




↓シンキング&トライアルタイム(-_-メ)↓




できたでしょうか?
文字列() + “:” + 文字列() = 時:分
となりますね。

よって、このようなプログラムになります。

画像28


ただしこれでは、時間が更新されませんので、
以下のように修正してくださいね。
(繰り返しについては次回以降ご説明します)

画像28


ひと段落つけば、プロジェクト名を付けて保存しましょう。

画像37


ここまでのプロジェクトデータは以下より確認できます。
(UIFlowにライブラリーを追加してから開いてください)



5. アラーム機能をつける


※少し難しい内容となりますので、プログラミング初心者の方は写すだけでも大丈夫です。
(プログラミングに慣れたら是非復習してみてください ^_^ )

Aボタン(一番左のボタン) と Cボタン(一番左のボタン) を押して、アラーム時刻を設定できるようにします。


まず、
アラーム時刻を記録する変数 アラーム時刻
アラーム時刻の時を格納する変数 アラーム時
アラーム時刻の分を格納する変数 アラーム分
を作成してください。

画像34


とりあえず、アラーム時間を表示してみようとすると、

画像38


None と表示されてしまいました。

Noneというのは、変数に何も入っていないことを意味します。
変数に初期値を代入してあげましょう。

画像38


実行してみると、ちゃんと 0:0 と表示されました。

画像39



次に、AボタンCボタンでアラーム時刻が変化するようにしましょう。

アラーム時刻00:00 を0とした、分単位で記録します。(変数 アラーム時刻 が 90(分) のとき、1:30 にアラームを鳴らす)

すると、フローチャートは以下の通りとなります。(紫文字変数を表しています)

画像31


Cボタンを押すと、変数 アラーム時刻1つづつ増えていきます。
表を見ると、アラーム時刻が 70(分) になったとき、1:10 と表示する必要があり、アラーム時刻が 60 × 24 = 1440(分) になったとき、これは 0:0 と表示する必要があります。

Aボタンを押すと、変数 アラーム時刻1つづつ減っていきます。
表を見ると、アラーム時刻が -1(分) になったとき、23:59 と表示する必要があります。


以上を考慮した計算方法が以下の通りとなります。
(無理に理解して頂かなくても大丈夫です)

画像32


上記の計算式を踏まえた上で、プログラムを作成すると、

画像33


となります。
アラーム時刻は設定できるようになったでしょうか?

画像40


ひと段落つけば、プロジェクト名を付けて保存しましょう。

画像38


日常生活で「余り」を使うことは滅多にありませんが、プログラミングでは便利に使える要素なので、是非マスターしてくださいね!

Pythonコード (参考程度に) 【 % ・・・ 余り 】

x = 98765432105桁 = int(x / 100000)
下5桁 = x % 100000
print(上5桁) # 98765
print(下5桁) # 43210


ここまでのプロジェクトデータは以下より確認できます。
(UIFlowにライブラリーを追加してから開いてください)


6. 終わりに

毎回、記事を書く前はできるだけ短く書こうという気持ちなのですが、ついつい長引いてしまいます。(ごめんなさい)

次回、設定したアラーム時刻になれば、モーションが再生されるようにします。お楽しみに!


ご意見・ご質問等ございましたら、
ご気軽にコメント欄まで頂ければありがたいです。

この記事は連載形式となっておりますので、
是非以下のマガジンをフォローしてくださいね。


それでは、また次回の記事でお会いしましょう!
See you next time!

画像40




この記事が気に入ったらサポートをしてみませんか?