寫程式一點都不難!
寫程式很難嗎?
看了本書,中文系的學生也能輕鬆上手!
內含習題解答,教你寫出簡易的
電腦放榜系統、選修課程系統、存貨管理系統!李家同教授:「這本書的特色是強調邏輯思考,很多中文系的學生都能因此而寫500行的程式。」
李家同教授長期關注台灣教育,了解台灣學生學習問題的癥結,在教學指導上,總是從最基本的概念循序解說,幫助學生釐清觀念,並加強習題演練。
李教授著有《專門替中國人寫的英文課本》、《專門為中學生寫的數學課本》等系列暢銷叢書,幫助許多學生成功克服了英文及數學的學習障礙。
美國加州大學柏克萊校區電機博士、曾任清華大學資訊研究所所長的李教授,也看到了學生對於程式設計的學習恐懼及困難之處,特地規劃撰寫了本書,期望透過簡明的步驟解說,讓學習者更容易理解,邏輯思考更清晰,人人都能輕鬆寫出程式。
作者簡介:
李家同
民國28年生,台大電機系學士,美國加州大學柏克萊校區電機博士。歷任清華大學應用數學研究所所長、資訊研究所所長、電機系系主任、工學院院長、教務長,靜宜大學校長,暨南大學校長。現任總統府資政、博幼基金會董事長。
李教授曾連續五次獲得國科會的傑出研究獎,教育部工科學術獎和侯金堆傑出學術獎,他是美國電機電子學會的榮譽會士,並且曾擔任過十一種國際學術刊物的編輯委員。
李教授信仰天主教,在大學求學期間,就常去台北監獄及新店軍人監獄替受刑人服務,目前仍為新竹德蘭中心的義工,替孩子們補習數學和英文。李教授熱愛文學,由於他的宗教信仰和他服務弱勢團體的經驗,使他的文章帶有人道主義的色彩,也因為他不說教,他的小說非常有趣,廣受讀者大眾喜愛。
李家同作品
學習書:
《讀李家同學英文》、
《專門替中國人寫的英文課本》等英語學習書
《專門為中學生寫的數學課本》等數學學習書
故事繪本:
《車票》、《蘋果》、《太陽下山,回頭看》、《山谷裡的丁香花》、《三個孩子的故事》、《來自遠方的孩子》、《我是誰》、《鐘聲又再響起》、《屋頂》等。
文學作品:
《故事六十八》、《鐘聲又再響起》、《讓高牆倒下吧》、《陌生人》等。
教育專論:
《李家同談教育:希望有人聽我的話》
章節試閱
第十二章 簡易電腦放榜系統
參加招生考試是許多人共同的經驗。由於學校眾多且名額有限,每位考生依據自己的喜好列出欲就讀學校的順位,然後由招生單位根據這些考生的志願一同決定各校的錄取名單。早期類似的放榜作業都由人工花費許多時間完成,現在的放榜作業大都交由電腦代勞,迅速又確實。基本上,這樣的電腦放榜系統要輸入學生的基本資料,例如學號、姓名、各科成績、學校志願代碼等,及學校的資料,例如學校代碼、校名、錄取名額、錄取條件等,而系統的輸出便是各校的錄取名單。
為了簡化程式設計的複雜度且滿足問題描述的要求,我們做了以下的限制與基本假設:
1. 輸入的資料
A. 學生資料檔(最多100筆學生資料)。學生資料檔已依據學生總分排序好。
包含下列欄位:
․學號
․姓名
․總分
․第一志願的學校代碼(若為0表示放棄此志願)
․第二志願的學校代碼(若為0表示放棄此志願)
․第三志願的學校代碼(若為0表示放棄此志願)
例:含有10筆學生資料的學生資料檔(student.dat)
1004 蔡一林 90 1 2 3
1001 研程序 85 1 3 2
1010 劉的華 80 1 2 3
1005 新曉期 78 1 3 2
1008 章柏之 75 2 3 0
1006 周瑜名 70 2 0 0
1009 普學量 69 3 1 2
1002 謝婷風 64 2 1 3
1007 照唯 58 2 3 1
1003 吳大唯 56 3 2 1
A. 學校錄取名額檔(最多20筆學校資料)。包含下列欄位:
․學校代碼
․校名
․名額
例:含有3筆學校資料的學校錄取名額檔(school.dat)
1 台北高中 4
2 台中高中 3
3 高雄高中 3
1. 輸出的資料
錄取各個學校的學生榜單。
2. 基本假設與說明
每人可填三個志願,各校只以總分高低作為錄取與否的標準。
這樣的系統除了用於招生事務外,還可應用於因資源容量有限而需要分配的問題上。例如教師實習分發,訓練活動安排,旅遊梯次分配。
第十二章 簡易電腦放榜系統參加招生考試是許多人共同的經驗。由於學校眾多且名額有限,每位考生依據自己的喜好列出欲就讀學校的順位,然後由招生單位根據這些考生的志願一同決定各校的錄取名單。早期類似的放榜作業都由人工花費許多時間完成,現在的放榜作業大都交由電腦代勞,迅速又確實。基本上,這樣的電腦放榜系統要輸入學生的基本資料,例如學號、姓名、各科成績、學校志願代碼等,及學校的資料,例如學校代碼、校名、錄取名額、錄取條件等,而系統的輸出便是各校的錄取名單。為了簡化程式設計的複雜度且滿足問題描述的要求,我們做...
作者序
寫程式一點也不難
我唸博士班的時候,系上規定學生都要會寫程式,我當時不會,也不可能在一週內學會,只好央求那位助教網開一面;助教是個好人,就讓我混過去了。但是我寫博士論文,必須寫程式,我已是博士生,當然不能去選任何寫程式的課,好在我要用的程式語言是LISP,教科書裡有好多例子,我就無師自通了。
以後,我通過資格考了,系上要我授課,而我教的是組合語言的程式(Assembly Language Programming),我教以前,聽都沒有聽過「組合語言」。修課的全是大學三年級的學生,他們是「天下程式一大抄」,常常是好多份作業一模一樣,我問他們是怎麼一回事,他們說“We worktogether”。理由也一大堆,最常用的理由是要打工。我一直以為寫程式沒有什麼了不起,人人都可以學會的。有一次,我看到一位學生在寫程式,他對天花板發呆一陣子,然後寫一段,又再陷入沉思,我當時還以為他在寫小說。我問他程式的流程圖畫出來沒有,他根本不知流程圖為何物,當然也從不畫流程圖。這有點像造橋的工程師沒有設計圖的觀念,一切都在腦子裡。
我慢慢地發現了一件怪事:好多學生不會寫程式,而且我國有大批的同學沒有流程圖的觀念,老師也不太強調流程圖,他們花很多時間在教程式語言,如:C 語言。這些語言極為複雜,學生學得昏頭轉向,覺得寫程式好難,就是學不會。
其實,寫程式一點也不難,我們總需要告訴親友如何到你家來的,以我家為例,我住新竹,台北如有人要來找我,我會給他以下的指令:
(1)到台北轉運站,搭乘任何一家走高速公路的客運到新竹。
(2)在交通大學站下車。
(3)向前走,碰到第A個紅綠燈,就向左轉,上B街。
(4)看到左邊第C個加油站,向右轉,上D街。
(5)我家在D街E號F樓G號。
以上的全部指令,就是一個流程圖。
我們都有看食譜的習慣,每一個食譜都是一個流程圖。最簡單的食譜是做水果茶的食譜:
(1)將你想吃的水果,如:柚子和柳丁,壓成汁。
(2)加入蜂蜜和檸檬汁。
(3)加熱至沸騰。
(4)加入紅茶包,攪動後即是水果茶。
如果你感冒了,醫生會開一些藥給你,然後叫你每天吃一服,一旦退燒兩天之久,即可停止服藥,如果五天以後,仍然發燒,就應回診。這些話,可以用以下的流程圖來表示:
寫程式,最重要的是要先有流程圖,一旦流程圖畫出來了,程式馬上也會跟著出來,理由非常簡單,我們只要學會一些程式語言的規則,就會將一個流程圖轉換成一個程式。可是反過來說,如果一個人在寫程式以前,根本畫不出來流程圖,那就休想寫程式了。
我認為我們老師教寫程式,應該集中心力教會學生如何設計流程圖,而不該浪費太多的時間在教程式語言,因為流程圖的設計才是寫程式最重要的一個工作。我們之所以有很多學生不太會寫程式,絕不是因為他的程式語言沒有學會,而是他的邏輯思考根本不行,使得他設計不出流程圖。我們寫程式的人如果不會邏輯思考,那就一切免談。
我的這一本書就強調邏輯思考的重要性,也用大量的例子來教學生如何設計流程圖,我在很多大學利用這本書教非資訊系的學生,我可以非常驕傲地說,很多文學院和管理學院的學生都輕鬆地學會了寫程式。就以本書的第十三章為例,那一個簡易的選修課程系統就是文學院學生寫的。
希望大家知道,寫程式並不難,關鍵全在如何設計流程圖,對於沒有寫過程式的人來說,設計流程圖並不簡單,所以我在這一本書裡面用很多的例子來教大家如何先設計流程圖,再寫程式。這本書一共有十五章。
在此強調我們用的程式語言是C語言,所使用的編譯器是Dev-C++4.9.9.2。讀者如果用錯了編譯器版本可能會出問題。
我在此謝謝很多我的學生和朋友,他們幫了很大的忙,尤其是靜宜大學的蔡英德教授和中興大學的林金賢教授。我曾用這本書教了叫做周照庭的同學,他並不是資工系的學生,但他已會做書中的全部習題,現在應該算是一位會寫程式的人了。
寫程式一點也不難
我唸博士班的時候,系上規定學生都要會寫程式,我當時不會,也不可能在一週內學會,只好央求那位助教網開一面;助教是個好人,就讓我混過去了。但是我寫博士論文,必須寫程式,我已是博士生,當然不能去選任何寫程式的課,好在我要用的程式語言是LISP,教科書裡有好多例子,我就無師自通了。
以後,我通過資格考了,系上要我授課,而我教的是組合語言的程式(Assembly Language Programming),我教以前,聽都沒有聽過「組合語言」。修課的全是大學三年級的學生,他們是「天下程式一大抄」,常常是好多份作業一模一樣...
目錄
序
第1章 最簡單的程式
第2章 有if指令的程式
第3章 有for迴圈指令的程式
第4章 有while迴圈指令的程式
第5章 陣列
第6章 副程式
第7章 檔案的應用
第8章 遞迴程式
第9章 排序
第10章 C語言Structure的功能
第11章 字串處理的指令
第12章 簡易電腦放榜系統
第13章 簡易的選修課程系統
第14章 存貨管理系統
第15章 如何設計大程式
01-11練習題解答
序
第1章 最簡單的程式
第2章 有if指令的程式
第3章 有for迴圈指令的程式
第4章 有while迴圈指令的程式
第5章 陣列
第6章 副程式
第7章 檔案的應用
第8章 遞迴程式
第9章 排序
第10章 C語言Structure的功能
第11章 字串處理的指令
第12章 簡易電腦放榜系統
第13章 簡易的選修課程系統
第14章 存貨管理系統
第15章 如何設計大程式
01-11練習題解答
購物須知
關於二手書說明:
商品建檔資料為新書及二手書共用,因是二手商品,實際狀況可能已與建檔資料有差異,購買二手書時,請務必檢視商品書況、備註說明及書況影片,收到商品將以書況影片內呈現為準。若有差異時僅可提供退貨處理,無法換貨或再補寄。
商品版權法律說明:
TAAZE 單純提供網路二手書託售平台予消費者,並不涉入書本作者與原出版商間之任何糾紛;敬請各界鑒察。
退換貨說明:
二手書籍商品享有10天的商品猶豫期(含例假日)。若您欲辦理退貨,請於取得該商品10日內寄回。
二手影音商品(例如CD、DVD等),恕不提供10天猶豫期退貨。
二手商品無法提供換貨服務,僅能辦理退貨。如須退貨,請保持該商品及其附件的完整性(包含書籍封底之TAAZE物流條碼)。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱
退換貨原則、
二手CD、DVD退換貨說明。