Created
April 6, 2012 20:19
-
-
Save shouichi/2322657 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
====================================================================== | |
template 1.3 -- 雛型(素数判定) -- 2000/ 4/ 3 | |
====================================================================== | |
【ここにはプログラムの動作内容を数行で書いて下さい。】 | |
このプログラムは、与えられた正の整数が素数であるかどうかを判定します。 | |
判定できる最大値は 2^31 です。 | |
【この文章は README の雛型です。数学のある分野の研究者がプログラムを | |
作ることを想定しています。この雛型は、まず template という文字を、本当 | |
のパッケージ名に置換してから書き直して下さい。素数判定を題材に、なんと | |
なくそれらしく書いています。】 | |
【この括弧で囲まれた部分はコメントです。コメントを削除してから配布し | |
て下さい。この段落のように、きっちりと 70 カラムめに改行を挿入するには、 | |
エディタの機能を使えば簡単です。例えば emacs/mule では M-q ([ESC],q | |
を順に押す)を実行するなどします。】 | |
【姉妹雛型の Makefile もどうぞ。パッケージ作りが楽になります。】 | |
===== | |
環 境 | |
===== | |
開発環境 | |
-------- | |
【ここには使用コンパイラやOSを書きます。】 | |
gcc 2.6.3 (SUN Solaris2.5.1) + gmp-2.0.2 | |
必要環境 | |
-------- | |
【使用したコンパイラ特有の機能やライブラリ等を書きます。】 | |
ANSI C の範囲で書いたつもりです。 | |
外部ライブラリとして gmp を使用しています。 | |
http://www.gnu.org/ | |
から入手して下さい。 | |
動作確認済環境 | |
-------------- | |
【省略可】 | |
cygwin20B (Win95) + gmp 2.0.2 | |
gcc 2.7.2.3 (Vine Linux 1.1) + gmp 2.0 | |
======== | |
使用方法 | |
======== | |
コンパイル | |
---------- | |
【ソースプログラムを配布するなら記述します。(Unix系)】 | |
template-***.tar.gz を適当なディレクトリで展開します。 | |
% gzip -cd template-***.tar.gz | tar xvf - | |
環境に合わせて "Makefile" を編集し、'make' を実行します。 | |
% cd template-*** | |
% make | |
これでできた 'template' が実行プログラムです。 | |
インストール | |
------------ | |
【バイナリファイルを配布するなら記述します。(MS-Win系)】 | |
template-***.zip を適当なディレクトリで展開して下さい。 | |
コマンドライン書式 | |
------------------ | |
【絶対必要・プログラムの実行のさせ方を記述します。】 | |
% ./template [-r] [-e] [-g] [-v] [number] | |
説明 | |
---- | |
【プログラムの動かし方についての説明を記述します。】 | |
コマンドラインで number が与えられれば、この数字の素数判定を行います。 | |
コマンドラインで number 与えられなければ、標準入力から数字を読み込みま | |
す。結果は標準出力に出力します。number は正の整数で、2^32 よりも小さな | |
ものを受け付けます。 | |
オプション | |
---------- | |
-r | |
判定アルゴリズムを指定します。 | |
√ number 未満の数字で割算を試み、割れなければ素数と | |
判定します。 | |
ディフォルトでこのアルゴリズムを使います。 | |
-e | |
判定アルゴリズムを指定します。 | |
エトラステネスのふるいを使います。 | |
-g | |
判定アルゴリズムを指定します。 | |
gmp にある素数判定ルーチンを使います。 | |
-v | |
途中経過の情報表示を行います。 | |
環境設定ファイル | |
---------------- | |
【なければ省略】 | |
"./template.env" というファイルがあれば読み込みます。書式はコマンド | |
ラインオプションと同じですが、1行につき1つのオプションを書くようにし | |
て下さい。また、'#' 以降はコメントと扱います。 | |
入出力データの書式 | |
------------------ | |
【ネタを思い付かなかったので、省略します。(^^;】 | |
サンプルデータ | |
-------------- | |
【ネタを思い付かなかったので、省略します。(^^;】 | |
==================== | |
アルゴリズムについて | |
==================== | |
オプション -r によるアルゴリズムは、√ number 未満の数字で割算を試み、 | |
割れなければ素数と判定します。素数であることを確認するためには | |
O(√number) の計算時間がかかります。 | |
【ここでの説明は長くなるのが普通です。別文書にしても構いません。別にす | |
るなら LaTeX で書くのも1つの方法です。】 | |
======== | |
利用条件 | |
======== | |
【使用者(特に企業)が、バグによって業務に支障が出たり、特許関連で被 | |
害があった場合に、フリーソフトの作者に損害賠償請求することも考えられま | |
す。従って 1) は重要です。このコメントは **しっかり削除** して下さい。】 | |
このプログラムは○○○○が製作しました。プログラムの著作権を主張しま | |
すが、以下の条件でご利用いただけます。 | |
1)無料・無保証です。バグはないようにしたつもりですが、 | |
一切の責任は負えません。各自の責任においてご使用下さい。 | |
2)再配布は自由に行って下さい。 | |
改造したものの配布は、製作者までご相談下さい。 | |
3)商用利用の際は、事前に製作者までご相談下さい。 | |
バグ等お気づきの点が御座いましたら下記までご連絡下さい。 | |
【この雛型に関しては土村 ([email protected]) までお願いします。】 | |
連絡先 e-mail [email protected] | |
最新版配布場所 http://xxxxxx/program/template/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Makefile ( 1 source file 1 execute file version ) | |
# 2002/12/ 4 | |
# 日本語のコメント部分に従って修正して下さい。 | |
# $(HOGEHOGE) というのはマクロ(一種の変数)で、 | |
# HOGEHOGE=... で定義された内容に展開して解釈されます。 | |
# 行頭のタブには意味がありますので、スペースに変換しないで下さい。 | |
# できれば、最終的に日本語コメントは削除して下さい。 | |
# ↓パッケージ名かつ実行ファイル名に書き換える | |
PACKAGE = hogehoge | |
SRCS = $(PACKAGE).c | |
# HEADS = $(PACKAGE).h | |
OBJS = $(SRCS:.c=.o) | |
# ↓パッケージに含めるファイル名を書き並べる | |
FILES = README Makefile $(HEADS) $(SRCS) | |
VER = `date +%Y%m%d` | |
### command and flags ### | |
# uncomment when debugging | |
#DEBUG = -ggdb -pg # -lefence | |
# common (*.o) | |
LD = gcc | |
LDFLAGS = -g $(DEBUG) | |
LDLIBS = -lm | |
# C (*.c) | |
CC = gcc | |
CFLAGS = -g -O2 -Wall $(DEBUG) | |
CPPFLAGS= -I. | |
# C++ (*.cc) | |
CXX = g++ | |
CXXFLAGS= -g -O2 -Wall $(DEBUG) | |
# Fortran77 (*.f) | |
FC = f77 | |
FFLAGS = -Wall $(DEBUG) | |
# Pascal (*.p) | |
PC = pc | |
PFLAGS = -Wall $(DEBUG) | |
# etc | |
SHELL = /bin/sh | |
RM = rm -f | |
PROF = gprof | |
### rules ### | |
.SUFFIXES: | |
.SUFFIXES: .o .c .cc .f .p | |
all: $(PACKAGE) | |
$(PACKAGE): $(OBJS) | |
$(LD) $(LDFLAGS) $(OBJS) -o $@ $(LDLIBS) | |
$(OBJS): $(HEADS) Makefile | |
.c.o: | |
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ | |
.cc.o: | |
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@ | |
.f.o: | |
$(FC) $(FFLAGS) -c $< -o $@ | |
.p.o: | |
$(PC) $(PFLAGS) $(CPPFLAGS) -c $< -o $@ | |
### useful commands ### | |
clean: | |
$(RM) $(PACKAGE) $(OBJS) | |
$(RM) core gmon.out *~ #*# | |
tar: | |
@echo $(PACKAGE)-$(VER) > .package | |
@$(RM) -r `cat .package` | |
@mkdir `cat .package` | |
@ln $(FILES) `cat .package` | |
tar cvf - `cat .package` | gzip -9 > `cat .package`.tar.gz | |
@$(RM) -r `cat .package` .package | |
zip: | |
zip -9 $(PACKAGE)-$(VER).zip $(FILES) | |
prof: run | |
$(PROF) $(PACKAGE) | less | |
run: all | |
# ↓サンプルデータで実行するように書き直す | |
# $(PACKAGE) は実行ファイル名に展開される | |
# 行頭はタブ(スペースではない) | |
./$(PACKAGE) < sample-data | less |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Makefile ( n source file 1 execute file version ) | |
# 2002/12/ 4 | |
# 日本語のコメント部分に従って修正して下さい。 | |
# $(HOGEHOGE) というのはマクロ(一種の変数)で、 | |
# HOGEHOGE=... で定義された内容に展開して解釈されます。 | |
# 行頭のタブには意味がありますので、スペースに変換しないで下さい。 | |
# できれば、最終的に日本語コメントは削除して下さい。 | |
# ↓パッケージ名かつ実行ファイル名に書き換える | |
PACKAGE = hogehoge | |
# ↓ソースファイルを書き並べる | |
SRCS = $(PACKAGE).c | |
# ↓ヘッダファイルを書き並べる | |
HEADS = $(PACKAGE).h | |
OBJS = $(SRCS:.c=.o) | |
# ↓パッケージに含めるファイル名を書き並べる | |
FILES = README Makefile $(HEADS) $(SRCS) | |
VER = `date +%Y%m%d` | |
### command and flags ### | |
# uncomment when debugging | |
#DEBUG = -ggdb -pg # -lefence | |
# common (*.o) | |
LD = gcc | |
LDFLAGS = -g $(DEBUG) | |
LDLIBS = -lm | |
# C (*.c) | |
CC = gcc | |
CFLAGS = -g -O2 -Wall $(DEBUG) | |
CPPFLAGS= -I. | |
# C++ (*.cc) | |
CXX = g++ | |
CXXFLAGS= -g -O2 -Wall $(DEBUG) | |
# Fortran77 (*.f) | |
FC = f77 | |
FFLAGS = -Wall $(DEBUG) | |
# Pascal (*.p) | |
PC = pc | |
PFLAGS = -Wall $(DEBUG) | |
# etc | |
SHELL = /bin/sh | |
RM = rm -f | |
PROF = gprof | |
### rules ### | |
.SUFFIXES: | |
.SUFFIXES: .o .c .cc .f .p | |
all: $(PACKAGE) | |
$(PACKAGE): $(OBJS) | |
$(LD) $(LDFLAGS) $(OBJS) -o $@ $(LDLIBS) | |
$(OBJS): $(HEADS) Makefile | |
.c.o: | |
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ | |
.cc.o: | |
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@ | |
.f.o: | |
$(FC) $(FFLAGS) -c $< -o $@ | |
.p.o: | |
$(PC) $(PFLAGS) $(CPPFLAGS) -c $< -o $@ | |
### useful commands ### | |
clean: | |
$(RM) $(PACKAGE) $(OBJS) | |
$(RM) core gmon.out *~ #*# | |
tar: | |
@echo $(PACKAGE)-$(VER) > .package | |
@$(RM) -r `cat .package` | |
@mkdir `cat .package` | |
@ln $(FILES) `cat .package` | |
tar cvf - `cat .package` | gzip -9 > `cat .package`.tar.gz | |
@$(RM) -r `cat .package` .package | |
zip: | |
zip -9 $(PACKAGE)-$(VER).zip $(FILES) | |
prof: run | |
$(PROF) $(PACKAGE) | less | |
run: all | |
# ↓サンプルデータで実行するように書き直す | |
# $(PACKAGE) は実行ファイル名に展開される | |
# 行頭はタブ(スペースではない) | |
./$(PACKAGE) < sample-data | less |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Makefile ( n source file n execute file version ) | |
# 2002/12/ 4 | |
# 日本語のコメント部分に従って修正して下さい。 | |
# $(HOGEHOGE) というのはマクロ(一種の変数)で、 | |
# HOGEHOGE=... で定義された内容に展開して解釈されます。 | |
# 行頭のタブには意味がありますので、スペースに変換しないで下さい。 | |
# できれば、最終的に日本語コメントは削除して下さい。 | |
# ↓パッケージ名に書き換える | |
PACKAGE = hogehoge | |
# ↓ソースファイルを書き並べる | |
SRCS = program1.c | |
PROGS = $(SRCS:.c=) | |
# ↓パッケージに含めるファイル名を書き並べる | |
FILES = README Makefile $(SRCS) | |
VER = `date +%Y%m%d` | |
### command and flags ### | |
# uncomment when debugging | |
#DEBUG = -ggdb -pg # -lefence | |
# common (*.o) | |
LDLIBS = -lm | |
# C (*.c) | |
CC = gcc | |
CFLAGS = -g -O2 -Wall $(DEBUG) | |
CPPFLAGS= -I. | |
# C++ (*.cc) | |
CXX = g++ | |
CXXFLAGS= -g -O2 -Wall $(DEBUG) | |
# Fortran77 (*.f) | |
FC = f77 | |
FFLAGS = -Wall $(DEBUG) | |
# Pascal (*.p) | |
PC = pc | |
PFLAGS = -Wall $(DEBUG) | |
# etc | |
SHELL = /bin/sh | |
RM = rm -f | |
PROF = gprof | |
### rules ### | |
.SUFFIXES: | |
.SUFFIXES: .o .c .cc .f .p | |
all: $(PROGS) | |
$(PROGS): Makefile | |
.c: | |
$(CC) $(CFLAGS) $(CPPFLAGS) $< -o $@ $(LDLIBS) | |
.cc: | |
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $< -o $@ $(LDLIBS) | |
.f: | |
$(FC) $(FFLAGS) $< -o $@ $(LDLIBS) | |
.p: | |
$(PC) $(PFLAGS) $(CPPFLAGS) $< -o $@ $(LDLIBS) | |
### useful commands ### | |
clean: | |
$(RM) $(PROGS) | |
$(RM) core gmon.out *~ #*# | |
tar: | |
@echo $(PACKAGE)-$(VER) > .package | |
@$(RM) -r `cat .package` | |
@mkdir `cat .package` | |
@ln $(FILES) `cat .package` | |
tar cvf - `cat .package` | gzip -9 > `cat .package`.tar.gz | |
@$(RM) -r `cat .package` .package | |
zip: | |
zip -9 $(PACKAGE)-$(VER).zip $(FILES) | |
prof: run | |
$(PROF) $(PACKAGE) | less | |
run: all | |
# ↓サンプルデータで実行するように書き直す | |
# $(PACKAGE) は実行ファイル名に展開される | |
# 行頭はタブ(スペースではない) | |
./$(PACKAGE) < sample-data | less |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment