プログラミング

世の中には数多くのプログラミング言語があります。 近年は CPU の速度が飛躍的に向上しているため, インタプリタ言語も適用範囲が 広がっている. というので, ここでは Python を紹介する.

Python を使えるようにする

ここ(情報科学コースのシステム)での Python のパスは /pub/solaris/python/bin です.
% cd
% textedit .cshrc &
のようにして textedit で .cshrc を開き,
set path = (/pub/solaris/python/bin $path)
という行を最後に追加し, ファイルを保存してください. 次にコマンドツールを起動したときから, Python が使えるようになります.

プログラミング

では, イ組を真似てプログラミングを始めましょう.
Python の起動
% python
Python 2.0 (#2, Oct  3 2001, 16:06:22)
[GCC 2.8.1] on sunos5
Type "copyright", "credits" or "license" for more information.
>>>
コマンドツールから python と入力すると, 上のように表示されます. >>> は Python のプロンプトです. プロンプトに続けて入力すると いろいろな計算やプログラムの実行をやらせることができます. 下はその例です. 太文字のところを入力してください. (入力に 続けて Return を忘れずに)
>>> a = 12345
>>> b = 678
>>> a
12345
>>> b
678
>>> a + b
13023
>>>
このように, インタプリタ言語では, インタラクティブに計算を実行させることが できます. しかし, ここではより進んだやりかたである, プログラムの作成を 練習します.
Python インタプリタは [CTL]+D (コントロールキーと D を押す) で終了させます.
% cd ~/core-info
% mkdir python
% cd python
上のようにして, ~/core-info/python ディレクトリを作成し, その中で作業します.
イ組を真似て 四則演算を行うプログラムを作りましょう. textedit を起動します.
% textedit test1.py &
test1.py の中身は以下のようにします.
#!/bin/env python
# 専門コア情報処理演習教材 test1.py, 2002
# は注釈文です。

def test1(a,b):
    print '実行'
    print '    a = %d' % a
    print '    b = %d' % b
    print 'a + b = %d' % (a + b)
    print 'a - b = %d' % (a - b)
    print 'a * b = %d' % (a * b)
    if b != 0:
        print 'a / b = %d 余り %d' % (a / b, a % b)

def testtest():
    print '四則演算のサンプルプログラムです。'
    print 'ふたつの整数 a,b を入力してください。'
    a = input('a = ')
    b = input('b = ')
    test1(a,b)

if __name__ == '__main__':
    testtest()
注意: 行の頭に空白があるところは, 半角の空白を使って正確に頭下げを行ってください.

python を起動して, プログラムを実行します.

% python
Python 2.0 (#2, Oct  3 2001, 16:06:22)
[GCC 2.8.1] on sunos5
Type "copyright", "credits" or "license" for more information.
>>> from test1 import *
>>> test1(12345, 678)
実行
    a = 12345
    b = 678
a + b = 13023
a - b = 11667
a * b = 8369910
a / b = 18 余り 141
>>> testtest()
四則演算のサンプルプログラムです。
ふたつの整数 a,b を入力してください。
a = 1234
b = 5678
実行
    a = 1234
    b = 5678
a + b = 6912
a - b = -4444
a * b = 7006652
a / b = 0 余り 1234
>>>
[CTL]+Dで一旦 python を終了させます. シェルスクリプトのところで やったように, test1.py に実行権を与えます.
% chmod +x test1.py
% ls -l test1.py
( x が付いていることを確認)
% ./test1.py
四則演算のサンプルプログラムです。
ふたつの整数 a,b を入力してください。
a = 12345
b = 678
実行 ...
イ組を真似て 処理できない数字を入れるとどうなるかも試してみましょう.

次のプログラムも同様に試してみよう.

実数の四則計算

#!/bin/env python
# 専門コア情報処理演習教材 test2.py, 2002

def test2(a,b):
    print '実行'
    print '    a = %g' % a
    print '    b = %g' % b
    print 'a + b = %g' % (a + b)
    print 'a - b = %g' % (a - b)
    print 'a * b = %g' % (a * b)
    if b != 0.0:
        print 'a / b = %g' % (a / b)

def testtest():
    print '四則演算のサンプルプログラムです。'
    print 'ふたつの実数 a,b を入力してください。'
    a = input('a = ')
    b = input('b = ')
    test2(a,b)

if __name__ == '__main__':
    testtest()

最大公約数(ユークリッドのアルゴリズム)

#!/bin/env python
# 専門コア情報処理演習教材 test3.py

def gcd(m, n):
    if n == 0:
        g = m
        u = 1
        v = 0
    else:
        q = m / n
        r = m - q * n
        (g, u0, v0) = gcd(n, r)
        u = v0
        v = u0 - q * v0
    return (g, u, v)

def testgcd():
    print '最大公約数のサンプルプログラムです。'
    print 'ふたつの自然数を入力してください。'
    a = input('a = ')
    b = input('b = ')
    print '実行 :'
    (d, x, y) = gcd(a, b)
    print 'a = %d' % a
    print 'b = %d' % b
    print 'gcd(a,b) = %d' % d,
    print ' = %d * ( %d ) + %d * ( %d )' % (a, x, b, y)

if __name__ == '__main__':
    testgcd()

課題

~/core-info/python ディレクトリに以上の練習の跡を残しておくこと.
さらに, イ組を真似て Pascal, C にも挑戦しよう.
Python についてもっと詳しく知りたい人は Python Japan User's Group からいろいろ探してみよう. また, 英文だがいろいろな 説明書もある.