BASIC(SWAP)


アニメ『山田くんと7人の魔女』(2015)

男女入れ替わりどきどきアニメです。私が純粋に男女の入れ替わりで最初にどきどきしたのは、大林宣彦監督の映画「転校生」(1982)でした。入れ替わりがテーマの作品はたくさんありますが、「転校生」が一番好きです。原作は山中恒氏の『おれがあいつであいつがおれで』。抱き合って階段転げるって、今じゃ当たり前の入れ替わり儀式ですが、最初に見たときは衝撃走りました。もしかしたら、自分も好きな女子と階段から転げ落ちたら、入れ替わるんじゃないか、入れ替わって鏡確認してひょぇーってなるんじゃないか、という妄想もしてました。青春の映画です。古いものっていいですねえ。

ということで、引き続き古き良き言語、BASIC(Quick Basic)やります。今回は入れ替わりネタなので、変数の入れ替えです。

流行りの言語、例えばPythonでは、変数の入れ替えは、一文でできてしまいます。

a,b = b,a

Pythonさん、なんてエレガントに書けてしまうのでしょう。C言語を軸に育ってしまった私としては、驚きの構文です。
使ってみましょう。

takk@deb9:~/tmp$ cat -n t.py
     1  a = 10
     2  b = 20
     3
     4  print "a =",a, ",b =",b
     5
     6  a,b = b,a
     7
     8  print "a =",a, ",b =",b
     9
takk@deb9:~/tmp$

結果です。

takk@deb9:~/tmp$ python t.py
a = 10 ,b = 20
a = 20 ,b = 10
takk@deb9:~/tmp$

素敵ですね。Python空とんでます。

ついでにPerl。私はPerl派なのでこれが一番すっきりしているように思います。Pythonも捨てがたいですが。

takk@deb9:~/tmp$ cat -n t.pl
     1  $a = 10;
     2  $b = 20;
     3
     4  print "a = $a , b = $b\n";
     5
     6  ($a,$b) = ($b,$a);
     7
     8  print "a = $a , b = $b\n";
     9
takk@deb9:~/tmp$

結果はPythonと同じです。もちろんRubyでも同じことができますね。省略します。

やはり軽く処理を書きたいなら、Perl/Python/Ruby世代の言語が良いのでしょうか。
酒を飲みながら趣味でプログラミングするベテランの友人は、頑としてBASICしか使わないそうです。まあ、わからない気もないです。この頑固友人のような人たちは軽くすっきり書くプログラミングの面白さを味わうことはできないのでしょうか。

いえいえ、BASICでも変数の入れ替えが1命令でできてしまいます。その名もSWAP命令。

SWAP 変数A, 変数B

このように使います。

takk@deb9:~/tmp$ cat swap.bas | nl -ba -i10 -v10
    10  '$lang: "qb"
    20
    30  a = 10
    40  b = 20
    50
    60  print "A=";A;", B =";B
    70
    80  swap a,b
    90
   100  print "A=";A;", B =";B
takk@deb9:~/tmp$

はい、すっきりしてますね。

結果です。

takk@deb9:~/tmp$ fbc swap.bas
takk@deb9:~/tmp$ ./swap
A= 10, B = 20
A= 20, B = 10
takk@deb9:~/tmp$

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA