Introduction to the C Programming Language

Slides:



Advertisements
Similar presentations
While 迴圈 - 不知重複執行次數
Advertisements

CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
第一單元 建立java 程式.
計算機程式語言實習課.
“八皇后”问题 崔萌萌 吕金华.
Loops.
第2章 高级编程的硬件基础 主要内容 计算机硬件组成 80x86微机系统 Turbo C编译方式 BIOS和DOS调用.
第一章 程序设计入门.
Introduction to the C Programming Language
C语言程序设计 课程 第5章 数组 主讲:李祥 博士、副教授 单位:软件学院软件工程系.
第一章 C语言概述.
函數 授課:ANT 日期:2009/3/24.
選擇排序法 通訊一甲 B 楊穎穆.
C的發展史 C程式初體驗 C程式設計基本注意事項 上機實習課程
Chen Yi Fen The C Language Chen Yi Fen
Chap 10 函数与程序结构 10.1 函数的组织 10.2 递归函数 10.3 宏定义 10.4 编译预处理.
If … else 選擇結構 P27.
Chap 2 用C语言编写程序 2.1 在屏幕上显示 Hello World! 2.2 求华氏温度 100°F 对应的摄氏温度
Introduction to the C Programming Language
Introduction to the C Programming Language
C++ 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
1. 檔案File  開新New  檔案Empty File (再另存新檔D:\hello.c)
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
C語言簡介 日期 : 2018/12/2.
第12章 從C到C++語言 12-1 C++語言的基礎 12-2 C++語言的輸出與輸入 12-3 C++語言的動態記憶體配置
程式撰寫流程.
源码分析教程5部曲之2——C标准库概览 讲师:杨振平 博客地址:blog.csdn.net/yangzhenping
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
第7章 编译预处理 本章要求: 本章重点: 本章难点: 掌握用#define定义无参数宏和带有参数宏定义和调用方法;
Introduction to the C Programming Language
第四章 C 语言中的输入和输出.
期中考试成绩分布 《程序设计》-2017年秋.
計數式重複敘述 for 迴圈 P
第3章 顺序结构程序设计 为了让计算机处理各种数据,首先就应该把源数据输入到计算机中;计算机处理结束后,再将目标数据信息以人能够识别的方式输出。C语言中的输入输出操作,是由C语言编译系统提供的库函数来实现。 3.1 格式化输出——printf()函数 3.2 格式化输入——scanf()函数.
程式設計實習課(四) ----C 函數運用----
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
第七章 函数及变量存贮类型 7.1 函数基础与C程序结构 7.2 函数的定义和声明 7.3 函数的调用 7.4 函数的嵌套与递归
第一單元 建立java 程式.
第九章 预处理命令.
INDEX 資訊學科種子教師研習 課程說明 教學活動計畫.
C语言概述 第一章.
|08 前置處理器與標準函數.
Introduction to the C Programming Language
C语言程序设计 教案 崔武子制作
函式庫補充資料.
Oop8 function函式.
基本IO.
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
Chap 5 函数 5.1 计算圆柱体积 5.2 数字金字塔 5.3 复数运算.
程式的時間與空間 Time and Space in Programming
輸出與輸入(I/O).
C语言程序设计 李祥 QQ:
C qsort.
Introduction to the C Programming Language
第三章 基本的輸出與輸入函數 (Basic Output & Input Function)
函數應用(二)與自定函數.
第四章 C 语言中的输入和输出.
第4章 顺序结构程序设计 为了让计算机处理各种数据,首先就应该把源数据输入到计算机中;计算机处理结束后,再将目标数据信息以人能够识别的方式输出。C语言中的输入输出操作,是由C语言编译系统提供的库函数来实现。 4.1 格式化输出——printf()函数 4.2 格式化输入——scanf()函数.
Introduction to the C Programming Language
第二章 数据类型、运算符和表达式 §2.1 数据与数据类型 §2.2 常量、变量和标准函数 §2.3 基本运算符及其表达式 目 录 上一章
第18讲 从C到C++ 计算机与通信工程学院.
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
Programming & Language Telling the computer what to do
C/C++基礎程式設計班 陣列 講師:林業峻 CSIE, NTU 3/14, 2015.
Chap 10 函数与程序结构 10.1 圆形体积计算器 10.2 汉诺塔问题 10.3 长度单位转换 10.4 大程序构成.
Array(陣列) Anny
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
Introduction to the C Programming Language
函式庫補充資料 1.
隨機函數.
Presentation transcript:

Introduction to the C Programming Language Preprocessor (前端處理器)

Preprocessor (前端處理器) Preprocessor (前端處理器)主要之三項功能: 巨集 #define 指令 常數代換 字串代換 定義簡易函數 包含檔案 (include) : 將某個檔案包含於目前的檔案下工作, 通常包含進來的檔案都以 h 為副檔名, 如: stdio.h, stdlib.h等 #include <檔案名稱> #include “檔案名稱” 條件式編譯 (在此不介紹) 在此僅討論前兩項 以「#」開頭的前置處理指令,之所以會稱為”前置處理”,這是因為在為這些指令在編譯之前就會先進行處理,再把處理後的結果與程式碼一起送給編譯器編譯。 條件式編譯在藍色書的ch13.3

#define前置處理器 #define可方便將常用的常數、字串替換成一個自訂的識別名稱。亦可取代簡單的函數。 這兒不可以加分號 替換常數,簡單函數範例1 取代簡單函數範例2 在#define後面所使用的「識別名稱」,是用來替換後面的「代換標記」。

#include前置處理器 #include除了可以含括C語言提供的標頭檔之外,也含括入我們自己所寫的標頭檔。 #include <標頭檔.h> /*C語言提供的標頭檔*/ #include ”檔案名稱” /*自己的檔案*/

範例一 : #define 利用 #define 方式撰寫輸入圓周半徑計算圓面積 define 使用方式 #define PI 3.1415929 #define Area(r) PI * (r) * (r) /*定義巨集Area(r)*/ void main() { int r; printf("Enter radius : "); scanf(" %d", &r); printf("The area = %10.4f \n", Area(r)); } define 使用方式 pre1.c 巨集:假設程式裡會使用到巨集十次,在compiler就會產生十段相同的程式碼 vs 函數:無論程式裡呼叫函數幾次,只會有一段程式碼出現 因此在選擇使用函數或是巨集的同時,也需要程式設計師在時間與空間中做出取捨:選擇巨集佔用的記憶體較多,但是程式的控制權不用移轉,因而程式執行的速度較快;                                      選擇函數程式碼較短,佔用的記憶體較少,但是程式的控制權要交給函數使用,所以執行速度會較慢

範例二: #define 利用 #define 方式撰寫判斷輸入數值為奇數或偶數 #define odd(x) ((x) % 2 ==1) ? 1 : 0 void main() { int x; printf("Enter one integer value : "); scanf(" %d", &x); if( odd(x)) printf("%d is odd number. \n", x); else printf("%d is even number. \n", x); } pre2.c

範例三: #define 依照輸入數值列出其平方值, 若數值小於50時, 則程式結束 #define TRUE 1 #define FALSE 0 #define SQ(x) (x * x) /*定義巨集SQ(x)*/ void main() { int num; int again = 1; printf("\1: Program will stop if input value less then 50. \n"); while(again) printf("\1: Please input number ==> "); scanf("%d", &num); printf("\2: The square for this number is %d \n", SQ(num)); if(num >= 50) again = TRUE; else again = FALSE; } 注意: 先乘除後加減 Ex: SQ(num+1)?? pre3.c 注意:先乘除後加減 Ex: SQ(num-1)

範例五: #include 使用自訂的標頭檔 area.h #define PI 3.14 #define CIRCLE(r) ((PI)*(r)*(r)) #define RECTANGLE(length,height) ((length)*(height)) #define TRIANGLE(base,height) ((base)*(height)/2.) pre5.c #include <stdio.h> #include<stdlib.h> #include “d:\area.h” int main() { float base,height; printf(“Please input triangle base:”); scanf(“%f”,&base); printf(“Please input triangle height”); scanf(“%f”,&height); printf(“Triangle area: %.2f\n”,TRIANGLE(base,height)); system(“pause”); return 0; } 注意事項: 1.範例5中的area.h檔必須存在d槽上/*因為pre5.c檔中,要呼叫自訂的標頭檔設的路徑*/ 2.若在pre5.c檔中,改寫成#include “area.h” 方法一:則請將area.h檔存在TC環境設定裡的函式庫(c:\tc\include\) 方法二:看使用者將自定的標頭檔存放在哪個資料夾下,則去TC環境設定函式庫路徑裡增加路徑 Ex: 將area.h放在c:\temp\,所以要將TC環境設定函式庫路徑增加上 ,c:\temp\ 這樣才找得到此自定的標頭檔

C語言標頭檔 alloc.h assert.h bios.h conio.h ctype.h dir.h dos.h errno.h fcntl.h float.h graphics.h io.h limits.h math.h mem.h process.h setjmp.h share.h signal.h stdarg.h stddef.h stdio.h stdlib.h string.h time.h values.h alloc.h 配置記憶體的檔頭 time.h 系統時間的檔頭 … conio.h 一些輸入輸出的檔頭 math.h 數學函數的檔頭 … dos.h DOS模式下用到的檔頭 string.h 字串函數的檔頭 …

範例六: 常用函數介紹 簡易數學函數使用 #include <math.h> void main() { double x = 8.0; printf("\2: exp(x) is --> %f \n", exp(x)); printf("\2: log(x) is --> %f \n", log(x)); printf("\2: log10(x) is --> %f \n", log10(x)); printf("\2: sqrt(x) is --> %f \n", sqrt(x)); } 數學函數:(要include<math.h>檔頭) exp(x) 指數函數,計算x的指數值 sqrt(x) 平方根函數,計算非負數x的平方根值 log(x) 自然對數函數,計算x的自然對數值

範例七: 常用函數介紹 應用亂數函數設計猜數字遊戲 #include <time.h> #include <stdlib.h> #include <time.h> void main() { int num, guess, count=0; randomize(); num = random(80) + 1; do printf("Enter your guess (1-80) : "); scanf("%d", &guess); count ++; if( guess > num ) printf(" Too high ...\n"); else if( guess < num) printf(" Too low ... \n"); else printf(" Bingo ! \n"); } while (( guess != num) && ( count < 5)); if (guess != num) printf(" Too bad. The number is %d \n", num); printf(" You are lucky !! \n"); 應用亂數函數設計猜數字遊戲 pre6.c