Phan1 gioithieu

37
1 LẬP TRÌNH CĂN BẢN GIỚI THIỆU VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

description

lap trinh can ban

Transcript of Phan1 gioithieu

Page 1: Phan1 gioithieu

1

LẬP TRÌNH CĂN BẢN

GIỚI THIỆU VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Page 2: Phan1 gioithieu

2

Nội dung chương

Từ bài toán đến chương trình Giải thuật

Khái niệm giải thuật Các đặc trưng của giải thuật Ngôn ngữ biểu diễn giải thuật Một số giải thuật cơ bản Các cấu trúc suy luận cơ bản của giải thuật Từ giải thuật đến chương trình

Kiểu dữ liệu Khái niệm về ngôn ngữ lập trình Chương trình dịch

Page 3: Phan1 gioithieu

Phần mềm, chương trình, câu Phần mềm, chương trình, câu lệnhlệnh

Software

Program 2

Program 1

Comman

ds

Comman

ds

Comman

ds

Page 4: Phan1 gioithieu

4

Từ Bài Toán Đến Chương Trình

Các bước giải bài toán bằng máy tính Mô tả các bước giải bài toán Vẽ sơ đồ xử lý Viết chương trình xử lý bằng ngôn ngữ giả Chọn ngôn ngữ lập trình và chuyển chương trình

từ ngôn ngữ giả sang ngôn ngữ lập trình Thực hiện chương trình: nhập vào các tham số,

nhận kết quả

Page 5: Phan1 gioithieu

5

Giải Thuật

Khái niệm giải thuật Các đặc trưng của giải thuật Ngôn ngữ biểu diễn giải thuật Một số giải thuật cơ bản Các cấu trúc suy luận cơ bản của giải thuật Từ giải thuật đến chương trình

Page 6: Phan1 gioithieu

6

Khái Niệm Giải Thuật

Ví dụ: Hoán đổi chất lỏng trong 2 bình A (rượu) và B (nước mắm): Yêu cầu phải có thêm một bình thứ ba gọi là bình C. Bước 1: Đổ rượu từ bình A sang bình C. Bước 2: Đổ nước mắm từ bình B sang bình A. Bước 3: Đổ rượu từ bình C sang bình B.

“Giải thuật là một dãy các thao tác trên những dữ liệu vào sao cho sau một hữu hạn bước ta thu được kết quả của bài toán ”.

Page 7: Phan1 gioithieu

7

Các Đặc Trưng Của Giải Thuật

Tính kết thúc Số bước là hữu hạn

Tính xác định Máy phải thực hiện được Cho cùng kết quả trên các máy khác nhau

Tính phổ dụng Tính hiệu quả

Thời gian Tài nguyên máy

Page 8: Phan1 gioithieu

8

Ngôn Ngữ Biểu Diễn Giải Thuật

Ngôn ngữ tự nhiên Ngôn ngữ giả Ngôn ngữ sơ đồ

Page 9: Phan1 gioithieu

9

Ngôn Ngữ Tự Nhiên

Là ngôn ngữ của chúng ta (tiếng Anh, Việt…) Ví dụ: Giải thuật giải phương trình bậc nhất ax+b=0.

Bước 1: Nhận giá trị của các tham số a, b.

Bước 2: Xét giá trị của a xem có bằng 0 hay không?

Nếu a=0 thì làm bước 3, nếu a khác không thì làm bước 4.

Bước 3: (a bằng 0) Nếu b bằng 0 t=> pt vô số nghiệm. Nếu b khác 0 => pt vô nghiệm.

Bước 4: ( a khác 0) Ta kết luận phương trình có nghiệm x=-b/a.

Page 10: Phan1 gioithieu

10

Ngôn Ngữ Giả Là một sự kết hợp giữa ngôn ngữ tự nhiên với các cấu trúc

câu lệnh của một ngôn ngữ lập trình.

Ví dụ: Giải thuật giải phương trình bậc nhất ax+b=0.BEGIN Nhập vào a, b If a==0 then

If b==0 then Kết luận phương trình vô số nghiệm

else Kết luận phương trình vô nghiệm

End If else

Kết luận phương trình có nghiệm x=-b/a End IfEND

Page 11: Phan1 gioithieu

11

Ngôn ngữ sơ đồ - Ngôn ngữ sơ đồ - Lưu đồ (Flowcharts)Lưu đồ (Flowcharts)

Lưu đồ là một hình ảnh minh hoạ cho giải thuật

START

DISPLAY ‘Hello World !’

STOP

Page 12: Phan1 gioithieu

12

Biểu tượng trong lưu đồ Biểu tượng trong lưu đồ

Page 13: Phan1 gioithieu

13

Lưu đồ cộng hai sốLưu đồ cộng hai số

Page 14: Phan1 gioithieu

14

Cấu trúc IFCấu trúc IF

BEGININPUT numr = num MOD 2IF r=0

Display “Number is even”END IFEND

S TART

INP UT num

r = num M OD 2

r = 0

DIS P LAY "Num ber is E ven"

S TOP

YesNo

Page 15: Phan1 gioithieu

15

Cấu trúc IF…ELSECấu trúc IF…ELSE

BEGININPUT numr=num MOD 2IF r=0 DISPLAY “Even Number”ELSE DISPLAY “Odd Number”END IFEND

S TA RT

INP UT num

r = num M O D 2

r = 0

DIS P LAY "Num ber is E ven"

S TOP

DIS PLA Y " Num ber is O dd"

Yes No

Page 16: Phan1 gioithieu

16

Ða điều kiện sử dụng Ða điều kiện sử dụng AND/ORAND/OR

BEGININPUT yearsWithUsINPUT bizDoneIF yearsWithUs >= 10 AND bizDone >=5000000

DISPLAY “Classified as an MVS”ELSE

DISPLAY “A little more effort required!”END IFEND

Page 17: Phan1 gioithieu

17

Cấu trúc IF lồng nhauCấu trúc IF lồng nhau

BEGININPUT yearsWithUsINPUT bizDoneIF yearsWithUs >= 10

IF bizDone >=5000000DISPLAY “Classified as an MVS”

ELSE DISPLAY “A little more effort required!”

END IFELSE

DISPLAY “A little more effort required!”END IFEND

Page 18: Phan1 gioithieu

18

Cấu trúc IF lồng nhauCấu trúc IF lồng nhau (tt.) (tt.)START

INPUT bizDone

YearsWithUs >= 10

bizDone > 5000000

DISPLAY “A Little more effort required”

STOP

NOYES

NO

YES

DISPLAY “A Little more effort required”

DISPLAY “Classified as an MVS”

INPUT YearsWithUs

Page 19: Phan1 gioithieu

19

Vòng lặpVòng lặp

BEGINcnt=0WHILE (cnt < 1000) DO

DISPLAY “Scooby”cnt=cnt+1

END DOEND

S TA RT

cnt=0

cnt < 1000

DIS PLA Y " Sc ooby "

cnt=c nt+1

S TOP

Yes

No

Page 20: Phan1 gioithieu

20

Phương pháp chạy thử bằng tay (dry run)

Là cách kiểm tra sự đúng đắn của thuật toán bằng tay

Page 21: Phan1 gioithieu

21

Phương pháp chạy thử bằng tay (Ví dụ)Bước 1. Bắt đầuBước 2. X=10Bước 3. Y=5Bước 4. M=0Bước 5. M=X+Y+(X*Y)Bước 6. Y=Y+4Bước 7. M=M+YBước 8. Hiển thị X,Y,MBước 9. Dừng

DRY RUN TABLE

X Y M Initial values 10 5 0 After Step 5 10 5 65 After Step 6 10 9 65 After Step 7 10 9 74

Page 22: Phan1 gioithieu

22

Lưu đồ - Ví dụ

Ví dụ: Lưu đồ biểu diễn giải thuật tìm UCLN như sau:

Page 23: Phan1 gioithieu

23

Một Số Giải Thuật Cơ Bản (1)

Ví dụ 1: Yêu cầu: Nhập vào 1 dãy n số

hạng a1, a2, .., an

Tính tổng S: S= a1 + a2 + a3 + ... + an

In S ra màn hình

Page 24: Phan1 gioithieu

24

Một Số Giải Thuật Cơ Bản (2)

Ví dụ 2: Yêu cầu: Nhập vào 2 số a và b là

2 hệ số của pt: ax+b=0 Cho biết nghiệm của

phương trình.

Page 25: Phan1 gioithieu

25

Các Cấu Trúc Suy Luận Cơ Bản Của Giải Thuật (1) Giải thuật được thiết kế theo 3 cấu trúc suy luận cơ bản:

Tuần tự (Sequential): Các công việc được thực hiện tuần tự, công việc này nối tiếp

công việc kia.

Cấu trúc lựa chọn (Selection) Lựa chọn một công việc để thực hiện căn cứ vào một điều kiện

nào đó Cấu trúc 1: Nếu < điều kiện> (đúng) thì thực hiện <công việc> Cấu trúc 2: Nếu < điều kiện> (đúng) thì thực hiện <công việc 1>,

ngược lại (điều kiện sai) thì thực hiện <công việc 2> Cấu trúc 3: Trường hợp < i> thực hiện <công việc i>

Page 26: Phan1 gioithieu

26

Các Cấu Trúc Suy Luận Cơ Bản Của Giải Thuật (2)

Cấu trúc lặp (Repeating) Lặp lại thực hiện một công việc không hoặc nhiều

lần căn cứ vào một điều kiện nào đó. Có 2 dạng như sau:

Lặp với số lần xác định Lặp với số lần không xác định

Page 27: Phan1 gioithieu

27

Từ Giải Thuật Đến Chương Trình

Cả 2 đều là tập các chỉ thị (instruction) – làm thế nào để giải quyết 1 công việc (task).

Giải thuật Nói chuyện với con người, dễ hiểu. Dùng ngôn ngữ đơn giản (English…) – không viết

bằng mã. Chương trình

Nói chuyện với máy tính. Có thể được xem như 1 diễn tả hình thức (formal

expression) của 1 giải thuật.

Page 28: Phan1 gioithieu

28

Kiểu Dữ Liệu Ví dụ:

Dim x As Integer, y As IntegerDim f As Single

F=3.14

“Kiểu dữ liệu là một tập hợp các giá trị có cùng một tính chất và tập hợp các phép toán thao tác trên các giá trị đó”.

Có 2 loại Kiểu dữ liệu sơ cấp Kiểu dữ liệu có cấu trúc

Page 29: Phan1 gioithieu

29

Kiểu Dữ Liệu Sơ Cấp

“Kiểu dữ liệu sơ cấp là kiểu dữ liệu mà giá trị của nó là đơn nhất”.

Ví dụ: Kiểu Integer trong Basic là kiểu sơ cấp gồm các số nguyên từ -32768..32767 và các phép toán: +, -, *, /, \, Mod…

Page 30: Phan1 gioithieu

30

Kiểu Dữ Liệu Có Cấu Trúc

“Kiểu dữ liệu có cấu trúc là kiểu dữ liệu mà các giá trị của nó là sự kết hợp của các giá trị khác”.

Ví dụ : Kiểu chuỗi ký tự trong Basic. là kiểu có cấu trúc. Ví dụ: Dim s As String

s = “Chao cac ban!”

Page 31: Phan1 gioithieu

31

Ngôn Ngữ Lập Trình

Khái niệm về ngôn ngữ lập trình Chương trình dịch

Page 32: Phan1 gioithieu

32

Khái Niệm Về Ngôn Ngữ Lập Trình

Ngôn ngữ lập trình là một ngôn ngữ dùng để viết chương trình cho máy tính

Ta có thể chia ngôn ngữ lập trình thành các loại sau: Ngôn ngữ máy Hợp ngữ Ngôn ngữ cấp cao

Page 33: Phan1 gioithieu

33

Ngôn Ngữ Máy (machine language) Là các chỉ thị dưới dạng

nhị phân, can thiệp trực tiếp vào trong các mạch điện tử.

Có thể được thực hiện ngay không cần qua bước trung gian nào.

Tuy nhiên chương trình viết bằng ngôn ngữ máy dễ sai sót, cồng kềnh và khó đọc, khó hiểu vì toàn những con số 0 và 1.

3

Machine Language

10100110 0111011000100110 0000000011111010 1111101001001110 1010011011100110 1001011011001110 0010111010100110 0100111011111010 0110011001001110 10000110

etc...

Page 34: Phan1 gioithieu

34

Hợp Ngữ (Assembly language) Bao gồm tên các câu lệnh và

quy tắc viết các câu lệnh đó. Tên các câu lệnh bao gồm hai

phần: Phần mã lệnh (English) chỉ

phép toán cần thực hiện Phần địa chỉ chứa toán hạng

của phép toán đó.

Để máy thực hiện được một chương trình viết bằng hợp ngữ thì chương trình đó phải được dịch sang ngôn ngữ máy. Công cụ thực hiện việc dịch đó được gọi là Assembler.

Assembly Language

INPUT a ; Nhập giá trị cho a từ bàn phím LOAD a ; Đọc giá trị a vào thanh ghi tổng A PRINT a; Hiển thị giá trị của a ra màn hình. INPUT b ADD b ; Cộng giá trị của thanh ghi tổng A ;với giá trị b

Page 35: Phan1 gioithieu

35

Ngôn Ngữ Cấp Cao (High level language ) Rất gần với ngôn ngữ con người.

Một chương trình viết bằng ngôn ngữ cấp cao được gọi là chương trình nguồn (source programs).

Để máy tính "hiểu" và thực hiện được các lệnh trong chương trình nguồn thì phải có một chương trình dịch để dịch chương trình nguồn thành dạng chương trình có khả năng thực thi.

Page 36: Phan1 gioithieu

36

Chương Trình Dịch

Được dùng để chuyển một chương trình nguồn sang chương trình đích.

Có 2 dạng: Thông dịch (interpreter):

Dịch từng lệnh một, dịch tới đâu thực hiện tới đó. Ví dụ: ngôn ngữ LISP, BASIC.

Biên dịch (compiler): Dịch toàn bộ chương trình nguồn thành chương trình

đích rồi sau đó mới thực hiện. Ví dụ: Pascal, C...

Page 37: Phan1 gioithieu

37

Hết chương