Danh mục

Bài giảng Chương 3: Các kỹ thuật xây dựng chương trình phần mềm (Phần 3) - TS. Vũ Thị Hương Giang

Số trang: 49      Loại file: pdf      Dung lượng: 993.64 KB      Lượt xem: 8      Lượt tải: 0    
tailieu_vip

Xem trước 5 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Phần 3 bài giảng "Chương 3: Các kỹ thuật xây dựng chương trình phần mềm" cung cấp cho người học các kiến thức phần "Các kỹ thuật xây dựng hàm/thủ tục" bao gồm các nội dung: Một số khái niệm thường gặp, nguyên tắc chung, các nguyên tắc tăng tốc độ, kỹ thuật chồng/đa năng hóa các hàm/toán tử. Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Chương 3: Các kỹ thuật xây dựng chương trình phần mềm (Phần 3) - TS. Vũ Thị Hương Giang• Với mỗi bài toán, làm thế nào để: – Thiết kế giải thuật nhằm giải quyết bài toán đó – Cài đặt giải thuật bằng một chương trình máy tính - Hãy làm cho chương trình chạy đúng trước khi tăng tính hiệu quả của chương trình - Hãy tăng tính hiệu quả của chương trình và đồng thời thể hiện tốt phong cách lập trình của cá nhânCHƯƠNG III.CÁC KỸ THUẬT XÂY DỰNGCHƯƠNG TRÌNH PHẦN MỀMI. Mở đầuII. Làm việc với biếnIII. Viết mã chương trình hiệu quảIV. Thiết kế chương trìnhV. Xây dựng hàm/thủ tụcV. CÁC KỸ THUẬT XÂYDỰNG HÀM/THỦ TỤC1. Một số khái niệm thường gặp2. Nguyên tắc chung3. Các quy tắc tăng tốc độ4. Kỹ thuật chồng/ đa năng hóa các hàm/toán tử1. Một số khái niệm thườnggặp• Biểu thức (expression): tính toán giá trị đích dựa trên giá trị nguồn• Lệnh gán (assigment): lưu trữ giá trị của biểu thức hoặc của biến nguồn vào trong 1 biến đícha. Hàm định nghĩa sẵn• Được định nghĩa trong các thư viện• Cần khai báo thư viện ở đầu chương trình để có thể dùng các hàm này• Ví dụ: trong thư viện cmath, hàm sqrt tính căn bậc hai của một số• the_root = sqrt(9.0); – 9.0 : tham số, cũng có thể là một biến hoặc là một biểu thức – the_root : biến lưu kết quả trả về (3.0) – sqrt(9.0) : lời gọi hàm (kích hoạt việc thực hiện hàm sqrt), cũng có thể được sử dụng như một biểu thứcbonus = sqrt(sales) / 10;cout b. Hàm do LTV định nghĩa• Khai báo hàm: – Chỉ ra cách thức gọi hàm – Phải khai báo trước khi gọi hàm – Cú pháp Kiểu_trả_về Tên_hàm (Kiểu_1 tên_tham_số_1,.., Kiểu_n tên_tham_số_n); Kiểu_trả_về Tên_hàm (Kiểu_1,.., Kiểu_n); //Chú thích: hàm dùng để làm gì• Ví dụ: khai báo hàm cho phép tính tổng chi phí theo công thức: tổng chi phí = số lượng hàng * giá mỗi mặt hàng + 5% thuế giá trị gia tăng double total_cost(int number_par, double price_par); double total_cost(int, double);b. Hàm do LTV định nghĩa• Định nghĩa hàm: – Chỉ ra cách thức thực hiện nhiệm vụ của hàm – Định nghĩa trước hoặc sau khi gọi hàm đều được – Cú pháp: Kiểu_trả_về Tên_hàm (Danh_sách_tham_số) { //code return kết_quả; }• Ví dụ: double total_cost(int number_par, double price_par) { const double TAX_RATE = 0.05; //5% tax double subtotal; subtotal = price_par * number_par; return (subtotal + subtotal * TAX_RATE); }c. Gọi hàm• Tên_hàm(tham_số_1, …, tham_số_n)• Giá trị được truyền vào các tham số của hàm sẽ được sử dụng trong phần thân hàm. – Pass by value: giá trị truyền vào là bản sao của giá trị lưu trữ trong biến đóng vai trò tham số đầu vào • Giá trị tham số không thay đổi khi được sử dụng trong thân hàm • Gọi hàm tham trị loại bỏ các thay đổi ngoài ý muốn lên các tham số – Pass by reference: giá trị truyền vào là địa chỉ của tham số đầu vào • Giá trị tham số có thể thay đổi khi được sử dụng trong thân hàm, do truyền biến gốc chứ không phải bản sao • Thay đổi giá trị của đối số trong hàm sẽ ảnh hưởng hoặc thay đổi trực tiếp lên biến gốc Ví dụvoid square_num (int *); Khai báo hàmint main(){ int p = 5; printf (P is now %d , p); square_num (&p); Truyền địa chỉ của p vào hàm square_num printf (P is now %d , p); Hàm thay đổi giá trị của p thành 25 return 0;}void square_num (int *num) Định nghĩa hàm, tham số vào là{ con trỏ num trỏ điến giá trị kiểu int (*num)= (*num) * (*num);} * biểu diễn giá trị mà con trỏ num trỏ đếnViết hàm để hoán đổi giá trịhai biến?void trao_doi(int so1, int so2) { int temp; temp = so1; so1 = so2; so2 = temp;}void sap_xep_mang(int *a, int n) { int i, j, temp; for (i=0; iViết hàm để hoán đổi giá trị hai biến?void trao_doi(int *so1, int *so2) { int temp; temp = *so1; *so1 = *so2; *so2 = temp;}void sap_xep_mang(int *a, int n) { int i, j; for (i=0; id. Biến tham chiếu trong C++• Cú pháp: – kieuDL &ten_bien;• Bí danh của biến khác – Thay đổi biến tham chiếu (bí danh) sẽ làm thay đổi giá trị của biến được tham chiếu• Ví dụ: – int count = 1; – int &ref = count; //ref là bí danh của count – ++ref; //tăng count lên 1,sử dụng bí danh refe. Tham số kiểu tham chiếu trong C++• Giống tham số được khai báo var trong Pascal• Thay đổi tham số kiểu tham chiếu (tham số hình thức) trong thân hàm sẽ làm thay đổi tham số thực khi truyền.void trao_doi(int &x, int &y) { int temp = x; x = y; y = temp;}• Gọi hàm: int a=5, b=8; trao_doi(a, b);• Với cách gọi hàm này, C++ tự gửi địa chỉ của a và b làm tham số cho hàm trao_doi().Ví dụ - Hàm tham chiếu#include int x ...

Tài liệu được xem nhiều: