Bài giảng Tin học đại cương

MÔN TIN HỌC ĐẠI CƯƠNG  
Đối tượng: SV đại học chính quy toàn trường  
Tài liệu tham khảo:  
ꢀ Tập slide bài giảng & thực hành của môn học nà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  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
Slide 2  
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  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
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  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
Slide 4  
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  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
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  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
Slide 6  
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  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
Slide 8  
Các khái niệm cơ bản về máy tính số  
ꢀ Gọi ngôn ngữ máy vật lý là N0. Trình biên dịch ngôn ngữ N1 sang  
ngôn ngữ N0 sẽ nhận đầu vào là chương trình được viết bằ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ức năng tương đương. Để viết chương trình dịch  
từ ngôn ngữ N1 sang N0 dễ dàng, độ phức tạp của từng lệnh ngôn  
ngữ N1 không quá cao so với từng lệnh ngôn ngữ N0.  
ꢀ Sau khi có máy luận lý hiểu được ngôn ngữ luận lý N1, ta có thể định  
nghĩa và hiện thực máy luận lý N2 theo cách trên và tiếp tục đến khi ta  
có 1 máy luận lý hiểu được ngôn ngữ Nm rất gần gũi với con người,  
dễ dàng miêu tả giải thuật của bài toán cần giải quyết...  
ꢀ Nhưng qui trình trên chưa có điểm dừng, với yêu cầu ngày càng cao  
và kiến thức ngày càng nhiều, người ta tiếp tục định nghĩa những  
ngôn ngữ mới với tập lệnh ngày càng gần gũi hơn với con người để  
miêu tả giải thuật càng dễ dàng, gọn nhẹ và trong sáng hơn.  
Môn: Tin học  
Khoa Công nghệ Thông tin  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
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  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
Slide 10  
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  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
Slide 11  
Các thế hệ máy tính số  
Blaise Pascal (Pháp-1642)  
ENIAC (1946)  
18.000 bóng đèn  
1500 rờ le  
30 tấn  
Intel 8080 (1974)  
Charles Babbage (Anh-1830)  
được xem như CPU đầu  
tiên được tích hợp trên 1  
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  
(International Business  
Machine) ở Mỹ - 1890  
Bộ nhớ dây trễ, tĩnh  
điện. Giấy, phiếu đục  
lổ. Băng từ  
Bộ nhớ xuyến từ.  
Băng từ, trống từ,  
đĩa từ.  
Môn: Tin học  
Khoa Công nghệ Thông tin  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
Slide 12  
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  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
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  
(package)  
global data  
local data  
of module  
entry 'start'  
local data  
of function  
Môn: Tin học  
Khoa Công nghệ Thông tin  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
Slide 14  
1.4 Qui trình tổng quát giải quyết bài toán bằng máy tính số  
Kết quả có được sau  
Dữ liệu cần xử lý bằng  
khi xử lý bằng máy tính  
máy tính (chữ số, hình  
(chữ số, hình ảnh, âm  
ảnh, âm thanh,...)  
thanh,...)  
CDROM, đĩa, băng,...  
Giải mã chuỗi  
Mã hóa dữ liệu  
thành dạng  
chuỗi bit  
Lưu giữ dữ  
liệu số để  
dùng lại  
bit ra dạng  
người, thiết bị  
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  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
Slide 15  
Mô hình máy tính số Von Neumann  
chứa code và data  
thực thi từng lệnh  
của chương trình  
giao tiếp với bên ngoài  
(thường là người) để  
nhập/xuất tin  
đang thực thi  
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  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
Slide 16  
Hình dạng vật lý của vài máy tính  
thùng máy  
màn hình  
loa  
chuột  
bàn phím  
Môn: Tin học  
Khoa Công nghệ Thông tin  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
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  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
Slide 18  
Phương pháp phân tích từ-trên-xuống  
chia thành nhiều công  
việc nhỏ hơn, đơn giản để  
giải quyết hơn.  
...  
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  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
Slide 19  
Phương pháp phân tích từ-trên-xuống  
...  
...  
...  
...  
...  
Môn: Tin học  
Khoa Công nghệ Thông tin  
Trường ĐH Bách Khoa Tp.HCM  
Chương 1: Phương pháp giải quyết bài toán bằng máy tính số  
Slide 20  
Tải về để xem bản đầy đủ
pdf 349 trang myanh 19580 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong.pdf