2022/07/28

ブログ引っ越します

2009年からスタートしたココログのブログ「たかはしのんき年月記」ですが、引っ越すことにしました。引越し先をいろいろ探していましたが、Wordpress.com に開設した「のんきさんの年月記」のほうへ、ここの古い記事も少しずつ移すつもりです。

ココログの唯一の残念だった点はスマホで見たときに読みにくいことだと思います。NIFTY-Serveの頃からいろいろ思い出がありますがブログに関しては移行が完了したところで閉鎖予定です。いつまでに移行が終わるかは定めていませんので、しばらくはアクセスしていただけると思います。

ココログにいただいたコメントは残すことができないと思いますので、悪しからずご了承ください。

| | コメント (0)

2021/06/18

漢数字の不規則性2

プログラミング教育の記事

昨日の朝日新聞(朝刊)の教育面にプログラミング教育に関する記事が掲載されていて、そこに2010年の大学入試センター試験問題として漢数字を表示するプログラム(穴埋め問題)が載っていました。

試験会場(机上)でこれを解くのは大変そうだと思い、Small Basic でプログラムを書きなおし、実際に走らせてみることにしました。プログラム PZCJ416.000 が解く前のものです。穴埋めを解くと動きます。

実際、一発では正答できず n の1の位が 1 だとうまく動かなかったので、デバッグして正答にたどり着きました。このプログラムは 0 ≦ n ≦ 9999 の範囲ながらシンプルな作りだという印象を受けました。

分かりにくい自作プログラム

そういえば、これと同じようなプログラムを自作したことがあると思い、過去のプログラムを探してみたところ、2018年にこのブログに「漢数字の不規則性」という記事を書いていたことを思い出しました。当時のプログラムが NBS194-1 です。とてもシンプルとは言えません。上記の入試問題を参考にサブルーチン Convert の中を書き換えたいと思いました(新しいバージョンができたら、また紹介します)。

机上と実機、2つの能力

プログラムの穴埋めを机上で解くのは結構大変。実際にやってみるほうが楽しいと思いました。机上で正しいプログラムを書く能力と実機を使って正しいプログラムを書く能力は別物だと思います。

分かりやすいプログラム

試験に出題されるようなプログラムはよくできていると思いました。昔 bit という雑誌にも短くてすっきりとしたプログラムがたくさん紹介されていたなと思います。正しく動くプログラムと分かりやすいプログラムもまた別物です。分かりやすいプログラムを書くには、そういうプログラムを読んでみることが大切で、自力で書いたプログラムとよく比較することで、どうすれば分かりやすいプログラムが書けるのかヒントが見えてくると思います。

中国語の漢数字

さて、最後に全く別の話題について補足します。上記の2018年の私のブログに、中国語でも日本と同じ表記なのか気になるという記述がありました。今年から中国語を学び始め、表記は違うということが分かってきました。例えば日本語の百は中国語では一百です。したがって中国語の漢数字を表示するプログラムは別途作る必要があります。

 

| | コメント (0)

2021/06/17

子ども向け中国語囲碁入門

今年から中国語を勉強しています。ヤンチャンの YouTube を見たり、長草くんと李姉妹の本で単語を覚えたり、Google スプレッドシートで漢字帳を作ったりしています。

外国語を覚えるには目的がはっきりしているといいそうです。私の場合は、中国語でもプログラミング、数学、囲碁の話ができたらいいなと思っています。TechNet Wiki の英語の記事を一つだけですが中国語訳もしてみました。

それで、今日の本題ですが、昨日購入した『智力课堂——少儿围棋入门』という本を眺めてみて、ちょっと感動しました。ちなみにこの本は私が買った中国語本の第1号です。

少儿 (shào'ér) は子どもという意味で儿は児の簡体字です。围棋 (wéiqí) は囲碁のこと。表紙はマンガだし、明らかに子ども向けの囲碁入門の本だと思います。ところが中身を眺めてみると、子ども向け?という印象でした。まず、本文中にはマンガは一切なく、内容が子ども向けにしては本格的だと思いました。ページ数が多いし、9路や13路の図はなく、19路の図が載っています。最初に囲碁用語の説明があって、石の位置関係で日本だとケイマとか一間(いっけん)とかありますが、それがかなりの種類あります。日本より豊富だと思います。

元々囲碁は中国から伝わってきており、この本にも四千年以上の歴史があると書いてあります。とはいえ江戸以降、確実に日本で囲碁が発達しており、これが中国にも逆輸入されています。この本の後半に布石の説明があるのですが、その中に小林流(小林光一九段)、秀策流(本因坊秀策)、宇宙流(武宮正樹九段)が解説されていました。このあたりで感心から感動に変わりました。

最近中国文化に触れるようになり、中国の小学生は猛勉強しているようなのですが、囲碁も最初から大人として教えているように思いました。

中国語を始めたばかりでまだ読むというより眺めるしかないのですが、眺めただけでも中国がなぜ囲碁が強いのか、中国と日本の囲碁の交流の歴史、囲碁の可能性などを感じ取ることができました。そしてこの本を原文で早く読めるようになりたいと思えました。

 

| | コメント (0)

2021/06/09

微分と積分

先日、ヨビノリたくみさんの YouTubeビデオ「中学数学からはじめる微分積分」を見ながら、たくみさんの「世界は微分で記述され、積分で読み解く」というのは、ああそうだなと思いました。

以下のビデオは Small Basic のブログ向けに作ったものですが、カメが左から右へ移動していて、グラフには縦軸にカメの速度、横軸に時間をとってカメの動きと同時にグラフを描いています。このグラフのある時点での傾きがこの運動の微分になります。この場合、微分の単位は速度÷時間なので加速度の単位 [m/s2] になります。0~2秒は加速度 3÷2=1.5 [m/s2] で加速し、2~3秒は等速 3 [m/s](加速度は 0 [m/s2])で移動し、3~5秒は加速度 -3÷2=-1.5 [m/s2] で減速しています。またグラフで濃く塗りつぶした部分が距離を表していて、最終的に 9m 進みます。この運動の積分は、面積である距離になります。

という説明が微積ではよく行われると思います。カメの速度を自分でコントロールしていないので、実感が湧かないかもしれません。

昨年から私たちは日々の新型コロナ感染者数のグラフを見ています。縦軸がその日の新規感染者数、横軸が日付です。厳密にはこのグラフは人数を扱っているため、整数のグラフになります。先ほどの速度のように小数点の値は取りません。それでもグラフが増加傾向か減少傾向かはグラフの傾き(微分)で分かります。延べの感染者数が体積(積分)です。私たちはこのグラフをコントロールするために日々苦戦してきました。効果が表れるのが2週間後なので、かなり厄介です。カメの代わりに自動車を想像してみてください。アクセルを踏んでから2週間後に加速する車だとしたら、運転は非常に困難な事が分かるでしょう。

一方、さらに厳密ではなくなるのですが、私は仕事場の片づけ中であるものの残念ながら資料が多すぎて片づいていません。片づけのグラフをどう描くか難しいところですが、感覚としては現在の散らかり具合が面積(積分)で日々散らかしているか片づけているかが傾き(微分)になるのでしょう。つまり一般的に、今現在どちらの方向に向いているのかが傾き(微分)で、結果が面積(積分)として現れることになります。

数値化してグラフ化すると傾きが急なのか緩やかなのか上向きなのか下向きなのか、結果がどうなっているのかが分かりやすいですが、そうしなくても、日々の積み重ねが現在の結果に反映されていることが実感できるのではないでしょうか。

私たちがコントロールできるのは今の行動のみです。これは傾き(微分)を選択する行動です。その積み重ねが面積(積分)という結果として現れるという訳です。

カメや車の運転、新型コロナの感染者数、仕事場の散らかり具合について書いてきましたが、学習、人格の形成やSDGsなどの社会問題への取り組みなども結局のところ今どう行動するかを変えるしかない。というのが微分と積分の物語なのだなぁと思います。

追加リソース

 

 

| | コメント (0)

2021/05/22

プログラミング講座(207) micro:bit 側の変更ほか

環境メーターの以下の項目を修正しました。

  • micro:bit 側からではなく PC 側から計測のタイミングを与える。
  • CO2濃度グラフの範囲を変更。
  • 湿度メーターの色を変更。

Envmeter040_1

プログラムを PVXC450.000-2 として発行しました。PC から20秒毎にシリアルポートに ":" を送り、v1 はそれを受けて v2 に無線で ":" を送り、v2 はそれを受けて v1 に CO2濃度、温度、湿度を無線で返します。v1 はそれをシリアルポートで PC に転送します。PC はそのデータをグラフィック表示します。

環境メーターはまだ修正するかもしれないですが、一通り完成したのでまとめのページを作成しました。

関連項目

| | コメント (0)

2021/05/15

プログラミング講座(206) 絶対湿度の計算やログ機能も完成

環境メーターの当初予定していた機能が一通り完成しました。プログラムをPVXC450.000-1 で発行しました。下図は私の部屋の窓を開放して10分間のグラフです。CO2濃度が 700ppm 近くから 533ppm まで下がりました。

Envmeter030

今回作ったのは以下の機能です。

  • ログを残し、グラフを表示する。
  • インフルエンザや熱中症の警告。

インフルエンザは絶対湿度が 10g/m^3 以下で流行が始まるようです。絶対湿度は相対湿度と気温から計算可能です。熱中症は暑さ指数 (WBGT) が 21以上で注意、25以上で警戒、28以上で厳重警戒、31以上で危険だそうですが、本来、風や日照にも関係していて、気温と湿度からだけでは計算できないので、室内用の参考値です。

micro:bit 側のプログラムはまだ変更していません。以下の作り込みがまだ残っています。

  • micro:bit 側からではなく PC 側から計測のタイミングを与える。

(つづく)

関連項目

| | コメント (0)

2021/05/07

プログラミング講座(205) 湿度計の針とCO2リングの色

前回のプログラムから Small Basic のプログラムのみ書き換えました。書き換えたのは、湿度計の針を追加したのと、CO2濃度のリングの色を変えたところです。プログラムは ID PVXC450.000-0 で公開しました。

湿度計の針は Shapes.AddLine で表現しています。この操作で作られる図形(この場合は線分)は Shapes.Rotate で回転すると図形の中心で回ります。針なので端を中心に回転するには標準では、Shapes.Rotate 後に Shapes.Move で移動するしかないのですが、LitDev 拡張機能に、LDShapes.RotateAbout という操作があり、回転の中心を指定できます。今回はこの操作を使いました。

また、快適な湿度(40~60%)を表す円弧を LDFigures.AddArc で描いてみたのですが、うまくいかなかったので、LDShapes.AddPolygon で描画しました。

CO2濃度のリングの色を変えるのも、標準では Shapes.AddEllipse をやり直すしかありませんが、LitDev 拡張機能には LDShapes.PenColour という操作があり、図形のペンの色を後から変更できます。CO2濃度が400ppm以下なら緑、1000ppm以上なら赤、その間はグラデーションで変化するようにしたかったので、LDColours.HSLtoRGB という操作を使って計算しました。

Envmeter020

LitDev 拡張機能を使うとプログラミングが楽になります。ただ、操作やプロパティの種類が増えるので、使いこなすのはちょっと大変そうです。ドキュメントのページでキーワードを検索してみると、ほしい機能が見つかるかもしれません。

残った改善項目は、

  • micro:bit 側からではなく PC 側から計測のタイミングを与える
  • ログを残し、グラフ表示する
  • インフルエンザや熱中症の警告

です。少しずつ進めていこうと思います。

(つづく)

関連項目

| | コメント (0)

«プログラミング講座(204) 環境メーターを作る