Bài giảng Các vấn đề cơ sở của khoa học máy tính: Chương 4 - Tô Oai Hùng
lượt xem 7
download
Bài giảng "Các vấn đề cơ sở của khoa học máy tính - Chương 4: Phần mềm" cung cấp cho người học các kiến thức: Các thệ hệ của ngôn ngữ lập trình, trình biên dịch và trình thông dịch, máy ảo, lập trình thủ tục, lập trình hướng đối tượng, ngôn ngữ kịch bản, ngôn ngữ lập trình hàm, cú pháp ngôn ngữ và ngữ nghĩa. Mời các bạn cùng tham khảo nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Các vấn đề cơ sở của khoa học máy tính: Chương 4 - Tô Oai Hùng
- Chương 4: PHẦN MỀM
- Nội Dung 1. Các thệ hệ của ngôn ngữ lập trình. 2. Trình biên dịch và trình thông dịch. 3. Máy ảo. 4. Lập trình thủ tục. 5. Lập trình hướng đối tượng. 6. Ngôn ngữ kịch bản. 7. Ngôn ngữ lập trình hàm. 8. Cú pháp ngôn ngữ và ngữ nghĩa. 2 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Các Thế Hệ của Ngôn Ngữ Lập Trình • Các nhà khoa học máy tính gọi chung các ngôn ngữ lập trình, các chương trình và các sản phẩm là phần mềm (software). • Một lệnh máy là một dãy các bit 0 và 1 được chứa trong bộ nhớ máy tính. • Khi máy tính đọc bộ nhớ, nó xác định xem dãy bit đã đọc có phải là lệnh máy không. Nếu đúng, máy tính thực thi lệnh đó, ngược lại máy tính sẽ dừng vì lệnh không hợp lệ. • Mỗi máy tính (một họ CPU) có một tập lệnh máy hữu hạn. Hầu hết các máy tính ngày nay có từ 75 đến 150 lệnh máy trong tập lệnh. • Mỗi kiến trúc máy tính được thể hiện trong 3 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Các Thế Hệ của Ngôn Ngữ Lập Trình tập lệnh. Các tập lệnh của các kiển trúc khác nhau sẽ khác nhau. Ví dụ, tập lệnh của Intel Pentium khác với của Sun SPARC. Cả khi thực hiện cùng một tác vụ, một lệnh của kiến trúc này cũng sẽ khác với kiến trúc khác. • Trong các máy tính trước đây, việc lập trình được thực hiện trực tiếp bằng lệnh máy. Người lập trình làm việc với các bit 0 và 1 để viết mã cho mỗi lệnh. Ví dụ sau là ba lệnh của máy tính 16 bit để cộng hai giá trị được chứa trong bộ nhớ tại địa chỉ 64 và 65 và lưu kết quả vào địa chỉ 66: 4 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Các Thế Hệ của Ngôn Ngữ Lập Trình 0110000001000000 Nạp giá trị tại 64 vào AX 0100000001000001 Cộng với giá trị tại 65. 0111000001000010 Chứa giá trị AX vào 66. • Khi tất cả lệnh máy được tạo, người lập trình lưu chúng vào bộ nhớ. Sau đó, thiết lập thanh ghi PC trỏ đến lệnh đầu tiên của chương trình và thực thi. • Các thao tác cơ bản của máy tính là đọc lệnh trong bộ nhớ được trỏ bởi thanh ghi PC, tăng thanh ghi PC, thực thi lệnh và lặp lại. • Một sự cải tiến trước đây để lập trình hiệu quả hơn là sử dụng hợp ngữ (assembly language). Trong hợp ngữ, chúng ta có thể 5 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Các Thế Hệ của Ngôn Ngữ Lập Trình đọc mã lệnh bằng từ gợi nhớ (chữ và số - mnemonic) thay vì mã máy và mỗi từ gợi nhớ ứng với một lệnh máy. • Hợp ngữ được gọi là ngôn ngữ thế hệ thứ hai (second-generation language). Trong hợp ngữ, người lập trình viết mã lệnh gợi nhớ và nó sẽ được biên dịch (bằng trình hợp dịch – assembler) trực tiếp thành mã máy. Một số từ gợi nhớ tiêu biểu như sau: - LDA m: Nạp giá trị tại địa chỉ m vào thanh ghi AX. - ADA m: Cộng giá trị của AX với giá trị tại địa chỉ m, kết quả chứa trong AX. 6 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Các Thế Hệ của Ngôn Ngữ Lập Trình - ALS: Dịch các bit trong AX sang trái 1 đơn vị. - SSA: Nếu bit msb của AX là 1, bỏ qua lệnh kế tiếp. Ngược lại, thực thi lệnh kế tiếp. - JMP m: Nhảy đến địa chỉ m. • Sau đây là mã hợp ngữ để viết lại 3 lệnh máy ở trên: LDA 100 // 100 octal = 64 ADA 101 // 101 octal = 65 STA 102 // 102 octal = 66 • Người lập trình thường sử dụng hợp ngữ để viết chương trình vì nó gần gũi với phần 7 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Các Thế Hệ của Ngôn Ngữ Lập Trình cứng máy tính hoặc những chương trình tối ưu tốc độ hay bộ nhớ. • Như là một công cụ giáo dục, lập trình hợp ngữ rất quan trọng, bởi vì nó là cách tốt nhất để biết được máy tính làm gì và làm như thế nào. • Vào năm 1954, ngôn ngữ thế hệ thứ ba ra đời. Ngôn ngữ đó là FORTRAN, do John Backus của IBM phát minh. • FORTRAN là chữ viết tắt của FORmula TRANslation. Ngôn ngữ này giúp người lập trình làm việc ở mức trừu tượng cao hơn. • Thay vì bị hạn chế bởi tập lệnh máy, người 8 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Các Thế Hệ của Ngôn Ngữ Lập Trình lập trình bây giờ sử dụng các câu lệnh giống như tiếng Anh và các biểu thức toán học. Ngôn ngữ cũng bao gồm các lệnh rẽ nhánh, lặp và nhập/xuất. • Sau đây là câu lệnh của FORTRAN. Các tên biến X, Y và Z trở thành tên đại diện cho các vị trí nhớ. Câu lệnh sẽ cộng nội dung của Y với Z và chứa tổng vào X: X = Y + Z • So sánh với hợp ngữ, câu lệnh của FORTRAN dễ đọc, dễ viết và ngắn gọn hơn. • FORTRAN là “ngôn ngữ thủ tục” (procedural language). Nghĩa là, người lập trình phải tổ 9 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Các Thế Hệ của Ngôn Ngữ Lập Trình chức hợp lý một dãy các bước cần thiết để thực thi tác vụ nào đó. • Các ngôn ngữ thủ tục còn được gọi là các “ngôn ngữ mệnh lệnh” (imperative language), bởi vì các câu lệnh của ngôn ngữ là những mệnh lệnh cho máy tính – các bước của chương trình chỉ định mỗi hành động của máy tính. • Khác với các ngôn ngữ mệnh lệnh là các ngôn ngữ “hướng đối tượng” (object- oriented). Hầu hết, nhưng không phải là tất cả các chương trình ngày nay được viết bằng các ngôn ngữ mệnh lệnh. 10 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Các Thế Hệ của Ngôn Ngữ Lập Trình • Cho đến nay, các ngôn ngữ thế hệ thứ ba gồm: LISP (for LISt Processing), Cobol, PL/1, BASIC, ADA, C, Smalltalk, C++, Java. Trong đó, Smalltalk, C++ và Java là các ngôn ngữ lập trình hướng đối tượng. 11 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Trình Biên Dịch và Trình Thông Dịch • Với sự ra đời của FORTRAN, chương trình trở nên phức tạp hơn để tạo ra mã máy. Một chương trình khác được gọi là trình biên dịch (compiler) dùng để dịch ngôn ngữ lập trình cấp cao thành mã máy. • Đầu vào của trình biên dịch là mã nguồn được viết bằng ngôn ngữ cấp cao. Đầu ra của trình biên dịch là mã máy. • Ví dụ sau là đoạn mã của ngôn ngữ FORTRAN: DIMENSION X(1000) READ(*, 1) N, M FORMAT(2I5) WRITE(*, 2) M, N12 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Trình Biên Dịch và Trình Thông Dịch FORMAT('AVERAGES ON ', I6, ' TESTS FOR EACH OF ', I6, 1’ SUBJECTS’) EM=M DO 5 J=1, N READ(*, 3) ID, (X(K), K=1, M) FORMAT(I5, 25F3.0/ (5X, 25F3.0)) SUM = 0.0 DO 4 K=1, M SUM = SUM + X(K) AV = SUM / EM WRITE(*, 6 ) J, ID, AV FORMAT(I6, 3X, 'SUBJECT ', I6, 3X, 'AV= ', F9.2) STOP END 13 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Trình Biên Dịch và Trình Thông Dịch • Trình biên dịch xử lý mã nguồn qua hàng loạt các bước: 1. Bước đầu tiên gọi là “quét” (scanning) hay “phân tích từ vựng” (lexical analysis) và xuất ra một chuỗi các “token” (từ tố/thẻ từ). Token là từ của ngôn ngữ, ví dụ “READ”, “FORMAT”, “AV”, “4” và “3X” là các token trong chương trình ví dụ. 2. Kế đến, trình biên dịch “phân tích từ loại” (parse) chuỗi token đó. Bước này được gọi là “phân tích cú pháp” (syntax analysis). Xem xét “văn phạm” hay các qui tắc của ngôn ngữ. Trình biên dịch sử dụng “cây 14 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Trình Biên Dịch và Trình Thông Dịch phân tích cú pháp” (parse tree) để thẩm tra các lệnh trong mã nguồn là những lệnh hợp lệ của ngôn ngữ. Tại bước này, trình biên dịch trả về thông báo lỗi, ví dụ thiếu dấu phẩy hay sai từ khoá. 3. Nếu tất cả câu lệnh đều hợp lệ, trình biên dịch tiếp tục “phân tích ngữ nghĩa” (semantic analysis). Trong giai đoạn này, ý nghĩa (meaning) của các lệnh được tạo, các lệnh sẽ được chuyển thành các mã thực thi (executable code). • Các trình biên dịch ngày nay thường biên dịch chương trình nguồn thành “ngôn ngữ 15 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Trình Biên Dịch và Trình Thông Dịch trung gian” (intermediate language) và sau đó sẽ chuyển thành mã máy. Trong khi các trình biên dịch trước đây hoặc là tạo mã hợp ngữ và sau đó sẽ hợp dịch (assemble) bằng trình hợp dịch (assembler) hoặc là tạo trực tiếp thành mã máy. • Ưu điểm của trình biên dịch ngày nay là có thể biên dịch nhiều ngôn ngữ khác nhau thành mã trung gian ở dạng tổng quát, không phụ thuộc vào môi trường/nền (platform) và sau đó có thể sinh ra mã máy tối ưu cho từng loại máy. • Kết quả của sự biên dịch chương trình là tập 16 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Trình Biên Dịch và Trình Thông Dịch tin mã đối tượng (object code). Nó là tập tin nhị phân của các lệnh máy và sẽ thực thi khi chương trình chạy. • Trình biên dịch thực hiện dịch mã nguồn thành mã thực thi chỉ 1 lần, khi chương trình chạy, các mã này sẽ thực thi ngay lập tức. • Đối với trình thông dịch (interpreter) thì khác. Trình thông dịch thực hiện dịch từng dòng mã nguồn thành mã máy ở mỗi thời điểm khi chương trình thực thi. Ví dụ, BASIC là ngôn ngữ sử dụng trình thông dịch. • Nói chung, một chương trình được thực thi bằng trình thông dịch sẽ chạy chậm hơn 17 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Trình Biên Dịch và Trình Thông Dịch chương trình đã được biên dịch thành mã máy. Bởi vì, ở mỗi thời điểm trình thông dịch phải phân tích từng dòng lệnh và chuyển nó thành mã máy khi chương trình chạy. • Trình thông dịch thường cung cấp thông báo chuẩn đoán tốt hơn vì nó làm việc trực tiếp với từng dòng lệnh. • Sự khác biệt giữa ngôn ngữ sử dụng trình biên dịch và thông dịch đôi khi cũng không rõ ràng. Có một số ngôn ngữ sử dụng cả trình thông dịch và biên dịch như BASIC, PERL, LISP, Java, … 18 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Máy Ảo • Máy ảo (virtual machine) là máy tính được định nghĩa bởi phần mềm hơn là phần cứng. Máy ảo chạy các chương trình giống như máy tính thật, nhưng máy ảo thực sự được điều khiển bởi chương trình khác, một sự tạo dựng bởi phần mềm đó là lấy, giải mã và thực thi các lệnh của chương trình. • Thuật ngữ máy ảo mô tả một lớp trừu tượng được thêm vào giữa người dùng và phần cứng, vì thế các nhà khoa học máy tính cũng sử dụng thuật ngữ này để mô tả phần mềm tạo nên sự thể hiện ở các dạng khác nhau của máy tính. 19 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
- Lập Trình Thủ Tục • Theo nhiều người, lập trình thủ tục (procedural programming) là mô hình tự nhiên. Một chương trình được mô tả đơn giản chỉ là một danh sách các lệnh được thực thi theo trình tự, tức là một thủ tục. • Các ngôn ngữ lập trình thủ tục cũng được gọi là các ngôn ngữ mệnh lệnh (imperative language). • Trong lập trình thủ tục, mã lệnh cho một công việc cụ thể được chứa trong một thủ tục có tên. Thủ tục cũng còn được gọi là subroutine. Cho ví dụ, hãy tạo một thủ tục để tìm độ lệch chuẩn của một dãy số. 20 Các Vấn Đề Cơ Sở của KHMT ThS. GVC Tô Oai Hùng
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Tin học đại cương - Chương 1: Các vấn đề cơ bản về CNTT
167 p | 426 | 31
-
Bài giảng Tin học đại cương - Chương 1: Các vấn đề cơ bản của Tin học
17 p | 270 | 9
-
Bài giảng Các vấn đề cơ sở của khoa học máy tính: Chương 1 - ThS. Tô Oai Hùng
24 p | 109 | 9
-
Bài giảng Tin văn phòng: Bài 1 - ThS. Thiều Quang Trung
65 p | 72 | 7
-
Bài giảng Tin văn phòng: Chương 8 - Trương Xuân Nam
16 p | 76 | 7
-
Bài giảng Các vấn đề cơ sở của khoa học máy tính: Chương 3 - Tô Oai Hùng
42 p | 83 | 7
-
Bài giảng Các vấn đề cơ sở của khoa học máy tính: Chương 2 - ThS. Tô Oai Hùng
40 p | 71 | 7
-
Bài giảng Các vấn đề cơ sở của khoa học máy tính: Chương 6 - Tô Oai Hùng
74 p | 91 | 6
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 5 - Lê Thị Minh Nguyện
9 p | 54 | 5
-
Bài giảng Tin văn phòng 2: Bài 1 - ThS. Thiều Quang Trung
45 p | 60 | 5
-
Bài giảng Hệ quản trị cơ sở dữ liệu (Database Management Systems) - Bài 8: Thủ tục nội tại
11 p | 14 | 5
-
Bài giảng Bài 3: Chuẩn bị toán học
0 p | 158 | 5
-
Bài giảng Tin học đại cương - Bùi Việt Thái
23 p | 92 | 4
-
Bài giảng Tin văn phòng: Chương 13 - Trương Xuân Nam
22 p | 62 | 3
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 6 - Phạm Nguyên Thảo
44 p | 51 | 3
-
Bài giảng Truy vấn nâng cao
10 p | 34 | 3
-
Bài giảng Tin văn phòng: Chương 2 - Trương Xuân Nam
18 p | 84 | 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