Programming
[ 運算思維與C程式設計 ] 關於結構化設計與流程控制的那些必備觀念
<source : unsplash>
一、心得分享
自己學程式,總是看了很多,可是實作時,又可能遇到 "書到用時方恨少"的窘況。很明顯的,能是學習方式不恰當,無法將這些知識內化成自己的職能。
於是,向許多程式高手和學習專家請益後,唯有將這些知識反覆的在腦袋中重現,搭配運動,才是現階段最有效的吸收方式。因此,關於C程式語言的資料處理部分中,馬上就落實這套方法,透過 "學習 - 實作 - 回想"的循環方式,逐漸讓這些知識變成一種 "反射動作" 。
二、題目自測與筆記
1.何謂 "無窮迴圈" ?
簡言之,不會結束的迴圈稱之為無窮迴圈。撰寫迴圈時,若沒設定跳離迴圈的條件,則會產生無窮迴圈。
2.結構化程式設計分成哪三種基本流程結構?
- 循序結構 (Sequence Structure)
- 選擇結構 (Selection Structure)
- 重複結構 (Repetition Structure)
3.選擇式結構的條件敘述可區分成哪3種?
- if
- if-else
- switch
4.何謂前測試迴圈與後測試型迴圈?
- 前測試迴圈 : 在程式區先檢查條件運算式,條件成立,則執行區塊內的指令。......先判斷再執行
- 後測試迴圈 : 先執行區塊內的指令,再檢查條件運算式。若條件成立,則繼續執行區塊內的指令。......先執行再判斷。
5.何謂巢狀 if 條件指令?
為多層的選擇結構,即 if 條件指令所包含的複合敘述中,又有另一層 if 指令。
6. switch條件運算式的結果必須是何資料型態 ?
字元 或 整數常數。
7.以下程式片段有何錯誤?
(1)switch用法為 switch (條件運算式),因此switch ch 應該修正為 switch(ch)。
(2)每個case結尾必須加 "break",才能跳離case區塊。如果沒加 "break"指令,程式會往下繼續執行,造成額外執行時間並提高錯誤發生機率。
(3)除了case外,還要加入 "default" 敘述,降低預期外的狀況。當條件未能滿足所有的case,則會以default敘述執行。
修改後,完整程式如下 :
8.試說明 default 指令的功用 ?
根據 <運算思維與C程式設計>一書所說,default的作用有點像是 if else if 指令中最後那一道else的功用。而我自己的心得是 default 可作為其他條件的掩護,為那些可能會發生而自己忽略掉的條件,找一個安全的避風港。
這也是為什麼,當程式執行下來後,所有的條件皆未滿足後,則執行 defualt 敘述。
9.簡述for迴圈用法?
語法表示如下 :
for (控制變數起始值; 迴圈執行的條件運算式; 控制變數增減值)
{
程式指令區;
}
10.試問下列程式碼中,k值最後為多少 ?
程式執行後,k值為 25。如下圖。
11.下列程式碼片段有何錯誤? 試說明之。
修正1. 宣告 n 與 answer的資料型態為int。
修正2. printf("%d", n); 可加 如 "," 、 "\n" 等增加輸出結果的易讀性。
修正前
修正後 (加入 ",")
修正後,完整程式碼如下 :
12.試敘述 while迴圈與do while迴圈的差異 ?
兩者都是當條件成立時,才會執行迴圈內的內容,唯一的差異在於 do while迴圈至少會被執行一次,是一種後側試型迴圈。
13.下列片段程式碼有何錯誤 ?
程式碼中,必須宣告 i 的資料型態。修正後,完整程式如下圖。
#if #else #switch #loop #for #while #break #continue #goto
0 留言