KỸ THUẬT LẬP TRÌNH (p5)
lượt xem 17
download
Thủ tục (Procedures) và Hàm (functions) thể hiện hai dạng của chương tình con (subprograms) Cho phép lặp đi lặp lại một đoạn code hoặc một tính toán nhất định. Hàm/thủ tục có thể được gọi từ nhiều chỗ khác nhau trong chương trình. – Bằng cách thay thế một dãy các chỉ thị bởi một lệnh duy nhất (lệnh gọi hàm/thủ tục) sẽ giúp mã nguồn dễ đọc và dễ duyệt lỗi hơn.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: KỸ THUẬT LẬP TRÌNH (p5)
- KỸ THUẬT LẬP TRÌNH HÀM VÀ THỦ TỤC Thủ tục (Procedures) và Hàm (functions) thể hiện KỸ THUẬT PHÁT TRIỂN CHƯƠNG TRÌNH hai dạng của chương tình con (subprograms) NỘI DUNG Cho phép lặp đi lặp lại một đoạn code hoặc một tính toán nhất định. Hàm và Thủ tục Hàm/thủ tục có thể được gọi từ nhiều chỗ khác nhau Phát triển chương trình bằng phương pháp tinh trong chương trình. chỉnh dần từng bước. – Bằng cách thay thế một dãy các chỉ thị bởi một lệnh duy nhất Định nghĩa và sử dụng hàm trong ngôn ngữ C (lệnh gọi hàm/thủ tục) sẽ giúp mã nguồn dễ đọc và dễ duyệt lỗi hơn. Hàm/thủ tục đệ quy Hàm có kết quả trả về còn thủ tục thì không. 0 1 Vài điểm quan trọng về đối và tham biến của chương trình con: Đối số và Tham biến (Arguments and Parameters) Số lượng đối số hay tham số thực sự (arguments) nhất thiết phải Ví dụ bằng số tham biến (parameters) { Cộng num1 và num2 rồi ghi kết quả vào biến sum} Thứ tự là quan trọng. Đối số đầu tiên tương ứng với tham biến đầu Procedure Adder(num1 : real; num2 : real; var sum : real); tiên, đối số thứ k tương ứng với tham biến thứ k, … begin Kiểu dữ liệu của mỗi đối số phải tương thích với kiểu dữ liệu của tham biến tương ứng. sum := num1 + num2; Tên không quan trọng. Tên của đối số không nhất thiết phải giống end; với tên tham biến tương ứng của nó. Phạm vi của các biến: Phân biệt hai cách truyền dữ liệu cho hàm/thủ tục: truyền theo tham chiếu ( by reference ) hay truyền theo trị (by value) • biến cục bộ trong chương trình con • biến toàn cục 2 3
- Truyền theo tham chiếu: vị trí trong bộ nhớ (địa chỉ) Ưu điểm của các hàm/thủ tục của đối số được truyền cho chương trình con, cho phép • Chia tách và kiểm soát (“Chia để trị”) chương trình con truy nhập tới biến thực sự và thay đổi – Khả năng quản lý chương trình và phát triển nội dung của nó. • Khả năng sử dụng lại các hàm/thủ tục Truyền theo trị: giá trị của đối số được truyền cho – Sử dụng các hàm/thủ tục đã có sẵn, chạy ổn định để xây chương trình con, cho phép chương trình con truy nhập dựng các khối chương trình mới đến “bản sao” của biến. Truyền theo trị bảo toàn nội – Tính trừu tượng: che dấu các chi tiết bên trong hàm dung của biến ban đầu. – Tránh phải lặp lại một đoạn chương trình (code) 4 5 Các bước thực hiện phát triển chương trình Các bước thực hiện phát triển chương trình Hiểu rõ yêu cầu bài toán: có thể diễn đạt lại bài toán Hình thành ý tưởng về cách giải bài toán bằng ngôn ngữ đặc tả, các kí hiệu toán học hay các • Chương trình có thể được phân tách thành các quá trình rời công thức. rạc (các mô đun) như thế nào? • Mục tiêu chung của chương trình là gì? • Chương trình chính sẽ sử dụng các mô đun này như thế nào? Các mô đun giao tiếp với nhau như thế nào? • Chương trình cần dữ liệu vào là gì? • Những mô đun này có cần tách thành các phần chức năng nhỏ • Dữ liệu ra của chương trình là gì? sẽ như thế nào? kết xuất ra hơn? đâu? (màn hình, máy in, đĩa?) • Công thức tính hay cách xử lý thế nào để có kết quả (dữ liệu) ra? • Dữ liệu vào và ra nên ở định dạng nào? 6 7
- PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC Thiết kế thuật toán bằng phương pháp tinh chỉnh dần Chiến lược thiết kế từ trên xuống (top - down) từng bước. • Thiết kế giải thuật từ tổng thể đến chi tiết Cài đặt chương trình theo thuật toán • Module hoá bài toán – Chia bài toán (module chính) thành các module con cho đến khi • Viết chương trình chính (việc viết các mô đun như thế nào sẽ mỗi module con là một bài toán đã biết cách giải quyết hoàn thiện sau. Thay vào đó, có thể tạm đưa ra những lệnh giả định để chương trình có thể họat động. Điều này cho • “Chia để trị” phép thử nghiệm tính logic của chương trình chính). – Chia (Divide): Chia bài toán lớn, thành nhiều bài toán nhỏ • Cuối cùng, viết các mô đun. Kiểm nghiệm và duyệt lỗi từng mô – Trị (Conquer): Sử dụng thuật toán đệ quy để giải từng bài toán đun thật kỹ rồi trước khi đưa vào chương trình chính. Nếu mô nhỏ đun được phân tách thành nhiều tiến trình nhỏ hơn thì phải – Kết hợp (Combine): Tạo ra lời giải cho bài toán cuối cùng bằng viết mã (code) cho các tiến trình này trước, thử nghiệm và cách sử dụng thông tin từ kết quả giải các bài toán nhỏ. duyệt lỗi cẩn thận rồi mới ghép lại thành mô đun. 8 9 PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC Stepwise refinement Bài toán: Tìm các số có 2 chữ số mà khi đảo trật tự của hai số đó sẽ được một số nguyên tố cùng nhau với số Tinh thần: module hoá bài toán, thiết kế kiểu top-down đã cho. • Bước 0. Trình bày ý chính của giải thuật bằng ngôn ngữ tự Bước 0: nhiên. ? Làm cái gì? • Bước 1 trở đi: Chi tiết hoá dần những ý trong giải thuật, sử dụng nhiều ngôn ngữ giả code (giả mã − pseudo code) hơn. Kết quả cuối cùng của quá trình tinh chỉnh là chương trình viết trên ngôn ngữ lập trình đã chọn trước với cấu trúc dữ liệu dạng lưu trữ, cài đặt cụ thể. ? Làm như thế nào? 10 11
- PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC Bước 1. Bước 2. • Dữ liệu vào: Function Tim • Dữ liệu ra: • Vào: • Ý tưởng thuật toán: • Ra: mảng S và n – Tìm các số từ 10 đến 99 thoả mãn yêu cầu và ghi vào mảng S và n • Biến nguyên n lưu số lượng các số tìm được là số lượng các số tìm được. 1. n := 0; – Hiển thị kết quả từ mảng S. 2. Với mỗi số x trong [10..99], Kiểm tra xem x có số đảo là nguyên tố cùng nhau hay không, nếu đúng thì đưa x vào mảng S và n := n + 1; 12 13 PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC Bước 3. Hàm tìm số đảo Bước 4. Kiểm tra xem x và số đảo của nó có nguyên tố cùng nhau hay không • Function Sodao Function NTCN – Vào: x là số nguyên dương – Ra: Số đảo của x • Vào: x là số nguyên dương – Ý tưởng: Từ x, lần lượt lấy các chữ số từ bên phải của x để tạo số • Ra: True, nếu x và số đảo nguyên tố cùng nhau y từ trái sang phải. False, nếu ngược lại. 1. Khởi đầu y:=0 • Ý tưởng: x là nguyên tố cùng nhau với số đảo của x khi và chỉ 2. Với x> 0, lặp quá trình lấy chữ số hàng đơn vị của x bổ sung khi UCLN(x, Sodao(x)) = 1. vào bên phải y Tính y := y * 10 + (x mod 10) rồi x := x div 10 if UCLN(x, Sodao(x)) = 1 then Return True 3. Trả về số đảo là y else Return False; 14 15
- PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC Bước 6. Bước 5. Tìm UCLN của hai số nguyên dương: Thuật toán Euclid • Hàm tìm UCLN • Function UCLN Function UCLN(a,b: integer) : integer; • Vào: m, n nguyên (m >= n>= 0) Var r: integer; • Ra: UCLN là ước chung lớn nhất của m,n Begin • Biến r là số nguyên dương If m < n then Begin r := m; m := n; n := r; end; 1. Nếu m>n thì chuyển sang bước 2, ngược lại, hoán chuyển giá trị của m và n. While n > 0 do 2. Nếu n bằng 0 thì trả về UCLN = m và kết thúc thuật toán Begin r := m MOD n; Ngược lại, chuyển sang bước 4. m := n; n := r; 3. Tính r là phần dư của phép chia m cho n. end; 4. Gán giá trị của n cho m và của r cho n. Quay lại bước 2. UCLN := m; End; 16 17 PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC • Function Sodao(x: integer): integer; • Function NTCN (x: integer): Boolean; Var y: integer; Begin Begin If UCLN(x, Sodao(x)) = 1 then NTCN := True y := 0; Else NTCN := false; while x > 0 do End; begin y := 10*y + (x MOD 10); x := x DIV 10; end; Sodao := y; End; 18 19
- PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC • Function Tim(Var s: array[1..80] of integer):integer; Bước 7. Cài đặt chương trình theo thuật toán (Bài tập!) Var x, n: integer; Begin n := 0; for x := 10 to 99 do if NTCN(x) then begin n := n + 1; s[d] := x; end; Tim := n; end; 20 21 Bài tập Phát triển chương trình thực hiện các thao tác trên phân số: • Nhập vào phân số • Hiển thị phân số • Cộng, trừ hai phân số • Nhân, chia hai phân số 22
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo Trình Lập Trình Ứng Dụng CSDL Web ASP- P5
5 p | 315 | 158
-
C++ P5 : Mảng , con trỏ và tham chiếu
16 p | 255 | 66
-
Slide Java (P5)
30 p | 133 | 27
-
Giáo trình hình thành quy trình phân tích nguyên lý lập trình cơ bản với Androi p5
10 p | 56 | 8
-
Giáo trình phân tích khả năng sử dụng thuật toán hiệu chỉnh trong đường chạy lập trình p5
5 p | 79 | 5
-
Giáo trình phân tích ứng dụng nguyên lý thuật toán hiệu chỉnh trong đường chạy lập trình p5
5 p | 66 | 5
-
Giáo trình hình thành ứng dụng phân tích kỹ thuật lập trình trong access với PHP code p5
10 p | 72 | 4
-
Giáo trình hình thành ứng dụng phân tích cấu tạo và công dụng của máy in theo setup catridge p5
10 p | 53 | 4
-
Giáo trình hình thành quy trình điều khiển bằng ngôn ngữ visual basic trên java p5
10 p | 65 | 4
-
Giáo trình hình thành đối chiếu ứng dụng con trỏ tham chiếu tới các kiểu dữ liệu khác nhau p5
10 p | 65 | 4
-
Giáo trình hướng dẫn sử dụng thuật toán hiệu chỉnh trong phân phối các cặp đường chạy lập trình p5
5 p | 64 | 4
-
Giáo trình hình thành ứng dụng phân loại kỹ thuật tạo chuỗi dùng phương thức Peek qua lớp regex p5
10 p | 56 | 3
-
Giáo trình hình thành quy trình ứng dụng các cú pháp trên cùng một modun với các chương trình con p5
10 p | 43 | 3
-
Giáo trình hình thành ứng dụng điều khiển kiểu dữ liệu đa cấp trong ngôn ngữ lập trình p5
10 p | 41 | 3
-
Giáo trình hình thành phân mạng ứng dụng nguyên lý trong kỹ thuật Segment number p5
10 p | 55 | 3
-
Giáo trình hình thành hệ thống ứng dụng cấu tạo dữ liệu sơ cấp trong ngôn ngữ lập trình p5
10 p | 57 | 3
-
Giáo trình phân tích nguyên lý sử dụng kỹ thuật lập trình trong access với PHP code p5
5 p | 61 | 2
-
Giáo trình hình thành hệ phân giải ứng dụng cấu tạo giao thức địa chỉ ngược RARP p5
10 p | 59 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn