SST Lab Dokuwiki Header header picture

ユーザ用ツール

サイト用ツール


seminar:プログラミング実習

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki