c++
15. Graphing Functions and Data "The best is the enemy of the good." - Voltaire いろんな分野でグラフ化が必要 実験などの場合:データ 数学的モデルを使う場合:関数 この章ではそういったグラフィックスを扱います。 対象は1変数関数、ファイルからの…
14. Graphics Class Design "Functional, durable, beautiful." -- Vitruvius 建築物が持つべき特徴として。原文は"firmitas, utilitas, venustas"で、solid, useful, beautiful (堅固、有用、美しい)ということらしいです。グラフィックスを扱ってる一連の…
13.10 Managing unnamed objects 無名オブジェクト、とか 必要になる例として、 256色パレットを表示したい時! ってそうか、こうやって16x16に並べればさっきのわかりやすかったのかorz と後悔後を絶たず まあ普通にnewでのヒープオブジェクト(のポインタ…
13. Graphics Classes "A language that doesn't change the way you think isn't worth learning." 逆に言うと僕たちは自分が考えていると思っているけど、本当は言語こそが主であり、僕たちは寄生された哀れな生き物なのかも。。。。こわー、、、、、、い…
まあ仕方ないことなんだなーというのはよくわかったです。ポインタをif()で直接評価、ってのがある以上、外すことができないのですね。この挙動。 仕方ないのでとりあえず ostream側も定義すれば止めることに成功するようですが、そこまでする必要は無いんだ…
11. Customizing Input and Output "Keep it simple : as simple as possible, but no simpler." -- Albert Einstein iostreamの調整についてです。泥臭いところもたっくさん。最後はセパレータについての例で。 11.1 Regularity and irregularity ここまで…
12. A Display Model "The world was black and white then. [It] didn't turn color until sometime in the 1930s." 漫画カルビン&ホッブスでの父との会話ですね。「なんで昔の写真は白黒なの?」というカルビンの質問に対するもの。 「で、じゃあなんで(…
PPPUC++の復習というか練習でマニピュレータを書く練習をしていて inline istream& autobase(istream& is) { is.setf(ios::fmtflags(0), ios::basefield); return is;} main() { int a,b,c; cin >> autobase >> a >> b; cout << autobase << ">>" << a << " …
10.6落穂ひろい 途中でめんどくさくなって飛ばしてしまったけど、一つだけ覚えといたほうがよさそうなのまで飛ばしてしまってたので追記 ios::exceptions() なにかというと、これに設定されているerror(bad, fail, eof, ... goodはってgoodbitはbitといいつ…
10.8 User-defined output operators 自前の 難しいのは、どう表現するのか?というところ 2011/03/05なのか 2011-03-05なのか Mar 5th 2011なのか・・・ 誰もが納得できる表示と言うのは難しいですね しかしそれでもとりあえず作っておくのは役に立ちます。…
10 Input and Output Streams "Science is what we have learned about how to keep from fooling ourselves." 尊敬するファインマン博士のお言葉。我々の認識はしばしば自身を騙しますが、それを認識できるのが不思議です。We're a Strange Loopですね。 こ…
9.7.3 Default Constructors 未初期化オブジェクトはバグのスクツ 駄目だコイツ・・・早く何とかしないと・・・ というわけでコンストラクタが出てきたわけです。 Date()の例だと、3オペランド渡してやらないとオブジェクトがそもそも生成できないので未初期…
9.6 Operator overloading ここも書く事ないなー とりあえずほぼ全ての言語で定義された使い方なら演算子の挙動をUDT毎に設定できる っていうので、enumでもってのが目から鱗だった。確かに 例によってやり過ぎはいかんよ、という忠告
9. Technicalities: Classes, etc "Remember, things take time." デンマークの格言にこのT.T.T.があるそうです。どんなに時間がかかってて自分が間違った道を歩んでるように思えても、どんなに自分が前に進んでいなくて愚鈍に思えても、歩むことをやめない…
どこまでやったか思い出すのに時間が・・・ 8.5.8 Function call implementation 関数呼び出しの詳細、何をやっているのか、です 計算機の例の expression(), term(), primary()は相互呼び出しするので恰好の例 ただ、グローバルを使うと説明に困るので Toke…
8 Technicalities: Functions, etc. ようやく言語の説明系 この章と次の章ではプログラミング言語 C++自身にスポット ここまでに出てきた概念の復習にもなっている 8.1 Technicalities これまで可能な限り、言語ではなく、プログラミング自身に焦点を当てて…
7.7 Recovering from errors エラーで終了していたけれど、それだと不便。 リカバリしましょ。 1)例外を受ける 2)ゴミを片付けた後、反復 という戦略でいきます さてこれまで try catchは main()にあったのだけれど、これではダメ calculateの中、すなわ…
7 Completing a Program "It ain't over till the fat lady sings." オペラの格言 僕ら日本人的には小林幸子さんか!(そこまで太ってないけど。。。) プログラムを書く、ということは一発で鋳造する、というよりは少しずつ盛ったり削ったりして積み重ねて…
6章には正解の全体コードは載っていないのですが、代わりにこのドリルにてバグだらけコードを修正する、という遊びをすると完成品が手に入るようになってます。 http://www.stroustrup.com/Programming/calculator02buggy.cpp (みなさんも暇があれば遊んで…
6.6 Trying the first version さあ、準備はできたので main()をこさえて、get_token()をつけて、実行してみよう 調理済みの未完成品はこちらにあります。 http://www.stroustrup.com/Programming/calculator00.cpp 当然ですが、動作はおかしい。 まず数字単…
6.3.2 Tokens と言うわけでようやくトークンに来ました 実はオレオレバージョンは最初boost::spirit でおもむろに書きだしてしまい, definition(const まで打ったところで、「はっ」となって直したとか言うのは内緒*1 ただ、スタックなしバージョンとしては…
6. Writing a Program "Programming is understanding." Kristen Nygaard の言葉。Simulaの生みの親の言葉はMr.S 的にも心に強くハマっている言葉なんだろうとか思いつつ、巨人に黙祷。 #理解・分解・再合成、、、、はハガレンでしたね・・・ この章(&次…
PPPUC++の6章本文メモが事故にてぶっ消えてしまった。かなしーです。 #地球のみんな、オラに元気をわけてくれ!と、後ろばかり見てても仕方が無いので、6章ででてくる計算機を、読む前に自分で書いてみたのをのせるよー https://github.com/tkuro11/calc-…
PPPUC++のErrorの章を読んでいて、例外とかちゃんと理解してないなーということに気がついたり(遅い)。そうか単にオブジェクト投げるだけだから、階層構造を作って親で受ければ面白いわけですね。 #include <iostream> #include <string> #include <vector> using namespace std; enu</vector></string></iostream>…
尻切れになってしまったので改めてきりなおし 5.5.2 The callee deals with errors と言う訳でsanity checkは関数(呼び出され側=callee)の中でやろうず いちいちテストコードを分散させなくても良い。変更も一カ所で済む。 何よりも「そこに全ての必要な…
5. Errors "I realized that from now on a large part of my life would be spent finding and correcting my own mistakes." フイタ。まさに喜劇。問題を作るのは一瞬だけど、解決には多量の時間がかかる、ってわけかな。人生ってそんなもんかもしれない。…
"If it doesn't have to produce correct results, I can make it arbitrarily fast." そりゃそうだ。コンピュータにこう言った良い「ズル」をさせる設計と言うのがプログラマ3大要素の「短気」の結果なのかな。 この章でswitch とかloopとかの制御構文や関…
Objects, Types, and Values "Fortune favors the prepared mind." パスツールの言葉だったんだ!(そんなのばっか)。運がイイ!って何も努力してないってことじゃない。 結構好きな言葉です。静的型付言語では宣言がこの prepared mindになるのかな。定義…
Hello World "Programming is learned by writing programs." Karnighanの言葉だったのかー。 ともかくour best eternaly friend -- hello worldの登場です。 プログラミング環境を触ってみる コンピュータが指示どおりに動く、というのを体感してもらう 2.1…
Computers, People, and Programming "Specialization is for insects." not for human-being ってことですね*1 1.1 Introduction どっちかというと息抜きっぽいこの章。他の章はテクニカルですが、この章は基本的に「燃料」。なんでプログラミングなんてす…