SST Lab Dokuwiki Header header picture

ユーザ用ツール

サイト用ツール


seminar:プログラミング実習

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
seminar:プログラミング実習 [2020/08/20 17:24] – [各種プログラミング言語] kimiseminar:プログラミング実習 [2023/03/01 15:09] (現在) – [実用データ処理] kimi
行 1: 行 1:
 ====== プログラミング実習 ====== ====== プログラミング実習 ======
 +===== 実用データ処理 =====
 +データを処理する際のちょっとしたテクニック
 +<note tip>
 +**Keep It Simple Stupid.**\\ 頭文字をとってKISSの原則と呼ばれるが、複雑で高機能なプログラムを作るよりも、単純な機能だけをもったプログラムを組み合わせて使うことを考えよ。そのためには、後述する基本的なunixコマンド、リダイレクト、スクリプト言語の一行プログラムの柔軟な使用法を習得する必要がある。
 +特に効果的な概念は「[[スクリプト(主にシェルスクリプト)を作るスクリプト]]」という発想である。ぜひ、身に着けてほしい。
 +</note>
 +スクリプトで有効に使えるTips
  
 +  * unixコマンド
 +    * grep
 +    * sort
 +    * uniq
 +
 +  * リダイレクション
 +
 +  * One Liner
 +    * sed
 +    * awk
 +    * perl
 +    * ruby
 +    * 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>
 +
 +===== リダイレクト =====
 +プログラム「moge_exec」に、ファイル「hoge_in.data」から入力を読み込んで、出力をファイル「hage_out.data」に書き込むには
 +<code sh>
 +$ ./moge_exec < hoge_in.data > hage_out.data 
 +</code>
 +または
 +<code sh>
 +$ cat hoge_in.data | ./moge_exec > hage_out.data 
 +</code>
 +とする。
 ===== シェルスクリプト ===== ===== シェルスクリプト =====
  
行 56: 行 109:
  
  
-====== 実用データ処理 ====== 
-データを処理する際のちょっとしたテクニック 
-<note tip> 
-**Stay Simple, Stupid!**\\ 複雑で高機能なプログラムを作るよりも、単純な機能だけをもったプログラムを組み合わせて使うことを考えよ。そのためには、後述する基本的なunixコマンド、リダイレクト、スクリプト言語の一行プログラムの柔軟な使用法を習得する必要がある。 
-特に効果的な概念は「[[スクリプト(主にシェルスクリプト)を作るスクリプト]]」という発想である。ぜひ、身に着けてほしい。 
-</note> 
-スクリプトで有効に使えるTips 
  
-  * unixコマンド 
-    * grep 
-    * sort 
-    * uniq 
  
-  * リダショ+===== Pythonガド ===== 
 +ASEを用いてDacapoによる計算を行うためには、若干のPythonの知識が必要です。 Pythonはオブジェト指向の汎用言語で覚えておくと非常に便利なものです。 イタープリタとして実装されているため速度面ではcやFORTRANに比べて不利ですが、非常に柔軟な拡張性を持っており、各種モジュールを読み込むことによりVTKを使った描画から、RasMolやGnuPlotの自動実行までも行うことができます。 変数宣言がいらないこと、インタープリタでその場で試しながらプログラムを書いたりデバッグしたりできること、簡単な手順でグラフィックスを扱うことができることなどを考え合わせると、現代版BASICといった趣もあります。
  
-  * One Liner 
-    * sed 
-    * awk 
-    * perl 
-    * ruby 
-    * python 
  
 +  * [[: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
  
-===== リダイレクト ===== 
-プログラム「moge_exec」に、ファイル「hoge_in.data」から入力を読み込んで、出力をファイル「hage_out.data」に書き込むには 
-<code sh> 
-$ ./moge_exec < hoge_in.data > hage_out.data  
 </code> </code>
-または 
-<code sh> 
-$ cat hoge_in.data | ./moge_exec > hage_out.data  
-</code> 
-とする。 
-===== Pythonガイド ===== 
-  * [[python実用スクリプト]] 
  
 +----
 +
 +詳細は[[:python_seminor |即席ヘビ使い講座]]を参照のこと。
  
 ===== FORTRAN簡単ガイド ===== ===== FORTRAN簡単ガイド =====
seminar/プログラミング実習.1597911888.txt.gz · 最終更新: 2022/08/23 13:34 (外部編集)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki