Chương trình dịch

Một phần của tài liệu Tập bài giảng tin học đại cương 2 pdf (Trang 51 - 56)

2.4.1. Trình biên dịch

Còn gọi là phần mềm biên dịch, compiler, là một chương trình máy tính làm công việc dịch một chuỗi các câu lệnh được viết bằng một ngôn ngữ lập trình (gọi là ngôn ngữ nguồn hay mã nguồn), thành một chương trình tương đương nhưng ở dưới dạng một ngôn ngữ máy tính mới (gọi là ngôn ngữ đích) và thường là ngôn ngữ ở cấp thấp hơn, như ngôn ngữ máy. Chương trình mới được dịch này gọi mã đối tượng.

Hầu hết các trình biên dịch sẽ chuyển dịch mã nguồn viết trong một ngôn ngữ cấp cao thành mã đối tượng hay ngôn ngữ máy mà có thể được thi hành trực tiếp bởi một máy tính hay bởi một máy ảo. Dù vậy, việc chuyển dịch từ một ngôn ngữ cấp thấp sang một ngôn ngữ cấp cao hơn cũng có thể xảy ra; quá trình này thường được hiểu như là bộ biên dịch ngược nếu nó có thể tái tạo lại một chương trình trong ngôn ngữ cấp cao. Cũng tồn tại các trình biên dịch chuyển đổi từ ngôn ngữ cao này sang ngôn ngữ cao khác, hay là chuyển đổi sang một ngôn ngữ mà nó cần để tiếp tục xử lý về sau; những trình biên dịch như vậy được biết như là bộ biên dịch phân tầng.

Các loại trình biên dịch cho kết quả là mã đối tượng thì một cách cơ bản bao gồm mã máy tăng cường thêm các thông tin về tên vị trí của các ngõ vào và các gọi ngoài (đến các hàm mà không có sẵn bên trong của nó). Một tập hợp của các tập tin đối tượng, mà không hẳn được cung cấp từ cùng một trình biên dịch,

52

thì vẫn có thể được liên kết với nhau để tạo nên các chương trình khả thi cuối cùng cho một người dùng. Dĩ nhiên, để làm được như vậy thì các tập tin đối tượng đó phải được thiết kế chung nhau về dạng thức. Ví dụ của kiểu tập đối tượng này là các tập có đuôi là.obj có thể dùng chung giữa ASM, C/C++, Fortran... hay các tập tin.DLL trong các kiến trúc Windows dùng chung được cho nhiều ngôn ngữ.

2.4.2. Trình thông dịch

Trình thông dịch biên dịch một chương trình nguồn theo từng phân đoạn. Sau đó, thực thi các đoạn mã đã được biên dịch. Hoàn toàn khác với trình biên dịch (biên dịch hoàn toàn rồi mới thực thi chương trình).

Ngôn ngữ thông dịch: Khi một ngôn ngữ lập trình được xác định là thông dịch, chương trình được viết ra khi chạy sẽ được dịch trực tiếp thành mã máy để máy tính thực thi chúng. Khi chương trình chạy đến dòng lệnh nào sẽ chuyển thành mã máy đến đó để máy tính có thể thực thi. Bộ thông dịch thực hiện quá trình thông dịch gọi là interpreter.

Ưu điểm:

-Interpreter dễ hiện thực hơn do bỏ qua việc kiểm tra lỗi và tối ưu code thường được thực hiện trong quá trình compiled.

-Hỗ trợ đa nền tảng.

-Kích thước chương trình thực thi nhỏ hơn. Khuyết điểm:

-Chương trình có độ tin cậy thấp hơn do bỏ qua bước kiểm tra loại bỏ một

số lỗi thường thực hiện trong quá trình compiled. -Source code dễ dàng bị dịch ngược.

-Tốc độ thực thi chậm hơn.

-Tiềm tàng nguy cơ có lỗi do thiếu

Ngôn ngữ biên dịch: Đối với ngôn ngữ biên dịch, chương trình sẽ dịch toàn bộ thành mã máy rồi mới tiến hành thực thi. Bộ biên dịch thực hiện quá trình biên dịch được gọi là compiler.

Ưu điểm:

- Chương trình sau đó được thực thi nhanh hơn.

- Độ tin cậy cao

- Khó bị dịch ngược mã nguồn.

53

Khuyết điểm:

-Khó xây dựng một compiler có tính chính xác cao để chuyển toàn bộ chương trình thành mã máy.

-Mã máy của mỗi nền tảng là khác nhau, khó thực hiện đa nền tảng.

Theo lý thuyết, bất kỳ ngôn ngữ lập trình nào đều có thể được biên dịch hoặc thông dịch. Vậy nên tuỳ vào mục đích và cách xây dựng của những người tạo ra, ngôn ngữ lập trình hoặc có thể thông dịch hoặc biên dịch.

54

CÂU HỎI VÀ BÀI TẬP CHƯƠNG 2

1. Hãy trình bày các phương pháp lập trình, ưu và nhược điểm của từng phương pháp.

2. Hãy trình bày cấu trúc của một chương trình bằng Pascal.

3. Tại sao phải khai báo biến? Hãy giải thích sự khác nhau giữa hằng có đặt

tên và biến.

4. Có mấy loại cấu trúc rẽ nhánh? Trình bày nguyên tắc làm việc của cấu trúc rẽ nhánh đầy đủ. Lấy ví dụ minh họa cho cấu trúc rẽ nhánh đầy đủ.

5. Trình bày cấu trúc lặp for-do. Lấy ví dụ minh họa. 6. Trình bày cấu trúc lặp while-do. Lấy ví dụ minh họa.

7. Chương trình dịch là gì? Tại sao cần phải có chương trình dịch?

8. Hãy trình bày các điểm giống và khác nhau giữa biên dịch và thông dịch? 9. Trình bày thuật toán có sử dụng cấu trúc lặp để tính tổng các số chẵn chia hết cho 3 nằm trong khoảng từ 1 đến 500.

10.Trình bày thuật toán có sử dụng cấu trúc lặp và rẽ nhánh giải bài toán cổ: Trăm trâu, trăm cỏ

Trâu đứng ăn năm Trâu nằm ăn ba Lụ khụ trâu già Ba con một bó

Hỏi mỗi loại trâu đứng, trâu nằm, trâu già có bao nhiêu con?

55

TÀI LIỆU THAM KHẢO CHƯƠNG 2

[1]. Nguyễn Ngọc Cương (Chủ biên) (20135), Giáo trình ngôn ngữ lập trình Pascal (Chương 1), Nhà xuất bản Thông tin truyền thông.

[2]. Vũ Đình Hòa – Đỗ Trung Kiên (2013), Cấu trúc dữ liệu và giải thuật (Chương 2, 3), Nhà xuất bản Đại học Sư phạm.

[3]. Nguyễn Đức Nghĩa, Nguyễn Tô Thành (2009), Toán rời rạc (Chương 2, 4,

5), Nhà xuất bản Đại học Quốc gia Hà Nội

56

CHƯƠNG 3

NGÔN NGỮ LẬP TRÌNH PASCAL

Mục tiêu: Chương này cung cấp cho người đọc tổng quan về các thành phần cơ bản của ngôn ngữ lập trình Pascal như cấu trúc chương trình, cấu trúc dữ liệu, cách khai báo và sử dụng dữ liệu phục vụ chương trình. Tìm hiểu về các cấu trúc điều khiển như cấu trúc rẽ nhánh, cấu trúc lặp... Ngoài ra, một số thành phần không thể thiếu trong ngôn ngữ lập trình là dữ liệu có cấu trúc như mảng dữ liệu, khai thác xâu kí tự và chương trình con...cũng được trình bày chi tiết từ cú pháp, giải thích và ví dụ minh họa cụ thể.

Một phần của tài liệu Tập bài giảng tin học đại cương 2 pdf (Trang 51 - 56)