Máy tính số - Chương 1: Phương pháp giải quyết bài toán bằng máy tính số
Bạn đang xem tài liệu "Máy tính số - Chương 1: Phương pháp giải quyết bài toán bằng máy tính số", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- may_tinh_so_chuong_1_phuong_phap_giai_quyet_bai_toan_bang_ma.pdf
Nội dung text: Máy tính số - Chương 1: Phương pháp giải quyết bài toán bằng máy tính số
- MÔN TIN HỌC Đốitượng : SV đạihọc chính quy toàn trường Nội dung chính gồm 12 chương : 1. Phương pháp giải quyết bài toán 7. Biểuthức VB. bằng máy tính số. 8. Các lệnh thực thi VB. 2. Thể hiện dữ liệu trong máy tính số. 9. Định nghĩathủ tục& sử dụng. 3. Tổng quát về lậptrìnhbằng VB. 10. Tương tác giữangười dùng & 4. Qui trình thiếtkế trực quan giao chương trình. diện. 11. Quảnlýhệ thống file. 5. Các kiểudữ liệucủa VB. 12. Linh kiệnphầnmềm& truy 6. Các lệnh định nghĩa & khai báo. xuất database. Tài liệuthamkhảo: Tập slide bài giảng & thực hành củamônhọcnày. 3 CD MSDN trong Microsoft Visual Studio. Môn : Tin học Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Slide 1 MÔN TIN HỌC Chương 1 PHƯƠNG PHÁP GIẢI QUYẾT BÀI TOÁN BẰNG MÁY TÍNH SỐ 1.1 Các khái niệm cơ bản về máy tính số 1.2 Lịch sử phát triển máy tính số 1.3 Dữ liệu & chương trình 1.4 Qui trình tổng quát giải quyết bài toán bằng máy tính số 1.5 Phân tích bài toán từ-trên-xuống Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 2 1
- 1.1 Các khái niệm cơ bản về máy tính số Con người thông minh hơn các động vật khác nhiều. Trong cuộc sống, họ đã chế tạo ngày càng nhiều công cụ, thiết bị để hỗ trợ mình trong hoạt động. Các công cụ, thiết bị do con người chế tạo ngày càng tinh vi, phức tạp và thực hiện nhiều công việc hơn trước đây. Mỗi công cụ, thiết bị thường chỉ thực hiện được 1 vài công việc cụ thể nào đó. Thí dụ, cây chổi để quét, radio để bắt và nghe đài audio Máy tính số (digital computer) cũng là 1 thiết bị, nhưng thay vì chỉ thực hiện 1 số chức năng cụ thể, sát với nhu cầu đời thường của con người, nó có thể thực hiện 1 số hữu hạn các chức năng cơ bản (tập lệnh), mỗi lệnh rất sơ khai chưa giải quyết trực tiếp được nhu cầu đời thường nào của con người. Cơ chế thực hiện các lệnh là tự động, bắt đầu từ lệnh được chỉ định nào đórồi tuần tự từng lệnh kế tiếp cho đến lệnh cuối cùng. Danh sách các lệnh được thực hiện này được gọi là chương trình. Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 3 Các khái niệm cơ bản về máy tính số Các lệnh mà máy hiểu và thực hiện được được gọi là lệnh máy. Ta dùng ngôn ngữ để miêu tả các lệnh. Ngôn ngữ lập trình cấu thành từ 2 yếu tố chính yếu : cú pháp và ngữ nghĩa. Cú pháp qui định trật tự kết hợp các phần tử để cấu thành 1 lệnh (câu), còn ngữ nghĩa cho biết ý nghĩa của lệnh đó. Bất kỳ công việc (bài toán) ngoài đời nào cũng có thể được chia thành trình tự nhiều công việc nhỏ hơn. Trình tự các công việc nhỏ này được gọi là giải thuật giải quyết công việc ngoài đời. Mỗi công việc nhỏ hơn cũng có thể được chia nhỏ hơn nữa nếu nó còn phức tạp, ⇒ công việc ngoài đời có thể được miêu tả bằng 1 trình tự các lệnh máy (chương trình ngôn ngữ máy). Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 4 2
- Các khái niệm cơ bản về máy tính số Vấn đề mấu chốt của việc dùng máy tính giải quyết công việc ngoài đời là lập trình (được hiểu nôm na là qui trình xác định trình tự đúng các lệnh máy để thực hiện công việc). Cho đến nay, lập trình là công việc của con người (với sự trợ giúp ngày càng nhiều của máy tính). Với công nghệ phần cứng hiện nay, ta chỉ có thể chế tạo các máy tính mà tập lệnh máy rất sơ khai, mỗi lệnh máy chỉ có thể thực hiện 1 công việc rất nhỏ và đơn giản ⇒ công việc ngoài đời thường tương đương với trình tự rất lớn (hàng triệu) các lệnh máy ⇒ Lập trình bằng ngôn ngữ máy rất phức tạp, tốn nhiều thời gian, công sức, kết quả rất khó bảo trì, phát triển. Ta muốn có máy luận lý với tập lệnh (được đặc tả bởi ngôn ngữ lập trình) cao cấp và gần gủi hơn với con người. Ta thường hiện thực máy này bằng 1 máy vật lý + 1 chương trình dịch. Có 2 loại chương trình dịch : trình biên dịch (compiler) và trình thông dịch (interpreter). Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 5 Trình biên dịch (Compiler) Chương trình biên dịch nhận một chương trình nguồn (thường được viết bằng ngôn ngữ cấp cao) và tạo ra một chương trình đối tượng tương ứng về chức năng nhưng thường được viết bằng ngôn ngữ cấp thấp (thường là ngôn ngữ máy). Nếu có lỗi xảy ra trong lúc dịch, trình biên dịch sẽ báo lỗi, cố gắng tìm vị trí đúng kế tiếp rồi tiếp tục dịch Nhờ vậy, mỗi lần dịch 1 chương trình, ta sẽ xác định được nhiều lỗi nhất có thể có. Sau mỗi lần dịch, nếu không có lỗi, trình biên dịch sẽ tạo ra file chứa chương trình đối tượng (thí dụ file chương trình khả thi *.exe trên Windows). Để chạy chương trình, người dùng chỉ cần kích hoạt file khả thi (người dùng không biết và không cần quan tâm đến file chương trình nguồn). Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 6 3
- Trình thông dịch (Interpreter) Chương trình thông dịch không tạo ra và lưu giữ chương trình đối tượng. Mỗi lần thông dịch 1 chương trình nguồn là 1 lần cố gắng chạy chương trình này theo cách thức sau : dịch và chuyển sang mã thực thi từng lệnh một rồi nhờ máy chạy đoạn lệnh tương ứng. Nếu có lỗi thì báo lỗi, nếu không có lỗi thì thông dịch lệnh kế tiếp cho đến khi hết chương trình. Như vậy, mỗi lần thông dịch chương trình, trình thông dịch chỉ thông dịch các lệnh trong luồng thi hành cần thiết chứ không thông dịch hết mọi lệnh của chương trình nguồn. Do đó, sau khi thông dịch thành công 1 chương trình, ta không thể kết luận rằng chương trình này không có lỗi. Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 7 So sánh trình biên dịch & trình thông dịch Mọi hoạt động xử lý trên mọi mã nguồn của chương trình (kiểm tra lỗi, dịch ra các lệnh đối tượng tương đương, ) đều được chương trình biên dịch thực hiện để tạo được chương trình đối tượng. Do đó sau khi dịch các file mã nguồn của chương trình, nếu không có lỗi, ta có thể kết luận chương trình không thể có lỗi thời điểm dịch (từ vựng, cú pháp). Quá trình biên dịch và quá trình thực thi chương trình là tách rời nhau : biên dịch 1 lần và chạy nhiều lần cho đến khi cần cập nhật version mới của chương trình. Chương trình thông dịch sẽ thông dịch từng lệnh theo luồng thi hành của chương trình bắt đầu từ điểm nhập của chương trình, thông dịch 1 lệnh gồm 2 hoạt động : biên dịch lệnh đóvàthực thi các lệnh kết quả. Nếu 1 đoạn lệnh cần được thực thi lặp lại thì trình thông dịch sẽ phải thông dịch lại tất cả đoạn lệnh đó. Điều này sẽ làm cho việc chạy chương trình trong chế độ thông dịch không hiệu quả. Việc chạy chương trình bằng cơ chế thông dịch đòi hỏi chương trình thông dịch và chương trình ứng dụng cần chạy phải tồn tại đồng thời trong bộ nhớ máy tính, do đó có nguy cơ chạy không được các chương trình lớn nếu tài nguyên của máy không đủ cho cả 2 chương trình thông dịch và chương trình ứng dụng. Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 8 4
- Các khái niệm cơ bản về máy tính số Gọi ngôn ngữ máy vậtlýlàN0. Trình biên dịch ngôn ngữ N1 sang ngôn ngữ N0 sẽ nhận đầuvàolàchương trình đượcviếtbằng ngôn ngữ N1, phân tích từng lệnh N1 rồi chuyển thành danh sách các lệnh ngôn ngữ N0 có chứcnăng tương đương. Để viếtchương trình dịch từ ngôn ngữ N1 sang N0 dễ dàng, độ phứctạpcủatừng lệnh ngôn ngữ N1 không quá cao so vớitừng lệnh ngôn ngữ N0. Sau khi có máy luậnlýhiểu được ngôn ngữ luậnlýN1, ta có thểđịnh nghĩavàhiệnthựcmáyluậnlýN2 theo cách trên và tiếptục đếnkhita có 1 máy luậnlýhiểu được ngôn ngữ Nm rấtgầngũi với con người, dễ dàng miêu tả giảithuậtcủa bài toán cầngiải quyết Nhưng qui trình trên chưacóđiểmdừng, vớiyêucầu ngày càng cao và kiếnthức ngày càng nhiều, ngườitatiếptục định nghĩanhững ngôn ngữ mớivớitậplệnh ngày càng gầngũi hơnvới con người để miêu tả giảithuật càng dễ dàng, gọnnhẹ và trong sáng hơn. Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 9 Các cấp độ ngôn ngữ lập trình Ngôn ngữ máy vật lý là loại ngôn ngữ thấp nhất mà người lập trình bình thường có thể dùng được. Các lệnh và tham số của lệnh được miêu tả bởi các số binary (hay hexadecimal - sẽ được miêu tả chi tiết trong chương 2). Đây là loại ngôn ngữ mà máy vật lý có thể hiểu trực tiếp, nhưng con người thì gặp nhiều khó khăn trong việc viết và bảo trì chương trình ở cấp này. Ngôn ngữ assembly rất gần với ngôn ngữ máy, những lệnh cơ bản nhất của ngôn ngữ assembly tương ứng với lệnh máy nhưng được biểu diễn dưới dạng gợi nhớ. Ngoài ra, người ta tăng cường thêm khái niệm "lệnh macro" để nâng sức mạnh miêu tả giải thuật. Ngôn ngữ cấp cao theo trường phái lập trình cấu trúc như Pascal, C, Tập lệnh của ngôn ngữ này khá mạnh và gần với tư duy của người bình thường. Ngôn ngữ hướng đối tượng như C++, Visual Basic, Java, C#, cải tiến phương pháp cấu trúc chương trình sao cho trong sáng, ổn định, dễ phát triển và thay thế linh kiện. Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 10 5
- 1.2 Lịch sử phát triển máy tính số Máy tính xuất hiện từ rất lâu theo nhu cầu buôn bán và trao đổi tiền tệ. Bàn tính tay abacus là dạng sơ khai của máy tính. 5 đơn vị 1 đơn vị Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 11 Các thế hệ máy tính số Blaise Pascal (Pháp-1642) ENIAC (1946) Intel 8080 (1974) Charles Babbage (Anh-1830) 18.000 bóng đèn được xem như CPU đầu 1500 rờ le tiên được tích hợp trên 1 30 tấn chip 140 KW IBM 360 (1965) Von Neumann (1945) PDP-1 (1961) Cơ Đèn điện tử 80x86 (1978) Transistors IC ? (1642 - 1945) (1945 - 1955) (1955 - 1965) (1965 - 1980) (1980 - ????) Herman Hollerith lập IBM Bộ nhớ dây trễ, tĩnh Bộ nhớ xuyến từ. (International Business điện. Giấy, phiếu đục Băng từ, trống từ, Machine) ở Mỹ - 1890 lổ. Băng từ đĩa từ. Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 12 6
- 1.3 Dữ liệu & chương trình Các lệnh của chương trình (code) sẽ truy xuất (đọc và/hoặc ghi) thông tin (dữ liệu). Chương trình giải quyết bài toán nào đócóthể truy xuất nhiều dữ liệu khác nhau với tính chất rất đa dạng. Để truy xuất 1 dữ liệu cụ thể, ta cần 3 thông tin về dữ liệu đó: - tên nhận dạng (identifier) xác định vị trí của dữ liệu. - kiểu dữ liệu (type) miêu tả cấu trúc của dữ liệu. - tầm vực truy xuất (visibility) xác định các lệnh được phép truy xuất dữ liệu tương ứng. Chương trình cổ điển = dữ liệu + giải thuật. Chương trình con (function, subroutine, ) là 1 đoạn code thực hiện chức năng được dùng nhiều lần ở nhiều vị trí trong chương trình, được nhận dạng thông qua 1 tên gọi. Chương trình con cho phép cấu trúc chương trình, sử dụng lại code Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 13 Cấu trúc 1 chương trình cổ điển Chương trình = cấu trúc dữ liệu + giải thuật module global data (package) local data entry 'start' of module local data of function Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 14 7
- 1.4 Qui trình tổng quát giải quyết bài toán bằng máy tính số Dữ liệu cần xử lý bằng Kết quả có được sau máy tính (chữ số, hình khi xử lý bằng máy tính ảnh, âm thanh, ) (chữ số, hình ảnh, âm thanh, ) CDROM, đĩa, băng, Giải mã chuỗi Mã hóa dữ liệu Lưu giữ dữ liệu bit ra dạng thành dạng số để dùng lại người, thiết bị chuỗi bit ngoài hiểu được Xử lý dữ liệu dạng chuỗi bit Máy tính số Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 15 Mô hình máy tính số Von Neumann chứa code và data thực thi từng lệnh giao tiếp với bên ngoài đang thực thi của chương trình (thường là người) để nhập/xuất tin Bộ nhớ Đơn vị xử lý Các thiết bị (Memory) (CPU) vào ra (I/O) Bus giao tiếp Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 16 8
- Hình dạng vật lý của vài máy tính màn hình thùng máy loa bàn phím chuột Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 17 1.5 Phương pháp phân tích từ-trên-xuống Trong quá khứ, phương pháp thường sử dụng để phân tích bài toán là phương pháp từ-trên-xuống (top-down analysis). Nội dung của phương pháp này là xét xem, muốn giải quyết vấn đề nào đóthìcần phải làm những công việc nhỏ hơn nào. Mỗi công việc nhỏ hơn tìm được lại được phân thành những công việc nhỏ hơn nữa, cứ như vậy cho đến khi những công việc phải làm là những công việc thật đơn giản, có thể thực hiện dễ dàng. Thí dụ việc học lấy bằng kỹ sư CNTT khoa CNTT ĐHBK TP.HCM có thể bao gồm 9 công việc nhỏ hơn là học từng học kỳ từ 1 tới 9, học học kỳ i là học n môn học của học kỳ đó, học 1 môn học là học m chương của môn đó, Hình vẽ của slide kế cho thấy trực quan của việc phân tích top-down. Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 18 9
- Phương pháp phân tích từ-trên-xuống chia thành nhiều công Công việc cần việc nhỏ hơn, đơn giản để giải quyết (A) giải quyết hơn. Công việc Công việc Công việc A1 A2 An Công việc Công việc Công việc Công việc Công việc Công việc A11 A12 A1n An1 An2 Ann Các công việc đủ nhỏ để được miêu tả bằng 1 lệnh hay 1 lời gọi hàm/thủ tục đã có. Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 19 Phương pháp phân tích từ-trên-xuống Công việc cần giải quyết ≡ đối tượng phức hợp A Đối tượng Đối tượng Đối tượng A1 A2 An Đối tượng Đối tượng Đối tượng Đối tượng Đối tượng Đối tượng A11 A12 A1n An1 An2 Ann Môn : Tin học Khoa Công nghệ Thông tin Chương 1: Phương pháp giải quyết bài toán bằng máy tính số Trường ĐH Bách Khoa Tp.HCM Slide 20 10