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 = 1for i in range(2, n+1):    k *= i     #--- k = k * iprint(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桁ほどで
整数型は4,5桁ほどなので
倍精度(DBL型16桁ほど)にしています
 
FORの変数に倍精度が使えないので
Kから始まる変数のみ倍精度にしています
 
PRINT N;は前に符号(+は空白,-は-表示)
後ろに空白が表示されますので
STR$(N)はNを後ろの空白無しで文字列に
してくれます
 
■ あとがき
Pythonの整数型は桁数実質無制限なので
便利です
BASICも桁数無制限のものが存在しますが
N88-BASICは桁数は少ないです
 
BASICはライブラリの追加や初期設定など
面倒な事をやらなくて良いので楽です
例えば
黄色い線を引きたいと思えば
LINE(20, 10)-(200, 100), 6
のたった1行で引けます
(0:黒,1:青,2:赤,3:紫,4:緑,5:水色,6:黄,7白)
 
N88-BASICの処理速度が遅いのは当時のPCが
遅かった為です
 
NL-BASICの処理速度が遅いのは
中間言語化などの高速化するための
工夫を行っていない為です
  
VL,NL,XL-BASICとdlg~.zip(py003.bas, py003.py)は
以下のリンクからダウンロードできます
https://ulprojectmail.blogspot.com
Readme.txtを読んで遊んで下さい



























 

このブログの人気の投稿

NEWS

N88-BASICでゲーム (1回目)