Download presentation
Presentation is loading. Please wait.
1
Class 1 踏出C語言的第一步
2
編譯器 (Compiler) Dev-C++ (*請各位回家下載並安裝*) 其他常見的編譯器 Visual Studio 2005
下載: 免費, 中文界面 其他常見的編譯器 Visual Studio 2005 Visual Studio 2003 Visual C++ 6.0
3
1.英文轉中文 Tool -> Environment Options ->Interface-> Language
4
2. 插入預設的程式碼 工具-> 編輯器選項-> 程式碼 -> (打入程式) -> 勾選下面的勾勾->按確定
5
3.開啟一個新的程式 檔案 -> 開新檔案 -> 原始碼 4. 如果編輯區域的右邊沒有顯示行號 工具-> 編輯器選項-> 顯示 -> 勾選顯 示行號
6
第一個程式 - Hello World #include<stdio.h> #include<stdlib.h>
引入一個叫做stdio的標頭檔,沒有它,第4行的printf() 就不能用了 #include<stdlib.h> 引入一個叫做stdlib的標頭檔,沒有它,第5行的system() 就不能用了 main() 主函式,程式會從這裡開始執行 printf() 函式, 功能是印出字串到銀幕上
7
第一個程式 - Hello World system(“Pause”) return 0 儲存後,按下Ctrl + F9 編譯
函式, 功能是讓程式不要馬上結束 return 0 主函式結束 儲存後,按下Ctrl + F9 編譯 按下Ctrl + F10執行
8
什麼是前端處理程式? 在C語言中,只要前端有『#』符號者,皆可稱為前端處理程式
在C程式編譯前,這些前端處理程式會先被前置處理器轉換成C的程式碼 前端處理程式 意 義 #include 引入標頭檔 #define 定義巨集
9
#include 對於程式外的標頭檔的引含指令 輸出入相關的函式(printf()、scanf()…)都被定義在stdio.h標頭檔內
必須在程式最前面加上#include <stdio.h>
10
#include:常用到的標頭檔 標頭檔名稱 功能說明 stdio.h 輸出入庫存函式:
getc, putchar, gets, puts, fclose, feof, fgets, fputs, fread, fopen, fwrite, scanf, printf, getchar stdlib.h 轉換庫存函式: atof, atoi, atoll, rand, srand, system ctype.h 字元庫存函式: isalnum, isalpha, isdigit, ispunct, isspace string.h 字串庫存函式: strcat, strcmp, strcpy, strlen, strtok math.h 數學庫存函式: acos, asin, atan, exp, cos, sin, sqrt io.h eof, open, close, write, read conio.h 本文視窗顯示庫存函式: clrscr, getch, getche time.h 時間日期庫存函式: time, gettime, getdate, setdate, settime
11
更多有關函式的資訊 可參考的網站1 Google http://www.cplusplus.com/reference/clibrary/
輸入函式名稱 + C Ex. “scanf c++”
12
#define 使用者定義常數、數學運算式、字元或字串 語法 #define 名稱 常數 #define 名稱 數學運算式
如: #define PI 如: #define PAUSE system(“Pause”)
13
資料型態與變數宣告 變數 要使用變數之前,要先加以宣告 資料型態會影響該變數的儲存方式、儲存空間、數值範圍與運算方式
程式中用來儲存資料空間的名字 要使用變數之前,要先加以宣告 語法:資料型態 變數名稱 如: int a; 資料型態會影響該變數的儲存方式、儲存空間、數值範圍與運算方式 a 資料型態 英文名稱 儲存空間 數值範圍 數值 短整數 short 2 Bytes -32768~32767 (-215~215-1) 整數 int 4 Bytes -231~231-1 長整數 long 浮點數 float e-38~ e+38 倍精度浮點數 double 8 Bytes e-308~ e+308 字元 char 1 Bytes -128~127 布林 bool true(真)或false(假)
14
變數的宣告 變數初始值設定的語法為 變數名稱命名規則 int a=2; char c =’A’; int a, b=3, c;
資料型態 變數名稱 = 初始值; int a=2; 宣告變數a的資料型態為整數,初始值為2。 char c =’A’; 宣告變數c的資料型別為字元,初始值為’A’。 int a, b=3, c; 多個變數定義只須以逗號(,)隔開每一個變數。 變數名稱命名規則 必須以英文字開頭 可以包含英文字、數字和底線(_) 英文字母的大小寫將視為不同。
15
基本數值運算子 +,-,*,/ 運算子 %運算子 = 運算子 如: var1+var2; 取餘數運算子,只有整數可以用 如:7%4的結果為3
指定運算子,將右邊的運算式結果指定給左邊的變數 如:a=3*b-c+11; x=x+3; 3 6 x +3
16
基本輸出輸入函式 輸出函式printf() 輸入函式scanf() 都定義在stdio.h標頭檔內,因此使用前先用include
#include <stdio.h>
17
輸出函式printf() 語法 格式字串 printf(格式字串,變數1,變數2,...,變數n);
一個以兩個雙括號包起來的字串 告訴printf()它負責印出的資料 printf(“Hello World!\n”); //將會印出Hello World!
18
格式字串中常用的符號 int year=2008; printf(“Hello World %d \n\n”, year); 轉換字元的種類
種 類 表 示 法 功 能 敘 述 整數(integer) %d 以十進位方式印出 %o 以八進位方式印出 %x 以十六進位方式印出 %u 以不帶符號的十進位方式印出 %l 以長整數(long)方式印出 浮點數(float) %f 以 xxx.xxxxxxx 方式印出 %e 以指數的方式印出 字元(char) %c 以字元方式印出 %s 以字串方式印出 其他(other) - 向左邊靠齊印出 *.* 指定浮點數之精確度
19
輸出函式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的初始值請自行於宣告變數時給定)
20
再談printf() % 後接數字再接輸出的型別 printf(“a%3d”, 12); 輸出 printf(“a%4d”, 12); 輸出
%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) ); 輸出
21
特殊控制碼 特殊控制碼 種 類 功 能 敘 述 \n newline 新行 \r carriage return 回歸鍵 \t tab 跳格
backspace 退位 \f form feed 跳頁 \\ backslash 反斜線 \' single quote 單引號 \" double quote 雙引號
22
範例練習 自行宣告一個變數存放全班人數,並以換行(\n)的方式列印出班上同學名字。(避免複雜,請虛構5個同學即可)
23
中文顯示的問題 如果有下面的情況 執行視窗上案右鍵-> 預設值->預設字碼選950
24
輸入函式scanf() 傳遞變數的位址 使用取址運算子(&)取得變數的位址 如: 以scanf()函式來取得資料時
int num; printf(“請輸入一個數字: ”); scanf(“%d”,&num); 以scanf()函式來取得資料時 在鍵入資料項之後,要以Enter作為結束 每一個資料項之間要以空白、enter或tab隔開 如:scanf(“num=%d”,&num); //使用者在輸入時,必須輸入:num=10 //10才會被存入num變數中
25
範例練習 請撰寫程式讓使用者輸入出生年月日並輸出。
26
作業一 請撰寫一個程式,使用者可以輸入身高與體重,程式會輸出該使用者的BMI資訊
提示:BMI = 體重(公斤) / 身高2(公尺2)。(BMI_○○.cpp)
27
補充 清除輸入緩衝區,讓scanf()正確執行 如果單純只想印出%d 含有中文變數名稱Dev C++不允許 常數的另一種宣告方法
fflush(stdin); 如果單純只想印出%d 用%%來代替% 含有中文變數名稱Dev C++不允許 常數的另一種宣告方法 const double pi = ;
28
補充─型別轉換 用在運算元素型別不同時 通常是將定義較”狹小”的轉成較”寛大”的 沒意義的運算式是不准許的 轉換後會失去一些訊息
例:整數和實數相加的話,相加的整數先轉成實數 沒意義的運算式是不准許的 例:將浮點實數當作陣列索引 轉換後會失去一些訊息 編譯器可能會出現警告,不過仍然可以作 例1:將較長型的整數指派給較小型的整數 例2:將浮點實數指派給整數變數
29
型別轉換2 執行指定敘述時轉換也會發生 此時不分高低,等號右邊的值會被轉成等號左邊變數相同的型別
指定敘述可能將 long 轉成較短的 int 或 short 甚至 char,此時只是將較高階的位元捨棄 下例中的結果 c 的值不會變 int i; char c; i = c; c = i; 如果改寫成下面這樣,i 的值就有可能改變 c = i; i = c;
Similar presentations