program
Joel on Software の面接で出される問題を解いてみるこのシリーズ。 今日はビットカウンタ。今までで一番簡単な気がする。 ルックアップテーブル C#版 class BitCount { static private byte[] LookUpTable = null; static public int bitCount( byte d) //…
もうしばらくは基本アルゴリズムを実装していく。頭の中では簡単そうに思えるがやってみると結構詰まる。 第八回目はitoa()関数の実装。今回はスタックではなく strrev()関数を使ってみる。 第一回目に作ったやつをほとんどそのまま流用するだけ。 各言語で…
itoa()を実装する、スタックバージョン。 C++ STL void my_itoa(const int n, char *buf) { int digit=0, num=n, cnt=1; stack st; if( num == 0 ){ *buf = '0'; return; } if( num while( num > 0 ) { st.push( (char)(num % 10) | 0x30 ); //一の位を取り…
こんなもん簡単簡単、さくっと作ろう。 ちなみに atoi()とは Ascii to intergerの略。 いちいちマイナスにも対応しないといけないのがなんかすっきりしない。 あまりスマートではないなあ。 C♯ public static int my_atoi(string str) { int ret =0; int min…
昨日と話題がかぶるけどまあいいや。 ここ
リストの扱いってかなり難しい。どの変数が何を指してるんだかさっぱり。 メモリエラーの後ろにこそこそ隠れてるからデバッグも大変。 肝心な処理部分。 List *reverseList(List *first) { List *pre, *cur, *next; // 1個前のリスト、今アクセスしているリ…
前回書いた文字列を逆にするコード。日本語対応化作業。 簡単だと思いきやかなり手がかかる。 C(というかWin32API)、D言語、C#(何もしなくていい。)はクリアしたものの、C++(wstring)は再開のめどが立たず。 我が軍はそこまでこだわる必要がないのでSTL wstr…
さて、前回のコードを見た 面倒くさがり屋の初心者プログラマーなフロートさんは、 最近新調したふかふかのいすに腰掛けて、淀屋橋カメラで店員の話も聞かずに「これ。」とだけ言って買ったパソコンの十九インチ液晶画面をにらみながら ぽつりと「何で私がメ…
いつまで続くかわからないけれどもとりあえず毎日コードを書くことを目指してやってみよう。 最初のお題はJoel on Softwareにあるこのお題。 文字列の長さを調べる。 メモリを確保する。 逆さになるようにコピー。 ゼロ終端(ASCIZ)であることに気をつける。 …
文字列を逆順にするコードをかけ。 メモリを確保しない場合。 #include #include inline void swapChar(char *a, char *b){char t= *a; *a= *b; *b=t;}//char string[]; //逆順にする文字列 void reversString(char str[]) { const int length = strlen(str)…
最大の敵は調べ物にかかる時間だ。 プログラミング Windows 第五番 みたいにまとまっている資料ならともかく、ネット上の情報を探すにはすごく時間がかかる。 まずは情報が見つかったとしてもそれが一般的な方法かどうか、さらには自分で使えるように加工し…
実際にプログラムを作る場合問題となるのはお題である。 まず基本的に一人で作るので一応動作するものを作らなければならない。 つまりアルゴリズム部分だけ書くとか、フレームワークもどきだけとか、そういったものを書いても仕方ない。 実際に動かしてみな…
プログラムを書けるようになりたいとは思うものの実際に何かお代を決めて取りかかるのは結構難しい。 まず、一昔前ならBASICでいろいろ遊べたものだ。 簡単かつお手軽に線、色、音などを出すことができた。 とにかく簡単にいじることができた。 ところが現在…
VS2005 Express Edition が無料で配布されているので早速ダウンロード。 ここからDL Learn to Develop with Microsoft Developer Network | MSDN ちなみにどうでもいいけど左側の Visual C++ とかかいてあるメニュー、リンク領域がもっと広いものだと思って…
WindowsAPIは結構めんどい。 で、ここで手を止めるわけにはいかぬ。ということでDLLを作ることに。 少し考えたらマルチスレッドなんだな。 というわけでまたずるずると明日に続く。
さて、クラナド用お手軽プレイヤーを作る。 まあ、プログラムとしてはお手軽なので練習にはちょうどいい。 最終目標は各曲ループと全曲ループの導入。できればDirectAudioでも。 以下長文。
最近、本読んでばかりでぜんぜんプログラム組んでなかった。 そこで何か作ってみることにした。 お題はまずはめちゃくちゃ簡単なクラナドBGMプレイヤー。(結構前に一回やったけど) ここ http://f44.aaa.livedoor.jp/~watagash/soft.htm からclndwdllをダウン…
たいしたものでなくても書いておいて後でまとめる。 以下の二つは等価。 if( A ) { if( B ) { if( C ) { //なにか } } } if( A || B || C ) { //なにか } だから 条件Aが一番 false になりやすければよい。 条件が成り立つ確立 C > B > A となるように気をつ…
について考えていた。 詳しくはやねうらお氏の日記見てください。 問い1 再帰を使った数学アルゴリズムの最適化。 まずは何をしている関数なのか解釈。 紙と鉛筆でごちゃごちゃ書いて関数の意味を理解。 問い2 迷路のステップ数を数える。 再帰は簡単。二行…
自分にできること、身近で無理がなく重要だけれども見過ごされていることについて考えた。 それは中間の存在である。 どこの世界でもプロとアマは存在するがそこには壁がある。 弱い自分か完璧な自分か。それだけを考えていては先に進めない。中間の自分を認…
とりあえずサイトのコンテンツ構築を再開してみる。 まだほとんどできてない上にしょっちゅう配置を変えるのでリンク切れとか多そう。 いろいろ勉強しながらまとめていくつもり。 しかしほんとに時間が過ぎるのが早い。なんなんだろう。 よくわかる現代魔法 …
いろいろな言語やコンパイラの生成するコードを比較してみる。 こうすることによって言語観の違いや機能の存在意義が分かり、 ひとつの言語だけを学ぶよりも効率が上がること間違いない。多分…。 MSDN Library さすがにずっと読んでいるとものすごく疲れる。…
MSDN Library を片っ端から読んでみる。一ページ当たり十秒前後でざっと読む。 それにもかかわらずぜんぜん進まない。まだ.NET Framework のはじめのほうだ。 この先リファレンスとかあるのに、DirextXも。一体どれだけ資料が詰まってるんだ。 恐ろしいくら…
選択肢が多いと選ぶのは大変である。コマンドとかファイルとか音楽プレーヤの曲とか。 ゲームでも一覧リスト方式を採用しているものが多い。 ここで役に立つのが名前空間とかパッケージ化ではないだろうか。 これらをユーザーが整理できるようにしておけば使…
MSは何で全部のコラムをきっちりそろえてくれないんだろう。 MSDNの会員になれということか。それにしても.NETをはじめ、Express Bata2 とか C#2.0とか MSが積極的に活動している。他のベンダーである、Borlandとかやる気あるんだろうか。 MSの最近の活動に…
今日も本屋に行ってきた。多くの書籍が並び、お硬い本から売れ筋狙いの本までいろいろある。 財政難なため、数学やコンピュータ関係の本をぱらぱらと見ているのだが、他の分野の本も読んでみる事にしている。 もっとも、ぱらぱら目を通すだけで、じっくり読…
今日も膨大な情報を読む。MSDNはもっと分かりやすく資料を配置してくれ。 まあ無理か。似たような項目がたくさんあってどこに何があるのかわからん。 少しホームページを修正。 トレーニングでは指の力をゴムバンドで鍛えてみた。ただの思いつきだけど。 あ…
ここ最近ホームページ作りやっていたせいでプログラムの勉強をほとんどしていなかった。 そんなことではいけない。我が意はあまたのコンテンツをつくりし事なれば怠けることはならぬ。 ということで、再びMSDNの資料を読む。よくまとまっている資料とはマイ…
MSDNのライブラリーには膨大な情報がある。 しかし、見つけたいものというのは意外と見つかりにくい。特に初心者に対して有用な情報が。 技術文書とか関連項目のところにひっそりと面白いコラムとか転がっていたりする。 やはりこれから学ぼうという人には、…
ソフトウェアは更新できるから…。 そういってバグだらけのソフトを出すところは非常に多い。 場合によっては非常に不愉快である。 今日はこれに関して分析してみた。 というのも、私は以前ハギワラシスコムのSD-1というプレイヤーを買ったことがある。 ハー…