290 likes | 432 Views
Class 1 踏出 C 語言的第一步. 編譯器 (Compiler). Dev-C++ ( * 請各位回家下載並安裝* ) 下載 : http://bloodshed.net/devcpp.html 免費 , 中文界面 其他常見的編譯器 Visual Studio 2005 Visual Studio 2003 Visual C++ 6.0. 1. 英文轉中文 Tool -> Environment Options ->Interface-> Language. 2. 插入預設的程式碼
E N D
編譯器 (Compiler) • Dev-C++ (*請各位回家下載並安裝*) • 下載: http://bloodshed.net/devcpp.html • 免費, 中文界面 • 其他常見的編譯器 • Visual Studio 2005 • Visual Studio 2003 • Visual C++ 6.0
1.英文轉中文 Tool -> Environment Options ->Interface-> Language
2. 插入預設的程式碼 工具-> 編輯器選項-> 程式碼 -> (打入程式) -> 勾選下面的勾勾->按確定
3.開啟一個新的程式 檔案 -> 開新檔案 -> 原始碼 4. 如果編輯區域的右邊沒有顯示行號 工具-> 編輯器選項-> 顯示 -> 勾選顯 示行號
第一個程式 - Hello World • #include<stdio.h> • 引入一個叫做stdio的標頭檔,沒有它,第4行的printf() 就不能用了 • #include<stdlib.h> • 引入一個叫做stdlib的標頭檔,沒有它,第5行的system() 就不能用了 • main() • 主函式,程式會從這裡開始執行 • printf() • 函式, 功能是印出字串到銀幕上
第一個程式 - Hello World • system(“Pause”) • 函式, 功能是讓程式不要馬上結束 • return 0 • 主函式結束 • 儲存後,按下Ctrl + F9 編譯 • 按下Ctrl + F10執行
什麼是前端處理程式? 在C語言中,只要前端有『#』符號者,皆可稱為前端處理程式 在C程式編譯前,這些前端處理程式會先被前置處理器轉換成C的程式碼
#include • 對於程式外的標頭檔的引含指令 • 輸出入相關的函式(printf()、scanf()…)都被定義在stdio.h標頭檔內 • 必須在程式最前面加上#include <stdio.h>
更多有關函式的資訊 • 可參考的網站1 • http://www.cplusplus.com/reference/clibrary/ • Google • 輸入函式名稱 + C • Ex. “scanf c++”
#define • 使用者定義常數、數學運算式、字元或字串 • 語法 • #define 名稱 常數 • #define 名稱 數學運算式 • #define 名稱 字元或字串 • 如: #define PI 3.1415 • 如: #define PAUSE system(“Pause”)
資料型態與變數宣告 a • 變數 • 程式中用來儲存資料空間的名字 • 要使用變數之前,要先加以宣告 • 語法:資料型態 變數名稱 • 如: int a; • 資料型態會影響該變數的儲存方式、儲存空間、數值範圍與運算方式
變數的宣告 • 變數初始值設定的語法為 • 資料型態 變數名稱= 初始值; • int a=2; • 宣告變數a的資料型態為整數,初始值為2。 • char c =’A’; • 宣告變數c的資料型別為字元,初始值為’A’。 • int a, b=3, c; • 多個變數定義只須以逗號(,)隔開每一個變數。 • 變數名稱命名規則 • 必須以英文字開頭 • 可以包含英文字、數字和底線(_) • 英文字母的大小寫將視為不同。
基本數值運算子 3 6 +3 x x 3 6 • +,-,*,/ 運算子 • 如: var1+var2; • %運算子 • 取餘數運算子,只有整數可以用 • 如:7%4的結果為3 • = 運算子 • 指定運算子,將右邊的運算式結果指定給左邊的變數 • 如:a=3*b-c+11;x=x+3;
基本輸出輸入函式 • 輸出函式printf() • 輸入函式scanf() • 都定義在stdio.h標頭檔內,因此使用前先用include • #include <stdio.h>
輸出函式printf() • 語法 • printf(格式字串,變數1,變數2,...,變數n); • “變數1,變數2,...,變數n” 是在需要將變數之值印出時才須給定 • 格式字串 • 一個以兩個雙括號包起來的字串 • 告訴printf()它負責印出的資料 • printf(“Hello World!\n”); //將會印出Hello World!
格式字串中常用的符號 int year=2008; printf(“Hello World %d \n\n”, year);
輸出函式printf() • 印出宣告好的變數或常數內容 • 在格式字串上以%符號跟隨資料型態的對應字元,後面並用逗號將所有變數內容傳給printf()函式 • int num=123; printf(“變數num的值為%d”,num); printf(“變數num的值為%d, num+3的值為%d”,num,num+3); //印出:變數num的值為123 //印出:變數num的值為123, num+3的值為126 • 課堂練習:參考上面範例,練習印出變數num的值,及num+3、num+5的值。 • (num的初始值請自行於宣告變數時給定)
再談printf() • % 後接數字再接輸出的型別 • %3d、%4d表示將數字填入 3 格和 4格大小的格子裡 ( 向右對齊 )不過不會限制總長度 ( 可以超過 ) • printf(“a%3d”, 12); 輸出 • printf(“a%4d”, 12); 輸出 • %6f 表示將小數填入 6 格中 ( 包含小數點 ) • printf(“a%6f\n”, 2.345) ); 輸出 • %.2f 表示小數後只印出 2 位 ( 會四捨五入 ) • printf(“a%.2f\n”, 2.345) ); 輸出 • %6.2f 表示小數後印 2 位,並且全部填入 6 格中 • printf(“a%6.2f\n”, 2.345) ); 輸出
範例練習 自行宣告一個變數存放全班人數,並以換行(\n)的方式列印出班上同學名字。(避免複雜,請虛構5個同學即可)
中文顯示的問題 • 如果有下面的情況 執行視窗上案右鍵-> 預設值->預設字碼選950
輸入函式scanf() • 傳遞變數的位址 • 使用取址運算子(&)取得變數的位址 • 如: • int num; printf(“請輸入一個數字: ”); scanf(“%d”,&num); • 以scanf()函式來取得資料時 • 在鍵入資料項之後,要以Enter作為結束 • 每一個資料項之間要以空白、enter或tab隔開 • 如:scanf(“num=%d”,&num); //使用者在輸入時,必須輸入:num=10 //10才會被存入num變數中
範例練習 請撰寫程式讓使用者輸入出生年月日並輸出。
作業一 • 請撰寫一個程式,使用者可以輸入身高與體重,程式會輸出該使用者的BMI資訊 • 提示:BMI = 體重(公斤) / 身高2(公尺2)。(BMI_○○.cpp)
補充 • 清除輸入緩衝區,讓scanf()正確執行 • fflush(stdin); • 如果單純只想印出%d • 用%%來代替% • 含有中文變數名稱Dev C++不允許 • 常數的另一種宣告方法 • const double pi = 3.14159265897932384;
補充─型別轉換 • 用在運算元素型別不同時 • 通常是將定義較”狹小”的轉成較”寛大”的 • 例:整數和實數相加的話,相加的整數先轉成實數 • 沒意義的運算式是不准許的 • 例:將浮點實數當作陣列索引 • 轉換後會失去一些訊息 • 編譯器可能會出現警告,不過仍然可以作 • 例1:將較長型的整數指派給較小型的整數 • 例2:將浮點實數指派給整數變數
型別轉換2 • 執行指定敘述時轉換也會發生 • 此時不分高低,等號右邊的值會被轉成等號左邊變數相同的型別 • 指定敘述可能將 long 轉成較短的 int 或 short 甚至 char,此時只是將較高階的位元捨棄 • 下例中的結果 c 的值不會變 • int i;char c;i = c;c = i; • 如果改寫成下面這樣,i 的值就有可能改變 • c = i;i = c;