Author name: 楊慶忠

進階語法之3~物件與視窗

2-3:物件與視窗 我們每天接觸電腦,在處理檔案資料夾的時候,習慣用滑鼠點選圖示或選單,來進行開啟、複製、貼上、刪除等動作,這種視窗操作設計,稱之為「圖形化使用者介面」(Graphical User Interface, GUI)。 早期DOS(Disk Operating System)作業系統時代,那些複製、刪除的動作,都要一行一行輸入英文指令來執行,十分費事,又容易出錯。圖形化介面的出現,是技術上相當大的進步,讓操作電腦變得十分直覺, 執行Python程式,如果只能在特定軟體中得到輸出,其實用性會有所侷限。但它其實是可以做成視窗面板的形式,再轉換成.exe執行檔,在Windows作業系統中直接開啟使用。 上圖中,第2行匯入製作視窗的模組tkinter,並簡化其命名為tk。第3行取用tk中的面板類別Tk,建立一個面板物件win,接著再取用win物件的各個函式,在第4~6行設定其外觀,後執行mainloop( )指令得到的結果,就是上圖下方500×300像素的青色面板。 下圖是完整程式執行後得到的視窗面板,它是用按鈕、文字方塊、選項鈕等元件,顯示「天增歲月人增壽」的下聯,以及顯示台南、高雄、嘉義的景點。這視窗只要再經過pyinstaller模組的打包,就可以在一般Windows電腦開啟執行了。 視窗作業系統,其發展過程風風雨雨,有牽涉到兩家電腦巨擘,蘋果和微軟。他們GUI的技術,都是源自於全錄公司(Xerox)位於加州帕洛奧圖的研究中心,全名為「Palo Alto Research Center」,簡稱PARC,該中心在個人電腦發展過程貢獻良多。 有部影集叫「Pirates of Silicon Valley」(矽谷海盜群),就是在描述賈伯斯和比爾蓋茲之間,既生瑜何生亮的複雜情結。他們本是大哥帶小弟的關係,但微軟參與蘋果技術開發取得視窗訣竅,後來甚至從PARC直接挖角人才,建立自己的Windows作業系統,導致彼此反目,片中有一段精采的交鋒。 比爾蓋茲認為他和賈伯斯沒有兩樣,都好比是從有錢人鄰居Xerox夜不閉戶的住宅中,偷竊到人家的電視機,不管誰先來後到,兩人扮演的,都是竊賊的角色。 比爾蓋茲的說法其實是相當有問題的。當蘋果公司營業上億時,微軟每年營收不過八百萬美金,而且其中有一半,是來自搭配於蘋果麥金塔電腦的Word、Excel。最重要的,當時全錄公司有投資蘋果一百萬美金,所以賈伯斯才有機會進入PARC參觀。 蘋果在Sculley執行長任內,曾對微軟提起訴訟但敗訴。賈伯斯二度回鍋蘋果之後,本可以其掌握的第一手資料重擊微軟,但他是個惜才的人,他只要求比爾蓋茲投資蘋果一億美金,藉此讓外界瞭解,蘋果的技術遠較微軟優異。 相同的劇情,在手機世代又重演一次,但賈伯斯這次真的生氣了。他痛斥Google的Android作業系統,是剽竊自iOS的垃圾產品,並將Google在蘋果的一席董事Schmidt,於2006年逐出董事會。

進階語法之3~物件與視窗 Read More »

進階語法之2~物件與遊戲

2-2:物件與遊戲 在個人電腦興盛之前,一般人常玩的電子遊戲機有幾款熱門的機型,包括賽車遊戲、太空大戰,以及乒乓球遊戲等,深受美國社會各階層歡迎。 設計這些電玩遊戲的工程師技藝高超,不需要寫一行程式碼,光憑電子電路,就可以做出令人廢寢忘食的電子遊戲。在這當中,乒乓球遊戲的發展過程,特別具有戲劇性。 當時矽谷的傳奇電玩公司雅達利(Atari),其老闆布許聶爾在商展的電視遊樂器中,發現了一款乒乓球遊戲,沒有音效、沒有計分,而且球還是正方形的,卻居然有不少人喜歡玩。於是他把它改良後再推出,想不到一炮而紅。 可這種遊戲有個小缺點,就是必須要有兩個人一起玩才行。但很多電玩怪咖都是獨來獨往的,有迫切需要再開發一套個人版來滿足這些人,所以更加傳奇的蘋果電腦創業夥伴,賈伯斯和渥茲尼克這時候粉墨登場了。這哥倆好肩負起重責大任,而且還真的不辱使命,打造出來的個人版乒乓球遊戲,正就是後來大家熟悉的”打磚塊”。 打磚塊這個遊戲,一直到個人電腦普及後,仍舊深受歡迎。在程式設計上面,也很適合拿它來說明物件與類別的建立與使用。 https://mobile-learning-testing.com/wp-content/uploads/2024/10/Clipchamp7.mp4 提起蘋果創辦人賈伯斯,他的生平事蹟真的三天三夜也講不完,但他極浪漫的一面倒是鮮為人知。 他很崇拜美國歌手Bob Dylan,崇拜到竟然追求其前妻,另一位知名歌手Joan Baez,女方大他十幾歲,兩人還一度論及婚嫁。Bob Dylan後來以歌詞上的創作,獲得諾貝爾文學獎。 Joan Baez則以其感傷又具人文關懷的歌聲,撫慰了多少在外求學就業的年輕心靈,尤其一首”Five hundred miles away from home“,更是娓娓訴說了離鄉背井的無奈與難捨。 電腦遊戲,在迷你電腦時代,為程式設計的發展,製造了推波助瀾的效果。迷你電腦或稱小型電腦(minicomputer),它的體積並不特別小,而是介於大型電腦和個人電腦之間,迪吉多公司的PDP-8是其中的代表性產品。 當年創立Artificial Intelligence一詞的先驅,達特茅斯學院的助理教授麥卡錫,後來跳槽至麻省理工學院建立人工智慧實驗室,他和另一位AI要角閔斯基,兩人旗下聰明又愛搞怪的徒子徒孫們,用PDP-1設計出太空大戰電腦遊戲,並在其他電腦中心流行起來,且各方狂熱開始欲罷不能。搞到後來,迪吉多公司每次要出貨電腦前,一定要先把太空大戰安裝在PDP內,以滿足不同顧客的共同「需求」。 網際網路的發展也有類似的情節,它一開始也是使用迷你電腦來處理介面訊息,當時主要功能是在傳遞電子郵件,後來到傳遞圖片甚至影片的階段,頻寬的需求就越來越多。當一些電腦宅男高手,開始在傳送色情圖片影片的時候,各種擴充頻寬的技巧,更是一發不可收拾。 圖2-2-4. 第一代電腦遊戲Spacewar,使用PDP-1設計。

進階語法之2~物件與遊戲 Read More »

進階語法之1~物件與類別

2-1:物件與類別 類別(class)和物件(object),這兩者是緊密相關連的,在進階一點的程式碼中,不時可看到其活躍的身影。 類別是一種複合式的資料型態,裡面可包含有數種屬性,以及處理這些屬性的函式;物件就是變數,只不過其資料型態為某種類別,此類別的屬性值一旦被指定,物件即在當時被建立完成,一個類別可以建立許多類似的物件。 我們以下列的程式碼,來說明這看似莫測高深的名詞,其實可以很直覺的來理解它。 在上圖第1~3行中,等號 = 的左手邊是變數名稱,右邊是變數值。由變數值可以看得出來,變數name的資料型態是字串(str),height的資料型態是整數(int),而weight的資料型態是浮點數(float)。 第4行等號左邊的bigball,和第5行的smallball,看起來也像是變數,但等號右邊的ball(50)、ball(25),實在看不出來是甚麼資料型態。 在這裡,我們刻意將ball的資料型態設定為類別,在主程式之前就應該先幫它做好定義,所以變數bigball、smallball,就是指定不同屬性值50、25給ball的類似物件。 在上圖中,我們用關鍵字class定義一個圓形類別ball,裡面用def宣告三個函式。 第一個函式_ _init_ _必然要存在,它叫做建構子,負責在建立物件時,將傳遞過來的變數值,指定成為自己的屬性值。在此做這個動作的,就是第3行的self . rad=rad,其中self是物件自己,它用點運算符 . 來連結其半徑屬性rad。等號右邊的rad,即將承接由第10、11行傳來的50、25。 第二個函式area(self),其功能是使用半徑屬性self.rad,來計算該圓形物件面積。因為self就是物件自己,所以不需要再另外傳遞參數給它。 第三個函式draw(self,x,y,a,b,c),是要將此圓形物件繪製出來,所以必須傳遞其位置座標x,y,以及圓形顏色的三個灰階值a,b,c給它。 接著,主程式在第10行指定半徑值50給類別ball,以建立一個大的圓形物件bigball;並在第11行指定半徑值25給類別ball,建立另一個小的圓形物件smallball。 上圖是定義類別、建立物件、呼叫物件函式的完整過程。主程式中第12行、15行,物件是經由點運算符來取用計算圓面積的函式area;第13行、16行函式draw繪圖的結果,出現在上圖右上及右下。 圓的半徑大小是在建立物件時就指定的,是不宜再頻繁改變了;但其位置和顏色的值是在呼叫繪圖函式時,才傳遞給它,卻是可以再視情況調整的。請注意這兩者的區別。 這個章節,我們先探討物件的建立及其含義,下一次就可以用它來設計複雜一點的電腦遊戲了。屆時將可發現,很多遊戲中的角色和物體的重複建立,使用的多是物件類別的技巧。

進階語法之1~物件與類別 Read More »

多益文法與字彙之5~分詞構句

2-5:分詞構句 讀高中上到「分詞構句」這個章節的時候,英文老師告訴我們說,有位學長考取大學之後,因為懂得活用分詞構句來寫作,獲得了教授的讚賞。老師的意思是在強調,即使上了大學,能夠善用高中進階文法的人,其實並不很多。 分詞構句可以用其所省略的連接詞來分類。連接詞分對等連接詞和從屬連接詞,前者包括and、or….等,通常放在句子中間;後者有although, because, when….等,可視情況將其放在句首或句中。 對等連接詞的情況比較單純,如下例所示,「John stood on the street and waited for a taxi.」,兩個動詞stood、waited,經由and共用一個主詞John,可將其改成分詞構句「John stood on the street, waiting for a taxi.」,前一個動作的目的,有點是在引導下一個動作。 從屬連接詞所引導的句子稱為副詞子句,大多是在句首做轉換,例如「When I walked along the river, I met an old friend .」,可省略連接詞和主詞轉換成現在分詞片語,改成「Walking along the river, I met an old friend .」。 被動語態的副詞子句,如「Because John was hit by a car, he looked very uncomfortable.」,可保留過去分詞片語,改為「Hit by a car, John looked very uncomfortable.」。 句子變長了,一定會引用到連接詞和代名詞,適當使用分詞片語取代,可以讓句子結構變精簡,口語表達也更能強調重點。 以前在大同技術學院教書的時候,有個夜間部年齡稍長的同學跑來旁聽英文,那位女生在課堂上告訴我,說她高職上英文課的時候,只要校長在巡堂當中,有看到老師把黑板寫滿,那堂課就皆大歡喜了。 她在同學面前談到這件事情,語氣雖和緩但情緒是波動的,對於還有心想再學習的人來說,那種情況真是糟透了。 不要小看學生的潛能,只要耐心足夠且適當引導,高職生還有很大的成長空間。他們隨著年齡漸增,理解力會慢慢提升,原先生吞活剝、死記強背的東西,開始會比較清楚它背後的涵義。 但就是不要一直教授新的、複雜的內容,打擊學生的信心。若能適時的放緩腳步,將基本的東西反覆熟練,同學也會越來越開竅的。

多益文法與字彙之5~分詞構句 Read More »

多益文法與字彙之4~假設語氣

2-4:假設語氣 我們上了高中才會開始學假設語氣,因為它結合不同的時態有不同的句型,並不很好掌握。因此我們在這部份,也只討論現在式和過去式兩種,這是最常出現的時態。 「If I knew Quantum Mechanics, I could teach in the college.」這是和現在事實相反的假設語氣,表示我不懂量子力學,所以無法在學院教書。 「If I had known Quantum Mechanics, I could have taught in the college.」這是和過去事實相反的假設語氣,表示我以前不懂量子力學,所以並沒有在學院教過書。 在過去式假設語氣中,包含了第一個子句過去完成式,和第二個子句現在完成式,通常比較會出現在文字敘述中,在口語上,很少人這樣講,因為文謅謅又囉嗦。 對話中常出現的情境,多半是用第二個子句就好,語意常是用來表達檢討、懊惱、後悔等情緒。例如「You should have left your house earlier this morning.」,「I could have won the gold medal.」,這樣的句型,在日常聊天的時候,幾乎都可脫口而出。 描述臉書發跡過程的影片「社群網戰」,中間有一場戲,是賈斯汀飾演的Sean Park,用”房間有蛇”嚇唬他女友「格雷女郎」,從浴室衝出來的橋段。 女友抱怨他,「I could have been killed, …..by running too fast and getting twisted in

多益文法與字彙之4~假設語氣 Read More »

多益文法與字彙之3~關係代名詞

2-3:關係代名詞 關係代名詞,是連接詞加上代名詞而來,我們很快以一個例子來說明。 “Policemen arrested the man because he stole the money.”。句中用連接詞because來連接兩個子句,用代名詞he來代替前面的先行詞the man,因此,可用who來結合這兩項,讓句子變得比較精簡,「Policemen arrested the man who stole the money.」。 這時候,可以用現在分詞讓句子更加簡明一些,變成”Policemen arrested the man stealing the money.”。在這裡是用分詞片語取代關係子句,關係子句俗稱形容詞子句。 也可以用過去分詞片語將其改成被動語態,”The man arrested by policemen stole the money.”。 關係代名詞前面的先行詞,可以是一整個句子,只要中間加個逗號就可以。 “Typhoon destroyed the power plant, which made the whole city dark.”。同樣可改成「Typhoon destroyed the power plant, making the whole city dark.」。後者尤其受到新聞播報員青睞,因為唸到現在分詞making的時候,可以加重語氣。 使用現在分詞取代關係代名詞,雖然句子精簡了,但如果還有動名詞或介系詞including存在,ing會出現好幾次,反而讓句子不好看了。”The man stealing the money

多益文法與字彙之3~關係代名詞 Read More »

多益文法與字彙之2~被動語態

2-2:被動語態 在被動語態當中,比較重視的是動作的接受者,所以將其放在主詞位置。或者有時並不清楚施加動作者到底是誰,也不得不使用被動語態。例如”The patient has been treated in the hospital. “,其重點在於病人已獲得治療了,並不需要特別去瞭解,究竟是由哪位醫護人員處理的。 多益喜歡結合時態和被動語態來考試,好比上一句的完成式,可改成現在進行式”The patient is being treated in the hospital. “,如此就變成病人正在治療中了。 在聽力測驗時,如果再刻意加上連音,被誤導答錯的機會就大了。不妨試試看下面的題目,答不出來也不要氣餒,大部份的看圖辨義考題,都比這題簡單。 Question 5. 如果想去強調某個觀點,主動式要比被動式有利。”Snow covers the mountain.”,和下面相對照,”The mountain is covered with snow.”,前者傳達冷鋒來襲的動態感要比後者強。 “The experiment suggests the earth be round.”,要比下一句話有力量,”It is suggested by the experiment that the earth is round”。 中國古代也有這種例子,項羽看到秦始皇出巡時,說了句「彼可取而代之」這樣的話,劉邦卻說「大丈夫當如是」。看起來,抒發己見的時候還是主動語態來的好。 主動和被動,active、passive,日常生活也會遇得到。電子元件需要插電(由外部供給能量),稱為主動元件(active component),像半導體雷射必須有電源供應,才能展現發光的功能就是主動元件,光纖不需要插電就能發揮其導光的功能,就是被動元件(passive component)。 我們形容某人態度消極或積極,也可以用passive、active,但proactive要比active來得好,也勝過aggressive(侵略性的),或者progressive(進步的)。 圖2-2-3. 雷射是主動元件,光纖是被動元件。

多益文法與字彙之2~被動語態 Read More »

多益文法與字彙之1~動詞三態

2-1:動詞三態 中文文法沒有英文複雜,並不區分現在式、過去式、過去分詞,也沒有動詞要隨主詞變化的規定,所以僅僅動詞時態這部份,就困擾很多華人,特別是在口說的時候。 動詞分時態,主要的目的是讓語言的表達更加精準。我們在和外國人對話時,即使一直使用簡單現在式,輔以肢體語言,對方還是可以大概理解你的意思,但他也會明白,恐怕沒有辦法和你進行深入交談。 就算是簡單現在式,主詞人稱單複數會決定動詞是否要加s/es,助動詞也有do或does,如果再考慮到可數名詞複數形也是加s/es,這一些攏攏總總合起來,想正確的使用現在式表達,也還沒那麼容易。 場景如果轉換至過去的時間點,則過去式動詞的切換馬上就會出狀況。「Where did you go last night?」一半以上的人會回答,「I go to a movie last night.」。即使是高級知識份子,有時也難免出這種錯誤。 動詞時態的不規則變化,在口說的時候,特別容易檢驗出學習功夫紮實與否,「My grandpa fought world war two.」大多數人都聽不懂,因為反應不過來fought是fight的過去式動詞。 到了過去分詞的階段,一定要開始多用點心了,因為一些進階的語法,都會用得到,包括現在/過去完成式、被動語態、假設語氣,和分詞構句。 「You should have broken the relationship with her.」,這樣的句子,在美國人日常口語聊天稀鬆平常,但國人常無法正確理解,對方要強調的,其實是和過去事情相反的假設。 熟稔動詞三態變化,可以幫助考試拿高分,但要在日常對話中活用它,動詞加ed之後的發音還是要再自我要求。平時有夥伴陪你練習,進步就會快,如果沒有,自言自語也是一種變通的方式。

多益文法與字彙之1~動詞三態 Read More »

多益文法與字彙

第二章:多益文法與字彙 輝達(NVIDIA)執行長黃仁勳曾經說過,「未來AI時代,英語可做為通用程式語言」。他的意思是說,大型語言模型逐漸進化,電腦若能理解日常用語,屆時每個人只要熟悉英語就夠了。 這個說法有一定的依據,但有些地方仍有待釐清。首先,這個「未來」究竟還要多久?其次,非英語母語的國家不就很吃虧嗎?而且,從此大家就不用再學程式設計了嗎? 既然有這些疑點存在,大部份的人比較保險的應對方式,還是一邊學程式語言,一邊學好英語,而且有必要再把英文學得更好一些。 圖2-1:黃仁勳在台大的英語演講被評為「適度幽默、選字精準、珍視夥伴」。 想學好英文,必須持之以恆,選擇適合自己的學習模式,也要客觀評估學習成就。善用多益考試,可以同時滿足這幾項需求。 多益聽力與閱讀測驗,平均一個月考一次,很方便規劃考試時間,調整學習節奏;總分990分,可以自我觀察分數變化趨勢,評核學習成效;容易獲取各方學習資源,也有不少同儕可相互支援。 圖2-2:多益測驗在2018年又改版一次,考試時間不變,但題目份量越來越重。(取材自多益官網) 聽力和閱讀要考好,多聽和多讀當然是唯一途徑,而提升效率的法門在於,想加快閱讀速度,不妨多熟練文法的應用,這是我們接下來會多著墨的;想在聽力拿高分,發音應該要多自我要求,在這方面,很多人都輕忽了它的重要性。 我聽到很多人讀到word這個簡單的字,大多會發音成[wɔrd],我常感到困惑,那麼world這個字又該怎麼讀呢? 果然,我幾乎從沒有聽過台灣人正確發音world為[wɝld],僅有的一次,是在聽Skeeter Davis唱她的名曲,”The end of the world”,才聽到標準的發音。 圖2-3:多益聽力要拿高分,平時單字的KK音標拼音不可偷懶。 會把word[wɝd]唸成[wɔrd],主要的原因,在於多數人不重視KK音標,很多是使用「自然發音」。 「自然發音」比較適合以英語為母語的國家,學童在平日耳濡目染的狀況下,自然而然可以從拼字來學習發音。但非英語為母語的國家就不適合了,經常使用「自然發音」,周遭接觸的人又不常講英文,以至於每個字都沒有把握讀的很正確,一整句唸下來就是坑坑疤疤,聽力難免會打折扣。 Skeeter Davis這首歌”The end of the world“,主詞人稱單複數以及動詞時態,相當有變化,很適合想要唱歌學英文的人。

多益文法與字彙 Read More »

基本觀念之6~函式與遞迴

1-6:函式與遞迴 Function這個英文字,我們原本是使用「函數」這個中譯,但因為它在程式裡面,除了數據的計算外,還會處理資料的存取,或者是格式的轉換等,所以更常使用「函式」這個名詞。 系統內建有多種各類函式,如果要建立自己的函式,通常是在程式碼開頭先做定義,隨後在主程式中呼叫它。它就像是一個忠實的僕人,只要叫它的名字,它就隨傳隨到、使命必達,但又有點懶,事情做完一次就得休息,除非你又給它第二次指令。 主程式在呼叫它的時候,可傳遞明確的訊息,它可憑此訊息進行一系列的後續處理,之後再將結果傳回主程式。 上圖中,第1行的關鍵字def,是用來定義一個函式名稱叫做singer,後面小括弧裡面的 a, b,稱為參數(parameter),要承接主程式傳過來的引數(argument),再放進第2、3行縮排的指令中處理。 第5行進入主程式中,呼叫singer函式,小括弧當中的 “Taylor” , “Leonardo”,就是引數。參數和引數的關係,就好像是變數名稱和變數值的關係,a=”Taylor”,b=”Leonardo”。 第7行到第10行,是作者自己將程式執行後輸出結果,用註解行標示出來,方便讀者閱讀。 函式裡面,要將運算結果回傳給主程式,有一個指令return很是重要。我們把先前for迴圈的加總計算,定義成函式forloop,其參數為n,它會回傳從1累加到n的總和給主程式。 上圖第7行,在主程式中呼叫forloop,並傳遞引數100給參數 n;它會先在forloop函式裡面算出累加值summ,然後利用return指令將其值5050回傳,指定給變數getsumm,再做輸出。 return這個指令,如果能善用它,就可以建立起功能進階的遞廻函式。 所謂遞廻函式,就是函式之中的程式碼被執行的時候,又會再次呼叫函式它自己,但使用的是不同的引數。正整數階乘的計算,是個遞迴運算的典型範例。 上圖第1行定義函式fact(n),程式執行到第5行時會回傳函式本身,但其參數值變為n-1,外面再乘上n,這時候得到的fact(n-1),會再回傳 (n-1)*fact(n-2),而fact(n-2)又再回傳 (n-2)*fact(n-3),如此反覆呼叫fact,直到fact(1)為止,這時候已滿足第2行條件,最終回傳值就是1,不會再呼叫fact了。執行第7行之完整遞迴過程如第11~16行所示。 先前提到的增強式學習當中,可以看到遞迴的身影。在循環修正行動值函數的時候,是援用自下一狀態的獎勵及其行動值函數,並據此援用下下次狀態,一直到最終狀態…..。 遞廻程式的技巧,據說是在19世紀由艾達女仕所提出的,為表彰她對計算機演算法的貢獻,美國國防部開發的程式語言Ada,就是以她來命名。艾達有個大名鼎鼎的父親,英國詩人拜倫。 我們有關Python程式設計基本概念的部份,先在這裡告一段落,日後會不定期撰寫這方面的進階題材。接下來,我們將進入到「英語檢定」單元,介紹多益測驗的學習要領,歡迎有興趣的朋友繼續閱讀本社團貼文。

基本觀念之6~函式與遞迴 Read More »

Shopping Cart