東京工芸大学 工学部 電子機械学科/システム電子情報学科 2年 後期 応用プログラミング 第14回
|
今日の授業は、任意出席ですので、出席点にはカウントしませんが、試験に出す問題と、ほぼ同じ課題を出しますので、しっかりやっておきましょう。
来週の試験では、以下の4問のうち、2問以上ができれば、合格とします。
2問完璧なら、100点。不十分でも一応動作すれば、それに応じた得点とします。
3問以上行えば、その分を累積加算します。
プログラムを独立実行ファイル(exeファイル) にする方法 |
一応の動作が確認できたプログラムは、VisualStudio が無くても、独立して実行できるファイルにすることができます。
次のようにします。
メニューの「ビルド」 を選択
「Project000 のビルド」 を選択
これで、実行ファイル ”Project000.exe" ができているのですが、置かれている場所が、面倒な場所です。
エクスプローラで、次の場所を表示してください。
MyVolume(Z:)
Documents
VisualStudio2008
Projects
Project000 <−作業中のプロジェクト名
Project000 <− もう1段階同じ名前のフォルダがあるので、その下へ下がります。
Obj
Release
ここに、
"Project000.exe"
という名前のファイルがあるはずです。
これをダブルクリックすると実行されるはずです。
このファイルを他にコピーすることで、VisualStudio が無くても、独立して動くプログラムとして使用できます。
提出用ファイルへの変換 |
できたファイルを提出用ファイルにするために、ちょっと工夫します。
大学内のメールでは、添付ファイルに、危険なものが添付されないように、拡張子 exe を持つものは、送れません。
そこで、拡張子を、他のものに変更して送ってもらいます。
そのために、まず、ファイルをコピーして、名前を変更します。
"Project000.exe" ファイルの上にカーソルを合わせ、右クリックで、「コピー」し、そのまま、すぐ近くの場所で、「貼り付け」を選ぶと、同じファイルのコピーが作成されます。
ファイル名は、
"Project000-コピー.exe"
のようになっているはずです。
このファイルの名前を次のように変更します。
"e0000000-Project000.ex" <− ファイル名の最初に、自分の学籍番号を付ける。 ファイル名の最後の拡張子を、
exe -> ex
に変更します。
このファイルはそのままでは実行できませんが、メールに添付して送ることができます。
課題提出法 |
上記のようにして作成した
実行ファイル
cs ファイル
をメールで送ってもらいます。
また、課題1つごとに結果の画面をプリントして出してもらいます。
(プリントには、学籍番号と氏名を記入すること)
メールは1問につき、1通とします。
メールタイトル Project000 <−もちろん、提出する番号を書く
メール本文 氏名、学籍番号
添付ファイル e0000000-Project000.ex
Kadai1.cs <−問題の番号 (csファイルの名前は、 Form1.cs など、他の名前になっていてもよい。実行ファイルの動作がおかしいときに確認するために使用する。)
送付先: fujiki.kougei@gmail.com
課題1. |
プロジェクト名: Project1401
csファイル名: Kadai1
住所氏名と生年月日などを入力し、趣味を選ぶと、それを表示するようなプログラムを作ってください。
完成して実行したイメージは次のようになるようにします。
(細かな配置などは多少変わっても構いません。提出画面には、自分の名前と学籍番号を入れてください。)
1)住所は、
東京都、神奈川県、千葉県、埼玉県 その他から、ラジオボタンで選択して選ぶようにします。
2)男女は、ラジオボタンで選べるようにします。
複数のラジオボタンを選択するには、ラジオボタンを置く前に、 "Panel" を選び、それを広げてから、その中にラジオボタンを置きます。そうすると、グループ内で、どれか1個を選ぶ、ということができます。
(下図の赤線)
3)誕生日の入力は、数値の範囲が決まっていますから、"NumelicUpDown" の箱を配置し、その、"Minimum""Maximum"
の値を設定します。(下図の緑線)
まず、大まかに次のような画面を作ります。
プログラムの主要部分は次のようになります。
ただし、全部掲げると写すだけになってしまいますから、少し、ぼかしを入れてあります。また、これは、一部分だけですので、実際には、この前後に、もう少しプログラムが必要です。
以下略。
課題2. |
プロジェクト名: Project1402
csファイル名: Kadai2
次のようなデータの書かれたファイルを用意します。ファイル名は、
"inputdata1.dat"
とします。
1 2 3 4 5 6 7 8 9 10 |
このファイルを読み込んで、それを n 倍して表示し、ファイル
"outputdata1.dat"
に書きだすプログラムを作成しなさい。
ただし、何倍するかの n は、プログラムの画面から入力できるようにし、その数値は、授業の時(試験の時)に、口頭で指示します。
public Form1() { InitializeComponent(); } int inputdata; string fileName1,fileName2; int i = 0, j = 0; string line; int[] data; private void button3_Click(object sender, EventArgs e) { data = new int[100]; System.IO.StreamReader textFile1; if (System.IO.File.Exists(fileName1) == false) { MessageBox.Show("正しい入力ファイル名を入力してください。", "エラー"); return; }else if(textBox2.Text=="") { MessageBox.Show("正しい出力ファイル名を入力してください。", "エラー"); return; } else { textFile1 = new System.IO.StreamReader(fileName1, System.Text.Encoding.Default); while ((line = textFile1.ReadLine()) != null) { this.listBox1.Items.Add(line); data[i] = int.Parse(line); i++; } textFile1.Close(); int a = inputdata; for (j = 0; j < i; j++) { data[j] *= a; this.listBox2.Items.Add(data[j].ToString()); } System.IO.StreamWriter textFile2; textFile2 = new System.IO.StreamWriter(fileName2, false, System.Text.Encoding.Default); textFile2.Write(this.listBox2.Text); textFile2.Close(); } } private void button4_Click(object sender, EventArgs e) { Application.Exit(); } private void button1_Click(object sender, EventArgs e) { DialogResult ret1; ret1 = openFileDialog1.ShowDialog(); if (ret1 == DialogResult.OK) { fileName1 = this.openFileDialog1.FileName; textBox1.Text = fileName1; } } private void textBox1_TextChanged(object sender, EventArgs e) { fileName1 = textBox1.Text; } private void textBox2_TextChanged(object sender, EventArgs e) { fileName2 = textBox2.Text; } private void textBox3_TextChanged(object sender, EventArgs e) { inputdata = int.Parse(textBox3.Text); } private void button2_Click(object sender, EventArgs e) { DialogResult ret2; ret2 = saveFileDialog1.ShowDialog(); if (ret2 == DialogResult.OK) { fileName2 = this.saveFileDialog1.FileName; textBox2.Text = fileName2; } } |
課題3. |
プロジェクト名: Project1403
csファイル名: Kadai3
private void button1_Click(object sender, EventArgs e) { double pi = 3.1416; double xrad,xrad2; int x0, y0, x1, y1; Graphics g = this.pictureBox1.CreateGraphics(); int width = this.pictureBox1.Width - 1; int height = this.pictureBox1.Height - 1; g.DrawRectangle(Pens.Black, 0, 0, width, height); Pen greenPen = new Pen(Color.Green, 2); int n=6; int xc=width/2; int yc=height/2; int step=360/n; for (int i = 0; i < n; i++) { xrad = i * step * pi / 180; xrad2 = (i + 1) * step * pi / 180; x0 = xc + (int)(Math.Cos(xrad) * 100); y0 = yc + (int)(Math.Sin(xrad) * 100); x1 = xc + (int)(Math.Cos(xrad2) * 100); y1 = yc + (int)(Math.Sin(xrad2) * 100); g.DrawLine(greenPen, x0, y0, x1, y1); } } |
課題4. |
プロジェクト名: Project1404
csファイル名: Kadai4
前回作成したシューティングゲームと同じものをもう一度作成してください。
ただし、弾の発射を
スペースキー
ではなく、
m キー
に変更してください。
その他、ゲームにオリジナルの改良点を加えてみてください。
試験の際には、もともとの動作に、オリジナルの工夫が加わっていれば、その分、点数を加えます。(何も変更を加えなくても、ちゃんと動作すれば、点数は与えられます。)
【演習課題】
各自、課題を行って、来週の試験に備えてください。