前言 本篇 Turbo C 教學文件是本人在 南亞工專 夜間部擔任「計算機程式」兼任講師為學生所整理的講義。 使用的教課書為「電腦應用入與 Turbo C 基礎程式設計」,作者陳俊安(南亞工專電算中心講師),由東華書局出版。
第一章 程式設計概念 程式語言的分類
低階語言:具有較強大的硬體控制功能, 但是與人類語言相差極大,對初學者來說比較不易學習。
高階語言:語法比較接近人類的口語語法, 對初學者來說比較容易學習。
自然語言:與人類的口語語法完全相同,不必學習也可以使用! 只是目前還無法實現出這類電腦語言。
程式語言的基本流程
瞭解所欲完成的工作內容。
將所欲完成之功作分解成細部的步驟。
將細部步驟寫成程式語言所提供的敘述語法,並輸入電腦完成「原始程式」。
將完成的原始程式翻譯成電腦的機器語言後執行。
執行後若得到正確結果則工作完成,若有錯誤則須進行程式查錯及修改。
第二章 C語言基本架構與程式開發環境Turbo C 整合環境下常用按鍵
F10 :跳到主功能表,此時可用方向鍵選擇,按 Enter 執行。
F3 :Load 開啟舊檔。
F2 :Save 儲存檔案。如果目前的檔名為 NONAME.C 則會出現 Rename 視窗,可依個人須要改名或不改皆可。
Ctrl+F9 :編譯、連結目前的程式,如果沒有大錯誤,則執行連結後的程式。
Alt+F5 :切換到輸出畫面。到輸出畫面按下任意鍵則回到整合環境。
Alt+X :結束 Turbo C 。
Ctrl+O , I :切換 Turbo C 整合環境編輯時自動對齊(內縮)模式。關閉自動對齊(內縮)模式才能由記事本或其它的軟體順利將原始碼剪貼到 Turbo C 的編輯視窗中。
Alt+Enter :在 Windows 下,切換全螢幕及 DOS 視窗 。
使用中文
由於 DOS 版的倚天中文很占主記憶體空間,若先執行倚天中文系統, 再進入 TC,會使 Turbo C 2.0 所使用的記憶體減少,甚至可能會造成寫好 的程式無法編譯/連結。以下提供 WIN95/98 環境下的兩種解決方法:
1. 進入 Turbo C 2.0 將 NONAME.C 另存成你要編輯的名稱,
如: EXAMPLE1.C ,內定所存的 EXAMPLE1.C 會存在 C:\TC\ 下。
2. 執行「記事本」,利用記事本開啟剛才另存的 EXAMPLE1.C,
在記事本中編輯 EXAMPLE1.C 直到滿意為止,記得要存檔。
3. 再由 Turbo C 2.0 載入 EXAMPLE1.C (可以使用 F3 的功能鍵),
按下 Ctrl + F9 編譯/連結,如果沒有錯誤,執行結果也正確,
那就大功告成。
4. 如果有錯誤,再回到「記事本」修改錯誤,
改完再交由 Turbo C 編譯,直到沒有錯誤。
進入 Turbo C 2.0 將 NONAME.C 另存成你要編輯的名稱, 如: EXAMPLE1.C ,內定所存的 EXAMPLE1.C 會存在 C:\TC\ 下。 這時,開始編輯你的程式,當有須要用到中文時,可以利用「記事本」 將所須的中文打出,再加以選擇、複製,回到 Turbo C 中, 再按 DOS 視窗上的「貼上」按鈕,將所選擇的文字貼上。
|
|
|
|
第三章 資料型態、變數觀念與運算式 常用的資料型態
整數 :資料不可能會有小數出現的,例如:出生年/月/日及人數等等。
浮點數 :資料可能會有小數出現的,例如:圓面積、身高、體重等等。
字元 :文字型式的資料,例如:以 Y / N 表示 是 / 否 、以 M / F 表示 男 / 女 等等。
姓名、地址等這類由一串字組合而成的資料,則稱為字串。
常用的資料型態一覽表
| 資料型態 | 型態名稱 | 佔記憶體空間 | 可以處理的範圍 |
| 整數 | int | 2 位元組 | -32,768 ∼ 32,767 |
| 長整數 | long int | 4 位元組 | -2,147,483,648 ∼ 2,147,483,647 |
| 浮點數 | float | 4 位元組 | 3.4*10^-38 ∼ 3.4*10^38 |
| 字元 | char | 1 位元組 | ASCII Code (0∼255) |
變數宣告方式
只宣告變數 :
| 型態名稱 變數名稱1 , 變數名稱2 , 變數名稱3 ; |
宣告變數,同時指定其初始值 :
| 型態名稱 變數名稱1 = 初始值1 , 變數名稱2 = 初始值2 ; |
變數宣告的程式中的位置
|
|
運算式
所謂「運算式」是指具有某種含意的式子,它可能只是一個變數,或是一個常數, 或是由變數及常數所組成的計算式,如下例:
area : 一個變數,代表「面積」
10 : 一個常數,代表 10 (有點像是廢話 :P )
(3 + 8) * 6 / 2 : 一個常數的計算式,代表「梯形面積」
3.14159 * r * r : 一個常數與變數的混合計算式,代表「圓面積」
運算符號 (關係運算符號及邏輯運算符號請參考第六章)
| 加法 | |
| 減法、負號 | |
| 乘法 | |
| 除法 | |
| 除法取餘數 | |
| 指定變數 a 的數值為 8 | |||
| 指定變數 a 的數值為 a 再加上 8 | |||
| 指定變數 a 的數值為 a 再減去 8 | |||
| 指定變數 a 的數值為 a 再乘以 8 | |||
| 指定變數 a 的數值為 a 再除以 8 | |||
| 指定變數 a 的數值為 a 除以 8 的餘數 |
| 指定變數 a 的數值為 a 再加上 1 | |||
| 指定變數 a 的數值為 a 再減去 1 |
|
|
|
|
第四章 基本輸出敘述 printf 敘述格式
| printf("欲輸出至螢幕之文字資料、格式代號、控制代號" , 運算式 ); |
printf 格式代號
printf 控制代號
| [螢幕顯示] 游標移到下一列的開頭
| [螢幕顯示] 游標向右移一個定位
| [螢幕顯示] 游標向左移一個格(倒退一格)
| [螢幕顯示] 顯示 \ 字元
| [螢幕顯示] 顯示一個 ' 字元
| [螢幕顯示] 顯示一個 " 字元
| [螢幕顯示] 顯示一個 % 字元
| 電腦喇叭發出一個 Beep 的聲音
| |
例如:
| printf("我的第一個程式!\n" ); |
| printf("面積 = %f \n", area ); |
| printf("a = %d \t b = %d \n", a , b ); |
簡單的電腦音樂
| sound(頻率); | 使 PC 喇叭以括號內的頻率發出聲音
| delay(時間); | 時間延遲,括號內的數字愈大延遲愈久(0 到 32767)。 | 由於 Turbo C 2.0 是在 1988 年開發的, 這個副函式以當時 XT/286 在執行時, 其延遲的時間單位約為千分之一秒 (mS), 但是以現在的電腦,時間的延遲會因不同的電腦而有不同, 所以在使用時要自己測試。 nosound( ); | 使 PC 喇叭停止發出聲音。 | 在使用 sound( ) 的之後,一定要使用 nosound( ) 否則,電腦會像當機一樣, 一直發出由 sound( ) 最後設定頻率的聲音。 |
|
|
|
|
第五章 基本輸入敘述 scanf 敘述格式
| scanf( "格式代號" , &變數名稱 ); |
scanf 的第一個參數:格式代號 (與 printf 大致相同)
scanf 的第二個參數:&變數名稱
scanf 與 printf 最大的不同就在於這個部分!
在 printf 中,第一個參數中有多少個「格式代號」在後面就要有同樣數量的
「運算式」而且資料型別要符合格式代號。
在 scanf 中,第一個參數中有多少個「格式代號」在後面就要有同樣數量的
「變數」而且資料型別要符合格式代號,除此之外,還要在變數的前面加上一個
& 的符號。
&變數 表示要取變數在記憶體中的位址(Address),
因為 scanf( ) 是將鍵盤輸入的資料轉為指定的格式後,再將轉換後的資料存到指定的記憶體。
所以,在使用 scanf( ) 時,我們要給它的是
變數在記憶體中的位址 而不是變數。
scanf 的注意事項
在 printf 的第一個參數中,我們可以使用一般文字資料、格式代號及以控制代號, 但是在 scanf 的第一個參數中,我們只能使用格式代號,若有其他非格式代號的資料, 在 Compile 時,就會發生錯誤。例如下面的例子就是:
| scanf( "請輸入金額: %d \n" , &Money ); |
因為 scanf 只能使用格式代號,所以我們通常會在 scanf 之前,利用 printf 來顯示提示文字,這樣使用者才知道要輸入的資料是什麼。 例如下面的例子就是:
| printf( "請輸入金額: " ); scanf( " %d " , &Money ); |
如果,希望一次從鍵盤輸入一筆以上的資料,則在雙引號內就應使用 對應個數的格式代號。如:
| printf( "請輸入方程式中 a , b , c 的數值: " ); scanf( " %f%f%f ", &a , &b , &c ); |
數學函數的使用
| abs( 整數 ); | 取一個整數的絕對值 | a = abs( b );
| labs( 長整數 ); | 取一個長整數的絕對值 | c = labs( d );
| fabs( 浮點數 ); | 取一個浮點數的絕對值 | e = fabs( f );
| sin( 浮點數 ); | 計算 sin 數值,輸入角度的單位為徑度 | e = sin( f );
| cos( 浮點數 ); | 計算 cos 數值,輸入角度的單位為徑度 | e = cos( f );
| tan( 浮點數 ); | 計算 tan 數值,輸入角度的單位為徑度 | e = tan( f );
| sqrt( 浮點數 ); | 計算開根號的數值 | e = sqrt( f );
| log( 浮點數 ); | 計算自然對數值 ln | e = log( f );
| log10( 浮點數 ); | 計算以 10 為底的對數值 log10 | e = log10( f );
| exp( 浮點數 ); | 計算指數函數值,也就是 eN | e = exp( f );
| pow10( 整數 ); | 計算 10 的次方,也就是 10N | e = pow10( b );
| pow(浮點數,浮點數); | 計算 x 的 Y 次方,也就是 xY | e = pow( g , h );
| 在範例中,假設在使用前已經有以下的宣告: | int a , b = 100 ; long int c , d = 100 ; float e , f = M_PI / 4 ; float g = 100 , h = 0.5 ; 在使用以上的數學函數時,一定要在 main( ) 的前面加上 | #include "math.h" 否則,計算的結果可能會不正確。 | ||||||
|
|
第六章 條件判斷 if 條件判斷的語法
只須處理條件成立的狀況:
| if ( 條件式 ) { 條件成立時欲進行之工作敘述 ; ...... ; } |
對於條件成立或不成立都須各別處理的狀況:
| if ( 條件式 ) { 條件成立時欲進行之工作敘述 ; ...... ; } else { 條件不成立時欲進行之工作敘述 ; ...... ; } |
如果,在條件成立(或不成立)時,要處理的工作只須要一個敘述就可以完成的話,那就不須要用大括號將要作的敘述括起來。 如果,要處理的工作多於一個敘述,就一定要用大括號括起來才行。
關係運算符號:用來判斷兩數的關係
| 如果 a 大於 b 則此條件為「真」否則為「偽」
| 如果 a 小於 b 則此條件為「真」否則為「偽」
| 如果 a 大於等於 b 則此條件為「真」否則為「偽」
| 如果 a 小於等於 b 則此條件為「真」否則為「偽」
| 如果 a 等於 b 則此條件為「真」否則為「偽」
| 如果 a 不等於 b 則此條件為「真」否則為「偽」
| |
邏輯符號:用來結合多個條件式,以便判斷複雜的條件
| 如果 條件式1 成立 而且 條件式2 成立,則此條件為「真」否則為「偽」。也就是說:兩個條件都要成立才是「真」。
| 如果 條件式1 成立 或者 條件式2 成立,則此條件為「真」否則為「偽」。也就是說:只要有一個條件成立就是「真」。
| |
條件式的範例:
| 條件:分數(假設變數名稱為 score)高於 60分(含),也就是及格啦! 條件式寫法: ( score>=60 ) |
| 條件:分數(假設變數名稱為 score)高於 80分(含) 到 90分(不含),也就是甲等啦! 條件式寫法: ( 80<=score && score<90 ) |
| 條件:使用者回答(假設變數名稱為 ans)是大寫的 'Y' 或是 小寫的 'y' 條件式寫法: ( ans=='Y' || ans=='y' ) |
| 條件:出生日期(假設月份變數 m ,日期變數 d)介於4月21日到5月20日之間,也就是「金牛座」啦! 條件式寫法: ( (m==4 && d>=21) || (m==5 && d<=20) ) |
多重 if 條件判斷的語法
|
if ( 條件式1 ) { 條件1成立時欲進行之工作敘述 ; ...... ; } else if ( 條件式2 ) { 條件2成立時欲進行之工作敘述 ; ...... ; } else if ( 條件式3 ) { 條件3成立時欲進行之工作敘述 ; ...... ; } ...... else { 上面的條件都不成立時欲進行之工作敘述 ; ...... ; } |
例如:判斷 a 與 b 兩數大小的程式片段: if ( a > b ) printf(" a 比 b 大!\n"); else if ( a < b ) printf(" b 比 a 大!\n"); else printf(" a 與 b 一樣大!\n"); |
|
|
|
第七章 迴圈
第八章 陣列與字串
第九章 進階程式設計技巧 對於本網頁有任何建議,請留言或來信至 [email protected]