Problem set 3

Pset3... binary searchに辟易したけれど、ようやく終わっ(てい)たよ。

  • arrayの長さはカウント出来ない!

びっくりしゃっくり。パイソンたんではリストの長さ、len()一発で取得出来たやん...なんなのじゃ、C言語
原理としては、strlen(string長を取得する)と比較すると
strlen: string の長さを全て舐め、最後の\0までカウントする
一方、arrayは最後に\0が無い(!)為、カウント出来ない
ということ。
ちなみにfor loopを使い、自分で数えようとしても出来ませぬ。
arrayの長さは、例えばnとして、一番始めにどこかからか持ってこないといけない...ぐぬぬ...

  • bool BinarySearch(int value, int values[], int min, int max)

はい、これ。
そもそも
bool search(int value, int values[], int n)
があるにも関わらず、Binary Searchを新しく定義するのがやりやすいらしい。
その理由は...
search()を使う度にいちいちint min, int maxを入力するのが面倒だから、
汎用性を高める為に、searchの引数は3つに留め
BinarySearchの引数を4つにする

  • usleep()とは

#include に入っているusleep()はマイクロスリープと読む。ユースリープ(きみは寝る)じゃない。
()内マイクロ秒だけ動作停止させる関数。
usleep(500000)なら500000マイクロ秒=500ms=0.5s, sleepが完了するまで0.5secかかる。
その間全ての動作を停止させるので、待たせたい時に使う。

**

おまけ
①arrayの宣言:
f:id:owan_k:20160816153751p:plain

②arrayを引数とした関数の作り方:
f:id:owan_k:20160816153710p:plain
Why do you think we pass in the size of that array separately?
は、関数の中でarrayのsizeを利用しようとすると、
C言語ではarrayから要素の数(size)をゲットする術がないので必然的に、separatelyにarray sizeを提供しなきゃならんのだよー。やれやれ。

③関数に代入されるとき、arrayはコピーでなくそれ自体が入れられる
f:id:owan_k:20160816154116p:plain
だから、代入されたarray自体が操作される。

2次元配列
f:id:owan_k:20160816154252p:plain
「行列」と同じく、「行」「列」の順に指定されるのだな。