LINEスタンプ制作代行サービス・LINEスタンプの作り方!

お電話でのお問い合わせ:03-6869-8600

stampfactory大百科事典

番兵

番兵(ばんぺい、英語:sentinel)は基地、野営地の出入りを警備する任務に付く兵士を指す。歩哨とも言う。転じてプログラミング用語としては、データの終了を示すために配置される特殊なデータを指す。番人(ばんにん)とも言う。以下ではこの意味について示す。実際にはこの用語は、微妙に異なる以下の2つの意味で使われる。主に可変長データの終了を識別するために、終了を示す記号として予約された値。番兵の具体例としては、LISPで無効値を示すNILや、C言語の文字列終端を示すヌル文字()などがある。また、ポインタを扱う言語ではヌルポインタが定義されており、線形リストや木構造などの終端を示すために使われる。番兵を含むデータを処理するプログラムは、通常はループで入力データを処理しており、新たなデータを取得するとまず番兵か否かを判定する条件分岐を実行する。以下に、C言語における文字列比較関数 codice_1 の実装例を示す。int strcmp(const char s[], const char t[])実データに出現する値だと、実データなのか終了なのか判断できないため、実データとしては出現しない値を使う必要がある。C言語の codice_2 関数では、入力データとして codice_3 型のすべての値が出現する可能性があるため、codice_3 型の範囲では番兵のための値を確保することができない。そのため codice_2 関数の返値の型は、より広い範囲の値を扱える codice_6 型になっており、入力データを codice_7 型の範囲の値として扱い、codice_7 型としては出現しない値を番兵EOFとして使用している(-1を使う処理系が多い)。コンピュータで可変長データを表現する方法は、末尾に番兵を置く方法と、長さを別途与える方法の2種類に大別できる。ループの終了条件が複数ある場合に、条件判定の数を削減するために置くダミーのデータ。この意味での番兵を使った最適化技法を番兵法(-ほう)と呼ぶ。まず、1の語義に近い例を見る。以下のC言語プログラムは、整数 codice_9 と要素数 codice_10 の配列 codice_11 が与えられたときに、codice_12 となる添字 codice_13 を求める。ただし codice_14 のときは、codice_15 は存在しないが、codice_16 を返す。また codice_17 のときは codice_18 を返す。int selectEdge(int entry, int a[], size_t len)このプログラムには、ループ終了判定として codice_19 と codice_20 の2つの条件が現れる。しかし、codice_21 にダミーのデータとして、常に codice_22 を満たす値を入れておけば、以下のように単一の終了条件に書き直すこともできる。int selectEdge(int entry, int a[], size_t len)番兵法はループ中の条件判断を削減できるため、実行時間の削減が非常に重要な場合によく検討される。1 回の条件判断にかかる時間は短くても、ループで繰り返す場合には大きな差となる場合がある。しかしソース上で終了条件がわかりにくくなる可能性も高く、現代の高速化したコンピュータにおいては必ずしも歓迎される技法ではない。採用にあたっては、その利点・欠点を十分に考慮する必要がある。

出典:wikipedia

LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。