ブログ「サイバー少年」

ブログ「サイバー少年」へようこそ!
小学六年生ごろからプログラミングを趣味にしている高校生のブログです。
勉強したことについての記事などを書いています。フリーソフトも制作、公開しています。
(当ブログについて詳しくは「ブログ概要紹介」を参照)

サイバー少年が作ったフリーソフトは「サイバー少年の作品展示場」へ

5月

コンピュータ関連で覚えた技術
・C#の属性クラスについて概要を理解した。
・.NETのAssemblyクラスの使用法を覚えた。
・再帰の有用性と、性能上のデメリットについて考えた。
・.NET Micro Frameworkのポーティングについてなんとなくイメージを掴んだ。
・ゲームの高速描画のテクニックについて知った。
・「ゲーム開発では直接C++などを書くよりもゲームエンジン用のスクリプトを書くほうが多い」ということを知った。

コメント
今回は色々なことを覚えた感じがしますが、なんとなくのイメージしか掴めなかったものが多いです。覚えないよりは良いのですが。今回はブログ更新も少なかったので、今度から頑張って行きたいです。

tag:

久しぶりにC言語を書いてみた! ~ ポインタ加算の罠 ~

最近、C言語の学習をしていませんでしたので、C言語のプログラムを書いてみました。

正確に言うとC言語ではなくVC++言語です…。

今回はmalloc関数を使ってみました。

mallocProgram(275).txt Yahoo!ボックス
http://yahoo.jp/box/2mKXt7

手軽に見られることを重視して、圧縮なしのテキストファイルで公開しています。

ダウンロード時も、保存せずに「開く」で十分です。

ぜひ見てください。


このプログラムは単純に0から99まで出力するものですが、内部でやっていることが複雑ですね。


1. mallocで4(intのサイズ) * 100バイトのヒープ領域を確保して、戻り値をポインタ変数に格納

2. ポインタ変数[0]からポインタ変数[99]に0~99を格納

3. ポインタ変数[0]からポインタ変数[99]を1行ずつ出力



要するにヒープ領域に配列を作っているわけです。

本来なら4ではなくてsizeof(int)と書くのが正しい作法かな。


こういうプログラムをC言語で書きましたとさ。
めでたしめでたし。


…って、終わるのが早い!

もう一つのテーマを話します。

続きを読む

tag:

VB.NETの配列のSystem.Array的な仕組み

VB.NETには、今までのVBの文法に限りなく近くしつつ、
.NET Frameworkの仕様に合わせようとする努力が見られます。

今回、注目するのは配列です。

VB.NETの配列はC#と同じく、しっかりSystem.Arrayを継承したものを型にしているわけで、

Dim ints() As Integer

なんてありえない宣言なのです。

本来なら

Dim ints As Integer()

とするべきです。


…実はこういう宣言も可能で、こちらはC#の概念に近いやり方です。

Integer() は配列の型を表します。

そのため Integer(2) のような要素数を指定する書き方はできません。

C#で int[2] ints; と書けないのと同じことですね。

(Dim ints(2) As Integerと書けばOKな理由は、ints(2)が型を表していないからです。詳しくは後述します。)


さて、それでまぁ、内部的には後者のような仕組みになっているはずです。


そこで、VB.NETでの色々な配列宣言がC#ではどうなるのかという書き方の対応を考えてみました。

C#は文法に一貫性を持たせることを重視しているようで、配列もArrayクラスそのまんまの宣言方法になるのです。

それなら“[]”みたいな記号は表れないって?

つまり、C#での書き方をみるということは、.NETの内部的な解釈方法をみるということです。

これで、VB.NETの正体が分かりますね。


さて、実はこの対応リストは私の推測です。

「たぶんこうなっているだろうな~」、と考えて書いています。

大丈夫だろうとは思いますが、間違いがあればご了承ください。
続きを読む

tag:

新たな中学生プログラマ“gear”さん参上!相互リンク!

新たな中学生プログラマのブログが現れました!
そして相互リンクをしました!

“gear”さんのブログ「pc漬けの毎日」です。


「新たに現れた」というか、以前(4月)から存在していることは知っていたのですよ。

最初、gearさんが現れたのはAsaBonさんのブログへのコメントですね。

コメントがあった記事:

波が来た : AsaBonのコンピュータサイエンス
http://blog.livedoor.jp/asabon_c_science/archives/25837120.html


コメント内容は、なんと、“Tetra Regulus”
(※FlashBoyさん、Raldyさん、div9851さん、AsaBonさんの4人で結成した中学生プログラマチームのこと。俺はいないのだよぉ)
のメンバーに加入したいと言うことでして、そして新たに加入したようです!

これで、4人だった“Tetra Regulus”のメンバーが5人になりましたが…
チーム名の“Tetra”(ギリシャ語で四の意)の部分はどうなる…?

どうやら、このままの名称でいくみたいですね。



さて、gearさんは主にC++を使用されているそうで、C#やVB.NETも少し扱えるみたいです。


しかし、gearさんの腕前は相当ある感じがするのですが、
gearさんのブログを見ても、プログラミング関連の記事はあまりないんですよね。

腕は間違いなくあると思います。

なので、ぜひともプログラミング関連の記事も書いて欲しいところです。

期待していますよ!


gearさんのブログの追加以外にも、相互リンク一覧での変更点がいくつかあります。


まず、“17keito”さんのブログのリンクを撤去させて頂きました。

もう半年ほどブログが観覧不能となっているので、無理かなと思った次第です。

復活して、コメントなりメールなりをくれたら、また載せますよ。


そして、“刹那”さんのブログの説明文の、「中学生」を「高校生」に修正しました。

刹那さんは今年の4月から高校生になっていましたが、6月になっても「中学生」のままにしてしまっていた…。

刹那さん、申し訳ございません。


あとは“FlashBoy”さんのブログの説明文の、「Flashクリエーター」を「Flashプログラマ」に変更しました。

最近はC言語もちょくちょく、されているようですから「C言語、ActionScriptプログラマ」にしても良いかも知れません。



以上ですね。gearさんも今後、要チェックです。

お互い頑張りましょう!

tag:

ポケモンのゲームの感想

ブログ「サイバー少年のつまらない事ですが」でも書きましたが、
最近、ポケモンのゲームにハマってしまいまして、ブログ更新が停滞しておりました。

そしてとうとう、クリアしたので感想を書きます。
批評はあまりしません。

ブログ「サイバー少年」にポケモンの記事を書くというのは前代未聞ですね(笑)

以下ポケモンに詳しい人じゃないと分かりません。



やっていたのは「ポケットモンスター エメラルド」ですね。

古いって?
これが私が所持しているポケモンの最新バージョンです~。

さて、現在は殿堂入りが終わって、バトルフロンティアをやったり、殿堂入りを繰り返してレベル上げをしています。


ですが、殿堂入りをしたのは良いものの、
真のゲームクリアは“りゅうせいのたき”のダイゴを倒したときだと思っています。

エメラルドはチャンピョンがミクリなので、殿堂入り後の“りゅうせいのたき”にムチャクチャ強いダイゴが現れるのです。

メタグロスのコメットパンチが強すぎますよ…。

まぁ、そもそもレベル差が10くらいあるのが問題ですが。

続きを読む

tag:

末尾再帰と末尾最適化機能についての考察

記事「再帰はすげえ…けどループを使え!」で、“@jsakamoto”さんから末尾再帰についてのコメントを頂きました。

返信を書くときに、コメントの内容とは関係ない、余計な部分まで熱く語ってしまったのですが、
まだ書き足りないので記事に書きます(笑)

「末尾再帰とは何か」と、「末尾最適化機能って別にすごくないじゃん」という話です。




関数型言語には大抵、末尾最適化の機能がついています。

末尾最適化機能とは、末尾再帰を行うプログラムコードを、それと同等なループ処理に変換してくれる機能のことです。


末尾再帰とは何ぞや?と言われたら、末尾で再帰しているプログラムのことですね。

………と言われても。


まず、末尾再帰の詳しい定義が分かってないといけないので、具体的に末尾再帰はどんなものか説明します。

続きを読む

tag:

当ブログをご利用(閲覧等)になる場合は必ず「当ブログの利用規定」をお守りください。