1人で読書会

C++入門

最近、OpenframeworksやCinderでグラフィックやアニメーションを趣味でやり始めたものの、C++に関する基礎体力が皆無なので、0から勉強することにしました。 教科書 ロベールのC++入門講座作者: ロベール出版社/メーカー: 毎日コミュニケーションズ発売日: 2…

iOS 4 SDK for JavaScript Programmers #1

Learning the iOS 4 SDK for JavaScript Programmers作者: Danny Goodman出版社/メーカー: Oreilly & Associates Inc発売日: 2010/12/15メディア: ペーパーバック クリック: 3回この商品を含むブログ (1件) を見る 対象読者的にドンピシャぽいので、これでiO…

JavaScriptパターン #3

リテラルとコンストラクタ オブジェクトの定義 // オブジェクトリテラル記法で定義 var dog = { name: 'Benji', getName: function() { return this.name; } }; // 組み込みのコンストラクタで定義 var dog = new Object(); dog.name = 'Benji'; dog.getName…

JavaScriptパターン #2

必須パターン 高品質なJavaScriptコードを書くための必須パターンとコーディングの習慣。 なぜ? バグ→修正するのにコストがかかる→時間が経つほどコストは高くなる 修正すべき問題が新しければ、問題を把握しやすいので見つけたら即修正がベスト。 コードを…

JavaScriptパターン #1

JavaScriptパターン ―優れたアプリケーションのための作法作者: Stoyan Stefanov,豊福剛出版社/メーカー: オライリージャパン発売日: 2011/02/16メディア: 大型本購入: 20人 クリック: 895回この商品を含むブログ (68件) を見る JavaScriptでできること クラ…

ウェブアプリケーションのためのユニバーサルデザイン

ウェブアプリケーションのためのユニバーサルデザイン作者: Wendy Chisholm,Matt May,水野貴明出版社/メーカー: オライリージャパン発売日: 2009/12/19メディア: 単行本(ソフトカバー)購入: 9人 クリック: 115回この商品を含むブログ (8件) を見る 読書メ…

また再帰

自然数の構造に従った再帰 自然数:0から始まり、1,2,3と増え、無限に続く数。 自然数の様な無限に続くデータ構造を扱う場合には、まず、曖昧性の無い形で定義することが重要になる。 0は、自然数である。 nが自然数ならn+1も自然数である。 階乗を求める再帰…

関数のネスト

関数呼び出しの結果を、他の関数に渡すこと(関数のネスト、入れ子)で シンプルな関数を組み合わせて、全体として複雑な処理を簡単に行うことが出来る。整数のリストを受けとったら、それを昇順にして返す関数(挿入法) (* 整数リストと整数nを受けとったら、…

再帰関数

与えられたリストに0があるかどうかを調べる関数を作ってみる。 (* リスト内に0が含まれているかを調べる *) (* contain_zero : int list -> bool *) let contain_zero lst = match lst with [] -> false | first :: rest -> if first = 0 then true else fa…

リスト

リストの構造 リスト=同じ型のデータが任意の数並んだデータ ※レコードは、複数のデータが決められた個数だけ並ぶ。 空のリスト Ocamlでは空のリストはで表現する。(要素が0個のリスト) 空のリストに要素を加えるには 追加する要素 :: [] と書く。 (* 曜日の…

さらにレコード

「プログラミングの基礎」の目標であるメトロネットワーク最短路問題にレコードを応用する。 必要な情報の定義 まず、メトロネットワークの構造のうち、駅名を定義する。 駅名の情報は 駅名 ひらがな ローマ字表記 所属する路線名 の4つの情報を持つレコード…

レコード

レコード 前回は、内部構造を持つデータとして「組」というのをやった。 以下のような形で記述することで、hogeのとった点数は80であるというデータを表す。 ("hoge", 80) ただ、これだと常に(名前, 点数)の順番、要素の数を守らないといけないのと 単純にデ…

組とパターンマッチ

組 : 複数のデータを並べて1つのデータにしたもの。 今までのような単純な数値や、文字列ではなく それらを組み合わせて1つのデータを形成する。2次元平面上の座標のような感じで # (3.14, 2.71) ;; - : float * float = (3.14, 2.71) という、float * float…

エラーの種類

構文のエラー 構文がおかしいとき。 # let x 3 ;; Error: Syntax error 変数を宣言してるのに「=」がない。「;;」にアンダーラインが現れる。 他にも、if文でthenが無いとか、()の対応がおかしい場合はこれ。 未定義の変数 # 3 + a ;; Error: Unbound value …

条件分岐

条件分岐 if 条件 then 式 else 式 条件はbool型 then,elseの式は同じ型の持つ必要がある #if 2 < 1 then 3 else 4 ;; - : int = 4 #if "true" = then 3.14 else 2.72 ;; Error: This expression has type string but is here used with type bool #if "a" =…

関数の作り方

前回の復習。 関数の定義 作成する関数の目的を考える -> 関数の型(引数、戻り値)を決める 入力と出力、テストプログラムを書く 関数の本体を作る 2.で作ったテストで動作を確認 ※1.はコメントとしてちゃんと書いておく そういえば、「プログラミングの基礎…

関数。の続き

関数の型 # let f x = (x *. x) *. 22. ;; val f : float -> float = <fun> val f : float -> float = fは float型xを受け取ったら float型の値を返す 関数である と読む。 上の例では、float型xを受け取ったら、float型の値を返すので 関数fはfloat型ぽいけれど</fun>…

変数の補足

変数の話で、「らしい」を連発してますが 時給を表す変数を書き換えるだけで良くなる。 と、これだと、定数を定義してるのと変わらないけれども。。 関数型言語での変数は基本、書き換えることが出来ない「らしい」。 1回定義したら、そのまま。 上の例で「w…

プログラミングの基礎-2

変数 # let 変数名 = 式 ;; 変数が必要になる時というのは、ある同じデータが複数必要な時。 例えば、1ヶ月のバイト代を計算してみると (* 時給950円で週3回(5時間、4時間、8時間)働いた月の給料 *) # ((950 * 5) + (950 * 4) + (950 * 8)) * 4 ;; という様…

プログラミングの基礎-1

プログラマーズホリデーにて情報を入手した「プログラミングの基礎/浅井健一」をしこしこやっていこうと思います。 関数型言語OCaml(オーキャムル) 関数型言語 単純、かつ強力 = より人間の思考レベルに近い記述が出来る 記述量が少ない プログラミングは、…