陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司 陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司.

Slides:



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

物件導向語言基礎 Chapter 4 認知 學完本章應了解何謂常數、變數。 了解有哪些運算式、運算子和基本輸入、輸出指令。
第一章 C语言概述 计算机公共教学部.
JAVA 程式設計 資訊管理系 - 網路組.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
第一章 C语言概述.
結構(struct).
第十一章 結構.
Visual C++ introduction
簡易C++除錯技巧 長庚大學機械系
Chen Yi Fen The C Language Chen Yi Fen
2 C++ 程式概論 2.1 C++ 程式結構 程式註解 // 插入標題檔 #include 2-3
列舉(enum).
编译原理与技术 类型检查 2018/11/21 《编译原理与技术》-类型检查.
【變數與記憶體位址】 變數(Variable)提供一個有名稱的記憶體儲存空間。一個變數包含資料型態、變數本身的值及它的位址值。
C 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
保留字與識別字.
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
Java程式概觀.
C++ 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
1. 檔案File  開新New  檔案Empty File (再另存新檔D:\hello.c)
C語言簡介 日期 : 2018/12/2.
類別(class) 類別class與物件object.
Chapter 7 指標.
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
第五章 指针 5.1 指针的概念和定义 5.2 指针运算 5.3 指针和数组 5.4 字符串指针 5.5 指针数组 5.6 指向指针的指针
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Chap3 Linked List 鏈結串列.
程式設計實習課(四) ----C 函數運用----
第三章 数据类型、运算符与表达式.
第一單元 建立java 程式.
陣列(Array).
第三章 資料型態與輸出控制 本章學習目標 認識Matlab的基本資料型態 練習資料型態的轉換 學習如何控制Matlab的輸出格式
第 19 章 XML記憶體執行模式.
JAVA 程式設計 資訊管理系 - 網路組.
輸入&輸出 函數 P20~P21.
第十章 指標.
第7章 指標 7-1 指標的基礎 7-2 指標變數的使用 7-3 指標運算 7-4 指標與陣列 7-5 指向函數的指標.
挑戰C++程式語言 ──第8章 進一步談字元與字串
指標
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
C语言程序设计 李祥 QQ:
C qsort.
第二章 类型、对象、运算符和表达式.
挑戰C++程式語言 ──第7章 輸入與輸出.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
第14章 結構與其他資料形式.
函數應用(二)與自定函數.
陣列與結構.
北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
本节内容 指针类型.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
變數與資料型態  綠園.
資料表示方法 資料儲存單位.
第十二章 位运算.
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
適用於多選一 可減少if 與 else配對混淆的錯誤.
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
Programming & Language Telling the computer what to do
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
Array(陣列) Anny
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Introduction to the C Programming Language
Unix指令4-文字編輯與程式撰寫.
方法(Method) 函數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司 陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司

大綱 程式結構 資料型態 控制字元 運算子 控制結構 函式 參數傳遞法 檔案處理 變數類別 精選習題

簡介 1970年代由貝爾實驗室發展而成 採用區塊結構(block structure) 程式是由一群函式(function)所組成命 令式程式語言 利用C語言製作之程式具有很高的可攜性,即機器獨立(machine independent)性,非常適合發展系統程式

簡介 C語言會將大小寫符號視為不相同 複合敘述以“{ }”區隔 C語言的識別字由大小寫英文字母,數字或底線所構成,但第一個字元不得為數字 main、Main、MAIN在C語言中是被視為不同的符號敘述以分號做為結束,但前置處理指令例外 複合敘述以“{ }”區隔 C語言的識別字由大小寫英文字母,數字或底線所構成,但第一個字元不得為數字

簡介 C語言是不具 I/O 能力的程式語言 因為C語言所提供的輸出入功能(如printf())並非C語言本身的指令,而是定義在程式庫(library)中的函式 C語言的編譯器(compiler)並不會在編譯時處理這些輸出入的動作而是在Linking時交由Linker來處理這些輸出入的動作 當硬體的設備改變時,由於C語言的編譯器不處理I/O動作因此原則上不需要修改

程式結構 C語言的程式結構 前置處理指令(preprocessor directive) 函式

前置處理指令 #include 其功能是告知編譯程式,將"include"後面的檔案含括到程式中。此類檔案通常稱為表頭檔(header file),表頭檔一般是以功能來分類 stdio.h:基本輸出入作業及檔案。 math.h:數學計算。 memory.h:與記憶體相關。

前置處理指令 #define 功能是定義常數。 語法: #define 常數名稱 常數值 如 #define PI 3.14159

前置處理指令 “#include”及“#define”皆非C語言之命令,因此敘述後方不加分號做為結束

函式 函式分為main()函式及其他函式 函式理論上應有傳回值,但若無傳回值則必須以“void”型態來加以宣告,若省略傳回值型態則內定為整數 在函式執行的過程中,當執行到return敘述時會結束函式執行的動作,並以return後之值做為函式的傳回值 C程式的開始執行點為main()敘述,但main()敘述並未規定必須擺放在程式的第一條敘述的位置 有一點要特別注意 函式之中不得再定義函式

資料型態 C語言中資料型態的宣告敘述屬於不可執行敘述,語言允許在宣告變數時設定變數之初值 語法 型態 變數名稱=初值;如,int a=1; 型態 變數名稱(初值);如,int b(2);

純量資料型態 最常見的純量資料型態有以下四種 整數 實數 字元 指標 不帶小數點之數值,可為正、負、零值。其格式又可分為int (2 bytes),short (2 bytes)與long (4 bytes)三種。宣告方式為:int整數變數名稱; 實數 帶小數點之數值,可分為float (4 bytes)及double (8 bytes)二種。宣告方式為:float實數變數名稱; 字元 字元(char)佔1 byte的空間。宣告方式為:char字元變數名稱; 指標

For types with n bits in their memory allocation, the signed encoding can represent any of the 2n integers in the range [-2n-1, 2n-1 - 1], and the unsigned encoding can represent any of the 2n integers in the range [0, 2n - 1].

指標 指標用來存放變數的位址(address) 語法 型態 *符號; 範例 型態 *符號; 範例 int *i; // i代表一個指向整數值之指標 char *j; // j代表一個指向字元值之指標

Pointer examples int * xp; int i=2; *xp = i; printf(“%d\n”, *xp); printf(“%d\n”, i);

Pointer examples int a[]={1,2,3,4}; int *p=a; Printf(“%d\n”, a[0]); Printf(“%d\n”, p); Printf(“%d\n”, p[2]); Printf(“%d\n”, *(p+1));

陣列 語法格式 其中,“型態”代表陣列元素的型態,“名稱”代表陣列的名稱,而“[size i]”則代表陣列第i個維度的大小,1≦i≦n 範例 型態 陣列名稱 [size 1][size 2][size 3]....[size n]; 其中,“型態”代表陣列元素的型態,“名稱”代表陣列的名稱,而“[size i]”則代表陣列第i個維度的大小,1≦i≦n 範例 int arr1[10]; 陣列之註標由0開始計算,範例中arr1中包含了10個元素,分別是arr1[0],arr1[1],...,arr1[9]且元素之型態為整數

陣列 C語言允許在宣告陣列時順便設定初值,如 int arr2[5]={0,1,2,3,4}; 幾個限制必須被遵守 初值之數目不得較陣列元素個數多 若初值之元素個數小於陣列元素個數則未分配到初值的陣列元素其初值自動被設定為0 允許不設定元素個數,只指定初值,編譯器會自動計算求出元素之個數,如 int arr3[]={0,1,2,3,4} 代表arr3之元素個數為5

陣列 C語言並不會對陣列做範圍之檢查工作 範例 int arr4[]={0,1,2,3,4} //5個元素 a=arr4[5]; //語法正確,邏輯錯誤 宣告一個名稱為arr4之陣列,元素的個數為5個,合法註標值為0~4 企圖存取註標為10及5之陣列元素 由於C語言並不會對陣列元素做範圍之檢查工作,因此以上敘述並沒有語法錯誤且通常可執行,但結果可能有誤

結構 語法格式 struct 結構名稱 { 型態 1 元件名稱 1; 型態 2 元件名稱 2; .... 型態 n 元件名稱 n; } “結構名稱”代表此結構之名稱 “型態i”代表結構中元件的型態類別 ”名稱i”則代表結構中元件的名稱,1≦i≦n

結構 範例 struct StudentData { char name〔20〕; int score; } student; C語言的結構資料型態與Pascal語言的記錄(record)資料型態相同均屬於「限定名稱格式」 資料欄位的存取採用如下之方法 student.name, student.score;

控制字元 %d:十進位整數 %o:八進位整數 %x:十六進位整數 %c:字元 %s:字串 %f:浮點數

運算子 常用的運算子有三類 算術運算子 關係運算子 邏輯運算子 運算優先順序 算術運算子>關係運算子>邏輯運算子

算術運算子 +:加法 -:減法 *:乘法 /:除法 (5/2=?) %:求餘數 ++: x++ or ++x 表 x=x+1

範例 執行下列運算式,並計算其執行之結果值。 a=b=c=d=e=50; (1)a+=10; (2)b-=20; (3)c*=3;

範例 執行下列片段C語言後,輸出結果為何? int i=0 printf("%d",i++); printf("%d",++i); printf("%d\n",++i);

範例 有一C程式段如下:請問printf(…)敘述之輸出為何? main()    {     int a,b,c;     a=1; b=2;     c=a++- - - b;     printf("c=%d\n",c);    }

關係運算子 常見的關係運算子有 等於: = = 不等於: != 小於: < 大於: > 小於或等於: <= 大於或等於 : >=

邏輯運算子 常見的邏輯運算子 ! && ||

範例 底下的C程式會讓變數X的值為何? if (((3>2) && (2<2) || (5==6) || ((5>4) && 3)) X=3; else X=4;

範例 如下圖所示之 C 語言程式,二個 printf 輸出的結果為何? #include <stdio.h> main<> { int i,j; i= 2 && (j=2); printf("%d %d\n",i,j); (i=3)||(j=3); printf("%d %d\n",i,j); }

精選習題