Presentation is loading. Please wait.

Presentation is loading. Please wait.

情報基礎Ⅱ (第11回) 月曜4限 担当:北川 晃.

Similar presentations


Presentation on theme: "情報基礎Ⅱ (第11回) 月曜4限 担当:北川 晃."— Presentation transcript:

1 情報基礎Ⅱ (第11回) 月曜4限 担当:北川 晃

2 平均値と標準偏差 平均値: 標準偏差: n個のデータx1, x2, …, xnが与えられている. データを逐次読み込んで,その平均値と
標準偏差を求めよ. 平均値: 標準偏差:

3 平均値と標準偏差:具体例 (i) N≧2のとき :平均値 :標準偏差

4 プログラミング演習 外部データ’normal_data.txt’よりデータ点数および各データを読み込んで,それらの平均値を計算するプログラムを作れ. ‘normal_data.txt’を読み込みファイルとして接続する. データ点数を読み込み,nに代入する. すべてのデータを配列a(i)に代入する. すべてのデータの和sを計算する. 平均値aveを計算し,表示する.

5 出力例:平均値の計算

6 プログラム例:平均値の計算 データ点数の読み込み データを配列へ読み込む データの和の計算 平均値の計算
Dim a(10000), ave As Single, s As Single = 0, n As Integer Dim ReadText As New IO.StreamReader( _ "D:\…\normal_data.txt", System.Text.Encoding.Default) n = ReadText.ReadLine() For i As Integer = 1 To n a(i) = ReadText.ReadLine() Next s = s + a(i) ave = s / n Console.WriteLine("平均はE={0,8}", ave) ReadText.Close() データ点数の読み込み データを配列へ読み込む データの和の計算 平均値の計算

7 プログラミング演習 外部データ’normal_data.txt’よりデータ点数および各データを読み込んで,それらの平均値を計算するプログラムを作れ. 上記のプログラムをFunctionプロシージャに書き直し,平均値を計算するプログラムを作れ.

8 例題:平均値を求める関数副プログラム データ点数nとa(i) (i=1,…,n)を引数として,それらの 平均値を返す関数副プログラムを作れ.
関数プロシージャの引数には,配列を取ることも可能. 配列 Sub Main() Dim a(10), ave As Single, n As Integer ave = ave_func(n,a) End Sub Function ave_func(n,a) Return ave End Function 配列 配列

9 平均値を求める関数副プログラム:プログラム例
Sub Main() Dim a(10000), ave As Single, n As Integer Dim ReadText As New IO.StreamReader( _ "D:\…\normal_data.txt", System.Text.Encoding.Default) n = ReadText.ReadLine() For i As Integer = 1 To n a(i) = ReadText.ReadLine() Next ReadText.Close() ave = ave_func(n, a) Console.WriteLine("平均はE={0,8}", ave) End Sub

10 平均値を求める関数副プログラム:プログラム例
Function ave_func(n, a) Dim s As Single = 0, ave As Single For i As Integer = 1 To n s = s + a(i) Next ave = s / n Return ave End Function 関数副プロシージャで, 以下のものは宣言不要 共通に宣言した変数 関数の仮引数

11 プログラミング演習 外部データ’normal_data.txt’よりデータ点数および各データを読み込んで,それらの平均値を計算するプログラムを作れ. 上記のプログラムをFunctionプロシージャに書き直し,平均値を計算するプログラムを作れ. さらに標準偏差を計算するプログラムを,Functionプロシージャを用いて作れ.

12 平均値を求める関数副プログラム:プログラム例
Sub Main() Dim a(10000), ave, sd As Single, n As Integer Dim ReadText As New IO.StreamReader( _ "D:\…\normal_data.txt", System.Text.Encoding.Default) n = ReadText.ReadLine() For i As Integer = 1 To n a(i) = ReadText.ReadLine() Next ReadText.Close() ave = ave_func(n, a) sd = sd_func(n, a, ave) Console.WriteLine("平均はE={0,8}", ave) Console.WriteLine(“標準偏差はσ={0,8}", sd) End Sub

13 平均値を求める関数副プログラム:プログラム例
Function ave_func(n, a) Return ave End Function Function sd_func(a, ave, n) Dim s2 As Single = 0.0 Dim var, sd As Single For i As Integer = 1 To n s2 = s2 + a(i) ^ 2 Next var = s2 / n - ave ^ 2 sd = Math.Sqrt(var) Return sd

14 プログラミング演習 外部データ’normal_data.txt’よりデータ点数および各データを読み込んで,それらの平均値および標準偏差を計算するサブルーチン・プログラムを作れ.

15 Subプロシージャとは 主プログラムの一部を外部の副プログラムに移す 繰り返し同じ記述をする場合などに有効
Functionプロシージャとは異なり, 主プログラムに値は返さない 主プログラムと変数のやりとりをすることもできる プログラムで 共有する変数は,Mainよりも外で 宣言する Mainプログラムも, Subプロシージャの一つ Sub Main() プロシージャ名(変数) End Sub Sub プロシージャ名(変数) 文ブロック 値は返さないので, “Return *”はいらない

16 通常サブルーチンは値を返せないので,サブルーチン内で結果を表示する
平均値を求めるサブルーチン:プログラム例 Sub Main() Dim a(10000), ave, sd As Single Dim n As Integer Dim ReadText As New IO.StreamReader("d:\normal_data.txt", _ System.Text.Encoding.Default) n = ReadText.ReadLine() For i As Integer = 1 To n a(i) = ReadText.ReadLine() Next ReadText.Close() ave_sub(n,a) sd_sub(n,a,ave) End Sub 通常サブルーチンは値を返せないので,サブルーチン内で結果を表示する (主プログラムの変数を書き換える ことができない)

17 平均値を求めるサブルーチン:プログラム例
Sub ave_sub(n,a) Dim s As Single = 0.0 For i As Integer = 1 To n s = s + a(i) Next ave = s / n Console.WriteLine("平均はE={0,8}", ave) End Sub Sub sd_sub(n,a,ave) Dim s2 As Single = 0.0, var As Single s2 = s2 + a(i) ^ 2 var = s2 / n - ave ^ 2 sd = Math.Sqrt(var) Console.WriteLine("標準偏差はσ={0,8}", sd) サブルーチンは,プログラムの 一部を外部に分割. 値を返すことができない.

18 平均値を求めるサブルーチン:プログラム例
Dim a(10000), ave, sd As Single Sub Main() Dim n As Integer Dim ReadText As New IO.StreamReader("d:\normal_data.txt", _ System.Text.Encoding.Default) n = ReadText.ReadLine() For i As Integer = 1 To n a(i) = ReadText.ReadLine() Next ReadText.Close() ave_sub(n) sd_sub(n) Console.WriteLine("平均はE={0,8}", ave) Console.WriteLine("標準偏差はσ={0,8}", sd) End Sub 主プログラムの外で変数を宣言する 主プログラムの変数を 書き換えているわけではない (サブルーチンで計算した 値が使える)

19 平均値を求めるサブルーチン:プログラム例
Sub ave_sub(n) Dim s As Single = 0.0 For i As Integer = 1 To n s = s + a(i) Next ave = s / n End Sub Sub sd_sub(n) Dim s2 As Single = 0.0, var As Single s2 = s2 + a(i) ^ 2 var = s2 / n - ave ^ 2 sd = Math.Sqrt(var)


Download ppt "情報基礎Ⅱ (第11回) 月曜4限 担当:北川 晃."

Similar presentations


Ads by Google