2001/10/06

"基礎"程式設計入門

希望在這門課, 大家可以藉此機會對 C/C++ 獲得更深一層的認識與了解.

從而可以透過 C/C++ 來解決一堆我們在生活上常會遇到的枯燥問題.

在這門課, 我們並不會著重於演算法, 或者是資料結構上面,

而比較偏於如何去寫一個程式, 以及如何去了解別人的程式.

換句話說, 這是一個經驗分享的課程, 希望能有助於大家在一些寫作上的進展.


一.
    1. 自我介紹
    2. 神的存在

       在元智的網推社板上, 常常可以發現有些名字是刻話在紀念碑上的.
       這些人就有如我們元智資工的精神領導. 因此唸元智, 不可不知.

    3. 上課風格及要求                       其中 1-5 : 30mins

       基本上我不喜歡上課有人吃東西, 不喜歡當場接起手機.
       如果有事情, 可以到教室外, 以不干擾同學為主.
       那一切皆以授課為主, 上機為輔, 希望大家可以自己多多磨練.
       因為這一切只是個開頭, 只是個基礎.

    4. 基礎書籍介紹                              6   : 10mins

       最基本的書, 我覺得可以從施威銘的書開始.
       Turbo C 語言實務 :
            其中把最基礎的 C 徹底講解.
       C++ 語言實務 :
            可以在 C++ 的基礎上打個底子.
       Turbo C Bible / C++ Bible :
            我覺得這兩本任何一本都算是必修的書, 因為當你第一次
            接觸函式時, 這書可以幫助你快速的進入標準函式庫的美
            好世界. 雖然說函式庫太廣了, 但是若這些書理的 function
            略知一二, 知道有哪些 function 大概標準函式庫都會有
            的話, C 就摸熟一大半了.

       Advanced Programming in the Unix Enviroment :
            這本書是讓你踏入 Unix Programming 的最佳用書, 因為
            裡面的文字寫得真的很簡潔易懂, 且針對很多基礎的函式
            述說的更為詳細. 實在是很棒的一本書.
       C++ Primer :
            這本書可以列作 Reference, 當你對於前面的章節要是特
            別有興趣, 這本書多翻一下, 裡面有更進一步的講解. 有
            助於了解的更透徹.

    5. 程式設計的藝術                            7   : 80mins

       1. 結構化程式設計
       2. 應有的註解及描述 //, /* */
       3. 整個程式的分布架構 (.c .h)
       4. 程式編譯的流程

    6. 寫程式的工具 gcc (先介紹小範例)

       gcc -o test test.c
       gcc -Wall -o test test.c

       gcc test.c -I/usr/inclue -L/usr/lib -lc

       gcc -c test.c
        (Compile or assemble the source files, but do not link.)
       gcc -S test.c
        (Stop  after the stage of compilation proper; do not assemble.)
       gcc -E test.c
        (Stop after the preprocessing stage; do not run the compiler proper.)
    7. 從小地方學起, 透過小程式介紹.


       a. 變數. 常數.

        所有的東西只有變數與常數.
        變數 any variable, include enum.
        常數 all constant, like 1, 2, ...

       b. 陣列
        蒐集一個連續的記憶體來存放東西.
       c. operators

        一個一個的說明及其使用方式.
        bitwise. 以及各 operator 的優先順序.

       d. flow control

        if, else if, else
        while, do.. while
        for(;;)
        switch, break, continue

       e. pointer

        pointer 的應用. 及其概念.
        ->, ., [], *, &

       f. function

        function 的功能
        function 的撰寫
        standard library 的呼叫.
        function pointer

       g. 變數生命週期
        local, global, register, static, extern

二.
    1. 從小地方學起 - 續, 透過小程式介紹.
       Struct & Class
       a. member
       b. contruct, destruct                    120 mins
       c. inialize, operators
       d. public, protected, private
       e. virtual function & polymophism
       f. template

三.
    1. C/C++ 的應用
       a. CGI
       b. MySQL's C API

       c. GDK/GTK
       d. Client/Server                         120mins
    2. 適當的工具
       make, gdb, gprof, nm, ldd, ar

       a. gcc -pthread
       b. gcc -M -MM
           -M Tell the preprocessor to output a rule suitable for
              make describing the  dependencies  of  each  object
              file.
          -MM Like  `-M'  but  the  output mentions only the user
              header files included with `#include "file"'.
       c. gcc -shared
       d. gcc -g -pg
       e. gcc -O

    3. 進階書籍

       a. Unix Network Programming Volume 1:
            Interprocess Communications
       b. Unix Network Programming Volume 2:
            Networking APIs: Sockets and XTI
       c. 多型與虛擬

       d. FreeBSD Developers' Handbook
       e. Effective C++
       f. More Effective C++


indent style n.
http://www.tuxedo.org/~esr/jargon/html/entry/indent-style.html


7/8 ~ 7/10 08:30 ~ 11:30

7/ 8 (一) Vim Basic Operation   處理下面的.
          GCC "Hello GCC!\n"    reference the board 精華區 .. :)
          Makefile Overview     寫一個簡單的

7/ 9 (二) Memory Management
          ranlib
          ar
          ld
          nm
          shared library

7/10 (三) GDB Usage
          Performance estimate
            1. time
            2. gprof
            3. objdump

No comments: