《《基本资料处 》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《基本资料处 》PPT课件.ppt(67页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第2章基本資料處理章基本資料處理 2-1變數與常數2-2基本資料型態2-3運算式簡介2-4資料型態轉換2-5本章綜合練習12-1 變數與常數l變數(variable)與常數(constant)都是程式設計師用來存取記憶體資料內容的一個識別代碼。l兩者最大的差異在於變數的內容會隨著程式執行而改變,但常數則固定不變。2變數簡介l變數是具備名稱的一塊記憶體空間,用來儲存可變動的資料內容。l透過變數名稱將資料由記憶體中取出或寫入。例如:int num1=30;int num2=77;3變數命名原則 l1.變數名稱開頭可以是英文字母或底線,但不可以是數字,名稱中間也不可以有空白。l2.變數名稱中間可以
2、有下底線,例如int_age,但是不可以使用-,*$等符號。l3.變數名稱長度不可超過127個字元,且變數名稱只有前面63個字元是被視為有效變數名稱。l4.變數名稱必須區分大小寫字母。l5.不可使用保留字或與函數名稱相同的命名。4保留字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifint longregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsigned voidvolatilewhile5合法與不合法的變數 l合法
3、變數名稱 abc_apple,Applestructurel不合法變數名稱 abc,5abcdollar$,*salarystruct6變數宣告l變數宣告就是在記憶體上安排儲存位址,作為存放所要宣告變數地方,通常這個位址是由編譯器來安排。l由於C是屬於靜態儲存配置(static storage allocation)的程式語言,因此C中的變數都必須事先宣告後才能使用。l宣告整數型態的變數 my_variable如下:int my_variable;7C的變數宣告方式 l方式1:資料型態 變數名稱1,變數名稱2,變數名稱n;l方式2:資料型態 變數名稱=初始值;l如果要一次宣告多個同資料型態的變
4、數,可以利用逗號,隔開變數名稱即可。8變數宣告與初始化:CH02_1.c l程式範例中變數a,並沒有事先設定初始值,可是當輸出時,卻列印出不知名的數字。這是因為系統並未清除原先在那塊位址上的內容。9常數簡介 l常數宣告又區分為以修飾詞const宣告和利用前置處理器中的#define指令來宣告自訂常數。宣告語法如下:方式1:const 資料型態 常數名稱=常數值;方式2:#define 常數名稱 常數值102-2基本資料型態l由於C是屬於一種強制型態式(strongly typed)語言,當變數宣告時,必須要指定資料型態。l有關C的基本資料型態,可以區分為三大類,分別是整數、浮點數和字元資料型態
5、。11整數資料型態 l當各位將變數指定為整數型態時,記憶體中即會保留4個位元組(32位元)的空間。宣告語法:int 變數名稱;或int 變數名稱=初始值;l可以直接以10進位數來設定整數數值外,也能採用8進位(直接在數字前加上數值0)或16進位(直接在數字前加上數值0 x)來設定:int sum=027;/*0278等於2310*/int sum1=0 x2b;/*0 x2b16=4310*/12shortl當一個整數宣告為short int時,資料長度是16位元(2 byte)。它的資料型態所佔的記憶體空間,是比int整數小的範圍。不過當所選用的編譯器是16位元系統下,short int和i
6、nt型態的資料長度都是16位元,就沒什麼差別了。宣告語法如下:short int sum;13longl 當一個整數宣告為long int時,它的資料長度為4 byte,在16位元編譯器上,它是大於int整數(2 byte)的儲存範圍,不過如果所選的編譯器為32位元(如Dev C+、Visual C+等),int資料型態為32位元,和long int資料型態的大小就沒有差別。宣告語法如下:long int sum;14signedl是有號整數,signed修飾詞是指定一個整數可以擁有正負數型態,不過由於int資料型態在C中就預設有正負號型態。如果省略signed修飾詞,編譯程式設還是會將該變數
7、視為帶符號整數。宣告語法如下:signed int sum 15unsignedl是無號整數,unsigned資料型態修飾詞是將有號數(正負號)的資料型態轉變為無號數型態,也就是只要在資料型態前加上unsigned修飾詞,那麼該變數就只能儲存正整數資料。宣告語法如下:unsigned int sum;16C的整數相關宣告資訊 資料型態宣告資料長度(位元組)最小值最大值short int2-3276832767signed short int2-3276832767unsigned short int 2065535int4-21477836482147483647signed int4-214
8、77836482147483647unsigned int404294967265long int4-21477836482147483647Signed long int4-21477836482147483647unsigned long int40429496726517整數修飾詞宣告與輸出:CH02_2.c l程式範例分別列出了C的整數修飾詞宣告與列印結果,並利用sizeof()函數來顯示變數的長度。18浮點數資料型 l浮點數(floating point)就是帶有小數點的數字。l浮點數的表示方法有兩種,一種是小數點方式,另一種是科學記號方式,例如3.14、-100.521、6e-2、
9、3.2E-18等。其中 e或 E是代表C中10為底數的科學符號表示法。例如6e-2,其中6稱為假數,-2稱為指數。19float單精度浮點數 l宣告為float單精度浮點數的資料長度為4位元組,有效範圍為1.2*10-383.4*10+38。宣告方式如下:float 變數名稱;l 如果各位想宣告float變數時直接設定浮點數值,那麼系統會預設為double型態的常數來儲存,而不是float型態。如果想設定為float型態,必須在數值字尾加上F或f。20double倍精確度浮點數 ldouble倍精確度為8位元組,有效範圍為2.2*10-3081.8*10+308。宣告方式如下:double 變
10、數名稱;l 其實不論是float單精度浮點數或double倍精確度浮點數,當以printf()函數輸出時,所要採的取輸出格式化字元可都是%f格式化字元。不過如果以科學記號方式輸出,則格式化字元為%e。21浮點數的宣告與輸出範例:CH02_3.c l程式範例中將宣告一個有很長小數位數的實數,並試著以float單精度浮點數、double倍精確度浮點數及科學符號表示法分別列印。22字元資料型態 l字元(Character)包含了字母、數字、標點符號及控制符號等。l字元資料在記憶體中是以整數數值來儲存,每一個字元佔用1位元組(8位元)的資料長度,所以字元的數值範圍028-1之間。宣告方式如下:char
11、 變數名稱=ASCII碼;或是char 變數名稱=字元;23另一種字元型態的表示方式l也可以使用x開頭的十六進位ASCII碼或開頭的八進位ASCII碼來表示字元,例如:char my_char=x41;/*16進位ASCII碼表示 A字元*/char my_char=0 x41;/*16進位數值表示 A字元*/char my_char=101;/*8進位ASCII碼表示 A字元*/char my_char=0101;/*8進位數值表示 A字元*/24字元資料的輸出與加法運算功能:CH02_4.c l程式範例是分別以使用%c與%d兩種格式化字元來列印,並且示範了字元加法運算後的結果。25跳脫字元
12、 跳脫字元說明十進位ASCII碼八進位ASCII碼十六進位ASCII碼0字串結束字元。(Null Character)000 x00a警告字元,發出嗶的警告音。70070 x7b倒退字元(backspace),倒退一格80100 x8t水平跳格字元(horizontal Tab)90110 x9n換行字元(new line)100120 xAv垂直跳格字元(vertical Tab)110130 xBf跳頁字元(form feed)120140 xCr返回字元(carriage return)130150 xD顯示雙引號(double quote)340420 x22顯示單引號(single
13、quote)390470 x27顯示反斜線(backslash)9201340 x5C26跳脫字元的說明與應用:CH02_5.c 27void 資料型態 lvoid 資料型態是表示一種不存在的值,void 資料型態的宣告模式有兩種:方式1:void 函數名稱();方式2:資料型態 函數名稱(void);l方式1是表示宣告一個void函數,並代表此函數沒有回傳值,如果省略void,編譯器則會自動將此函數預設為int型態。l方式2則表示如果在函數的參數列中宣告void,則代表此函數沒有參數的傳遞。28運算式 l運算式是由運算子(operator)與運算元(operand)所組成。例如:d=a*b-
14、123.4;l其中d、a、b、123.4等常數或變數稱為運算元(operand),而=、*、-等運算符號稱為運算子(operator)。l在C中,運算元包括了常數、變數、函數呼叫或其他運算式,而運算子有指派運算子、算術運算子、比較運算子、邏輯運算子、遞增遞減運算子,以及位元運算子等六種。29指定運算子 l=指定運算子,主要作用是將等號右方的值指派給等號左方的變數。=號的左邊必須為變數,右邊則可以為變數、常數或運算式等。例如:a=a+5;/*將a值加5後指派給變數a*/c=A;/*將字元A指派給變數c*/l=能指定同一個數值給多個變數。例如:int a,b,c;a=b=c=100;/*同步指定值
15、給不同變數*/30算術運算子的語法及範例 運算子說明使用語法執行結果(A=15,B=7)+加A+B15+7=22-減A-B15-7=8*乘A*B15*7=105/除A/B15/7=2%取餘數A%B15%2=1+正號+A+15-負號-B-731算術運算子運用範例:ch02_6.c l範例是列印出A、B兩數與算術運算子間的運算關係,如果各位想在螢幕顯示出%字元,必須要重覆兩次%字元。32關係運算子 關係運算子功能說明用法A=5,B=2 大於AB52,結果為true(1)。小於AB5=大於等於A=B5=2,結果為true(1)。=小於等於A=B5=2,結果為false(0)。=等於A=B5=2,結果
16、為false(0)。!=不等於A!=B5!=2,結果為true(1)。33比較運算子運用範例:CH02_7.c l程式範例是列印兩個運算元間各種比較運算子的真值表,以0表示結果為假,1表示結果為真。34邏輯運算子 l邏輯運算子(Logical Operator)是用來判斷基本的邏輯運算,並將判斷的結果,以0代表false,1代表true。&和|運算子的運算規則和比較運算子相同,是由左至右,而!運算子則是由右至左。35&運算子&邏輯運算子A10B110000l當&運算子(AND)兩邊的運算式皆為真(1)時,其執行結果才為真(1),任何一邊為假(0)時,執行結果都為假(0)。36|運算子|邏輯運算
17、子A10B111010l當|運算子(OR)兩邊的運算式,只要其中一邊為真(1)時,執行結果就為真(1)。37!運算子l!運算子(NOT)是一元運算子,它會將比較運算式的結果做反相輸出,也就是傳回與運算元相反的值。A 10 !運算子 0 138邏輯運算子的應用範例:CH02_8.c l範例是輸出兩數比較與邏輯運算子相互關係的真值表。39遞增與遞減運算子 l它們是針對變數運算元加減1的簡化寫法,屬於一元運算子的一種,可增加程式碼的簡潔性。l如果依據運算子在運算元前後位置的不同,雖然都是對運算元做加減1的動作,遞增與邊減運算子還是可以細分成前置型及後置型兩種。40前置型程式片段lint a,b;la
18、=5;lb=+a;lprintf(a=%d,b=%dn,a,b);41後置型程式片段 lint a,b;la=5;lb=a+;lprintf(a=%d,b=%dn,a,b);42遞增與遞減運算子的應用:CH02_9.c l程式範例將實際示範前置型遞增運算子、前置型遞減運算子、後置型遞增運算子、後置型遞增運算子在運算前後的執行過程。43位元運算子 位元運算子說明使用語法&A與B進行AND運算A&B|A與B進行OR運算 A|BA進行NOT運算AA與B進行XOR運算ABA進行左移n個位元運算AA進行右移n個位元運算An44&位元運算子l執行AND運算時,當A與B位元值逐一比較皆為1時,新位元值才為1
19、,其餘皆為為0。例如13&57=9。45|位元運算子l執行OR運算時,當A或B位元值其中一方為1時,新位元值則為1,只有A與B的位元值均為0時,新位元值為0,例如13|57=61。46位元運算子 l執行XOR運算時,當A或B位元值一為1,一為0時,新位元值為1。另外A與B的位元值均為1或均為0時,則新位元值為0。例如1357=52。47位元運算子 l對A的位元取1補數法,即位元值為1時,新位元值改為0,或位元值為0時,新位元值改為1。例如13=-14。48位元運算子 l是將數值的位元向右移動n個位元。向右移動後,超出儲存範圍的數字捨去,而左邊多出的位元就補上0。例如132=3。49位元運算子
20、l將數值的位元向左移動n個位元。向左移動後,超出儲存範圍的數字捨去,右邊位元則補上0。例如132=52。50位元運算子的說明與應用:CH02_10.c l範例是利用兩個整數運算元13與57來進行六種位元運算子的相關運算。51複合指定運算子 l複合指定運算子,是由指派運算子與其它運算子結合而成。先決條件是=號右方的來源運算元必須有一個是和左方接收指定數值的運算元相同,如果一個運算式含有多個混合指定運算子,運算過程必須是由右方開始,逐步進行到左方。l例如以A+=B;指令來說,它就是指令A=A+B;的精簡寫法 52複合指定運算子種類運算子說明使用語法+=加法指定運算A+=B-=減法指定運算A-=B*
21、=乘法指定運算A*=B/=除法指定運算A/=B%=餘數指定運算A%=B&=AND位元指定運算A&=B|=OR位元指定運算A|=B=NOT位元指定運算A=B=位元左移指定運算A=位元右移指定運算A=B53複合指定運算子運算過程l混合指定運算子的多層運算式:l a+=a+=b+=b%=4;其實際運算過程如下:b=b%4b=b+b;a=a+b;a=a+a;54複合指定運算子的整合應用:CH02_11.c l程式範例在說明複合指定運算子的運算模式。55運算式處理規則l1.當遇到一個運算式時,先區分運算子與運算元。l2.依照運算子的優先順序作整理的動作。l3.將各運算子根據其結合順序進行運算。56運算子
22、優先順序(一)運算子優先順序說明()括號!-+-邏輯運算NOT負號遞增運算遞減運算*/%乘法運算除法運算餘數運算+-加法運算減法運算位元左移運算位元右移運算57運算子優先順序(二)=float unsigned long long unsigned int int 59自動型態轉換範例ldouble=int/float+int*long60自動型態轉換的範例實作:CH02_12.c l程式範例示範自動型態轉換的結果,請各位留意當不同編譯器在轉換char資料型態時,會產生unsigned或signed兩種狀況。61強制型態轉換l語法:(強制轉換型態名稱)運算式或變數;l程式片段int a,b,a
23、vg;avg=(float)(a+b)/2;/*將a+b的值轉換為浮點數型態*/62強制型態轉換的範例實作:CH02_13.c l程式範例列印了強制型態轉換前後的平均成績結果。63跳脫字元的應用與範例實作:CH02_14.c l請使用來顯示符號,並且利用16進位表示法來表示HELLO!WORLD!中HELLO!的ASCII碼與8進位表示法來表示WORLD!,再藉由符號來轉換成字元及輸出。64多重邏輯運算子的應用與範例實作:CH02_15.c l程式中宣告a、b及c三個整數變數,並指定初始值,請判斷以下兩個式子的真假值:ab&bc|ca!ab&b!c|ca65位元運算子的應用與範例實作:CH02_16.c l使用位元運算子來對兩個整數運算元12與 7內容值,進行位元與位元間的AND、OR、XOR邏輯運算,並顯示結果 66自動型態轉換與強制型態轉換的比較:CH02_17.c l強制型態轉換可以用來補強自動型態轉換無法處理的狀況。67