東京工芸大学 工学部  電子機械学科/システム電子情報学科 2年 後期 
これは、雪の影響で授業が休講、遅延した場合のための
予備ページです。

当日までの間に内容を改変する場合がありますが、
臨時に休講となった場合は、このページを参照してください。
応用プログラミング 第14回
 2013.1.15
藤木 文彦

http://fujiki.tv/t-kougei/ouyouprog/
fujiki.kougei@gmail.com, fujiki@em.t-kougei.ac.jp  
 ■ 1  ■ 2   ■ 3  ■ 4  ■5  ■ 6      ■ 9  ■10  ■11 ■ 12  ■ 13  ■ 14   15   00   00   00

インデックスに戻る



 今日の授業は、任意出席ですので、出席点にはカウントしませんが、試験に出す問題と、ほぼ同じ課題を出しますので、しっかりやっておきましょう。


 来週の試験では、以下の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 キー

 に変更してください。


 その他、ゲームにオリジナルの改良点を加えてみてください。
 試験の際には、もともとの動作に、オリジナルの工夫が加わっていれば、その分、点数を加えます。(何も変更を加えなくても、ちゃんと動作すれば、点数は与えられます。)





【演習課題】


各自、課題を行って、来週の試験に備えてください。