情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃.

Slides:



Advertisements
Similar presentations
情報基礎実習 I (第6回) 木曜4・5限 担当:北川 晃. Stream クラスを用いたファイルの接続 … Dim インスタンス名 As New IO.StreamReader( _ “ ファイルの絶対パス ”, _ System.Text.Encoding.Default) … s = インスタンス名.
Advertisements

情報基礎実習 I (第3回) 木曜4・5限 担当:北川 晃. プログラミング演習 2 つの数を入力し,「計算」ボタンをクリック すると,それぞれの計算結果を次のように 表示するプログラムを作れ.
小テスト解説 問1 次の中置記法で書かれた数式を、前置記法、後 置記法に直せ。 12 × 23 +( 34 + 45 ) × ( 56 + 67 ) × 78 + × 23 +( 34 + 45 ) × ( 56 + 67 ) × 78 + 89  前置記法 12 x 23 + (+ 34.
復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
配列の宣言 配列要素の初期値 配列の上限 メモリ領域 多次元配列 配列の応用
初年次セミナー 第8回 データの入力.
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
情報基礎実習I (第4回) 木曜4・5限 担当:北川 晃.
C言語 配列 2016年 吉田研究室.
プログラミング言語としてのR 情報知能学科 白井 英俊.
情報基礎実習I (第2回) 木曜4・5限 担当:北川 晃.
IO - 入出力 小西 亨.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
VBAを通して プログラム言語の基本構造を学ぶ
情報基礎実習I (第7回) 木曜4・5限 担当:北川 晃.
ファーストイヤー・セミナーⅡ 第8回 データの入力.
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
問題提起その 1 一文字ずつ文字(数字)を読み込み、それぞれの文字が何回入力されたかを数えて出力するプログラム。
情報基礎A 第13週 VBAプログラミング VBAの基本文法7・実際のデータ処理
情報基礎実習I (第5回) 木曜4・5限 担当:北川 晃.
情報基礎A 第10週 プログラミング入門 VBAの基本文法2 データ型・If ~Then~Else
第4章 配 列 オブジェクト指向Javaプログラミング入門 近代科学社©2008 Toru Kato Masahiro Higuchi
C言語 配列 2016年 吉田研究室.
情報基礎A 第7週 プログラミング入門 VBAの基本文法2 データ型・If ~Then~Else
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
コンピュータープログラミング (C言語)(8) 1.乱数(復習) 2.配列とその利用
確率・統計輪講資料 6-5 適合度と独立性の検定 6-6 最小2乗法と相関係数の推定・検定 M1 西澤.
情報基礎A 第14週プログラミング 実際のデータ処理での応用(2)
情報基礎A 第11週 プログラミング入門 VBAの基本文法3 配列・For~Next
情報基礎実習I (第1回) 木曜4・5限 担当:北川 晃.
テキストボックス、チェックボックス×2、コマンドボタンを配置する。 コマンドボタンに機能を与える
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
実例で学ぶプログラミング VBAを用いて簡単なゲームを作ろう 徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
本時の目標 「簡単なプログラム言語の意味を理解し、マクロ機能を使って簡単なプログラムを作ることができる。」
第二回 VB講座 電卓を作ろう.
関数と配列とポインタ 1次元配列 2次元配列 配列を使って結果を返す 演習問題
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
情報実習I (第6回) 木曜4・5限 担当:北川 晃.
地域情報学演習 VBAプログラミング 第2回 2017年10月17日
情報実習I (第7回) 木曜4・5限 担当:北川 晃.
情報基礎Ⅱ (第11回) 月曜4限 担当:北川 晃.
「入力」はInputBoxやテキストボックスに限らず、 セルからのデータの入力や、チェックボックス等からの入力全てを含める。
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
情報基礎Ⅱ (第5回) 月曜4限 担当:北川 晃.
数値計算モジュール NumPy.
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
統計ソフトウエアRの基礎.
先週の復習 2重ループを用いた、 表の記入と読み込み.
情報実習I (第2回) 木曜4・5限 担当:北川 晃.
第6回レポート解説 条件1 条件2 条件3 月の入力 月、日、曜日の表示 日の入力 曜日の入力
情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃.
情報工学Ⅱ (第2回) 月曜4限 担当:北川 晃.
精密工学科プログラミング基礎 第7回資料 (11/27実施)
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
情報実習I (第6回) 木曜4・5限 担当:北川 晃.
情報工学Ⅱ (第8回) 月曜4限 担当:北川 晃.
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
アルゴリズムの視覚化 この図は左が大きく、 右が小さくなるようにソートしている  この図は左が大きく、  右が小さくなるようにソートしている
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
プログラミング基礎a 第5回 C言語によるプログラミング入門 配列と文字列
プログラミング入門2 第5回 配列 変数宣言、初期化について
情報基礎A 第14週プログラミング 実際のデータ処理での応用(2)
プログラミング演習I 補講用課題
5.2 グレゴリー・ニュートン(Gregory-Newton)の補間式 (1)導入
Presentation transcript:

情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃

配列とは? 表を一つの変数のように扱う 一次元の配列: → a(i) ベクトル 二次元の配列: → b(i,j) 行列

配列の引数には,整数型の式,関数なども許される 配列の表記法 配列内の個々のデータ(配列要素)は, 配列名に添え字を付けて表す. alpha(16) n(5,1) p(i,j) b(i+1) x(2*n-1) k(l(m)) 配列の引数には,整数型の式,関数なども許される 配列の宣言 一次元, 単精度実数型 の配列の宣言 a(0)~a(10) Dim a(10) As Single Dim b(8,8) As Integer Dim c(3,5) As String 二次元,整数型の配列の宣言 b(0,0)~b(0,8) b(1,0)~b(1,8) … b(8,0)~b(8,8) 配列の番号は0から始まる 使わない要素は0と見なされるだけなので, 少し余裕を見て大きめに宣言するとよい

配列の操作 配列Aの内容をBにコピーする(下限1,上限N). For i As Integer = 1 To n b(i)=a(i) Next 行列A,Bの和を作ってCに代入する(M行N列とする). For i as Integer = 1 To m For j As Integer = 1 To n c(i,j) = a(i,j) + b(i,j) Next j Next i

例題:九九の表 九九の表を書き出すプログラムを作れ. 1 2 3 4 5 6 7 8 9

九九の表:プログラム例 行ごとに改行する

行列の積:プログラム例 Console.Title = "九九の表" Dim i, j, kuku(9, 9) As Integer For j = 1 To 9 For i = 1 To 9 kuku(i, j) = i * j If i <> 9 Then Console.Write("{0,4}", kuku(i, j)) Else Console.WriteLine("{0,4}", kuku(i, j)) End If Next 表の右端で改行する

ベクトルの内積 ベクトルAとベクトルBの内積を計算する(下限1,上限N). s = 0.0 For i As Integer = 1 To n s = s + a(i) * b(i) Next

行列の積の成分計算 行列Aと行列Bの積を計算する(下限1,上限N). 第(i,j)成分は・・・ s = 0.0 For k As Integer = 1 To N s = s+a(i,k)*b(k,j) Next k

プログラミング演習 3×3の正方行列A,Bを外部ファイルからデータとして 読み込み,その積C=ABを計算するプログラムを作れ. data_a.txt -2 1 4 3 2 -1 1 2 -3 -1 5 data_b.txt

行列の積:出力例 行ごとに改行する

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

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

外部ファイルからのデータの読み込み:出力例

行列の積:プログラム例 Dim ReadText1 As New IO.StreamReader( _ "D:\...\data_a.txt", System.Text.Encoding.Default) Dim ReadText2 As New IO.StreamReader( _ "D:\...\data_b.txt", System.Text.Encoding.Default) Dim n As Integer = 3 Dim a(10, 10), b(10, 10), c(10, 10) As Single For i As Integer = 1 To n For j As Integer = 1 To n a(i, j) = ReadText1.ReadLine() b(i, j) = ReadText2.ReadLine() Next ReadText1.Close() ReadText2.Close() 二つの外部 ファイルを接続 配列の宣言 (サイズは大きめに) 行列データの 読み込み ファイルを閉じる

行列の積:プログラム例(続き) For i As Integer = 1 To n For j As Integer = 1 To n c(i, j) = 0.0 For k As Integer = 1 To n c(i, j) = c(i, j) + a(i, k) * b(k, j) Next If j <> n Then Console.Write("{0,10}", c(i, j)) Else Console.WriteLine("{0,10}", c(i, j)) End If 積の(i,j)成分の計算 行の右端で改行する

データの統計処理に関する諸問題 データの分布の様子 データの期待値(平均値) データの分散,標準偏差(ばらつきの度合い) 回帰直線へのフィッティング(最小二乗法) 一様乱数の発生 正規乱数への変換 モンテカルロシミュレーション

例題:度数分布 n個のデータx1, x2, …, xnが与えられている. ‘normal_data.txt’よりデータを逐次読み込んで, 次の区分に従って度数分布を調べよ. x<-2.25 -2.25≦x<-1.75 -1.75≦x<-1.25 -1.25≦x<-0.75 -0.75≦x<-0.25 -0.25≦x< 0.25 0.25≦x< 0.75 0.75≦x< 1.25 1.25≦x< 1.75 1.75≦x< 2.25 2.25≦x

度数分布:考え方 それぞれ領域を以下のように定める. x<-2.25:領域0 -2.25≦x<-1.75:領域1 データを読み込んで,領域iに当てはまるとき, c(i)の値を1増やす. p(i)=c(i)/nの値を計算し,書き出す. x<-2.25:領域0 -2.25≦x<-1.75:領域1 -1.75≦x<-1.25:領域2 … :… 1.75≦x< 2.25:領域9 2.25≦x :領域10

出力例:度数分布

度数分布:プログラム例 読み込んだ値がどの領域に属するか判定 Dim n, c(100) As Integer, x, p(100) As Single Dim ReadText As New IO.StreamReader( _ "D:\…\normal_data.txt", System.Text.Encoding.Default) For i As Integer = 0 To 10 c(i) = 0 Next n = ReadText.ReadLine() For i As Integer = 1 To n x = ReadText.ReadLine() If x < -2.25 Then c(0) = c(0) + 1 ElseIf -2.25 <= x And x < -1.75 Then c(1) = c(1) + 1 ElseIf -1.75 <= x And x < -1.25 Then c(2) = c(2) + 1 読み込んだ値がどの領域に属するか判定

度数分布:プログラム例(続き) 読み込んだ値がどの領域に属するか判定 ElseIf -1.25 <= x And x < -0.75 Then c(3) = c(3) + 1 ElseIf -0.75 <= x And x < -0.25 Then c(4) = c(4) + 1 ElseIf -0.25 <= x And x < 0.25 Then c(5) = c(5) + 1 ElseIf 0.25 <= x And x < 0.75 Then c(6) = c(6) + 1 ElseIf 0.75 <= x And x < 1.25 Then c(7) = c(7) + 1 ElseIf 1.25 <= x And x < 1.75 Then c(8) = c(8) + 1 ElseIf 1.75 <= x And x < 2.25 Then c(9) = c(9) + 1 Else c(10) = c(10) + 1 End If Next 読み込んだ値がどの領域に属するか判定

度数分布:プログラム例(続き) 各領域の規格化度数を計算 For i As Integer = 0 To 10 p(i) = c(i) / n Console.WriteLine("p({0})={1}", i, p(i)) Next

出力例:度数分布(エクセルによる表示) 釣り鐘型(正規分布)