Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第06回 C++講座 ~関数と文字列~

第06回 C++講座 ~関数と文字列~

北海道科学大学 電子計算機研究部のソフトチームで行っているC++講座の資料です。
電算部Webページ URL:http://densan.info/index.php
旧Webページ URL:http://www1.hus.ac.jp/~densan/index.htm
--------------------------------------------------
ここから資料内のURLやプログラム等
--------------------------------------------------

More Decks by 北海道科学大学 電子計算機研究部

Other Decks in Programming

Transcript

  1. 目次 ▶ 関数 ▶ 関数とは? ▶ 関数の作成と使用 ▶ 例題 ▶

    プロトタイプ宣言 ▶ キャスト ▶ 文字・文字列 ▶ 文字とは・文字列とは? ▶ string型での文字演算 ▶ 文字列の便利な使用法 3
  2. 関数 ~関数の作り方~ 右図のように記述することで関数を 作成することができます。 戻り値の型:関数が返却する値の型 関数名:関数の名前、自由につけてよい。 基本的に、一意な名前でなくてはいけない。 引数:関数に渡す値が代入される変数を宣言 する。「,」で区切ることで複数宣言することがで きる。(宣言された変数を仮引数という)

    関数の処理:自由に記述してよい。 return:実行元へ戻り値を返却する文。ここで 関数内の処理は終了する。 関数の書き方 戻り値の型 関数名(型 引数,型 引数 ・・・){ 関数の処理; return 戻り値; } 例:二つの数の加算を行う関数 int Add(int a,int b) { int c = a + b; return c; } 5
  3. 関数の書呼び出し方 関数名(引数,引数・・・); ※引数には、値もしくは変数が使用できます。 例:二つの数の加算を行う関数 int Add(int a,int b) { int

    c = a + b; return c; } void main() { int answer; answer = Add(1, 2); cout << answer << endl; } 関数 ~関数の呼び出し~ 右図のように記述することで関数を 呼び出し使用することができます。 関数名:呼び出したい関数の名前。 戻り値がある場合は、計算に使用することもで きる。 引数:関数に渡す値。 値を直接書くことや、変数を書いておくことが できる。 ※関数を呼び出す場合、呼び出す箇所より上 の行で関数が宣言(作成)されていなければな らない。 6
  4. 関数 ~実際に使ってみよう~ 実際にプログラムを記述して確認し てみましょう。 入力した値の合計値が表示されれ ば正しくかけています。 また、Add関数をmain関数の後に 記述してみて動かないことを確認し ましょう。 01function.cpp

    #include <iostream> using namespace std; int Add(int a, int b) { return a + b; } int main(){ int in1 = 0; int in2 = 0; cout << "二つの整数を入力してください >" << endl; cin >> in1 >> in2; cout << Add(in1,in2) << endl; return 0; } 7
  5. 関数の書き方 戻り値の型 関数名(型 引数,型 引数 ・・・); 例:二つの数の加算を行う関数 int Add(int a,int

    b);//プロトタイプ宣言 void main() { int answer; answer = Add(1, 2); cout << answer << endl; } int Add(int a,int b) { int c = a + b; return c; } 関数 ~関数のプロトタイプ宣言~ 関数を宣言(定義)することによって、 呼び出す関数より後に呼び出される 関数を記述することが可能になりま す。 関数を宣言することをプロトタイプ宣 言(関数のプロトタイプ)と呼びます。 右図のように記述することでプロトタ イプ宣言ができます。 8
  6. 文字列 ~stringとは~ stringとは文字列を扱いやすくした型で、「#include <string>」と記述した後 に、以下のような文法に従った記述をすることで使用できる また、以下のような記述によって便利な機能を使用することができる。 文字列の宣言方法 string 変数名; 例:string

    str[20]; 文字列の初期化方法 string 変数名="変数に入れたい文字列 "; 例:string str[]="aiueo"; 指定番目の文字の参照 (配列と同様に使える ) 変数名[番号] 例:aが出力される string str="aiueo"; cout << str[0] << endl; 文字列の結合 文字列+文字列 例:aiueoが出力される string str="aiu"; str=str+"eo"; cout << str.c_str() << endl; char型文字列への変換 変数名.c_str() 文字列の長さの取得 変数名.length() 11
  7. 文字列 ~実際に使ってみよう~ 実際にプログラムを記述して確認し てみましょう。 何となくstringを理解できたでしょう か? 02string.cpp #include <iostream> #include

    <string.h> using namespace std; int main() { string str = "あいうえお"; cout << "初期化 :" << str.c_str() << endl; str = "aiueo"; cout << "代入 :" << str.c_str() << endl; cout << "指定番号(3番目)の文字参照 :" << str[2] << endl; str[2] = '_'; cout << "指定番号(3番目)の文字参照(代入):" << str.c_str() << endl; str += "12345"; cout << "結合 :" << str.c_str() << endl; cout << "長さの取得 :" << str.length() << endl; return 0; } 12
  8. 文字列 ~実際に作ってみよう回答~ ex01string.cpp #include <iostream> #include <string> using namespace std;

    int main() { string str; string input1; string input2; cout << "文字列を二つ入力してください。 " << endl; cin >> input1 >> input2; str = input1 + input2; for (int i = 0; i < str.length(); i++) { if (str[i] == 'A')str[i] = '_'; } cout << str << endl; return 0; } 14
  9. 文字列 ~実際に使ってみよう~ 実際にプログラムを記述して確認し てみましょう。 何となく#defineを理解できたでしょ うか? 02string.cpp #include <iostream> using

    namespace std; #define NUMBER_FIBO 16 int main() { int i; int nFibo[NUMBER_FIBO] = { 1, 1 }; for (i = 0; i < NUMBER_FIBO - 2; i++) nFibo[i + 2] = nFibo[i] + nFibo[i + 1]; cout << "フィボナッチ数列の最初の " << NUMBER_FIBO << " 桁は、" << endl; for (i = 0; i < NUMBER_FIBO - 1; i++) cout << nFibo[i] << ", "; cout << nFibo[i] << " です。" << endl; return 0; } 18
  10. まとめ ❏ 関数: ❏ 処理をまとめたもの。 ❏ 引数を渡し計算を行い戻り値が帰ってくる。 ❏ 文字列: ❏

    string型を使用して記述する。 ❏ #include <string>を行うことで使用できる。 ❏ キャスト:データ型を変換できる。 ❏ マクロ: ❏ #includeでインクルード(ファイルの埋め込み) ❏ #defineで文字の置換 19