Relative Content

Monthly Archives: June 2016

4.3 for文

  for文構文 定められた回数だけ反復制御を行います。 for (初期化式; 継続条件式; 後始末) { 文; } 再初期化式の後に「;」は入れてはいけない。 例題: #include <stdio.h> int main(void) { int i; for (i = 1;i <= 10;i++) { printf(“%02d 回目\n”,i); } return 0; }   for文とwhile文の交換性 一般的にfor文は「指定した回数分だけ処理を繰り返す」、while文は「指定した条件を満たすまで処理を繰り返す」と言う意味で、for文とwhile文は似ているようで定義されている意味は違います。 while文は、for文の条件式だけと同じです。 逆に言えば、for文はwhile文を拡張した文だと言えるでしょう。 実は、この2つは、同じような使い方をすることが可能です。 while文をfor文のように使う場合、次のようにします。 初期化式; while (継続条件式) {   繰り返す文;   後始末; } for文をwhile文のように使う場合、次のようにします。 for (;継続条件式;) {   繰り返す文; } 演習  演習4-12 (A, Bクラス) […]

8.4 Recursive call

東京魅力PRサークル会員募集中 http://svn.mki.biz/pukiwiki/index.php?u-tokyo 興味があれば、ぜひコメントください。 階乗の計算 皆さんは「階乗の計算」を覚えていますか? 5の階乗なら「5!」と表記し, 5! = 5 × 4 × 3 × 2 × 1 と計算します。つまり答えは120です。 0 の階乗:1 1 の階乗:1 2 の階乗:2 × 1 3 の階乗:3 × 2 × 1 – – – – – – – n の階乗: n × (n – 1) × (n – 2) – – – 3 × […]

C# exercises (a) Web1 WebBrowser

Visual Studio community 2015 アカウントについて (学内専用) 今週から、4回分けてWebについて学習する WebBrowser (基本) WebBrowser (自動操作) HttpClient REST & JSON WebBrowser コントロール WebBrowser コントロールを利用した、シンプルなアプリケーションの作成手順を紹介します。 Visual Studioを起動し、新しいWindows Formプロジェクトを作成します。 WebBrowserコントロールの配置 ツールボックスから”WebBrowser”コントロールをクリックして選択します。選択後フォームデザイナにドラッグ&ドロップしフォームにWebBrowserコントロールを配置します。 フォームにWebBrowserコントロールを配置した直後の状態です。フォームいっぱいにコントロールが配置されます. フォーム全体にコントロールが広がる原因は、”Dock”プロパティがデフォルトで”Fill”に設定されるためです。Dockプロパティを”None”に変更します。 Dockプロパティを”None”に変更するとコントロールのリサイズができるようになります。 コード 下記のコードを記述します。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WebBrowserControl { public partial class FormMain : Form { public […]

4.1 while文

C言語には、全部で3つのループ文が用意されています。 while文、for文、そして、do(デュウ)~while文です。 do~while文構文 do~while文は、一般に、次のような書き方で使用します。 do { 繰り返す文; } while (条件式); do~while文には、1つ大きな利点があります。それは、繰り返し文が、必ず1回は実行されるという点です。入力チェックの時に威力を発揮します。 継続条件式の後の(;)を忘れないよう注意。 円の面積を計算するプログラム。半径入力値が間違っているならば、再入力させる。 int main(void) { int r; double s; do { printf(“半径?:”); scanf(“%d”,&r); } while (r < 0); s = r * r * 3.14; printf(“面積は %f です。\n”,s); return 0; }  演習 ミニクイズ http://lmspress.net/ (登録は : 学籍番号 / 学校e-mailアドレス) 詳しくはLMS Pressとは参照してください。 入力チェックプログラム 下記のプログラムの入力チェックを追加して下さい。 入力値が間違って誤った月を入力された場合、再入力を行ってください。 […]

6.2 関数から値を返す

ある関数が別の関数を呼び出して、呼び出した関数に制御が戻って来た時に、関数によっては値が返ってくるものがあります。 関数から値を返すには、関数の戻り値の他に、ポインタを使って、関数から呼び出し側の領域を書き換えるも可能です。 値を関数戻り値で返す 関数の定義 戻り値の型 関数名(パラメータリスト) { 文 … } 関数の戻り値で返す。 この方法では、常に1つの情報しか返すことが出来ません。 2つ以上の情報を返したい時などは不便です。 値を引数の配列に返す 配列の先頭要素のアドレスを引数にして、上位関数側と下位関数側で配列を共有し、見かけ上、複数のデータを返したようにします。 #include <stdio.h> void waru2(int *p); int main(void) { int i; int dt[] = { 20, 10, 4, 35, 66, 78, -1 }; waru2(dt); /* 配列の先頭要素のアドレスを渡す */ for(i = 0; dt[i] != -1; i++) { printf(“%d “, dt[i]); } printf(“\n”); return […]

C# exercises (9) Puzzle Game3

Visual Studio community 2015 アカウントについて (学内専用) パズルゲームUIの改進 改進点: ピースを順番でセットするではなく、あらかじめランダムにセットして、マウス移動できるようにする ピースをあらかじめランダムにセット initialData の改造 // 変数関係の初期化処理 private void initialData() { flg = new bool[9]; data = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; answer = new int[] { -1, -1, -1, -1, -1, -1, -1, -1, -1 }; Random r = new […]

3.2 switch文

Switch文構文 条件式を判定して多方向分岐を行う。 switch (式) { case 定数: ブロック文 default: デフォルト・ブロック文 } Berak文構文 switch文で、case句の処理を打ち切りブロックを脱出するときに用いる。 ⇒ 説明済み for文、while文などのループから脱出するときに、if文と併用して用いる。 break;   例題 毎月の末日の判断 #include <stdio.h> int main() { int n; printf(“月を入力して下さい –> “); scanf(“%d”, &n); switch(n){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf(“–31日–\n”); break; case 4: case 6: case 9: […]

6.1 関数の呼出

関数の基本 C言語において関数を使うことには、以下のような利点があります。 関数化しておくとそれを1つのブラックボックスとして扱うことができます。 つまり、使用する側が知っておくべきことは、以下の通りです。 入力として、どのような引数を与えるか 出力として、関数がどんな値を返すのか 関数を使ったことによって、どんな副作用があるか 一度、関数として作成しておけば、後で何度でも再利用することができる 関数として各機能をまとめていくと、一般にプログラムが見やすく、デバッグの作業もしやすい 関数の呼び出し #include <stdio.h> void func();   //関数のプロトタイプ宣言 int main() { func();    //関数呼び出し printf(” ここがメイン関数内\n”); return 0; } void func()    //自作関数 { printf(“ここは自作関数内\n”); return;    //「return;」は省略可 }   関数定義 関数の定義 戻り値の型 関数名(パラメータリスト) { 文 … } 関数プロトタイプ宣言 戻り値型 関数名(パラメータリスト); 戻り値の型、関数名、引数のルールは関数を作る際とほとんど同じです。但し、プロトタイプ宣言する行の最後には「;」が必要。 Void Type関数 void型は、今までの数値型や文字型とは異なり、戻り値が無い関数のデータ型のことです。処理の結果を戻す必要が無い場合は、わざわざint型にして「return 0;」としなくても、void型で関数を定義すれば、最後にreturn文を書く必要はありません。   値を返さない return型に用いる 引数が無い場合に用いる 関数へ値を渡す 値 C言語では、関数へ情報を渡す場合、必ず元の変数の値のコピーを渡します。 この様な方法を値渡しと呼び、元の変数の値が変更されないことが特徴です。 「値渡し」, ex : printf() #include <stdio.h> void […]

C# exercises (8) Puzzle Game2

先週できたパズルゲームUIの改進 参考 http://www18.big.or.jp/~neon2/bunkatu/tips9.shtml 改進点: ピースを順番でセットするではなく、あらかじめランダムにセットして、マウス移動できるようにする ピースをあらかじめランダムにセット initialData の改造 PlayBox_Paint の改造 マウス移動できる 勝負判定 経過時間の表示

3.1.1 複合文

C の推奨されるスタイル C言語やJava言語は、中括弧 { } を使ってブロックを記述します。 中括弧だけでなく、ブロックの範囲を字下げ(インデント)して記述します。 ただ、中括弧をどの位置に記述するかによって、コーディング・スタイルの宗教論争が起きています。 主に中括弧の位置の違いなのですが、なぜか字下げスタイルと呼ばれています。 // 中括弧の開始を、文末に記述するスタイルを「K&R スタイル」といいます。 void FuncA() {   if ( … ) {   } } // 中括弧の開始を、文のない行に記述するスタイルを「BSD スタイル」といいます。 void FuncA() {   if ( … )   {   } } // 関数の開始も、文末に記述するスタイルを「Java スタイル」といいます。 void FuncA() {   if ( … ) {   } }   複合文(ブロック) 文の並びを{ }で囲んだものを「複合文」といいます。ブロックとも言います。 複合文は複数の「宣言」と「文」を扱うことができます。 関数の定義に使うブロック { […]