プログラミング入門 情報科学演習
2014.01.27

Back to index page



  1. 本日の作業内容

  2. 宿題の結果について

    最後の宿題でしたが,提出の不備が残念ながらありました.期末試験では注意してください.

    セグメンテーション違反 b1345
    解答用紙不使用 b1316
    ばかもん b1327 b1349

    以下は問題のある答案の例です.

            for(i=0;i<=12;i++){
                    for(j=0;j<=i;j++)
                            printf(" ");
                    for(j=i;j<=25-i;j+=2)
                            printf("%c ",str[j]);
                    printf("\n");
            }
    

    内側の最初の for 文の繰り返しの回数がまずいので,1行目の先頭の a の前にスペースが入ってしまいます.また,それを避けようとして,以下のように書く人も結構いました.

            for(i=0;i<13;i++){
                    for(j=0;j<13-i;j++){
                            printf("%c ",str[j+j+i]);
                    }
                    printf("\n");
                    for(j=0;j<=i;j++){
                            printf(" ");
                    }
    
            }
    

    やはり,最初のスペースの表示の処理を書くようにしましょう.

            for(i=0;i<strlen(str)/2;i++){
                    for(j=0;j<i;j++)
                            printf(" ");
    
                    for(j=i;j<i+1;j++)
                            printf("%c",str[j]);
    
                    for(j=i+1;j<strlen(str)/2;j++){
                            k+=1;
                            printf(" %c",str[j+k]);
                    }
                    k=0;
                    printf("\n");
    
            }
    

    苦し紛れの処理ですね.もっと簡単になります.

            char str[27] = "abcdefghijklmnopqrstuvwxyz ";
            int i,j;
    
            for(j=0; j<13; j+=2){
                    for(i=0; i<27; i+=2)
                            printf("%c ",str[i]);
                    printf("\n");
                    for(i=1; i<25; i+=2)
                            printf(" %c",str[i]);
                    printf("\n");
                    str[j]=' ';
                    str[j+1]=' ';
                    str[24-j]=' ';
                    str[23-j]=' ';
            }
    

    指定した配列の最後をこっそり変えていますね.また,変な処理を行っています.

            for(i=0;i<=12;i++){
                    for(j=0 + i/2;j<=12 - i/2;j++){
                            if(i%2 == 0){
                                    printf("%c ", str[j * 2]);
                            }
                    }
    

    if 文を使用しないでと書いてあったのに,しっかり使っています.

                    for(j=i;j<=25-i;j+=2){
                            printf("%c", str[j]);
                            printf(" ", str[j+1]);
                    }
    

    これも苦し紛れの処理ですね.

    あとはいつものようにインデントの問題です.なかなか無くなりません.

            printf("\n\n---------------------------\n\n");
        return(0);
    }
    

    まだ出てきます.何度も言っていますが,プログラムは張り付けるよりも毎回きちんと入力しましょう.

            printf("\n");
    
            }
    

    閉じ中括弧の上には決して来ないと,これも何度も言いました.

                            }
                    }
                    printf("\n");
    
                    printf("-------------------------------\n\n");
    
                    return(0);
    }
    

    最初だけTAB二つ分になってしまっています.これも何度も注意しました.

            for(i=0;i<=12;i++){
                            for(j=0;j

    こっちは二つ目のインデントがTAB2個分になっています.

  3. 期末試験について

    期末試験ですが,いつものように柱の部分の席を避けて座ってください.席の指定はありません.また,教科書やノートの持込は可能ですし,過去のテキストや種々の解答例 \(^o^)/ の参照も可能です.ただし,他の学生の画面を見るのは禁止です.

    携帯電話は電源を切ってカバンの中に入れてください.携帯電話が鳴動した場合には不正行為として扱うことがありますので,注意してください.

    また,プログラミング入門と情報科学演習C7の受講生の入れ換えですが,短期間で不正な行動を制限する方法として以下のようにしますので,御了解下さい.

    • プログラミング入門の受講生(1年生)は下足を入れるためのビニール袋等を持参し,靴は必ず持ち込むようにして下さい.試験終了後は下足箱の方向へは移動できません.

    • プログラミング入門の試験後,受講生は教室前側の扉から廊下に出て,東側エレベータもしくは非常階段で移動してください.西側へは移動できません.

    • 情報科学演習C7の受講生は1年生が退室するまで教室西側出入口付近および廊下で待機してください.1年生が退室した後着席できます.

  4. 解答用紙

    本日の作業で,模擬的に練習する解答用紙はこれを使用します.これ自身がプログラムですので,使い方に注意してください.

    提出の必要はありませんが,コンパイル等の作業は必ず行ってください.

  5. 実習

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

  6. メンター学習室について

    2/5(水)が最後のメンター学習室となります.それ以外の時間でも質問などありましたら,縄手まで連絡してください.


目次ページに戻る