1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Ngôn ngữ lập trình C: Chương 4 - GV. Dương Khai Phong

22 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 194,05 KB

Nội dung

Mục tiêu của chương 4 Hàm và cấu trúc chương trình thuộc bài giảng ngôn ngữ lập trình C nhằm trình bày về chương trình và hàm trong, cách viết một hàm, phân loại hàm trong C, hàm với đối số là tham trị, hàm với đối số là tham biến.

TIN HỌC ĐẠI CƯƠNG Ngơn ngữ lập trình: C Lý thuyết: buổi Thực hành: buổi GVHD: Dương Khai Phong Email: khaiphong@gmail.com NỘI DUNG CÁC BUỔI HỌC Tổng quan C (chương 1,2) Các cấu trúc điều khiển C (chương 3) Hàm cấu trúc chương trình (chương 4) Mảng, chuỗi trỏ (chương 5) Kiểu cấu trúc, đệ qui, tập tin (chương 6,7,8) Ôn tập CHƯƠNG 4: HÀM VÀ CẤU TRÚC CHƯƠNG TRÌNH Chương trình hàm C Cách viết hàm Phân loại hàm C a) Hàm với đối số tham trị b) Hàm với đối số tham biến 1 CHƯƠNG TRÌNH VÀ HÀM TRONG C a Chương trình gì?  Chương trình tập hợp gồm hay nhiều hàm Trong bắt buộc phải có hàm main()  Một chương trình bắt đầu thực từ câu lệnh hàm main() gặp dấu ngoặc } cuối hàm b Hàm gì?  Hàm đoạn chương trình độc lập thực trọn vẹn công việc định, rổi trả giá trị cho chương trình gọi  Lưu ý: - Hàm đơn vị độc lập chương trình - Khơng cho phép xây dựng hàm bên hàm 1 CHƯƠNG TRÌNH VÀ HÀM TRONG C * Cấu trúc chương trình:  Lưu ý: việc truyền liệu từ hàm sang hàm khác thực theo cách:  Sử dụng đối số hàm  Sử dụng biến tồn cục CHƯƠNG TRÌNH VÀ HÀM TRONG C * Ví dụ: viết CT tính bình phương số nguyên a  Cách 1: #include “stdio.h” #include “conio.h” void main() { int a,binhphuong; printf (“Nhap a = ”); scanf(“%d”,&a); binhphuong=a*a; printf (“Binh phuong %d %d”,a,binhphuong); }  Cách 2: dùng hàm #include “stdio.h” #include “conio.h” int binhphuong(int i); void main() { int a,kq; printf (“Nhap a = ”); scanf(“%d”,&a); kq=binhphuong(a); printf (“Binh phuong %d %d”,a,kq); } int binhphuong(int i) { int kq; kq=i*i; return kq; } CÁCH VIẾT MỘT HÀM * Cú pháp khai báo chung: ([Danh sách tham số có]); Trong đó: • : int,float,char, Nếu hàm khơng có kiểu liệu trả ta dùng kiểu void Ví dụ: int binhphuong(int a), void xuat() : cần đặt tên cho gợi nhớ chức n8ang hàm • [Danh sách tham số có]: tùy theo chức hàm mà danh sách có hay khơng có tham số, tham số cách dấu phẩy “,” • CÁCH VIẾT MỘT HÀM * Cú pháp định nghĩa chung: thường định nghĩa bên hàm main() ([Danh sách tham số có]) { [return giá_tri_nếu có;] } CÁC VÍ DỤ CÁCH VIẾT HÀM * Ví dụ 1: viết chương trình tính S,P hình chữ nhật cách dùng hàm #include “stdio.h” #include “conio.h” int tinhP(int dai,int rong); int tinhS(int dai,int rong); void main() { int dai,rong; printf (“Nhap dai,rong: ”); scanf(“%d %d”,&dai,&rong); printf (“Chu vi hcn %d”,tinhP(dai,rong)); printf (“Dien tich hcn %d”,tinhS(dai,rong)); } // Định nghĩa hàm int tinhP(int dai,int rong) { int P; P=(dai+rong)*2; return P; } int tinhS(int dai,int rong) { int S; S=dai*rong; return S; } CÁC VÍ DỤ CÁCH VIẾT HÀM * Ví dụ 2: viết chương trình giải ptb1 ax+b=0 dùng hàm #include “stdio.h” #include “conio.h” void giaiPTB1(int a,int b); void main() { int a,b; printf (“Nhap a,b: ”); scanf(“%d %d”,&a,&b); giaiPTB1(a,b); } // Định nghĩa hàm giaiPTB1 void giaiPTB1(int a,int b) { float x; if (a==0) if (b==0) printf (“pt VSN”); else printf (“pt VN”); else { x=(float)-b/a; printf (“pt co nghiem x=%.2f”,x); } } CÁC VÍ DỤ CÁCH VIẾT HÀM * Ví dụ 3: viết chương trình giải ptb2 ax^2+bx+c=0 dùng hàm #include “stdio.h” #include “conio.h” void giaiPTB1(int a,int b); void giaiPTB2(int a,int bint c); void main() { int a,b,c; printf (“Nhap a,b,c: ”); scanf(“%d %d %d”,&a,&b,&c); giaiPTB2(a,b,c); } // Định nghĩa hàm void giaiPTB1(int a,int b) { // xem lại vi dụ } void giaiPTB2(int a,int b,int c) { if (a==0) // ptb1: bx+c=0 giaiPTB1(b,c); else { float delta,x1,x2; delta=b*b-4*a*c; if (delta0) … } } PHÂN LOẠI HÀM TRONG C * Xét ví dụ: viết CT hoán vị giá trị cho số nguyên a,b sau: Tạo vùng nhớ chứa số nguyên: … void main() { int a,b,tam; printf (“Nhap a,b: ”); scanf(“%d %d”,&a,&b); printf (“Truoc hvi a=%d b=%d”,a,b); tam=a; a=b; b=tam; printf (“Sau hvi a=%d b=%d”,a,b); } Nhap a,b: Truoc hvi a=5 b=6 Sau hvi a=6 b=5 65 (-859…) 0fx a = rác 65 (-859…) 1fx b = rác (…) 2fx tam = rác PHÂN LOẠI HÀM TRONG C * Xét ví dụ: viết CT hoán vị giá trị cho số nguyên a,b cách dùng hàm sau: … void main() { int a,b,tam; printf (“Nhap a,b: ”); scanf(“%d %d”,&a,&b); // Xuat a,b tam=a; a=b; b=tam; // Xuat a,b da hoan vi } … void hoanvi(int a,int b); void main() { int a,b; printf (“Nhap a,b: ”); scanf(“%d %d”,&a,&b); printf (“Truoc hoan vi a=%d b=%d”,a,b); hoanvi(a,b); printf (“Sau hoan vi a=%d b=%d”,a,b); } void hoanvi(int a,int b) { int tam; tam=a; a=b; b=tam; } PHÂN LOẠI HÀM TRONG C * Cách thực thi chương trình: … void hoanvi(int a,int b); void main() { int a,b; printf (“Nhap a,b: ”); scanf(“%d %d”,&a,&b); printf (“Truoc a=%d b=%d”,a,b); hoanvi(a,b); printf (“Sau a=%d b=%d”,a,b); } void hoanvi(int a,int b) { int tam; tam=a; Sau kết thúc hàm a=b; b=tam; hoanvi vùng nhớ phụ } giải phóng Tạo vùng nhớ chứa số nguyên: 0fx a= giá tri rác (-859…) 1fx b= giá tri rác (-859…) 0fx a= 1fx b= Không đổi Tạo vùng nhớ phụ khác: 2ffx a'= (lấy giá trị từ a) 3ffx b'= (lấy giá trị từ b) Thực lệnh để hoán vị: 2ffx a'= (hoán vị a=b) 3ffx b'= (hoán vị b=tam) PHÂN LOẠI HÀM TRONG C * Cách khắc phục: truy cập trực tiếp đến địa vùng nhớ … void hoanvi(int &a,int &b); void main() { int a,b; printf (“Nhap a,b: ”); scanf(“%d %d”,&a,&b); printf (“Truoc a=%d b=%d”,a,b); hoanvi(a,b); printf (“Sau a=%d b=%d”,a,b); } void hoanvi(int &a,int &b) { int tam; tam=a; a=b; b=tam; } Tạo vùng nhớ chứa số nguyên: 65 (-859…) 0fx a = rác 65 (-859…) 1fx b = rác Tạo vùng nhớ: (-859…) 1fx tam = rác PHÂN LOẠI HÀM TRONG C * Nhận xét: từ ví dụ trên, ta phân loại hàm C theo dạng sau: a/ Hàm với đối số tham trị (tham số vào/trang 98) b/ Hàm với đối số tham biến (tham số ra/trang 98)  Lưu ý:  Ta xây dựng hàm vừa có tham trị vừa có tham biến  Tham số khai báo hàm gọi chung tham số hình thức Tham số gọi hàm CT gọi tham số thực 3 PHÂN LOẠI HÀM TRONG C a/ Hàm với đối số tham trị:  Định nghĩa: hàm không làm thay đổi giá trị tham số truyền vào hàm kết thúc  Khai báo: ([DS_các tham_số])  Ví dụ: float tinhDTB(float van,float toan); float rutcan_bac_hai(float so); … PHÂN LOẠI HÀM TRONG C b/ Hàm với đối số tham biến:  Định nghĩa: hàm làm thay đổi giá trị tham số truyền vào hàm kết thúc  Khai báo bản: ([&DS_các tham_số])  Ví dụ: void tinhDTB(float van,float toan, float &DTB); float rutcan_bac_hai(float so, float &kq); … PHÂN LOẠI HÀM TRONG C * Các vấn đề liên quan đến biến: (xem trang 100) a/ Địa biến: địa vùng nhớ máy tính ta khai báo biến (qui ước: số thứ tự byte dãy byte liên tiếp) => Cú pháp để lấy địa biến: & b/ Biến trỏ: loại biến dùng để lưu địa biến (phụ thuộc vào kiểu liệu biến) => Cú pháp khai báo biến trỏ: *; => Qui tắc sử dụng: biến trỏ bắt buộc phải sử dụng kết hợp với địa vùng nhớ 3 PHÂN LOẠI HÀM TRONG C * Ví dụ: cách sử dụng biến trỏ: … void main() { int a=5; printf(“Truoc a=%d”,a); int *p; // khai báo trỏ p=&a; // gán vào địa biến a *p=7; // Thay đổi giá trị biến a printf(“Sau: a=%d”,a); } Truoc a=5 Sau a=7 Tạo vùng nhớ chứa số nguyên a: 0fx a = 57 1fx p NULL PHÂN LOẠI HÀM TRONG C * Các vấn đề liên quan đến biến: (xem trang 115,117) c/ Biến cục (biến nội): biến khai báo bên thân hàm Thời gian tồn tại: từ lúc hàm bắt đầu hàm kết thúc (như biến khai báo hàm main() tồn kết thúc chương trình)  Phạm vi sử dụng: sử dụng bên hàm mà khai báo  d/ Biến toàn cục (biến ngoại): biến khai báo bên hàm gian tồn tại: tồn suốt chương trình  Phạm vi sử dụng: từ vị trí khai báo cuối chương trình Thời PHÂN LOẠI HÀM TRONG C * Bảng tóm tắt cách dùng hàm: Hàm Đối số tham trị Đối số tham biến (thay đổi giá trị tham số truyền vào) Tham số hình thức khai báo hàm int binhphuong(int a) Khai báo dạng địa biến void hoanvi(int &a,int &b) Tham số thực hàm main int a,kq; kq=binhphuong(a); int a=5,b=6; hoanvi(a,b); Khai báo dạng biến trỏ void hoanvi(int *a,int *b) int a=5,b=6; hoanvi(&a,&b); ... Lưu ý: - Hàm đơn vị độc lập chương trình - Khơng cho phép xây dựng hàm bên hàm 1 CHƯƠNG TRÌNH VÀ HÀM TRONG C * Cấu trúc chương trình:

Ngày đăng: 08/05/2021, 18:55

TỪ KHÓA LIÊN QUAN