■文科生學程式,前進IT產業!加入護國神山不是夢!
■本書程式碼及教材,免費下載: shorturl.at/NOPW1
■ 針對108課綱科技領域高中「程式設計」,特別是針對文科(社會組)學生,一本快速入門又實用的程式設計教科書,銜接十二年國教的資訊教育
本書目標讀者─
1.文科社會組高中生。
2.非資訊專業科系的大專學生(通識課程)、一般上班族、有志於一窺程式設計領域堂奧的青少年讀者。
3.自認數理成績低分、邏輯思考遜的你,也能學會程式設計的運算思維,應用在專業領域。
4.不是只有理科生能進最賺錢的IT產業,具有「運算思維」的文科生更有價值!
本書特色─
1.針對108新課綱「程式設計」課程(高中社會組、大學通識)教學使用,師生可以拿來當教科書。
2.不是為「程式設計」而學程式設計,而是為了程式設計的應用領域(如商業、統計、會計、文書、大量資料處理、重複性工作處理……)而學習程式設計。沒基礎,甚至沒興趣的非資訊專業人士,可以不用寫程式,也能學到最重要的「運算思維」。
3.附免費程式碼及教材電子檔,師生可以下載,即學即用。
作者簡介:
周樂正
平鎮高中資訊科技專任教師。
畢業於國立交通大學控制工程學系(現已合併為國立陽明交通大學電機工程學系)。國二時開始接觸APPLE II電腦,與電腦結下不解之緣,大學時期於電腦職訓班兼課,退伍後,先後擔任高職資訊科及普通高中資訊科技教師。為追求提升效率及自動化,對於電腦硬體、軟體都有涉獵,擔任電腦教學工作長達三十年之久,樂於帶領學生打好程式設計基礎,用程式語言去探索軟體和硬體的整合應用,培養學生在資訊科技領域學習的動機與熱忱。聯絡:camelchou@gmail.com
施百俊
國立屏東大學文化創意產業學系教授。
國立臺灣大學商學研究所博士、美國康乃爾大學電機工程碩士、國立臺灣大學電機系畢業。小學開始寫程式,不知不覺超過四十年。著有《學測物理》、《學測化學》、《故事與劇本寫作》(均五南出版)等數十本著作,得獎無數,為國內重要的跨領域專家。聯絡:bj@bjshih.idv.tw
章節試閱
第1 講 人與電腦
電腦的原理
各位應該都去過廟裡「搏杯」吧(術語叫做「擲筊」)?沒搏過的人應該也看人搏過。
一般使用兩個成對的木製新月形的筊杯,凸起的一面稱為「陰面」,也就是反面;平面的一面則稱為「陽面」,也就是正面。如果身邊沒有筊杯,拿兩個硬幣,也可以將就著用。
問神明旨意時,用雙手捧著筊杯,然後拋擲於地。如果是一正一反,稱之為「聖筊」,神明同意你的請求。如果是兩反,稱之為「哭筊」,神明不同意你的請求,神明生氣了、哭了;如果是兩正,稱之為「笑筊」,神明也不同意你的請求,反而呵呵笑了。
人類想要預測未知之事,於是請求神明的旨意,就搏杯。人情之常,無可厚非。但如果你抽離這個情境,退遠一點來看,筊杯也不過就兩個木製的道具,你絕不會說它有「智慧」。如果你說這對筊杯擁有「人工智慧」,別人絕對會覺得你腦子有病。搏杯的結果,純然只是機率作用,由占卜者依「既定的規則」來詮釋。一正一反、兩反、兩正⋯⋯該怎麼解釋就怎麼解釋,也很難說成是神明的旨意。說到這大家肯定說我唯物論,不信神。錯了,我還是信神、疑惑還是會搏杯,因為心裡覺得有安慰。我想表達的是,科學歸科學、信仰歸信仰,可得分清楚才行。
但,你絕對沒想到的是,整個資訊科學、電腦的運作基礎,就是科學家、工程師參透了上述的原理,所建構出來的呀—
只要是「兩個狀態」的現象,都可以用這個二元(binary)的象徵系統來表示,也就是最低階的程式「語言」,包括0/1、開關、明暗、陰陽、正反、黑白、對錯、是非⋯⋯等等—這就叫做「數位化」(digital),一般,我們都簡化為只用0/1來表示;每一個0/1的狀態,我們稱之為「位元」(bit)。
只要是能用來表現、操作這一套二元邏輯的事物,都可以用來組建數位化系統(digital system)。比如上面提到的筊杯、硬幣,還有電器開關、燈泡、圍棋棋子、旗語、手勢、電磁(正負、南北極)⋯⋯。這就是所有電腦的基礎,但請別忘記了,這些事物還是「沒有智慧」。
等一下!一定有同學會說,少騙人了,搏杯和電腦的複雜程度,相差何止十萬八千里!(最起碼,外表長得完全不一樣啊!)如果要詳細解釋這套複雜化的建構過程,你得去上大學資訊系讀四年。這本書沒那個閒工夫,我們還是用比喻的方式來解說:
八卦共有「乾、坤、坎、離、震、巽、艮、兌」八個卦象,可以用陰0/陽1兩個狀態來表示,分別是陽陽陽111、陰陰陰000、陰陽陰010、陽陰陽101、陰陰陽001、陽陽陰110、陽陰陰100、陰陽陽011,用三個位元就能表示了。也可以說,八卦就是一套簡單的「程式語言」,它共有八個指令(instruction)語法。
易經六十四卦,是兩套八卦排列組合,據說能表示天地萬物的事理,總共只需要六位元。也可以說,你只需要六個筊杯、六個硬幣、六個開關⋯⋯就可以組建一個簡單的易經計算機,而以八卦程式語言來操作。
如果你想要表達更複雜的事物,只要增加位元數就可以了。比如,銀河系中的恆星總數大約在一千億之譜,用二進位(binary 0/1)來編號表示,不超過40位元就能搞定了。人體腦神經細胞的連結,也大概是這個數量。
臺灣的護國神山「台積電」(台灣積體電路股份有限公司),目前的技術水準是3奈米(10-9M)。也就是說,在幾公分見方的一片小小的積體電路 IC 中,可以容納的電晶體(可以想像作電路開關)數量,和星星的數量一樣多,有沒有很驚人?也就是說,在小小的一片晶片裡,我們就擁有處理宇宙複雜度的運算能力了。
說到這還是要再提醒一次,無論電腦有多複雜,它終究只是開關的組合,只能被動地接受人類的指令,完全沒有思考能力,更遑論擁有智慧了!
當然,要控制、操作這套複雜的數位化系統(電腦),我們需要比八卦更複雜的指令和程式語言。而利用這套程式語言來操作電腦的工作,就是「程式設計」(programming)。
程式設計與運算思維
不知道各位同學有沒養過狗狗?
養過狗的人一定知道,要和狗狗溝通,只能用極為有限、簡單的語言。我家的狗只聽得懂「不行!」「坐下!」和「握手!」三個指令。我看過YouTube上有訓練軍犬的影片,花樣就比較多,狗狗可以聽得懂十幾、二十個指令。至於公園裡的老先生老太太們,喜歡抱著狗狗講一大篇、給狗狗訓話等等,我相信狗狗大多聽不懂。牠只是乖乖坐在那兒罷了。
要跟狗狗溝通,只能用這種有限的、簡化過的「狗語」。如果你硬要跟狗狗說人話,是自找苦吃。不僅狗狗痛苦,你也達不到溝通的目的,沒法命令狗狗去完成你想要牠做的事。
上節已經說過,電腦不會思考、沒有智慧,比狗狗還要笨。因此,和電腦溝通,對電腦下指令,只能用電腦聽得懂的電腦語—術語就叫做「程式語言」。
程式語言有好幾個層次:最簡單的叫做低階語言,大致上是由最基礎的0/1組成的,包含機器語言、組合語言都屬於這類。低階語言是最基礎的電腦語,電腦看得懂,但對人類來說,相當不容易懂。0100 0101 11011010⋯⋯正常人都無法理解吧!
把低階語言重新組織成人類較容易理解的形式,就叫做高階語言。現在實務上,較常見到的高階語言有:C、SQL、JAVA、BASIC等等,各自也都有許多擴充、改良過的版本。下一節,我會介紹目前最常用、用途最廣泛的 Python。
「程式」(program)在英文中,是程序、節目、安排的意思,也可以解釋做一連串預先安排好的工作程序。比如說,你每天早上醒來,就會依照順序執行一連串的工作:起床、上廁所、刷牙、洗臉、吃早餐、穿好鞋襪、揹書包去上學—這就是一個程式。再回到一開始的比喻。你也可以對狗狗作程式設計。比如,只要遇到親戚朋友,你下令執行「撒嬌」程式,牠就會搖尾巴、坐下、握手⋯⋯連續動作。我試過了,不難。
凡事只要一牽涉到「設計」(design)這兩個字,巧妙程度自有不同。有人寫的程式就很笨拙,很費工、效率又不好;有人寫得程式很精妙,很有效率地就能讓電腦完成工作。這其中的關鍵,在於你能不能精準的掌握「運算思維」(computational thinking)。
運算思維講起來好像很玄,白話就是「電腦的思考方式」—這不廢話,你想讓狗狗聽話,你就要掌握狗狗的思考方式。你想讓電腦聽話,當然就要掌握電腦的思考方式啊!這就是本書的重點。
第1 講 人與電腦
電腦的原理
各位應該都去過廟裡「搏杯」吧(術語叫做「擲筊」)?沒搏過的人應該也看人搏過。
一般使用兩個成對的木製新月形的筊杯,凸起的一面稱為「陰面」,也就是反面;平面的一面則稱為「陽面」,也就是正面。如果身邊沒有筊杯,拿兩個硬幣,也可以將就著用。
問神明旨意時,用雙手捧著筊杯,然後拋擲於地。如果是一正一反,稱之為「聖筊」,神明同意你的請求。如果是兩反,稱之為「哭筊」,神明不同意你的請求,神明生氣了、哭了;如果是兩正,稱之為「笑筊」,神明也不同意你的請求,反而呵呵笑了。
人類想要...
目錄
【課程說明】不光學程式,要學運算思維!
基礎篇
第1 講 人與電腦
第2 講 流程控制:處理工作要有順序
第3 講 邏輯與條件判斷
第4 講 迴圈:處理重複的工作
第5 講 模組化:將繁瑣的工作外包
第6 講 分層作業:分解工作、層層節制
第7 講 主從式架構:客戶導向
第8 講 物件導向:自主與授權
應用篇
第9 講 【文書處理】像寫程式那樣使用word
第10講 【遊戲製作】企劃才是重點!文科生也能進遊戲業,用Scratch搞出你的第一個遊戲
第11講 【App Inventer】賣App賺錢是理科生的專利?App只是互動的網頁罷了
【課程說明】不光學程式,要學運算思維!
基礎篇
第1 講 人與電腦
第2 講 流程控制:處理工作要有順序
第3 講 邏輯與條件判斷
第4 講 迴圈:處理重複的工作
第5 講 模組化:將繁瑣的工作外包
第6 講 分層作業:分解工作、層層節制
第7 講 主從式架構:客戶導向
第8 講 物件導向:自主與授權
應用篇
第9 講 【文書處理】像寫程式那樣使用word
第10講 【遊戲製作】企劃才是重點!文科生也能進遊戲業,用Scratch搞出你的第一個遊戲
第11講 【App Inventer】賣App賺錢是理科生的專利?App只是互動的網頁罷了