投稿

NEWS

2024/4/27(土 ) メモ (6回目)(掛け算の順序問題2) を公開しました    2024/4/24(水 ) N88-BASICでn進タイマー (1回目)  を公開しました    2024/4/21(日) VL,NL,XL-BASIC(ver~28u5) を公開しました

メモ (6回目)

 2024/4/27(土) メモ (6回目)   掛け算の順序問題 (掛け算に順序は無いのにあると勘違いする理由)   ■ 結論 下記例(伝票と計算機)のように 順序がないものに対して便宜上順序を決めている例を 示して順序があるというのは間違いです   正しくは 「掛け算に順序はないが 便宜上順序を決めている分野があるにすぎない」 です   「順序がある」のと「便宜上順序を決めている」は 同じではありません     ■ 補足 「掛け算に順序がある」と言っているのは 「お箸は右手で持つと決まっている」と言っていると同じ   右利きの子に 右を「お箸を持つ手のほう」と教えるのは その子を基準としているだけで お箸を持つ手は人によってどちらに決めても決めなくても 構いません(左右両方使える人もいます) 掛け算の順序も場合によってどちらに決めても決めなくても 構いません(なぜなら掛け算に順序はないからです)   「便宜上お箸の持ち方を右手で説明します」 なら良いのですが 全員に「お箸は右手で持つと決まっています」 と教えるのはどうかと思います     ■ 伝票などの計算順序について ▼ 例 単価(円)×数量(個)と書かれた伝票に数値を記入する場合 100(円)×2(個)  … (χが2個のときχ×2) のように書き、逆にすると混乱します なので掛け算に順序があるかのように思われますが   数量(個)×単価(円)と書かれた伝票では 2(個)×100(円)  … (χが2個のとき2χ) のように書くので順序があるのではなく決めているだけなのです   ▼ 結論 伝票などの場合は 掛け算の順序を決めて書くようにしているだけであり どちらの決め方が正しいかは決まっていません 掛け算に順序があるわけではなく、便宜上順序を 決めているにすぎません     ■ 計算機の分野の計算順序について ▼ 例 計算機(PCなど)で掛け算を実装するときに 例えば a×b = aをb回足す と実装すれば 2×100(遅い)と100×2(速い)とでは計算速度に 差がでますので掛け算に順序があるかのように思われますが しかし a×b = a回bを足す と実装すれば 2×100(速い)と100×2(遅い)と先ほどと 逆の結果になります   ▼ 結論 計算機(PCなど)の掛け算の実装も伝票などのときと同様 掛け

N88-BASICでn進タイマー (1回目)

イメージ
2024/4/24(水) N88-BASICでn進タイマー (1回目)   ■ 動作 timer001.basを走らせると 経過時間と 2~16進数3桁のタイマーと 時刻が表示されます キー操作は画面を見て下さい     VL, NL,XL-BASICとdlg~.zip(t imer 001.bas)は このブログ(以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

n進タイマー

2024/4/19(金) n進タイマー   ■ 2024年共通テストI・Aのタイマーの問題 ▼ 前提 Tn(n = 3,4,6)をn進数下3桁のタイマーとする   xを数値としxxは10進数、xx(n)はn進数を表すとする   ▼ 問題 1. 40秒後のT6は? 2. T4が初めて000(4)に戻るのは何秒後? 3. T4,T6が初めて同時に000(n)に戻るのは何秒後? 4. t秒後にT4が012(4)となるのは   t ÷ a = ? … b を満たす時である、a,bは?    [b ≡ t (MOD a), b < a] 5. 初めてT3,T4が同時に012(n)となるのは何秒後? 6. 初めてT4,T6が同時に012(n)となるのは何秒後?   ▼ 1の解答 1. 40秒後のT6は?   40を6進数に変換   6 ) 4 0 6 ) 6  … 4    1 … 0   A. 104(6)   ▼ 2の解答 2. T4が初めて000(4)に戻るのは何秒後?   1000(4)を10進数に変換   1・4 3  + 0・4 2  + 0・4 1  + 0・4 0  = 1・4 3  = 64   A . 64 秒後   ▼ 3の解答 3. T4,T6が初めて同時に000(n)に戻るのは何秒後?   1000(4) → 64 (= 4 3 )  … 問2より 1000(6) → 6 3  = 216 これらの最小公倍数が答えとなる   2 3 )4 3  6 3        2 3  3 3     lcm(64, 216) = 2 3 ・2 3 ・3 3  = 8・8・27 = 64・27 = 1728   A . 1728 秒後   ▼ 4の解答 4. t秒後にT4が012(4)となるのは   t ÷ a = ? … b を満たす時である、a,bは?   1000(4) → 64  … 問2より  012(4) → 1・4 1  + 2・4 0  = 4 + 2 = 6   t ÷ 64 = ? … 6   A . a = 64, b = 6   ▼ 5の解答 5. 初めてT3,T4が同時に012(n)となるのは何秒後?   1000(3) → 3 3  = 27  012(3) → 1・3 1  + 2・3 0  = 3+2 = 5 1000(4) →

BEEP

イメージ
2024/4/16(火)   BEEP   小5がノートに手書きでプログラミング、35年後に実行してみたら https://withnews.jp/article/f0240414002qq000000000000000W08k10201qq000026805A の記事のプログラムを N88-BASIC(86)互換NL-BASICで動かしました   10 CONSOLE ,,, 1, 1: CLS 20 FOR I=0 TO 20 30   A = INT(RND(1) * 6) + 1 40   LOCATE I, 0: COLOR A: PRINT CHR$(&HE9) 50   BEEP 60   FOR N=0 TO 100: NEXT 70   LOCATE I, 0: COLOR A: PRINT " " 80 NEXT 90 COLOR 7 上記LISTをCtrl+cでコピーし NL-BASICの画面でAlt+vでペースト出来ます   N88-BASIC互換 VL,NL,XL-BASI Cは 以下のリンクからダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい

PC-98の下線

イメージ
2024/4/9(火) PC-98の下線 PC-98の下線が4dotズレている理由   縦線とで枠を書く為だと思いますので書いてみました   下記リストをコピー(100~220+1行(改行)までを選んでCtrl+c)し NL-BASICの画面でペースト(Alt+v)します 画面クリアしてLISTで表示 RUNで動きます   100 ' PC-98の下線が4dotズレているので縦線とで枠を書いてみました 110 ' Alt+shift+eでbeep最大音量,Alt+F1でリセットで起動音 120 ' メモ帳のリストをCtrl+cでコピーし、Alt+vでぺーストしました 130 def fna(x, y) = (x + y*80)*2: def fnc(c, a) = c*32 + a 140 def seg=&ha200: out &h68,0 150 x1 = 1: y1 = 0: x2 = 15: y2 = 3: cl = 5 160 for x=x1   to x2-1 170   poke fna(x, y1), fnc(cl, &h09): poke fna(x, y2), fnc(cl, &h09) 180 next 190 for y=y1+1 to y2-1: 200   poke fna(x1, y), fnc(cl, &h11): poke fna(x2, y), fnc(cl, &h11) 210 next 220 poke fna(x1, y2), fnc(cl, &h19): poke fna(x2, y2), fnc(cl, &h11)     N88-BASIC互換 VL,NL,XL-BASI Cは 以下のリンクからダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

N88-BASIC,Pythonプログラミング入門 (3回目)

イメージ
2024/3/31(日) N88-BASIC,Pythonプログラミング入門 (3回目)   n!を求める   ■ 初めに ▼ 表記 N88-BASICは以後BASICと省略する事にします またBASICの命令は小文字で書いても 自動で大文字に変換されます   ▼ nの階乗(n!)     n n! = Πi = 1×2× … ×(n-1)×n       i =1 = n(n-1)(n-2) … 1   1~nまで自然数が書かれたカードn枚の 並べ方の場合の数は 1  枚目はn  枚から1つ選ぶのでn  通り 2  枚目はn-1枚から1つ選ぶのでn-1通り … n-1枚目は残り2枚から1つ選ぶので2通り n  枚目は残り1枚から1つ選ぶので1通り よって n通り×(n-1)通り× … ×1 = n!通りになる   n = 3の時 1, 2, 3から選ぶ 1番 2番 3番目 1    2    3 1    3    2 2    1    3 2    3    1 3    1    2 3    2    1 3 × 2 × 1 = 6通り     ■ コード ▼ Python print('nの階乗n!を求める') n = int(input('n = ')) if n < 0:     exit() k = 1 for i in range(2, n+1):     k *= i     #--- k = k * i print(f'{n}! = {k}')   ▼ BASIC 10 DEFDBL K    '--- K~の桁を増やす(倍精度) 20 PRINT "nの階乗n!を求める" 30 INPUT "n = ", N 40 IF N < 0 THEN END 50 K = 1 60 FOR I=2 TO N 70   K = K * I '--- K *= Iとは書けない 80 NEXT 90 PRINT STR$(N); "! = "; K   ■ 説明 ▼ Python 整数型の桁数は実質無制限なのでnが 大きくても計算できます (*は×、/は÷です)   ▼ BASIC デフォルトの型(単精度実数)は7桁ほど