...

情報知能工学演習II : 補習 偉そうに説教を垂れます ヒントを拾って下さい

by user

on
Category: Documents
25

views

Report

Comments

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
Fly UP