こんばんわ。
朝んしーはおはようございます。
昼んしーはこんにちわ。

前回は何もせんプログラムば作ったですね。
一通りプログラムば書いて、コンパイルして、
実行するっちゅー手順がどぎゃん感じかわかったでしょうか?

コンパイルする時はコマンドプロンプトで
gcc ソースファイル -o 作成する実行ファイル
って打てば、コンパイルされて、エラーのなからんば
実行ファイルのできるとですね。

ここらへんのイメージばわかりやすくするごつ画像ば使って
説明ばしてきたばってんが、今後は画像はあんま使わんごてして
説明します。(あんぐらいしかせんけん画像なしでも、えった変わらんて思います)

そんなら、前回のプログラムば説明していきます。
int main(void)
{
	return 0;
}

こっはですね、関数て呼ばれるもんです。
関数っちゅーとは数学とかでも聞いたこつあるて思うとばってんが、
プログラミングで言う関数は簡単に言えば「処理を一まとめにしたもの」
って事になっとです。

C言語は関数の中に処理ば書いてそれば他ん関数から呼び出して
組合わせて行く感じになっとです。

関数の構文ばってんがぎゃん感じになっとるです。

戻り値の型 関数名(引数の型)
{
  処理の内容
}

前回のプログラムの例でいけば、
intが戻り値の型、mainが関数名、voidが引数の型ってなっとります。
そして、C言語は実行された時、一番最初にmain関数の呼び出されるとです。
つまり、前回こんプログラムば実行した時もmainが呼ばれよったとです。

そして処理の内容ばってんが、return 0; ってなっとるですね。
これは、こん関数から0ていう数字ば返して関数ば抜けるぞ!って言う意味です。
C言語はmain関数ば抜けたらプログラムの終了するとです。

さて、もういっちょわからんとのあっですね?
intって何?って。

これは戻り値の型ば表しとるとですが、型って何な?って思うですよね。

C言語には基本的なデータ型のあって、変数っていう数字ば入れる入れ物ば
作れるとばってんが、そんときどんぐらいの
大きさにするかっていうとが型によって変わってくっとです。
で、基本的な型はぎゃんとのあります。

char  ・・・ サイズは最低でも1バイト(8ビット)、
         扱える数値の範囲は1バイトなら-128~127
short ・・・ サイズは概ね2バイト(16ビット)、正式にはshort intばってintは省略可。
         扱える数値の範囲は2バイトなら-32768~32767
int   ・・・ サイズは2か4バイト(16か32ビット)、
         扱える数値の範囲は4バイトなら-2147483648~2147483647
long  ・・・ サイズは4か8バイト(32か64ビット)、正式にはlong intばってintは省略可。
         扱える数値の範囲は8バイトなら-9223372036854775808~9223372036854775807

ってなっとるとばってんが、処理系によってサイズとか符号の有り無しの違う場合のあるけん
気をつけとった方がよかですよ。
ちなみにMinGWのサイズば調べたらぎゃんなっとったです。
ampro002-02


他にもfloatとかdoubleとかいう浮動少数型のあるとばってんが、あんまいっぺんにしたっちゃ
わけんわからんごてなるけん、それはまた別ん機会に説明しますけん。

例えばint num;
って書いたら、「int型の数値を入れられるnumって言う数値の入れ物ば作ったばい!」
ってなります。

で、戻り値ならばintの値ば返すけん、その範囲の数字ならば0じゃなくても返せるとたな。
ただし、main関数の戻り値は0が正常終了で0以外は異常終了みたく扱う場合の多かけん
どげん数値ば戻すかは空気読めなって事ですw

こん型の前にunsignedってつければ符号無しば表して、マイナスの値が扱えん分、
プラスの値の方がようけ扱えるようになっとです。
例えば2バイトのunsigned shortならば、-32768~32767じゃなくて
0~65535までの扱えるごつなるとです。

ちなみにunsignedではなくて、signedっていうともつけられます。
これは省略した場合とほぼ同じで符号のあるぞって言う意味です。
だけん、intsigned intは同じ扱になっとたな。
ばってんが、charだけは処理系依存になって
省略したらunsignedだったりsignedだったりするけん確実にどっちにしたかかば
決めるならばsigned charとかunsigned charとか明確に書いてやれば間違いなかった。

で、引数の型のvoidって何や?
って思わすかもしれんばってが、こんvoidっていうとは空虚(なんもなか)っていう意味で
引数は何もいらん!って意味です。

戻り値ばvoidにするごつもでくっとですよ。
戻り値ば返さんならよかだけの話じゃけん。
そんかわり、voidっていう型の変数は作れんです。
なんもなかわけやっけんw
ポインタは別ばってんが。。。それも今後説明するごつしますけん。


で、ごちゃごちゃわかりにくくなったけんmain以外の関数も作ってみようて思います。
では、ぎゃんふうにプログラムば書いてみてください。
void amakusa(void)
{
}

int main(void)
{
	amakusa();
	return 0;
}

プログラム名は「ampro002.c」とでもしゅーかい。
そっばコンパイルしてみます。
コンパイルはコマンドプロンプトで
gcc ampro002.c -o ampro002
でよかったですね。
もちろん、前回作った場所と同じ所に保存しとかんばんですよ。

で、出来上がったampro002.exeば実行してください。
コマンドプロンプトでampro002.exeって入力すれば実行でくるですね(.exeは省略可)

また何も表示されんですね。
(何かを表示する処理ば書いとらんけん当然ばってが)
でもコンパイルはきちんとされとるです。
前回と変わった部分はわかるですか?
amakusaっていう関数ば作って呼び出しとるですね。
呼び出し方は関数名(引数)っていう書き方ばってが、引数はvoidで
何もなかけん()だけ書いとります。
で、命令の終わりに必ず;(セミコロン)のついとるですね。
これもC言語の決まりで、ステートメント(一連の命令)の終わりには必ずセミコロンば
つけんばつまらんとです。

さて、amakusaっていう関数の中身は何も書いてなかですよね。
だけん何もせん関数になります。

じゃあ、こんプログラムばぎゃんふうにmainとamakusaば入れ替えて
コンパイルしてみてください。
int main(void)
{
	amakusa();
	return 0;
}

void amakusa(void)
{
}
どぎゃんなったですか?
なんじゃいWarning(警告)の出たですね。
何でかって言うたら関数ば呼び出しとる所より前に関数の定義されとらんけんです。
通常ならエラーになってexeは作られんとばってんが、最近のgccは
えらい気の聞いとるですね、何かexe作られたですw

ばってんが、本来は後方参照できん言語やけん、ぎゃん書き方はつまらんとです。

ばってん関数の処理は下ん方に書いたり別のファイルに処理内容ば書いたりして
上ん方でそん関数ば呼び出したか時のあっとです。

そぎゃん場合にはどげんするかって言えば、呼び出す前に
そん関数の形ば一旦宣言しとってやればよかとです。

プログラムんアタマにいっちょぎゃん感じで追加してみてください。
void amakusa(void);

int main(void)
{
	amakusa();
	return 0;
}

void amakusa(void)
{
}

で、コンパイルしてみてください。
何もエラーの出んごつなったでしょ?
これは関数の処理ば書かんで関数の型だけ書いたもんです。
こればプロトタイプっていうとですばってんが、これのあるおかげで
コンパイラが「amakusaって名前の関数は別ん場所で処理内容ば書かれとるとばいな」
って感じで処理ばしてくれて、実際に関数の本体ば見つけたらそれば呼び出すごつして
コンパイルしてくれるとです。えらかですね。

だけんぎゃん感じで関数の実体ば消してしまえば
void amakusa(void);

int main(void)
{
amakusa();
return 0;
}
「関数の実体の見つからん!」っていう
エラーば吐いて、コンパイルエラーになっとです。

さて、なごなごなったですね、そんじゃいよいよ文字ば表示してみましょうか。
プログラムばぎゃんふうに書き換えてください。
int puts(const char* str);

int main(void)
{
puts("Hello,Work天草");
return 0;
}

Hello,Worldじゃなかですよ、「ハローワーク」ですw
天草で雇用が増える事ば願ってそぎゃんしましたw

で、こればコンパイルして実行してみてください。

ぎゃん感じで文字が表示されましたか?
ampro002-01

ぎゃんなれば成功です。

はて、それにしてもputsっていう関数の実体はどこにも書いとらんですね?
何でコンパイル通ったとでしょうか?
そりゃまた次回にちょっと説明ばしますけんね。
キーワード: #AmaProgramming
コメント(0件)

 

■コメントを書く
タイトル
本文 *必須
お名前 *必須
メールアドレス
ホームページアドレス
削除パスワード*必須
コメントを削除する際に必要になります。
認証キー *必須 下の画像に表示されている数字をご記入下さい。
(画像は毎回変わります)