6月19日(月)のまとめ

参加者リスト

内容

  • SITの人がノート持ってきてくれたので、BCC32インストール
  • 第1回C/C++勉強会
    • 活動場所のマシンSITの人のノートで二台体制
    • Hello World打ち込み
    • 教えたがりのいがらしがぐだぐだに授業
      • 次はも少し準備が必要……
    • やった内容
      • ソースを書いてコンパイルする事
      • coutでHello World
      • 関数の定義と呼び出し
      • char型、int型、string型の宣言と利用
      • 標準入出力とパイプ、リダイレクト(cinとcout)
    • 次回への課題
      • コマンドラインのとっつき辛さをどうにかする
  • 終わってから椎木町「シェフ」で晩飯
  • KaNPa.邸にて2次会
    • ザボーガーとかダイバスターとか

第1回C/C++勉強会・復習と補足(書きかけ)

  • 基本的に、分からないことも「その内分かるだろう」で済ますのが吉。
  • プログラムの読み書きができるようになるのが目標であって、言語はあくまで手段(ある程度分かればいい)
  • 手元の開発環境でトライ&エラーを繰り返すのが遠回りなようで近道

hello1.cpp

#include <iostream>

using namespace std;

int main(void)
{
    cout << "Hello World!" << endl;
    return 0;
}
  • 1行目の#include行は「おまじない」。3行目のusing namespace行と合わせて、コード中でcout、cinを使うために必要。試しに削除してコンパイルしようとすると、エラーメッセージでなんとなく分かるかもしれない。
  • C/C++では空白文字(スペース、タブ、改行)は単語を区切る意味しか持たない。2行目4行目の空行や7行目8行目の字下げは見栄えのためだけにある。#で始まる行以外の改行は、全部詰めてもいい(1行にどべっと書いてもいい)。単語の区切りさえ残せば他のスペースやタブもいらない。
  • 5〜9行を「main関数の定義」と呼ぶ。特に5行目は決まり文句。main関数定義の書き出しはこの5行目の形と、
    int main(int argc, char *argv[])
    の2通りしかない。「決まり文句」に続く中括弧「{」(6行目)と「}」(9行目)の間にmain関数が行う処理を書く
    • 基本的に、全てのC/C++プログラムはmain関数から始まる。C/C++でプログラムを作るというのは、main関数から始まる処理を作成し、完結させるということ。
  • 「cout << "ダブルクォートされた文字列"」でcout(標準出力:プログラムの出口)に文字列をぶち込む。更に「<< endl」で改行文字(コンピュータでは改行も文字と同列)をぶち込む(end lineを縮めてendl)。
  • セミコロン「;」は文(C/C++コードの1まとまり)の終わりを表す
  • 「return 0」はmain関数の正常終了を、main関数の呼び出し元(プログラムの実行元:OSとか)へ知らせる。

19.cpp

#include <iostream>

using namespace std;

int main(void)
{
    cout << "財布の中には" << 19 << "円" << endl;
    return 0;
}
  • 5行目「19」がダブルクォートされていないのに注意。これは「19」が文字列でなく数値として扱われるということ。C/C++で文字列と数値は明確に区別されるが、coutはどちらをぶち込まれても期待通り動作する。これは後でcoutに変数をぶち込むのを読む際、いくらか理解を助ける。

hello2.cpp

#include <iostream>

using namespace std;

int say_hello(void)
{
    cout << "Hello World!" << endl;
    return 0;
}

int main(void)
{
    say_hello();
    return 0;
}
  • 5〜9行目をsay_hello関数の定義と呼び、13行目の「say_hello()」をsay_hello関数の呼び出しという。
    • プログラムの処理は11行目のmain関数から始まり、13行目にsay_hello関数が呼ばれた時点で5行目からのsay_hello関数内へ処理が移る。
    • 関数の名前は「say_hello」じゃなくてもいい。使える文字は半角英数字と半角アンダースコア「_」。最初の1文字はアルファベットでなければならない。アルファベットの大文字と小文字は区別され、例えば「say_hello」と定義したものを「Say_Hello」で呼び出すことはできない。

hello3.cpp

#include <iostream>

using namespace std;

int say_hello(string s)
{
    int i;

    cout << "Hello " << s << "!" << endl;
    cout << "なんか数字クレクレ" << endl;
    cin >> i;
    return i;
}

int main(void)
{
    char c;
    int i;
    string s;

    cout << "なんか1文字入力して" << endl;
    cin >> c;
    cout << "入力されたのは" << c << "だよーん。" << endl;

    cout << "名前おせーてちょ" << endl;
    cin >> s;
    i = say_hello(s);
    cout << "入力されたのは" << i << "だよーん。" << endl;

    return 0;
}
  • 変数とはデータの入れ物のこと
    • 「char c」で「cという文字の入れ物を使う」という意味
    • 「int i」で「iという整数の入れ物を使う」という意味
    • 「string s」で「sという文字列の入れ物を使う」という意味
    • charを文字型、intを整数型、stringを文字列型と呼ぶ
      • それぞれの型は決まった種類のデータを保持する。例えば整数型intに文字列を入れようとしてはいけない
      • 他にも色々な型があるが、おいおい説明する
    • 変数の名前は関数の名前と同様、英数字とアンダースコアを使ってある程度自由に作れる
    • 関数冒頭にある「型名 変数名;」という並びを変数の宣言と呼ぶ
      • 変数は最初に宣言しないと使えない
      • 関数内で宣言された変数は、同じ関数の中でのみ有効。例えばsay_hello関数内にあるiの中身を変更しても、main関数内のiの中身は変わらない
  • 「cin >> 変数」で変数へデータを入力するという意味
    • cin(標準入力:プログラムへのデータの入り口)は普段キーボードと結びついている
  • 「変数=データ」で変数に指定したデータを入れるという意味
    • この「=」が行う操作を変数への代入という
  • say_hello関数の定義が
    int say_hello(string s)
    となっており、括弧の中がvoidでないのに注意
    • このstring sは変数宣言の一種で、呼び出し元から初期値が与えられる
      • つまり、関数がこのように定義された場合、呼び出し元はf(x)という形で適切な型の引数(パラメータ)を与えなければならない。(main関数がsay_hello(s)として呼んでいるように)
      • このコードで言うと、main関数の
        cin >> s;
        によってsへ入力された文字列は、say_hello関数が呼び出された時点でsay_hello関数内のsに入っているということ。このコードでは両方とも変数sという名前だが、これは偶然そうなってるだけで特別意味はない。それぞれの関数で違う変数名を使ってもいい。
    • これまで使っていたvoidは、「この関数は引数を取らない(引数なしで呼び出せる)」という意味


トップ   編集 凍結 ページの変更点 バックアップ 添付 複製 名前変更 リロード   新規 ページ一覧 単語検索 最近更新されたページ   ヘルプ   最終更新のRSS
Last-modified: 2006-06-23 (金) 00:29:02 (4437d)