ぼんさい塾

ぼんさいノートと補遺に関する素材や注釈です.ミスが多いので初稿から1週間を経た重要な修正のみ最終更新日を残しています.

NetBeansによる演習 (7+)

2013-12-31 14:03:46 | 暮らし
progJ.pdf
progJ-s.pdf
progJ-e.pdf

記事一覧

                            派生クラスの追加

progJ-e.pdf へ [#38%22] を追加しました.
※ [#29%4],[#38%2] も少し変更.

//Stack.java
package myproj; import java.util.*;
class Stack extends List {
  void push(String s){
    if(sz >= 0){ins(s, 1);}
  }
  String pop( ){
    Cell c = top.n;
    if(sz <= 0){sz--; return "0";}
    del(1); return c.d;
  }
  int popInt( ){
    return Integer.parseInt(pop( ));
  }
  void pushInt(int n){
    push(Integer.toString(n));
  }
  void addInt( ){
    pushInt(popInt() + popInt( ));
  }
  void multInt( ){
    pushInt(popInt() * popInt( ));
  }
  public static
  void main(String[ ] args) {
    Stack d = new Stack( );
    String expr = "123 45 + 6 * =";
    String s; char c;
    StringTokenizer st;
    st = new StringTokenizer(expr);
    while(st.hasMoreTokens( )){
      s = st.nextToken( );
      c = s.charAt(0);
      if(c == '=') break;
      if(c == '+'){d.addInt( );}
      else if (c == '*'){d.multInt( );}
      else{d.push(s);}
    }
    s = d.pop( ); if(d.sz != 0){s = "?";}
    System.out.println(s);
  }
}


gccによる演習 (8)

2013-12-18 20:37:48 | 暮らし

progC.pdf
progC-s.pdf
progC-e.pdf
記事一覧

訂正:2014-01-21

 
                      自己参照構造体

progC-e.pdf に [#5: 構造体] の部分を追加しました.
※ Prog5-2.c はコンパイル時に警告がでます(未検討).
画像を差し替えました(2014-01-21): *.c で警告つきで動いていたのが *.cpp では動かなくなり,エラーメッセージを見て誤りに気づき,progC.e.pdf の [#54] も修正しました.

参考資料($[n]は本文でも引用, *.pptはブロック解除が面倒なので未調査):
[1] C99 - ウィキペディア
  http://ja.wikipedia.org/wiki/C99
[2] 6. 複素数型 - プログラミング言語 C の新機能
  http://seclan.dll.jp/c99d/c99d06.htm
[3] 2分探索木 - Wikipedia
  http://ja.wikipedia.org/wiki/2%E5%88%86%E6%8E%A2%E7%B4%A2%E6%9C%A8
[4] 自己参照構造体
  http://www9.plala.or.jp/sgwr-t/c/sec15-5.html

補足:(1) 共用体の演習は省略しました.
(2) 実行中の画面
 


構造化チャート

2013-12-11 23:06:19 | 暮らし
IT.pdf
IT-s.pdf
IT-e.pdf

記事一覧

                                   各種の構造化チャート [4]

作成中の資料 sc-C.pdf に関連してgoogle で「構造化チャート」を検索しました.

[1] 【プログラミング教育におけるPADの有用性】 Cなどの構造化プログラミング
  http://q.hatena.ne.jp/1198751133
[2] プログラムを設計する時に使用する「フローチャート」はもう古い?
  http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1461050144
[3] 構造化プログラミング - 岐阜経済大学
  http://www.gifu-keizai.ac.jp/~ido/doc/system_design/structured_programming.pdf
[4] プログラミング教育における構造化チャートの再評価
  http://www.healthcare-m.ac.jp/faculty/resources/bulletin2010/03kawashima.pdf
  http://www.webstore.jsa.or.jp/webstore/Com/FlowControl.jsp?lang=jp&bunsyoId=JIS+X+0128%3A1988&dantaiCd=JIS&status=1&pageNo=0
  JIS X 0128-1988 和文PDFダウンロード 735円(本体価格700円) 
[5] PAD (Problem Analysis Diagram)によるプログラムの設計および作成
  http://ci.nii.ac.jp/naid/110002723539
[6] PAD manual (pad2ps-3.1j-pl5)
  http://axion-gw.ee.uec.ac.jp/japanese/tools/pad2ps/manual.pdf
[7] アルゴリズム+データ構造=プログラム
  http://www.fukkan.com/fk/VoteDetail?no=8797
  http://blog.e-hiyori.org/?eid=6
-----
[8] Structure chart
  http://en.wikipedia.org/wiki/Structure_chart
[9] さまざまな構造化チャート
  http://www.acroquest.co.jp/webworkshop/programing_course/index8.html
[10] PAD について
  http://www2.ee.knct.ac.jp/el/E2/L210/algorism/pad1.html
[11] 構造化プログラミングと NS チャート
  http://www.kushiro-ct.ac.jp/yanagawa/C/0513/index.html#nschart
[12] ストラクチャーチャートの書き方
  http://www1.plala.or.jp/tsuu/pc/html/first_step/structured_programming/kouzouzu.html
[13] プログラミング教育における HCPチャートの再評価
  http://crew-lab.sfc.keio.ac.jp/papers/data/Manabu%20Sugiura/RevaluationOfHCPChart.pdf

補足:(1) 「チャートで復習 C再入門」(sc-C.pdf) でチャートを用いた意図
     「char s[8], *p=s;」 のような宣言を 「char[8]  s;  char*   p=s;」 と考えると分かり易いと progC-e.pdf, ya-C.pdf で書いたので, (「char  *p;」 と 「char*  p;」のように) どちらでもよいと 初心者が誤解することへの対策 (図なら C の文法に逆らい易い).
(2) 構造化チャートでは連接,選択,反復による処理の分解の説明が多いようですが,チャートは
   
のようなデータ構造 ([7], p.22) の記述にも有効です.メンバ関数(メソッド)付き構造体がオブジェクトであり,派生クラスを次のように表現できます [14].
   
データ構造の表現への応用の典型は生成文法の表現です [15].固定小数点の実数は,Cもどきで表現すると
    {
       if(yesno()) "-";
     
 data{digit();}while(yesno());
       if(yesno()){
           ".";
           data{digit();}while(yesno());
       }
   }//yesno() は2値乱数,digit() は数字.
で,字句解析の処理と密接に対応しています.

(3) Pascal のプログラミングでは PAD の有り難味は少ないのですが(stepwise refinement は擬似コードでもできます),アセンブリ言語でアプリケーションを開発したときや古い FORTRAN で講義したときは重宝しました [16].
   
[14] A kind of PAD including declaration to teach C/C++ programming
  http://www.ineer.org/Events/ICEE2008/full_papers/full_paper377.pdf
[15] 生成文法 - Wikipedia
  http://ja.wikipedia.org/wiki/%E7%94%9F%E6%88%90%E6%96%87%E6%B3%95
[16] 英文ワープロ用の表計算アプリ (使える名前は 'K'+4文字)
  http://pulsar.blog.ocn.ne.jp/etc/mathpack.pdf