こんにちは､ そしてお帰りなさい｡
この講義では､ コマンドライン引数についてお話したいと思います｡
この情報を変数とデータ型のセクションに記載したのは､
コマンドライン引数がプログラムにデータを渡す手段だからです｡
つまり､ プログラムの中に変数を渡すようなものです｡
これはとても便利で､ 皆さんもよくやっていることなので､ 簡単に説明したいと思います｡
だから､ コマンドライン引数｡
基本的に､ ユーザーが端末で少量の情報を入力するようなプログラムを開発する場合があります｡
つまり､ この言葉通り､ コマンドライン引数は基本的にプログラム引数なのです｡
プログラムへのデータの渡し方です｡
そのため､ ユーザーやプログラムが動的なデータを必要とする場合､ ユーザーが入力したデータを､
さまざまな方法で渡すことができるのです｡
ユーザーに求めるか､ プログラムとして渡すかのどちらかです｡
なぜこのようなことをしたいかというと､ 計算させたい三角形の数字をユーザーが入力する必要があったり､
辞書で調べたい単語をユーザーが入力しなければならなかったりするからです｡
すべてのデータが静的で､ 変化しないわけではありません｡
ユーザーに入力してもらう必要があるデータもあります｡
このように､ 2つの方法があります｡
ユーザーからデータを要求することもできますし､
プログラムが実行されるときに情報を提供することもできます｡
そして､ これがコマンドライン引数と呼ばれるものです｡
プログラム実行時にコマンドライン経由でデータを渡すこと｡
そして､ すべてのcプログラムにはmain関数があることをすでに知っているわけです｡
これは特殊な関数で､ 基本的にはプログラムのエントリポイントになります｡
また､ コマンドライン引数の取得にも使えるので特殊です｡
そのため､ ランタイムシステムからmainが呼び出されたとき､ 実際にはこの関数に2つの引数､
コマンドライン引数が渡されることになる｡
2つの引数は､ 最初のものが引数カウントです｡
プログラムに渡されるデータの量｡
整数値である｡
コマンドラインで入力された引数の数を指定するものである｡
第2引数の引数ベクトルはarg vで表され､
文字ポインタの配列である｡
さて､ 「配列とは何ぞや」と思われるかもしれません｡
アレイが何であるかはまだわからない｡
しかし､ 繰り返しになりますが､ コマンドライン引数の渡し方を理解しておくことは重要です｡
とりあえず配列は多くの異なる変数と思えばいいのです｡
つまり､ 第一引数のargは引数のcount第二引数はvectorです｡
引数は､ 関数にデータを渡す方法であることを忘れないでください｡
それだけなんです｡ 実際にはそれほど複雑でもないので､
メイン関数にいくつかのデータを渡すことができます｡
プログラムを実行するときに､ そのデータをコマンドラインで指定することができます｡
プログラムを実行するときは､ 実行ファイルであればダブルクリック､ LinuxやWindowsであればドットスラッシュとドットアウトで実行することを覚えておいてください｡
まあ､ そうすると､ 実はプログラムの後にいろいろとパスを入れることができるんです｡
だから､ プログラムとも言える｡ exeの後にパラメータを､
その後にデータを入れてください｡
そして､ その方法を紹介します｡
配列の最初のエントリは実行中のプログラム名へのポインタ､
そしてそれ以降はすべて引数となります｡
例えば､ これはmain関数で､ 2つの引数､
つまり2つのパラメータを持っています｡
パラメータと引数の違いについてもお話します｡
でも､ int argsieと書いてあって､ charと書いてあって､ star asterisk
arg vと書いてあるでしょ｡
繰り返しになりますが､ 基本的にカンマの後ろはすべてプログラムに渡すデータなので､
気にしないでください｡
そして､ arg cはデータの番号になる｡
では､ これを学ぶのに最適な例を挙げてみましょう｡
では､ その例をご紹介しましょう｡
コマンドラインからプログラムにデータを渡す場合､ mainにパラメータを持たせる必要があります｡
ここまで､ mainは空白の括弧が2つあるだけの状態でした｡
だから､ まず最初にしなければならないのは､ arg cと言わなければならないだけです｡
実際にはどんな名前でも良いのですが､ arg cは引数カウントを表します｡
そして､ char star arg v.
そしてまた､ この構文については､ とりあえず気にしないでください｡
でも､ まずはこの2つを追加する必要があります｡
そして､ ここでいくつかの変数を作成して､ データが渡されることを示します｡
だから､ データが渡されるから､ どこかに保存しておく必要があるんだ｡
そこで､ 引数の数だけint型の変数を作ることにします｡
そして､ これがarg cと等しくなるようにするのです｡
Arg cはちょうど渡される変数で､ これが何を表しているのかを紹介します｡
引数を表す変数をもう一つ作り､
これはarg v zeroと等しくなるようにします｡
ここでも､ arg v zeroの構文は気にしないでください｡
このコードが13行目で行っているのは､ 引数1の変数にプログラム名を設定することです｡
そしてもう1つ､ キャラクタースター引数2と言い､ これをarg
v sub 1に等しく設定するのです｡
そして､ このデータをプリントアウトするだけです｡
つまり､ 引数の数をプリントアウトすると言って､ 値の変数をプリントアウトしたいので､
このフォーマット指定を使わなければならないのです｡
パーセントdとする｡
そして､ カンマの後に､ 引数の数と書いています｡
これは､ 表示したい変数だからです｡
そして､ 引数1を出力するprint文がもう一つあります｡
そして､ これが番組名を表すことになる｡
また､ パーセント記号があるので､ パーセントsとします｡
これは､ この時点では理解する必要のない文字列です｡
コード例を示すときに､ 変数の値を出力したいことがよくあります｡
16と17のprintf文は､ mainに渡された変数の値を出力しています｡
そして､ 最後に表示したいのは､ プログラム名に加えて､
2番目の引数､ これはコマンドラインの引数です｡
これが､ 今回表示する引数2になります｡
そして､ 0を返すことにしています｡
ですから､ 多くの機能を持たないという点では､ 非常にシンプルなプログラムです｡
基本的には渡された関数からデータを取得し､ そのデータを表示するだけです｡
だから､ プログラムにデータを渡すことができると言ったとき｡
繰り返しますが､ このプログラムを実行するときは､ メニューのオプションをダブルクリックしているだけであることを忘れないでください｡
しかし､ 実際には､ ダブルクリックやexeの実行､ Linuxやunixではドットアウトでコマンドを実行しているのです｡
それで､ プログラムを実行するときに､ 実際にデータを渡すことができるのです｡
つまり､ 実際にコマンドを実行するのではなく､ メニューを行うので､ 統合開発環境経由でデータを渡す必要があるのです｡
そして幸運なことに､ コードブロックはそれを実現する素晴らしい方法を備えています｡
プログラムへのコマンドライン引数としてデータを渡すには､
プロジェクトをハイライトして､ メニューからプロジェクト､ そしてプログラム引数の設定に進むだけでよい｡
そして､ ここにウィンドウが表示されるので､ 基本的には自分の主張を述べればよいのです｡
そして､ ここに好きなだけ入れることができる｡
始めましょう｡
ジェイソンの名前を印刷するだけです｡
その引数のデータを､ プログラム実行時にプログラムに渡すんだ｡
そして､ オーケーと言うつもりです｡
では､ これをコンパイルしてきます｡
そして､ 実行すると､ 引数の数の値はどうなると思いますか？
さて､ 引数は1つで､ プログラム名と､
Jasonを渡していることを思い出してください｡
引数1がプログラム名になっているので､ これがプログラム名になっているはずなのですが､
どんな名前にしたかは覚えていません｡
そうすると､ 引数2は､ 私が渡しているものなので､ ジェイソンのはずです｡
では､ 実行するとどうなるか見てみましょう｡ 実行と言うと､ 引数の数が2つであることがわかるでしょう｡
引数1がプログラム名で､ 改行がないので非常に読みにくいフォーマットです｡
では､ これをやり直し､ 実際に新しい行を追加してみましょう｡
印刷する行を新たに追加するにはどうしたらよいですか｡
バックスラッシュnというエスケープシーケンスを使えばいいんです｡
そこで､ 最初のprint文のパーセントdの後にバックスラッシュnを付け､
次のprint文の後にもバックスラッシュnを付けることにしよう｡
だから､ 出力としてより読みやすくなっています｡
そして､ それを保存して､ もう一度ビルドし､ 実行して､ 今度はどんな出力が出るか見てみましょう｡
読みやすくなることを期待します｡
これで実行すると､ 行が分かれて読みやすくなるのがわかると思います｡
引数の数は2個と表示されます｡ 第1引数がプログラム名で､
第2引数が私が渡したものだからです｡
そして､ 引数1には､ 実際に私のディレクトリ構造全体と､ それからtestというプログラム名が表示されます｡
エクセレント
そして､ 引数2がJasonなのは､ IDに設定したものだからです｡
ここで､ プロジェクトメニューのオプションから､
project go to set program arguments と言えば､ プログラムの引数を変更することができます｡
さて､ これを変更するとき､ 他のものに変更する場合､ または私が何かを言う場合｡
このプログラムを実行すると､ プログラムに渡されるデータは何か違うものになるはずです｡
今はただ表示されているだけのものです｡
そして､ これはユーザーから特にデータを要求されることなく､ プログラムにデータを渡すことができる方法なのです｡
IDEで入力して､ プログラムに渡すだけです｡
そして､ 多くの多くの引数を渡すことができます｡
あれをパスすればいいというわけではないのです｡
もしもっと渡したい場合は､ もう一度set program
argumentsに移動して､ 新しい行で区切ってください｡ もちろん､ それらを使いたい場合は､ 配列でアクセスしなければなりませんが､
たくさん渡すことができます｡
そのため､ ユーザーにキーボードで何かを入力させることなく､ プログラムにデータを渡すのに便利です｡
この方法でやらないと､ プログラムが一時停止して､ "Hey user please enter
something. "と表示されるんです｡
そして､ ユーザーが何かを入力したら､ それを変数に保存して､
実行を継続しなければならない｡
この方法では､ ユーザーに何も尋ねる必要はなく､ プログラムの一部として渡すだけでよいのです｡
コマンドライン引数とはこういうものなんですね｡
配列のような他の概念については､ ポインタのアスタリスクが見えますが､
気にしないでください｡
繰り返しになりますが､ これはコマンドラインの引数を表示しているだけです｡
そして､ これらのパラメータにアクセスする方法は､ 関数内のこれらのパラメータを使用することです｡
しかし､ 繰り返しになりますが､ 要はこういうことなのです｡
そして､ それは他のプログラムにも役立つもので､ 変数と関連付けられています｡
ありがとうございます｡