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