メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語...

42
2020年度都市環境学科プログラミング言語 176 メッセージボックスの利用(1) using System; using System.Windows.Forms; //これが必要 class MessageBoxSample { public static void Main(string[] args) { int x, y=3; x = ++y; MessageBox.Show("x" + x + "です", "メッセージボックスのサンプル"); } } MessageBoxクラスのShowメソッドを用いる. 押されたボタンが何かをDialogResult挙型のメンバー名で受け取ることができる. 一般形: MessageBox.Show(メッセージ文, タイトル, ボタン, アイコン, 標準ボタン) タイトル メッセージ文

Upload: others

Post on 24-May-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語 176

メッセージボックスの利用(1)using System;using System.Windows.Forms; //これが必要

class MessageBoxSample {public static void Main(string[] args) {int x, y=3;x = ++y;MessageBox.Show("xは" + x + "です.",

"メッセージボックスのサンプル");}

}

MessageBoxクラスのShowメソッドを用いる.

押されたボタンが何かをDialogResult列挙型のメンバー名で受け取ることができる.一般形:MessageBox.Show(メッセージ文,タイトル, ボタン, アイコン, 標準ボタン)

タイトル

メッセージ文

Page 2: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

• ボタンの種類

177

メッセージボックスの利用(2)

Page 3: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

• アイコンの種類

178

メッセージボックスの利用(3)

Page 4: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語 179

メッセージボックスの利用(4)using System;using System.Windows.Forms;

class MessageboxButtons {public static void Main(string[] args) {DialogResult result = MessageBox.Show("ファイルを上書きしますか?", "質問",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button3);

switch (result) {case DialogResult.Yes:

Console.WriteLine("「はい」が選択されました");break;

case DialogResult.No:Console.WriteLine("「いいえ」が選択されました");break;

case DialogResult.Cancel:Console.WriteLine("「キャンセル」が選択されました");break;

default:Console.WriteLine("何も選択されませんでした");break;

}}

}

Enterキーが押されたときの標準ボタンを3つ目のキャンセルボタンに設定している

Page 5: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

メッセージ文を途中で改行したいときは,2つのメッセージの間に

Environment.NewLine

という定数を挟めば,その部分で改行される.

→ 文字列に"¥n"をはさんでも改行される.

180

メッセージボックスの利用(5)

using System;using System.Windows.Forms;

class MessageBoxSample2 {public static void Main(string[] args) {int x, y=3;x = ++y;MessageBox.Show("xは" + x + "です."

+ Environment.NewLine+ "yは" + y + "です.","メッセージボックスのサンプル");

}}

Page 6: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

メッセージ文の中の数値の書式を指定したい場合は,stringクラスのFormat()メソッドを用いる.※スライド163ページを参照

181

メッセージボックスの利用(6)

using System;using System.Windows.Forms;

class MessageBoxSample3 {public static void Main(string[] args) {double x = 3.14159265358979;string msg = string.Format

("xの値は{0,5:f2}です.", x);MessageBox.Show(msg, "書式の指定");

}}

Page 7: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

• プログラムの制御構造は下記の6つ– (1) 連接(連なり)

– (2) 判断(分かれ)– (3) 多方向分岐

– (4) 所定回数反復(一定回数の繰り返し)– (5) 前判定反復

– (6) 後判定反復

• 上記以外は使ってはいけない.

182

流れの制御構造 ー 所定回数反復

Page 8: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

for (変数=初期値; 変数<終端値; ++変数)文;

183

(4) 所定回数反復 ー for文

一般的形式

意味

変数の値を初期値から始めて1ずつ増やしながら終端値に達するまで文を繰り返し実行する.

• ここでいう変数とは,カウンターとも呼ばれ.for文を用いるときに一時的変数として宣言されることが多くfor文の中だけで有効でfor文が終わると消滅する.

Page 9: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

for (int i=0; i<5; ++i)Console.WriteLine(i + " " + i*i);

(1)

(2)

for (double x=0; x<2.5; x+=0.5)Console.WriteLine(x + " " + x*x);

(3)

本制御は「所定回数反復」でカウンタはint型が基本.(3)は勧ない

184

所定回数反復(for文)の記述例

for (int i=5; i>0; --i)Console.WriteLine(i + " " + i*i);

i++も可

カウンターiの値が0, 1, 2, 3, 4の順に5とおりに変化する

カウンターiの値が5, 4, 3, 2, 1の順に5とおりに変化する

変数xの値が0, 0.5, 1, 1.5, 2の順に5とおりに変化する

Page 10: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

0 01 12 43 94 16

(1) 5 254 163 92 41 1

(2) 0 00.5 0.251 11.5 2.252 4

(3)

出力の幅は自動的に決まる.double型でも,小数点以下が0だと,int型のように出力される.

185

前ページの制御の出力結果

Page 11: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

using System;

class WriteLineFormatSample {public static void Main(string[] args) {

for (int i=0; i<10; ++i) {int j = i+1;Console.WriteLine

("{0,5:d}{1,5:d}", j, j*j);}

}}

対応

i=0, 1, 2, ..., 9

186

所定回数反復(for文)の例

自然数を扱うときは,int j = i+1;のように,0から始まるカウンタに

1を加えた変数を宣言すると良い.後に学ぶ配列の制御のことも踏まえて,for (int i=1; i<=10; ++i)とはしない方がよい.

Page 12: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

----+----1----+----2----+-1: 1 1 i=0 (j=1)2: 2 43: 3 94: 4 165: 5 256: 6 367: 7 498: 8 649: 9 81

10: 10 100 i=9 (j=10)----+----1----+----2----+-

187

実行結果

Page 13: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

using System;

class Const {public static void Main(string[] args) {const int N=10;for (int i=0; i<N; ++i) {int j = i+1;Console.WriteLine

("{0,5:d}{1,5:d}", j, j*j);}

}}

188

const定数

const int N; N=10; このように,分けて書くことはできない.

Fortranでは,parameter文を用いる.(例) integer, parameter :: N = 10

Page 14: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語 189

Fortranにおける所定回数反復

do 変数=初期値,最終値[,刻み幅]繰り返したい処理

end do

一般的形式

program constinteger, parameter :: N = 10integer i

do i=1, Nwrite(*,'(2i5)') i, i*i

end doend program const

Fortranで記述した前ページと同様なプログラム

Page 15: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

using System;

class Const2 {public static void Main(string[] args) {

const int N=10;for (int i=0; i<N; ++i) {double x = i+1;Console.WriteLine("{0,3:f0}{1,9:f5}",

x, Math.Log(x));}

}}

190

数値計算関連メソッドの使用例

log 𝑥を表す数学メソッド

数学関数は,Mathクラスにメソッドとして多数が定義されている.

メソッドはPascal形式で記述する書法があるので,大文字で始まる.

Page 16: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

----+----1----+1: 1 0.000002: 2 0.693153: 3 1.098614: 4 1.386295: 5 1.609446: 6 1.791767: 7 1.945918: 8 2.079449: 9 2.19722

10: 10 2.30259----+----1----+

191

実行結果

Page 17: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語 192

数値計算関連メソッド(1)頭に「Math.」が必要.x, yはfloat型,またはdouble型

Page 18: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語 193

数値計算関連メソッド(2)頭に「Math.」が必要.x, yはfloat(double)型.m, nはint(long)型.

Page 19: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語 194

制御構造の多重化(入れ子,nesting)

const int N=9;for (int i=0; i<N; ++i)for (int j=0; j<N; ++j)Console.WriteLine((i+1) + "×" +

(j+1) + "=" + (i+1)*(j+1));

i+1=1, 2, ..., 9

j+1=1, 2, ..., 9

(1) i=0のときに,j=0, 1, ..., 8と変化する.(2) i=1のときに,j=0, 1, ..., 8と変化する.

:(9) i=8のときに,j=0, 1, ..., 8と変化する.

動作:

• カウンタがiのfor文がカウンタがjのfor文を管理し,カウンタがjのfor文がWrileLine()メソッドを管理している.

Page 20: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

const int N=3;for (int i=0; i<N; ++i)for (int j=0; j<N; ++j)Console.Write("{0:d}", (i+1)*(j+1));

(1)

123246369

出力結果

i+1=1 i+1=2 i+1=3

195

nesting(入れ子)と出力

Page 21: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

const int N=3;for (int i=0; i<N; ++i)for (int j=0; j<N; ++j)Console.Write("{0,2:d}", (i+1)*(j+1));

(2)

出力結果

1 2 3 2 4 6 3 6 9

i+1=1 i+1=2 i+1=3

196

nesting(入れ子)と出力

Page 22: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

1 2 32 4 63 6 9

const int N=3;for (int i=0; i<N; ++i) {for (int j=0; j<N; ++j)Console.Write("{0,2:d}", (i+1)*(j+1));

Console.WriteLine();}

(3)

出力結果 i+1=1i+1=2i+1=3

197

nesting(入れ子)と出力

このパターンで矩形の表を作成することが多い

Page 23: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

using System; //ピンクの部分は見出しで青色部分が結果

class MultiTable {public static void Main(string[] args) {

const int N = 9;Console.Write(" ");for (int j=0; j<N; ++j)

Console.Write("{0,3:d}", (j+1));Console.WriteLine();for (int i=0; i<N; ++i) {

Console.Write("{0,3:d}", (i+1));for (int j=0; j<N; ++j)

Console.Write("{0,3:d}", (i+1)*(j+1));Console.WriteLine();

}}

}198

九九の表を作る

かけられる数

かける数

計算結果

Page 24: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

----+----1----+----2----+----3--1: 1 2 3 4 5 6 7 8 92: 1 1 2 3 4 5 6 7 8 93: 2 2 4 6 8 10 12 14 16 184: 3 3 6 9 12 15 18 21 24 275: 4 4 8 12 16 20 24 28 32 366: 5 5 10 15 20 25 30 35 40 457: 6 6 12 18 24 30 36 42 48 548: 7 7 14 21 28 35 42 49 56 639: 8 8 16 24 32 40 48 56 64 7210: 9 9 18 27 36 45 54 63 72 81

----+----1----+----2----+----3--

199

九九の表の出力結果

実際に出力されるのは赤枠内のみ

Page 25: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

を計算する

using System;

class SumSeries {public static void Main(string[] args) {

int s=0;Console.Write("nの値を入力してください>");int n = int.Parse(Console.ReadLine());for (int k=0; k<n; ++k) {

s += k+1;Console.WriteLine

("{0,7:d}{1,15:d}", k+1 , s);}

}}

初期値としてゼロを設定

200

for文による和の計算例

s = s+(k+1);と同じ

Page 26: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

nの値を入力してください>20 .

1 12 33 64 105 15

:: (中途省略):

18 17119 19020 210

201

実行結果

7桁 15桁

Page 27: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

using System;

class Factorial {public static void Main(string[] args) {

int f=1;Console.Write("nの値を入力してください>");int n = int.Parse(Console.ReadLine());for (int k=0; k<n; ++k) {f *= k+1;Console.WriteLine

("{0,7:d}{1,15:d}", k+1 , f);}

}}

初期値として1を設定

202

for文による階乗の計算例

f = f*(k+1);と同じ

Page 28: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

nの値を入力してください>13 .

1 12 23 64 245 1206 7207 50408 403209 362880

10 362880011 3991680012 47900160013 1932053504

正しいか?

203

実行結果

後に見るように, 𝑛!の計算は,int型→12までlong型→20まで

しか計算できない!

Page 29: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

• プログラムの制御構造は下記の6つ– (1) 連接(連なり)

– (2) 判断(分かれ)– (3) 多方向分岐

– (4) 所定回数反復(一定回数の繰り返し)– (5) 前判定反復

– (6) 後判定反復

• 上記以外は使ってはいけない.

204

流れの制御構造 ー 前判定反復

Page 30: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

while (条件式) 文;

205

(5) 前判定反復 ー while文

一般的形式

意味

条件式が満たされている限り文を繰り返し実行する.一度も実行されないこともありうる.

do while (条件式)文

enddo

Fortranでは,do while~enddo文を用いる.

Page 31: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

int i=0;while (i<5) {

Console.Write("{0,3:d}", i);++i;

}Console.WriteLine();

for (int i=0; i<5; ++i)Console.Write("{0,3:d}", i);

Console.WriteLine();

同様の内容をfor文を用いて記述した例

※このように,回数でのみで制御できる場合はfor文を用いるこ

とが可能である.実際には,他の条件と併用することが多い.

206

前判定反復(while文)の記述例(1)

※++i;のように,カウンタの値は自分で増やす必要がある.

Page 32: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

0 1 2 3 4

どちらのプログラムも,0~4を横幅3桁に出力すし,最後に改行をする.

207

出力結果

Page 33: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

using System;

class While1 {public static void Main(string[] args) {const int MaxInt=int.MaxValue;int n=0, f=1;Console.WriteLine

(" n n!");while (f < (double)MaxInt/(n+1)) {

f *= ++n;Console.WriteLine

("{0,7:d}{1,15:d}", n, f);}

}}

4バイトの最大の整数2,147,483,647

208

前判定反復(while文)の記述例(2)

𝑛!のうち,int型の変数で記憶できる最大のものを調べる

Page 34: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

n n!1 12 23 64 245 1206 7207 50408 403209 36288010 362880011 3991680012 479001600

これより大きいと桁あふれ

209

出力結果

Page 35: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語 210

Fortranで記述したp.217と同様なプログラム

program while1implicit noneinteger, parameter :: MaxInt = 2147483647integer :: n=0, f=1write(*,*) ' n n!'

do while (f < dble(MaxInt)/(n+1))n = n+1f = f*nwrite(*,'(i7,i15)') n, f

enddoend program while1

8バイト浮動小数点型への変換

Page 36: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

using System;

class While2 {public static void Main(string[] args) {const long MaxInt = long.MaxValue;int n=0; long f=1;Console.WriteLine

(" n n!");while (f < (double)MaxInt/(n+1)) {

f *= ++n;Console.WriteLine

("{0,7:d}{1,20:d}", n, f);}

}}

8バイトの最大の整数9,223,372,036,854,775,807

211

前判定反復(while文)の記述例(3)

𝑛!のうち,long型の変数で記憶できる最大のものを調べる

Page 37: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

n n!1 12 23 64 245 1206 7207 50408 403209 362880: :19 12164510040883200020 2432902008176640000

これより大きいと桁あふれ

212

中途略

出力結果

Page 38: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

using System;

class While3 {public static void Main(string[] args) {int sum=0, a;

a = int.Parse(Console.ReadLine());while (0 < a) {

sum += a;a = int.Parse(Console.ReadLine());

}Console.WriteLine("{0,5:d}", sum);

}}

同じ行が必要

213

前判定反復(while文)の記述例(4)キーボードから整数aを入力し続け,その整数aが正の間加算

を繰り返す.

前判定反復では,while文の前に条件式を確定しておかなければならない!

Page 39: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語

using System;

class While4 {public static void Main(string[] args) {int sum=0, a;

while (0 < (a = int.Parse(Console.ReadLine())))

sum += a;Console.WriteLine("{0,5:d}", sum);

}}

1つの文で記述できる

214

前判定反復(while文)の記述例(5)キーボードから整数aを入力し続け,その整数aが正の間加算

を繰り返すプログラムの修正版.

0 < (a = int.Parse(Console.ReadLine()))は,赤字の代入文自身がaと同じ値をもつ.したがって同じ文を2度記述する必要はなくなる.a=b=10;とすると,(b=10)の代入文がbと同じ値をもち,aも10となる.

Page 40: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語 215

while文を用いた逐次代入法(1)

𝑥= log 𝑥+ 1 + 2という非線形方程式を逐次代入法で解く.

𝑥= 𝑓(𝑥)という非線形の方程式があるとき,𝑥 = 𝑓 𝑥 という形の反復計算を𝑥 − 𝑥 < 𝜀となるまで行って解を求める方法を逐次代入法という.初期値として𝑥 = 1としてみる.

𝑦= log 𝑥+ 1 + 2

𝑦= 𝑥

Page 41: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語 216

while文を用いた逐次代入法(2)

n x0 1.0000001 2.6931472 3.3064793 3.4601214 3.4951765 3.5030056 3.5047457 3.5051318 3.5052179 3.50523610 3.50524011 3.505241

実行結果

※前判定反復は,12行目のように保険のため回数制限も行うと良い.

Page 42: メッセージボックスの利用(1)chuoprogram.web.fc2.com/pdf/n05_pl2020.pdf2020年度都市環境学科プログラミング言語 メッセージ文を途中で改行したいときは,2つのメッセージの間に

2020年度都市環境学科プログラミング言語 217

Fortranで記述したp.216と同様なプログラム

program successiveSubstitutionimplicit nonedouble precision, parameter :: EPS=1d-6integer, parameter :: Nmax=20double precision :: xb=1d0, diff=1d0, xainteger :: n=0

write(*,*) 'n x'write(*,'(i2, f10.6)') n, xbdo while((diff > EPS) .and. (n < Nmax))xa=log(xb+1)+2diff=abs(xa-xb)xb=xan=n+1write(*,'(i2,f10.6)') n, xb

enddoend program successiveSubstitution