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

Back to index page



  1. 本日の作業内容

  2. 宿題の結果について

    今回の宿題では採点不可となるものは幸いにもありませんでした.今後もこの調子で行きましょう.ただし,名前の記入洩れ,学生番号の間違い,ハイフンライン無しのようなこまごましたところで不備のあるものがいくつか見られましたので,以後は注意してください.

    処理に問題のある解答もいくつか出てきましたが,間違っていることは本人が一番よく分かっていると思いますので,解答例などを参考に考え直してください.それでも分からない場合は質問をどうぞ.分からないままにしておくのが一番良くないので必ず理解できるようにしておきましょう.

    以下はインデントの問題ですが,あいかわらず多いです.これもおかしいことが分からない場合は聞いてください.

        for(i=0;i<=9;i++){
            for(j=0;j<i;j++)
                    printf(" ");
            for(j=i;j<8+i*2;j++)
                    printf("%d", j%10);
            for(j=8+i*2;j<13+i*3;j++)
                            printf(" ");
                    for(j=13+i*3;j<=40;j++)
                            printf("%d", j%10);
                    printf("\n");
            }
    
            printf("\n------------------------------------\n");
    
        return(0);
    }
    

    3つめの for 文から何故か下がっています?

                    for(i=0;i<=9;i++){
    
                            for(j=0;j<i;j++)
                                    printf(" ");
    
                            for(k=0;k<=7+i;k++)
                                    printf("%d",(i + k) % 10);
    
                            for(l=-4; l<=i; l++)
                                    printf(" ");
    
                            for(m=i*2+3; m<=30-i;m++)
                                    printf("%d",(i + m) % 10);
    
                            printf("\n");
                    }
    
                            printf("\n------------------------------------\n");
    
                    return(0);
    }
    

    一段目のインデントが何故かTAB2個分になっています.

            for(i=0;i<=9;i++){
            for(j=0;j<i;j++)
                    printf(" ");
            for(j=i;j<i*2+8;j++)
                printf("%d",j%10);
            for(j=i*2+8;j<i*3+13;j++)
                printf(" ");
            for(j=i*3+13;j<=40;j++)
                printf("%d",j%10);
    
            printf("\n");
        }
            printf("\n\n------------------------------------\n");
    
            return(0);
    }
    

    内側の for 文がインデントされていません.構造がよくわかりませんね.何故か,閉じ中括弧だけ出ていますし.

            for(i = 0; i <= 9 ; i++){
    
                                    for(j = 0; j < i; j++)
                                            printf(" ");
                                    for(j = i; j < k; j++)
                                            printf("%d", j%10);
                                    for(j = k; j < l; j++)
                                            printf(" ");
                                    for(j = l; j <= 40; j++)
                                            printf("%d",j%10);
                                    k+=2;
                                    l+=3;
                                    printf("\n");
            }
            printf("\n------------------------------------\n\n");
            return(0);
    }
    

    2段目がTAB3個分になっています.下げればいいってものでは無いです.

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

    最初の printf の位置がおかしいですが,これは以前にも言いました.閉じ中括弧の真上には書きません.

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

    これも古いコピペの残骸ですかね?

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

    1年生にはまだこれが複数名いました.何度も言っていますが,自分ではこれは分からないはずなので,コピペの使いまわしを止めて,一度自分で入力してください.

  3. 前回の復習

    for 文の式2の終了条件が定数でなく,変数になる場合を練習しました. これにより2次元の多様な表現が可能となります.今後も使用しますので, 覚えておいてください.

        for(i=1; i<=5; i++)
            for(j=1; j<=i; j++)
    

    上のように j に関する終了条件を i に依存させることで, 以下のような変数の変化が実現できます.

    (1,1)
    (2,1) (2,2) 
    (3,1) (3,2) (3,3) 
    (4,1) (4,2) (4,3) (4,4) 
    (5,1) (5,2) (5,3) (5,4) (5,5)
    

  4. while

    while 文は,for 文と異なり,終了条件(式2)しか指定しま せん.その分,自由度が高いので,熟練した人はよく使用します.最初は for 文の方が簡単なので,この授業では基本的に for 文を使用しますが,知っておいて損はありません.

  5. 実習

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

  6. 次回の予習範囲

    教科書のp.52-59を予習してきてください.また,配列に関する小テストを実施 しますので,予習をしっかりしてきてください.

  7. 宿題

    授業の終わりに宿題の案内をします.


目次ページに戻る