2018/01/31

漢数字の不規則性

アラビア数字を入力し漢数字を出力するプログラムを作成中です。プログラムID NBS194で公開しました。

「一」の扱いがまだうまくいっていません。「一百」「一十」は使わないですよね。

「一千」はあまり使わないのに「千万」は使わず「一千万」を使う。この辺を改良する必要があります。中国語でも同じなのか気になります。

| | コメント (1) | トラックバック (0)

2018/01/27

小さくて寛容な言語

マイクロソフトが2008年10月に公開したプログラミング言語 Small Basic (スモールベーシック)が今年で10周年を迎えます。

Small Basic はプログラミングを学ぶ人向けの入門用言語として作られました。Small Basic の特長はいろいろありますが、そのうち代表的な2つを紹介したいと思います。

小さい
Small Basic は非常に小さな言語です。この特長は初心者が取り組みやすいように配慮されたものでしょう。Small Basic v1.2 のキーワードが 14、オブジェクトが 20、オブジェクトに含まれるメンバ(プロパティ/イベント/操作)は 244 です。すぐに覚えられる範囲だと思います。しかも、下で説明するヘルプの機能があるので覚えていなくても大丈夫です。ただし、Small Basic の祖先にあたる1970年代に作られた BASIC の一つで1980年代に私が愛用していた F-BASIC V3.0 のステートメントの数は 149 でした。

寛容
Small Basic はミスに対して寛容です。これは初心者がエラーに悩まされることを軽減するための配慮でしょう。Small Basic が寛容であることは文法、実行時、操作性に分けられます。文法上のミスに対して6つの特長があります。

・型がないので型が違うというエラーが起きない
・キーワード、オブジェクト、変数名などの大文字と小文字は区別されない
・変数を必ずしも初期化する必要はない(初期値として空""が入っているが代入が全くないとエラーになる)
・操作の引数の間のカンマは省略しても大丈夫
・行末では文字列の引用符が閉じていなくても大丈夫
・文法エラーがあると誤ってくれる(残念ながら日本語版では訳されていません...)

実行時にも以下の特長があります。

・論理値が"True"、"False"以外でも"False"として扱われる
・定義されていない色の名前は"Black"として扱われる
・0 除算でエラーにならない(結果が 0 になる)ようになっていた(v1.2 でエラーになるよう変更された)

操作性の上では入力に応じて候補とヘルプが表示される IntelliSense(インテリセンス)機能があり、途中まで入力してメニューから選ぶことができます。オブジェクトやメンバの名前が若干長いですが、この機能により簡単に入力することができます。

---
Small Basic のその他の特長については、ちょっと古いですがこちらにまとめてあります。昔の英文の訳のままなので、近いうちに更新したいと思います。

| | コメント (0) | トラックバック (0)

2017/11/03

Small Basic 今月のチャレンジのすすめ

マイクロソフトのプログラミング入門用の言語 Small Basic。公開されて 9 年が経ちました。Small Basic フォーラムというオンラインのコミュニティで英国のリットデブ (litdev) さんが中心となって毎月チャレンジ問題が出題されています。ここ何か月かのチャレンジ問題は Small Basic Fun Japan に和訳を載せていますのでご覧ください。

初心者向けの問題から中・上級者向けの問題まで出題されています。2020年のプログラミング教育の必修化の流れにも、英語教育で4技能(聞く・話す・読む・書く)にバランスよく取り組もうとする流れにも、この今月のチャレンジ (Challenge of the Month) への挑戦はいい機会になると思います。特に小学校での英語教育は現時点では聞く・話すに重点が置かれているようです。それを補ううえで、このチャレンジを通して読む・書くという実践的な機会が役に立つのではないでしょうか。

私自身も 2010 年から Small Basic と毎月のチャレンジに取り組んできました。Small Basic の問題は挑戦しやすいものや挑戦し甲斐のあるものが連綿と続いています。過去の問題を解くのも面白いと思います。英語もそれほど長文ではないですし、ネット上でやり取りができるので、不明点を確認することもできます。初めの頃は問題の意味を取り違えることもありましたが、そのような経験も大切だと思います。

Small Basic というプログラミング言語はたった 14 のキーワードと 20 のオブジェクト(ライブラリ)からなっていて、小学生でもすぐに覚えられるでしょう。オブジェクトには数学の関数も含まれているので、この挑戦によって、少なくともプログラミング、英語、数学の 3 教科の習得につながります。小学校のうちは理論はさて置き、これらに楽しみながら触れていくことが将来につながっていくと思います。

最近のプログラミング・ブームでは Scratch などのビジュアル系プログラミング環境がプログラミングの入口として活用されていますが、小学 4 年生くらいから、テキストベースのプログラミング言語である Small Basic の今月のチャレンジに取り組んでみてはいかがでしょうか。

フォーラムに書き込む際に簡単な英語を書くことになりますが、初めは Google TranslateBing Translator などの翻訳サイトを使うといいと思います。実際、英語圏以外のお子さんも(大人も)使っておられます。

| | コメント (0) | トラックバック (0)

2017/09/23

Xamarin Workbooks で Small Basic

Xamarin Workbooks(ザマリン ワークブックス)とは C# をインタラクティブに実行できるドキュメント作成ツールです。チュートリアル(自習教材)などを簡単に作れます。

Xamarin Workbooks にパッケージを追加する機能があり、さまざまなライブラリを追加できます。ライブラリの中に、Small Basic ライブラリ もあります。

下図は Small Basic ライブラリの Clock オブジェクトに関するワークブックを表示したものです。

Clock オブジェクト

現在 Small Basic オブジェクトについてのワークブックを作成中で、TechNet Gallery に公開し随時更新しています。詳細について TechNet Wiki に記事『Small Basic: Xamarin Workbooks でインタラクティブな学習』を書きました。

Xamarin Workbooks ではプログラミング言語として C# を使うので、Small Basic のプログラムと若干書き方が変わりますが、ライブラリは同じなため実質的に同じプログラムを作ることができます。

また、ドキュメントとプログラムを併記し、プログラムはその場で変更したり実行したりできるので、学ぶ側の負担が少ないと思います。

さらに、Mac でも動作します。ただし TextWindow や GraphicsWindow は Mac 上では動作しません。

タートルグラフィックスやプログラミングの基礎を学んだり、簡単に教材を作ったり、Xamarin Workbooks で Small Basic ライブラリを使ってみませんか?


| | コメント (0) | トラックバック (0)

2017/09/15

プログラミング講座(177) プリズム

前回のつづきです。スネルの法則で屈折率と角度の関係はわかりました。ただ、プリズムの分光となると、周波数毎の屈折率の違いがないと色が分かれていきません。これはいろいろ調べてみましたが、定式化されていないようです。仕方がないので、ガラスメーカーのデータを参照することにしました。利用したのは HOYA グループのデータです。ここには C7 と F2 というガラスのデータが載っています。

これをもとにグラフを作成してみました。プログラム ID VGR488 で発行しました。

図178 波長対屈折率グラフ
【図178 波長対屈折率グラフ】

この情報と前回のスネルの法則を組み合わせると、プリズムの分光の絵を描くことができます。作ったプログラムが MLM021-1 です。C7 は屈折率が小さいので F2 を使用しました。

図179 プリズムの分光
【図179 プリズムの分光】

| | コメント (0) | トラックバック (0)

2017/09/04

プログラミング講座(176) スネルの法則

アニメから外れますが、今日は面白そうなので、今月のチャレンジの出題から「プリズムの分光についてグラフィック表示せよ」という問題に挑戦してみたいと思います。

出題の中に「スネルの法則について調べよう」とあるので、Wikipedia で調べてみました。入射角θAの正弦に対する屈折角θBの正弦の比が屈折率に反比例するということなので、まずこの法則を図示するプログラムを書いてみました。プログラムIDは DQG281 で発行しました。

図177 スネルの法則
【図177 スネルの法則】

(つづく)


| | コメント (0) | トラックバック (0)

2017/08/25

JavaScript (42) chibi:bit

英国で11~12歳の子どもたちに配布されたという小さなボードコンピューター BBC micro:bit の互換機 SWITCH SCIENCE chibi:bit を購入しました。micro:bit / chibi:bit のプログラミングには、ブロック, JavaScript, Python などが使われますが、この記事ではマイクロソフトの IDE を使って ブロック / JavaScript を使います。

micro:bit / chibi:bit は、約 5×4センチの小さなコンピューターですが、スイッチ、5×5 LED、加速センサー、温度センサー、磁気コンパス、入出力ピン、Bluetooth などが備わっており、入門機として申し分ない機能を持っています。

今回は温度センサーを使って温度計を作ってみました。

IDE は micro:bit 版が https://makecode.microbit.org/ chibi:bit 版が http://chibibit.io/ide/ にあります。どちらを使っても動作しますが、今回は chibi:bit のほうを使ってみます。

図37  chibi:bit 専用開発環境
【図37 chibi:bit 専用開発環境】

作ったプログラムを https://makecode.microbit.org/_KCoUCbaDE2YY で [共有] しました。[JavaScript] ボタンを押すと JavaScript のコード、[ブロック] を押すとブロックでのコードを見ることができます。

chibi:bit を USB ケーブルで PC につなげると、CHIBIBIT というドライブが見えるようになります。

[ダウンロード] ボタンを押すと hex ファイルがダウンロードフォルダにできるので、それを CHIBIBIT というドライブにコピーします。

chibi:bit のリセットボタンを押します。

chibi:bit の A ボタンを押します。すると、現在の温度が LED に表示されます。

今回のプログラムは温度を LED に表示するだけでなく、温度が変わるたびに、USB ケーブル経由で PC 側に温度の数値と改行コードを送っています。

このデータを受けるプログラムを Small Basic と Litdev Extension を使って作りました。(プログラムID KKK886-0)このプログラムは以前、Arduino (Osoyoo) UNO 用に作ったものとほぼ同じです。ボーレートを 9600 から 115200 に上げました。COM ポートの番号は必要に応じて変更してください。ポート番号は、デバイス マネージャー の「ポート」で確認できます。

Small Basic プログラムを走らせた後、chibi:bit の A ボタンを何回か押してみて下さい。

図38 温度計
【図38 温度計】

※ chibi:bit 専用開発環境での [共有] がうまくいかなかったので、micro:bit の JavaScriptブロックエディターのほうで [共有] しました。

| | コメント (0) | トラックバック (0)

«Small Basic 1.3 リリース