Check our Terms and Privacy Policy.

低学年児童のためのプログラム教育教材の作成とそのための実践:第一版 (2nd)

プログラミングという概念は、手続きを書くことと同義ではありません。 プログラムそのものの概念の把握から、プログラミングの考え方の多様性を理解できる教材を目指します。 主に小道具を使うアンプラグドな環境においてパズルやゲームを題材としたものを想定しています。

現在の支援総額

4,000

0%

目標金額は2,080,000円

支援者数

1

募集終了まで残り

終了

このプロジェクトは、2017/08/02に募集を開始し、 2017/08/30に募集を終了しました

このプロジェクトを見た人はこちらもチェックしています

低学年児童のためのプログラム教育教材の作成とそのための実践:第一版 (2nd)

現在の支援総額

4,000

0%達成

終了

目標金額2,080,000

支援者数1

このプロジェクトは、2017/08/02に募集を開始し、 2017/08/30に募集を終了しました

プログラミングという概念は、手続きを書くことと同義ではありません。 プログラムそのものの概念の把握から、プログラミングの考え方の多様性を理解できる教材を目指します。 主に小道具を使うアンプラグドな環境においてパズルやゲームを題材としたものを想定しています。

このプロジェクトを見た人はこちらもチェックしています

繰り返しになりますが。プロジェクトの本文や、活動報告についての感想、ご意見、ご質問を、ぜひコメントでお寄せいただければと思います。現在は支援募集期間中であり、本企画の実施期間ではないため、お寄せいただいた感想などについてはリターンとしてではなく、お返事や回答をさせていただきます。

また、私個人についてはこちらをご覧ください。

この記事は、medium.comからの転載です。

先にこれを書きました:
sedで足し算(超簡略版)

そちらもですが、この記事も、パズルのようなものです。

では、本題に入ります。

足し算ができるなら、掛け算くらいなら手軽にできるだろうと思いますね? はいできます。

先と同じく1〜9の1桁の任意の数の掛け算です。先の記事ではいくつの数の足し算でもかまいませんでしたが、今回は2つの数の掛け算に限定します。

コードはこちら。名前は “multi.sed” とします:
p
s/1/I/g
s/2/II/g
s/3/III/g
s/4/IIII/g
s/5/IIIII/g
s/6/IIIIII/g
s/7/IIIIIII/g
s/8/IIIIIIII/g
s/9/IIIIIIIII/g
s/ *\* */ /g
s/ *$//
p
:loop1
/I+ i*I+/ {
s/(I+) (i*)I/\1 \2i/ # A
bloop1
}
:loop2
/I+ I*i+/ {
s/(I+) (I*)i/\1 \2\1/ # B
# p
bloop2
}
s/^I+ +//

データはこれとします。名前は “multi.dat” とします:
2 * 3
3 * 3

“multi.sed” に “multi.dat” を食わせると、こうなります:
$ sed -r -f multi.sed multi.dat
2 * 3
II III
IIIIII # ここが結果
3 * 3
III III
IIIIIIIII # ここが結果

ここで、「# ここが結果」は表示されません。ですが、計算はできています。

コードの肝はloop1の “# A” と:
s/(I+) (i*)I/\1 \2i/ # A

loop2の “# B” です:
s/(I+) (I*)i/\1 \2\1/ # B

Aの方は、 “I” だらけだとわけがわからなくなるので、2つめの数を “i” に置き換えています。虚数を意味してるとかではありません。 “I” と区別できればいいだけなので、なんでもかまいません。

Bの方は、その “i” を一個ずつ、1つめの数の “I” の並びで置き換えています。この過程を確認したい場合は、 “multi.sed” のloop2のとこのここ:
# p

この “#” を消してみてください。

シェアしてプロジェクトをもっと応援!