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

KỸ THUẬT LẬP TRÌNH (p5) pptx

6 199 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 336,58 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

KỸ THUẬT LẬP TRÌNH KỸ THUẬT PHÁT TRIỂN CHƯƠNG TRÌNH NỘI DUNG ƒ Định nghĩa và sử dụng hàm trong ngôn ngữ C 1 HÀM VÀ THỦ TỤC ƒ Thủ tục Procedures và Hàm functions thể hiện hai dạng của ch

Trang 1

KỸ THUẬT LẬP TRÌNH

KỸ THUẬT PHÁT TRIỂN CHƯƠNG TRÌNH

NỘI DUNG

ƒ Định nghĩa và sử dụng hàm trong ngôn ngữ C

1

HÀM VÀ THỦ TỤC

ƒ 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

ƒ Hàm có kết quả trả về còn thủ tục thì không.

ƒ Đối số và Tham biến (Arguments and Parameters)

ƒ Ví dụ

{ Cộng num1 và num2 rồi ghi kết quả vào biến sum}

Procedure Adder(num1 : real; num2 : real; var sum : real);

begin

sum := num1 + num2;

end;

ƒ Phạm vi của các biến:

• biến cục bộ trong chương trình con

Vài điểm quan trọng về đối và tham biến của chương trình con:

ƒ Số lượng đối số hay tham số thực sự (arguments) nhất thiết phải bằng số tham biến (parameters)

ƒ Thứ tự là quan trọng Đối số đầu tiên tương ứng với tham biến đầu tiên, đối số thứ k tương ứng với tham biến thứ k, …

ƒ 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

ƒ Tên không quan trọng Tên của đối số không nhất thiết phải giống với tên tham biến tương ứng của 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)

Trang 2

ƒ Truy ền theo tham chiếu: vị trí trong bộ nhớ (địa chỉ)

của đối số được truyền cho chương trình con, cho phép

chương trình con truy nhập tới biến thực sự và thay đổi

nội dung của nó.

ƒ Truyền theo trị: giá tr ị của đối số được truyền cho

chương trình con, cho phép chương trình con truy nhập

đến “bản sao” của biến Truyền theo trị bảo toàn nội

dung của biến ban đầu

5

ƒ Ưu điểm của các hàm/thủ tục

• Chia tách và kiểm soát (“Chia để trị”)

–Khả năng quản lý chương trình và phát triển

• Khả năng sử dụng lại các hàm/thủ tục

–Sử dụng các hàm/thủ tục đã có sẵn, chạy ổn định để xây dựng các khối chương trình mới

–Tính trừu tượng: che dấu các chi tiết bên trong hàm

–Tránh phải lặp lại một đoạn chương trình (code)

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

bằng ngôn ngữ đặc tả, các kí hiệu toán học hay các

công thức.

• Mục tiêu chung của chương trình là gì?

• Chương trình cần dữ liệu vào là gì?

• Dữ liệu ra của chương trình là gì? sẽ như thế nào? kết xuất ra

đâ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?

Các bước thực hiện phát triển chương trình

ƒ Hình thành ý tưởng về cách giải bài toán

• Chương trình có thể được phân tách thành các quá trình rời rạc (các mô đun) như thế nào?

Các mô đun giao tiếp với nhau như thế nào?

hơn?

Trang 3

ƒ Thiết kế thuật toán bằng phương pháp tinh chỉnh dần

từng bước.

ƒ Cài đặt chương trình theo thuật toán

• Viết chương trình chính (việc viết các mô đun như thế nào sẽ

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

phép thử nghiệm tính logic của chương trình chính)

• Cuối cùng, viết các mô đun Kiểm nghiệm và duyệt lỗi từng mô

đun thật kỹ rồi trước khi đưa vào chương trình chính Nếu mô

đun được phân tách thành nhiều tiến trình nhỏ hơn thì phải

viết mã (code) cho các tiến trình này trước, thử nghiệm và

duyệt lỗi cẩn thận rồi mới ghép lại thành mô đun

9

PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

ƒ Chiến lược thiết kế từ trên xuống (top - down)

• Thiết kế giải thuật từ tổng thể đến chi tiết

• Module hoá bài toán

– Chia bài toán (module chính) thành các module con cho đến khi mỗi module con là một bài toán đã biết cách giải quyết

• “Chia để trị”

– Chia (Divide): Chia bài toán lớn, thành nhiều bài toán nhỏ

– Trị (Conquer): Sử dụng thuật toán đệ quy để giải từng bài toán nhỏ

– Kết hợp (Combine): Tạo ra lời giải cho bài toán cuối cùng bằng cách sử dụng thông tin từ kết quả giải các bài toán nhỏ

PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

ƒ Stepwise refinement

ƒ Tinh thần: module hoá bài toán, thiết kế kiểu top-down

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ử

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?

PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

ƒ 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ố

đã cho

ƒ Bước 0:

Trang 4

PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

ƒ Bước 1

• Dữ liệu vào:

• Dữ liệu ra:

• Ý tưởng thuật toá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

là số lượng các số tìm được.

Hiển thị kết quả từ mảng S.

13

PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

ƒ Bước 2.

ƒ Function Tim

• Vào:

Biến nguyên n lưu số lượng các số tìm được

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;

PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

ƒ Bước 3 Hàm tìm số đảo

Vào: x là số nguyên dương

Ra: Số đảo của x

Ý 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ố

y từ trái sang phải.

1 Khởi đầu y:=0

2 Với x> 0, lặp quá trình lấy chữ số hàng đơn vị của x bổ sung

vào bên phải y

Tính y := y * 10 + (x mod 10) rồi x := x div 10

3 Trả về số đảo là y

PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

ƒ 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 NTCN

False, nếu ngược lại

Ý tưởng: x là nguyên tố cùng nhau với số đảo của x khi và chỉ khi UCLN(x, Sodao(x)) = 1.

if UCLN(x, Sodao(x)) = 1 then Return True else Return False;

Trang 5

PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

Function UCLN

Vào: m, n nguyên (m >= n>= 0)

Ra: UCLN là ước chung lớn nhất của m,n

Biến r là số nguyên dương

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.

2 Nếu n bằng 0 thì trả về UCLN = m và kết thúc thuật toán

Ngược lại, chuyển sang bước 4.

3 Tính r là phần dư của phép chia m cho n.

4 Gán giá trị của n cho m và của r cho n Quay lại bước 2.

17

PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

ƒ Bước 6.

Function UCLN(a,b: integer) : integer;

Var r: integer;

Begin

If m < n then

Begin r := m; m := n; n := r; end;

While n > 0 do

Begin

r := m MOD n;

m := n; n := r;

end;

UCLN := m;

End;

PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

Function Sodao(x: integer): integer;

Var y: integer;

Begin

y := 0;

while x > 0 do begin

y := 10*y + (x MOD 10);

x := x DIV 10;

end;

Sodao := y;

PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

Function NTCN (x: integer): Boolean;

Begin

If UCLN(x, Sodao(x)) = 1 then NTCN := True Else NTCN := false;

End;

Trang 6

PHƯƠNG PHÁP TINH CHỈNH TỪNG BƯỚC

Function Tim(Var s: array[1 80] of integer):integer;

Var x, n: integer;

Begin

n := 0;

for x := 10 to 99 do

if NTCN(x) then

s[d] := x;

end;

Tim := n;

end;

21

ƒ Bước 7 Cài đặt chương trình theo thuật toán (Bài tập!)

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ố:

• Hiển thị phân số

• Cộng, trừ hai phân số

• Nhân, chia hai phân số

Ngày đăng: 02/08/2014, 15:20

TỪ KHÓA LIÊN QUAN