課程介紹:
程序設計是一門基礎課程。對于計算機相關專業(yè)而言,程序設計是專業(yè)基礎知識,是進一步學習其他專業(yè)知識的第一步階梯;對于非計算機專業(yè)而言,程序設計的學習有助于理解計算機的能力所在,理解哪些是計算機擅長解決的問題,怎樣的方式方法是計算機擅長的手段,從而能更好地利用計算機來解決本專業(yè)領域內(nèi)的問題。
C語言是古老而長青的編程語言,它具備了現(xiàn)代程序設計的基礎要求,它的語法是很多其他編程語言的基礎,在系統(tǒng)程序、嵌入式系統(tǒng)等領域依然是無可替代的編程語言,在各類編程語言排行榜上常年占據(jù)前兩名的位置。
對于非計算機專業(yè)的學生,學習本課程的主要目的是掌握程序設計的基本方法,C語言是教學媒介。但是對于計算機專業(yè)的學生,本課程是向后續(xù)的計算機組成、操作系統(tǒng)、編譯原理、體系結(jié)構等課程前進的基石。
本課程是以C語言來講授程序設計的入門知識,而非具體教授C語言,關于C語言的全面知識,還需要學習本課程的后續(xù)課程——“C語言程序設計進階”。
程序設計是實踐性很強的課程,該課程的學習有其自身的特點,聽不會,也看不會,只能練會。你必須通過大量的編程訓練,在實踐中掌握編程知識,培養(yǎng)編程能力,并逐步理解和掌握程序設計的思想和方法。在這里所提供的,只是基礎的知識講解,要想學會編程,還需要更多時間的投入和努力。
為了學習編程,你需要有一臺計算機,安裝必要的編程軟件。無論是MS Windows、Mac OS X還是Linux,都有適合C語言編程的軟件。
課程講師:翁愷
講師介紹:
計算機博士,浙江大學計算機學院教師,ACM-ICPC優(yōu)秀教練獎得主,2011世界總決賽金牌教練。主要講授包括C、C++、Java程序設計,程序設計語言原理,計算機體系結(jié)構,嵌入式系統(tǒng)等課程。
專業(yè)方向為嵌入式操作系統(tǒng)和嵌入式系統(tǒng)應用,是國內(nèi)Arduino和樹莓派應用的鼓吹者,翻譯出版了多本相關書籍,在創(chuàng)客界交友廣泛。
2004年前后的Java教學視頻在網(wǎng)絡上流傳甚廣,現(xiàn)在在網(wǎng)易云課堂 上開設有Java、C++、Arduino等多門課程。
業(yè)余愛好無線電,1988年開始玩業(yè)余電臺,電臺呼號BA5AG,主要玩莫爾斯碼、短波、數(shù)據(jù)通信和衛(wèi)星通信。是浙大傳統(tǒng)毅行的發(fā)起者和早期組織者之一。
課程大綱
第一周:從做點計算開始
1.1 計算機與編程語言
計算機怎么做事情的,編程語言是什么,計算機的思維方式是怎樣的,為什么是C;關于C語言和版本的極其簡單的歷史 。
1.2 第一個程序
C語言的編程軟件選擇太多,我們推薦Dev C++;如何在Dev C++中編輯、編譯和運行程序;詳解第一個程序:程序框架、printf、出錯怎么辦;做點計算:如何讓程序輸出算術結(jié)果
1.3 數(shù)據(jù)是用變量來表示的
變量定義:變量是做什么的,如何定義一個變量;變量賦值與:a=b表示把b的值賦給a,而不是它們相等;變量輸入:如何讓程序讀入用戶輸入的數(shù)字
1.4 計算是由表達式來完成的
表達式:運算符和算子,取余計算,程序就是數(shù)據(jù)加計算;浮點數(shù):整數(shù)運算的結(jié)果只有整數(shù)部分,不然就要用浮點數(shù)
;運算符優(yōu)先級:優(yōu)先級、結(jié)合關系、賦值運算符;復合賦值和遞增遞減
第二周:做點決定
2.1 做判斷
做判斷:if語句根據(jù)條件決定做還是不做;判斷的條件 關系運算,做比較的運算符; 否則的話:如果條件不成立呢?; 邏輯運算:對比較的結(jié)果進行與、或、非運算
2.2 復雜的判斷
邏輯運算;嵌套的if-else:在if或else后面要執(zhí)行的還是if語句,就成了嵌套; 級聯(lián)的if-else if:像分段函數(shù)這樣的程序就可以寫成級聯(lián)的if; if-else的常見錯誤:沒有{}、多了;、=和==這些都是常見的錯誤
2.3 分支
多路分支:switch-case語句
第三周:不斷地重復
3.1 重復做事情
循環(huán):有些事情就得用循環(huán)才能解決;while循環(huán):就像if一樣,條件滿足就不斷地做后面大括號里的句子;do-while循環(huán):不管三七二十一,先做循環(huán)內(nèi)的句子再判斷條件
3.2 for循環(huán)
for循環(huán):這是最古老的循環(huán); 循環(huán)的計算和選擇:如何計算循環(huán)的次數(shù),如何選擇不同的循環(huán)
第四周:循環(huán)控制
4.1 循環(huán)控制
循環(huán)控制:如何用break和continue來控制循環(huán) 嵌套的循環(huán):在循環(huán)里面還是循環(huán); 從嵌套的循環(huán)中跳出:break只能跳出其所在的循環(huán)
4.2 循環(huán)計算
猜數(shù)游戲;算平均數(shù);整數(shù)求逆;前n項求和;整數(shù)分解;求最大公約數(shù)
第五周:經(jīng)常做的事情可以摘出來
5.1 初見函數(shù)
函數(shù)的定義和調(diào)用
從函數(shù)中返回
5.2 使用函數(shù)
函數(shù)原型:用來告訴編譯器這個函數(shù)長什么樣兒
參數(shù)傳遞:調(diào)用函數(shù)的時候,是用表達式的值來初始化函數(shù)的參數(shù)
5.3 本地變量
本地變量:定義在函數(shù)內(nèi)部的變量是本地變量,參數(shù)也是本地變量
函數(shù)庶事:一些有關函數(shù)的細節(jié)問題,main()是什么
第六周:要記錄很多數(shù)據(jù)
6.1 數(shù)組
6.1 初試數(shù)組
數(shù)組的使用:如何定義和使用數(shù)組,數(shù)組的下標和下標的范圍
6.2 數(shù)組運算
數(shù)組的例子:統(tǒng)計個數(shù) 數(shù)組例子:素數(shù)
二維數(shù)組
第七周:計算機不只是做數(shù)學
7.1 字符類型
7.2 字符串處理函數(shù)