seminar:プログラミング実習
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン最新のリビジョン両方とも次のリビジョン | ||
seminar:プログラミング実習 [2020/08/20 17:12] – [Pythonガイド] kimi | seminar:プログラミング実習 [2023/03/01 15:09] – [実用データ処理] kimi | ||
---|---|---|---|
行 1: | 行 1: | ||
====== プログラミング実習 ====== | ====== プログラミング実習 ====== | ||
- | ====== プログラム作成 ====== | + | ===== 実用データ処理 ===== |
- | + | ||
- | ===== 各種プログラミング言語 ===== | + | |
- | + | ||
- | + | ||
- | * [[シェルスクリプト]] | + | |
- | * [[awk]] | + | |
- | * [[python]] | + | |
- | * [[Fortran 90]] | + | |
- | + | ||
- | [[プログラミング実習]] | + | |
- | ====== 実用データ処理 | + | |
データを処理する際のちょっとしたテクニック | データを処理する際のちょっとしたテクニック | ||
<note tip> | <note tip> | ||
- | **Stay Simple, Stupid!**\\ 複雑で高機能なプログラムを作るよりも、単純な機能だけをもったプログラムを組み合わせて使うことを考えよ。そのためには、後述する基本的なunixコマンド、リダイレクト、スクリプト言語の一行プログラムの柔軟な使用法を習得する必要がある。 | + | **Keep It Simple Stupid.**\\ 頭文字をとってKISSの原則と呼ばれるが、複雑で高機能なプログラムを作るよりも、単純な機能だけをもったプログラムを組み合わせて使うことを考えよ。そのためには、後述する基本的なunixコマンド、リダイレクト、スクリプト言語の一行プログラムの柔軟な使用法を習得する必要がある。 |
特に効果的な概念は「[[スクリプト(主にシェルスクリプト)を作るスクリプト]]」という発想である。ぜひ、身に着けてほしい。 | 特に効果的な概念は「[[スクリプト(主にシェルスクリプト)を作るスクリプト]]」という発想である。ぜひ、身に着けてほしい。 | ||
</ | </ | ||
行 33: | 行 22: | ||
* python | * python | ||
+ | <note tip> | ||
+ | ** You Ain't Gonna Need It.** 頭文字をとってYAGNIと呼ばれるが、なんかよさげな機能を思いついても、実際に必要となるまでは実装してはいけない。できるだけ単機能で例外がないのが望ましい。 | ||
+ | </ | ||
+ | |||
+ | ===== 自分用のコマンドを作る ===== | ||
+ | |||
+ | <code sh> | ||
+ | $ mkdir ~/bin | ||
+ | $ cd bin | ||
+ | (ファイルgetatomsをつくる) | ||
+ | $ ls -l getatoms | ||
+ | -rw-r--r-- | ||
+ | $ chmod a+x getatoms | ||
+ | $ ls -l getatoms | ||
+ | -rwxr-xr-x | ||
+ | $ cd | ||
+ | $ getatoms | ||
+ | usage: getatoms [-r R1 R2 R3] input_nc_file output_xyz_file | ||
+ | </ | ||
===== リダイレクト ===== | ===== リダイレクト ===== | ||
行 44: | 行 52: | ||
</ | </ | ||
とする。 | とする。 | ||
+ | ===== シェルスクリプト ===== | ||
+ | |||
+ | |||
+ | 自動的に実行したいUNIXコマンドを単に羅列したファイルを用意しておき、逐次自動実行することができる。簡単な制御構造も備えているし、ちょっと おまじないをすることによって、自前のunixコマンドのようにも使うことができる。 | ||
+ | |||
+ | ==== シェルプログラミング ==== | ||
+ | |||
+ | |||
+ | * ファイル名は○○○○.shにする。 | ||
+ | * ターミナルで | ||
+ | < | ||
+ | $ sh ○○○○.sh △△△△ | ||
+ | </ | ||
+ | と入力することにより実行される。スクリプト中で、△△△△という文字列は'' | ||
+ | |||
+ | < | ||
+ | $ cat hogehoge.sh | ||
+ | # | ||
+ | | ||
+ | |||
+ | $ chmod +x hogehoge.sh | ||
+ | $ ./ | ||
+ | </ | ||
+ | ===== awk ===== | ||
+ | |||
+ | ファイル名は'' | ||
+ | |||
+ | ターミナルで | ||
+ | < | ||
+ | $ awk -f ○○○○.awk △△△△ | ||
+ | </ | ||
+ | と入力することにより△△△△という名前のファイルを処理する。 | ||
+ | |||
+ | < | ||
+ | $ awk -f hogehoge.awk datafile.data | ||
+ | </ | ||
+ | で実行できるawk fileの最初に | ||
+ | |||
+ | <code sh> | ||
+ | # | ||
+ | </ | ||
+ | を書いておくと、 | ||
+ | < | ||
+ | $ chmod +x hogehoge.awk | ||
+ | </ | ||
+ | とすることによって、あたかも独立したコマンドのように | ||
+ | |||
+ | $ ./ | ||
+ | で、実行することができる。 | ||
+ | |||
+ | ==== awk実習 ==== | ||
+ | * [[データの抽出]] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
===== Pythonガイド ===== | ===== Pythonガイド ===== | ||
- | | + | ASEを用いてDacapoによる計算を行うためには、若干のPythonの知識が必要です。 Pythonはオブジェクト指向の汎用言語で覚えておくと非常に便利なものです。 インタープリタとして実装されているため速度面ではcやFORTRANに比べて不利ですが、非常に柔軟な拡張性を持っており、各種モジュールを読み込むことによりVTKを使った描画から、RasMolやGnuPlotの自動実行までも行うことができます。 変数宣言がいらないこと、インタープリタでその場で試しながらプログラムを書いたりデバッグしたりできること、簡単な手順でグラフィックスを扱うことができることなどを考え合わせると、現代版BASICといった趣もあります。 |
+ | |||
+ | |||
+ | | ||
+ | * ファイル名は'' | ||
+ | * ターミナルで< | ||
+ | $ python | ||
+ | * VTKやRasMol, | ||
+ | $ python -i ○○○○.py | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Pythonで「コマンド」をつくるときの雛形 ==== | ||
+ | <code python> | ||
+ | # | ||
+ | from optparse import OptionParser | ||
+ | |||
+ | cmd = OptionParser(usage = '%prog [-t] [-p X Y Z] input_file output_file' | ||
+ | |||
+ | cmd.add_option(' | ||
+ | help = ' | ||
+ | |||
+ | cmd.add_option(' | ||
+ | help = ' | ||
+ | | ||
+ | |||
+ | (opt, argv) = cmd.parse_args() | ||
+ | |||
+ | if len(argv) != 2: | ||
+ | cmd.print_help() | ||
+ | raise SystemExit | ||
+ | |||
+ | input_file = argv[0] | ||
+ | output_file = argv[1] | ||
+ | option_on_off = opt.toggle | ||
+ | option_xyz = opt.position | ||
+ | |||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | 詳細は[[: | ||
===== FORTRAN簡単ガイド ===== | ===== FORTRAN簡単ガイド ===== |
seminar/プログラミング実習.txt · 最終更新: 2023/03/01 15:09 by kimi