Download presentation
Presentation is loading. Please wait.
Published byさみ いとえ Modified 約 8 年前
1
情報基礎実習 I (第6回) 木曜4・5限 担当:北川 晃
2
Stream クラスを用いたファイルの接続 … Dim インスタンス名 As New IO.StreamReader( _ “ ファイルの絶対パス ”, _ System.Text.Encoding.Default) … s = インスタンス名. … インスタンス名.Close() 外部ファイルから変数 ’s’ にデータを読み込む場合 ReadToEnd :ファイルの内容すべてを取得 ReadLine :ファイルから1行読み込む Read :ファイルから1文字読み込む ファイルを閉じ る プログラム中におけ る ファイルの名前
3
外部ファイルからのデータの読み込み:例文 Dim a, b, c As Single Dim ReadText As New IO.StreamReader( _ “D:\read_test\data.txt”, _ System.Text.Encoding.Default) a = ReadText.ReadLine b = ReadText.ReadLine c = ReadText.ReadLine Console.WriteLine(“a={0}”,a) Console.WriteLine(“b={0}”,b) Console.WriteLine(“c={0}”,c) ReadText.Close() ファイル名 ”data.txt” とし て “D:\read_test\” に保存 3.141592656 2.718281828 1 ファイ ル を閉じ る 1行ずつ 読み込み
4
Stream クラスを用いたファイルの接続 … Dim インスタンス名 As New IO.StreamWriter( _ “ ファイルの絶対パス ”, _ [True または False], [ 文字コードの指定 ]) … インスタンス名. … インスタンス名.Close() 外部ファイルにデータを書き込む場合 WriteLine :ファイルに書き込む(改行) Write :ファイルに書き込む(改行無し) ファイルを閉じ る プログラム中におけ る ファイルの名前 ‘True’ のときは追記
5
外部ファイルへのデータの書き出し:例文 Dim Writer As New IO.StreamWriter( _ "D:\...\result.txt") Dim x As Single = 3, y As Single y = Math.Sqrt(x) Writer.Write(y) Writer.Close() ファイルを閉じ る ‘y’ の値を, Writer として接 続したファイルに書き込 む Writer として, ファイル “D:\...\result.txt” を接続 ‘True’ と書かれていないので, ファイルは上書きされる
6
フィボナッチ数列の最初の 40 項を求めて外部ファイル ’result.txt’ へ出力するプログラムを作れ. … 例題:フィボナッチ数列(改)
7
1. 求めたい項を ’n_new’ ,ひとつ前の項を ’n_last’ , 二つ前の項を ’n_old’ とする. 2. 初期値として n_old = 0 , n_last = 1 を代入し, 第一項と第二項をそれぞれ書き出す. 3. 第三項を n_new = n_old + n_last により計算し,書き出す. 4. 次の第四項を求めるために, n_old = n_last , n_last=n_new の置き換えを行う. 5. この手順を,第 40 項が求まるまで繰り返す. フィボナッチ数列:アルゴリズム
8
Dim i, num, n_old, n_last, n_new As Integer Dim Writer As New IO.StreamWriter( _ "D:\...\result.txt") num = 40 n_old = 0 Writer.WriteLine("{0}", n_old) n_last = 1 Writer.WriteLine("{0}", n_last) For i = 3 To num n_new = n_last + n_old Writer.WriteLine("{0}", n_new) n_old = n_last : n_last = n_new Next Writer.Close() Console.WriteLine(" ファイル書き込み完了しました. ") フィボナッチ数列:プログラム例 項の数 初項 第二項 増分 ”Step 1” は省略 i=1 ~ num (=40) まで繰り返し これらの文を 逆にしてはならな い Writer として, ファイル “D:\...\result.txt” を接続 Writer とし て 接続した ファイルに 書き込む ファイル を 閉じる 完了を 知らせる 出力
9
例題:関数のグラフの作成 区間 において,正弦関数の グラフを作成せよ. 考え方: x0 をキーボードから読み込み, x=x0 から 0.1 刻みで x=x0+ 1 まで変化させる. それぞれの x について, y=Math.Sin(x) を計算する. x,y の組を CSV (Comma Separated Value) 形式で ファイルに書き出す⇒ Excel で読み込み
10
CSV 形式のファイル テキストエディタで開くと … Excel で開くと …
11
Dim x0, x, y As Single Dim Writer As New IO.StreamWriter( _ "D:\...\result.csv",True) Console.Write(" 初期値 x0 を入力してください: x0=") x0 = Console.ReadLine() For x = x0 To x0 + 1.0 Step 0.1 y = Math.Sin(x) Writer.WriteLine(" {0,10}, {1,10}", x, y) Next Writer.Close() Console.WriteLine(" ファイル書き込み完了しました. ") 三角関数のグラフ:プログラム例 Writer として, ファイル “D:\...\result.csv” を接続 Writer として接続し た ファイルに書き込む ファイルを閉じ る 完了を知らせる出 力 コンマで区切 る ファイルがある場合は追 記
12
三角関数のグラフ:出力例 追記されている
13
三角関数のグラフ:出力例(続き) データの列を選択
14
三角関数のグラフ:出力例(続き)
15
プログラミング演習 区間 において,正弦関数 およびその導関数,2階導関数のグラフを作成せよ. 考え方: オイラーの差分公式を用いる. x, y, dy, d2y の各値を, CSV 形式で 外部ファイルに書き出す. y ⇒ dy ⇒ d2y ⇒
16
三角関数の導関数:出力例
17
Dim x, y, dy, d2y, h As Single Dim Writer As New IO.StreamWriter("D:\...\result.csv") h = 0.01 For x = 0 To 10 Step 0.1 y = Math.Sin(x) dy = (Math.Sin(x + h) - Math.Sin(x)) / h d2y = (Math.Sin(x + h) - 2 * Math.Sin(x) _ + Math.Sin(x - h)) / h ^ 2 Writer.WriteLine("{0,10},{1,10},{2,10},{3,10}", _ x, y, dy, d2y) Next Console.WriteLine(" ファイルの書き込み終了しました. ") Writer.Close() 三角関数の導関数:プログラム例 Writer として, ファイル “D:\...\result.csv” を接続 導関数の計算 ファイルを閉じ る 完了を知らせる出 力 コンマで区切 る 微小量を定める
18
プログラミング演習 区間 において,矩形波を 出力するプログラムを作れ. 考え方: 矩形波 を Function プロシージャとして作成する. x,y の組を CSV (Comma Separated Value) 形式で ファイルに書き出す⇒ Excel で読み込み
19
矩形波のグラフ:出力例
20
Sub Main() Dim x, y As Single Dim Writer As New IO.StreamWriter( _ "D:\...\result.csv") For x = 0 To 10 Step 0.01 y = rect(x) Writer.WriteLine(" {0,10}, {1,10}", x, y) Next Writer.Close() Console.WriteLine(" ファイル書き込み完了しました. ") End Sub 矩形波のグラフ:プログラム例 Writer として, ファイル “D:\...\result.csv” を接続 Writer として接続し た ファイルに書き込む ファイルを閉じ る 完了を知らせる出 力 コンマで区切 る
21
Function rect(x) Dim y As Single If x - Fix(x / 2) * 2 < 1 Then y = 0 Else y = 1 End If Return y End Function 矩形波のグラフ:プログラム例(続き) y の値を返す x=0.5 のとき, 0.5-Fix(0.25)*2=0.5<1 x=1.5 のとき, 1.5-Fix(0.75)*2=1.5>1 x=2.5 のとき, 2.5-Fix(1.25)*2=0.5<1 …
22
プログラミング演習 次の微分方程式の初期値問題をオイラー法により数値的に解け. 考え方: オイラーの差分公式を利用する. について,繰り返し計算を行う. x=0 のとき, =y0=2 として, =y を計算する. x と y を書き出し, y0=y と置き直して 次の x について計算を続ける. ⇒
23
微分方程式(オイラー法):出力例
24
Dim x, y, y0, h As Single Dim Writer As New IO.StreamWriter("D:\...\result.csv") h = 0.01 : y0 = 2 For x = 0 To 2 Step h y = y0 + h * f(x, y0) Writer.WriteLine("{0,10}, {1,10}", x, y) y0 = y Next Console.WriteLine(" ファイルの書き込み終了しました. ") Writer.Close() 微分方程式(オイラー法):プログラム例 Writer として, ファイル “D:\...\result.csv” を接続 Writer として接続し た ファイルに書き込む ファイルを閉じ る 完了を知らせる出 力 コンマで区切 る 次の計算のための置き直し 刻み幅,初期値の設 定
25
Function f(x, y0) Dim y As Single y = -x / y0 Return y End Function 微分方程式(オイラー法):プログラム例(続き) 関数プロシージャ部分
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.