複習 int a[5]; int i; //a[0], a[1], a[2], a[3], a[4]

Slides:



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

Introduction to C Programming
計算機程式語言實習課.
“八皇后”问题 崔萌萌 吕金华.
Project 2 JMVC code tracing
Chapter 5 遞迴 資料結構導論 - C語言實作.
Chapter 5 迴圈.
C语言程序设计 第八章 函数.
高级语言程序设计 主讲人:陈玉华.
Visual C++ introduction
簡易C++除錯技巧 長庚大學機械系
程式設計(二) 參考書目: 1. 洪維恩,C++ 教學手冊 第三版,旗標出版圖書公司。 2
C的發展史 C程式初體驗 C程式設計基本注意事項 上機實習課程
列舉(enum).
If … else 選擇結構 P27.
Chap 2 用C语言编写程序 2.1 在屏幕上显示 Hello World! 2.2 求华氏温度 100°F 对应的摄氏温度
C語言簡介 日期 : 2018/12/2.
第 6 章 函式.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
C 程式設計— 函式 台大資訊工程學系 資訊系統訓練班.
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A.
第七章 檔案處理.
Java 程式設計 講師:FrankLin.
Introduction to the C Programming Language
程式設計實習課(四) ----C 函數運用----
第一單元 建立java 程式.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
INDEX 資訊學科種子教師研習 課程說明 教學活動計畫.
|07 函數.
輸入&輸出 函數 P20~P21.
第十章 指標.
Introduction to C Programming
CH05. 選擇敘述.
Introduction to the C Programming Language
函式庫補充資料.
Oop8 function函式.
基本IO.
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
程式的時間與空間 Time and Space in Programming
C语言程序设计 李祥 QQ:
C qsort.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
Pthread.
Introduction to the C Programming Language
函數應用(二)與自定函數.
亂數 隨機產生亂數 Random類別支援的方法: Next多載方法 Next :傳回亂數。
陣列與結構.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
實習八 函式指標.
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A.
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
迴圈(重複性結構) for while do while.
作業系統實習課(二) -Scheduler-Related System Calls-
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
Programming & Language Telling the computer what to do
Introduction to the C Programming Language
Chapter 6 函數.
Introduction to the C Programming Language
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Array(陣列) Anny
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
Unix指令4-文字編輯與程式撰寫.
函式庫補充資料 1.
隨機函數.
方法(Method) 函數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

複習 int a[5]; int i; //a[0], a[1], a[2], a[3], a[4] for(i=0;i<5;i++){ scanf(“%d”,&a[i]); } printf(“%d ”,a[i]);

Class 4 函式

什麼是函式? 函式就像是一個具有特定功能的小程式 當某些程式敘述經常需要重複撰寫時,就可以將它寫成函式的形式,以節省程式開發的時間 可供其他程式重複使用 可以使程式變得精簡 當某些程式敘述經常需要重複撰寫時,就可以將它寫成函式的形式,以節省程式開發的時間 每當函式被呼叫時,會將其程式區塊內的敘述執行一次,再回到呼叫此函式的地方進行下一個敘述

什麼是函式? 使用函式不用去管函式內部如何寫 只要知道函式可以作什麼 使用函式可以讓程式碼更清晰 我們知道 printf 可以作輸出, 可是不用去知道printf是如何寫 使用函式可以讓程式碼更清晰 一直會作的工作最好寫成函式

int Rec(int,int); Int Rec(int, int); Int main(){ Int x=3,y=4; Int r; r=Rec(x,y); printf (“%d”,r); } Int Rec(int num,int num2) { return num*num2;

語法 回傳資料型態 函式名稱(資料型態1 參數1,資料型態2 參數2,…) { … 程式敘述區塊; }

函式的基本要件 函式的輸入 函式的輸出 函式主體 函式名稱後的參數串,它接收使用者在呼叫函式時傳送給函式使用的資料。 如: printf(“這個句子就是一個參數\n”); 函式的輸出 函式在執行後,可以傳回結果,這個結果稱為回傳值(return value) 回傳資料型態便是指定回傳值的資料型態 在不需要回傳值的函式可以設為void 函式主體 以一對大括號{ }包起來,裡面是函式所要執行的動作

注意 函式在任何情況下,都不能被定義在另一個函式之內 請為你的函式取一個能夠代表其功能的名稱

函式的呼叫與宣告 呼叫語法 呼叫端 x=kha_abs(-2); 被呼叫端 kha_abs(int num) {…} 函式名稱(參數1的值,參數2的值…); x=kha_abs(-2); //回傳2,由x變數接收 呼叫端 x=kha_abs(-2); 被呼叫端 kha_abs(int num) {…} 函式就像變數一樣,使用之前必須先宣告 編譯器在編譯時才知道有此函式的存在 如: int kha_abs(int num); 或 int kha_abs(int);

函式宣告之目的 宣告函式名稱為一個函式 提供編譯器執行呼叫時,引數與參數資料型態與個數的檢驗 num=kha_abs(100,200); //錯誤,多一個引數 提供編譯器在呼叫函式時,做引數與傳回值的資料型態轉換

範例練習 請撰寫一個你自己的算絕對值函式,命名為 my_abs,並在主函式main()中呼叫它

課堂練習 練習1 練習2 請設計一個函式,接收一個正方形的邊長,函式會回傳這個正方形的面積 主函式須提供使用者輸入的功能 主函式須輸出結果 請設計一個函式,接收一個長方形的長與寬,函式會回傳這個長方形的面積

int Rec(int,int); //函式宣告 Int main(){ Int x,y; Int r; //讓使用者輸入x和y r=Rec(x,y); printf (“面積=%d”,r); } Int Rec(int num,int num2) { return num*num2;

變數的作用區域 區域變數 變數宣告在函式中,只能在這個函式中使用 全域變數 變數宣告在任何函式定義外面

void function1(void); Int i;//全域變數 Int main(){ int j=30; i=40; function1(); } void function1(){ int j=10; //和main裡的j無關 printf(“%d %d”,j,i); //最後印出 10 40

記憶體佔用期間 區域變數 全域變數 auto(預設) static 同static變數 變數在被宣告的區塊作用期間佔有記憶體 變數從程式開始執行時便已存在,一直到程式結束為止 初始化只有一次,如無特別指定,便會設為0 全域變數 同static變數

可用範圍 區域變數 全域變數 只能在宣告它的區域內使用 從被宣告的地方開始,一直到程式結束都能使用它 函式中如果宣告了一個和全域變數同名的變數,在使用時若沒特別指定,用的會是函式中新宣告的那一個變數(最內層的區域變數) 若是加上兩個“::”號,會指定使用的是全域變數

全域變數與區域變數的取用方式

C語言內建函式庫 所有支援ANSI標準的C/C++編譯器都會提供一組公用的函式庫(function library) 內建的(build-in)函式 經由函式呼叫,不需宣告或定義它們就可以使用 較常用的數學函式 #include <math.h> pow( )、sqrt( ) 、 rand( ) 、srand()

pow( )次方 宣告:double pow(double x,double y); 呼叫:pow(x, y); 說明:回傳x的y次方值 範例練習:計算210的3次方

課堂練習 請設計一個程式,讓使用者輸入 a、b ,然後計算出 a 的 b 次方的值 %lf (long f) //印double時用%lf 輸入 5.0 的形式 全部用int呼叫也可以,則輸入為5

sqrt( ) 平方根 宣告:double sqrt(double x); 呼叫:sqrt(x); 說明:回傳非負值x的開平方根,x>0 課堂練習1:計算 23716 的 平方根 課堂練習2:請設計一個程式,讓使用者輸入 a、b (a和b 各代表直角三角形的直角上的兩個邊),然後計算出斜邊c的長 畢氏定理:a2+b2=c2

rand( ) 取亂數 整數變數=rand(); 搭配使用取餘數符號 % 來做運算 取 0-9 的亂數:a=rand() % 10

範例練習 實際寫一個程式來取得 兩個1-100 之間的亂數

srand() 上面的程式重複執行數次之後,會發現所得到的亂數是一樣的,why? 用srand() 函式改變一開始的亂數值 以目前的時間傳入 使用 time() 函式,而time()是定義在 time.h中

範例練習 改良上面的程式

課堂練習 試著產生5個亂數(50~100) 先印出5個亂數中最大的 再印出五個亂數 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ int num[5]; int i,max; srand(time(NULL)); for(i=0i<5;i++){ // 產生5個亂數並存到num陣列 } // 找出num陣列裡最大的數,並印出

作業五 寫一個簡易的猜數字遊戲 系統產生一個1-100的亂數,提示使用者輸入一個數字,如果使用者輸入的數字和答案相同,則印出 “Bingo!” 並結束程式,否則繼續讓使用者猜一次,並提示範圍;如果使用者三次都沒猜到,則印出標準答案(HW5.cpp)

int ans,sol,n,low=1,up=100,i; srand(time(NULL)); //ans= 1 ~ 100 random一數字 for(i=0;i<3;i++){ //告知使用者目前的範圍 //讓使用者猜一數字scanf(“%d”,&sol); // 如果使用者輸入的數字不在範圍內 i- -; // 否則告知有無猜中,猜中則跳出迴圈 break; //沒猜中,更新up or low } If(sol!=ans){ printf(“沒猜到”); Else{ printf(“猜到了,答案為%d\n”,ans);