SCILAB第五章-初階程式設計 撰文者: 1.中央大學大氣系 楊善文 2. (如對本文有貢獻者,記得在此留名。)

Similar presentations


Presentation on theme: "SCILAB第五章-初階程式設計 撰文者: 1.中央大學大氣系 楊善文 2. (如對本文有貢獻者,記得在此留名。)"— Presentation transcript:

1 SCILAB第五章-初階程式設計 撰文者: 1.中央大學大氣系 楊善文 2. (如對本文有貢獻者,記得在此留名。)

2 程式語言 程式語言常分為直譯式語言與編譯式語言。
直譯式語言:程式邊讀取程式碼,邊執行程式。直到程 式碼結束或是出現語法錯誤為止。UNIX shell script, Scilab, Matlab......屬之。 編譯式語言:程式碼寫完後,先經由編譯器讀取確定無 誤後,並轉成執行檔(機器碼),讓電腦執行。C , C++ ,Fortran......屬之。 Scilab也有程式設計的功能,多用於作矩陣的資料處理 兼繪圖。

3 初學者是否適合以Scilab或Matlab當作第一個學習的程式語言?
依附於特定軟體,對於程式碼可攜性較弱,必須要在不同機 器都安裝的相同的此軟體才能用。 執行一個程式就要開一個軟體:耗費記憶體空間。 如果只是想要處理資料但不需要繪圖,用C或Fortran寫一支 外部獨立的程式來工作是比較好的方法。 先學C再來學Scilab程設會有較好的工作效果。(由難而易)

4 寫程式前的基本觀念 迴圈:當條件式符合你所定義的情形時,程式就會一直 執行到不合為止。當程式一直無法執行到不合定義的情 形時,則會無限制的執行下去(假設電腦壽命夠長,也沒 有外在終止程式的系統呼叫),稱為無限迴圈。 條件式:當你列出了一堆條件時,若程式當時狀態符合 你其中一項條件時,它就會執行你在那個條件時,所要 求它的動作。不合者程式自動忽略過此區域。

5 各類算符 大於:> 小於:< 大於等於:>= 小於等於:<= 是否等於:== 是否不等於:~=
AND:& (注意:是'&',不是'&&',跟C不一樣) OR:| (單'|'而非雙'|')

6 程式碼與Scilab的解讀 A > B:如果A>B條件成立,則執行該段程式碼。
A==B:當A的數值等於B的數值時條件成立。A==B和 A=B是不同的,A=B主要是對它作邏輯上的判斷。A==B 則是判斷A和B的內涵值。 A~=B:當A值不等於B值時,條件成立。 A條件 & B條件:當A條件式和B條件式都成立,才會執 行該段程式碼。 A條件 | B條件:當A條件或B條件,只要有其中一個成 立,就會執行該段程式碼。

7 程式中止與跳離迴圈 當程式出現無限迴圈的時候,中止程式的方式是:[Ctrl] + [ C ]
跳離迴圈的方式除了當程式不符合迴圈的判斷式而自動 離開外,也可以在迴圈內插入break指令。

8 for迴圈 for和while大概是初學程式者最常用的迴圈指令了。for 的功用是每執行一次該迴圈內程式碼,就會計數一次, 直到累計的值超過宣告的范圍為止。 用法: for 變數範圍 <=迴圈內要執行的程式碼 end <=迴圈之後常需跟著end指令,來確 認迴圈內的程式碼範圍。

9 for迴圈的範例程式 clear i=1 for i=1:5 i End 執行結果:右圖

10 另一個for迴圈的例子:九九乘法表 程式碼中的printf()函式,即為在螢幕上做標準輸出。用法: printf('輸出字串',輸出變數1,輸出變數2,......);(之後還會介紹到 。) 範例碼(雙迴圈的使用): clear i=1; j=1; for i=1:9 for j=1:9 printf('%d x %d = %d\n',i,j,i*j); end

11 Débat Proposez quelques idées touchant au coeur du sujet présenté
N'ayez pas peur de provoquer un peu vos auditeurs pour les inciter à prendre part au débat.

12 標準輸出函式printf printf這個函式,對於一些會C的讀者應該並不覺得陌生 吧,Scilab下的printf幾乎和C的printf語法完全一樣。 Printf的字串除了可以用' '也可以用'' ''。 從之前範例看到printf中含有許多%d。%d主要控制著在 輸出字串中該變數要位於哪個位置。例如: i=1;j=2;printf('abcd%dzzzz%d',i,j); (第一個%d是i的,第二個%d是j的,以此類推。) 輸出結果:abcd1zzzz2 %d代表以整數輸出。%f代表以浮點數輸出。%c是單一 字元。%s是輸出整個字串。 '\n'是換行符號,需放在printf中的輸出字串區內。

13 範例三:修改後的九九乘法表 clear i=1;j=1; printf('\n'); for i=1:9 for j=1:9
printf('%dx%d=%d ',i,j,i*j); if i*j<10 printf(' '); end if j==9

14

15 條件判斷if.....end if指令後面接的條件判段式,隔行開始到之後的結束句 end之前,為該條件的程式碼範圍。當條件符合時,即 會執行該段程式碼,不合則略過。if也常被包入更大的迴 圈內,作判斷一些細節之用。 例子:見之前的範例三。 語法: if 條件句 <==程式碼 end

16 if與邏輯判斷的整合範例 a=3; b=5; c=1; printf("\n"); if a>b & a>c
printf('a比較大\n'); end if b>a & b>c <== and要全部成立才能執行 printf('b比較大\n'); if c>a | b>a <== or代表多條件只要其中一個成立就會執行 printf("不知道\n");

17

18 while迴圈 while迴圈的設計是當只要符合條件句,就會一直執行下 去,而不會for在宣告條件句時,就要宣告它的範圍了。 故while只要程式撰寫一有疏失,就很容易產生無限迴圈 的現象。 用法: While 條件式 <==類似if的條件式樣式 end

19 while的使用範例 i=8; printf("\n"); while i>3 printf('ZZZzzz......\n');
i=i-1; <==如果這行被注解掉,程式就會無限執行下去 end

20

21 雙條件判斷:if .... then .... else 說明:當符合條件一時,則執行程式碼一,否則就執行 程式碼二。也可以使用連續if...end達到相同功能。 用法: if 條件一 then 執行程式一 else 執行程式二 end

22 if-then-else的範例 clear a=1; b=2; c=3; if a>b then printf("a>b");
end 執行結果:a<b

23 綜合範例:利用迴圈將資料填入矩陣 製造一個10x10的單位矩陣: clear i=1;j=1;U=[]; for i=1:10
for j=1:10 if i==j U(i,j)=1; end if i~=j U(i,j)=0; U

24


Download ppt "SCILAB第五章-初階程式設計 撰文者: 1.中央大學大氣系 楊善文 2. (如對本文有貢獻者,記得在此留名。)"
Ads by Google