本書是CCF全國青少年信息學奧林匹克競賽(NOI)教程的第一冊,旨在普及計算機科學與程序設計知識。書中遵循由淺入深、邏輯嚴密的編寫思路,輔以豐富的實例解析,引領讀者逐步提升計算思維能力。全書共七章,全面覆蓋了NOI系列競賽大綱入門級別的內容,包括編程基礎知識、數(shù)據(jù)的存儲與讀入、程序的選擇執(zhí)行、程序段的反復執(zhí)行、數(shù)據(jù)的批量存儲、模塊化程序設計、NOI系列競賽相關規(guī)定等。本書可作為信息學奧林匹克競賽的教學用書,也可作為青少年學習計算機科學知識、了解信息學奧林匹克競賽的參考資料。
本書由中國計算機學會組編,適合NOI參賽師生/信息學愛好者/程序設計競賽愛好者。本書特色:關注學習過程:本書的每一小節(jié)都沿著情境導航知識探究實踐應用總結提升四個環(huán)節(jié)依次展開強調反思意識:本書在解決每一個實際問題之后,加入思考、實驗等內容。其中,思考部分引導讀者學會提出問題并嘗試思考解決;實驗部分引領讀者通過上機操作解決疑問,確認思考結論。引導主動探究:本書在關注廣大初學者的同時,還為那些有更高需求的學習者設計了拓展類內容。這些拓展類內容不影響書的完整性,但是學習這些內容卻能拓展視野,提升解決問題的效率。建構知識體系:本書通過知識圖譜的形式歸納NOI系列競賽大綱入門級別應具備的完整知識框架。
1984年,中國計算機學會創(chuàng)辦了以程序設計為形式的全國青少年信息學奧林匹克競賽(NOI)。從此,無數(shù)青少年通過NOI系列活動了解編程,并走上計算機科學研究的道路。
近年來,隨著人工智能的普及,編程教育越來越受關注,青少年學習編程和參加競賽的熱情也越來越高。在這樣的背景下,啟動全國青少年信息學奧林匹克競賽教程的編寫工作,有必要清楚而明確地回答以下兩個問題。
第一個問題:C 程序設計類書籍那么多,為什么要再寫一本?
在多年的編程教學中,我們深刻體會到程序設計不是靠讀書實現(xiàn)的,但是一本好的程序設計書籍卻能開啟智慧,引人領略程序之美,架起從文字轉化為個人能力的橋梁。我們的初衷正是要寫出這樣一本不一樣的書讓讀者尤其是中小學生看得進去,更能看得出去。
看得進去,是希望能用深入淺出的文字,化刻意的嚴謹為輕松的引領。
看得出去,是希望讀者通過本書,不僅能收獲字里行間的知識,更能收獲字面之外的深度思考和學習方法。
第二個問題:本書有何特色?在內容上,如何實現(xiàn)目標?
為寫出一本不一樣的書,本書從關注學習過程、強調反思意識、引導主動探究、建構知識體系四個方面入手,為讀者提供源于知識、又超越知識本身的豐富資源。
1.關注學習過程
本書每一節(jié)都沿著情境導航知識探究實踐應用總結提升四個環(huán)節(jié)依次展開。從實際問題出發(fā),引導讀者在分析問題的基礎上,尋求解決方案,再由方案轉化為程序。而轉化過程中的知識空白,便是本節(jié)要學習的新知識。反過來,學習了新知識,便能編寫程序,更能實現(xiàn)預設方案,最后解決實際問題。在這個過程中,知識的出現(xiàn),恰逢其時;學習知識,有其背景更有其意義。體現(xiàn)了學習計算機科學的一個重要特點親歷發(fā)現(xiàn)問題、解決問題的過程,實現(xiàn)知識與能力的提升。
2.強調反思意識
本書在解決每個實際問題之后,加入思考實驗等內容。其中,思考部分引導讀者學會提出問題并嘗試解決;實驗部分引領讀者通過上機操作解決疑問,確認思考結論。大部分章節(jié)還設置了學習檢測環(huán)節(jié),通過練習幫助讀者鞏固知識、夯實基礎。
在最初接觸本書時,讀者可能會跟隨書中設計的思考實驗亦步亦趨;但是經(jīng)過一段時間的學習后,會逐漸養(yǎng)成多想一點、多做一點的習慣。這種潛移默化的影響,遠勝于單純的講授,它帶給讀者的不僅是學習程序設計的方法,更是自主和高效學習的能力。
3.引導主動探究
每個人的閱歷、習慣、解決問題的能力都有差異。這種差異是客觀存在的。本書在關注廣大初學者的同時,還為那些有更高需求的讀者設計了拓展內容。
每節(jié)的總結提升環(huán)節(jié),既總結重點內容,也提出拓展方向,為讀者提供回顧反思的基礎,也驅動讀者進一步探索學習、提升能力,向著優(yōu)化解決方案或者解決更多問題的方向努力。
這些拓展內容不僅不影響書的完整性,通過學習這些內容還能拓展視野,提升解決問題的效率。
4.建構知識體系
全書共七章,分別指向NOI競賽大綱中入門級別的內容,為讀者構建該級別應具備的完整知識框架。
在具體呈現(xiàn)上,一方面,注意結合4~7年級學生的年齡特點選擇題目,使讀者能聚焦編程學習的主干與核心,避免因題目背景分散注意力;另一方面,在每章結尾,又以思維導圖的形式梳理學習內容,進一步明晰了知識點以及例題與競賽大綱的聯(lián)系。
從細節(jié)設計到篇章導向,本書實現(xiàn)了編程知識與考綱條目的聯(lián)通,也建構起編程入門的知識體系,使得讀者能夠立于更高處看待知識,看清知識學習的規(guī)律與彼此間的關聯(lián)。
本書作為全國青少年信息學奧林匹克競賽教程的第一冊,力求為讀者開啟智慧、培養(yǎng)習慣,為后續(xù)的學習奠定基礎。雖然立意美好,但我們自知能力有限。在思考中實踐,在實踐中思考。路很長,唯以真誠相邀,期待青少年讀者、教育同行、計算機專業(yè)工作者多提寶貴意見,一起努力成就編程教育的詩和遠方。
邱桂香
2024年5月
陳穎 福州第一中學信息技術正高級教師、特級教師,曾任CCF理事
CCFNOI 首屆十大杰出指導教師
CCFNOI 鉆石教練
全國模范教師、福建省第五屆杰出人民教師等
指導學生在國際信息學奧賽中獲兩枚金牌、兩枚銀牌,指導學生獲亞太地區(qū)金牌5個,指導學生獲全國金牌、銀牌、銅牌幾十個,指導學生獲全國分區(qū)聯(lián)賽福建省一等獎幾百個,每個參加學習的學生100%獲全國分區(qū)聯(lián)賽福建省或福州市獎項。培養(yǎng)的學生100%具有非常好的學習與職業(yè)發(fā)展。
叢書序
前言
第一章 編程基礎知識
第一節(jié) 初識C 程序3
一、情境導航3
二、知識探究3
(一)C 程序的基本結構3
(二)集成開發(fā)環(huán)境4
三、實踐應用5
四、總結提升7
第二節(jié) 整數(shù)算術運算9
一、情境導航9
二、知識探究9
(一)cout語句9
(二)算術運算符10
三、實踐應用11
四、總結提升12
五、學習檢測14
第三節(jié) 實數(shù)算術運算15
一、情境導航15
二、知識探究15
(一)C 語言中實數(shù)的概念15
(二)實數(shù)與整數(shù)的區(qū)別16
(三)常用的數(shù)學函數(shù)16
三、實踐應用17
四、總結提升18
五、學習檢測21
本章回顧22
第二章 數(shù)據(jù)的存儲與讀入
第一節(jié) 變量和變量的類型25
一、情境導航25
二、知識探究25
(一)變量和數(shù)據(jù)類型25
(二)數(shù)據(jù)類型轉換26
三、實踐應用28
四、總結提升33
五、學習檢測36
第二節(jié) 賦值語句和數(shù)學表達式37
一、情境導航37
二、知識探究38
(一)賦值語句38
(二)變量的自增自減38
(三)常量定義39
三、實踐應用39
四、總結提升43
五、學習檢測46
第三節(jié) 變量的讀入47
一、情境導航47
二、知識探究47
(一)cin語句47
(二)順序結構程序設計48
三、實踐應用49
四、總結提升53
五、學習檢測56
第四節(jié) scanf語句和printf語句57
一、情境導航57
二、知識探究58
(一)printf格式輸出函數(shù)58
(二)scanf格式輸入函數(shù)59
三、實踐應用60
四、總結提升65
五、學習檢測66
本章回顧68
第三章 程序的選擇執(zhí)行
第一節(jié) if語句和關系表達式71
一、情境導航71
二、知識探究71
(一)if語句的格式71
(二)分支語句中關系表達式的設計72
三、實踐應用73
四、總結提升76
五、學習檢測78
第二節(jié) 邏輯表達式和條件表達式79
一、情境導航79
二、知識探究80
(一)邏輯運算和邏輯表達式80
(二)邏輯型變量81
(三)條件表達式81
三、實踐應用82
四、總結提升85
五、學習檢測86
第三節(jié) 嵌套if語句87
一、情境導航87
二、知識探究88
(一)嵌套if語句的概念88
(二)嵌套if語句使用的注意事項88
三、實踐應用89
四、總結提升96
五、學習檢測99
第四節(jié) switch語句100
一、情境導航100
二、知識探究101
(一)switch語句的格式101
(二)switch語句使用的注意事項102
三、實踐應用102
四、總結提升106
五、學習檢測109
本章回顧110
第四章 程序段的反復執(zhí)行
第一節(jié) for語句113
一、情境導航113
二、知識探究114
(一)循環(huán)結構114
(二)for語句的格式114
三、實踐應用115
四、總結提升120
五、學習檢測122
第二節(jié) while語句125
一、情境導航125
二、知識探究125
(一)while語句的格式125
(二)模擬法126
三、實踐應用127
四、總結提升132
五、學習檢測134
第三節(jié) do while語句136
一、情境導航136
二、知識探究137
(一)do while語句的格式137
(二)位運算138
三、實踐應用139
四、總結提升144
五、學習檢測146
第四節(jié) 多層循環(huán)148
一、情境導航148
二、知識探究149
(一)多層循環(huán)149
(二)枚舉法150
三、實踐應用151
四、總結提升159
五、學習檢測161
本章回顧165
第五章 數(shù)據(jù)的批量存儲
第一節(jié) 一維數(shù)組169
一、情境導航169
二、知識探究170
(一)一維數(shù)組170
(二)數(shù)組的初始化170
三、實踐應用171
四、總結提升174
五、學習檢測177
第二節(jié) 活用數(shù)組和數(shù)組下標179
一、情境導航179
二、知識探究179
三、實踐應用180
四、總結提升189
五、學習檢測193
第三節(jié) 字符數(shù)組與字符串196
一、情境導航196
二、知識探究196
(一)字符數(shù)組196
(二)字符串198
三、實踐應用200
四、總結提升207
五、學習檢測209
本章回顧214
第六章 模塊化程序設計
第一節(jié) 自定義函數(shù)217
一、情境導航217
二、知識探究217
(一)自定義函數(shù)的定義217
(二)自定義函數(shù)的調用218
(三)傳值參數(shù)與傳引用參數(shù)219
(四)常量與變量的作用范圍220
三、實踐應用221
四、總結提升230
五、學習檢測233
第二節(jié) 遞歸函數(shù)235
一、情境導航235
二、知識探究237
(一)遞歸函數(shù)237
(二)遞歸的要素237
三、實踐應用238
四、總結提升247
五、學習檢測250
本章回顧254
第