C程式的架構 基本的資料型態 變數的宣告 常見的語法錯誤 基本的運算 優先順序與結合律 資料型態的轉換

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

物件導向語言基礎 Chapter 4 認知 學完本章應了解何謂常數、變數。 了解有哪些運算式、運算子和基本輸入、輸出指令。
JAVA 程式設計 資訊管理系 - 網路組.
常見的語法錯誤.
資料結構使用Java 第1章 資料結構與Java程式複習.
Chapter 3 輸出入及宣告.
第3章 變數與運算子 3-1 電腦記憶體的基礎 3-2 變數的命名與宣告 3-3 VB.NET的資料型別
Introduction to the C Programming Language
Visual C++ introduction
C的發展史 C程式初體驗 C程式設計基本注意事項 上機實習課程
Chen Yi Fen The C Language Chen Yi Fen
2 C++ 程式概論 2.1 C++ 程式結構 程式註解 // 插入標題檔 #include 2-3
列舉(enum).
【變數與記憶體位址】 變數(Variable)提供一個有名稱的記憶體儲存空間。一個變數包含資料型態、變數本身的值及它的位址值。
保留字與識別字.
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
Java程式概觀.
C++ 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
C語言簡介 日期 : 2018/12/2.
JAVA 程式設計 資訊管理系 - 網路組.
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
程式設計 博碩文化出版發行.
程式設計實習課(四) ----C 函數運用----
2.1 C语言的数据类型 2.2 常量与变量 2.3 变量赋初值 2.4 各类数值型数据间的混合运算 2.5 C语言的运算符和表达式
第一單元 建立java 程式.
能盡物之性,則可以贊天地之化育。 可以贊天地之化育,則可以與天地矣。 《中庸﹒第二十一章》
C++ 程式設計 基礎篇 張啟中 Chang Chi-Chung.
第三章 資料型態與輸出控制 本章學習目標 認識Matlab的基本資料型態 練習資料型態的轉換 學習如何控制Matlab的輸出格式
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
Instructor:Po-Yu Kuo 教師:郭柏佑
JAVA 程式設計 資訊管理系 - 網路組.
輸入&輸出 函數 P20~P21.
大綱:加減法的化簡 乘除法的化簡 去括號法則 蘇奕君 台灣數位學習科技股份有限公司
挑戰C++程式語言 ──第8章 進一步談字元與字串
認識常數與變數 學習C++所提供的各種基本資料型態 瞭解溢位的發生 學習認識資料型態之間的轉換
C语言程序设计 李祥 QQ:
C qsort.
第3章 数据类型、运算符与表达式.
第2章 数据类型、运算符与表达式 本章要点: 基本数据类型 常量和变量 算术运算符和算术表达式 关系运算符和关系表达式
第二章 类型、对象、运算符和表达式.
第2章 数据类型与表达式 学习目的与要求: 掌握C 语言的基本数据类型及使用方法 掌握C程序中常用的运算符和表达式 了解数据类型的转换.
挑戰C++程式語言 ──第7章 輸入與輸出.
第二章 基本数据类型 ——数据的表示.
計算機程式設計 老師:蘇炳煌 助教:楊斯竣.
函數應用(二)與自定函數.
陣列與結構.
第3章 最简单的C程序设计 3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 3.3 C语句 3.4 数据的输入输出.
北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
簡單Java介紹.
1-1 二元一次式運算.
Introduction to the C Programming Language
變數與資料型態  綠園.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
資料表示方法 資料儲存單位.
第十二章 位运算.
適用於多選一 可減少if 與 else配對混淆的錯誤.
計算機程式設計 老師:謝孟諺 助教:楊斯竣.
第五章 運算關係式(Expression).
第二章 数据类型、运算符和表达式 §2.1 数据与数据类型 §2.2 常量、变量和标准函数 §2.3 基本运算符及其表达式 目 录 上一章
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
Programming & Language Telling the computer what to do
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
變數與資料型態  綠園.
Array(陣列) Anny
Unix指令4-文字編輯與程式撰寫.
Introduction to the C Programming Language
InputStreamReader Console Scanner
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

C程式的架構 基本的資料型態 變數的宣告 常見的語法錯誤 基本的運算 優先順序與結合律 資料型態的轉換 第二章 C程式的架構與基本運算 C程式的架構 基本的資料型態 變數的宣告 常見的語法錯誤 基本的運算 優先順序與結合律 資料型態的轉換

圖 2-1 一個簡單的 C 程式   /* print number 75 in decimal */ ← 註解 #include <stdio.h> ← 前端處理指令   main() ← 主程式 { int num=75; ← 宣告 printf("decimal=%d\n", num); ← 指令敘述 }

圖 2-1a 一個簡單的 C 程式(另一種寫法)   /* print number 75 in decimal */ ← 註解 #include <stdio.h> ← 前端處理指令   int main() ← 主程式 { int num=75; ← 宣告 printf("decimal=%d\n", num); ← 指令敘述 return 0; }

圖 2-1b 暫停畫面以觀看程式執行結果   /* print number 75 in decimal */ ← 註解 #include <stdio.h> ← 前端處理指令   #include <stdlib.h> ← 為了使用system 要加這行 main() ← 主程式 { int num=75; ← 宣告 printf("decimal=%d\n", num); ← 指令敘述 system("pause"); ← 暫停畫面 }

圖 2-1c 通常的C 程式架構 #include <stdio.h> #include <math.h> 前端處理指令 #define PI 3.14159   float rv; float degree_to_radius(int); 變數及函數宣告   main (int argc, char *argv[ ] ) 主程式 { int deg;   deg=45; rv=degree_to_radius(deg); printf("Degree %d equals to Radius scale %f \n",deg, rv); } float degree_to_radius(int d) 其他函數程式 float rad; rad=d*PI/180; return d;

基本的資料型態 (datatype) char 字元,可以儲存機器中所用字碼的一個符號,佔一個位元組 (Byte) 的空間 int 整數,所佔儲存位置大小依系統而定,對 16 bits 系統而言,佔2個位元組 ,對 32 bits 系統而言,佔4個位元組 float 單精準度浮點數, 所佔儲存位置大小依採用的浮點數規範而定,對 16 bits 系統而言,通常佔 4 個 Byte double 倍精準度浮點數,所佔儲存位置大小依採用的浮點數規範而定,對 16 bits 系統而言,通常佔 8 個 Byte

16 bits常用資料型態大小及數值表示範圍 DataType Bytes Bits Range char 1 8 -128~127 (-27~27-1) int 2 16 -32768~32767 (-215~215-1) float 4 32 ±3.4e-38~3.4e+38 double 64 ±1.7e-308~1.7e+308

16 bits常用資料型態大小及數值表示範圍(續) DataType Bytes Bits Range unsigned char 1 8 0~255 (0~28-1) unsigned int 2 16 0~65535 (0~216-1) short int -32768~32767 long int 4 32 -2147483648~+2147483647

整數常數(constant) 987 整數 (int) 123456987L 長整數 (long int) 6212206UL 不帶正負號的長整數 (unsigned long)

整數常數(constant) 037 是八進位常數,相當於十進位的 31,如果用十六進位表示,則是 0x1f 或 0x1F 0xFF 是十六進位常數,相當於十進位的 255 八進位與十六進位常數後面也可以加上 L 變成 long 型態,加上U則變成 unsigned 型態

浮點數常數 3.1415926 5.23e+12 -2.8e-3 .764E-5 .33 0.18f 3.18E4F 123.4567L

字元常數 字元常數 (character constant) 通常用於代表一個文字符號,前後用單引號括起來,例如 'A', '#', 'X' 它也可以代表該文字符號的碼值,例如,在個人電腦上使用的 ASCII 碼中,字元 'A' 這個符號的碼是十六進位 0x41,也就是十進位的 65,所以字元 'A' 的數值就是 65;字元 'a' 這個符號的碼是十六進位 0x61,也就是十進位的 97,所以字元 'a' 的數值就是 97

字元常數的八進位與十六進位寫法 八進位寫法 '\ppp' 其中 p 是八進位數字( 0 到 7 ) 例如 '\015' 代表ASCII碼為 13 的字元 十六進位寫法 '\xhh' 其中 h 是十六進位數字 ( 0 到 9,a 到 f,或 A 到 F) 例如 '\x1B' 代表ASCII碼為 27 的字元,也就是鍵盤上的Esc鍵

脫序字元(escape character) \a 警鈴符號 (alarm) \b 退位 (backspace) \f 換頁 (formfeed) \n 換列 (newline) \r 回到第一格 (carriage return) \t 水平定位 (tab) \v 垂直定位 (vertical tab) \\ 反斜線 \? 問號 \' 單引號 \" 雙引號 \0 零值符號 (Null character)

字串常數 字串常數 (string constant)就是用雙引號對前後括起來幾個字元符號。例如 "This is a string" 或 "" (空字串)

變數及宣告 變數是程式中用來代表某項會變動的資料,其名稱由設計者自己編,通常是英文字母開頭再加上英文或數字或底線符號 所有變數在使用之前都要先加以宣告;編譯程式會依宣告替變數安排適當的記憶體空間來儲存它的值 例如 int i, j, k; char ch; float money, weight; 每個宣告列都要用分號 ; 結尾,這是C語言中表示一個敘述結束的語法

宣告變數初始值 int i = 0; int limit = MAXNUM-1; float small = 1.0e-6; char ch = '\0';

【語法練習 2-4-1】 (1) 宣告一整數變數 x int x; (2) 宣告一字元變數 ch char ch; (3) 宣告一浮點數變數 val float val; (4) 宣告兩個整數變數 a 與 b int a, b;

【範例 2-5-1】 1 #include <stdio.h> 2 main() 3 { 4 int i; 5 float m; 3 { 4 int i; 5 float m; 6 char ch; 7 8 i = 100; 9 m = 4.38; 10 ch = '#'; 11 printf("i=%d m=%f ch=%c \n",i,m,ch); 12 } 各列開頭的行號,是為了方便說明,請不要鍵入,C 程式是不帶行號的

常見的語法錯誤 (一) 忘記在敘述行尾端打上分號 ; (二) 大小寫未區分 (三) 拼錯字 (四) 括弧未配成對 (五) 不該出現的空白符號 (六) 引號未成對

基本的運算 設定運算子 = 加法運算子 + 減法運算子 – 乘法運算子 * 除法運算子 / 餘數運算子 % 負號運算子 -

合併的設定運算子 a = a+b; 可以寫成 a += b; a = a-b; 可以寫成 a -= b;

遞增運算子 ++ a = a+1 ; 可以簡化成 a += 1; 可以再簡化成 a++;

遞減運算子 -- a = a-1 ; 可以簡化成 a -= 1; 可以再簡化成 a--;

前置運算與後置運算 前置遞增: ++寫在變數前面,變數先加一, 其數值再拿來使用 int a=7; b = ++a; 前置遞增: ++寫在變數前面,變數先加一, 其數值再拿來使用 int a=7; b = ++a; 結果 a 值為 8, b 值為 8 後置遞增: ++寫在變數後面,變數值先拿來使用然後變數再加一 b = a++; 結果 a 值為 8, b 值為 7

sizeof sizeof ( X ) 代表資料X的大小 (bytes),其值隨電腦系統而異,目的在於將程式移植到其他機器上使用而不須改寫原始程式 例如 sizeof (int) 代表一個整數資料的大小,在 16 bits系統上的值是 2,在 32 bits系統上的值是 4

運算子的優先順序 例 a=b+c*d; 運算子的優先順序為 * 優於 + 優於 = 所以 c*d 先計算,然後才和 b 相加,才把值設定給 a

運算子的結合律 大部份的運算符號都使用左結合規則,也就是由左邊的運算先做。例如 a=b*c/d;

右結合的運算子 有極少數運算子是採右結合律的 例如 設定運算 = a=b=c; 相當於 a=(b=c);

表 2-1運算子的優先順序及結合律 等級 運 算 符 號 運 算 功 能 結合律 等級 運 算 符 號 運 算 功 能 結合律 ── ──────── ───────────────── ────── 1 () [] . ← 函數、陣列、結構成員、結構指標成員 由左到右(L) ++ -- 、後置遞增、遞減 2 - ~ ! * & ++ 負號、1的補數、邏輯NOT、間接、取址 由右到左(R) -- sizeof() 前置遞增、遞減、型態大小 3 * / % 乘、除、求餘數 由左到右(L) 4 + - 加、減 由左到右(L) 5 << >> 左移、右移 由左到右(L) 6 < > <= >= 小於、大於、小於等於、大於等於 由左到右(L) 7 == != 等於、不等於 由左到右(L) 8 & 位元AND 由左到右(L) 9 ^ 位元XOR 由左到右(L) 10 | 位元OR 由左到右(L) 11 && 邏輯AND 由左到右(L) 12 || 邏輯OR 由左到右(L) 13 ? = 條件運算 由右到左(R) 14 = *= /= %= += -= 各種設定運算 由右到左(R) <<= >>= &= ^= |= 15 , 逗號分隔 由左到右(L)

資料型態的轉換 在運算式中,若運算子兩邊的運算元型態不同時,會依一些規則轉換成同一種型態 例如 整數與浮點數相加,會先轉換成浮點數(值域較大)再加 ,得到浮點數的值 例如 浮點數值存入整數變數時會自動切為整數值 下列 C 程式片段  int a, s; float b, t; a=3; b=4.5; t=a+b; s=a+b; 會使 t 的值為 7.5, s 的值 7

資料型態的轉換(續) 將型態宣告用小括號 括起來,可以強制進行型態的轉換 例如 下列 C 程式片段 int a, b, s; float t; a=3; b=2; s=a/b; t=(float)a/b;  會使 s 的值為 1, t 的值為 1.5