ソフトウェア制作論 平成30年11月14日
第8章 プログラムの汎用化2 ファイルからのデータ入力によるソースとデータの分離 第8章 プログラムの汎用化2 ファイルからのデータ入力によるソースとデータの分離 <本日の学習内容とねらい> プログラムの入力データをフィルから読み込むようにすれば、ソース とデータが分離され、プログラムの汎用性が高まる。 このことを前章のプログラムを改良することで体験する。
基礎課題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; }
基礎課題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; } 配列変数の宣言・生成(のみ) データの入力を行うメソッドを定義(戻り値:データの個数) データの個数に当たる部分を書き替える
基礎課題8-2 readData() private int readData(String[] eraName, int[] eraYear, int[] eraMonth, int[]eraDay) { int ans=0; return ans; }
基礎課題8-2 readData() private int readData(String[] eraName, int[] eraYear, int[] eraMonth, int[]eraDay) { int ans=0; try { } catch (Exception em) { } return ans;
基礎課題8-3 入力ストリームの指定 <年号データ.csv> try { BufferedReader fin= 基礎課題8-3 入力ストリームの指定 try { BufferedReader fin= new BufferedReader(new FileReader("年号データ.csv")); fin.close(); } catch (Exception em) { } <年号データ.csv>
基礎課題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] にデータを代入
基礎課題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();
変数を用いたプログラムの汎用化2 ファイルからのデータ入力によるソースとデータの分離 入力データ → 外部ファイル 処理内容 → プログラムソース という形でソースとデータを分離したことで、汎用化がさらに高まり拡 張も容易になった。