本書以計(jì)算機(jī)解決問題的規(guī)律為驅(qū)動(dòng)來組織內(nèi)容,涵蓋了計(jì)算機(jī)導(dǎo)論、基礎(chǔ)算法、程序設(shè)計(jì)語言基礎(chǔ)、C語言程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)和基本的軟件工程知識(shí),以期填補(bǔ)現(xiàn)有的獨(dú)立學(xué)科單元內(nèi)容與讀者開發(fā)軟件項(xiàng)目所需知識(shí)之間的鴻溝。這樣以解決問題為導(dǎo)向來組織內(nèi)容,不僅符合計(jì)算機(jī)解決問題的規(guī)律,同時(shí)也會(huì)提升讀者的學(xué)習(xí)興趣。
除上述特點(diǎn)外,本書在理論上加入了超圖這樣的非線性數(shù)據(jù)結(jié)構(gòu),在應(yīng)用上加入了作者在人工智能領(lǐng)域圖像處理方向上的圖像森林變換和圖像質(zhì)量評(píng)價(jià)的*研究成果,使讀者對(duì)計(jì)算機(jī)的應(yīng)用有更深入的了解。
本書既可作為高等院校本科生計(jì)算機(jī)類課程的基礎(chǔ)教材,也可作為專業(yè)人員的參考書,同時(shí)還可作為非計(jì)算機(jī)專業(yè)學(xué)生學(xué)習(xí)計(jì)算機(jī)編程的教材。
目前,計(jì)算機(jī)的應(yīng)用廣泛、深入。同時(shí),利用計(jì)算機(jī)解決實(shí)際問題的技術(shù)也是我國(guó)加快制造業(yè)和推動(dòng)互聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能與實(shí)體經(jīng)濟(jì)深度融合的重要技術(shù)支撐。此外,培養(yǎng)學(xué)生高水平地利用計(jì)算機(jī)解決實(shí)際問題的能力也是我國(guó)建設(shè)創(chuàng)新型國(guó)家、加快一流大學(xué)和一流學(xué)科建設(shè)、實(shí)現(xiàn)高等教育內(nèi)涵式發(fā)展的重要組成部分。
本書為西安電子科技大學(xué)2018年立項(xiàng)支持教材,是西安電子科技大學(xué)新的人才培養(yǎng)方案確立的本科公共大類課程之一。新的課程標(biāo)準(zhǔn)開課思路先進(jìn),大綱制定與國(guó)際接軌,但目前市面上還沒有對(duì)應(yīng)的中文教材。基于此,作者精心編寫了本書。書中涵蓋了計(jì)算機(jī)導(dǎo)論與程序設(shè)計(jì)課程大綱要求的必修內(nèi)容,闡述了利用計(jì)算機(jī)解決實(shí)際問題的基礎(chǔ)理論與基本技術(shù)。編寫中,作者以計(jì)算機(jī)解決問題的規(guī)律為驅(qū)動(dòng)來組織內(nèi)容,從而填補(bǔ)了現(xiàn)有的以內(nèi)容為單元編寫的書籍與讀者開發(fā)項(xiàng)目所需知識(shí)之間的鴻溝。另外,本書作為大一學(xué)生的第一門計(jì)算機(jī)系統(tǒng)認(rèn)知和應(yīng)用課程教材,在內(nèi)容上涵蓋了基礎(chǔ)算法、程序設(shè)計(jì)語言基礎(chǔ)和C語言程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)和軟件工程基礎(chǔ)。這樣以解決問題為導(dǎo)向組織教材內(nèi)容的方式不僅符合計(jì)算機(jī)作為工具來解決問題的規(guī)律,同時(shí)也會(huì)提升讀者的學(xué)習(xí)興趣。這也正是本書特色所在。
用計(jì)算機(jī)解決問題涉及的層面很多。本書從計(jì)算機(jī)系統(tǒng)、問題、計(jì)算機(jī)和問題相結(jié)合三個(gè)方面來考慮,最終達(dá)到培養(yǎng)學(xué)生利用計(jì)算機(jī)解決問題的目的。
(1) 從計(jì)算機(jī)系統(tǒng)層面上來看,本書闡述了編程人員對(duì)計(jì)算機(jī)系統(tǒng)應(yīng)該有的認(rèn)知:計(jì)算機(jī)系統(tǒng)工作原理和內(nèi)存特性,它們是解決問題的最基本的計(jì)算機(jī)理論基礎(chǔ),該部分及相關(guān)內(nèi)容構(gòu)成本書第1章。從問題解決并考慮到問題在計(jì)算機(jī)上解決的特性,本書對(duì)解決問題的基礎(chǔ)算法及描述工具等進(jìn)行了詳細(xì)系統(tǒng)的闡述,這部分內(nèi)容安排在本書第2章。有了解決問題的算法后,如何將這些算法在計(jì)算機(jī)上實(shí)現(xiàn)?結(jié)合問題和計(jì)算機(jī)系統(tǒng)知識(shí),在第3章中討論了實(shí)現(xiàn)算法的計(jì)算機(jī)語言及其特性,并對(duì)目前教學(xué)與應(yīng)用中常用的C語言及其語法規(guī)則進(jìn)行了系統(tǒng)介紹,尤其對(duì)問題對(duì)應(yīng)的數(shù)據(jù)如何選擇內(nèi)存空間大小做了重點(diǎn)說明,它們是高質(zhì)量程序設(shè)計(jì)的基礎(chǔ)。在本書中,我們也對(duì)簡(jiǎn)單的C程序設(shè)計(jì)所涉及的函數(shù)、程序、文件、構(gòu)造數(shù)據(jù)類型、庫函數(shù)的功能和使用進(jìn)行了詳細(xì)系統(tǒng)的描述,同時(shí)配有詳細(xì)的應(yīng)用舉例,該部分內(nèi)容安排在本書的第4章。以上第1章至第4章內(nèi)容可以完成簡(jiǎn)單問題的計(jì)算機(jī)求解。
(2) 從問題角度來看,計(jì)算機(jī)解決問題時(shí)需要抽象出數(shù)據(jù)的結(jié)構(gòu)特性。數(shù)據(jù)的結(jié)構(gòu)特性從邏輯上分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),其中部分線性結(jié)構(gòu)對(duì)應(yīng)于本書的第5章。在第5章中,包括最經(jīng)典的線性表、隊(duì)列和堆棧三種結(jié)構(gòu)的邏輯定義、特性、運(yùn)算及其結(jié)合C語言的計(jì)算機(jī)程序?qū)崿F(xiàn)。在此基礎(chǔ)上,作為線性結(jié)構(gòu)的應(yīng)用范例,第5章中還實(shí)現(xiàn)了圖像森林變換。這樣安排,一方面體現(xiàn)了線性結(jié)構(gòu)的應(yīng)用,另一方面也讓讀者對(duì)當(dāng)前人工智能領(lǐng)域中的計(jì)算機(jī)應(yīng)用場(chǎng)景有所接觸,為將來在工作中應(yīng)用計(jì)算機(jī)打下基礎(chǔ)。
非線性數(shù)據(jù)結(jié)構(gòu)樹、圖和超圖等內(nèi)容安排在本書第6章,其中超圖部分是國(guó)家自然基金項(xiàng)目(61173088,618724331,61671348)資助的最新研究成果。此章同樣包括了兩種結(jié)構(gòu)的邏輯定義、運(yùn)算及其物理實(shí)現(xiàn)。值得指出的是:此章加入了超圖這種數(shù)據(jù)結(jié)構(gòu)及其簡(jiǎn)單的應(yīng)用,該部分是對(duì)于現(xiàn)有的經(jīng)典非線性數(shù)據(jù)結(jié)構(gòu)的適當(dāng)擴(kuò)充,而這種超圖的數(shù)據(jù)類型在當(dāng)前人工智能領(lǐng)域的圖像處理領(lǐng)域中得到了應(yīng)用。可以預(yù)期的是,隨著計(jì)算機(jī)科學(xué)等相關(guān)技術(shù)的不斷發(fā)展,這些應(yīng)用還會(huì)進(jìn)一步推廣。通過該部分內(nèi)容,希望讀者能夠體會(huì)到解決問題的思路需要?jiǎng)?chuàng)新性地結(jié)合不同學(xué)科的理論和技術(shù),因此其他學(xué)科的專門知識(shí)積累也是需要的。
(3) 本書將軟件作為解決問題的產(chǎn)品。從軟件產(chǎn)品開發(fā)角度來看,本書系統(tǒng)論述了軟件開發(fā)需要的技術(shù)、方法和規(guī)則。以這些內(nèi)容為指導(dǎo),可以開發(fā)出專業(yè)的軟件產(chǎn)品。該部分內(nèi)容安排在本書第7章。
本書第8章是與軟件實(shí)現(xiàn)相關(guān)的計(jì)算機(jī)操作系統(tǒng)的操作和軟件集成環(huán)境及調(diào)試方法的介紹。在此章中首先介紹了DOS常用命令和Windows的主要設(shè)置,重點(diǎn)給出了四種平臺(tái)上的軟件實(shí)現(xiàn)環(huán)境及使用說明;诖耍梢詫(shí)現(xiàn)軟件的編輯、編譯、鏈接及運(yùn)行,直到軟件產(chǎn)品的生成。此外,一些軟件開發(fā)所需的基本知識(shí)作為附錄放在了本書的最后部分。
值得一提的是,本書還嘗試將我國(guó)的一些優(yōu)秀傳統(tǒng)文化與計(jì)算機(jī)編程內(nèi)容相結(jié)合,以期使讀者在學(xué)習(xí)計(jì)算機(jī)軟件開發(fā)的同時(shí)感到生動(dòng)有趣,激發(fā)學(xué)習(xí)興趣,拓寬知識(shí)面,轉(zhuǎn)換思維方式。
總之,用計(jì)算機(jī)解決問題涉及內(nèi)容較多,本書使解決問題的思路與書的內(nèi)容安排相一致,同時(shí)在書中融入了作者多年來用計(jì)算機(jī)完成項(xiàng)目的部分成果。因此,本書既可作為本科生計(jì)算機(jī)類課程的基礎(chǔ)教材,也可作為專業(yè)人員的參考書,同時(shí)還可作為非計(jì)算機(jī)專業(yè)學(xué)生學(xué)習(xí)計(jì)算機(jī)編程的教材。
溫馨提示
本書可按不同的課時(shí)選取不同章節(jié)內(nèi)容學(xué)習(xí):
(1) 第1~8章對(duì)應(yīng)于程序設(shè)計(jì)與軟件開發(fā)課。
(2) 第1~4章和第7~8章對(duì)應(yīng)于計(jì)算機(jī)導(dǎo)論與程序設(shè)計(jì)課(學(xué)校公共大類基礎(chǔ)課)。
(3) 第2章和第5~7章對(duì)應(yīng)于算法設(shè)計(jì)與軟件開發(fā)課。
本書由王俊平主編。第1~3章由王俊平編寫,第4~7章由王俊平、孫德春、李勇、郭佳佳、梁剛明、胡靜編寫;第8章和附錄由沈中編寫;孫德春、萬波參與了本書的內(nèi)容組織。全書由王俊平統(tǒng)稿。在編寫過程中我們還得到了西安電子科技大學(xué)許多同事的關(guān)心和指導(dǎo),2015級(jí)、2016級(jí)和2017級(jí)的許多同學(xué)對(duì)于本書的應(yīng)用成果研發(fā)付出了辛勤的勞動(dòng),還有王文瑞、李艷波、張亞瓊、高兆華等參與了本書的校對(duì)及部分程序的調(diào)試,在此一并表示誠(chéng)摯的謝意。
本書在編寫過程中參考了有關(guān)圖書和資料,在此向其作者表示由衷的感謝。由于編者水平有限,書中難免有不妥之處,敬請(qǐng)讀者指正。
編 者
2018-9-6