[ 收藏 ] [ 繁体中文 ]  
臺灣貨到付款、ATM、超商、信用卡PAYPAL付款,4-7個工作日送達,999元臺幣免運費   在線留言 商品價格為新臺幣 
首頁 電影 連續劇 音樂 圖書 女裝 男裝 童裝 內衣 百貨家居 包包 女鞋 男鞋 童鞋 計算機周邊

商品搜索

 类 别:
 关键字:
    

商品分类

  • 新类目

     管理
     投资理财
     经济
     社会科学
  • C語言程序設計――程序思維與代碼調試
    該商品所屬分類:圖書 -> 電子工業出版社
    【市場價】
    806-1168
    【優惠價】
    504-730
    【作者】 周幸妮 
    【所屬類別】 電子工業出版社 
    【出版社】電子工業出版社 
    【ISBN】9787121370984
    【折扣說明】一次購物滿999元台幣免運費+贈品
    一次購物滿2000元台幣95折+免運費+贈品
    一次購物滿3000元台幣92折+免運費+贈品
    一次購物滿4000元台幣88折+免運費+贈品
    【本期贈品】①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
    版本正版全新電子版PDF檔
    您已选择: 正版全新
    溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。
    *. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。
    *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。
    *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。
    內容介紹



    出版社:電子工業出版社
    ISBN:9787121370984
    版次:1

    商品編碼:12560781
    品牌:電子工業出版社
    包裝:平裝

    開本:16開
    出版時間:2019-07-01
    用紙:膠版紙

    頁數:464
    字數:742400
    正文語種:中文

    作者:周幸妮

        
        
    "

    內容簡介

    本書站在程序設計的角度,從程序和算法、數據、程序語句、指針、結構體、函數和文件等基本的C語言要素講起,全面介紹C語言程序設計的方方面面,引導學習者以“程序的思維”看問題,即如何從一個問題入手,算法應該如何設計、程序如何實現的角度去看程序設計問題,讓初學者容易理解並掌握程序設計的基本思想與方法。通過對實際問題、解決方法或存在問題的討論,引入新概念,深入淺出,讓學習的過程變得有趣且容易。本書圖文、表格並茂,便於直觀理解。

    作者簡介

    周幸妮,西安電子科技大學計算機學院教授,長期從事程序設計、數據結構等課程的教學工作,著有C語言、數據結構與算法等方面的多部教材。

    目錄

    第1章 程序概論 1
    1.1 流程的概念 1
    1.1.1 關於流程 1
    1.1.2 流程的表達方式 3
    1.1.3 流程的基本邏輯結構 4
    1.2 程序的概念 8
    1.2.1 自動化流程 9
    1.2.2 程序的概念 9
    1.2.3 程序的執行特點 12
    1.2.4 計算機工作流程 12
    1.3 程序的構成 13
    1.3.1 計算機解題流程之數據 14
    1.3.2 計算機解題流程之處理 15
    1.3.3 計算機解題流程之結果 15
    1.4 程序的開發過程 17
    1.4.1 問題引例 17
    1.4.2 程序開發基本步驟 18
    1.4.3 計算機解題實例 19
    1.4.4 程序開發流程 24
    1.5 C語言程序簡介 25
    1.5.1 C程序樣例 25
    1.5.2 C程序框架結構 28
    1.5.3 代碼格式要求 29
    1.6 本章小結 30
    習題 31
    第2章 算法 32
    2.1 算法的概念 32
    2.2 算法的表示 35
    2.3 算法的可行性 39
    2.4 算法的通用性 42
    2.5 算法的全面性 44
    2.6 算法設計過程與算法特性 49
    2.6 本章小結 52
    習題 52
    第3章 基本數據 54
    3.1 常量與變量 54
    3.1.1 常量 54
    3.1.2 變量 56
    3.2 數據類型 62
    3.2.1 計算機中的信息表示 62
    3.2.2 計算機中的信息處理問題
    討論 63
    3.2.3 C語言的基本數據類型 66
    3.3 整數存儲規則 67
    3.3.1 有符號整數 68
    3.3.2 無符號整數 68
    3.3.3 字符類型數據 69
    3.4 實數存儲規則 70
    3.5 運算符與表達式 74
    3.6 數值處理 76
    3.6.1 算術運算符和算術表達式 76
    3.6.2 數據運算中的出界問題 80
    3.7 邏輯判斷處理 81
    3.7.1 關繫運算 81
    3.7.2 邏輯運算 82
    3.8 數據類型轉換 86
    3.8.1 強制類型轉換 88
    3.8.2 自動類型轉換 89
    3.9 其他運算 90
    3.9.1 條件表達式 90
    3.9.2 sizeof運算符 91
    3.9.3 賦值運算符與表達式 92
    3.9.4 復合賦值運算符 92
    3.9.5 逗號運算符和逗號表達式 92
    3.10 本章小結 93
    習題 94
    第4章 輸入/輸出 95
    4.1 輸入/輸出的概念 95
    4.1.1 標準輸入/輸出 95
    4.1.2 C標準庫函數 96
    4.1.3 頭文件 96
    4.2 數據的輸出 97
    4.2.1 字符輸出函數 97
    4.2.2 字符串輸出函數 98
    4.2.3 格式輸出函數 99
    4.3 數據的輸入 102
    4.3.1 字符輸入函數 103
    4.3.2 字符串輸入函數 104
    4.3.3 格式輸入函數 105
    4.4 數據輸入的常見問題 109
    4.5 本章小結 112
    習題 113
    第5章 程序語句 115
    5.1 順序結構 115
    5.2 雙分支選擇結構 117
    5.2.1 雙分支選擇結構的語法規則 117
    5.2.2 復合語句的作用 118
    5.2.3 if語句實例 119
    5.2.4 嵌套的if-else語句 121
    5.3 多分支選擇結構 124
    5.3.1 多分支問題的引入 124
    5.3.2 多分支結構語法規則 125
    5.3.3 多分支結構實例 128
    5.3.4 各種分支結構語句的比較 134
    5.4 循環問題的引入 134
    5.4.1 循環中的要素分析 134
    5.4.2 循環三要素 136
    5.4.3 循環語句 137
    5.5 當型循環結構 137
    5.5.1 當型循環語法規則 137
    5.5.2 循環要素必要性驗證 138
    5.5.3 當型循環實例 142
    5.5.4 循環控制方式 146
    5.6 直到型循環結構 146
    5.6.1 直到型循環語法規則 146
    5.6.2 do-while的適用場合 150
    5.6.3 do-while語句實例 150
    5.7 當型循環的另一種形式 151
    5.7.1 for語句語法規則 151
    5.7.2 for語句實例 152
    5.8 無限循環 154
    5.8.1 實際問題中的無限制循環 154
    5.8.2 無限循環的while語句表達 154
    5.8.3 無限循環的for語句表達 155
    5.9 中斷循環 157
    5.9.1 實際問題中的循環中斷 157
    5.9.2 跳出循環的break語句 158
    5.9.3 在循環內跳轉的continue
    語句 161
    5.10 自由跳轉機制 164
    5.10.1 自由跳轉的概念 164
    5.10.2 無條件轉移語句規則 164
    5.10.3 無條件轉移語句實例 164
    5.10.4 goto語句的特點 166
    5.11 本章小結 167
    習題 168
    第6章 數組 172
    6.1 數組的概念 172
    6.1.1 一組同類型數據的處理
    問題 172
    6.1.2 一組同類型數據所需要的
    表達方式 175
    6.2 數組的存儲 176
    6.2.1 數組的定義 176
    6.2.2 數組的初始化 178
    6.2.3 數組的空間分配 179
    6.2.4 數組的空間查看 180
    6.3 一維數組的操作 183
    6.4 二維數組的操作 196
    6.5 字符數組的操作 205
    6.6 本章小結 214
    習題 215
    第7章 指針 217
    7.1 指針的概念 217
    7.1.1 名稱引用和地址引用 217
    7.1.2 存儲空間的管理 219
    7.1.3 指針的概念 223
    7.2 指針的運算 224
    7.2.1 指針運算符 224
    7.2.2 指針運算種類 224
    7.2.3 指針運算基本規則 224
    7.2.4 指針偏移的意義 227
    7.2.5 空指針的概念 230
    7.3 指針與數組 230
    7.3.1 指針與一維數組 230
    7.3.2 指針與二維數組 234
    7.4 指針與多組字符串問題 238
    7.4.1 一維指針數組與指向指針的
    指針 240
    7.5 本章小結 241
    習題 242
    第8章 復合類型數據 244
    8.1 結構體的概念 244
    8.1.1 問題引入 244
    8.1.2 綜合數據表的存儲方案 245
    8.2 結構體的存儲 246
    8.2.1 結構體類型定義 246
    8.2.2 結構體變量定義 248
    8.2.3 結構體初始化 248
    8.2.4 結構體變量空間分配 249
    8.2.5 結構體成員引用 253
    8.3 結構體應用實例 254
    8.4 共用體 264
    8.4.1 問題引入 264
    8.4.2 共用體的空間存儲描述 264
    8.5 枚舉 269
    8.5.1 問題引入 269
    8.5.2 枚舉的概念及定義形式 270
    8.5.3 枚舉實例 271
    8.5.4 枚舉的使用規則 272
    8.6 聲明新的類型名 273
    8.6.1 問題引入 273
    8.6.2 typedef聲明形式及使用 275
    8.7 本章小結 275
    習題 276
    第9章 函數 278
    9.1 函數的概念 278
    9.1.1 問題的提出 278
    9.1.2 模塊的概念 279
    9.2 函數形式設計 281
    9.2.1 模塊間信息交流方法 281
    9.2.2 函數形式設計 282
    9.3 函數間信息交流機制設計 285
    9.3.1 函數間信息交流特點分析 285
    9.3.2 函數間信息交流之處理數據
    的提交與接收 287
    9.3.3 函數結果的獲取方式 288
    9.4 函數總體設計 289
    9.4.1 函數設計要素 289
    9.4.2 函數間信息傳遞歸結 289
    9.4.3 函數的調用 290
    9.5 函數設計實例 292
    9.5.1 傳值調用 292
    9.5.2 傳址調用 298
    9.5.3 函數綜合實例 306
    9.5.4 main函數的參數 316
    9.6 作用域 319
    9.6.1 問題引入 319
    9.6.2 模塊的屏蔽機制 321
    9.6.3 內存分區與存儲分類 322
    9.6.4 屏蔽機制1――變量的有效期
    和作用範圍 323
    9.6.5 屏蔽機制2――函數的有效
    範圍 330
    9.6.6 屏蔽機制3――共享數據的
    使用限制 332
    9.7 遞歸 333
    9.7.1 引例 333
    9.7.2 遞歸概念 336
    9.7.3 遞歸實例 337
    9.8 本章小結 339
    習題 340
    第10章 編譯預處理――編譯前的
    工作 343
    10.1 問題的引入 343
    10.2 宏定義 344
    10.2.1 簡單的宏定義 344
    10.2.2 帶參數的宏定義 346
    10.2.3 宏定義的副作用 348
    10.3 文件包含 348
    10.4 條件編譯 350
    10.5 本章小結 353
    習題 354
    第11章 文件――外存數據的操縱 356
    11.1 問題的引入 356
    11.2 文件的概念 357
    11.3 文件的操作流程 358
    11.4 內存和外存的數據交流 359
    11.5 程序對文件的操作 361
    11.5.1 打開文件 361
    11.5.2 文件的讀寫 362
    11.5.3 關閉文件 366
    11.5.4 隨機讀取文件內容 367
    11.6 關於文件讀寫函數的討論 368
    11.7 程序調試與輸入輸出重定向 372
    11.8 本章小結 374
    習題 375
    第12章 程序的運行 377
    12.1 程序運行環境 377
    12.1.1 集成環境主界面 379
    12.1.2 建立項目 380
    12.1.3 新建源文件 382
    12.1.4 編輯源文件 382
    12.1.5 編譯源文件 384
    12.1.6 鏈接程序 385
    12.1.7 運行程序 386
    12.2 程序測試 387
    12.2.1 引子 387
    12.2.2 程序測試方法與實例 388
    12.3 程序調試概念 392
    12.3.1 bug與debug 392
    12.3.2 bug無處不在 393
    12.3.3 軟件調試的困難 393
    12.4 軟件調試的方法論 394
    12.4.1 引例 394
    12.4.2 軟件調試的基本過程 395
    12.4.3 程序錯誤的查找方法討論 395
    12.4.4 跟蹤方法方案探索 397
    12.5 程序調試工具 399
    12.5.1 IDE中調試器的功能 399
    12.5.2 調試命令 401
    12.6 調試實例 405
    12.6.1 基本調試步驟示例 405
    12.6.2 調試查找程序錯誤示例 407
    12.6.3 調用棧的使用示例 416
    12.6.4 數據斷點使用示例 418
    12.7 本章小結 420
    習題 421
    附錄A 運算符的優先級和結合性 425
    附錄B ASCII碼表 426
    附錄C C語言常用庫函數 427
    附錄D 常用轉義字符表 432
    附錄E 位運算簡介 433
    附錄F 在工程中加入多個文件 435
    附錄G 編程範式 441
    附錄H 空類型void問題 449
    參考文獻 450

    查看全部↓

    前言/序言

    前 言

    緣起

    2016年底,電子工業出版社與中新金橋信息技術有限公司合作,計劃做一批立體化網絡課程建設項目,作者因有《C 語言程序設計新視角》(以下簡稱《新視角》)一書,有幸參與到項目之中。在C語言課程視頻的錄制過程當中,作者引入了許多新的思路與方法,因此有了對《新視角》進行完善再版的想法。

    寫作思路

    《新視角》一書結合作者多年教學實踐經驗,針對學生在學習程序設計中的困惑,側重引入問題、分析問題、討論解決問題的方法,本書是基於《新視角》的改進版本。在C語言、數據結構等程序設計課程的講授以及課後和學生的溝通中,筆者認識到在編程學習中大家遇到的普遍問題歸納起來有四難:概念晦澀理解難,規則眾多記憶難,法無定法編程難,bug深藏調試難。

    著名數學家歐拉(Leonhard Euler)說過,如果不能把解決數學問題背後的思維過程傳授給學生,那麼數學教學就沒有意義,這種觀點同樣適用於其他各學科或課程的教學。理解原理、掌握解決問題的思維方法是學習過程的要點。分析學生在學習程序設計中的問題,最主要的問題是編程概念建立困難,其次是程序調試技巧難以把握。按照問題輕重的順序,《新視角》一書嘗試從以下這些方面來解決問題——重思維,揭本質,強調試,輕語法。《新視角》經過這些年的使用,發現依然有不少需要改進的地方,特別是在問題引入和解析各種機制設置的原因方面,本書對此做了較大篇幅的增加。

    1.重思維

    圖靈獎獲得者、現代計算機科學的先驅人物高德納,在其代表作《計算機程序設計的藝術》中指出,編程是把問題的解法翻譯成為計算機能“理解”的明確術語的過程,這是在人們開始試圖使用計算機時最難以掌握的。C語言又是在高級編程語言中公認屬於較難掌握的,有枯燥乏味、規則眾多、艱深晦澀的一面。

    計算機是一種自動化的工具,人們用這種工具來解決問題,會受到很多機器特性的限制,在一個與人們以往解決問題的運作規則不一樣的繫統中,已有的處理問題的經驗很可能用不上。在程序設計語言中有很多概念是隻學習過數理化知識的學生們從未接觸過的,課堂上直接按傳統教科書的內容講述解釋後,發現他們較難理解和接受。

    Garr Reynolds在《演說之禪》中這樣寫道:“好的故事可以終生受用,用於傳道授業,用於分享,用於啟迪,當然,也可以用於勸解。講故事是吸引觀眾,滿足他們對於邏輯、結構以及情感方面需求的一個重要方式。”本書中許多引例都是從有趣的故事開始,從實際問題引出與編程相關的話題,提出問題,引起讀者思考,再從人直接解決問題到使用機器解決問題的不同角度加以討論,分析相同與不同,最後提出相關的程序設計概念。為在敘述中有代入感,書中設計了布朗教授一家參與問題的討論。布朗教授或以初學者的視角提出問題、探索解決方案,或以專家的身份討論問題;布朗太太是編程小白,偶爾會有貌似可笑的外行言論;布朗教授的兒子小布朗是小學生,也常會提些看起來幼稚的問題。另外還有布朗教授的學生、同事及親屬參與“演出”。這樣的設計思路,是遵循金出武雄(Takeo Kanade)教授在總結科研成功之道時提出的“像外行一樣思考,像專家一樣實踐”方法論的一次實踐。

    “如果我們從不同的角度對同一個概念進行學習並研究與其相關的問題,就能建立更多且更深層次的信息鏈接。這些信息鏈接和與其相關的內容交織,共同構成了我們日常所說的‘理解’。大腦處理的所有信息都不是孤立的,而是具有邏輯關繫的一組信息。當這些信息具有結構性,能夠和已經學過的知識、和學生的生活實際建立密切的聯繫時,就容易讓人從不同的角度來思考這一信息,從而對其有深入且透徹的理解。”(Salman Khan,《翻轉課堂的可汗學院》)《新視角》通過解析人與計算機解決問題的同與不同,探索問題的解決方法,培養學生基於計算機特點進行邏輯思維的素養。根據計算機解決問題的特點,通過介紹讀程列表法、算法設計法以及經典的算法描述法等方法,讓學生先學讀程再學編程,從大的方向上把握編程的一般方法,逐步建立程序的思維。

    2.揭本質

    “重視知識的本質,對於程序員來說這一點尤其重要。程序員的知識蕪雜海量,而且總是在增長變化的。很多人感嘆跟不上新技術。應對這個問題的辦法隻能是抓住不變量。大量的新技術其實隻是一層皮,背後的支撐技術其實都是數十年不變的東西。底層知識永遠都不過時,算法數據結構永遠都不過時,基本的程序設計理論永遠都不過時。”(劉未鵬,《暗時間》)

    編程沒有現成的公式可以套用,雖然學生通過大量實例的學習可以從中總結出一些規律,但對於程序設計語言為什麼設這樣或那樣的處理規則,可能在短時間內不一定能琢磨明白。知其然還要知其所以然,隻有清楚了各種規則設計的原理,纔能徹底理解規則,進而熟悉和掌握規則,最後舉一反三熟練應用。從原理的剖析入手,這樣能提高學習效率,學會用計算機解決問題的方法。本書增加了許多從實際的問題引入概念的內容,讓學生知道程序設計各重要概念的來龍去脈;增加了對重要機制的設置原因進行本質討論分析,把有關聯關繫的概念進行橫向或縱向分析鏈接,對重點的概念或相關聯的概念提煉出其中的要素,以期增加學生對課程關鍵內容的把握。

    3.強調試

    “無論一個程序的設計結構如何合理,也無論文檔如何完備,如果不能產生正確的結果,則其一文不值。”(Chris H. Pappas等所著的《C++程序調試》)人們制造的產品,一般都有一定的誤差存在,比如設備或儀器。軟件產品是一個例外,軟件的最終交付形態是二進制的可執行碼,執行碼是不能容忍誤差的,而人類的思維特性正好與之相反,是模糊和充滿誤差的,因此程序員很難一次就寫出完全正確的代碼。

    張銀奎在其《軟件調試》一書中指出,“軟件調試技術是解決復雜軟件問題的最強大工具。如果把解決復雜軟件問題看作一場戰鬥,那麼軟件調試技術便是一種可以直擊要害而且銳不可當的武器。應該說學會調試器命令不難,但如何用調試器調試程序,找到bug,卻是一件很不容易的事情。”調試的技巧和經驗需要很長時間的練習纔能積累起來,對初學者而言是不容易掌握的,由此造成很多學生懼怕編程。

    “我們可以在調試程序和偵破謀殺案之間找出相似點來。實際上,在幾乎所有的謀殺懸念小說中,謎案都是通過仔細分析線索,將表面上不重要的細節全聯結起來而最終偵破的。”(Glenford J. Myers,《軟件測試的藝術》)“調試有點像捕魚:相同的情緒、熱情和刺激。長時間靜靜地工作後最終得到的是別人所不能體驗的喜悅。”(Eugene Kotsuba)掌握了程序調試技術,讀者在學習和開發程序時就能獨立發現問題、解決問題,這樣可以大大提高學習的興趣和信心。

    除了查找程序中的錯誤,調試其實對程序設計中不少概念的理解也是非常有幫助的,比如地址、、賦值、參數傳遞、作用域等,課堂上調試演示給予的直接的感性認識,比抽像的語言描述概念生動直觀得多。“除了使用調試器調試程序、尋找代碼中的問題,還可以認識其他軟件、探索操作繫統、觀察硬件等。”(張銀奎,《軟件調試》)不同的調試器,基本調試功能的工作方式和工作原理是基本一致的,“與MS-DOS中的第一個調試器Debug.com相比,雨後春筍般湧現的各種調試器,它們的大多數在原理上並沒有多少進步,隻是界面不同而已。”(Kaspersky,Hacker Debugging Uncovered)可以說,學會調試,對後續諸多的計算機類課程學習都是有益的,因此,教會學生調試的方法和技巧應該是編程類課程的一個非常重要的內容。

    筆者在企業任程序員多年,參與過歷時4年多、獲國家科技進步獎的大型軟件開發、開發成功後多用戶單位安裝調試、售後服務等繫列工程工作,對程序測試與調試有一定的實踐經驗。在授課過程中一直堅持在課堂上穿插演示調試,學生隻要有要求,隨時可以將任何一個程序展開進行跟蹤調試講解。後來發現,即使在課上多次演示重要程序實例的調試,學生也掌握得並不好。細究原因,調試是一個復雜過程,不同的數據組織、程序邏輯、現場查看處理等情形非簡單幾句描述就可以清楚明白,學生當時看懂了,但要回想復習時,就沒有可以參考的紙面資料,所以在《新視角》一書中把各章很多重點實例的調試過程及技巧都“靜態固化”到紙面上,讓學習者學習調試時有切實可行的參照方法。調試內容千變萬化,技巧也非常多,本書隻討論了最基本的調試方法與技巧,目前鮮有同類教科書有這樣全面的處理方法,專門介紹調試的書籍也較少。

    編程是一個不斷修改纔能完善的過程,其間往往要經過多次測試和調試。本書簡單介紹了測試樣例的設計原則和設計時機,讓讀者充分認識到程序測試的重要性,在學習編程之初就建立程序健壯性的概念。

    4.輕語法

    “輕”不是輕視語法,而是先介紹最基本的語法規則,讓初學者在理解中記憶,在使用過程中逐步熟練,使學習者不至於一開始就被C語言繁復的規則所困惑。對於相關深入的語法或復雜的、不常用的規則,作者把握的原則是讓學生知道知識歸類、會根據線索自己查找說明手冊或使用方法。針對計算機編程課程的特點,根據學生程度不同,由淺入深層層遞進設置不同難度的練習。

    內容結構

    本書探究從問題到解的計算機解決問題的方法論,以計算機解決問題的流程做主線,按照數據組織、數據處理、處理結果分別涉及的知識點層層展開,通過問題引入、類比解析概念,自頂向下逐步細化描述算法,數據分析實現存儲、代碼實現問題得解,到最後的測試調試驗證結果。

    數據的介紹從基本形式開始,隨著問題要處理信息復雜程度的增加,通過討論各種數據可能的組織方式,如數組、數據地址、復合數據、文件等,介紹數據在計算機中的組織結構和存儲方法,另外還有數據的輸入、輸出方法。

    算法是解決問題的步驟和方法,計算機算法需根據計算機解題特點來設計。算法由程序語句來實現,程序語句有相應語法規則及使用方法,程序有基本控制結構,程序開發有特定的步驟和方法。

    隨著問題復雜程度的增加,程序規模需要從單一模塊(函數)變為多模塊結構,本書通過討論處理問題規模改變之後需要增加的處理機制,介紹函數的


    查看全部↓



    "
     
    網友評論  我們期待著您對此商品發表評論
     
    相關商品
    在線留言 商品價格為新臺幣
    關於我們 送貨時間 安全付款 會員登入 加入會員 我的帳戶 網站聯盟
    DVD 連續劇 Copyright © 2024, Digital 了得網 Co., Ltd.
    返回頂部