情報科学演習
2012.11.12

Back to index page



  1. 本日の作業内容

  2. 前回の宿題の結果について

    まずは,コンパイルエラーの答案です.残念ながらなかなか無くなりません.提出されても採点しませんので,きちんと確認してからにしましょう.

    b1227 b1276(こちらはソースコード中に日本語文字がまざるエラーです)

    以下に示す4名の答案は0点です.理由はここには書きませんが,半期分の単位がなくならないだけありがたいと思いましょう.

    b1202 b1215 b1244 b1273

    解答用紙の不使用もまだありました.残念です.

    b1247

    なお,今回の解答ですが,解答例に示した処理以外は全て減点しています.なぜならば,if else などで構成したものは次週以降反復処理を学習しても応用が利かないからです.解答例に示したものは,例えば,for 文でも書き直せますので,10文字でも100文字でも何文字でも入れ換えが可能になります.

    以下はインデントのまずい答案です.授業中に説明しますので,よく理解してください.

            if(a>b){                   <--
                            v =a;      <-- この2つのインデントの量が異なっています
                            a =b;
                            b =v;
                            }
    
    --------------------------------------------------------
    
            if(a > b){
            d = a;                     <-- インデント無し
            a = b;
            b = d;}
    
    ---------------------------------------------------------
    
    main()
    {
        srand((unsigned) time(NULL));   <-- インデントの量が異なっている
                                           ↓
            
            int a = rand() % 25 + 65 , b = rand() % 25 + 65 , c = rand() % 25 + 65 , tmp;
    
    -------------------------------------------------------------
    
            if(s>t){
                    n=s;
                    s=t;
                    t=n;
    }                                  <-- インデントされていない
    
    -----------------------------------------------------------
    
            if(s>t){
                    v=s;
                    s=t;
                    t=v;
                    }
    
                    if(s>u){              <-- このifは上のifと同じレベル
    
    ------------------------------------------------------------
    
    main( )
    {
            srand((unsigned)time(NULL));        <--
    
                    int a, b, c ,d;             <-- 同じレベル
                    a = rand( ) % 26 + 65;
                    b = rand( ) % 26 + 65;
                    c = rand( ) % 26 + 65;
    
    --------------------------------------------------------------
    
        if(b > c){     <--
          num = b;     <-- インデントの量が異なっている
          b = c;
          c = num;
        }
    
    -----------------------------------------------------------------
    
            if(s > t){                            <--
                                    n = s;        <-- インデントの量が異なっている
                                    s = t;
                                    t = n;
            }
    
    -----------------------------------------------------------------
    
    
            int a, b, c, tmp;                    <--
                    a = rand() % 26 + 65;        <-- 同じレベル
                    b = rand() % 26 + 65;
                    c = rand() % 26 + 65;
    
    

  3. 前回の復習

    • else

      else の処理について実習を行いました.if だけではやりづ らい2者択一の処理も else を使ってすっきりと実現できます. 今後も必要に応じて使ってください.

    • 論理演算式

      if 文の判別式の部分で論理演算の間違いをしている人が実習中に結構 見られました.以下のようなものは間違いですので,注意してください.

      	    if(a == 1, 2, 3)
      
      	    if(a == 1 || 2 || 3)
      

    • 除算と剰余算の上手な使い方

      トランプの課題を行いましたが,以下のように考えると if 文がすっきりしますので,適宜活用してください.トランプについては配列を学習したらまた扱います.

               0  1  2  3  4  5  6  7  8  9 10 11 12  <-- 13で割ったら商が0 Spades
              13 14 15 16 17 18 19 20 21 22 23 24 25  <-- 13で割ったら商が1 Hearts
              26 27 28 29 30 31 32 33 34 35 36 37 38  <-- 13で割ったら商が2  Diamonds
              39 40 41 42 43 44 45 46 47 48 49 50 51  <-- 13で割ったら商が3  Clubs
      13で割った剰余   0  1  2  3  4  5  6  7  8  9 10 11 12
                       K  A  2  3  4  5  6  7  8  9 10  J  Q
      				 
  4. switch

    switch 文は規則性の無い選択処理の際に使用すると便利です.が,み なさんの場合は if 文を使用してすっきりと書けるものまで switch を使ってしまう例がこれまで見られます.ですので,この授 業では本日の実習以外では switch 文を使用する処理は使わない と思ってください.すみません.

  5. 実習

    実習の演習問題は当日ご案内します.

  6. 次回の予習範囲

    教科書のp.41まで予習をしてきてください.教科書のp.38にある復号演算子は特 に重要です.必ず予習してきてください.

    また,次回は for 文に関する小テストを実施しますので,予習は特に念入りにお願いします.

  7. 宿題

    授業の終わりに宿題の案内をします.ただし,問題を見ることができるのは13日以降です.


目次ページに戻る