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