ĐỀ CƯƠNG ÔN TẬP NGÔN NGỮ LẬP TRÌNH Câu 1 Khái niệm và Các yếu tố cấu thành của Ngôn ngữ lập trình Ngôn ngữ lập trình là một hệ thống được kí hiệu hóa để miểu tả những tính toán (qua máy tính) trong mộ[.]
Câu 1: Khái niệm Các yếu tố cấu thành Ngơn ngữ lập trình: Ngơn ngữ lập trình hệ thống kí hiệu hóa để miểu tả tính tốn (qua máy tính) dạng mà người máy tính đọc hiểu Ngơn ngữ lập trình = Kí hiệu + quy tắc kết hợp Các yếu tố cấu thành ngơn ngữ lập trình: o Cú pháp: Sự kết hợp kí hiệu ( Dạng biểu thức, phát triển, đơn vị nhỏ chương trình) o Ngữ nghĩa: Ý nghĩa cuả kết hợp o Ngữ dụng: Mối quan hệ cú pháp,ngữ nghĩa với giới bên ngồi Câu 2 : Phải có ngơn ngữ lập trình mà k dùng ngơn ngữ máy hay ngơn ngữ tự nhiên để lập trình : Ngơn ngữ máy ngơn ngữ lệnh viết số nhị phân (0 1) Nếu chương trình viết ngơn ngữ máy chương trình dài Các dịng số không gợi nên ý nghĩa lệnh Người dùng muốn hiểu sử dụng chương trình phải ghi nhớ cách máy móc dịng lệnh Ngơn ngữ tự nhiên ngôn ngữ đa nghĩa, giàu cảm xúc biểu đạt, đóng ngữ nghĩa Nếu dùng ngơn ngữ tự nhiên để vết chương trình máy tính xác định khả biểu đạt ngơn ngữ Phải dùng ngơn ngữ lập trình để làm phương tiện giao tiếp người máy tính Câu 3: Lịch sử phát triển ngôn ngữ lập trình Ngơn ngữ lập trình ngơn ngữ máy tính (mã nhị phân) Ngơn ngữ máy phụ thuộc toàn vào kiến trúc phần cứng quy ước khắt khe nhà chế tạo → Không có tính khả chuyển Từ năm 1950 hợp ngữ assembly đời → ngôn ngữ bậc thấp Từ năm 1957 ngôn ngữ bậc cao đời Đây sản phẩm IBM đưa Đó ngơn ngữ Fortran (Formula Translator) Là ngơn ngữ gần gũi với ngôn ngữ tự nhiên, với cách diễn đạt tốn học (Điều kiện, vịng lặp) Đầu năm 1960 : COBOL : xử lý liệu Algol 60 : có cấu trúc điều khiển đại Lisp : Ngơn ngữ lập trình hàm đầu tiên, ngơn ngữ xử lí danh sách Giữa năm 1960 : PL/1 : Kết hợp ngơn ngữ tính tốn số học ngơn ngữ xử lí liệu Simula : Hướng đối tượng Từ năm 1970 – 1990 : Các ngôn ngữ hướng đối tượng : C++ Lập trình Logic (1972) Lập trình hàm :ML.,miranda Ada Từ năm 1990 đến nay: Hướng đối tượng + WWW: C#,java Ngôn ngữ kịch + Hướng đối tượng + WWW:PHP XML Ngơn ngữ kịch phía Client: Java Script Câu 4 : Các xu hướng phát triển & nghiên cứu of ngơn ngữ lập trình giai đoạn nay: Moodul hóa, hướng đối tượng Mã nguồn mở, framework Phát lỗi tự động Phát triển trình dịch biên Bảo mật Lập trình cho di động Web 2.0, điện toán cho đám mây Lập trình trí tuệ nhân tạo Câu 5: Anh chị cho biết tên ngôn ngữ lập trình sử dụng phổ biến giới, theo anh chị lại sử dụng phổ biến 1.Ngơn ngữ lập trình C# C# ngơn ngữ lập trình hướng đối tượng phát triển Microsoft, phần khởi đầu cho kế hoạch NET họ Tên ngôn ngữ bao gồm ký tự thăng theo Microsoft theo ECMA C#, bao gồm dấu số thường Microsoft phát triển C# dựa C++ Java C# miêu tả ngơn ngữ có cân C++, Visual Basic, Delphi Java C# thiết kế chủ yếu Anders Hejlsberg kiến trúc sư phần mềm tiếng với sản phẩm Turbo Pascal, Delphi, J++, WFC C#, theo hướng đó, ngơn ngữ lập trình phản ánh trực tiếp đến NET Framework mà tất chương trình NET chạy, phụ thuộc mạnh mẽ vào Framework Mọi liệu sở đối tượng, cấp phát hủy bỏ trình dọn rác Garbage-Collector (GC), nhiều kiểu trừu tượng khác chẳng hạn class, delegate, interface, exception, v.v, phản ánh rõ ràng đặc trưng NET runtime Ngơn ngữ lập trình Java Java (đọc "Gia-va") ngơn ngữ lập trình dạng lập trình hướng đối tượng (OOP) Khác với phần lớn ngơn ngữ lập trình thơng thường, thay biên dịch mã nguồn thành mã máy thông dịch mã nguồn chạy, Java thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau mơi trường thực thi (runtime environment) chạy Bằng cách này, Java thường chạy nhanh ngơn ngữ lập trình thơng dịch khác Python, Perl, PHP, Cú pháp Java vay mượn nhiều từ C & C++ có cú pháp hướng đối tượng đơn giản tính xử lý cấp thấp dự định ngôn ngữ Java thay cho C++, tính giống Objective C Không nên lẫn lộn Java với JavaScript, hai ngôn ngữ giống tên loại cú pháp C Công ty Sun Microsystems giữ quyền phát triển Java thường xun Ngơn ngữ lập trình PHP PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") ngơn ngữ lập trình kịch hay loại mã lệnh chủ yếu dùng để phát triển ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng qt Nó thích hợp với web dễ dàng nhúng vào trang HTML Do tối ưu hóa cho ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C Java, dễ học thời gian xây dựng sản phẩm tương đối ngắn so với ngôn ngữ khác nên PHP nhanh chóng trở thành ngơn ngữ lập trình web phổ biến giới Ngơn ngữ, thư viện, tài liệu gốc PHP xây dựng cộng đồng có đóng góp lớn Zend Inc., công ty nhà phát triển cốt lõi PHP lập nên nhằm tạo môi trường chuyên nghiệp để đưa PHP phát triển quy mô doanh nghiệp Câu 6: Phân biệt NNLT bậc thấp NNLT bậc cao - Ngơn ngữ lập trình bậc thấp là ngơn ngữ lập trình liên quan chặt chẽ đến phần cứng máy tính khơng có tính khả chuyển Từ "thấp" khơng có nghĩa ngơn ngữ các ngơn ngữ lập trình bậc cao mà điều nghĩa lệnh gần ngơn ngữ máy Phụ thuộc nhiều vào loại máy Các ngôn ngữ lập trình bậc thấp thường chia thành hai loại: thế hệ thứ nhất và thế hệ thứ hai + Ngôn ngữ lập trình hệ thứ nhất, hay 1GL, là mã máy Nó ngơn ngữ mà bộ vi xử lý có thể hiểu Hiện lập trình viên khơng viết chương trình trực tiếp ngơn ngữ máy khơng u cầu ý nhiều đến chi tiết mà ngôn ngữ bậc cao xử lý cách tự động mà yêu cầu ghi nhớ tìm mã lệnh số cho thị sử dụng + Ngôn ngữ lập trình hệ thứ hai, hay 2GL, là ngơn ngữ assembly Nó xem ngơn ngữ hệ thứ hai khơng phải ngơn ngữ máy lập trình viên phải hiểu kiến trúc vi xử lý (như các thanh ghi và các lệnh của vi xử lý) Những câu lệnh đơn giản dịch trực tiếp mã máy - Ngơn ngữ lập trình bậc cao: Là ngôn ngữ gần với ngôn ngữ tự nhiên phụ thuộc vào loại máy, có tính độc lập cao phải có chương trình dịch để dịch sang mã máy máy tính thực - Cho ví dụ: + Ngơn ngữ bậc thấp: Ngôn ngữ máy, Assembly, … + Ngôn ngữ lập trình bậc cao: fortran, pascal, C, Cobol… Câu 7: Họ ngơn ngữ lập trình phổ biến là: - Ngơn ngữ máy ngôn ngữ ASSEMBLY: Ngôn ngữ máy đối tượng thi hành trực tiếp vi xử lý Hợp ngữ Assembly (1950s): chương trình viết hợp ngữ ngắn hơn, chiếm nhớ chạy nhanh so với ngơn ngữ lập trình bậc cao Ngơn ngữ Assembly thích hợp cho lập trinh vi điều khiển (VD vi điều khiển ô tô) - Họ ngôn ngữ cổ điển (ngôn ngữ cấp cao loại ngôn ngữ thủ tục) gắn chặt với mơ hình máy tính cổ điển Von Neumann: Kiến trúc Von Neumann có đặc điểm đáng ý + Các lệnh xử lý theo thứ tự xếp nhớ + Chỉ cho phép đọc ghi lần từ nhớ (Word Memory)\ VD: Fortran, Pascal, Basic, C, … - Họ ngơn ngữ hàm: Chương trình ngơn ngữ hàm bao gồm đối tượng liệu, hàm phép áp dụng hàm đối tượng liệu Sử dụng định nghĩa hàm đệ qui VD: Lisp, ML, Haskell,… - Họ ngôn ngữ hướng đối tượng: Chương trình ngơn ngữ hướng đối tượng kịch hoạt động đối tượng chương trình Các đối tượng gửi thông điệp qua lại lẫn VD: Smalltalk, Eiffel, C+ +, Java,… - Họ ngôn ngữ lơgic: Chương trình viết ngơn ngữ lơgic tập hợp quy tắc kiện, diễn đạt mệnh đề, liên quan đến vấn đề cần giải Người lập trình cần đặc tả lơgic vấn đề, cịn chế giải vấn đề theo đặc tả cài sẵn chương trình dịch VD: Prolog, VisiCalc,… Câu 8: Đặc trưng ngơn ngữ lập trình hướng đối tượng: - Là kĩ thuật lập trình hỗ trợ cơng nghệ đối tượng OOP xem giúp tăng suất, đơn giản hóa độ phức tạp bảo trì mở rộng phần mềm cách cho phép lập trình viên tập trung vào đối tượng phần mềm bậc cao Ngồi ra, nhiều người cịn cho OOP dễ tiếp thu cho người học về lập trình hơn phương pháp trước - Chương trình ngôn ngữ hướng đối tượng kịch hoạt động đối tượng chương trình Các đối tượng gửi thông điệp qua lại lẫn - Đặc trưng bản: - Tính trừu tượng: Đây khả chương trình bỏ qua hay khơng ý đến số khía cạnh thơng tin mà trực tiếp làm việc lên, nghĩa có khả tập trung vào cốt lõi cần thiết Mỗi đối tượng phục vụ "động tử" hồn tất cơng việc cách nội bộ, báo cáo, thay đổi trạng thái liên lạc với đối tượng khác mà không cần cho biết làm cách đối tượng tiến hành thao tác Tính chất thường gọi là sự trừu tượng liệu Tính trừu tượng thể qua việc đối tượng ban đầu có số đặc điểm chung cho nhiều đối tượng khác mở rộng thân đối tượng ban đầu khơng có biện pháp thi hành Tính trừu tượng thường xác định khái niệm gọi là lớp trừu tượng hay lớp sở trừu tượng + Đóng gói liệu: liệu tổ chức thành thuộc tính lớp đối tượng Việc truy nhập đến liệu phải thông qua phương thức đối tượng lớp + Sử dụng lại mã nguồn: việc sử dụng lại mã nguồn thể thông qua chế kế thừa Cơ chế cho phép lớp đối tượng kế thừa từ lớp đối tượng khác Khi đó, lớp kế thừa, sử dụng phương thức (mã nguồn) lớp bị kế thừa, mà không cần phải định nghĩa lại VD: Smalltalk, Eiffel, C++, Java,… Câu 9: Phân tích u cầu ngơn ngữ lập trình: - Tính dễ viết + Ngơn ngữ lập trình phải có tính diễn đạt cao: Cung cấp cho người lập trình cơng cụ để nghĩ viết (kỹ thuật đệ qui) + Ngôn ngữ phải đơn giản để dễ đọc, dễ nhớ dễ nắm vững (không nên có q nhiều khái niệm VD ngơn ngữ C có nhiều toán tử, toán tử gần giống nhau) + Ngôn ngữ phải linh hoạt VD C linh hoạt Pascal với phát biểu Break, Return - Tính dễ đọc + GOTO (Pascal) làm chương trình khó đọc + Dấu gạch “_” danh hiệu làm chương trình dễ đọc - Tính tin cậy (xác suất chạy cao q trình sử dụng) + Ngơn ngữ cần hạn chế xuất lỗi ngờ VD phát biểu FORTRAN SUM(I,J)= I + J; + Hiệu ứng lề (side effect) nguồn gây lỗi + Ngôn ngữ cần kiểm tra chặt chẽ tương hợp kiểu biến biểu thức phép gán, tương hợp danh sách thơng số chương trình nơi gọi nơi định nghĩa + Các phận chương trình cần có tính độc lập cao + Tính tin cậy cịn phụ thuộc vào chất lượng chương trình dịch Câu 10: Tiêu chuẩn để đánh giá ngơn ngữ lập trình tốt: - Tính rõ ràng (clarity), đơn giản (simplicity), quán (unity) khái niệm - Tính rõ ràng cú pháp chương trình (clarity of program syntax) Khả định nghĩa sử đụng cấu trúc phép toán phức tạp cho phép bỏ qua cho tiết - Tính tự nhiên ứng dụng (naturalness for the application) - Hỗ trợ tính trừu tượng hóa (support for abstraction) - - Khả ngơn ngữ lập trình hỗ trợ người lập trình tạo chương trình đắn Phát sửa lỗi thực tiếp tục mà không cần dừng lại - Dễ dàng kiểm tra chương trình - Mơi trường lập trình đơn giản - Tính khả chuyển chương trình - Chi phí sử dụng thấp: chi phí thực thi, dịch, viết, kiểm tra, sử dụng, bảo trì chương trình Câu 11 Các thành tố cuả ngơn ngữ lập trình đại : -Các dạng câu lệnh: định nghĩa, khai báo, gán giá trị, kết hợp, điều kiện, vòng lặp, gọi (hàm, thủ tục, macro), thị tiền xử lý (#ifndef MY_LIB #include "my_code.h“ #endif C/C++), giải Chương trình macro (một khối lệnh dùng lại nhiều lần) Biến, hằng, tham số đối số Từ vựng qui ước: từ khóa, tên chuẩn hay tên cho trước, ký hiệu Các luật cấm ngoại lệ: lỗi cú pháp, lỗi ý nghĩa Ngồi cịn số thành tố khác : - Giao diện đồ họa - Điều khiển theo kiện - Thời gian thực - Hỗ trợ hệ điều hành Câu 12: Trình bày khái niệm siêu ngơn ngữ (meta language), cho biết vai trị siêu ngơn ngữ q trình thiết kế ngơn ngữ lập trình, lấy ví dụ vài siêu ngơn ngữ Khái niệm: Ngôn ngữ dùng để xác định cú pháp (hoặc ngữ nghĩa) ngơn ngữ lập trình gọi siêu ngôn ngữ (Meta language) 777 Khái niệm ngôn ngữ học của GS Nguyễn Thiện Giáp (tr.377) Vai trị: Nó có vai trị quan trọng q trình thiết kế ngơn ngữ lập trình: Cú pháp quy định kết hợp kí hiệu từ vựng Ngữ nghĩa qui định ý nghĩa kết hợp đó.Mà việc thiết kế ngơn ngữ, ngữ nghĩa hình thức cho phép nhà thiết kế mô tả rõ ràng xác ngữ nghĩa đặc tả ngôn ngữ Cú pháp thành phần quan trọng ngôn ngữ Cú pháp biểu diễn luật cú pháp Bộ luật dùng để mơ tả cấu trúc chương trình, câu lệnh Để lập trình, người lập trình phải nắm luật cú pháp ngơn ngữ mà định xây dựng chương trình, để lập trình VD: Văn phạm phi ngữ cảnh, BNF,… Câu 13 Đặc tả từ vựng NNLT: - Ngôn ngữ tập hợp chuỗi ký tự từ alphabet (A…Z, a…z, $,@,0 9, +,_,*,/,=,…) - Token: Một token tập hợp xâu kí tự có nghĩa xác định Ví dụ: Các từ khố, định danh, tốn tử, hằng, xâu kí tự, … - Pattern: Pattern token qui tắc kết hợp kí tự để tạo nên token - Lexeme: Là chuỗi kí tự thoả mãn pattern token Câu 14 Biểu thức quy: - Để biểu diễn token người ta dùng biểu thức quy - Một biểu thức quy chuỗi miêu tả chuỗi khác, theo quy tắc cú pháp định - BTCQ hiểu ngôn ngữ nhỏ dùng cho mục đích: để tìm chuỗi biểu thức chuỗi lớn Câu 15: Anh/chị cho biết cần đặc tả cú pháp ngơn ngữ lập trình Đầu vào đầu công việc đặc tả cú pháp ? Phân tích cú pháp có mục đích duyệt chương trình nguồn để phát thơng báo lỗi không với quy ước ngôn ngữ Các lỗi làm cho nghĩa chương trình khơng rõ khơng thể dịch Ví dụ ngơn ngũ PASCAL ta viết dịng lệnh d := (a+ b)/e-f)+g Khi đọc đến dấu ngoặc đóng thứ sau f, ta không hiểu nguời viết muốn tính đương nhiên khơng thể dịch Lý làm cho dịng lệnh khơng rõ nghĩa thiếu dấu ngoặc "(" phía trước, trước chữ e, trước chữ a Những lỗi sai với quy ước ngơn ngữ gọi lỗi cú pháp Q trình phân tích cú pháp tạo thơng tin cần thiết cấu trúc chương trình đối tượng dùng công việc dịch mô ta Trong q trình phân tích cú pháp, danh mục đối tượng xây dựng để cịn sinh mã chương trình giai đoạn Cơng việc gọi phân tích từ vựng - Đầu vào chương trình nguồn - Đầu + Những lỗi cú pháp cần sửa + Thông tin cần thiết cấu trúc chương trình Câu 16: Trình bày đặc điểm cú pháp cụ thể: Trả lời: * Cú pháp ngôn ngữ định nghĩa (Văn phạm phi ngữ cảnh: Context – Free Grammar) - Ký hiệu bắt đầu S Ỵ N(Start symbol) - Tập ký hiệu không kết thúc N (Non-terminals) - Tập ký hiệu kết thúc S (Terminals) - Tập luật sinh P (Production) có dạng: A đ a Vi A ẻ N v a l chuỗi ký hiệu kết thúc không kết thúc Câu hợp lệ ngơn ngữ chuỗi kí hiệu kết thúc dẫn từ kí hiệu khởi đầu S thông qua luật sinh tập luật sinh P * BNF siêu ngôn ngữ phổ biến để xây dựng cú pháp cụ thể * Ví dụ: Cú pháp cụ thể dạng BNF cho biểu thức PASCAL - ::= | - ::= | - ::= | | () - ::= a | b | c,….|z - ::= | | 2,…|9 - ::= +, -, or - :: * | / | div | mod | and Cú pháp cụ thể gọi cú pháp phi ngữ cảnh (context-free syntax), vế trái luật sinh có ký hiệu khơng kết thúc Cú pháp phi ngữ cảnh biểu diễn cú pháp ngơn ngữ lập trình cấp cao Câu 17: Anh/chị phân tích vai trị đặc tả ngữ nghĩa ngơn ngữ lập trình Đầu vào, đầu cơng việc đặc tả ngữ nghĩa ? - Đặc tả ngữ nghĩa hình thức cho phép: + Chứng minh tính đắn chương trình + Kiểm tra tính đắn chương trình dịch - Cú pháp ngữ nghĩa hình thức dùng để thực thiết kê ngơn ngữ lập trình + Cú pháp hình thức sử dụng để tạo phân tích cú pháp ngơn ngữ + Ngữ nghĩa hình thức giúp cho trình sinh tự động trình thơng dịch biên dịch ngơn ngữ + Trong việc thiết kế ngơn ngữ, ngữ nghĩa hình thức cho phép nhà thiết kế mô tả rõ ràng xác ngữ nghĩa đặc tính ngơn ngữ - Đặc tả ngữ nghĩa hình thức thơng qua phân tích ngữ nghĩa - Bộ phân tích ngữ nghĩa (BPTNN) thực + Kiểm tra lỗi ngữ nghĩa: kiểm tra kiểu; kiểm tra phạm vi hằng, biến; kiểm tra việc sử dụng tên + Thu nhận thơng tin thuộc tính cho từ tố (token), ví dụ thơng tin giá trị, thơng tin loại hằng, biến hay hàm cho tên + BPTNN phân tích ý nghĩa cấu trúc cú pháp tạo nên chương trình nguồn VD biểu thức gán c:=a+b*7, BPTNN xác định ý nghĩa tác vụ :=, +, *, kiểm tra xem tác vụ có nhận đối số thuộc kiểu thích hợp hay không dựa vào bảng ký hiệu Câu 18: Anh/chị cho biết đặc điểm trình biên dịch lấy VD ngôn ngữ biên dịch mà anh/chị biết Trả lời: * Đặc điểm trình biên dịch: Chương trình nguồn trình biên dịch chuyển sang chương trình đích, thường dạng mã máy (hoặc assembly), sau chương trình đích thực thi Trong hệ thống biên dịch liệu chương trình nguồn xử lý hai thời điểm khác Trong đó: - Chương trình nguồn viết ngơn ngữ nguồn - Chương trình đối tượng thể ngơn ngữ đối tượng - Thời gian chuyển đổi từ chương trình nguồn sang chương trình đối tượng goi thời gian dịch (compile time) - Thời gian diễn thực thi chương trình đối tượng máy tính gọi thời gian thực thi (execution time hoăc run time) * Ví dụ ngơn ngữ biên dịch: Ngơn ngữ biên dịch ngơn ngữ mà chương trình dịch cho chương trình biên dịch Ví dụ Fortran: , Pascal, C, C++… Câu 19: - Thay chuyển đổi tồn chương trình nguồn trình biên dịch, trình thông dịch chuyển đổi mệnh đề chương trình thực đoạn mã kết ngay, sau tiếp tục chuyển đổi mệnh đề thứ thi hành đoạn mã kết thứ - Khi sử dụng trình thơng dịch, lần chạy chương trình lần chương trình nguồn thơng dịch sang ngơn ngữ máy Khơng có chương trình đối tượng tạo Ưu điểm: - chạy chương trình cịn lỗi cú pháp Chỉ đến lúc thơng dịch đến câu lệnh có lỗi cú pháp, trình thi hành chương trình bị ngừng lại trình thơng dịch thơng báo lỗi - Do khơng có chường trình đối tượng tao ==> tốn dung lượng đĩa - Có thể chạy hệ điều hành Nhược điểm: - Trong thơng dịch chương trình đích khơng lưu lại nên lần thực phải dịch lại từ đầu (ngược lại với trình biên dịch) Một số ngôn ngữ thông dịch: vbscript, javascript, shell script, sql script Câu 20: Anh( chị) liệt kê giai đoạn trình biên dịch, đầu vào đầu giai đoạn? Trả lời: Chương trình dịch chia làm giai đoạn: - Phân tích từ vựng - Phân tích cúa pháp Phân - Phân tích ngữ nghĩa tích - Sinh mã trung gian - Tối ưu mã - Sinh mã đích Tổng hợp * Phân tích từ vựng: - Đầu vào: chương trình nguồn chuỗi kí hiệu - Đầu ra: kí hiệu chuỗi chương trình nguồn gom lại thành nhóm kí hiệu có ý nghĩa gọi token, từ khóa, tên biến, hằng, kí hiệu tác vụ * Phân tích cú pháp - Đầu vào: chuỗi token phân tích từ vựng cung cấp - Đầu ra: cấu trúc phức tạp chương trình nguồn như: biểu thức, phát biểu, chương trình Các cấu trúc thể dạng cú pháp với nút token * Phân tích ngữ nghĩa: - Đầu vào: Các cấu trúc cú pháp tạo nên chương trình nguồn - Đầu ra: phát lỗi ngữ nghĩa, thơng tin thuộc tính cho từ tố (token) cho chương trình nguồn sửa lỗi * Sinh mã trung gian - Đầu vào: Chương trình nguồn có bước - Đầu ra: dạng biểu diễn mã trung gian (mã tứ, mã địa chỉ) chương trình nguồn * Tối ưu mã Đầu vào: Mã trung gian vừa sinh bước - Đầu ra: chương trình đích tối ưu tốc độ thực thi nhớ sử dụng * Sinh mã đích - Đầu vào: mã trung gian tối ưu - Đầu ra: mã đích thơng thường dạng mã máy hay mã Assembly Câu 21: Anh/chị trình bày nội dung q trình phân tích từ vựng Source program Lexical analyzer Token Parser Get next token Symbol table Source program: Chương trình nguồn chương trình dịch chuỗi kí hiệu Lexical analyzer: Bộ phân tích từ vựng dị kí hiệu chuỗi kí hiệu chương trình nguồn, gom chúng lại thành nhóm kí hiệu có ý nghĩa gọi Token: từ khóa, tên biến, hằng, kí hiệu tác vụ VD phân tích từ vựng phép gán: c:=a+b*7 thu được: c ident(định danh) b ident(định danh) := becomes(kí hiệu tác vụ gán) * times (kí hiệu tác vụ nhân) a ident(định danh) number (số/hằng) + plus(kí hiệu tác vụ cộng) Chuỗi tokens thu được: id1:=id2+id3*7 (ident, c) becomes (ident, a) plus (ident, b) times (number, 7) Parser: Bộ phân tích cú pháp nhận kí hiệu có ý nghĩa gọi Token chuỗi kí hiệu từ phân tích từ vựng, sau phân tích từ vựng lấy token kế (Get next token) từ phân tích cú pháp Bảng danh hiệu (symbol table) c … a … b … Danh hiệu Thuộc tính Câu 22: Anh chị cho biết bảng danh hiệu (Symbol table) dùng để làm gì? Và vai trị q trình biên dịch chương trình? * Bảng danh hiệu (symbol table) cấu trúc liệu dùng để lưu trữ tất định danh (bao gồm trường lưu giữ ký hiệu thuộc tính nó) thơng tin chương trình Các thơng tin tập hợp từ giai đoạn phân tích trình biên dịch sử dụng giai đoạn tổng hợp để sinh mã đích * Vai trị bảng danh hiệu (Symbol table) trình biên dịch chương trình là: - Là sở liệu cho toàn hệ thống biên dịch - Trong trình chạy chương trình cần lấy lại thơng tin từ bảng Symbol table mà không cần kiểm tra lại thông tin - Khi chạy chương trình lần thứ mà liệu nguồn khơng có thay đổi chạy trực tiếp file đích chứa sẵn bảng Symbol table1 lần biên dịch mà thực thi nhiều lầnthời gian chạy chương trình nhanh Câu 23: Anh chị trình bày nội dung q trình phân tích cú pháp - Bộ phân tích cú pháp phân tích chuỗi token phân tích từ vựng cung cấp, để thu cấu trúc phức tạp chương trình nguồn như: biểu thức, phát biểu, chương trình Các cấu trúc thể dạng cú pháp với nút token - Ví dụ cú pháp thu phát biểu gán “c:=a+b*7“ Câu 24: Anh chị trình bày nội dung q trình phân tích ngữ nghĩa -Bộ phân tích ngữ nghĩa (BPTNN) thực hiện: – Kiểm tra lỗi ngữ nghĩa: kiểm tra kiểu; kiểm tra phạm vi hằng, biến; kiểm tra việc sử dụng tên – Thu nhận thơng tin thuộc tính cho từ tố (token), ví dụ thông tin giá trị, thông tin loại hằng, biến hay hàm cho tên -BPTNN phân tích ý nghĩa cấu trúc cú pháp tạo nên chương trình nguồn VD biểu thức gán c:=a+b*7, BPTNN xác định ý nghĩa tác vụ :=, +, *, kiểm tra xem tác vụ có nhận đối số thuộc kiểu thích hợp hay khơng dựa vào bảng ký hiệu -Việc phân tích ngữ nghĩa phải dựa vào luật ngữ nghĩa kèm với luật cú pháp để thực chức sinh thuộc tính cho từ tố kiểm tra lỗi ngữ nghĩa Câu 25: Anh chị cho biết lỗi chương trình phát trình biên dịch chương trình */ Xử lý lỗi cú pháp Chương trình nguồn chứa lỗi nhiều mức độ khác nhau: - Lỗi từ vựng danh biểu, từ khóa, tốn tử viết khơng - Lỗi cú pháp ghi biểu thức toán học với dấu ngoặc đóng mở khơng cân - Lỗi ngữ nghĩa toán tử áp dụng vào tốn hạng khơng tương thích - Lỗi logic thực lời gọi đệ qui kết thúc Phần lớn việc phát phục hồi lỗi trình biện dịch tập trung vào giai đọan phân tích cú pháp Vì thế, xử lý lỗi (error handler) q trình phân tích cú pháp phải đạt mục đích sau: Ghi nhận thơng báo lỗi cách rõ ràng xác Phục hồi lỗi cách nhanh chóng để xác định lỗi Không làm chậm tiến trình chương trình */ Các chiến lược phục hồi lỗi Phục hồi lỗi kỹ thuật vượt qua lỗi để tiếp tục trình dịch Nhiều chiến lược phục hồi lỗi dùng phân tích cú pháp Mặc dù khơng có chiến lược chấp nhận hoàn toàn, số chúng áp dụng rộng rãi Ởđây, giới thiệu số chiến lược : a Phương thức "hoảng sợ" (panic mode recovery): Ðây phương pháp đơn giản cho cài đặt dùng cho hầu hết phương pháp phân tích Khi lỗi phát phân tích cú pháp bỏ qua ký hiệu tìm thấy tập hợp định token đồng (synchronizing tokens), token đồng thường dấu chấm phẩy (;) end b Chiến lược mức ngữ đoạn (phrase_level recovery): Khi phát lỗi, phân tích cú pháp thực hiệu chỉnh cục phần lại dòng nhập Cụ thể thay phần đầu lại chuỗi ký tự tiếp tục Chẳng hạn, dấu phẩy (,) dấu chấm phẩy (;), xóa dấu phẩy lạ thêm vào dấu chấm phẩy c Chiến lược dùng luật sinh sửa lỗi (error production): Thêm vào văn phạm ngôn ngữ luật sinh lỗi sử dụng văn phạm để xây dựng phân tích cú pháp, sinh đốn lỗi thích hợp để cấu trúc lỗi nhận biết dòng nhập d Chiến lược hiệu chỉnh toàn cục (global correction): Một cách lý tưởng trình biên dịch tạo số thay đổi xử lý lỗi Có giải thuật để lựa chọn số tối thiểu thay đổi để đạt hiệu chỉnh có chi phí tồn cục nhỏ Cho chuỗi nhập có lỗi x văn phạm G, giải thuật tìm phân tích cú pháp cho chuỗi y mà số lượng thao tác chèn, xóa thay đổi token cần thiết để chuyển x thành y nhỏ Nói chung, kỹ thuật dạng nghiên cứu lý thuyết Câu 26: Anh chị cho biết nội dung ý nghĩa việc khai báo đối tượng liệu - ND: Khai báo phát biểu chương trình dùng để chuyển tới dịch, thơng tin số lượng, kiểu ÐTDL tên đối tượng liệu; cần thiết trình thực chương trình - Sự khai báo rõ thời gian tồn ÐTDL - Một số NNLT không cần khai báo biến trước sử dụng - Ưu điểm : mềm dẻo, khuyết điểm : khó quản lý Ý Nghĩa: kiểu liệu - Cung cấp ngữ cảnh hoàn hảo (implicit context) cho tác vụ, programmer khơng cần ngữ cảnh cụ thể cho tác vụ - Cho phép trình biên dịch phát tồn lỗi thơng thường programmer - Kiểm tra kiểu ngăn ngừa hết tác vụ vô nghĩa Câu 27: Anh chị cho biết đặc điểm kiểm tra kiểu tĩnh, ưu nhược điểm kiểm tra kiểu tĩnh - Thông tin kiểu ĐTDL phải cung cấp cho dịch Bộ biên dịch tập hợp thông tin từ khai báo chương trình vào bảng danh biểu (symbol table) nơi chứa thông tin kiểu biến chương trình - Ưu điểm: tất nhánh chương trình, phép tốn kiểm tra nên khơng bỏ sót lỗi kiểu Mặt khác thông tin kiểu không gắn với ĐTDL thời điểm thực thi chương trình nên tiết kiệm nhớ tăng tốc độ chạy chương trình - Nhược điểm: khơng mềm dẻo, cụ thể người lập trình phải cân nhắc xác định kiểu cho ĐTDL cách rõ ràng - Các ngôn ngữ kiểm tra kiểu tĩnh: Pascal, C, … Câu 28: Anh chị cho biết đặc điểm kiểm tra kiểu động, ưu nhược điểm kiểm tra kiểu động -Để kiểm tra kiểu động cần phải lưu trữ thông tin kiểu ĐTDL với ĐTDL Trước thực phép tốn thơng tin kiểu đối số kiểm tra -Ưu điểm: mềm dẻo viết chương trình, khơng cần khai báo kiểu liệu kiểu ĐTDL thay đổi q trình thực thi chương trình -Nhược điểm: có khả bỏ sót lỗi kiểu; yêu cầu nhớ lớn phải lưu trữ thông tin kiểu liệu trình thực chương trình; làm chậm q trình thực thi vừa phải tính tốn vừa phải kiểm tra kiểu -Các ngôn ngữ kiểm tra kiểu động: SNOBOL4, LISP, APL… Câu 29: Anh chị cho biết có cách chuyển đổi kiểu lấy ví dụ cách - Trong trình kiểm tra kiểu khơng có tương thích kiểu có lựa chọn có thể: – Báo lỗi khơng tương thích kiểu – Thực chuyển đổi kiểu - Có cách chuyển đổi kiểu – Bằng tập hợp hàm xây dựng VD Lệnh ROUND Pascal chuyển số thực àsố nguyên – Ép kiểu tự động VD Pascal đối số phép toán số học ‘+’ có lẫn số thực số nguyên số nguyên chuyển đổi tự động sang kiểu số thực Câu 30: Anh chị phân biệt loại phép gán khác - Là tác vụ để thay đổi giá trị đối tượng liệu - Đặc tả tác vụ gán := : type1 x type2 void = : type1 x type2 type3 Z := X + Y Z = X + (Y = W 2) A=B=C Ngôn ngữ Pascal Ngôn ngữ C - Các NNLT khác có phép gán khác -Khác cú pháp -Khác kết trả phép gán giá trị (pascal trả kiểu void; C/C++ trả kiểu giá trị mới) -Khác cách thức tiến hành gán giá trị: chép ĐTDL gán, chép tự trỏ đến ĐTDL gán Câu 31: Anh chị cho biết khởi tạo giá trị ý nghĩa việc khởi tạo giá trị? Khởi tạo biến gán cho biến giá trịđầu tiên Ý nghĩa: Một biến tạo sẽđược cấp phát nhớ chưa khởi tạo Khi gán giá trịđầu tiên khởi tạo Các biến chưa khởi tạo nguồn gốc lỗi lập trình Khi biến cấp phát nhớ mà chưa khởi tạo nhớ có giá trị ngẫu nhiên Thường giá trị rác (Khi ĐTDL trước bị hủy bỏ giá trị ĐTDL nhớ cịn, giá trị gọi giá trị rác) Ðiều nguy hiểm giá trị rác giá trị hợp lệ Vì chương trình xử lý giá trị rác cách bình thường khơng thể kiểm sóat kết xử lý Vì tính chất nghiêm trọng nói biến chưa khởi tạo, ngơn ngữ lập trình sử dụng giải pháp sau để khắc phục: - Nếu biến chưa khởi tạo có giá trị NULL: Khi biến tạo ra, nhớ cấp phát cho phải chứa dãy bit biểu diễn cho giá trị “NULL” Tùy thuộc vào kiểu biến mà giá trị NULL có giá trị cụ thể, ví dụ biến số NULL 0, biến chuỗi kí tự NULL chuỗi rỗng, biến logic NULL FALSE - Khởi tạo biến sau vừa tạo cách lập trình tốt số ngôn ngữ cung cấp phương tiện để làm điều cách dễ dàng Trong ngôn ngữ Pascal biến khởi tạo đồng thời với việc khai báo gọi biến có giá trịđầu hay cịn gọi định kiểu Ví dụ: const i:integer=10; a: ARRAY[1 3,1 2] Of Integer = ((11, 12), (21, 22), (31, 32)); var j:integer; begin writeln(i); i:= i+1; writeln(i); for i:=1 to begin for j:=1 to write(a[i,j]:5); writeln; end; end Câu 32: Trình bày cách đặc tả đối tượng liệu kiểu số nguyên? 1)Đặc tả thuộc tính: Một ÐTDL kiểu số ngun khơng có thuộc tính khác ngồi kiểu 2)Đặc tả giá trị: Tập hợp giá trị nguyên xác định theo dạng tập hợp có thứ tự hữu hạn tập vô hạn số nguyên nghiên cứu toán học Giá trị nguyên lớn biểu diễn xác định Ví dụ Pascal MaxInt Miền giá trị kiểu số nguyên tập số nguyên từ - MaxInt đến MaxInt Giá trị MaxInt lựa chọn phản ánh giá trị nguyên lớn biểu diễn phần cứng 3)Ðặc tả phép tốn: - Các phép tính số học : cộng (+), trừ (-), nhân (*), chia (/ DIV), lấy phần dư (MOD) số phép toán tương tự khác âm (-), dương (+) - Các phép toán quan hệ bằng, khác, nhỏ hơn, lớn hơn, nhỏ bằng, lớn Phép toán quan hệ so sánh hai giá trị liệu đối số trả kết đối tượng liệu logic (đúng sai) - Gán trị: Cũng phép gán tổng quát, phép gán số nguyên trả không trả giá trị Sự cài đặt Kiểu liệu nguyên hầu hết cài đặt cách trực tiếp cách dùng biểu diễn nhớ xác định phần cứng tập hợp phép tính số học, phép toán quan hệ nguyên thuỷ phần cứng cho số nguyên Thông thường biểu diễn sử dụng từ nhớ dãy bytes để lưu trữ số nguyên Chẳng hạn ngôn ngữ Pascal sử dụng biểu diễn số nguyên từ (word) phần cứng máy tính để biểu diễn cho số integer Câu 33 Đặc tả đối tượng liệu kiểu số thực dấu chấm động: Các kiểu số thực: Real (6 byte), Single( byte), Double (8 byte), Extended (10byte), Dạng lưu trữ kiểu số thực dấu chấm động chuỗi bít phân làm hai phần phần mũ phần định trị Các phép toán cộng, trừ, nhân, chia số thực dấu chấm động trang bị sẵn phần cững cịn phép tốn mũ thường thực phần mềm Câu 34 Đặc tả đối tượng liệu kiểu ký tự: Kiểu kí tự thường thực byte word chứa giá trị mã kí tự mà byte word biểu diễn; mã kí tự xác định kí tự mà ngơn ngữ sử dụng Các tác vụ kí tự thật tác vụ giá trị mã này\ Các phép toán Các phép toán quan hệ (relational operations) Phép gán Câu 35 Dạng lưu trữ tuần tự: - Đối tượng liệu lưu trữ khối liên tục, chứa phần mô tả kiểu thành phần kiểu Dạng thích hợp cho kiểu liệu cấu trúc kích thước cố định, trường hợp thành phần liệu thuộc kiểu - Nhược điểm: Cần có khối lưu trữ liên tục đủ lớn dùng cho kiểu liệu cấu trúc có kích thước thay đổi danh sách Câu 36 Dạng lưu trữ liên kết: - Ưu điểm: Dạng liên kết thường dùng cho kiểu liệu cấu trúc có kích thước thay đổi danh sách, cho phép tận dụng khối lưu trữ liệu rời rạc nhớ - Đối tượng liệu lưu trữ nhiều khối rời rạc nhớ danh sách liên kết; phần tử đầu danh sách chứa phần mô tả kiểu, phần tử lại chứa thành phần kiểu - Nhược điểm: tốc độ truy xuất thành phần chậm, tác vụ lựa chọn dạng lưu trữ - Ưu điểm: tốc độ truy xuất đối tượng liệu cao, thực tác vụ lựa chọn trực tiếp Câu 37 Đặc điểm lưu trữ kiểu vector : Địa Vector LB Kiểu thành phần Kích thýớc thành phần A[LB A[LB] + 1] A[UB] UB E var A: array [1 10] of integer; loc A[I] = + D + (I - LB) x E D: kích thýớc phần mô tả LB: Giá trị cận dýới UB: Giá trị cận E: kích thýớc kiểu thành phần Câu 38: Anh chị cho biêt đặc điểm dạng lưu trữ kiểu ghi có kích thước cố định 1)Định nghĩa ghi Bản ghi CTDL bao gồm số cố định phần tử có kiểu khác Như vậy, ghi CTDL có kích thước cố định khơng đồng Các phần tử ghi gọi trường j 2) Sự đặc tả cú pháp Đặc tả thuộc tính Các thuộc tính ghi phải rõ phép khai báo, chúng bao gồm: Số lượng phần tử Kiểu liệu phần tử (Các phần tử có kiểu khác nhau) Mỗi phần tửđược cho tên phần tử (tên trường) Cú pháp khai báo ghi Pascal: Nhan_vien: RECORD Ma: Integer; {Mã nhân viên} Ho_ten: String[25]; Tuoi: Integer; {Tuổi} Luong: Real; {Hệ số lương} END Việc khai báo đặc tả ghi có phần tử kiểu Integer, Real String Mỗi phần tử có tên: Ma, Ho_ten, Tuoi Luong Ðể chọn phần tử mẩu tin ta sử dụng tên phần tử (trường) đó, chẳng hạn Pascal, Nhan_vien.Luong để truy xuất tới phần tử Luong ghi Nhan_vien Đặc tả phép toán -Lựa chọn phần tử phép toán cuả ghi Phép toán thực cách tên trực kiện phần tử Phép toán lựa chọn phần tử ghi sựlựa chọn trực tiếp - Phép gán mẩu tin có cấu trúc phép tốn phổ biến ngôn ngữđưa vào Sự cài đặt Biểu diễn nhớ Biểu diễn nhớtuần tựđược sử dụng để lưu trữ ghi Một khối liên tục ô nhớđược dùng để lưu trữ cho ghi, khối đó, biểu diễn cho trường Có thể cần sử dụng mơ tả riêng cho trường để lưu trữ thuộc tính trường Do trường có kiểu khác nên nhớ dành cho chúng có kích thước khác Câu 39 Đặc điểm dạng lưu trữ kiểu chuỗi ký tự có chiều dài thay đổi có giới hạn: Kiểu chuỗi ký tự phân làm ba loại dựa đặc tính chiều dài chuỗi – Chiều dài cố định – Chiều dài thay đổi có giới hạn – Chiều dài thay đổi không giới hạn:Dạng liên kết Chiều dài ‘A’ Kiểu chuỗi chiều dài thay đổi không giới hạn ‘B’ ‘C’ ‘D’ ‘E’ Câu 40: Anh chị cho biết đặc điểm dạng lưu trữ kiểu tệp tin - Đối tượng liệu tập tin cấu trúc liệu bao gồm nhiều thành phần xếp liên tiếp Kích thước lưu trữ tệp tin thay đổi theo số lượng thành phần tập tin - Tập tin lưu trữ nhớ phụ băng từ đĩa từ - Thời gian sống tập tin dài thời gian thực thi chương trình tạo - Các thành phần tập tin truy xuất thông qua trỏ vị trí tập tin Câu 41: Anh chị cho biết đặc điểm, ưu điểm nhược điểm biến tĩnh Đặc điểm - Khai báo cách tường minh - Thời gian tồn biến tĩnh thời gian tồn khối chương trình chứa khai báo biến - Biến cấp phát vùng nhớ vùng liệu (data segment) stack - Kích thước biến khơng thay đổi suốt q trình sống - Các biến tĩnh có định danh kết nối với địa vùng nhớ lưu trữ biến truy xuất trực tiếp thông qua định danh Ưu điểm - Khai báo tường minh - Biến tĩnh tồn suốt thời gian thực thi chương trình - Kích thước biến khơng thay đổi suốt trình sống Nhược điểm - Cấp phát nhớ dư, gây lãng phí nhớ - Cấp phát nhớ thiếu, chương trình thực thi bị lỗi Câu 42: Anh chị cho biết đặc điểm, ưu điểm nhược điểm biến động Đặc điểm - Không khai báo cách tường minh - Có thể cấp phát giải phóng nhớ người sử dụng yêu cầu - Biến cấp phát vùng nhớ Heap - Kích thước biến thay đổi suốt trình sống - Việc truy nhập biến động tiến hành nhờ biến trỏ - Các biến trỏ định nghĩa biến tĩnh dùng để chứa địa biến động Ưu điểm - Biến động phát sinh q trình thực chương trình khơng phát sinh lúc bắt đầu chương trình - Khi chạy chương trình, kích thước biến, vùng nhớ địa vùng nhớ cấp phát cho biến thay đổi - Sau dùng xong giải phóng để tiết kiệm chỗ nhớ Nhược điểm - Không khai báo cách tường minh - Biến động khơng có địa định nên ta khơng thể truy cập đến chúng Câu 43: Anh chị trình bày khái niệm biến trỏ lưu ý sử dụng biến trỏ Khái niệm: Biến trỏ biến dùng để chứa địa ô nhớ nhớ Lưu ý sử dụng biến trỏ - Khi gán địa biến tĩnh cho trỏ cần ý đến kiểu liệu chúng - Biến trỏ không chứa liệu mà chứa địa liệu hay chứa địa ô nhớ chứa liệu - Kích thước biến trỏ khơng phụ thuộc vào kiểu liệu, ln có kích thước cố định byte Câu 44: Anh chị cho trình cấp phát vùng nhớ cho hoạt động chương trình diễn nào? Các thành phần hoạt động chương trình Quá trình cấp phát vùng nhớ cho hoạt động CTC - Trong thời gian thực thi chương trình, CTC gọi, hoạt động CTC tạo - Bản hoạt động CTC tạo lệnh CALL – lệnh gọi CTC thực - Khi CTC gọi, cấp phát khối lưu trữ Khối chứa thông tin liệu điều khiển CTC tương ứng với lần gọi Khối nhớ giải phóng CTC kết thúc - Bản hoạt động CTC kết thúc lệnh RETURN, trở nơi gọi CTC Các thành phần hoạt động CTC - Phần tĩnh: phần đoạn mã chứa mã thực thi CTC Nội dung phần không thay đổi thời gian thực thi tất hoạt động CTC - Phần động: ghi hoạt động chứa thơng số hình thức, kết CTC hàm, liệu cục bộ, điểm trở về…Cấu trúc phần cố định nội dung thay đổi thời gian thực thi hoạt động CTC Câu 45: Anh chị cho biết hiệu ứng lề, lấy ví dụ trường hợp hiệu ứng lề mà anh chị biết Khái niệm: Hiệu ứng lề hiệu ứng phát sinh thực thi phép tốn có trả kết ẩn, kết ẩn trả làm thay đổi giá trị lưu trữ đối tượng liệu (ĐTDL) khác mà người lập trình khó kiểm sốt Các phép tốn gây hiệu ứng lề: +Khai báo biến toàn cục trùng với biến cục hàm +Phép gán có trả giá trị +Các chương trình mà tham số truyền quy chiếu +Phép toán xác định nhiều miền xác định Ví dụ: Var x: Integer; Procedure P; Begin x:= 0; End; Begin {1} x:=10; {2} P; {3} Writeln(x); End Trong ví dụ trên, chương trình P thực việc gán giá trị cho biến toàn cục x Trong chương trình chính, ta gán 10 cho x (lệnh 1), sau gọi thủ tục P (lệnh 2) lệnh 3, x lại có giá trị Việc chương trình sử dụng biến khơng cục dễ gây ngộ nhận cho người lập trình x có giá trị 10, đặc biệt thủ tục P định nghĩa đoạn đó, xa đoạn chương trình Câu 46: Anh chị cho biết chế chung cho việc đặc tả thiết kế cấu trúc điều khiển trình tự (phát biểu goto, phát biểu ghép, phát biểu điều kiện, phát biểu lặp) dựa chế xử lý tác vụ ghi máy tính Câu 47: Anh chị cho biết đặc điểm cấu trúc gọi trở đơn giản chương trình - Khi chương trình thực thi, chương trình thực Trong thời gian thực thi, chương trình gọi CTC thực Và CTC này, đến lượt nó, lại gọi chương trình khác thực - CTC khơng đệ qui - Cần có phát biểu gọi tường minh - CTC phải hoàn thành lần gọi - Điều khiển chuyển tức thời điểm gọi - Trình tự thực thi đơn - Các ghi hoạt động CTC tạo lần gọi sử dụng chung khối lưu trữ Câu 48: Anh chị cho biết đặc điểm cấu trúc gọi đệ quy chương trình - Với gọi đệ qui, nhiều hoạt động CTC tồn nhớ, thời gian thực thi chương trình - Để gọi đệ qui CTC phải cấp phát động khối lưu trữ cho hoạt động thời gian thực thi chương trình.Việc cấp phát thực theo chế chồng - Khi thực thi, ghi hoạt động CT cấp phát đáy chồng - Khi kết thúc trả điều khiển ghi hoạt động giải phóng Câu 49: Anh chị phân biệt loại môi trường tham khảo chương trình Mơi trường tham khảo có thành phần - Môi trường cục - Môi trường khơng cục - Mơi trường tồn cục - Môi trường định nghĩa trước Câu 50: Anh chị cho biết đặc điểm phương pháp truyền tham chiếu trường hợp cần sử dụng phương pháp truyền tham chiếu cho chương trình Khái niệm - Tham số hình thức tham số vào – ra, có nghĩa vụ nhận giá trị vào cho CTC trả kết cho CT gọi Tham số hình thức trỏ - Tham số thực tế biến - Phương pháp thực : Tại thời điểm gọi, trỏ tham số thực tế chép cho tham số hình thức Trong QT thực CTC, thao tác tham số hình thức thao tác nhớ tham số thực tế - Khi CTC kết thúc, thay đổi giá trị tham số hình thức làm giá trị tham số thực tế thay đổi theo