Download presentation
Presentation is loading. Please wait.
1
ソフトウェア制作論 平成30年11月14日
2
第8章 プログラムの汎用化2 ファイルからのデータ入力によるソースとデータの分離
第8章 プログラムの汎用化2 ファイルからのデータ入力によるソースとデータの分離 <本日の学習内容とねらい> プログラムの入力データをフィルから読み込むようにすれば、ソース とデータが分離され、プログラムの汎用性が高まる。 このことを前章のプログラムを改良することで体験する。
3
基礎課題8-1 getEraName() String getEraName(int year, int month, int day){
String[] eraName={"明治","大正","昭和","平成"}; int[] eraYear={1868,1912,1926,1989}; int[] eraMonth={9,7,12,1}; int[] eraDay={8,30,25,8}; String ans=""; ・・・ return ans; }
4
基礎課題8-1 getEraName() String getEraName(int year, int month, int day){
String[] eraName = new String[100]; int[] eraYear= new int[100]; int[] eraMonth = new int[100]; int[] eraDay= new int[100]; int eraNumber= readData(eraName,eraYear,eraMonth,eraDay); String ans=""; //どの年号に当てはまるかを判定する。 int i; //該当する元号の番号 i=1:明治、i=2:大正、i=3:昭和、i=4:平成 for(i=0;i< eraNumber ;i++) { ・・・ return ans; } 配列変数の宣言・生成(のみ) データの入力を行うメソッドを定義(戻り値:データの個数) データの個数に当たる部分を書き替える
5
基礎課題8-2 readData() private int readData(String[] eraName, int[] eraYear, int[] eraMonth, int[]eraDay) { int ans=0; return ans; }
6
基礎課題8-2 readData() private int readData(String[] eraName, int[] eraYear, int[] eraMonth, int[]eraDay) { int ans=0; try { } catch (Exception em) { } return ans;
7
基礎課題8-3 入力ストリームの指定 <年号データ.csv> try { BufferedReader fin=
基礎課題8-3 入力ストリームの指定 try { BufferedReader fin= new BufferedReader(new FileReader("年号データ.csv")); fin.close(); } catch (Exception em) { } <年号データ.csv>
8
基礎課題8-3 データ読み込みループ(枠組み)
基礎課題8-3 データ読み込みループ(枠組み) try { BufferedReader fin= new BufferedReader(new FileReader("年号データ.csv")); String data; int i=0; while ((data=fin.readLine())!=null) { } ans=i; //データの個数 fin.close(); catch (Exception em) { } eraName[i]、erayear[i]、eraMonth[i]、eraDay[i] にデータを代入
9
基礎課題8-3 データ読み込みループ(中身) eraName[i]=tk.nextToken();
基礎課題8-3 データ読み込みループ(中身) ・・・ int i=0; while ((data=fin.readLine())!=null) { StringTokenizer tk=new StringTokenizer(data,","); eraName[i]=tk.nextToken(); eraYear[i]=Integer.parseInt(tk.nextToken()); eraMonth[i]=Integer.parseInt(tk.nextToken()); eraDay[i]=Integer.parseInt(tk.nextToken()); i++; } ans=i; //データの個数 fin.close();
10
変数を用いたプログラムの汎用化2 ファイルからのデータ入力によるソースとデータの分離
入力データ → 外部ファイル 処理内容 → プログラムソース という形でソースとデータを分離したことで、汎用化がさらに高まり拡 張も容易になった。
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.