不定期戯言

戻る

« | 2024 | Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec | »

古いページ 新しいページ

2021.07.19 (Mon)

PyPEN仕様変更&デバグ

・代入を「=」,等値比較演算子を「==」に限定することにした。また比較演算子もa<b<cみたいなのをOKにした。それに伴い,マニュアルやサンプルプログラムを修正。また,配列や辞書に不具合があったのでこれも修正。とりあえず落ち着いたかなという感じ。

コメント(0)

コメントの受付は終了しました。

2021.07.18 (Sun)

地区合同勉強会

・久しぶりにオフラインな勉強会。講師は青山学院大学の伊藤一成教授。共通テストのサンプル問題を中心に話を伺ったが,問題を解く上での視点の違いについて考えさせられた。たとえばプログラミングの問題で,私は書く立場で考えるのだが生徒の多くは読む立場からの視点ではないかということだ。これは目からウロコ。プログラムを書く人になる場合はともかくとして,使う立場であれば多くの場合は読めればいいのだし。

コメント(0)

コメントの受付は終了しました。

2021.06.09 (Wed)

PyPENをDNCL2にもっと寄せるか

・Pythonではa<b<cのように比較演算子を続けることができる。Cでもエラーにはならないが,それはa<bかつb<cとは違う意味になるので初心者には厳しい。とりあえずPyPENもそれに合わせた変更ができることは確認したが,これをリリースするかどうかは悩みどころだなあ。

・今のところ代入は「←」で比較は「=」を標準にしているが,それぞれ「=」や「==」でも書けるようになっている。どちらを標準にするか,あるいは前者を廃止して後者のみにしてもいいのではないかと言ったことで悩んでいる。というのは,共通テストのサンプル問題が後者になっていて,DNCLの後継(仮称DNCL2)はそちらになるのではないかという話があるからだ。今まで作ったものを書き換えなくてはいけなくなるわけだが,それでも変更するメリットがあるのかもしれない。これはかなり大きい変更になるからオプション扱いは難しい…いや,パーサを2つ用意しておいて使い分ければいいのか?それはそれで動作確認が大変だが…。

コメント(0)

コメントの受付は終了しました。

2021.05.25 (Tue)

PyPENで「〜個の〜」の副産物

・某解説動画を作っていたら,代入に「=」を使うとエラーになる部分があった。てっきり「代入の定義から間違って削っちゃったかな」と思って「←」に変更してやり過ごしたのだが,調べてみるとそういう事実はない。エラーになるのは「a=9個の0」というように「〜個の〜」を使っているところで,結局「〜個の〜」を演算子扱いしていることにより,「=」の結合規則(nonassoc)の影響を受けてしまったということらしい。「←」は演算子扱いしていないのでその影響は受けない。

・「=」などの比較演算子をnonassocにしているのは,たとえば「a==b==c」が「a==(b==c)」と解釈されて,「エラーにならないけど思ったのと違う挙動をする(Cっぽい感じ)」ことを避けて「エラーにする」ためだ。しかしPythonでは「a<b<c」のような比較が認められているのだから,それに合わせて「a==b==c」を「a==bかつb==c」というように解釈するのも一つの解決になる。そういう感じの比較クラスを作ってしまえば解決するような気がするのだが,どうしたものか。DNCL2ではこのあたりどういう扱いになるんだろう。

・そもそもは「=」が代入にも比較にも使えるとしてしまったことに原因があるので,比較は「==」でないとダメ,とするのもまた一つの解決になる。でもそれだとDNCL2と挙動が違ってしまう。

・もう一つ解決方法があって,「=」などの比較演算子よりも「〜個の〜」の優先順位を上げて,「a=4個のx=y」のような比較演算を使うときは「a=4個の(x=y)」というようにカッコを強制するというものだ。それなりに悪くない気はするが,「a=4個の1+2」にはカッコがいらないのだからちょっと気分が悪い。

コメント(0)

コメントの受付は終了しました。

2021.05.22 (Sat)

高等学校「情報」実践事例集

・文科省から出された表題の事例集の中から,プログラミングに関するものを紹介する動画を作って再生リストにしてみた。例によって一発撮りで細かい編集はしていないので,動画としての出来はよろしくないが,それはそれ。

コメント(0)

コメントの受付は終了しました。

2021.05.19 (Wed)

PyPEN大改造

・文科省のサイトで高等学校「情報」実践事例集が公開されたので,プログラミングのところをPyPENで実装してみようと思った。元ネタがPyPENのものは問題ないのだが,ライフゲームについてはなぜかうまくいかない。これは明らかにPyPENのバグなわけで…しかも先日気になっていたところと同じところに根がありそう。そんなわけで間に合わせ的にやってる前処理関数を全部廃止して,その代わりにマメにするべき処理をスタックに積むようにしてみた。これでだいぶ見通しは良くなったはず。なお,ライフゲームのプログラムはこんな感じ。たぶん実践事例集のプログラムは盤面初期化のときのhとwが逆になってる。

コメント(0)

コメントの受付は終了しました。

2021.04.11 (Sun)

今年度の環境

・LibreOfficeは7系が使いたいということで,ちょっと気が早いけど生徒の端末はBullseyeにした。いろいろ変わったけどまあそれも新鮮だ。しかし学校全体での動きもあるので,いくらかの部分はそれに合わせていこうと思う。Googleのアカウントを生徒に与えるということなので,Googleドキュメントをいくらか使っていければと思っている。それに合わせて授業スライドもGoogleスライドを使ってみることにした。過去の資産がそのまま使えないのは痛いが,どうせ毎年作り直してるんだし。moodleは例年の通り使っていく。

コメント(0)

コメントの受付は終了しました。

2021.04.04 (Sun)

《整数》個の《値》

・車の6ヶ月点検を待っている間に,PyPENに配列の初期化を導入しようと考えていた。「〜を〜で初期化する」としたいのだけど,配列の長さが指定できない。「〜個の〜で初期化する」として作りかけたのだけど,それだったらいっそ「〜個の〜」で配列を生成して,それを代入すればいいのではないかと考えた。そんなわけで実装してみた。

・しかし一つ問題がある。「a←10個のrandom()」とすると,全部同じ値になってしまうのだ。これを解決するには,あらゆる構文について値の評価をもっときちんと再帰的にやらなくてはいけない(はず)。それは大改造になるので,すぐには手をつけられない。しかしこれを直せば,いろんなことが簡単になるのだと想像する。

コメント(0)

コメントの受付は終了しました。

2021.03.19 (Fri)

情報処理学会全国大会

・一般セションでの発表は初めてだったりする。「Webブラウザ上のプログラミング学習環境PyPENを用いた授業の提案」ということで,資料はいつものところ。zoomの扱いには慣れていたつもりだったのだが,カメラをONにするのを忘れて講演に入ってしまったのが悔やまれる。

・やはり人前で発表すると,アイディアとかがもらえるのでありがたい。小さい課題もあれば大きい課題もあって,実現に近づけるのが楽しみである。私自身も他の人の発表に何件かコメントさせてもらったが,そういうものになっていたらいいな。

コメント(0)

コメントの受付は終了しました。

2021.03.13 (Sat)

CE159の発表を聞きながら

・wPENではブレークポイントを実装しているというが,行番号とかのところでは何も起きない。どうやってるんだろうと質問したら,ブレークポイントという命令を入れているのだという。なるほど,それはいいアイディアだ。そんなわけでPyPENにも「一時停止する」という命令を実装した。

コメント(0)

コメントの受付は終了しました。

古いページ 新しいページ