2013年11月25日 星期一

[筆記]程式要怎麼寫?

在學校當TA時,常常會被問到一個問題。

相信有在解CPE、UVA或高中生程式問題的朋友,身邊應該都會有這樣的初學者會問這樣的問題-「程式要怎麼寫?」


是自學程式語言的人不談,大部分的人在學校學了很多基礎的知識和語法,課本的範例照著打都會,稍微修改也還OK,但是真正看到"只有"程式題目時,腦筋卻一片空白不知道要如何下手。

所以小K就想說來整理一下自己寫程式的心得和概念。

解一題程式最重要的3個步驟:

1、解讀題目

2、想出解法

3、解題 


(一) 解讀題目

我想大部分的人在第一關就會先被打槍(笑)~因為UVA題目都是英文敘述,光是那串英文看到就頭痛更不要說去了解了。

但是殘念......這是一定要克服的喔!如果真的看不懂可以先去高中生程式那邊看看,都有中文敘述,或是網路也有些專門將題目翻成中文的網站可以參考。
(題目翻譯查詢:Lucky貓園地)

不過小K在這邊還是建議大家要試著去練習看英文題目,而UVA的英文敘述有一半其實都是廢話居多,我分享一下我是如何解讀題目。


 

紅色框框是我會先去看的部分,先看輸入的測資是甚麼樣子的~再看要我們輸出(計算)甚麼

之後再去看藍色框框Description的部分,看這題題目有哪些需要特別注意的限制條件
(通常有數字的那行英文就是重點,看那幾行就對了,例如:up to 1000 digits)

有些題目還會有所謂的"故事背景",我選的這題剛好沒有,通常故事背景直接跳過沒有關係。


(二) 想出辦法

接下來是整個過程中最重要的~

解讀完題目後,先不要急著寫程式,請先思考這題題目要「怎麼解?」

寫程式最重要的就是邏輯思考,而且要Step by Step

回想一下,以前在解數學題目時,我們是怎麼寫答案的??是不是先思考要用甚麼算式,之後在將計算過程一步一步寫下來?

所以寫程式也是如此。

先想出解這個題目的辦法後,再將這些想法轉換成程式碼一步一步清楚的打出來。

而要把想法轉換成Code也是要具備一些基礎能力,關於這個部份我再另外寫篇文章,今天最主要是分享解題的過程而已~(笑) 


(三)解題

最後就是開始解題拉~

上一個步驟是先思考解決辦法,但是辦法行不行得通還是要實際去做才會知道。

如果跟答案相差不多,那基本上就是某些地方做個微調就好了;但如果出來的解果跟題目要求的差了十萬八千里,那就要再重新思考那個地方出錯。



所以我所寫的解題紀錄都會分成三部分:

解題觀念:就是上面的第二個步驟-想出辦法。

解題步驟:就是解題,用了甚麼工具或語法解題。(這部分我會再另外整理)

舉例(EX):清楚的解釋我的程式是怎麼執行的。而要整理出這個部分,就要有清楚的step by step思考邏輯,因為畢竟是要一步一步的解說過程阿~



大概就是這樣,這是我在解題時的過程,希望有幫到大家囉!


By 小K


沒有留言:

張貼留言