工学部精密工学科プログラミング基礎 2014年度

※他学部・他学科の方も履修できます
担当 山下淳 准教授・大竹豊 准教授

テキスト

http://lecture.ecc.u-tokyo.ac.jp/~tohtake/cmain1.pdf
東大内部からのみアクセス可能
関数のグラフのさせ方(gnuplot版)
ファイル入出力についての説明

第1回(10/9)

C言語プログラムの作成・コンパイル・実行,printf 関数による数値の表示を学びます.
講義内容 [PDF]
授業内容の詳細と課題 [PDF]

プログラムの入力・コンパイル・実行のメモ

*.c ファイルをダプルクリックして編集 (emacs ファイル名 でもよい)
gcc ファイル名
./a.out

ターミナル上でよく使うコマンド一覧

"man"マニュアル表示 (ex. "man cp")
"cd"ディレクトリ移動
"cd .." ひとつ上にディレクトリ移動
"pwd"現在のディレクトリの場所を絶対パスで表示
"ls" or "ls -a" ファイル・ディレクトリの情報表示
"mkdir"ディレクトリ表示
"cp"ファイルのコピー
"rm"ファイルの削除
"rmdir"ディレクトリの削除
"emacs", "gnuplot"それぞれの実行
"fg"中断している仕事の復帰

emacsコマンドのメモ

"Ctrl+x Ctrl+s"ファイルセーブ
"Ctrl+x Ctrl+w"別名にしてファイルセーブ
"Ctrl+x Ctrl+f"ファイルオープン
"Ctrl+x Ctrl+c"エディタの終了
"Ctrl+g"編集への復帰
"Ctrl+z"エディタの中断 (復帰は"fg")
移動 "Ctrl+f"一つ前進 (forward)
移動 "Ctrl+b"一つ後退 (back)
移動 "Ctrl+n"一行下へ (next)
移動 "Ctrl+p"一行上へ (previous)
移動 "Ctrl+d"一つ消去 (delete)
"Ctrl+x Ctrl+c"エディタの終了

第2回(10/16)

計算機上での数値の表し方,プログラムにおける変数について学びます.
授業内容の詳細と課題 [PDF]

まとめ
  • 変数とは、計算結果や入力した数値を計算機が覚えておくための「箱」
  • 「箱」(変数)には名前を付けることが出来る(変数名)
  • 「箱」(変数)には種類がある(変数の型、int、long、floatなど)
  • 「箱」(変数)を使う時は、あらかじめ「変数の宣言」によって、型と変数名を決めておく必要がある(たとえばint m,n;)。
  • 変数を宣言すると、計算機のメモリの一部が「箱」(変数)のために割り当てられる。
  • 変数の型によって、1変数あたり何バイト割り当てられるかが違う(sizeof(int)などとやると割り当てられるバイト数を調べられる)。
  • 整数を入れるための型はint,short(2バイト),long(4バイト),unsigned int,unsigned short(2バイト),unsigned long(4バイト)。intはここのmacの場合4バイト。
  • 1バイトは8bit。8桁の2進数で表現できる数は256通り。文字を表現するのにちょうどいい。
  • 2バイト(16bit)で表現できる数は2^16=65536通り。数を数えるのによい。
  • 4バイト(32bit)で表現できる数は2^32=4294967296通り。大きな数を数えるのによい。たとえば日時は1970/1/1 0:00からの秒数で表したりするが、こういう事をするには65536通りでは足りない。
  • intは計算機によって2バイトだったり、4バイトだったりする。計算機が一番計算しやすい大きさになる。
  • 2進数でどうやって負の数を表すか。たとえばshort(2バイト)の場合、65536通りのうち、半分の32768通りを負の数を表すために使う。
    0000000000000000  0
    0000000000000001  1
    0000000000000010  2
    ...
    0111111111111110 32766
    0111111111111111 32767
    1000000000000000  -32768
    1000000000000001  -32767
    1000000000000010  -32766
    ...
    1111111111111110 -2
    1111111111111111 -1
    
  • だから、short型の変数に32767を入れて、1足すと、(shortで表せる範囲を超えて)-32768になってしまう。
  • 同様に、long型の変数に2147483647を入れて、1足すと、-2147483648になってしまう。

第3回(10/23)

超重要 : 繰り返しについて学びます.
授業内容の詳細と課題 [PDF]

まとめ
  • 絶対覚えてほしいこと。
    <for文の基本形>
       for(i=1; i <= 10; i++){
          print("%d\n",i);
       }
    
    <while文の基本形>
       i=1;
       while(i <= 10){
          print("%d\n",i);
          i++;
       }
    
    <do while文の基本形>
       i=1;
       do {
          print("%d\n",i);
          i++;
       }while(i <= 10);
    
    
  • 上記はたとえば次のように使う。どちらも1から10まで表示する。iが1ずつ増えながら、printfが10回繰り返される。
    #include 
    int main(void)
    {
       int i;
    
       for(i=1; i <= 10; i++){
          print("%d\n",i);
       }
    }
    

第4回(10/30)

超重要 : 条件分岐について学びます.
プレゼン資料 [PDF]
解説資料と課題 [PDF]
TAによる解説 [PDF]

gnuplot について

第5回(11/6)

重要 : 関数とポインタについて学びます.
プレゼン資料 [PDF]
解説資料と課題 [PDF]
TAによる解説 [PDF]


中間レポート 必ず提出してください

詳細はこちらをご覧ください.
締め切り2014年12月7日(日) 日本標準時(JST) 23:59 厳守
下記のアドレスにメール添付でお送りください。
  seimitsu.program.2014[at]gmail.com ([at]は@に変更)

第6回(11/20)

これまでの復習としてプログラミングの応用先である数値解析法について学びます.
講義内容と課題は以下のファイルをご覧ください.

数値解析: 講義資料 [PDF 形式][PPT 形式],課題 : [PDF 形式]
追加資料: Visual Studio の使い方 [PDF 形式]
Visual Studio に関する補足資料 リダイレクションの使い方・セキュリティチェックOFFの設定

[TAによる課題の解答例の解説資料]
課題@のヒント

第7回(11/27)

1次元配列について学びます.
講義内容と課題は以下のファイルをご覧ください.
[PDF 形式][PPT 形式]
[TAによる課題の解答例の解説資料]

第8回(12/4)

2次元配列について学びます.
講義内容と課題は以下のファイルをご覧ください.
[PDF 形式][PPT 形式]
[TAによる課題の解答例の解説資料]

第9回(12/11)

文字列の扱いとファイル入出力について学びます.
講義内容と課題は以下のファイルをご覧ください.
[PDF 形式][PPT 形式]
[TAによる課題(1)の解答例の解説資料]
[TAによる課題(2)の解答例の解説資料]

第10回(12/18)

構造体と動的配列について学びます.
講義内容と課題は以下のファイルをご覧ください.
  講義資料 : [PDF 形式][PPT 形式]
  課題資料 : [PDF 形式]
  惑星のデータ
[TAによる課題の解答例の解説資料]
課題@のヒント

最終レポートの準備(1/8)

最終レポート作成に向けて,過去のレポート例を実際に解いてもらいます.
例題はこちら [PDF]

既にC言語をマスターしている人への課題

自分のPCで gcc を使いたい人へ

Cygwin をインストールしてください。
[PDF 資料]
Visual Studio は無償で下記の Express 版をインストールできます。
Visual Studio Express

第2回レポート 必ず提出してください

詳細はこちらをご覧ください.
Visual Studio を使ってやる人はこちらも参照
締め切り2015年2月19日(木) 日本標準時(JST) 23:59 厳守
下記のアドレスへメール添付でお送りください。
  seimitsu.program.2014[at]gmail.com ([at]は@に変更)
質問など:大竹 ohtake[at]den.t.u-tokyo.ac.jp ([at]は@に変更)