N88-BASIC,Pythonプログラミング入門 (2回目)
2024/3/15(金)
N88-BASIC,Pythonプログラミング入門 (2回目)
1~nまでの自然数の和を求める
■ 初めに
▼ 表記
N88-BASICは以後BASICと省略する事にします
(他のBASICでも動くかもしれません)
またBASICの処理(命令など)は小文字で書いても
自動で大文字に変換されます
▼ 和の公式を使う方法
n = 10のとき
S = 1 + 2 + … + 10
= 1 + 2 + 3 + 4 + 5
+10 + 9 + 8 + 7 + 6
= (10+1)×10/2 = 11 × 5 = 55
= (n+1)n/2
よって
n
S = Σi
i=1
= 1 + 2 + … + n-1 + n
= n(n+1)/2
▼ 順番に足す方法
sum = 1
sum = sum + 2
…
sum = sum + n
のように1~nまでを順に足すことで求まります
この方法は和を積に変えると階乗になり
応用が効きます
今回は練習もかねて順に足す方法で求めます
■ コード
▼ Python
print('1~nまでの自然数の和') n = int(input('n = '))
if n < 0:
exit() sum = 1
for i in range(2, n+1): sum = sum + i print(f'1 ~ {n} までの和は {sum} です')
▼ BASIC
10 PRINT "1~nまでの自然数の和"
20 INPUT "n = ", N
30 IF N < 0 THEN END
40 SUM = 1
50 FOR I=2 TO N
60 SUM = SUM + I
70 NEXT
80 PRINT "1 ~"; N; "までの和は"; SUM; "です"
■ 説明
▼ print
pythonの表示処理です
print('文字') … 文字を表示して改行
print('文字', end = '') … 文字を表示
print(変数) … 変数の値を表示して改行
print(f'文字1{変数}文字2')
文字1と変数の値と文字2を表示し改行
その他の書き方の説明は省略します
BASICの表示処理です
PRINT "文字" … 文字を表示して改行
PRINT "文字"; … 文字を表示
PRINT 変数 … 変数の値を表示して改行
PRINT "文字1"; 変数; "文字2"
文字1と変数の値と文字2を表示し改行
PRINT USINGなどの説明は省略します
▼ input
pythonの入力処理です
文字表示し入力待ちになるので文字を入力します
変数 = input('文字') … 入力を変数へ
変数 = int(input('文字')) … 入力を整数にし変数へ
変数 = float(input('文字')) … 入力を実数にし変数へ
BASICの入力処理です
文字表示し入力待ちになるので入力します
INPUT "文字", 変数 … 入力を変数の型に変換し変数へ
INPUT "文字"; 変数 … ? が追加表示ありで同上
▼ 変数の型
pythonは
整数型(int) … 整数(桁数はメモリーが許す限り無制限)
実数型(float) … 実数(64bits倍精度浮動小数点数)
文字列型(str) … 文字(文字数は実質無制限?)
その他、ブール型、リスト型などは説明省略
型は自動で変化する
a = 1 … 整数型
a = 1.2 … 実数型
a = '文字' … 文字列型
BASICは
A% 整数型(INT) … 整数(16bits補数 -32768~32767)
A! 単精度実数型(SNG) … 実数(32bits単精度浮動小数点数)
A# 倍精度実数型(DBL) … 実数(64bits単精度浮動小数点数)
A$ 文字列型(STR) … 文字(文字数0~255文字)
型は%!#$を付けて区別する(デフォルトではAはA!と同じ)
DEFINT AでAから始まる変数A…はA…%と同じになる
(DEFSNG, DEFDBL, DEFSTRなど
▼ if
pythonは
if 条件1 and 条件2:
処理1
処理2
elif 条件3:
処理3
else:
処理4
処理5
で
条件はa < 0など(<, >, <=, >=, !=, ==, など)で
andはすべての条件が成り立っている時
orは少なくとも1つの条件が成り立っている時
処理1,処理2または処理3または処理4を
実行したのち処理5を実行します
exit()は終了です
if, elifの順に成り立っているかどうか判断します
(elifが複数ある時は上から順です)
BASICは
IF 条件1 AND 条件2 THEN 処理1: 処理2 ELSE IF 条件3 ELSE 処理4
処理5
で
IFとELSEの組み合わせになりますが1ぎ
▼ for
pythonは
for i in range(a, b, c):
処理1
処理2
処理3
で
i = aとしてc>0ならi<bの間(c<0ならi>b)の間
処理1,処理2を実行し
i = i + c … iをcだけ増す
を繰り返す
iの条件が満たされ無くなれば
処理3から実行される(処理3がなければ終了される)
forの終わりはインデント処理1の前のタブ(空白)
がforの位置と同じに戻ることで判断される
BASICは
FOR I=A TO B STEP C
処理1
処理2
NEXT
処理3
I = AとしてC>0ならI≦Bの間(C<0ならI≧B)の間
処理1,処理2を実行し
I = I + C … IをCだけ増す
を繰り返す
Iの条件が満たされ無くなれば
処理3から実行される(処理3がなければ終了される)
FORの終わりはNEXTで判断される
■ あとがき
sum = sum + i を
sum = sum * i にすると階乗を求めるコードになります
print内容は適当に変えてみてください
VL,NL,XL-BASICとdlg~.zip(py002.bas, py002.py)は