版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
《高級語言程序設(shè)計(jì)》學(xué)習(xí)指南《高級語言程序設(shè)計(jì)》是計(jì)算機(jī)學(xué)科的專業(yè)基礎(chǔ)課,一般是在大學(xué)一年級第一學(xué)期開設(shè),是同學(xué)們進(jìn)入大學(xué)的第一門課程。從課程名稱看,“高級語言”是定語,“程序設(shè)計(jì)”是主語,體現(xiàn)了本課程的重點(diǎn)。學(xué)習(xí)本課程一定要抓住“程序設(shè)計(jì)”這個(gè)綱,學(xué)習(xí)的目的是學(xué)會(huì)“怎么編程序”、是培養(yǎng)自己的“計(jì)算思維”思想,而不是背那些C語言的符號、說明、語句等。就是說,學(xué)習(xí)本課程主要學(xué)習(xí)程序設(shè)計(jì)思想和方法,培養(yǎng)基本的算法和程序設(shè)計(jì)能力、良好的程序設(shè)計(jì)風(fēng)格和團(tuán)隊(duì)精神。培養(yǎng)程序設(shè)計(jì)能力的關(guān)鍵是實(shí)踐。要想學(xué)好程序設(shè)計(jì),洞悉該課程的精髓,并靈活運(yùn)用;一定要重視實(shí)驗(yàn)課和課程設(shè)計(jì)課。不僅要在理論課環(huán)節(jié)掌握基本的理論知識(shí),而且還要在配套的實(shí)踐環(huán)節(jié)進(jìn)行實(shí)際操作。一定要多編程序,注意培養(yǎng)自己找出算法、提出算法的能力,才會(huì)深入理解程序設(shè)計(jì)思想和方法,并將所學(xué)知識(shí)應(yīng)用到實(shí)際中,成為程序設(shè)計(jì)高手。大學(xué)一年級第一學(xué)期正是同學(xué)們由中學(xué)學(xué)習(xí)向大學(xué)學(xué)習(xí)進(jìn)行過渡的重要階段;要想學(xué)的好大學(xué)課程(尤其是本課程),最重要的是轉(zhuǎn)變學(xué)習(xí)模式和學(xué)習(xí)方法。大學(xué)學(xué)習(xí)更多是靠自學(xué),強(qiáng)調(diào)自我管理;因此需要掌握的不僅僅是教師課上所講內(nèi)容,還有很大一部分是在課外自我學(xué)習(xí)過程中獲得;相對課上有限學(xué)時(shí)的講授,還需要額外付出2-3倍或者更多的時(shí)間進(jìn)行自學(xué);才有可能真正掌握所學(xué)課程內(nèi)容。課堂學(xué)習(xí)課堂是學(xué)習(xí)《高級語言程序設(shè)計(jì)》基礎(chǔ)理論的最好時(shí)機(jī)。上課前,應(yīng)適當(dāng)瀏覽教材,了解課上所學(xué)內(nèi)容,掌握課程梗概。上課時(shí),要認(rèn)真聽老師授課,如果遇到問題應(yīng)及時(shí)提出,必要時(shí)要和教師當(dāng)堂進(jìn)行討論。需注意該課程實(shí)踐性極強(qiáng),教師很多情況下會(huì)直接在C語言編譯環(huán)境中進(jìn)行講解,這時(shí)更需要集中精神聽課,對開發(fā)環(huán)境有一個(gè)初步了解,為實(shí)踐教學(xué)做好鋪墊。課后,要復(fù)習(xí)課堂內(nèi)容,如果條件允許可以上機(jī)調(diào)試課堂所講例題。要獨(dú)立認(rèn)真完成作業(yè)和練習(xí),通過習(xí)題不斷深化對相關(guān)概念理解,發(fā)現(xiàn)薄弱環(huán)節(jié)。遇到問題時(shí),首先要獨(dú)立思考,努力通過查閱資料解決問題。如果自己無法解決時(shí),可以和同學(xué)和教師進(jìn)行討論,解決問題。通常,一個(gè)問題可以有多個(gè)解,不要局限于一個(gè)解,而要試著尋找其他解。本課程的重點(diǎn)是學(xué)習(xí)程序設(shè)計(jì),而C語言僅作為此類知識(shí)的載體。對C語言采取“有所取、有所不取”的策略,對與學(xué)習(xí)程序設(shè)計(jì)方法密切相關(guān)部分重點(diǎn)介紹(例如各種控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)等);對與學(xué)習(xí)程序設(shè)計(jì)方法有關(guān)但不十分密切部分簡單介紹(例如共用體);對與學(xué)習(xí)程序設(shè)計(jì)方法關(guān)系不大的部分根本不介紹(例如goto語句)。因此,學(xué)習(xí)過程中要了解這一點(diǎn),明確學(xué)習(xí)的重點(diǎn)和難點(diǎn)。本課程采用“案例驅(qū)動(dòng)”講解程序設(shè)計(jì)方法,其中包括了不少程序設(shè)計(jì)的經(jīng)典案例。“案例”不是為了解釋語言概念,而是從構(gòu)造算法出發(fā),以訓(xùn)練學(xué)生的實(shí)際編程能力為目標(biāo)。本課程采用如下圖所示的教學(xué)模式,明確此模式,不僅可以幫助理解教師授課內(nèi)容,同時(shí)也可以明確課后學(xué)習(xí)的基本方式。提出有意義的問題提出有意義的問題設(shè)計(jì)算法分析算法特點(diǎn)編出程序課后習(xí)題配合講述大量例題介紹所用語言成分運(yùn)行程序"授之以漁"的教學(xué)模式實(shí)踐課程《高級語言程序設(shè)計(jì)》是實(shí)踐性極強(qiáng)的課程,可以說沒有上機(jī)實(shí)踐,就不算學(xué)習(xí)程序設(shè)計(jì)。本課程的實(shí)踐課程包括:課堂實(shí)踐、實(shí)驗(yàn)課、課程設(shè)計(jì)3部分有學(xué)時(shí)的實(shí)踐課程;此外還開設(shè)創(chuàng)新實(shí)踐無學(xué)時(shí)的教學(xué)環(huán)節(jié)。課堂實(shí)踐:課堂講授例題時(shí),在設(shè)計(jì)出算法之后,教師會(huì)直接在計(jì)算機(jī)上編出程序、調(diào)試和運(yùn)行程序、最后得到結(jié)果。目的是讓學(xué)生對程序加深理解;對實(shí)踐過程有一個(gè)初步印象,初步感受和熟悉上機(jī)實(shí)驗(yàn)過程。與之配套的是課后復(fù)習(xí)時(shí),學(xué)生要自己動(dòng)手演練教師課堂演示的過程,加深理解。實(shí)驗(yàn)課:在課程內(nèi)容進(jìn)行到一定階段之后,開始實(shí)驗(yàn)課。實(shí)驗(yàn)題目代碼規(guī)模較小,其目的是讓學(xué)生自己動(dòng)手完成有目的布置的實(shí)驗(yàn)題目,解決一些有意義的問題,掌握解決實(shí)際問題的方法步驟,鞏固理論課所學(xué)知識(shí)。實(shí)驗(yàn)課采取小班授課模式,這樣學(xué)生會(huì)有更多機(jī)會(huì)和教師進(jìn)行面對面的交流,這種交流對于程序設(shè)計(jì)課程非常重要,可以說是事半功倍;因此一定要充分利用實(shí)驗(yàn)課。由于課程時(shí)間有限,因此一定要在課前要進(jìn)行預(yù)習(xí),編寫好實(shí)驗(yàn)所需代碼;課上時(shí)間主要用于程序調(diào)試和運(yùn)行。如覺得實(shí)驗(yàn)題目有些難,則可以從書上例題開始,進(jìn)行編譯、調(diào)試和運(yùn)行等環(huán)節(jié),逐漸掌握所學(xué)知識(shí)點(diǎn),而后完成實(shí)驗(yàn)題目。課程設(shè)計(jì):課程設(shè)計(jì)在理論課程和實(shí)驗(yàn)課結(jié)束后進(jìn)行,一般以3-5人為一個(gè)小組,完成較大的有實(shí)際價(jià)值的程序設(shè)計(jì)題目。目的是讓學(xué)生深刻體會(huì)程序開發(fā)的全過程,初步體驗(yàn)軟件工程方法;培養(yǎng)學(xué)生的團(tuán)隊(duì)協(xié)作精神,同時(shí)強(qiáng)調(diào)團(tuán)隊(duì)工作中的個(gè)人責(zé)任。由于是小組完成,就有做多、做少或者不做的問題;要想學(xué)的好,就必須端正態(tài)度,積極、真正地參與到開發(fā)過程中;而不是等、靠、要。課程設(shè)計(jì)同樣采取小班授課的模式,相對于實(shí)驗(yàn)題目,課程設(shè)計(jì)題目描述比較籠統(tǒng),其中有許多內(nèi)容需要自我發(fā)揮;因此與教師交流就變得十分重要,不僅有助于掌握題目具體要求,而且還可知道自己想法是否實(shí)用。同樣小組內(nèi)的交流也十分重要,需要實(shí)時(shí)交流明確各自的分工和進(jìn)度,才能協(xié)同完成題目。創(chuàng)新實(shí)踐:創(chuàng)新實(shí)踐以科技活動(dòng)小組形式進(jìn)行,由興趣濃厚的學(xué)生自愿組成,包括:申報(bào)并完成學(xué)校立項(xiàng)并給與資金資助的“大學(xué)生創(chuàng)新機(jī)會(huì)計(jì)劃”項(xiàng)目、參加ACM程序設(shè)計(jì)大賽等競賽、參與教師的科研項(xiàng)目、由教師指導(dǎo)自選題目等,培養(yǎng)學(xué)生的初步科研能力和創(chuàng)新精神。若想?yún)⒓?,就必須時(shí)時(shí)關(guān)注各類通知,本著“重在參與”的理念參與活動(dòng);但是一旦參入其中,就必須認(rèn)真對待,不要虎頭蛇尾。網(wǎng)絡(luò)資源作為國家精品課程,本課程網(wǎng)站/programming.html上提供了豐富的網(wǎng)絡(luò)學(xué)習(xí)資源和師生交流渠道,一定要充分利用。此外,對于其上無法解決的問題,要主動(dòng)在網(wǎng)絡(luò)上搜索;用一句話總結(jié)就是“外事不決問谷歌,內(nèi)事不決問百度”。下邊針對本課程各章的知識(shí)點(diǎn)、重點(diǎn)和難點(diǎn),提出以下學(xué)習(xí)指導(dǎo)意見,供同學(xué)們參考。祝大家學(xué)業(yè)進(jìn)步!第一章緒論本章需要掌握程序、程序設(shè)計(jì)、算法、PAD圖和程序執(zhí)行等相關(guān)概念。課程內(nèi)容由解決“雞兔同籠”問題為案例來驅(qū)動(dòng),問題不難(解二元一次方程),采用的消去法也是中學(xué)知識(shí)?!纠?.1】我國古代數(shù)學(xué)著作《孫子算經(jīng)》提出“雞兔同籠”問題如下:“今有雞兔同籠,上有三十五頭,下有九十四足,問雞兔各幾何?”。其難點(diǎn)在于如何理解消元法,如何將消元法的思想和計(jì)算過程描述出來,然后翻譯成C語言的代碼,最終運(yùn)行得到結(jié)果。部分內(nèi)容是需要記憶的,如同學(xué)習(xí)英語、法語等語言類似,很多東西需要“先記憶,再理解”;許多問題需要先放一放,在后面章節(jié)的講述中會(huì)自然找到答案。對VisualC++集成開發(fā)環(huán)境熟悉,不僅需要瀏覽教材中圖文講解,還要注意教師課堂演示。更重要的是自己動(dòng)手,可以選擇以例1.1為切入點(diǎn),進(jìn)行練習(xí)。本章的重點(diǎn)是:把某問題的計(jì)算過程描述出來,這也是本課程的基本任務(wù)和重點(diǎn)。本章乃至整個(gè)課程的難點(diǎn)就是“算法訓(xùn)練”,算法訓(xùn)練除了數(shù)學(xué)基礎(chǔ)之外,靠長期積累和悟性。大家要打好數(shù)學(xué)基礎(chǔ),并且要多訓(xùn)練,多編程序,平時(shí)多站在算法的角度思考問題。第二章簡單程序本章以“求綠化帶寬度”為案例,引入順序程序設(shè)計(jì)思想;同時(shí)介紹如標(biāo)識(shí)符、變量、常量、運(yùn)算符、表達(dá)式、輸入/輸出等基本語言成分;其中許多內(nèi)容需要記憶,雖然繁瑣但不可避免;所有內(nèi)容不用一次全記下來,許多隨課程內(nèi)容不斷深入,即可在不知不覺中記住?!纠?.1】如圖2.1所示,在長500m、寬300m的近似矩形的地域內(nèi)保護(hù)80000m2的地塊,求沿四周植樹建綠化帶的寬度?!?.2語句”需要知道語句是對數(shù)據(jù)的操作,對語句的基本分類有一個(gè)大概的印象?!?.3表達(dá)式”需要注意C語言表達(dá)式和數(shù)學(xué)中表達(dá)式的區(qū)別,尤其是在書寫方面;區(qū)別‘賦值’和數(shù)學(xué)中‘=’,了解相關(guān)運(yùn)算符號的意義和使用方式?!?.4基本符號”需要知道ASCII碼,理解程序中數(shù)字和字符在存儲(chǔ)上的不同,掌握標(biāo)識(shí)符的構(gòu)成規(guī)則,可以靈活對程序代碼添加注釋?!?.5數(shù)據(jù)”需要了解什么是數(shù)據(jù),掌握變量和常量的基本概念和使用方式?!?.6數(shù)據(jù)類型”需要了解數(shù)據(jù)類型的意義,掌握算數(shù)類型變量的聲明和使用方式,了解混合運(yùn)算規(guī)則和隱式類型轉(zhuǎn)換,可以使用顯示類型轉(zhuǎn)換?!?.7輸入和輸出”需要能靈活掌握數(shù)據(jù)輸入和輸出函數(shù)的使用。上述內(nèi)容需要配合課后作業(yè)、習(xí)題和實(shí)驗(yàn)題目,進(jìn)行練習(xí);心中需要記?。撼绦虼a是人類大腦思維的反映,編寫代碼就是將這一思維過程用計(jì)算機(jī)語言書寫出來。不要產(chǎn)生畏難情緒,從目前情況來看,電腦是人造的,再怎么聰明,還是不能超越人類。本章的重點(diǎn)是:C語言表達(dá)式構(gòu)成及其運(yùn)算規(guī)則。表達(dá)式構(gòu)成這章可以掌握,但是其運(yùn)算規(guī)則可以掌握個(gè)大概,知道運(yùn)算符分優(yōu)先級、同級運(yùn)算分“左結(jié)合”“右結(jié)合”就可以。具體運(yùn)算符可以在后續(xù)學(xué)習(xí)中逐步掌握。第三章分支程序設(shè)計(jì)本章重點(diǎn)講述程序設(shè)計(jì)中的分支結(jié)構(gòu),貫穿始終的是以“對學(xué)生成績判斷”為案例。【例3.1】編程序,輸入某學(xué)生本學(xué)期程序設(shè)計(jì)課程成績,判斷并輸出他是否及格?!纠?.4】學(xué)校曾經(jīng)組織了一次“程序設(shè)計(jì)大獎(jiǎng)賽”,規(guī)定本學(xué)期程序設(shè)計(jì)課的成績可以根據(jù)是否在大獎(jiǎng)賽上獲獎(jiǎng)而加5分。編程序,計(jì)算某同學(xué)的程序設(shè)計(jì)課成績?!纠?.8】學(xué)校曾經(jīng)組織了一次“程序設(shè)計(jì)大獎(jiǎng)賽”,規(guī)定本學(xué)期程序設(shè)計(jì)課的成績可以根據(jù)大獎(jiǎng)賽的成績適度加分。加分規(guī)則是參賽者加5分,三等獎(jiǎng)加15分,二等獎(jiǎng)加20分,一等獎(jiǎng)加30分,總分不超過100分。編程序,計(jì)算某同學(xué)的程序設(shè)計(jì)課成績。分支結(jié)構(gòu)對應(yīng)實(shí)際生活中的“選擇”這一行為;經(jīng)提煉和抽象,分為單分支、雙分支和多分支三種結(jié)構(gòu),分別對應(yīng)‘if語句’、‘if-else語句’和‘switch-case語句’?!?.1雙分支語句”需要掌握分支語句中判斷條件,分支執(zhí)行的順序,以及程序書寫的格式?!?.2單分支”需要掌握單分支語句的執(zhí)行過程,了解else的二義性問題,知道如何避免此問題。“3.3邏輯判斷”需要掌握什么是布爾類型和與之相關(guān)的關(guān)系運(yùn)算和邏輯運(yùn)算?!?.4多分支”需要掌握“switch-case”語句的執(zhí)行過程,尤其是其中“break語句”對程序執(zhí)行過程的影響?!?.5枚舉類型”需要理解枚舉類型與整數(shù)類型的聯(lián)系和區(qū)別,并能靈活使用。本章重點(diǎn)是掌握單雙分支結(jié)構(gòu)及描述這種結(jié)構(gòu)的if語句。例3.7一元二次方程求解,是分支語句的經(jīng)典例題,建議仔細(xì)研讀,并能上機(jī)調(diào)試運(yùn)行。一、雙分支結(jié)構(gòu)在流程圖中表示成類似下圖的形式,PAD表示形式如下圖。BBS1FS2TS1BS2雙分支邏輯結(jié)構(gòu)的流程圖雙分支邏輯結(jié)構(gòu)的PAD圖其中:●B是條件;●S1、S2都是具體操作語句。其含義是:首先計(jì)算條件B,若B的值為true(真),則執(zhí)行語句S1規(guī)定的操作,然后跳過S2,執(zhí)行后繼操作;否則B值為false(假),則跳過S1,執(zhí)行語句S2規(guī)定的操作,然后執(zhí)行后繼操作。雙分支邏輯控制結(jié)構(gòu)在C中用雙分支if語句描述,形式是:if(B)S1elseS2二、單分支的邏輯判斷結(jié)構(gòu)在流程圖中用下圖表示,在PAD圖中用下圖的形式表示。BBSFSB單分支的分支結(jié)構(gòu)的流程圖單分支的分支結(jié)構(gòu)的PAD圖其中:●B是一個(gè)條件表達(dá)式;●S是一個(gè)語句。它的含義是:計(jì)算B的值,若B為true則執(zhí)行語句S規(guī)定的操作,然后執(zhí)行后繼操作;否則什么也不執(zhí)行,跳過語句S,直接去執(zhí)行后繼操作。單分支的邏輯控制結(jié)構(gòu)用單分支if語句表示,形式是if(B)S第四章循環(huán)程序設(shè)計(jì)本章以“計(jì)算平均學(xué)習(xí)成績”為案例,講授程序設(shè)計(jì)中的循環(huán)結(jié)構(gòu)?!把h(huán)”對應(yīng)實(shí)際生活中的“重復(fù)”或者“反復(fù)”操作過程。經(jīng)抽象和精煉后分為“先判斷條件循環(huán)”和“后判斷條件循環(huán)”兩大類;C語言中提供了“while語句”、“do-while語句”和“for語句”實(shí)現(xiàn)循環(huán)操作?!纠?.1】某評估單位要對學(xué)生的學(xué)習(xí)情況進(jìn)行評估,需要計(jì)算每個(gè)學(xué)生的平均學(xué)習(xí)成績。編程序,從終端逐次輸入一個(gè)學(xué)生n門課程的成績,計(jì)算并輸出他的平均成績?!纠?.9】某評估單位要對學(xué)生的學(xué)習(xí)情況進(jìn)行評估,需要計(jì)算全班50名學(xué)生每個(gè)學(xué)生的平均學(xué)習(xí)成績。編程序,從終端逐次輸入各個(gè)學(xué)生n門課程的成績,計(jì)算并輸出各個(gè)學(xué)生的平均成績?!?.1計(jì)算平均成績”需要掌握循環(huán)程序的基本構(gòu)成:循環(huán)判斷條件、循環(huán)體和循環(huán)控制方式,可以看懂流程圖?!?.2后判斷循環(huán)條件”需要掌握“do-while語句”的具體執(zhí)行過程,并靈活使用。“4.3先判斷循環(huán)條件”需要掌握“while語句”的具體執(zhí)行過程,并靈活使用,理解“先判斷條件”和“后判斷條件”循環(huán)在循環(huán)次數(shù)的差別?!?.4for語句”需要掌握“for語句”的具體執(zhí)行過程,并靈活使用;知道for語句和while語句間的對應(yīng)關(guān)系?!?.5多重循環(huán)”需要能靈活將上述三種循環(huán)嵌套使用,并能清楚區(qū)分每個(gè)循環(huán)的控制條件和循環(huán)體?!?.6程序設(shè)計(jì)實(shí)例”需要能夠理解其中循環(huán)所起作用,并能用于自己代碼編寫。“循環(huán)”概念雖然容易理解,但要能夠準(zhǔn)確控制循環(huán)還需要大量練習(xí)。初學(xué)者在不清楚循環(huán)具體作用時(shí),建議逐條語句單步執(zhí)行程序,記錄相關(guān)變量每次循環(huán)時(shí)的當(dāng)前值,從其變化中體會(huì)循環(huán)概念。至此程序設(shè)計(jì)中的三大控制結(jié)構(gòu)“順序”、“分支”和“循環(huán)”都已介紹完。三種流程控制方式說起來很簡單,關(guān)鍵是應(yīng)用,而應(yīng)用的關(guān)鍵是首先找出算法。上機(jī)實(shí)驗(yàn)過程中要有意識(shí)的將三種控制結(jié)構(gòu)結(jié)合在一起編寫程序。本章重點(diǎn)是在實(shí)際程序設(shè)計(jì)過程中怎么發(fā)現(xiàn)循環(huán),構(gòu)造循環(huán),并用三種循環(huán)語句之一描述。一、后判斷條件的循環(huán)在流程圖中表示成類似下圖的形式,PAD表示形式如下圖。SSeT...do-whileeS...后判斷條件的循環(huán)的流程圖后判斷條件的循環(huán)的PAD圖其中:●e是布爾型表達(dá)式,是循環(huán)控制條件,控制循環(huán)繼續(xù)進(jìn)行或結(jié)束?!馭是一個(gè)語句列,是被重復(fù)執(zhí)行部分,即循環(huán)體。其含義是:1)執(zhí)行語句列S;2)計(jì)算表達(dá)式e值;3)若e值為true則轉(zhuǎn)向1繼續(xù)循環(huán),否則轉(zhuǎn)向4結(jié)束循環(huán);4)循環(huán)結(jié)束,向后執(zhí)行其后繼操作。按該含義,顯然循環(huán)體S起碼被執(zhí)行一次。并且在S中一定有改變e值的操作,使其值最終變?yōu)閒alse。SeFwhileeS圖4.SeFwhileeS圖4.10while語句的流程圖圖4.11while語句的PAD圖與前文的后判斷條件循環(huán)一樣,其中:●e是布爾型表達(dá)式,是循環(huán)控制條件,控制循環(huán)繼續(xù)進(jìn)行或結(jié)束?!馭是一個(gè)語句,是被重復(fù)執(zhí)行部分,構(gòu)成循環(huán)體。其含義是:1)計(jì)算e值。2)若e值為true則向下執(zhí)行循環(huán)體,轉(zhuǎn)入3);否則循環(huán)結(jié)束,轉(zhuǎn)向5)。3)執(zhí)行語句S。4)繼續(xù)循環(huán),轉(zhuǎn)向1)。5)循環(huán)結(jié)束,向下執(zhí)行其后繼操作。按該語義,顯然循環(huán)體S有可能一次也執(zhí)行不到。并且一旦進(jìn)入循環(huán),在S中也一定有改變e值的操作,最終使其值變?yōu)閒alse。三、for語句是while語句的一種縮寫方式,也是先判斷條件的循環(huán),最經(jīng)常被用于描述循環(huán)次數(shù)已知的循環(huán)。其形式是:for(e1;e2;e3) S在for語句中:for是關(guān)鍵字,指明for語句開始。S是一個(gè)語句,是for循環(huán)的循環(huán)體。e1、e2、e3都是表達(dá)式,可以是任意表達(dá)式,沒有什么限制。但是,這三個(gè)表達(dá)式在for語句中起循環(huán)控制作用,它們分擔(dān)的角色分別是:e1,稱初值表達(dá)式,經(jīng)常用于設(shè)置該循環(huán)開始時(shí)的一些初值。e2,稱終值表達(dá)式,用于控制循環(huán)結(jié)束。e3,稱增量表達(dá)式,經(jīng)常用于每次執(zhí)行循環(huán)體后對循環(huán)控制條件的修正。for語句的語義如下圖的流程圖所示,并用下圖的PAD圖表示。其執(zhí)行過程是:計(jì)算表達(dá)式e1。計(jì)算表達(dá)式e2,若e2的值為true,則向下執(zhí)行步驟3);否則(e2值為false)轉(zhuǎn)向步驟5),結(jié)束循環(huán)。執(zhí)行循環(huán)體S。轉(zhuǎn)回步驟2),繼續(xù)循環(huán)。循環(huán)結(jié)束,向下執(zhí)行后繼語句。e1e1e2Se3F結(jié)束for循環(huán)語句語義forfor(e1;e2;e3)Sfor循環(huán)的PAD圖可以使用for循環(huán)語句編出各種靈活的循環(huán)結(jié)構(gòu)程序,只要能保證循環(huán)正確執(zhí)行。比如e1、e2、e3中的任意一個(gè),甚至全部都可以為空;e1、e2、e3中的任意一個(gè),甚至全部都可以為逗號表達(dá)式,從而在循環(huán)過程中描述多項(xiàng)操作和控制。第五章模塊化程序設(shè)計(jì)-函數(shù)本章以“求給定三角形的重心”為案例,介紹“模塊化程序設(shè)計(jì)”和“函數(shù)”的概念,程序設(shè)計(jì)中的“函數(shù)”和數(shù)學(xué)中的“函數(shù)”緊密相關(guān),但不完全一樣,學(xué)習(xí)過程中需要格外注意?!昂瘮?shù)”對應(yīng)程序的“模塊化設(shè)計(jì)”,這與日常工作中的任務(wù)劃分近似。【例5.1】求給定三角形的重心?!?.1模塊化設(shè)計(jì)”分別給出了不用函數(shù)和用函數(shù)書寫的兩套代碼,通過對比其不同,認(rèn)真體會(huì)“模塊化程序設(shè)計(jì)”的思想,理解其重要性?!?.2函數(shù)”需要掌握函數(shù)定義、函數(shù)調(diào)用和函數(shù)原型。其間許多內(nèi)容都可在數(shù)學(xué)中尋找到影子:如返回值對應(yīng)值域,參數(shù)對應(yīng)定義域等。函數(shù)調(diào)用要理解什么是形式參數(shù)、實(shí)際參數(shù),明白形式參結(jié)合方式。函數(shù)原型則與表標(biāo)識(shí)符先聲明后使用的規(guī)則緊密聯(lián)系?!?.3程序設(shè)計(jì)實(shí)例”需要能夠改寫以前未用函數(shù)書寫的代碼,并能自己編寫函數(shù)。隨著函數(shù)的引入,代碼量將會(huì)逐漸增加,出錯(cuò)在所難免,學(xué)會(huì)程序調(diào)試方法對定位、糾正程序中錯(cuò)誤大有益處。此時(shí)應(yīng)該知道如何設(shè)置斷點(diǎn)、單步執(zhí)行程序、查看變量當(dāng)前值等。本章的重點(diǎn)是模塊化程序設(shè)計(jì),關(guān)鍵是程序模塊的劃分,正確引進(jìn)函數(shù)。函數(shù)定義格式是:類型說明符類型說明符標(biāo)識(shí)符(參數(shù)列表)復(fù)合語句主函數(shù)向被調(diào)用函數(shù)傳遞數(shù)據(jù)信息采用“形式參數(shù)”與“實(shí)在參數(shù)”結(jié)合的方法;被調(diào)用函數(shù)向主函數(shù)傳遞數(shù)據(jù)一般使用函數(shù)值;還可以使用指針參數(shù)。C函數(shù)的參數(shù)都是值參數(shù)。值參數(shù)的意義及參數(shù)結(jié)合動(dòng)作是:1.1.函數(shù)調(diào)用中,與值參數(shù)對應(yīng)的實(shí)在參數(shù)是一個(gè)表達(dá)式(單個(gè)變量,常量是表達(dá)式的特例),并且要求實(shí)在參數(shù)表達(dá)式與形式參數(shù)變量之間賦值兼容。2.當(dāng)程序運(yùn)行時(shí),調(diào)用函數(shù),進(jìn)行參數(shù)結(jié)合的動(dòng)作是:首先計(jì)算實(shí)在參數(shù)表達(dá)式的值;把實(shí)在參數(shù)的值按賦值轉(zhuǎn)換規(guī)則,轉(zhuǎn)換成形式參數(shù)的類型;把轉(zhuǎn)換后的實(shí)在參數(shù)表達(dá)式值送入形式參數(shù)變量中。3.在整個(gè)函數(shù)活化期間,值參數(shù)表示形式參數(shù)本身,它是函數(shù)內(nèi)的一個(gè)局部變量,已經(jīng)與實(shí)在參數(shù)脫離關(guān)系,與實(shí)在參數(shù)無關(guān)了。在函數(shù)內(nèi)對形式參數(shù)的賦值不影響實(shí)在參數(shù)。4.當(dāng)函數(shù)執(zhí)行結(jié)束返回后,實(shí)在參數(shù)值無任何變化,還是調(diào)用函數(shù)之前的值。第六章批量數(shù)據(jù)組織—數(shù)組本章仍然以“學(xué)生成績管理”為案例,介紹“批量數(shù)據(jù)組織-數(shù)組”的概念。數(shù)組是相同類型數(shù)據(jù)的集合,把相同類型數(shù)據(jù)順序排列在一起,便構(gòu)成數(shù)組。前五章所涉及內(nèi)容都針對單個(gè)變量或單一數(shù)據(jù);如何表示和處理批量數(shù)據(jù)是此章的重要內(nèi)容。數(shù)學(xué)中與數(shù)組最相關(guān)的概念是“向量”和“行列式”,其上操作也比較類似?!纠?.1】為了分析學(xué)生對程序設(shè)計(jì)課程的掌握程度,需要對該課程成績進(jìn)行統(tǒng)計(jì)。編程序,輸入一個(gè)班50名學(xué)生的程序設(shè)計(jì)課程成績,然后按10分為一段,統(tǒng)計(jì)各段成績的學(xué)生人數(shù),并輸出。【例6.3】為了分析本學(xué)期學(xué)生的學(xué)習(xí)情況,需要對本學(xué)期所開課程的成績分別進(jìn)行統(tǒng)計(jì)。編程序,輸入一個(gè)班50名學(xué)生的程序設(shè)計(jì)等5門課程成績,然后按10分為一段,分別統(tǒng)計(jì)各科中每個(gè)分?jǐn)?shù)段成績的學(xué)生人數(shù),并輸出?!?.1數(shù)組類型”需要掌握數(shù)組聲明、如何使用下標(biāo)表達(dá)式;知道對數(shù)據(jù)的操作只能是對其中每個(gè)成分逐一進(jìn)行操作?!?.2多維數(shù)組”需要掌握多維數(shù)組聲明、如何使用下標(biāo)表達(dá)式,多維數(shù)組在內(nèi)存中的排列結(jié)構(gòu)?!?.3程序設(shè)計(jì)實(shí)例1”“6.4線性表-分類”需要掌握什么是分類,為什么分類,理解“主元排序”、“冒泡排序”和“逐步遞增子序列排序”的思想并能自己寫出相關(guān)代碼。“6.5線性表-檢索”需要掌握什么是檢索,理解“順序檢索”和“二分檢索”的思想并能自己寫出相關(guān)代碼?!?.6數(shù)組初值”需要掌握一維和多維情況下數(shù)組初值賦值方法?!?.7字符串”需要掌握如何用一個(gè)字符數(shù)組保存字符串,并進(jìn)行相應(yīng)的操作?!?.8類型定義”深入理解數(shù)據(jù)類型的概念,并能聲明自己的數(shù)據(jù)類型和使用。“6.9線性表—棧和隊(duì)列”需要掌握棧和隊(duì)列兩種線性表不同的存取方式和相關(guān)操作。“6.10程序設(shè)計(jì)實(shí)例2”上機(jī)實(shí)驗(yàn)中需要有意識(shí)地使用VC提供的代碼調(diào)試功能,觀察數(shù)組下標(biāo)變量的值,體會(huì)其控制操作,加強(qiáng)對所學(xué)知識(shí)的理解。本章是在學(xué)完各種控制結(jié)構(gòu)后,開始學(xué)習(xí)數(shù)據(jù)組織。到此同學(xué)們編程手段越來越豐富,本章講述的內(nèi)容也比較多。本章的重點(diǎn)是如何組織批量數(shù)據(jù)包括數(shù)組的聲明、下標(biāo)表達(dá)式,以及在線性表數(shù)組上的一些操作(插入排序、冒泡排序、順序檢索、對半檢索)算法。數(shù)組用數(shù)組聲明符聲明,把數(shù)組聲明符放在變量聲明中聲明數(shù)組變量。數(shù)組聲明符結(jié)構(gòu)是:<標(biāo)識(shí)符>[<常量表達(dá)式>]其中標(biāo)識(shí)符是要聲明的數(shù)組的名字,即數(shù)組變量名字;常量表達(dá)式給出要聲明的數(shù)組的尺寸,即相應(yīng)數(shù)組由多少個(gè)成分組成。數(shù)組聲明符所在的變量聲明的類型說明符指出數(shù)組的類型,也是數(shù)組中每個(gè)成分的類型。訪問數(shù)組變量的某一個(gè)元素,使用下標(biāo)表達(dá)式(subscript-expression),下標(biāo)表達(dá)式的形式是:<數(shù)組變量>[<表達(dá)式>]其中數(shù)組變量指出訪問哪個(gè)數(shù)組的元素;方括號中的表達(dá)式的類型必須是整數(shù)類型,它具體指明訪問的是數(shù)組的哪一個(gè)元素。第七章指針指針是C語言中最重要的概念,其關(guān)鍵是充分理解指針即變量地址的含義,領(lǐng)悟指針使用要領(lǐng)。“7.1指針與變量”需要掌握如何聲明不同類型的指針變量,理解指針變量和指針?biāo)缸兞恐g的區(qū)別與聯(lián)系?!?.2指針操作”需要掌握求地址、取內(nèi)容和指針賦值操作。“7.3指向指針的指針”需要理解指針?biāo)缸兞?、指針變量和指向指針的指針變量,三者之間的區(qū)別與聯(lián)系?!?.4指針與數(shù)組”需要掌握如何用指針變量標(biāo)識(shí)數(shù)組,并訪問數(shù)組中的每個(gè)元素?!?.5指針與多維數(shù)組”需要掌握多維數(shù)組在內(nèi)存中的存儲(chǔ)方式,掌如何用指針標(biāo)識(shí)多維數(shù)組,并訪問數(shù)組中的每個(gè)元素?!?.6指針數(shù)組”需要掌握如何聲明指針數(shù)組,以及如何使用指針數(shù)組。“7.7指針與字符串”需要掌握變量字符串和常量字符串間的區(qū)別與聯(lián)系,以及如何用指針控制操作字符串。平時(shí)預(yù)習(xí)和復(fù)習(xí)中,要依據(jù)不同例題畫出內(nèi)存變量存儲(chǔ)示意圖,并根據(jù)程序運(yùn)行,演示變量值的變化;從而深入理解指針概念。實(shí)驗(yàn)中要有意識(shí)地使用調(diào)試工具,在實(shí)際開發(fā)環(huán)境中觀察指針變量和指針?biāo)缸兞恐担鞔_指針、地址、指針數(shù)組、字符串等概念的內(nèi)涵,從而盡快掌握指針使用的要領(lǐng)。本章的重點(diǎn)是:弄清指針變量和指針?biāo)缸兞康年P(guān)系、指針與數(shù)組之間的關(guān)系。一、編譯程序在把高級語言程序翻譯成機(jī)器語言程序時(shí),給每個(gè)變量都分配一塊適當(dāng)?shù)拇鎯?chǔ)空間,以便隨時(shí)保存變量的值。變量的地址就是這塊存儲(chǔ)區(qū)的首地址,變量的值就是這塊存儲(chǔ)區(qū)中現(xiàn)行保存的數(shù)據(jù)。設(shè)有變量v,分配在內(nèi)存0F000開始的一塊存儲(chǔ)區(qū)中,現(xiàn)行值為2.7183,則如圖所示。變量指針就是變量的地址,用&v表示。2.71832.7183v:0F000:變量地址變量名變量值變量的存儲(chǔ)區(qū)二、數(shù)組名不代表整個(gè)數(shù)組,而是數(shù)組的首地址,即第一個(gè)元素的地址。也可以用指針變量標(biāo)識(shí)數(shù)組。設(shè)有指針變量iptr。則“iptr=a”不是把整個(gè)數(shù)組a全部送入iptr中,而是把數(shù)組a的首地址(即a[0]的地址)送入iptr中。訪問數(shù)組a的第i個(gè)元素既可以使用數(shù)組名a,也可以使用指針變量iptr。在執(zhí)行“iptr=a”操作后,如下表示方式相互等價(jià)。a[i]*(a+i)iptr[i]*(iptr+i)三、n個(gè)元素指針數(shù)組 p:……這些變量目前還不存在T類型變量T類型變量…T類型變量T類型變量聲明“T*(p[n])n個(gè)元素指針數(shù)組 p:……這些變量目前還不存在T類型變量T類型變量…T類型變量T類型變量四、本章的難點(diǎn)是指向指針的指針。如果一個(gè)指針變量所指向的變量仍然是一個(gè)指針變量,就構(gòu)成指向指針變量的指針變量,簡稱指向指針的指針。在下圖中,變量p指向一個(gè)變量s,該變量s仍然是指針類型的,它指向一個(gè)int類型變量v。指向指針變量的指針變量p指針變量sint類型變量vp:300指向指針的指針如下程序片段構(gòu)造上圖的結(jié)構(gòu)。int**p,*s,v;p=&s;s=&v;v=300;其中聲明符“**p”聲明了指向指針變量的指針變量p。使用s訪問v內(nèi)容的形式是*s使用p訪問v內(nèi)容的形式是**p這個(gè)間接尋址運(yùn)算的意義是:p是指針變量,它的值是指向“指向int類型的指針變量”*p取上述p的內(nèi)容,得到一個(gè)指針值,該指針值“指向int類型變量”**p即“*(*p)”再取上述“*p”的內(nèi)容,得到一個(gè)int類型的值。對“int**p”的解釋是:由于“*”是從右向左結(jié)合的,所以該聲明相當(dāng)于int*(*p)該形式表示“*p”是“int*”類型,即指向int類型變量的指針類型,而p是指向它外層類型(即“int*”類型)變量的指針類型變量。上述給v賦值的語句v=300;可以使用指針變量s實(shí)現(xiàn),也可以使用指向指針的指針變量p實(shí)現(xiàn),下述三個(gè)語句等價(jià)。v=300;*s=300;**p=300;第八章表單數(shù)據(jù)組織——結(jié)構(gòu)體本章仍然以“成績單管理”為案例引進(jìn)另一種常見的數(shù)據(jù)組織方式——結(jié)構(gòu)體。一個(gè)學(xué)生的信息包括學(xué)號、姓名、成績?nèi)齻€(gè)子數(shù)據(jù),各個(gè)子數(shù)據(jù)的類型不同,如下圖所示,不能由一個(gè)數(shù)據(jù)表示。最好一個(gè)學(xué)生的信息能表示成一個(gè)數(shù)據(jù)——“成績單”,整個(gè)一個(gè)班的信息為成績單數(shù)組。structachievement{structachievement{ intnumber; charname[L]; intachieve;}; 一個(gè)學(xué)生成績單結(jié)構(gòu)體學(xué)號(整數(shù)):姓名(字符串):成績(整數(shù)):一個(gè)學(xué)生成績單結(jié)構(gòu)體是C語言提供的三種構(gòu)造型數(shù)據(jù)類型的一種,其和日常生活中的記錄卡片有著緊密的聯(lián)系;其不同于數(shù)組的關(guān)鍵是將不同數(shù)據(jù)類型組織在一個(gè)類型中?!?.1成績單管理”需要理解引入結(jié)構(gòu)體的必要性?!?.2保存成績單—結(jié)構(gòu)體”需要掌握結(jié)構(gòu)體聲明、成員變量的訪問?!?.3程序設(shè)計(jì)實(shí)例”需要理解結(jié)構(gòu)體程序設(shè)計(jì)的要領(lǐng),并能編寫自己的程序。由于此類題目與實(shí)際生活聯(lián)系非常緊密,實(shí)驗(yàn)中應(yīng)有意識(shí)的編寫如成績管理、電話簿管理等程序,將理論知識(shí)和實(shí)際應(yīng)用結(jié)合起來。本章重點(diǎn)是如何組織表單數(shù)據(jù),即結(jié)構(gòu)體聲明及結(jié)構(gòu)體變量成員的訪問。一、一個(gè)表單可能由不同類型的各個(gè)分量組成,使用結(jié)構(gòu)體類型描述表單數(shù)據(jù)。結(jié)構(gòu)體類型是分量的集合,分量類型可以不同。使用“結(jié)構(gòu)體類型定義”定義結(jié)構(gòu)體類型,“結(jié)構(gòu)體類型定義”呈如下兩種形式之一。結(jié)構(gòu)體類型定義形式A結(jié)構(gòu)體類型定義形式Bstruct{Tid,...,id;...Tid,...,id;}structsid{Tid,...,id;...Tid,...,id;}其中:struct是保留字,引導(dǎo)一個(gè)結(jié)構(gòu)體類型定義。每個(gè)T是一個(gè)類型說明符,可以是任意類型的任何形式的類型說明符。它說明后邊諸標(biāo)識(shí)符id的類型。每個(gè)id是一個(gè)成員聲明符,為一個(gè)標(biāo)識(shí)符,具體聲明結(jié)構(gòu)體類型的一個(gè)分量,該標(biāo)識(shí)符是該分量的名字;要求在整個(gè)結(jié)構(gòu)體類型定義內(nèi),諸id中聲明的各個(gè)分量的名字互不相同;每個(gè)id的類型是它前邊的T表記的類型。sid是一個(gè)標(biāo)識(shí)符,稱結(jié)構(gòu)體標(biāo)簽,起標(biāo)記該結(jié)構(gòu)體類型作用。二、直接成員選擇表達(dá)式針對一般的結(jié)構(gòu)體變量,形式是r.w其中:●r是結(jié)構(gòu)體類型變量;●w是r所屬結(jié)構(gòu)體類型中的一個(gè)成員名字。三、間接成員選擇表達(dá)式針對指向結(jié)構(gòu)體變量的指針變量,形式是p->w其中:●p一個(gè)指向結(jié)構(gòu)體變量的指針變量;●w是p所指向結(jié)構(gòu)體變量所屬類型中的一個(gè)成員名字。第九章再論函數(shù)本章就函數(shù)的參數(shù)、返回值、作用域等概念進(jìn)行深入的講解?!?.1參數(shù)”需要掌握C語言的參數(shù)傳遞規(guī)則,如何使用指針、數(shù)組和結(jié)構(gòu)體做函數(shù)參數(shù)?!?.2函數(shù)值”需要掌握如何使用指針、結(jié)構(gòu)體作為函數(shù)返回值。“9.3作用域”需要理解作用域全局量和局部量等概念。本章重點(diǎn)是“參數(shù)”,包括:C參數(shù)傳遞規(guī)則、指針作參數(shù)、數(shù)組作參數(shù)。一、C只有值參數(shù)一種參數(shù)類別。函數(shù)調(diào)用時(shí)把實(shí)在參數(shù)的值傳送到形式參數(shù)中。值參數(shù)意味著:1.函數(shù)調(diào)用中,與值參數(shù)對應(yīng)的實(shí)在參數(shù)是一個(gè)表達(dá)式(單個(gè)變量,常量是表達(dá)式的特例),并且要求實(shí)在參數(shù)表達(dá)式與形式參數(shù)變量之間賦值兼容(賦值兼容意味著:實(shí)在參數(shù)表達(dá)式的值經(jīng)過一定的類型轉(zhuǎn)換后,可以賦值到形式參數(shù)變量中)。2.當(dāng)程序運(yùn)行時(shí),調(diào)用函數(shù),進(jìn)行參數(shù)結(jié)合的動(dòng)作是:首先計(jì)算實(shí)在參數(shù)表達(dá)式的值;把實(shí)在參數(shù)的值,轉(zhuǎn)換成形式參數(shù)的類型;把轉(zhuǎn)換后的實(shí)在參數(shù)表達(dá)式值送入形式參數(shù)變量中。3.在整個(gè)函數(shù)執(zhí)行期間,值參數(shù)表示形式參數(shù)本身,它是函數(shù)內(nèi)的一個(gè)局部變量,已經(jīng)與實(shí)在參數(shù)脫離關(guān)系,與實(shí)在參數(shù)無關(guān)了。在函數(shù)內(nèi)改變形式參數(shù)的值不影響實(shí)在參數(shù)。4.當(dāng)函數(shù)執(zhí)行結(jié)束返回后,實(shí)在參數(shù)值無任何變化,還是調(diào)用函數(shù)之前的值。二、應(yīng)用指針參數(shù),其作用是相當(dāng)大的。由于在函數(shù)內(nèi)部,指針參數(shù)變量可以指向它的調(diào)用處(外層程序)的其它變量,它起到了其它程序設(shè)計(jì)語言中變量參數(shù)的作用。三、C參數(shù)都是值方式的,但是數(shù)組參數(shù)傳遞給函數(shù)的值不是整個(gè)數(shù)組的值,而是數(shù)組名的值,也就是實(shí)在參數(shù)數(shù)組的首地址。在函數(shù)內(nèi)不給形式參數(shù)開辟數(shù)組存儲(chǔ)空間,只給它開辟一個(gè)指針空間。事實(shí)上C把數(shù)組參數(shù)當(dāng)作指針來處理。第十章遞歸程序設(shè)計(jì)本章以計(jì)算n的階乘為案例,引進(jìn)遞歸程序和遞歸概念?!斑f歸”源自數(shù)學(xué),最早出現(xiàn)在中學(xué)的數(shù)學(xué)課本中關(guān)于數(shù)列的定義。掌握遞歸程序設(shè)計(jì)的關(guān)鍵是充分理解遞歸出口和遞歸體的含義,同時(shí)要深刻理解函數(shù)的執(zhí)行過程?!?0.1計(jì)算n!—遞歸程序設(shè)計(jì)”需要掌握直接遞歸程序設(shè)計(jì),可以根遞歸定義的函數(shù)寫出相應(yīng)的程序?!?0.2程序設(shè)計(jì)實(shí)例”需要深刻理解漢諾塔、輾轉(zhuǎn)相除法和數(shù)字組合三個(gè)程序的設(shè)計(jì)思想,掌握遞歸出口和遞歸體含義。“10.3間接遞歸”需要理解間接遞歸的概念,明確遞歸程序執(zhí)行過程,尤其是參數(shù)的傳遞、結(jié)合和函數(shù)返回。上機(jī)實(shí)驗(yàn)中一定要設(shè)計(jì)好遞歸出口,否則會(huì)造成程序無法終止或內(nèi)存溢出等情況;此時(shí)需要請教老師如何終止程序執(zhí)行。實(shí)驗(yàn)中要使用調(diào)試工具,跟蹤程序執(zhí)行過程,及時(shí)發(fā)現(xiàn)、修改錯(cuò)誤?!纠?0.1】編一個(gè)函數(shù)factorial計(jì)算n階乘n!按過去程序設(shè)計(jì)思想,該函數(shù)應(yīng)該寫成:intfactorial(intn){inti,p;p=1;for(i=1;i<=n;i=i+1)p=p*i;returnp;}但是,n!不僅是1*2*3*...*n還可以定義成按照該定義,n!就是一個(gè)簡單的條件語句和表達(dá)式計(jì)算,可以編出如下函數(shù):intfactorial(intn){if(n==0)return1;elsereturnn*factorial(n-1);}遞歸程序設(shè)計(jì)的思想體現(xiàn)在:用逐步求精原則,首先把一個(gè)問題分解成若干子問題,這些子問題中有的問題與原始問題具有相同的特征屬性,至多不過是某些參數(shù)不同,規(guī)模比原來小了。此時(shí),就可以對這些子問題實(shí)施與原始問題相同的分析算法,直到規(guī)模小到問題容易解決或已經(jīng)解決時(shí)為止。也就是說,若將整個(gè)問題的算法設(shè)計(jì)成一個(gè)函數(shù),則解決這個(gè)子問題的算法就表現(xiàn)為對相應(yīng)函數(shù)的遞歸調(diào)用。第十一章外部數(shù)據(jù)組織—文件本章以“戶籍管理問題”為案例,引進(jìn)文件概念,介紹文件操作。戶籍管理程序當(dāng)時(shí)把身份證信息保存在數(shù)組中,僅保存100個(gè)身份證信息,而且每次執(zhí)行程序都要重新輸入所有身份證信息,這顯然不合理。1.應(yīng)該把所有身份證信息保存在磁盤上,每次運(yùn)行程序時(shí)不必都重新輸入!2.應(yīng)該可以管理大量的身份證信息,不能限制數(shù)量!使用文件可以解決這個(gè)問題。例11.1】使用文件保存身份證信息數(shù)據(jù),重新編寫例8.11的程序。文件操作是C中對磁盤數(shù)據(jù)進(jìn)行操作的重要工具,其學(xué)習(xí)關(guān)鍵是掌握如何使用13個(gè)文件操作函數(shù),而不需要知道這些函數(shù)時(shí)如何實(shí)現(xiàn)?!?1.1重新考慮戶籍管理問題——文件”需要理解內(nèi)存和磁盤在數(shù)據(jù)存儲(chǔ)上的區(qū)別?!?1.2文件概述”需要掌握順序文件、隨機(jī)文件,設(shè)備文件、普通文件,ASCII文件、二進(jìn)制文件的區(qū)別;文件操作流程;文件指針。“11.3打開、關(guān)閉文件”需要掌握文件打開和關(guān)閉操作函數(shù)。“11.4I/O操作”需要掌握文件字符讀寫、字符串讀寫、格式化讀寫、數(shù)據(jù)塊讀寫和文件定位12個(gè)文件操作函數(shù)?!?1.5與操作系統(tǒng)文件聯(lián)系—程序參數(shù)”需要掌握如何使用程序參數(shù),知道如何給定程序參數(shù)?!?1.6程序設(shè)計(jì)實(shí)例”需要能夠熟練使用C提供的14個(gè)文件操作函數(shù),編寫自己的程序。上機(jī)實(shí)驗(yàn)過程中需要有意識(shí)地編寫帶參數(shù)main函數(shù),并調(diào)試運(yùn)行。本章重點(diǎn)是文件打開、關(guān)閉、輸入輸出等操作,尤其格式化輸入輸出。難點(diǎn)是文件定位,對文件的隨機(jī)操作一、rewind()函數(shù)原型:voidrewind(FILE*fp);功能:使fp所指文件的位置指針重新指向文件開始。返回值:無。語句rewind(cardpointer);把cardpointer指向的文件card.dat回繞,使cardpointer重新指向開始位置。二、fseek()函數(shù)原型:intfseek(FILE*fp,longoffset,intorigin);功能:使fp所指文件的指針指向origin+offset的位置。其中origin是初始位置。offset是相對于初始位置移動(dòng)的字節(jié)數(shù)。當(dāng)偏移量是正數(shù)時(shí),從初始位置向前移動(dòng)offset個(gè)字節(jié);當(dāng)偏移量是負(fù)數(shù)時(shí),從初始位置向后退offset個(gè)字節(jié)。第十二章程序開發(fā)本章以“求玉米單產(chǎn)”為案例,介紹程序設(shè)計(jì)開發(fā)技術(shù)、結(jié)構(gòu)化程序設(shè)計(jì)原則和方法,其關(guān)鍵是能夠理論聯(lián)系實(shí)際。另外還介紹了解決一類排列組合問題的算法“窮舉與試探”。【例12.1】如圖12.1所示,現(xiàn)有一個(gè)近似四邊形的地塊位于南北方向路東側(cè),東西方向路北側(cè)。其一個(gè)頂點(diǎn)距離南北方向路547米,距離東西方向路411米;另一個(gè)頂點(diǎn)距離南北方向路804米,距離東西方向路77米;第三個(gè)頂點(diǎn)距離南北方向路39米,距離東西方向路208米;第四個(gè)頂點(diǎn)距離南北方向路116米,距離東西方向路332米。該地塊去年種植玉米,已知總產(chǎn)量130噸,求玉米每畝產(chǎn)多少公斤。CC2083911677ABD547411332804圖12.1四邊形地塊北東“12.1求玉米單產(chǎn)——自頂向下、逐步求精”需要掌握自頂向下,逐步求精的程序設(shè)計(jì)思想,并能夠在實(shí)際中應(yīng)用?!白皂斚蛳?、逐步求精”是一種思維方式。與算法類似,要想掌握好,靠長期實(shí)踐、積累和悟性?!?2.2結(jié)構(gòu)化程序設(shè)計(jì)原則”需要理解為什么要這么做,以及如何做?!?2.3程序風(fēng)格”需要理解程序風(fēng)格的重要性,并形成自己良好的程序行文風(fēng)格“12.4程序設(shè)計(jì)實(shí)例”通過“驗(yàn)證三角形內(nèi)心定理”程序體會(huì)程序設(shè)計(jì)思想和結(jié)構(gòu)化程序設(shè)計(jì)原則,并學(xué)習(xí)其中良好的程序行文風(fēng)格。“12.5八皇后——窮舉與試探”需要掌握窮舉和試探兩種結(jié)題思路,并能用于實(shí)踐。上機(jī)實(shí)驗(yàn)中要形成自己的程序行文風(fēng)格并養(yǎng)成習(xí)慣,有目的地使用用窮舉法和試探法解決問題。本章重點(diǎn)是“自頂向下逐步求精的程序設(shè)計(jì)方法”和“結(jié)構(gòu)化程序設(shè)計(jì)原則”,難點(diǎn)是“窮舉法和試探法”一、自頂向下,逐步求精實(shí)質(zhì)上是下圖所示過程的反復(fù)。求解一個(gè)問題求解一個(gè)問題粗略的解決方案細(xì)化第一步子問題第二步子問題第n步子問題...前處理結(jié)束條件后處理進(jìn)展一步前處理后處理?xiàng)l件處理1處理2處理n......條件條件條件前處理后處理遞歸條件遞歸順序連接循環(huán)分支選擇遞歸圖12.6求精過程二、結(jié)構(gòu)化程序設(shè)計(jì)要求程序員寫出的程序是結(jié)構(gòu)良好的,要求:1.易于保證和驗(yàn)證程序的正確性2.易于閱讀、維護(hù)和調(diào)試。這種良好結(jié)構(gòu)的程序具體體現(xiàn)在:對任意程序段來講1.僅有一個(gè)入口,一個(gè)出口2.沒有死循環(huán)3.沒有死碼區(qū)。為了達(dá)到上述目的,強(qiáng)調(diào)程序員在寫程序時(shí)應(yīng)該:1.利用自頂向下、逐步求精的技術(shù)設(shè)計(jì)程序2.具有良好的程序設(shè)計(jì)風(fēng)格3.盡量利用標(biāo)準(zhǔn)的順序、分支、重復(fù)控制結(jié)構(gòu)。保證程序僅有一個(gè)入口、一個(gè)出口。4.限制使用GOTO語句??赡芤粋€(gè)壞程序的缺點(diǎn)都是由GOTO語句引起的。第十三章動(dòng)態(tài)數(shù)據(jù)組織本章以“保存實(shí)數(shù)序列”為案例,引進(jìn)動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)。著重介紹了利用動(dòng)態(tài)變量實(shí)現(xiàn)的鏈表、樹、圖等常見的數(shù)據(jù)結(jié)構(gòu),更是對前12章所學(xué)內(nèi)容的綜合運(yùn)用。【例13.1】隨機(jī)輸入以0為結(jié)束標(biāo)志的,0—1之間的若干實(shí)數(shù),按遞增順序即時(shí)保存起來。“13.1保存實(shí)數(shù)序列——?jiǎng)討B(tài)數(shù)據(jù)結(jié)構(gòu)”需要掌握什么是動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu),它與前述的靜態(tài)數(shù)據(jù)結(jié)構(gòu)的區(qū)別?!?3.2動(dòng)態(tài)變量”需要掌握如何聲明和釋放動(dòng)態(tài)變量?!?3.3鏈表”需要掌握什么是鏈表,如何創(chuàng)建單向鏈表以及其上的遍歷、插入、交換和刪除等操作,并能用單向鏈表實(shí)現(xiàn)隊(duì)列和棧的操作?!?3.4程序設(shè)計(jì)實(shí)例”重點(diǎn)體會(huì)單向鏈表的使用方法和哨兵變量的使用?!?3.5樹”需要理解什么樹、二叉樹、二叉檢索樹和其相關(guān)概念,掌握二叉檢索樹的3種遍歷方式、插入和刪除操作,體會(huì)指針的指針在其中的運(yùn)用?!?3.6圖”需要理解圖的概念,掌握如何在計(jì)算機(jī)內(nèi)部表示圖,會(huì)使用鄰接鏈表表示給定的圖,并能夠進(jìn)行遍歷,尋找路徑。由于此時(shí)的程序邏輯復(fù)雜度較高,為了更好理解書中所講內(nèi)容,建議首先運(yùn)行例題程序,并觀察其中變化;深刻體會(huì)動(dòng)態(tài)變量和相應(yīng)數(shù)據(jù)結(jié)構(gòu),之后再編寫實(shí)驗(yàn)題目程序。本章重點(diǎn)是“動(dòng)態(tài)組織數(shù)據(jù)方式”、“鏈表及其操作”、“用鏈表組織棧和隊(duì)列”。難點(diǎn)是“隊(duì)列操作”、“樹及其表示和操作”、“圖及其表示和操作”一、除了應(yīng)用以外,組織動(dòng)態(tài)數(shù)據(jù)關(guān)鍵是掌握動(dòng)態(tài)變量以及指針的應(yīng)用。在構(gòu)造動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)中,一個(gè)動(dòng)態(tài)變量包含基本數(shù)據(jù)部分,這是必須的,還應(yīng)包含一個(gè)指針,標(biāo)識(shí)及指出與它聯(lián)系的其它數(shù)據(jù)的位置。這就要求一個(gè)數(shù)據(jù)項(xiàng)上除基本的數(shù)據(jù)信息外,還應(yīng)包含與其它數(shù)據(jù)項(xiàng)相聯(lián)系的信息,也就是包含指針,呈如下形式。基本數(shù)據(jù)基本數(shù)據(jù)部分指針部分structt{structt*基本數(shù)據(jù)基本數(shù)據(jù)部分指針部分structt{structt*next;}二、鏈表操作包括:①創(chuàng)建鏈表②遍歷鏈表③在鏈表上檢索④向鏈表插入一項(xiàng)⑤從鏈表刪除一項(xiàng)⑥交換鏈表中兩項(xiàng)位置第十四章若干深入問題本章主要介紹了較深入的程序設(shè)計(jì)問題和C語言獨(dú)有的特性。對于初學(xué)者這些內(nèi)容,相對較難;可以作為課外輔助學(xué)習(xí)資料。許多內(nèi)容可作為技術(shù)手冊,使用時(shí)查閱?!?4.1函數(shù)”需要知道什么是函數(shù)指針,如何用函數(shù)作參數(shù),函數(shù)的副作用以及如何避免?!?4.2運(yùn)算”需要知道一些基本計(jì)算的基本原理,并能使用。“14.3語句”需要知道break,break,continue,goto和標(biāo)號語句和其執(zhí)行過程,但不建議使用?!?4.4數(shù)據(jù)組織”需要知道什么是行指針?!?4.5存儲(chǔ)類別”需要知道C語言提供的不同存儲(chǔ)類別,知道其區(qū)別在不同的使用方式?!?4.6編譯預(yù)處理”需要知道什么是編譯預(yù)處理,如何利用有參數(shù)宏或無參數(shù)宏實(shí)現(xiàn)條件編譯。本章重點(diǎn)是第1節(jié)“函數(shù)”,并且它也是這章的難點(diǎn)。函數(shù)這節(jié)包括:函數(shù)指針、函數(shù)作參數(shù)、返回指針值的函數(shù)、指針作函數(shù)參數(shù)、…。一、函數(shù)指針函數(shù)指針聲明形式是:類型符(*標(biāo)識(shí)符)(形式參數(shù)表);其中標(biāo)識(shí)符是被聲明的“指向函數(shù)的指針變量”名;類型符給出函數(shù)指針變量所指向函數(shù)的類型信息;形式參數(shù)表給出函數(shù)指針變量所指向的函數(shù)的形式參數(shù)信息。例如int(*f)(floatd,charc);聲明指向“返回int類型值的函數(shù)”的函數(shù)指針變量f,f所指向的函數(shù)有兩個(gè)形式參數(shù),第一個(gè)參數(shù)是float類型,第二個(gè)參數(shù)是char類型。函數(shù)指針聲明中用括號把星號“*”和“標(biāo)識(shí)符”括起來是必須的,比如上述的“(*f)”。原因是由優(yōu)先級造成的。函數(shù)指針的作用在于使用函數(shù)指針調(diào)用函數(shù)實(shí)現(xiàn)其它程序設(shè)計(jì)語言中函數(shù)參數(shù)的功能可以把函數(shù)名賦值給一個(gè)函數(shù)指針變量,然后通過函數(shù)指針變量調(diào)用函數(shù)。形式是:函數(shù)指針變量=函數(shù)名;要求函數(shù)指針的特性與函數(shù)名的特性一致,這種一致性體現(xiàn)在它們的返回類型相同;它們的參數(shù)個(gè)數(shù)相同;對應(yīng)位置上,每個(gè)形式參數(shù)的類型相同。使用函數(shù)指針要注意:給函數(shù)指針賦值時(shí),右端只是一個(gè)函數(shù)名,不許帶參數(shù)表。不能對函數(shù)指針變量進(jìn)行任何運(yùn)算。利用函數(shù)指針調(diào)用函數(shù)時(shí),把“*”和函數(shù)名用括號括起來,成“(*函數(shù)名)(…)”形式,是必須的。因?yàn)椤埃ǎ钡膬?yōu)先級高于“*”。二、函數(shù)作參數(shù)函數(shù)作參數(shù)就是“指向函數(shù)的指針”作參數(shù),它的形式是:形式參數(shù)名以“函數(shù)指針的函數(shù)原型形式”說明。形式是類型名(*函數(shù)名)(形式參數(shù)表)例如:floatintegrate(…,float(*f)(float),…)其中:“函數(shù)名”是被說明的“函數(shù)形式參數(shù)”,使用指針形式(前加星號*,并用括號括上);“形式參數(shù)表”使用“函數(shù)原型形式的形式參數(shù)表”。函數(shù)調(diào)用中對應(yīng)“函數(shù)參
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)人消費(fèi)分期借款合同規(guī)范4篇
- 二零二五年度金融科技創(chuàng)新項(xiàng)目合作協(xié)議6篇
- 二零二五年度銀政合作金融服務(wù)創(chuàng)新合同3篇
- 二零二五年度防火門窗品牌代理合作協(xié)議3篇
- 潮州2024年廣東潮州市科學(xué)技術(shù)局屬下事業(yè)單位招聘10人(第二輪)筆試歷年參考題庫附帶答案詳解
- 漯河2024年河南漯河市文學(xué)藝術(shù)界聯(lián)合會(huì)所屬事業(yè)單位人才引進(jìn)筆試歷年參考題庫附帶答案詳解
- 2025版無子女離婚協(xié)議書編制技巧與簽訂后的執(zhí)行3篇
- 湖南2025年湖南農(nóng)業(yè)大學(xué)-岳麓山實(shí)驗(yàn)室博士后招聘筆試歷年參考題庫附帶答案詳解
- 二零二五年度櫥柜安裝與廚房改造一體化服務(wù)合同4篇
- 溫州浙江溫州市醫(yī)療保險(xiǎn)管理中心招聘編外人員4人筆試歷年參考題庫附帶答案詳解
- 高考滿分作文常見結(jié)構(gòu)完全解讀
- 專題2-2十三種高考補(bǔ)充函數(shù)歸類(講練)
- 理光投影機(jī)pj k360功能介紹
- 六年級數(shù)學(xué)上冊100道口算題(全冊完整版)
- 八年級數(shù)學(xué)下冊《第十九章 一次函數(shù)》單元檢測卷帶答案-人教版
- 帕薩特B5維修手冊及帕薩特B5全車電路圖
- 系統(tǒng)解剖學(xué)考試重點(diǎn)筆記
- 小學(xué)五年級解方程應(yīng)用題6
- 云南省地圖含市縣地圖矢量分層地圖行政區(qū)劃市縣概況ppt模板
- 年月江西省南昌市某綜合樓工程造價(jià)指標(biāo)及
- 作物栽培學(xué)課件棉花
評論
0/150
提交評論