Kỹ thuật lập trình C phần 3 doc

51 327 2
Kỹ thuật lập trình C phần 3 doc

Đ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

© 2004, HOÀNG MINH SƠN Chươn g 1 Kỹ thuật lập trình Phần II: Lập trình có cấu trúc 0101010101010101100001 0101010101010101100001 0101010101010101100001 0101010100101010100101 0101010100101010100101 0101010100101010100101 1010011000110010010010 1010011000110010010010 1010011000110010010010 1100101100100010000010 1100101100100010000010 1100101100100010000010 0101010101010101100001 0101010101010101100001 0101010101010101100001 0101010100101010100101 0101010100101010100101 0101010100101010100101 1010011000110010010010 1010011000110010010010 1010011000110010010010 1100101100100010000010 1100101100100010000010 1100101100100010000010 0101010101010101100001 0101010101010101100001 0101010101010101100001 0101010100101010100101 0101010100101010100101 0101010100101010100101 1010011000110010010010 1010011000110010010010 1010011000110010010010 1100101100100010000010 1100101100100010000010 1100101100100010000010 8/31/2006 y = A*x + B*u; x = C*x + d*u; StateController start() stop() LQGController start() stop() Chương3: Hàmvàthư viện 2 © 2004, HOÀNG MINH SƠN Chương 3: Hàm và thư viện Nộidung chương 3 3.1 Hàm và lậptrìnhhướng hàm 3.2 Khai báo, ₫ịnh nghĩahàm 3.3 Truyềnthamsố và trả về kếtquả 3.4 Thiếtkế hàm và thư viện 3.5 Thư việnchuẩnANSI-C 3.6 Làm việcvớitệptin sử dụng thư việnC++ 3.7 Nạpchồng tên hàm C++ 3.8 Hàm inline trong C++ 3 © 2004, HOÀNG MINH SƠN Chương 3: Hàm và thư viện 3.1 Hàm và lậptrìnhhướng hàm Lậptrìnhcócấutrúccóthể dựatrênmộttronghaiphương pháp:  Lậptrìnhhướng hàm ( function-oriented ), còn gọilàhướng nhiệm vụ ( task-oriented ), hướng thủ tục( procedure-oriented )  Lậptrìnhhướng dữ liệu( data-oriented ) Nhiệmvụ NV 1 NV 2 NV 3 NV 1a NV 1b NV 2a NV 2b NV 2c NV 3 DL 1 DL 2 DL 3 DL 1 DL 2 DL 3 4 © 2004, HOÀNG MINH SƠN Chương 3: Hàm và thư viện Hàm là gì?  Tiếng Anh: function -> hàm, chứcnăng  Một ₫ơnvị tổ chứcchương trình, một ₫oạnmã chương trình có cấutrúc₫ể thựchiệnmột chức năng nhất ₫ịnh, có giá trị sử dụng lại  Các hàm có quan hệ với nhau thông qua lờigọi, các biếnthamsố (₫ầuvào, ₫ầu ra) và giá trị trả về  Cách thựchiệncụ thể mộthàmphụ thuộcnhi ềuvào dữ kiện(thamsố, ₫ốisố củahàm): — Thông thường, kếtquả thựchiệnhàmmỗilần ₫ềugiống nhau nếu các tham số₫ầuvàonhư nhau —Một hàm không có tham số thì giá trị sử dụng lạirấtthấp  Trong C/C++: Không phân biệtgiữathủ tụcvàhàm, cả₫oạnmãchương trình chính cũng là hàm 5 © 2004, HOÀNG MINH SƠN Chương 3: Hàm và thư viện Ví dụ phân tích  Yêu cầu bài toán: Tính tổng mộtdãysố nguyên (liên tục) trong phạmvi do ngườisử dụng nhập. In kếtquả ra màn hình.  Các nhiệmvụ: —Nhậpsố nguyên thứ nhất: z Yêu cầungườisử dụng nhập z Nhậpsố vào mộtbiến —Nhậpsố nguyên thứ hai z Yêu cầungườisử dụng nhập z Nhậpsố vào mộtbiến —Tínhtổng vớivònglặp —Hiểnthị kếtquả ra màn hình 6 © 2004, HOÀNG MINH SƠN Chương 3: Hàm và thư viện Phương án 4 trong 1 #include <iostream.h> void main() { int a, b; char c; do { cout << "Enter the first integer number: "; cin >> a; cout << "Enter the second integer number: "; cin >> b; int Total = 0; for (int i = a; i <= b; ++i) Total += i; cout << "The sum from " << a << " to " << b << " is " << Total << endl; cout << "Do you want to continue? (Y/N):"; cin >> c; } while (c == 'y' || c == 'Y'); } 7 © 2004, HOÀNG MINH SƠN Chương 3: Hàm và thư viện Phương án phân hoạch hàm (1) #include <iostream.h> int ReadInt(); int SumInt(int,int); void WriteResult(int a, int b, int kq); void main() { char c; do { int a = ReadInt(); int b = ReadInt(); int T = SumInt(a,b); WriteResult(a,b,T); cout << "Do you want to continue? (Y/N):"; cin >> c; } while (c == 'y' || c == 'Y'); } 8 © 2004, HOÀNG MINH SƠN Chương 3: Hàm và thư viện Phương án phân hoạch hàm (1) int ReadInt() { cout << "Enter an integer number: "; int N; cin >> N; return N; } int SumInt(int a, int b) { int Total = 0; for (int i = a; i <= b; ++i) Total += i; return Total; } void WriteResult(int a, int b, int kq) { cout << "The sum from " << a << " to " << b << " is " << kq << endl; } Không có tham số, Giá trị sử dụng lại? OK, Không thể tốthơn! Quá nhiềuthamsố, Hiệunăng? 9 © 2004, HOÀNG MINH SƠN Chương 3: Hàm và thư viện Phương án phân hoạch hàm (1)  Chương trình dễ₫ọchơn => dễ phát hiệnlỗi  Chương trình dễ mở rộng hơn  HàmSumIntcóthể sử dụng lạitốt  Mã nguồndàihơn  Mã chạylớnhơn  Chạychậmhơn  Không phảicứ phân hoạch thành nhiềuhàmlàtốt, mà vấn ₫ề nằm ở cách phân hoạch và thiếtkế hàm làm sao cho tối ưu! 10 © 2004, HOÀNG MINH SƠN Chương 3: Hàm và thư viện Phương án phân hoạch hàm (2) #include <iostream.h> int ReadInt(const char*); int SumInt(int,int); void main() { char c; do { int a = ReadInt("Enter the first integer number :"); int b = ReadInt("Enter the second integer number:"); cout << "The sum from " << a << " to " << b << " is " << SumInt(a,b) << endl; cout << "Do you want to continue? (Y/N):"; cin >> c; } while (c == 'y' || c == 'Y'); } [...]... Định nghĩa hàm ở ₫âu? Ở phạm vi toàn c c (ngoài bất c hàm nào) C thể ₫ịnh nghĩa trong c ng tệp tin với mã chương trình chính, ho c tách ra một tệp tin riêng Trong Visual C+ +: * .c => C compiler, *.cpp => C+ + compiler Một hàm ₫ã c lời gọi thì phải ₫ư c ₫ịnh nghĩa chính x c 1 lần trong toàn bộ (dự án) chương trình, trư c khi gọi trình liên kết (lệnh Build trong Visual C+ +) Đưa tệp tin mã nguồn vào dự án,... 2004, HOÀNG MINH SƠN #include “xxx.cpp” Một hàm c ₫ư c ₫ịnh nghĩa bằng C, C+ +, hợp ngữ ho c bằng một ngôn ngữ kh c và dùng trong C/ C++ => Sử dụng hàm không c n mã nguồn! Một thư viện cho C/ C++ bao gồm: — Header file (thường ₫uôi *.h, *.hxx, , nhưng không bắt bu c) — Tệp tin mã nguồn (* .c, *.cpp, *.cxx, ) ho c mã ₫ích (*.obj, *.o, *.lib, *.dll, ) Chương 3: Hàm và thư viện 15 3. 3 Truyền tham số và trả... Truyền tham số và trả về kết quả là phương pháp c bản ₫ể tổ ch c quan hệ giữa c c hàm (giữa c c ch c năng trong hệ thống) Tham số (₫ầu vào) Hàm A a b c Giá trị trả về ho c tham số ra Tham số (₫ầu vào) Hàm B d e e Giá trị trả về ho c tham số ra © 2004, HOÀNG MINH SƠN Ngoài ra, c n c c c cách kh c: — Sử dụng biến toàn c c: nói chung là không nên! — Sử dụng c c tệp tin, streams: dù sao vẫn phải sử dụng... 2, 3, 4, 5}; int *p = FindMax(s,5); } Chương 3: Hàm và thư viện 30 Lý do trả về con trỏ ho c tham chiếu Tương tự như lý do truyền ₫ịa chỉ ho c truyền tham chiếu: — Tránh sao chép dữ liệu lớn không c n thiết — Để c thể truy c p tr c tiếp và thay ₫ổi giá trị ₫ầu ra © 2004, HOÀNG MINH SƠN C thể trả về con trỏ ho c tham chiếu vào ₫âu? — Vào biến toàn c c — Vào tham số truyền cho hàm qua ₫ịa chỉ ho c qua... giá trị trả về) — Đ c tả ý nghĩa, ₫ặt tên, chọn kiểu tương tự như tham số ₫ầu vào Định nghĩa bổ sung c c kiểu dữ liệu mới như c n thiết © 2004, HOÀNG MINH SƠN Mô tả rõ tiền trạng (pre-condition): ₫iều kiện biên cho c c tham số ₫ầu vào và c c ₫iều kiện ngoại c nh cho vi c gọi hàm Mô tả rõ hậu trạng (post-condition): t c ₫ộng c a vi c sử dụng hàm tới ngoại c nh, c c thao t c bắt bu c sau này, Thiết kế... bắt bu c truyền ₫ịa chỉ Lưu ý: Sử dụng con trỏ ₫ể truyền ₫ịa chỉ c a vùng nhớ dữ liệu ₫ầu vào Bản thân con trỏ c thể thay ₫ổi ₫ư c trong hàm nhưng ₫ịa chỉ vùng nhớ không thay ₫ổi (nội dung c a vùng nhớ ₫ó thay ₫ổi ₫ư c) : xem ví dụ biến p trong hàm SumInt trang 21 Chương 3: Hàm và thư viện 24 3. 3 .3 Truyền tham chiếu (C+ +) #include void ReadInt(const char* userPrompt, int& N) { cout c thể phân chia thành c c hàm con nếu c n Chương 3: Hàm và thư viện 36 . hàm C+ + 3. 8 Hàm inline trong C+ + 3 © 2004, HOÀNG MINH SƠN Chương 3: Hàm và thư viện 3. 1 Hàm và lậptrìnhhướng hàm Lậptrìnhc c utrúccóthể dựatrênmộttronghaiphương pháp:  Lậptrìnhhướng hàm ( function-oriented ),. 2 DL 3 DL 1 DL 2 DL 3 4 © 2004, HOÀNG MINH SƠN Chương 3: Hàm và thư viện Hàm là gì?  Tiếng Anh: function -> hàm, chứcnăng  Một ₫ơnvị tổ chứcchương trình, một ₫oạnmã chương trình c c utr c ể. chính, hoặctáchramộttệp tin riêng. Trong Visual C+ +: * .c => C compiler, *.cpp => C+ + compiler  Mộthàm₫ c lờigọithìphải ₫ư c ₫ịnh nghĩa chính x c 1 lần trong toàn bộ (dự án) chương trình,

Ngày đăng: 12/08/2014, 19:21

Từ khóa liên quan

Mục lục

  • Kỹ thuật lập trìnhPhần II: Lập trình có cấu trúc

  • Nội dung chương 3

  • 3.1 Hàm và lập trình hướng hàm

  • Hàm là gì?

  • Ví dụ phân tích

  • Phương án 4 trong 1

  • Phương án phân hoạch hàm (1)

  • Phương án phân hoạch hàm (1)

  • Phương án phân hoạch hàm (1)

  • Phương án phân hoạch hàm (2)

  • Phương án phân hoạch hàm (2)

  • 3.2 Khai báo và định nghĩa hàm

  • Khai báo hàm và lời gọi hàm

  • Khai báo hàm C/C++ ở đâu?

  • Định nghĩa hàm ở đâu?

  • 3.3 Truyền tham số và trả về kết quả

  • Tham biến hình thức và tham số thực tế

  • 3.3.1 Truyền giá trị

  • Thử ví dụ đọc từ bàn phím

  • Truyền giá trị

Tài liệu cùng người dùng

Tài liệu liên quan