Presentation is loading. Please wait.

Presentation is loading. Please wait.

ソフトウェア制作論 平成30年11月14日.

Similar presentations


Presentation on theme: "ソフトウェア制作論 平成30年11月14日."— Presentation transcript:

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 ファイルからのデータ入力によるソースとデータの分離
  入力データ → 外部ファイル   処理内容  → プログラムソース という形でソースとデータを分離したことで、汎用化がさらに高まり拡 張も容易になった。


Download ppt "ソフトウェア制作論 平成30年11月14日."

Similar presentations


Ads by Google