今回で5回目になっですね。
さて今回は何ばすっとやったかきゃー忘れたけん
前回書いた記事ば見らんばつまらんですなw

じゃったじゃった、文字ば出力したとやったですね。
そんプログラムがこれです。
int puts(const char* str);

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

このputsっていう関数ばってんが、どこにも処理の実体ば書いとらんとに
なんでコンパイルん時にエラーにならんかって話です。

まずぎゃんふうにプログラムば書いてみて下さい。
int puts(const char* str);

void hellowork(void)
{
puts("Hello,Work天草");
}

int main(void)
{
hellowork();
return 0;
}
プログラムの名前は「ampro003.c」とでもしゅーかぃ。

保存したらコンパイルばしてみてください。
コンパイルの方法はわかっですね?
今回までは書くですばい。
gcc ampro003.c -o ampro003

さて、出来上がったプログラムば実行してみましょうかぃ。
ampro003.exeって打てばよかですね

Hello,Work天草
って表示されたって思います。

どぎゃんなっとるかって言えば、プログラムの実行されたら
main関数から始まるって言うたですよね?
で、プログラムは基本的に上から下さん流れるけんまずにmain入ったら
今度はhelloworkっていう関数ば呼び出すごつ書いてあるけん
こん関数の呼ばれます。

で、helloworkの関数の中さん入って(ひゃあって)行って、puts関数ば呼び出して
文字ば表示すっとです。

そしたら次は何もなかけんhelloworkの関数ば抜けて呼ばれた所に戻るとです。
helloworkから戻ってきたら次はreturn 0;mainば抜けて
プログラムの終了すっとですね。

ほんならもういっちょプログラムば作ってみましょうかい?
次のごつ書いてみて下さい。
int puts(const char* str);

void hellowork(void)
{
puts("Hello,Work天草");
}
プログラムは「amlib003.c」にしてみましょうかね。

そしてさっき作った「ampro003.c」もぎゃんふうに書き換えてみてください。
void hellowork(void);

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

そしてコンパイルばすっとですばってんが、
今回はこんソース2つば使ってコンパイルばしていっちょのexeば作ります。
コンパイルの仕方ばってんが、ぎゃん入力します。
gcc ampro003.c amlib003.c -o ampro003

今回はいつもと違うけん画像ば載せときます。
ampro003-01
新しく作ったソースばいっちょ追加(赤線の所)してコンパイルしました。
で、同じごと実行したら上んごつHello,Work天草って出ますね。

ぎゃん感じでソースファイルば分けて書けるとですね。
そんかわり、main関数は全部の中で1つしか書いたらつまらんです。
あっちゃこっちゃmain関数ば書いたらどんmain関数から開始してよかか
わからんけん、コンパイルでけんです。
また、main関数ば書かんなら「どっからスタートすっとかわからん!」って
これまたコンパイルエラーになるですばってんが。

そもそも、C言語では同じ名前ん関数は1個しか作られんとです。
だけんmain関数も1個しか書けんとは当然やけん。
C++はオーバーライドとか名前空間とかのあるけん同じ名前の
関数ば条件付きで作りはさるるばって、こりゃC言語じゃけんですね。

んで、何の言いたかかって言えば、hellowork関数はmain関数のある
「ampro003.c」にプロトタイプしか宣言しとらんですね。
実際に処理ば書いた(実装したて言う)とは「amlib003.c」で書いとるです。

だけん、コンパイルしたら最終的に「amlib003.c」のhelloworkば見つけて
呼び出せるごつしてexeのでくっとです。

だけん、色々関数ば別のソースファイルに書いて、そん関数ば
他のプログラムでも使えるもでくっとです。
そぎゃん感じで関数ば集めて再利用でくるごつしたとばライブラリって
言うたりします。

ばってんが、putsとかはどこにも実装ば書いてなかですよね?
実はこんputsはC言語のコンパイラに付属しとる標準ライブラリっていう
ライブラリの中にある関数のひとつで、自動的に実装された部分のふっついてくるとです。
だけん、コンパイルしたらそん関数の実装部分ば見つけてきてからexeの出来あがっとですね。

標準ライブラリば使わんで画面に文字ば表示するにはものすごめんどくさかけんやっとれんとです。
だけん、そげんよー使うごたっとば標準ライブラリにしてコンパイラとセットにしてあっとですね。
標準ライブラリは「こういう名前の関数で引数はこうで、戻り値はこうでこういう結果を返す」
っていうとが決められとるけんが、コンパイラとか環境の変わっても標準ライブラリの関数なら
同じごつ書いておなじごたる結果の得られるとです。

だけん、標準ライブラリ自体は別にC言語の機能じゃなかっですよ。
他の言語は文字ば出力する機能の言語自体についとったりする場合のあるばってんが
C言語だけでは画面に文字ば出力するとか、ファイルば操作するっていう機能はもっとらんとです。
そげん機能ばC言語だけで作るとは、やおいかんばってが標準ライブラリの関数ば使えば
簡単に操作でくるごつなるとです。

じゃばってんがですよ、プロトタイプば書かんばいきなり関数ば書いたっちゃ
コンパイラはわかってくれんとです。
いきなり何の宣言もなか関数ば使うとば許してくれんけんです。

なんかこんgccはプロトタイプ宣言なかったっちゃ標準関数は
いきなり関数書いてもコンパイル通るごたんね・・・
ほ、本当ならつまらんはずです!!(そぎゃんふうにして話ば進めます)

で、いっちょいっちょ標準関数のプロトタイプば書くとのめんどくさかですよね?
そこで、そぎゃん標準関数のプロトタイプ宣言ば一気にしてしまう方法のあっとです。
次んごつプログラム書いてください。
#include <stdio.h>

int main(void)
{
puts("Hello,Work天草");
return 0;
}
ソースの名前は「ampro004.c」でよかです。

ここで見慣れんとのまた出てきたですね。

#include <stdio.h>
こりゃ何かっていうと、
stdio.hっていうファイルん中身ばコンパイルすっときにここに展開せろ」
っていう意味です。
こん.hの拡張子のファイルは何かって言えば、ヘッダーファイルっていうて、
関数のプロトタイプとか定数とか色々書いてあるファイルです。
だけん、コンパイルん時にここに書いてある内容の展開されるけん
わざわざ自分で関数のプロトタイプば書かんでよかっです。
putsのプロトタイプもこん中で宣言してあるはずです。

興味んあるならMinGWばインストールしたフォルダん中ば探してみてください。
「stdio.h」っていうファイルのどっかにあるですよ。
同じ名前んとの何個かあるかもしれんばってが、そんうちんどれかが展開さるるはずです。
テキストエディタで開けばプロトタイプとかの宣言のよんにゅ書いてあるです。
そんかわり間違ってもファイルは修正せんごつしてください!
勝手に修正したらおかしくなる可能性のあるけんですね。
そこにあるファイルは絶対に変更したらつまらんファイルです。

ちなみにstdioは「標準入出力」の「Standard Input/Output」を略して
「stdio」になっとるんじゃなかろうかって思います。
他にも文字列操作用の関数の宣言されとるstring.hや時間関連の操作のできるtime.h
とか、色々ありますばってんが、それはまた順次紹介していくごてします。

さて、これで晴れて入門書の最初に書かれとるであろう所に立ちました。
入門では最初、こん#include <stdio.h>おまじないとか紹介してある場合も
あったりすっとですが、そぎゃんわけあるかいwwwって思った事のあったもんで、
わざわざぎゃん回りくどくちっとずつ説明ばしたとです。

これからは標準ライブラリば使ってプログラムば書いて行きます
(標準ライブラリんなからんば始まらんけん)

ちなみにHello,Work天草って表示するampro004のプログラムはDOSプログラムばってんが
Windowsプログラムとして書けばぎゃん感じでしょうかね。
(これもC言語ですばい)
#include <windows.h>
#include <tchar.h>

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,
LPTSTR lpCmdLine, int nShowCmd)
{
MessageBox(NULL, TEXT("Hello,Work天草"),
TEXT("雇用促進祈願"), MB_OK);
return 0;
}
プログラムは「amwin01.c」にしてみました。

コンパイルするには-mwindowsっていうオプションばつけんばんです。
ampro003-02

実行したらぎゃんメッセージの出ます。
ampro003-03


全然標準関数ば使っとらんですね?ていうか最初はわけくちゃわからんですよね?
C言語でWindowsプログラミングする場合はWindowsAPIっていうとば使います。
そん基本的なヘッダがwindows.hです。
また、main関数じゃなくてWinMain関数(_tWinMain)から始まります。
ここではMessageBox関数がWindowsAPIになるですね。

C言語によるWindowsAPIプログラミングは最初にとっかかるには敷居が高すぎだけん
まずは、地味にコンソールプログラミング(今しよるやつです)からしたがよかです。

もっと手軽にWindowsプログラム作りたかならC#とかVB.netとかいろいろあるけん
そっちば選んだ方が幸せになれるて思うです。
それらはめんどくさかWindowsAPIば覆い隠してくるっけんC言語に比べれば
非常に生産性のよかです。

おまけとして他の言語で「Hello,Work天草」ば出す場合ば書いてみました。
ぎゃん感じでしょうかね?

Perl
#!/usr/bin/perl
print "Hello,Work天草\n";
exit;

PHP
<?php
        echo "Hello,Work天草\n";
?>

Java
class Hello{
public static void main(String args[]){
System.out.println("Hello,Work天草");
}
}

Javascript
<html><head></head><body>
<script type="text/javascript">
<!--
document.open();
document.write("Hello,Work天草");
document.close();
// -->
</script>
</body></html>

色々と言語はあるばってんが、書き方の違うでしょ?

ばってんが、見てんとおり、文法自体はC言語に近かとです。
多くの言語はC言語の文法ば基本にしとるこつの多かけん
C言語ば覚えとくと他ん言語も覚えやすかて思います。
文法だけじゃなくてポインタの概念も知っとるとと知らんとじゃ
全然違うけんですね。(ポインタについてはまだ先で説明ばします)

今回で5回目で、毎回説明のわかりづらかて思うばってんが、
わからん部分は質問ばしてくれろばわかる範囲で答えるけんですね。
わからんともググッて調べてみます。(わが勉強にもなるし)

そんならば、今回はこの辺で。
キーワード: #AmaProgramming
コメント(0件)

 

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