ボロリン

明石高専 情報工学研究部のブログです。
研究発表会2009
 どうも、C言語の知識もあってかJavaScriptをスムーズに覚えられているC+Cです。
 つきましては、今年行われた研究発表会の資料を公開しました。
 今年は、プログラミングの話題が多いようです。事実新入生もプログラミング班が多いので大いに勉強になったことでしょう。(うん おそらくそうです!)
 今年の研発の資料のテーマと著者は以下の様になっております。






深月GUI プログラム作成に用いるプログラミング言語・API」(pdf)
One_Nature_Deity「Windowsにデフォルトで入っているソフトウェア」(非公開)
C+Cゲーム作りの話」(pdf)
cloud_of_ash画像編集とその種類について」(pdf)
抹茶ゲームプログラミング」(pdf)


インデックスページも作ってまとめて有るので見ておいてください。 インデックスページ
| 研発 | 21:32 | comments(0) | trackbacks(0)
1 Tower
どうも、フリーセルが楽しいOne Nature Deityです。

金曜日の講習では、ハノイの塔を扱ったプログラムをやってもらいました。
ちょっと解説したいと思います。実際に遊んだことのある人向けかもしれませんが。

ソース
int hanoi(int a,int b,int c,int d)
{
if(a-1) {hanoi(a-1,b,d,c);}
printf("%d番目を%dから%dに¥n",a,b,d);
if(a-1) {hanoi(a-1,c,b,d);}
}

変数解説
int hanoi(int a,int b,int c,int d)
a:運ぶ段数
b:出発点
c:経由点
d:到着点

ハノイの塔は、N段を運ぶとすると、N−1段を経由点に運んで、一番下のブロックを出発点から到着点に運び、N−1段を経由点から到着点に戻せば完成します。

そこで、ソースの関数内では
段数が1段でないなら、N−1段を経由点に運ばせる。
一番下の段を到着点に移動。
段数が1段でないなら、さっき移動したN−1段を戻す。
という、構造を持っています。

理解しにくいと思いますが、これが最も簡単なパターンです。
逆に再帰関数なしでやる方が難しいと思うので、これが理解できるとこれ以外の方法は思いつかないと思います。

再帰関数はわかりにくいものが多いので、無理して使う必要はありませんが、これが必要となるアルゴリズムはいくつか存在するので、出てきた場合は理解できるようにしておいてください。


| プログラミング | 12:55 | comments(0) | trackbacks(0)
プログラミングと数列
 初めまして。One Nature Deity です。
 最初のC講習ではフィボナッチ数列にあたるものを出力するプログラムを作ってもらいました。 配列という手段を持ったC言語では、数列は一般項はもちろん、漸化式を用いた配列の作成も簡単にできます。逆に、そういったもので定義されない数列(例えば、3,1,4,1,5,9,2,といったもの)は作れませんが。
 この配列のすばらしいところは、N番目の数とN−1番目の数の商が、黄金比に収束することだと思います。そのためか、自然界においても様々なところで見られると言います。

 ところで、プログラミングを使って、配列や級数の和の極限を考えてみたいと思います。
 配列は、収束するときと、発散するときと、振動するときがあります。
 Xを無限大にするという概念は当然プログラミングにはありません。そこで、非常に大きい値(100万とか)をその代わりに使って「だいたいこの値なのでは」と推測する方法になります。もっとも、小数でしかでてこないので無理数に収束すると、大抵判断できませんが。

例。 1/1^2 + 1/2^2 + 1/3^2 + ・・・ = π^2 / 6


最後に1つ面白いサイトを紹介します。
オンライン整数列大辞典というもので、数列を打ち込むとその数列を含む数列を、探してくれます。数学が好きでないと、わからないかもしれないですが、一回見てみてはいかがでしょうか。

URLhttp://www.research.att.com/~njas/sequences/?language=japanese
| プログラミング | 21:58 | comments(0) | trackbacks(0)
C言語講習 2009 第二回 【4/4】
最後に課題に移りたいと思います。以下のプログラムを作ってください。

【円の半径を入力させて、円周・面積を表示させるプログラム】
注意事項
・すべての数は実数で扱う。
・円周率は3.14とする。
・使用する実数型はfloatでもdoubleでもよい。
・無駄な変数を宣言するのは避けること。

ではがんばってください。
| C講習 | 23:15 | comments(0) | trackbacks(0)
C言語講習 2009 第二回 【3/4】
 次にやるのは入力です。
 これまでは文字や計算の結果をprintfを用いて出力という操作をしていました。しかしそれはすでに計算するための数が決まっているからであって、その数はプログラムの作り手が勝手に決めてそれらを計算させていたのです。市販のソフトでは、ユーザーが数を入力しているというのが大半です。

 そこで、今回はユーザーに数を入力させる方法を教えたいと思います。

【二つの数を入力させてからそれを足し算させるプログラム】


#include

int main (void){
int a,b;
printf("数1を入力してください。");
scanf("%d",&a);
printf("数2を入力してください。");
scanf("%d",&b);
printf("数1+数2=%d",a+b);
}


では解説していきましょう。
scanf("%d",&a);

これがユーザーに数を入力させる命令です。

【文法】

scanf("書式指定文字",&入力させた値の代入先変数)

 書式指定文字というのは「%dとか%lf」のことです。これはprintfで見たときのと同じですね。一応説明しときますが、整数の場合は%d、実数(double型)の場合は%lf、実数(float型)の場合は%fを使います。
 そして「入力させた値の代入先変数」のは見てのとおりですね。あと。それを記述する前にはその変数の前に必ず&をつけてください。これも後々解説するので今はおまじないと思って黙って使ってください。

ちょっと話が戻るのですが、%lfを使うことによって即値計算で割り切る割り算をすることができます。


#include

int main (void){
printf("%lf",9/4);
}


これは9÷4の結果を実数で表示するというプログラムです。だから小数点以下の計算もできるわけです。なので、割り切る割り算で余りは出ません。
ちなみにここの%lfを%dに代えたら9/4の答えが整数で表示される、つまり余りが出る計算になります。
| C講習 | 22:28 | comments(0) | trackbacks(0)
CALENDAR
S M T W T F S
 123456
78910111213
14151617181920
21222324252627
282930    
<< June 2009 >>
SELECTED ENTRIES
CATEGORIES
ARCHIVES
RECENT COMMENT
RECENT TRACKBACK
LINKS
PROFILE