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

Slides:



Advertisements
Similar presentations
アルゴリズムとプログラミン グ (Algorithms and Programming) 第6回:クラスとインスタンス クラスの宣言 アクセス修飾子 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの実際の定義と使い 方 クラスの宣言 アクセス修飾子 インスタンスの生成.
Advertisements

2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
プログラミング 平成24年1月11日 森田 彦.
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
プログラムのパタン演習 解説.
第6回条件による分岐.
プログラミング 平成22年10月20日 森田 彦.
プログラミング 平成24年10月16日 森田 彦.
JavaScript プログラミング入門 2006/11/10 神津.
プログラミング基礎I(再) 山元進.
データ構造とアルゴリズム論 第5章 レコード構造を使った処理-クラスの利用
プログラミング 平成23年10月19日 森田 彦.
プログラミング基礎I(再) 山元進.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
構造体.
情報基礎実習I (第1回) 木曜4・5限 担当:北川 晃.
JavaBeans とJSP データベース論 第5回.
データ構造とアルゴリズム論 第2章 配列(構造)を使った処理
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
プログラミング 平成24年10月30日 森田 彦.
Javaソフトウェア部品検索システムのための索引付け手法の提案と実装
第10章 char 文字列; 文字列を入力させるよ!.
プログラミング 平成25年11月5日 森田 彦.
データ構造と アルゴリズム論 平成29年9月27日 森田 彦.
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラムの制御構造 選択・繰り返し.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
プログラミング 平成23年12月21日 森田 彦.
ネットワークプログラミング論 平成28年11月7日 森田 彦.
第1回 プログラムの基本 他人が読めるプログラムを書く.
ソフトウェア制作論 平成30年12月5日.
ソフトウェア制作論 平成30年10月3日.
プログラミングⅠ 平成30年10月29日 森田 彦.
ソフトウェア制作論 平成30年10月24日.
ソフトウェア制作論 平成30年10月31日.
もっと詳しくArrayクラスについて調べるには → キーワード検索
プログラムの制御構造 配列・繰り返し.
ソフトウェア制作論 平成30年11月21日.
プログラミングⅠ 平成30年10月15日 森田 彦.
ソフトウェア制作論 平成30年10月10日.
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
プログラミングⅠ 平成30年10月22日 森田 彦.
プログラミングⅠ 平成31年1月7日 森田 彦.
2007/6/12(通信コース)2007/6/13(情報コース) 住井
アルゴリズムとプログラミング (Algorithms and Programming)
C#プログラミング実習 第3回.
計算機プログラミングI 第3回 プリミティブ値 クラスメソッド クラス変数 式と演算 変数の利用
Javaによる Webアプリケーション入門 第4回
ソフトウェア制作論 平成30年11月28日.
情報工学Ⅱ (第2回) 月曜4限 担当:北川 晃.
~sumii/class/proenb2010/ml2/
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
プログラミングⅠ 平成30年12月10日 森田 彦.
ソフトウェア制作論 平成30年11月14日.
2006/6/27(通信コース)2006/7/5(情報コース) 住井
Nakano School of Business 経営情報ビジネス科 【 Java概論(Test4)】
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
プログラミング 平成28年11月15日 森田 彦.
コンパイラ 2012年10月11日
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
プログラミング 平成24年12月11日 森田 彦.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
ソフトウェア制作論 平成30年10月17日.
プログラミング 平成28年10月25日 森田 彦.
プログラミング1 プログラミング演習I 第2回.
C言語講座 四則演算  if ,  switch 制御文.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
プログラミングの原理 データ構造とプログラミング (第4回).
Presentation transcript:

ソフトウェア制作論 平成30年9月26日

分かりやすいプログラムとは 変数名の付け方 コメントの付け方 字下げの徹底

変数名の付け方 例題1) private void jButton1ActionPerformed(ActionEvent evt) { 変数名の付け方 例題1) private void jButton1ActionPerformed(ActionEvent evt) {   int a=Integer.parseInt(jTextField1.getText());     int b=Integer.parseInt(jTextField2.getText());   int c=a+b;   int d=a-b;   int e=a*b;   double f=a/b;   jTextFieldWa.setText(String.valueOf(c));   jTextFieldSa.setText(String.valueOf(d));   jTextFieldSeki.setText(String.valueOf(e));   jTextFieldSho.setText(String.valueOf(f)); } 問題)変数の意味が分かるように、各変数名を修正して下さい。

例題1) 解答例 private void jButton1ActionPerformed(ActionEvent evt) { 例題1) 解答例 private void jButton1ActionPerformed(ActionEvent evt) {   int a=Integer.parseInt(jTextField1.getText());     int b=Integer.parseInt(jTextField2.getText());   int wa=a+b;   int sa=a-b;   int seki=a*b;   double sho=a/b;   jTextFieldWa.setText(String.valueOf(wa));   jTextFieldSa.setText(String.valueOf(sa));   jTextFieldSeki.setText(String.valueOf(seki));   jTextFieldSho.setText(String.valueOf(sho)); } さらに、a,bも修正すると・・・

例題1) 解答例(改良) private void jButton1ActionPerformed(ActionEvent evt) { 例題1) 解答例(改良) private void jButton1ActionPerformed(ActionEvent evt) {   int data1=Integer.parseInt(jTextField1.getText());     int data2=Integer.parseInt(jTextField2.getText());   int wa=data1+data2;   int sa=data1-data2;   int seki=data1*data2;   double sho=data1/data2;   jTextFieldWa.setText(String.valueOf(wa));   jTextFieldSa.setText(String.valueOf(sa));   jTextFieldSeki.setText(String.valueOf(seki));   jTextFieldSho.setText(String.valueOf(sho)); } 初見でプログラムの意味が分かる!

【基礎課題1-1 】 アメリカドルの円に対する交換額を計算するプログラムを次のように 作成しました。交換レートは、9/30現在で1ドル=112.6円でした。 プログラムの内容が分かるように変数名を修正して下さい。 private void jButtonExchangeActionPerformed(ActionEvent evt) { int a=Integer.parseInt(jTextFieldDollar.getText()); double b=112.6; c=(int) (b*a); jTextFieldYen.setText(String.valueOf(c)); }

【基礎課題1-1 】 解答例 private void jButtonExchangeActionPerformed(ActionEvent evt) { int dollar=Integer.parseInt(jTextFieldDollar.getText()); double rate=112.6; yen=(int) (rate*dollar); jTextFieldYen.setText(String.valueOf(yen)); }

変数命名の(最低限の)ルール プログラムにおける意味(役割)が分かるように命名する。→他人が 分かるように命名することがポイント 慣例的には、英語を基本にして意味が分かる程度に簡略する、とい う方針で命名が行われて来た。  例) 最大値:max(maximum)、 最小値:min(minimum)、等々。 意味が紛らわしくなる場合は、省略せず区別を明確化する。  例) ユーザ名、ユーザアカウントという変数を用いる場合   良い例)userName、userAccount  悪い例)user1、user2

Java言語で用いられている変数命名ルール1 クラス名  パスカル記法 先頭を大文字、それ以外は小文字、言葉の区切りは大文字    例) NewJFrame、MainActivity、等々 メソッド名   キャメルケース記法    先頭を小文字、以降も小文字、 言葉の区切りは大文字 2.1 フィールドの値に対する取得と設定メソッド   フィールドの値を取得するメソッド: 先頭をget  フィールドの値を設定するメソッド: 先頭をset   例) getText、setText、setColor、等々

Java言語で用いられている変数命名ルール2 2.2 boolean変数を返すメソッド    メソッド名が命題を表すように命名する    is + 形容詞 例) isSelected、isEnabled, 等々 定数名 すべて大文字 複合文字の場合は区切りをアンダースコア "_" で結合。(スネークケース記法)   例) PI、LENGTH、INPUT_VALUE、等々 変数名 すべて小文字、 複合文字の場合は区切りを大文字する   例) errMsg、inputData、等々

ソースコードに付けるコメントについて なぜつける?:ソースコードの内容を理解し易くするため。 どのような時に有効?:ステートメントの補足や注意事項、処理の概要 や意図を伝えたい時に有効。 記述は必要最小限に留める。→ソースコードで内容を伝えるのがベス ト。  より詳細な説明な必要な場合は所定のドキュメントで説明する。

例1) ステートメントの補足・注意事項の付記 例1) ステートメントの補足・注意事項の付記 String username; String password; ・・・ // 8文字以上の英数字に制限 private void jButtonExchangeActionPerformed(ActionEvent evt) { int dollar=Integer.parseInt(jTextFieldDollar.getText()); double rate=112.6; yen=(int) (rate*dollar); jTextFieldYen.setText(String.valueOf(yen)); } //2018年9/21時点のドル→円の為替レート

例2) 処理の概要・意図の付記 ・・・ // data1とdata2の入れ替え temp=data1; data1=data2; 例2) 処理の概要・意図の付記 // data1とdata2の入れ替え ・・・ temp=data1; data1=data2; data2=temp; 数行のソースコード内容をまとめて確認できるため、ソースコードをすばやく読むことができる。 制作者の意図が分かる // ボタン色の切り替え:論理変数flagを使って色を切り替えている boolean flag=false; private void jButton1ActionPerformed(ActionEvent evt) { String a; if(flag) { jButton1.setBackground(Color.white); flag=false; } else{ jButton1.setBackground(Color.red); flag=true;

例3) メソッドの処理内容(概要)の付記 ・・・ // 3つの引数(整数)の中の最大値を返すメソッド 例3) メソッドの処理内容(概要)の付記  ・・・ public int maxValue(int a, int b, int c) { int ans; if(a>=b && a>=c){ ans=a; } else if(b>=c) { ans=b; else { ans=c; return ans; // 3つの引数(整数)の中の最大値を返すメソッド メソッドの処理内容がすぐに分かり、利用しやすくなる。

基礎課題1-2(コメントの練習) プログラムの処理内容が分かるように次の空欄に適切なコメントを記入して下さい。 ・・・ // int data1=Integer.parseInt(jTextField1.getText()); int data2=Integer.parseInt(jTextField2.getText()); int data3=Integer.parseInt(jTextField3.getText()); double ans; // 答を代入する変数 ans=(data1+data2+data3)/3.0; jTextFieldAns.setText(String.valueOf(ans)); 入力データを定義 ① 3つの整数の平均を求める ②

字下げの徹底 <悪い例> <良い例> プログラムの構造を明確にするために字下げを徹底して下さい。不要なミスを防げます。  void jButton1ActionPerformed(ActionEvent evt) {  int a=Integer.parseInt(jTextField1.getText()); if( (a%2)==0 ) { jTextField1.setText("偶数です。"); } else {    jTextField1.setText("奇数です。");} } カッコが閉じているのか分からない! void jButton1ActionPerformed(ActionEvent evt) { int a=Integer.parseInt(jTextField1.getText()); if( (a%2)==0 ) { jTextField1.setText("偶数です。"); } else { jTextField1.setText("奇数です。"); <良い例>

【応用課題1-A】解答例 private void jButtonKeisanActionPerformed(ActionEvent evt) {   int total=1;   int day=1;   int savings=1;   while(total<=10000){ day=day+1; savings=savings*2; total=total+savings;   }   jTextFieldDay.setText(String.valueOf(day)); }