1 / 25

情報基礎実習 I ( 第5回)

情報基礎実習 I ( 第5回). 木 曜4・5限 担当 :北川 晃. Stream クラスを用いたファイルの接続. 外部ファイルから変数 ’s’ にデータを 読み込む 場合. プログラム中における ファイルの名前. … Dim インスタンス名 As New IO.StreamReader ( _ “ ファイルの絶対パス ”, _ System.Text.Encoding.Default ) … s = インスタンス名 . … インスタンス名 .Close(). ReadToEnd :ファイルの内容すべてを取得

oki
Download Presentation

情報基礎実習 I ( 第5回)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 情報基礎実習I(第5回) 木曜4・5限 担当:北川 晃

  2. Streamクラスを用いたファイルの接続 外部ファイルから変数’s’にデータを読み込む場合 プログラム中における ファイルの名前 … Dim インスタンス名 AsNew IO.StreamReader( _ “ファイルの絶対パス”, _ System.Text.Encoding.Default) … s = インスタンス名. … インスタンス名.Close() ReadToEnd:ファイルの内容すべてを取得 ReadLine:ファイルから1行読み込む Read :ファイルから1文字読み込む ファイルを閉じる

  3. 外部ファイルからのデータの読み込み:例文 Dim a, b, c As Single Dim ReadTextAsNew 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() 1行ずつ 読み込み ファイル名”data.txt”として “D:\read_test\”に保存 3.141592656 2.718281828 1 ファイル を閉じる

  4. Streamクラスを用いたファイルの接続 外部ファイルにデータを書き込む場合 プログラム中における ファイルの名前 … Dim インスタンス名AsNew IO.StreamWriter( _ “ファイルの絶対パス”, _ [True またはFalse], [文字コードの指定]) … インスタンス名. … インスタンス名.Close() ‘True’のときは追記 WriteLine:ファイルに書き込む(改行) Write:ファイルに書き込む(改行無し) ファイルを閉じる

  5. 外部ファイルへのデータの書き出し:例文 Writerとして,ファイル “D:\...\result.txt”を接続 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() ‘True’と書かれていないので,ファイルは上書きされる ‘y’の値を,Writerとして接続したファイルに書き込む ファイルを閉じる

  6. 例題:フィボナッチ数列(改) フィボナッチ数列の最初の40項を求めて外部ファイル ’result.txt’へ出力するプログラムを作れ. …

  7. フィボナッチ数列:アルゴリズム 求めたい項を’n_new’,ひとつ前の項を’n_last’, 二つ前の項を’n_old’とする. 初期値としてn_old=0,n_last=1を代入し, 第一項と第二項をそれぞれ書き出す. 第三項をn_new=n_old+n_lastにより計算し,書き出す. 次の第四項を求めるために, n_old=n_last,n_last=n_newの置き換えを行う. この手順を,第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("ファイル書き込み完了しました.") Writerとして,ファイル “D:\...\result.txt”を接続 項の数 Writerとして 接続した ファイルに 書き込む 初項 第二項 i=1~num(=40)まで繰り返し ファイルを 閉じる 増分”Step 1” は省略 これらの文を 逆にしてはならない 完了を 知らせる出力

  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. 三角関数のグラフ:プログラム例 Writerとして,ファイル “D:\...\result.csv”を接続 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として接続した ファイルに書き込む コンマで区切る ファイルを閉じる 完了を知らせる出力

  12. 三角関数のグラフ:出力例 追記されている

  13. 三角関数のグラフ:出力例(続き) データの列を選択

  14. 三角関数のグラフ:出力例(続き)

  15. プログラミング演習 区間        において,正弦関数 およびその導関数,2階導関数のグラフを作成せよ. 考え方: • オイラーの差分公式を用いる. • x, y, dy, d2yの各値を,CSV形式で • 外部ファイルに書き出す. y ⇒ dy⇒ d2y ⇒

  16. 三角関数の導関数:出力例

  17. 三角関数の導関数:プログラム例 Writerとして,ファイル “D:\...\result.csv”を接続 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() 微小量を定める 導関数の計算 コンマで区切る 完了を知らせる出力 ファイルを閉じる

  18. プログラミング演習 区間において,矩形波を 出力するプログラムを作れ. 考え方: • 矩形波                       を • Functionプロシージャとして作成する. • x,yの組をCSV (Comma Separated Value) 形式で • ファイルに書き出す⇒Excelで読み込み

  19. 矩形波のグラフ:出力例

  20. 矩形波のグラフ:プログラム例 Writerとして,ファイル “D:\...\result.csv”を接続 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として接続した ファイルに書き込む コンマで区切る ファイルを閉じる 完了を知らせる出力

  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 • 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 • … yの値を返す

  22. プログラミング演習 次の微分方程式の初期値問題をオイラー法により数値的に解け. 考え方: • オイラーの差分公式を利用する. •        について,繰り返し計算を行う. • x=0のとき,   =y0=2として, =yを計算する. • xとyを書き出し,y0=yと置き直して • 次のxについて計算を続ける. ⇒

  23. 微分方程式(オイラー法):出力例

  24. 微分方程式(オイラー法):プログラム例 Writerとして,ファイル “D:\...\result.csv”を接続 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として接続した ファイルに書き込む コンマで区切る 次の計算のための置き直し ファイルを閉じる 完了を知らせる出力

  25. 微分方程式(オイラー法):プログラム例(続き)微分方程式(オイラー法):プログラム例(続き) Function f(x, y0) Dim y As Single y = -x / y0 Return y End Function 関数プロシージャ部分

More Related