#highlight() #mathjax [[C.S.R. Wiki トップページ]] #markdown{{ 一部Wikiの仕様により全角文字を使っていますが、プログラムはすべて半角文字で書いてください # ステートメント プログラミング言語における処理の最小単位を文といいます。 文は単体で意味をなし実行することができます。 文には以下の様なものがあります。 形式|説明 ----|---- 型 変数名\(=初期値\); |変数宣言 式; |式実行 if (条件式) else |if文(条件分岐) switch(値){} |switch文(条件分岐) while (条件式) |while文(ループ) do while (条件式) |do while文(ループ) for (初期化式; 条件式; 更新式)|for文(ループ) continue; |ループスキップ break; |ループ中断 return 式; |return文 ## 複文 文は複数にまとめることができます。これを複文といいます。 複文は文を{}で囲むことで作ることができます。 #### 演習1 複文 LinqPadのLanguageをC#Stetment(s)にしておきましょう。 以下の文字を入力し実行しましょう。 ``` { int a=10; a.Dump(); } ``` ### スコープ 変数にはその変数が有効な期間が設定されています。 この変数が有効である範囲をスコープといいます。 スコープは宣言した複文中です。 #### 演習2 スコープ LinqPadのLanguageをC#Stetment(s)にしておきましょう。 以下の文字を入力し実行しましょう。 ``` int a=10; { a.Dump(); } ``` 以下の文字を入力し実行しましょう。 ``` { int a=10; } a.Dump(); ``` エラーコード(CSXXXXとなっているところです)を検索してみましょう。 以下の文字を入力し実行しましょう。 ``` int a=10; { { a.Dump(); } } ``` ##条件分岐 ### if文 ある条件が真つまりtrueか偽つまりfalseかで処理を分岐します if文は以下のとおりです ``` if(条件式) 条件式がtrueの時の文 else 条件がfalseの時の文 ``` elseは省略することができます。 #### 演習3 if文 LinqPadのLanguageをC#Stetment(s)にしておきましょう。 以下の文字を入力し実行しましょう。 また条件を変えてみましょう。 ``` int a = 10; int b = 20; if(a<b) a.Dump(); b.Dump(); ``` 以下の文字を入力し実行しましょう。 また条件を変えてみましょう。 ``` int a = 10; int b = 20; if(a<b) { a.Dump(); b.Dump(); } ``` 以下の文字を入力し実行しましょう。 また条件を変えてみましょう。 ``` int a = 10; int b = 20; if(a<b) { a.Dump(); } else { b.Dump(); } ``` 以下の文字を入力し実行しましょう。 また条件を変えてみましょう。 ``` int a = 10; int b = 20; int c = 30; if(a<b) a.Dump(); else if(b<c) b.Dump(); else c.Dump(); ``` ### switch文 特殊なケースとしてある式の結果の値で処理をたくさん分けたいときがあります。その場合swichを使います。 switch(条件) { case 値1: 条件式が値1になった時の処理。 break; case 値2 条件式が値1になった時の処理。 break; default: すべての条件に合わなかった時の処理。 break; } #### 演習4 swich文 LinqPadのLanguageをC#Stetment(s)にしておきましょう。 以下の文字を入力し実行しましょう。 またaを変えてみましょう。 ``` int a = 10; swich(a) { case 10: 10.Dump(); break; case 20: case 30: 20.Dump(); break; default: a.Dump; break; } ``` ##繰り返し 条件式が真のときのみ指定された文を実行します。 ### while文 while構文は while(条件式) { 繰り返す処理 } または do { 繰り返す処理 }while(条件式); do while文は一度処理をしてから条件を評価します。 #### 演習5 while文 LinqPadのLanguageをC#Stetment(s)にしておきましょう。 以下の文字を入力し実行しましょう。 また条件を変えてみましょう。 ``` int a = 10; while(a<20) { a.Dump(); a++; } ``` 以下の文字を入力し実行しましょう。 また条件を変えてみましょう。 ``` int a = 10; do { a.Dump(); a++; } while(a<1) ``` ### for文 for(初期化式;条件式;更新式) { 繰り返す処理 } 初期化式とはfor構文の最初に必ず実行される式です。更新式は繰り返す処理が終わるたびに実行される式です。 通常は初期化式で変数を初期化して、更新式で変数を変更します。 #### 演習6 for文 LinqPadのLanguageをC#Stetment(s)にしておきましょう。 以下の文字を入力し実行しましょう。 また条件を変えてみましょう。 ``` for(int a=0;a<10;a++) { a.Dump(); } ``` ### continue break文 繰り返し処理の中にcontinue;と書くとそのループを中断し次のループに移ります。 break;と書くと繰り返しを中止します。 #### 演習7 continue break文 LinqPadのLanguageをC#Stetment(s)にしておきましょう。 以下の文字を入力し実行しましょう。 また条件を変えてみましょう。 ``` for(int a=0;a<10;a++) { if(a==5) { continue; } a.Dump(); } ``` 以下の文字を入力し実行しましょう。 また条件を変えてみましょう。 ``` for(int a=0;a<10;a++) { if(a==5) { break; } a.Dump(); } ``` これらの文は処理する内容を文で指定しますが間違いを防ぐため複文にするのが普通です。 例えば ``` if(false) 10.Dump(); 20.Dump(); ``` としたとき実行されるのは20.Dump();のみです。このような間違いを防ぐため ``` if(true) { 10.Dump(); } 20.Dump(); ``` とどこがifにかかっているのかを分かりやすくしましょう。 # 関数 プログラムを書いていると同じ処理を別々の場所で何度も書いたり、一つの塊としたい時があります。 この要望にこたえる機能が関数です。 関数は以下のように宣言します。 ``` 戻り値の型 関数名(引数リスト) { 関数の処理 } ``` 引数リストには関数に与えたいデータの型と名前を変数宣言のように並べ,で区切って指定します。 戻り値とは関数が最終的に返す値です。 ``` return 式; ``` のようにして式の結果が返されます。もし返す値がない場合、戻り値の型をvoidにしてreturn;とするか 省略します。 関数を使うには以下のようにします。 ``` 関数名(引数リスト); ``` #### 演習7 continue break文 LinqPadのLanguageをC#Programにしておきましょう。 以下の文字を入力し実行しましょう。 ``` void Main() { f(); } void f() { 10.Dump(); } ``` 以下の文字を入力し実行しましょう。 ``` void Main() { f().Dump(); } void f() int f() { return 10; } ``` 以下の文字を入力し実行しましょう。 ``` void Main() { f(10,20); } void f(int a,int b) { (a+b).Dump(); } ``` 以下の文字を入力し実行しましょう。 また条件を変えてみましょう。 ``` void Main() { f(10,20); } void f(int a,int b) { if(a<b) { a.Dump(); return; } b.Dump(); } ``` }}