Comments
Description
Transcript
情報知能工学演習II : 補習 偉そうに説教を垂れます ヒントを拾って下さい
情報知能工学演習 II : 補習 C の勉強のしかたなど 森 耕平 ([email protected]) ver.2007/02/16 偉そうに説教を垂れます ヒントを拾って下さい 情報知能工学演習 II : 補習 – p.1/15 はじめに 単位をおとすと, 「お互いに」大変です 全然わかってないまま単位をとる と後でもっと大変です 「短期」ではなく「長期」の視点 で行動を選びましょう 情報知能工学演習 II : 補習 – p.2/15 一般的傾向 (1) 一度単位を落した人は繰返し単位を 落す傾向にある. 友達と切磋琢磨する機会が減る. 「来年は頑張ろう」 ⇒ 専門科目が増えて忙しい 短期の意欲は興味や習慣や環境の 代用にはならない 情報知能工学演習 II : 補習 – p.3/15 一般的傾向 (2) きちんと取り組んだのに単位を落す 学生は少ない. 大抵は「未提出」か「ごまかし」 × 「わかる/わからない」だけ ○ 「調べる」「試す」「考える」 × できないから,やらない ○ やらないから,できない 情報知能工学演習 II : 補習 – p.4/15 説教おしまい 情報知能工学演習 II : 補習 – p.5/15 今日の目標 1. 非効率な勉強方法から脱却する. 2. 「試すこと」と「調べること」が できるようになる. 3. C のプログラムが行なう処理を 一文ごとに追えるようになる. 情報知能工学演習 II : 補習 – p.6/15 基本要素 (1) 変数 : 「a」, 「sum」 「 *」 演算子 : 「,」「+」, 「a+b」「getchar()」 式 : 「a」, 文 : 「c=a+b;」「printf(...);」 「for(i=1;;i++) 文」 ブロック (複文) : 「{」から「}」 情報知能工学演習 II : 補習 – p.7/15 Example(変数, 演算子, 式, 文) 1: 2: 3: 4: 5: 6: 7: int a, b = 2, *c; a = b*b; c = malloc(a*sizeof(int)) for( b = 0; b < a; i++ ){ c[b] = sqrt(b); c[b]++; } 情報知能工学演習 II : 補習 – p.8/15 基本要素 (2) main 関数 : 「main(..){...}」の 内部の文を順に実行 関数 : main 関数の外側に文をまとめ て記述 構造体, 配列 : 変数をまとめて一つ の変数として扱う 情報知能工学演習 II : 補習 – p.9/15 Example(関数) 1: 2: 3: 4: 5: 6: 7: int fact(int x){ if( x == 1 ) return 1; else return x*fact(x-1) } int main(void){ return fact(3); } 情報知能工学演習 II : 補習 – p.10/15 Example(配列) 1: #include<stdio.h> 2: int main(void){ 3: int i,x[5]={1, 3, 5, 7, 9}; 4: for(i=0;i<5;i++){ 5: x[i] = 3*x[i]; 6: printf("%d\n ",x[i]); 7: } 8: return 0; 9: } 情報知能工学演習 II : 補習 – p.11/15 ポインタ (1) 概念と表記 「変数が置かれている場所」を格 納する変数 宣言は「int *p;」,使用時は 「p」,記憶している場所にある変 数は「*p」 変数 a の置き場所は「&a」 情報知能工学演習 II : 補習 – p.12/15 ポインタ (2) 使用上の注意 上手に使えば書ける処理,書き方 の選択肢が広がる. 間違った使用方法をコンパイラが 見つけてくれない. 詳しくは次回 (安村先生担当) 情報知能工学演習 II : 補習 – p.13/15 Example(バブルソート) 1: #include<stdio.h> 2: void swap(int *a,int *b){ 3: int c; 4: c = *a; *a = *b; *b = c; 5: } 6: int main(void){ 7: int i,j,x[6] = { 7, -3, 1, 2, 0, -1 }; 8: for(i=0;i<6-1;i++) 9: for(j=i+1;j<6;j++) 10: if( x[i] > x[j] ) 11: swap( &(x[i]),&(x[j]) ); 12: for(i=0;i<6;i++) 13: printf("%d \n",x[i]); 14: return 0; 15:} 情報知能工学演習 II : 補習 – p.14/15 プログラムの書き方 課題 : ○○をするプログラムを書け 文法と仕様の基本を理解しておく. 必要に応じて調べる. 典型的なパターンを覚えておく. output の前に input が必要. 経験・練習を積んでおく. たぶん受験の数学に近い. 情報知能工学演習 II : 補習 – p.15/15